@tangle-network/agent-app 0.45.47 → 0.45.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/dist/{DesignCanvas-P2ZVK6FM.js → DesignCanvas-QY2CA5GI.js} +2 -2
  2. package/dist/{DesignCanvasEditor-DGNCA54P.js → DesignCanvasEditor-CJ7PLX7A.js} +3 -3
  3. package/dist/{IntakeInterview-3ZIQMZS6.js → IntakeInterview-NJXKH35Q.js} +2 -2
  4. package/dist/InvitationsPanel-F2VY4TSL.js +9 -0
  5. package/dist/InviteAcceptPage-UT4452KT.js +7 -0
  6. package/dist/MembersPanel-N5CBOUXC.js +9 -0
  7. package/dist/{TimelineEditor-OTNPJ3SN.js → TimelineEditor-IYNKBSUX.js} +2 -2
  8. package/dist/assistant/index.d.ts +35 -10
  9. package/dist/assistant/index.js +234 -89
  10. package/dist/assistant/index.js.map +1 -1
  11. package/dist/chat-react/index.js +2 -1
  12. package/dist/chat-react/index.js.map +1 -1
  13. package/dist/{chunk-IUSO2XRE.js → chunk-5BACNOVR.js} +13 -14
  14. package/dist/chunk-5BACNOVR.js.map +1 -0
  15. package/dist/chunk-AULM4X7U.js +77 -0
  16. package/dist/chunk-AULM4X7U.js.map +1 -0
  17. package/dist/{chunk-ZX5UT4HF.js → chunk-C7AQW6US.js} +321 -240
  18. package/dist/chunk-C7AQW6US.js.map +1 -0
  19. package/dist/{chunk-VCPZ3HTN.js → chunk-DB2D2JBQ.js} +51 -27
  20. package/dist/chunk-DB2D2JBQ.js.map +1 -0
  21. package/dist/{chunk-TL37E5YY.js → chunk-DS2WE62K.js} +3 -3
  22. package/dist/{chunk-TL37E5YY.js.map → chunk-DS2WE62K.js.map} +1 -1
  23. package/dist/{chunk-PE67O2LH.js → chunk-GT4GTRGQ.js} +18 -13
  24. package/dist/chunk-GT4GTRGQ.js.map +1 -0
  25. package/dist/{chunk-BT4QFCTB.js → chunk-HSBJB46C.js} +13 -1
  26. package/dist/chunk-HSBJB46C.js.map +1 -0
  27. package/dist/{chunk-54FYYXAX.js → chunk-J6OJTFNE.js} +13 -10
  28. package/dist/chunk-J6OJTFNE.js.map +1 -0
  29. package/dist/chunk-MLG6XKPV.js +44 -0
  30. package/dist/chunk-MLG6XKPV.js.map +1 -0
  31. package/dist/{chunk-F4XLTVQ3.js → chunk-R6KGLGEJ.js} +18 -17
  32. package/dist/chunk-R6KGLGEJ.js.map +1 -0
  33. package/dist/{chunk-B62EZF52.js → chunk-RILGAFEL.js} +3 -3
  34. package/dist/{chunk-65OZT566.js → chunk-T7XPIBCX.js} +16 -14
  35. package/dist/chunk-T7XPIBCX.js.map +1 -0
  36. package/dist/{chunk-VOJB7MVG.js → chunk-XPFNEKHS.js} +70 -28
  37. package/dist/chunk-XPFNEKHS.js.map +1 -0
  38. package/dist/{chunk-GNPN6ED4.js → chunk-XVRHISF3.js} +127 -165
  39. package/dist/chunk-XVRHISF3.js.map +1 -0
  40. package/dist/design-canvas-react/index.js +14 -12
  41. package/dist/design-canvas-react/index.js.map +1 -1
  42. package/dist/design-canvas-react/lazy.js +1 -1
  43. package/dist/intakes-react/index.js +1 -1
  44. package/dist/intakes-react/lazy.js +1 -1
  45. package/dist/sequences-react/index.js +2 -2
  46. package/dist/studio/index.d.ts +13 -1
  47. package/dist/studio/index.js +13 -1
  48. package/dist/studio-react/index.js +100 -63
  49. package/dist/studio-react/index.js.map +1 -1
  50. package/dist/studio-react/studio.css +0 -56
  51. package/dist/teams-react/index.js +4 -3
  52. package/dist/teams-react/lazy.js +3 -3
  53. package/dist/web-react/index.d.ts +15 -11
  54. package/dist/web-react/index.js +6 -4
  55. package/dist/work-product-react/index.js +3 -21
  56. package/dist/work-product-react/index.js.map +1 -1
  57. package/package.json +3 -3
  58. package/dist/InvitationsPanel-F56UOQXA.js +0 -8
  59. package/dist/InviteAcceptPage-P3QJC3C6.js +0 -7
  60. package/dist/MembersPanel-XNLF3SA4.js +0 -8
  61. package/dist/chunk-54FYYXAX.js.map +0 -1
  62. package/dist/chunk-65OZT566.js.map +0 -1
  63. package/dist/chunk-BT4QFCTB.js.map +0 -1
  64. package/dist/chunk-F4XLTVQ3.js.map +0 -1
  65. package/dist/chunk-GNPN6ED4.js.map +0 -1
  66. package/dist/chunk-IUSO2XRE.js.map +0 -1
  67. package/dist/chunk-PE67O2LH.js.map +0 -1
  68. package/dist/chunk-VCPZ3HTN.js.map +0 -1
  69. package/dist/chunk-VOJB7MVG.js.map +0 -1
  70. package/dist/chunk-ZX5UT4HF.js.map +0 -1
  71. /package/dist/{DesignCanvas-P2ZVK6FM.js.map → DesignCanvas-QY2CA5GI.js.map} +0 -0
  72. /package/dist/{DesignCanvasEditor-DGNCA54P.js.map → DesignCanvasEditor-CJ7PLX7A.js.map} +0 -0
  73. /package/dist/{IntakeInterview-3ZIQMZS6.js.map → IntakeInterview-NJXKH35Q.js.map} +0 -0
  74. /package/dist/{InvitationsPanel-F56UOQXA.js.map → InvitationsPanel-F2VY4TSL.js.map} +0 -0
  75. /package/dist/{InviteAcceptPage-P3QJC3C6.js.map → InviteAcceptPage-UT4452KT.js.map} +0 -0
  76. /package/dist/{MembersPanel-XNLF3SA4.js.map → MembersPanel-N5CBOUXC.js.map} +0 -0
  77. /package/dist/{TimelineEditor-OTNPJ3SN.js.map → TimelineEditor-IYNKBSUX.js.map} +0 -0
  78. /package/dist/{chunk-B62EZF52.js.map → chunk-RILGAFEL.js.map} +0 -0
@@ -1,8 +1,14 @@
1
1
  import {
2
2
  CADENCES,
3
3
  DESTINATIONS,
4
+ IMAGE_QUALITIES,
5
+ IMAGE_SIZE_HINT,
6
+ IMAGE_SIZE_PATTERN,
4
7
  MAX_IMAGE_COUNT,
5
8
  MIN_IMAGE_COUNT,
9
+ VIDEO_ASPECT_RATIOS,
10
+ VIDEO_DURATIONS,
11
+ VIDEO_RESOLUTIONS,
6
12
  buildGenerationRequestBody,
7
13
  buildPublishPackage,
8
14
  failedOptimisticGeneration,
@@ -24,7 +30,10 @@ import {
24
30
  relativeTime,
25
31
  selectedModelsWithDefaults,
26
32
  userSafeGenerationMessage
27
- } from "../chunk-BT4QFCTB.js";
33
+ } from "../chunk-HSBJB46C.js";
34
+ import {
35
+ ProviderLogo
36
+ } from "../chunk-MLG6XKPV.js";
28
37
 
29
38
  // src/studio-react/studio-workspace.tsx
30
39
  import { useRef as useRef3, useState as useState3 } from "react";
@@ -106,14 +115,15 @@ import { useIntegrations } from "@tangle-network/sandbox-ui/integrations";
106
115
  import { Sparkles } from "lucide-react";
107
116
 
108
117
  // src/studio-react/type-config.ts
109
- import { Film, FileText, Image, Mic, Video } from "lucide-react";
110
- var IMAGE = { label: "Image", icon: Image, color: "bg-[color-mix(in_srgb,#3b82f6_10%,hsl(var(--card)))] text-blue-600 border-blue-500/30" };
118
+ import { FileText, Image, Mic, User, Video } from "lucide-react";
119
+ var MEDIA_SCRIM = "bg-black/60 text-white border-white/10";
120
+ var IMAGE = { label: "Image", icon: Image, color: MEDIA_SCRIM };
111
121
  var TYPE_CONFIG = {
112
122
  image: IMAGE,
113
- video: { label: "Video", icon: Video, color: "bg-[color-mix(in_srgb,#ef4444_10%,hsl(var(--card)))] text-red-600 border-red-500/30" },
114
- avatar: { label: "Avatar", icon: Film, color: "bg-[color-mix(in_srgb,#a855f7_10%,hsl(var(--card)))] text-purple-600 border-purple-500/30" },
115
- speech: { label: "Audio", icon: Mic, color: "bg-[color-mix(in_srgb,#f97316_10%,hsl(var(--card)))] text-orange-600 border-orange-500/30" },
116
- transcription: { label: "Transcript", icon: FileText, color: "bg-[color-mix(in_srgb,#10b981_10%,hsl(var(--card)))] text-emerald-600 border-emerald-500/30" }
123
+ video: { label: "Video", icon: Video, color: MEDIA_SCRIM },
124
+ avatar: { label: "Avatar", icon: User, color: MEDIA_SCRIM },
125
+ speech: { label: "Audio", icon: Mic, color: MEDIA_SCRIM },
126
+ transcription: { label: "Transcript", icon: FileText, color: MEDIA_SCRIM }
117
127
  };
118
128
  function typeConfigFor(type) {
119
129
  return TYPE_CONFIG[type] ?? IMAGE;
@@ -183,7 +193,7 @@ function ComposerDisclosure({ summary, children }) {
183
193
  ] });
184
194
  }
185
195
  function NativeSelect(props) {
186
- return /* @__PURE__ */ jsx("select", { ...props, className: "h-9 w-full rounded-md border border-input bg-[var(--md3-surface-container-low)] px-3 text-sm" });
196
+ return /* @__PURE__ */ jsx("select", { ...props, className: "h-9 w-full rounded-md border border-input bg-background px-3 text-sm" });
187
197
  }
188
198
 
189
199
  // src/studio-react/image-composer.tsx
@@ -199,8 +209,17 @@ function ImageComposer({
199
209
  }) {
200
210
  return /* @__PURE__ */ jsxs2("div", { className: "space-y-3", children: [
201
211
  /* @__PURE__ */ jsxs2("div", { className: "grid grid-cols-2 gap-3", children: [
202
- /* @__PURE__ */ jsx2(Field, { label: "Size", children: /* @__PURE__ */ jsx2(Input, { value: size, onChange: (event) => onSizeChange(event.target.value), className: "bg-background" }) }),
203
- /* @__PURE__ */ jsx2(Field, { label: "Quality", children: /* @__PURE__ */ jsx2(Input, { value: quality, onChange: (event) => onQualityChange(event.target.value), className: "bg-background" }) })
212
+ /* @__PURE__ */ jsx2(Field, { label: "Size", children: /* @__PURE__ */ jsx2(
213
+ Input,
214
+ {
215
+ value: size,
216
+ onChange: (event) => onSizeChange(event.target.value),
217
+ pattern: IMAGE_SIZE_PATTERN,
218
+ placeholder: IMAGE_SIZE_HINT,
219
+ className: "bg-background"
220
+ }
221
+ ) }),
222
+ /* @__PURE__ */ jsx2(Field, { label: "Quality", children: /* @__PURE__ */ jsx2(NativeSelect, { value: quality, onChange: (event) => onQualityChange(event.target.value), children: IMAGE_QUALITIES.map((option) => /* @__PURE__ */ jsx2("option", { value: option, children: option.charAt(0).toUpperCase() + option.slice(1) }, option)) }) })
204
223
  ] }),
205
224
  /* @__PURE__ */ jsx2(Field, { label: "Images", children: /* @__PURE__ */ jsx2(
206
225
  Stepper,
@@ -228,9 +247,9 @@ function VideoComposer({
228
247
  onReferenceImageUrlChange
229
248
  }) {
230
249
  return /* @__PURE__ */ jsxs3("div", { className: "grid grid-cols-2 gap-3", children: [
231
- /* @__PURE__ */ jsx3(Field, { label: "Duration (s)", children: /* @__PURE__ */ jsx3(Input2, { value: duration, onChange: (event) => onDurationChange(event.target.value), className: "bg-background" }) }),
232
- /* @__PURE__ */ jsx3(Field, { label: "Resolution", children: /* @__PURE__ */ jsx3(Input2, { value: resolution, onChange: (event) => onResolutionChange(event.target.value), className: "bg-background" }) }),
233
- /* @__PURE__ */ jsx3(Field, { label: "Aspect ratio", children: /* @__PURE__ */ jsx3(Input2, { value: aspectRatio, onChange: (event) => onAspectRatioChange(event.target.value), className: "bg-background" }) }),
250
+ /* @__PURE__ */ jsx3(Field, { label: "Duration (s)", children: /* @__PURE__ */ jsx3(NativeSelect, { value: duration, onChange: (event) => onDurationChange(event.target.value), children: VIDEO_DURATIONS.map((option) => /* @__PURE__ */ jsx3("option", { value: option, children: option }, option)) }) }),
251
+ /* @__PURE__ */ jsx3(Field, { label: "Resolution", children: /* @__PURE__ */ jsx3(NativeSelect, { value: resolution, onChange: (event) => onResolutionChange(event.target.value), children: VIDEO_RESOLUTIONS.map((option) => /* @__PURE__ */ jsx3("option", { value: option, children: option }, option)) }) }),
252
+ /* @__PURE__ */ jsx3(Field, { label: "Aspect ratio", children: /* @__PURE__ */ jsx3(NativeSelect, { value: aspectRatio, onChange: (event) => onAspectRatioChange(event.target.value), children: VIDEO_ASPECT_RATIOS.map((option) => /* @__PURE__ */ jsx3("option", { value: option, children: option }, option)) }) }),
234
253
  /* @__PURE__ */ jsx3(Field, { label: "Reference image URL", children: /* @__PURE__ */ jsx3(Input2, { value: referenceImageUrl, onChange: (event) => onReferenceImageUrlChange(event.target.value), className: "bg-background" }) })
235
254
  ] });
236
255
  }
@@ -336,14 +355,15 @@ function TranscriptionOptions({
336
355
  /* @__PURE__ */ jsx6("option", { value: "verbose_json", children: "Verbose JSON" }),
337
356
  /* @__PURE__ */ jsx6("option", { value: "vtt", children: "VTT" })
338
357
  ] }) }),
339
- /* @__PURE__ */ jsx6(Field, { label: "Temperature", children: /* @__PURE__ */ jsx6(Input5, { type: "number", min: "0", max: "1", step: "0.1", value: temperature, onChange: (event) => onTemperatureChange(event.target.value), className: "bg-[var(--md3-surface-container-low)]" }) })
358
+ /* @__PURE__ */ jsx6(Field, { label: "Temperature", children: /* @__PURE__ */ jsx6(Input5, { type: "number", min: "0", max: "1", step: "0.1", value: temperature, onChange: (event) => onTemperatureChange(event.target.value), className: "bg-background" }) })
340
359
  ] });
341
360
  }
342
361
 
343
362
  // src/studio-react/publish-package-composer.tsx
344
363
  import { Link } from "react-router";
345
364
  import { Badge, Button, Input as Input6, Textarea } from "@tangle-network/sandbox-ui/primitives";
346
- import { AlertTriangle, CalendarClock, Check } from "lucide-react";
365
+ import { ProviderIcon } from "@tangle-network/sandbox-ui/integrations";
366
+ import { AlertTriangle, Check } from "lucide-react";
347
367
  import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
348
368
  function PublishPackageComposer({
349
369
  caption,
@@ -367,7 +387,7 @@ function PublishPackageComposer({
367
387
  connectionError ? /* @__PURE__ */ jsxs6("div", { className: "flex items-center gap-2 rounded-md border border-warning/25 bg-warning/10 px-2.5 py-1.5 text-xs text-warning", children: [
368
388
  /* @__PURE__ */ jsx7(AlertTriangle, { className: "h-3.5 w-3.5 shrink-0" }),
369
389
  "Couldn't load connected apps. Check Integrations."
370
- ] }) : /* @__PURE__ */ jsx7("p", { className: "text-xs text-muted-foreground", children: connectionsLoading ? "Checking connected apps\u2026" : "Stage captions, destinations, cadence. Saved with the generated asset." }),
390
+ ] }) : /* @__PURE__ */ jsx7("p", { className: "text-xs text-muted-foreground", children: connectionsLoading ? "Checking connected apps\u2026" : "Saved with the generated asset." }),
371
391
  integrationsHref && canManageIntegrations && /* @__PURE__ */ jsx7(Link, { to: integrationsHref, prefetch: "intent", className: "shrink-0", children: /* @__PURE__ */ jsx7(Button, { variant: "outline", size: "sm", children: "Connect" }) })
372
392
  ] }),
373
393
  /* @__PURE__ */ jsx7("div", { className: "grid gap-2", children: DESTINATIONS.map((destination) => {
@@ -380,11 +400,12 @@ function PublishPackageComposer({
380
400
  disabled: !connected,
381
401
  "aria-pressed": active,
382
402
  onClick: () => onDestinationToggle(destination.id),
383
- className: `rounded-md border p-2 text-left transition-colors disabled:cursor-not-allowed disabled:opacity-60 ${active ? "border-primary bg-primary/10 ring-1 ring-primary/20" : "border-border bg-[var(--md3-surface-container-low)] hover:bg-accent"}`,
403
+ className: `rounded-md border p-2 text-left transition-colors disabled:cursor-not-allowed disabled:opacity-60 ${active ? "border-primary bg-primary/10 ring-1 ring-primary/20" : "border-border bg-background hover:bg-accent"}`,
384
404
  children: [
385
405
  /* @__PURE__ */ jsxs6("div", { className: "flex items-center justify-between gap-2", children: [
386
406
  /* @__PURE__ */ jsxs6("span", { className: "flex items-center gap-1.5 text-xs font-medium text-foreground", children: [
387
407
  active && /* @__PURE__ */ jsx7(Check, { className: "h-3.5 w-3.5 text-primary" }),
408
+ /* @__PURE__ */ jsx7(ProviderIcon, { id: destination.providerIds[0] ?? destination.id, displayName: destination.label, size: 16, className: "rounded" }),
388
409
  destination.label
389
410
  ] }),
390
411
  /* @__PURE__ */ jsx7(Badge, { variant: active || connected ? "default" : "outline", children: active ? "Selected" : connected ? "Ready" : "Not connected" })
@@ -395,15 +416,11 @@ function PublishPackageComposer({
395
416
  destination.id
396
417
  );
397
418
  }) }),
398
- /* @__PURE__ */ jsx7(Field, { label: "Caption", className: "space-y-2", children: /* @__PURE__ */ jsx7(Textarea, { value: caption, onChange: (event) => onCaptionChange(event.target.value), rows: 3, placeholder: "Write or generate the caption for selected destinations...", className: "bg-[var(--md3-surface-container-low)]" }) }),
399
- /* @__PURE__ */ jsx7(Field, { label: "Description / CTA", className: "space-y-2", children: /* @__PURE__ */ jsx7(Textarea, { value: postDescription, onChange: (event) => onDescriptionChange(event.target.value), rows: 2, placeholder: "Release note, product context, link, or approval instruction...", className: "bg-[var(--md3-surface-container-low)]" }) }),
419
+ /* @__PURE__ */ jsx7(Field, { label: "Caption", className: "space-y-2", children: /* @__PURE__ */ jsx7(Textarea, { value: caption, onChange: (event) => onCaptionChange(event.target.value), rows: 3, placeholder: "Write or generate the caption for selected destinations...", className: "bg-background" }) }),
420
+ /* @__PURE__ */ jsx7(Field, { label: "Description / CTA", className: "space-y-2", children: /* @__PURE__ */ jsx7(Textarea, { value: postDescription, onChange: (event) => onDescriptionChange(event.target.value), rows: 2, placeholder: "Release note, product context, link, or approval instruction...", className: "bg-background" }) }),
400
421
  /* @__PURE__ */ jsxs6("div", { className: "grid grid-cols-2 gap-3", children: [
401
- /* @__PURE__ */ jsx7(Field, { label: "Mentions", className: "space-y-2", children: /* @__PURE__ */ jsx7(Input6, { value: mentions, onChange: (event) => onMentionsChange(event.target.value), placeholder: "@creator, @partner", className: "bg-[var(--md3-surface-container-low)]" }) }),
422
+ /* @__PURE__ */ jsx7(Field, { label: "Mentions", className: "space-y-2", children: /* @__PURE__ */ jsx7(Input6, { value: mentions, onChange: (event) => onMentionsChange(event.target.value), placeholder: "@creator, @partner", className: "bg-background" }) }),
402
423
  /* @__PURE__ */ jsx7(Field, { label: "Cadence", className: "space-y-2", children: /* @__PURE__ */ jsx7(NativeSelect, { value: cadence, onChange: (event) => onCadenceChange(event.target.value), children: CADENCES.map((option) => /* @__PURE__ */ jsx7("option", { value: option, children: option }, option)) }) })
403
- ] }),
404
- /* @__PURE__ */ jsxs6("div", { className: "flex items-center gap-2 rounded-md bg-secondary p-2 text-xs text-muted-foreground", children: [
405
- /* @__PURE__ */ jsx7(CalendarClock, { className: "h-3.5 w-3.5" }),
406
- "Publish packages stay attached to generated media and can run through connected GTM apps."
407
424
  ] })
408
425
  ] });
409
426
  }
@@ -496,10 +513,10 @@ function ComposerHero({
496
513
  if (cancelled) return;
497
514
  setMediaModels(data);
498
515
  setSelectedModels((current) => selectedModelsWithDefaults(current, data));
499
- }).catch((err) => {
516
+ }).catch(() => {
500
517
  if (cancelled) return;
501
518
  setMediaModels(null);
502
- setMediaModelsError(err instanceof Error ? err.message : "Could not load media models");
519
+ setMediaModelsError("Could not load media models");
503
520
  }).finally(() => {
504
521
  if (!cancelled) setMediaModelsLoading(false);
505
522
  });
@@ -605,7 +622,7 @@ function ComposerHero({
605
622
  const mediaTypes = Object.entries(TYPE_CONFIG);
606
623
  return /* @__PURE__ */ jsxs7("section", { className: `rounded-2xl border border-border p-5 shadow-sm ${surfaceClassName}`, children: [
607
624
  /* @__PURE__ */ jsx8("div", { className: `mb-5 ${align === "center" ? "text-center" : "text-left"}`, children: /* @__PURE__ */ jsx8(
608
- "h1",
625
+ "h2",
609
626
  {
610
627
  className: `font-semibold tracking-tight text-foreground transition-all duration-300 ${align === "center" ? "text-xl" : "text-base"}`,
611
628
  children: "Media Generation"
@@ -671,7 +688,7 @@ function ComposerHero({
671
688
  suggestion.label
672
689
  )) })
673
690
  ] }),
674
- type === "transcription" && /* @__PURE__ */ jsx8("p", { className: "mt-2 text-xs text-muted-foreground", children: "Optional \u2014 biases the transcript's spelling, vocabulary, and speaker names. It isn't an instruction for the model to follow." })
691
+ type === "transcription" && /* @__PURE__ */ jsx8("p", { className: "mt-2 text-xs text-muted-foreground", children: "Optional \u2014 biases spelling, vocabulary, and speaker names (not an instruction)." })
675
692
  ] }),
676
693
  type === "avatar" && /* @__PURE__ */ jsx8(
677
694
  AvatarComposer,
@@ -703,6 +720,7 @@ function ComposerHero({
703
720
  disabled: mediaModelsLoading || Boolean(mediaModelsError) || modelsForType.length === 0,
704
721
  children: [
705
722
  /* @__PURE__ */ jsx8(SelectTrigger, { id: "studio-media-model", className: "h-9 w-full bg-background", children: selectedModelOption ? /* @__PURE__ */ jsxs7("span", { className: "flex min-w-0 items-center gap-2", children: [
723
+ selectedModelOption.provider && /* @__PURE__ */ jsx8(ProviderLogo, { provider: selectedModelOption.provider, size: 14 }),
706
724
  /* @__PURE__ */ jsx8("span", { className: "truncate", children: selectedModelOption.name || selectedModelOption.id }),
707
725
  selectedModelOption.provider && /* @__PURE__ */ jsxs7("span", { className: "shrink-0 text-muted-foreground", children: [
708
726
  "\xB7 ",
@@ -711,9 +729,12 @@ function ComposerHero({
711
729
  selectedModelOption.status !== "available" && /* @__PURE__ */ jsx8("span", { className: "shrink-0 rounded-full bg-warning/10 px-1.5 py-0.5 text-[11px] font-semibold uppercase tracking-[0.05em] text-warning", children: selectedModelOption.status })
712
730
  ] }) : /* @__PURE__ */ jsx8(SelectValue, { placeholder: mediaModelsLoading ? "Loading models\u2026" : "Select a model" }) }),
713
731
  /* @__PURE__ */ jsx8(SelectContent, { className: "bg-background", children: modelsForType.map((model) => /* @__PURE__ */ jsx8(SelectItem, { value: model.id, disabled: model.status === "unavailable", children: /* @__PURE__ */ jsxs7("span", { className: "flex w-full items-center justify-between gap-3", children: [
714
- /* @__PURE__ */ jsxs7("span", { className: "truncate", children: [
715
- model.name || model.id,
716
- model.provider ? ` \xB7 ${model.provider}` : ""
732
+ /* @__PURE__ */ jsxs7("span", { className: "flex min-w-0 items-center gap-2", children: [
733
+ model.provider && /* @__PURE__ */ jsx8(ProviderLogo, { provider: model.provider, size: 14 }),
734
+ /* @__PURE__ */ jsxs7("span", { className: "truncate", children: [
735
+ model.name || model.id,
736
+ model.provider ? ` \xB7 ${model.provider}` : ""
737
+ ] })
717
738
  ] }),
718
739
  model.status !== "available" && /* @__PURE__ */ jsx8("span", { className: "shrink-0 text-[11px] capitalize text-muted-foreground", children: model.status })
719
740
  ] }) }, model.id)) })
@@ -757,10 +778,10 @@ function ComposerHero({
757
778
  onChange: (event) => setNegativePrompt(event.target.value),
758
779
  rows: 2,
759
780
  placeholder: "Avoid artifacts, off-style composition...",
760
- className: "bg-[var(--md3-surface-container-low)]"
781
+ className: "bg-background"
761
782
  }
762
783
  ) }),
763
- /* @__PURE__ */ jsx8(Field, { label: "Save to", children: /* @__PURE__ */ jsx8(Input7, { value: outputPath, onChange: (event) => setOutputPath(event.target.value), className: "bg-[var(--md3-surface-container-low)]" }) }),
784
+ /* @__PURE__ */ jsx8(Field, { label: "Save to", children: /* @__PURE__ */ jsx8(Input7, { value: outputPath, onChange: (event) => setOutputPath(event.target.value), className: "bg-background" }) }),
764
785
  type === "transcription" && /* @__PURE__ */ jsx8(
765
786
  TranscriptionOptions,
766
787
  {
@@ -806,11 +827,20 @@ function ComposerHero({
806
827
  )
807
828
  ] }),
808
829
  error && /* @__PURE__ */ jsx8("div", { className: "mt-4 rounded-md border border-destructive/20 bg-destructive/10 p-3 text-sm text-destructive", children: error }),
809
- /* @__PURE__ */ jsxs7(Button2, { onClick: generate, disabled: !canSubmit, size: "lg", className: "mt-5 w-full", children: [
810
- /* @__PURE__ */ jsx8(Sparkles, { className: "mr-2 h-4 w-4" }),
811
- "Generate",
812
- /* @__PURE__ */ jsx8("span", { className: "ml-2 text-[11px] opacity-60", children: "\u2318\u21B5" })
813
- ] })
830
+ /* @__PURE__ */ jsxs7(
831
+ Button2,
832
+ {
833
+ onClick: generate,
834
+ disabled: !canSubmit,
835
+ size: "lg",
836
+ className: "mt-5 w-full disabled:bg-muted disabled:text-muted-foreground disabled:opacity-100",
837
+ children: [
838
+ /* @__PURE__ */ jsx8(Sparkles, { className: "mr-2 h-4 w-4" }),
839
+ "Generate",
840
+ /* @__PURE__ */ jsx8("span", { className: "ml-2 text-[11px] opacity-60", children: "\u2318\u21B5" })
841
+ ]
842
+ }
843
+ )
814
844
  ] });
815
845
  }
816
846
 
@@ -826,7 +856,7 @@ function StudioHeader({
826
856
  return /* @__PURE__ */ jsx9("header", { className: "sticky top-0 z-20 border-b border-border bg-card", children: /* @__PURE__ */ jsxs8("div", { className: "mx-auto flex w-full max-w-3xl items-center justify-between gap-3 px-4 py-3 sm:px-6", children: [
827
857
  /* @__PURE__ */ jsxs8("div", { className: "min-w-0", children: [
828
858
  /* @__PURE__ */ jsx9("h1", { className: "text-lg font-semibold tracking-tight text-foreground", children: "Studio" }),
829
- /* @__PURE__ */ jsx9("p", { className: "truncate text-xs text-muted-foreground", children: canGenerate ? "Generate images, video, voice, avatars, and transcripts." : "Browse images, video, voice, avatars, and transcripts your team has created." })
859
+ /* @__PURE__ */ jsx9("p", { className: "truncate text-xs text-muted-foreground", children: canGenerate ? "Generate images, video, voice, avatars, and transcripts." : "Browse your team's generations." })
830
860
  ] }),
831
861
  /* @__PURE__ */ jsxs8(Button3, { size: "sm", variant: "outline", onClick: onOpenLibrary, className: "shrink-0", children: [
832
862
  /* @__PURE__ */ jsx9(Images, { className: "mr-1.5 h-4 w-4" }),
@@ -850,17 +880,21 @@ function ResultCanvas({
850
880
  return /* @__PURE__ */ jsxs9("section", { className: `${cardClass} flex min-h-[180px] flex-col items-center justify-center gap-2 p-8 text-center`, children: [
851
881
  /* @__PURE__ */ jsx10("div", { className: "flex h-12 w-12 items-center justify-center rounded-full bg-muted", children: /* @__PURE__ */ jsx10(Sparkles2, { className: "h-6 w-6 text-muted-foreground/40" }) }),
852
882
  /* @__PURE__ */ jsx10("p", { className: "text-sm font-medium text-foreground", children: "Your creations appear here" }),
853
- /* @__PURE__ */ jsx10("p", { className: "max-w-xs text-xs text-muted-foreground", children: "Write a prompt above and hit Generate \u2014 your latest result blooms here, and everything lives in your library." })
883
+ /* @__PURE__ */ jsx10("p", { className: "max-w-xs text-xs text-muted-foreground", children: "Generate above \u2014 results appear here and are saved to your library." })
854
884
  ] });
855
885
  }
856
886
  const cfg = typeConfigFor(batch[0]?.type ?? "image");
887
+ const Icon = cfg.icon;
857
888
  const statuses = batch.map(generationStatus);
858
889
  const runLabel = statuses.some((s) => s === "pending" || s === "running") ? "Generating\u2026" : statuses.every((s) => s === "failed") ? "Last run failed" : "Latest creation";
859
890
  const isWorking = statuses.some((s) => s === "pending" || s === "running");
860
891
  return /* @__PURE__ */ jsxs9("section", { className: `${cardClass} p-5`, children: [
861
892
  /* @__PURE__ */ jsxs9("div", { className: "mb-3 flex items-center justify-between gap-3", children: [
862
893
  /* @__PURE__ */ jsxs9("div", { className: "flex items-center gap-2", children: [
863
- /* @__PURE__ */ jsx10(Badge3, { variant: "outline", className: `${cfg.color} text-[11px]`, children: cfg.label }),
894
+ /* @__PURE__ */ jsxs9(Badge3, { variant: "outline", className: `${cfg.color} gap-1 text-[11px]`, children: [
895
+ /* @__PURE__ */ jsx10(Icon, { className: "h-3 w-3" }),
896
+ cfg.label
897
+ ] }),
864
898
  /* @__PURE__ */ jsx10("span", { className: "text-sm font-medium text-foreground", children: runLabel }),
865
899
  isWorking && /* @__PURE__ */ jsx10("span", { className: "h-2 w-2 animate-pulse rounded-full bg-primary" })
866
900
  ] }),
@@ -887,7 +921,7 @@ function ResultCanvas({
887
921
  },
888
922
  generation.id
889
923
  )) }),
890
- batch.length > 1 && /* @__PURE__ */ jsxs9("p", { className: "mt-2 text-xs text-muted-foreground", children: [
924
+ batch.length > 1 && !isWorking && /* @__PURE__ */ jsxs9("p", { className: "mt-2 text-xs text-muted-foreground", children: [
891
925
  batch.length,
892
926
  " results from this run"
893
927
  ] })
@@ -959,7 +993,7 @@ function StudioSheet({
959
993
 
960
994
  // src/studio-react/generation-grid.tsx
961
995
  import { EmptyState } from "@tangle-network/sandbox-ui/primitives";
962
- import { Film as Film2, Sparkles as Sparkles3 } from "lucide-react";
996
+ import { Film, Sparkles as Sparkles3 } from "lucide-react";
963
997
 
964
998
  // src/studio-react/generation-card.tsx
965
999
  import { Card, CardContent, Badge as Badge4 } from "@tangle-network/sandbox-ui/primitives";
@@ -975,15 +1009,15 @@ function GenerationCard({
975
1009
  const publishPackage = generation.metadata?.publishPackage;
976
1010
  return /* @__PURE__ */ jsx12("button", { type: "button", onClick: () => onSelect(generation), className: "group text-left animate-row-in", children: /* @__PURE__ */ jsxs11(Card, { className: "overflow-hidden transition-all group-hover:border-primary/50 group-hover:shadow-md", children: [
977
1011
  /* @__PURE__ */ jsxs11("div", { className: "relative aspect-video bg-secondary", children: [
978
- generation.type === "image" && generation.result ? /* @__PURE__ */ jsx12("img", { src: generation.result, alt: generation.prompt, className: "h-full w-full object-cover" }) : (generation.type === "video" || generation.type === "avatar") && generation.result ? /* @__PURE__ */ jsx12("video", { src: generation.result, className: "h-full w-full object-cover", muted: true }) : generation.type === "speech" && generation.result ? /* @__PURE__ */ jsx12("div", { className: "flex h-full items-center justify-center", children: /* @__PURE__ */ jsxs11("div", { className: "flex items-center gap-2", children: [
979
- /* @__PURE__ */ jsx12(Icon, { className: "h-6 w-6 text-muted-foreground/40" }),
980
- /* @__PURE__ */ jsx12("span", { className: "text-xs text-muted-foreground", children: "Audio" })
981
- ] }) }) : generation.type === "transcription" && generation.result ? /* @__PURE__ */ jsx12("div", { className: "flex h-full items-center justify-center p-4", children: /* @__PURE__ */ jsx12("p", { className: "line-clamp-5 text-xs text-muted-foreground", children: generation.result }) }) : status === "pending" || status === "running" ? /* @__PURE__ */ jsx12("div", { className: "shimmer h-full w-full" }) : /* @__PURE__ */ jsx12("div", { className: "flex h-full items-center justify-center", children: /* @__PURE__ */ jsx12(Icon, { className: "h-8 w-8 text-muted-foreground/20" }) }),
982
- /* @__PURE__ */ jsx12("div", { className: "absolute left-2 top-2", children: /* @__PURE__ */ jsx12(Badge4, { variant: "outline", className: `${cfg.color} text-[11px]`, children: cfg.label }) }),
1012
+ generation.type === "image" && generation.result ? /* @__PURE__ */ jsx12("img", { src: generation.result, alt: generation.prompt, className: "h-full w-full object-cover" }) : (generation.type === "video" || generation.type === "avatar") && generation.result ? /* @__PURE__ */ jsx12("video", { src: generation.result, className: "h-full w-full object-cover", muted: true }) : generation.type === "speech" && generation.result ? /* @__PURE__ */ jsx12("div", { className: "flex h-full items-center justify-center", children: /* @__PURE__ */ jsx12(Icon, { className: "h-6 w-6 text-muted-foreground/40" }) }) : generation.type === "transcription" && generation.result ? /* @__PURE__ */ jsx12("div", { className: "flex h-full items-center justify-center p-4", children: /* @__PURE__ */ jsx12("p", { className: "line-clamp-5 text-xs text-muted-foreground", children: generation.result }) }) : status === "pending" || status === "running" ? /* @__PURE__ */ jsx12("div", { className: "shimmer h-full w-full" }) : /* @__PURE__ */ jsx12("div", { className: "flex h-full items-center justify-center", children: /* @__PURE__ */ jsx12(Icon, { className: "h-8 w-8 text-muted-foreground/20" }) }),
1013
+ /* @__PURE__ */ jsx12("div", { className: "absolute left-2 top-2", children: /* @__PURE__ */ jsxs11(Badge4, { variant: "outline", className: `${cfg.color} gap-1 text-[11px]`, children: [
1014
+ /* @__PURE__ */ jsx12(Icon, { className: "h-3 w-3" }),
1015
+ cfg.label
1016
+ ] }) }),
983
1017
  /* @__PURE__ */ jsx12(GenerationStatusBadge, { generation })
984
1018
  ] }),
985
1019
  /* @__PURE__ */ jsxs11(CardContent, { className: "p-3", children: [
986
- /* @__PURE__ */ jsx12("p", { className: "mb-2 line-clamp-2 text-xs text-foreground", children: generation.prompt }),
1020
+ /* @__PURE__ */ jsx12("p", { className: "mb-2 line-clamp-2 text-sm font-medium text-foreground", children: generation.prompt }),
987
1021
  status === "failed" && /* @__PURE__ */ jsx12("p", { className: "mb-2 line-clamp-2 text-[11px] text-destructive", children: generationError(generation) }),
988
1022
  /* @__PURE__ */ jsxs11("div", { className: "flex items-center justify-between", children: [
989
1023
  generation.model && /* @__PURE__ */ jsx12("span", { className: "truncate text-[11px] text-muted-foreground", children: generation.model }),
@@ -998,7 +1032,7 @@ function GenerationCard({
998
1032
  isPublishPackage(publishPackage) && /* @__PURE__ */ jsxs11("div", { className: "mt-3 rounded-md border border-border bg-secondary p-2", children: [
999
1033
  /* @__PURE__ */ jsxs11("div", { className: "mb-1 flex items-center gap-1.5 text-[11px] font-medium text-foreground", children: [
1000
1034
  /* @__PURE__ */ jsx12(Send, { className: "h-3 w-3" }),
1001
- (publishPackage.destinations ?? []).join(", ") || "Publish package"
1035
+ (publishPackage.destinations ?? []).map((id) => DESTINATIONS.find((destination) => destination.id === id)?.label ?? id).join(", ") || "Publish package"
1002
1036
  ] }),
1003
1037
  /* @__PURE__ */ jsx12("p", { className: "line-clamp-2 text-[11px] text-muted-foreground", children: publishPackage.caption || "Caption pending" })
1004
1038
  ] })
@@ -1031,7 +1065,7 @@ function GenerationGrid({
1031
1065
  return /* @__PURE__ */ jsx13(
1032
1066
  EmptyState,
1033
1067
  {
1034
- icon: typeFilter ? /* @__PURE__ */ jsx13(Film2, { className: "h-8 w-8 text-muted-foreground/30" }) : /* @__PURE__ */ jsx13(Sparkles3, { className: "h-10 w-10 text-muted-foreground/30" }),
1068
+ icon: typeFilter ? /* @__PURE__ */ jsx13(Film, { className: "h-8 w-8 text-muted-foreground/30" }) : /* @__PURE__ */ jsx13(Sparkles3, { className: "h-10 w-10 text-muted-foreground/30" }),
1035
1069
  title: typeFilter ? `No ${TYPE_CONFIG[typeFilter]?.label ?? typeFilter} generations` : "No generations yet",
1036
1070
  description: typeFilter ? "Try a different filter or change the type in the composer." : "Everything you and the agent create lives here.",
1037
1071
  className: "py-16"
@@ -1058,34 +1092,37 @@ function GenerationDetail({
1058
1092
  return /* @__PURE__ */ jsxs12("div", { className: "space-y-4", children: [
1059
1093
  /* @__PURE__ */ jsx14("div", { className: "overflow-hidden rounded-lg bg-secondary", children: generation.type === "image" && generation.result ? /* @__PURE__ */ jsx14("img", { src: generation.result, alt: generation.prompt, className: "max-h-[420px] w-full object-contain" }) : (generation.type === "video" || generation.type === "avatar") && generation.result ? /* @__PURE__ */ jsx14("video", { src: generation.result, controls: true, className: "max-h-[420px] w-full" }) : generation.type === "speech" && generation.result ? /* @__PURE__ */ jsx14("div", { className: "p-6", children: /* @__PURE__ */ jsx14("audio", { src: generation.result, controls: true, className: "w-full" }) }) : /* @__PURE__ */ jsx14("div", { className: "flex h-32 items-center justify-center", children: /* @__PURE__ */ jsx14(Icon, { className: "h-8 w-8 text-muted-foreground/20" }) }) }),
1060
1094
  /* @__PURE__ */ jsxs12("div", { className: "flex flex-wrap items-center gap-2", children: [
1061
- /* @__PURE__ */ jsx14(Badge5, { variant: "outline", className: cfg.color, children: cfg.label }),
1095
+ /* @__PURE__ */ jsxs12(Badge5, { variant: "outline", className: `${cfg.color} gap-1`, children: [
1096
+ /* @__PURE__ */ jsx14(Icon, { className: "h-3 w-3" }),
1097
+ cfg.label
1098
+ ] }),
1062
1099
  /* @__PURE__ */ jsx14(GenerationStatusBadge, { generation, inline: true }),
1063
1100
  generationError(generation) && /* @__PURE__ */ jsx14("span", { className: "text-xs text-destructive", children: generationError(generation) })
1064
1101
  ] }),
1065
1102
  /* @__PURE__ */ jsxs12("div", { children: [
1066
- /* @__PURE__ */ jsx14("span", { className: "mb-1 block text-xs font-medium text-muted-foreground", children: "Prompt" }),
1103
+ /* @__PURE__ */ jsx14("span", { className: "mb-1 block text-[11px] font-semibold uppercase tracking-[0.05em] text-muted-foreground", children: "Prompt" }),
1067
1104
  /* @__PURE__ */ jsx14("p", { className: "text-sm text-foreground", children: generation.prompt })
1068
1105
  ] }),
1069
1106
  /* @__PURE__ */ jsxs12("div", { className: "flex flex-wrap items-center gap-4", children: [
1070
1107
  generation.model && /* @__PURE__ */ jsxs12("div", { children: [
1071
- /* @__PURE__ */ jsx14("span", { className: "block text-[11px] font-medium text-muted-foreground", children: "Model" }),
1108
+ /* @__PURE__ */ jsx14("span", { className: "block text-[11px] font-semibold uppercase tracking-[0.05em] text-muted-foreground", children: "Model" }),
1072
1109
  /* @__PURE__ */ jsx14("span", { className: "text-xs text-foreground", children: generation.model })
1073
1110
  ] }),
1074
1111
  generation.cost != null && /* @__PURE__ */ jsxs12("div", { children: [
1075
- /* @__PURE__ */ jsx14("span", { className: "block text-[11px] font-medium text-muted-foreground", children: "Cost" }),
1112
+ /* @__PURE__ */ jsx14("span", { className: "block text-[11px] font-semibold uppercase tracking-[0.05em] text-muted-foreground", children: "Cost" }),
1076
1113
  /* @__PURE__ */ jsxs12("span", { className: "text-xs text-foreground", children: [
1077
1114
  "$",
1078
- generation.cost.toFixed(4)
1115
+ generation.cost.toFixed(3)
1079
1116
  ] })
1080
1117
  ] }),
1081
1118
  generation.createdAt && /* @__PURE__ */ jsxs12("div", { children: [
1082
- /* @__PURE__ */ jsx14("span", { className: "block text-[11px] font-medium text-muted-foreground", children: "Created" }),
1083
- /* @__PURE__ */ jsx14("span", { className: "text-xs text-foreground", children: new Date(generation.createdAt).toLocaleString() })
1119
+ /* @__PURE__ */ jsx14("span", { className: "block text-[11px] font-semibold uppercase tracking-[0.05em] text-muted-foreground", children: "Created" }),
1120
+ /* @__PURE__ */ jsx14("span", { className: "text-xs text-foreground", children: new Date(generation.createdAt).toLocaleString("en-US", { dateStyle: "medium", timeStyle: "short" }) })
1084
1121
  ] })
1085
1122
  ] }),
1086
1123
  generation.type === "transcription" && generation.result && /* @__PURE__ */ jsxs12("div", { children: [
1087
- /* @__PURE__ */ jsx14("span", { className: "mb-1 block text-xs font-medium text-muted-foreground", children: "Transcription" }),
1088
- /* @__PURE__ */ jsx14("pre", { className: "max-h-64 overflow-y-auto whitespace-pre-wrap rounded-lg bg-secondary p-4 text-sm text-foreground", children: generation.result })
1124
+ /* @__PURE__ */ jsx14("span", { className: "mb-1 block text-[11px] font-semibold uppercase tracking-[0.05em] text-muted-foreground", children: "Transcription" }),
1125
+ /* @__PURE__ */ jsx14("pre", { className: "max-h-64 overflow-y-auto whitespace-pre-wrap rounded-lg bg-secondary p-4 font-mono text-[13px] tabular-nums text-foreground", children: generation.result })
1089
1126
  ] }),
1090
1127
  href && /* @__PURE__ */ jsx14("div", { className: "border-t border-border pt-2", children: /* @__PURE__ */ jsx14(Link2, { to: href, prefetch: "intent", onClick: onNavigate, children: /* @__PURE__ */ jsxs12(Button4, { size: "sm", variant: "outline", children: [
1091
1128
  /* @__PURE__ */ jsx14(FolderOpen, { className: "mr-1.5 h-3.5 w-3.5" }),
@@ -1241,7 +1278,7 @@ function StudioWorkspace({
1241
1278
  ] }) : /* @__PURE__ */ jsxs14("section", { className: "flex flex-col items-center justify-center gap-3 rounded-xl border border-border bg-card p-10 text-center shadow-sm", children: [
1242
1279
  /* @__PURE__ */ jsx16("div", { className: "flex h-12 w-12 items-center justify-center rounded-full bg-muted", children: /* @__PURE__ */ jsx16(Images2, { className: "h-6 w-6 text-muted-foreground/40" }) }),
1243
1280
  /* @__PURE__ */ jsx16("p", { className: "text-sm font-medium text-foreground", children: mergedGenerations.length > 0 ? `${mergedGenerations.length} asset${mergedGenerations.length !== 1 ? "s" : ""} in this workspace` : "No generations yet" }),
1244
- /* @__PURE__ */ jsx16("p", { className: "max-w-sm text-xs text-muted-foreground", children: "When workspace members generate images, video, voice, avatars, or transcripts, they appear in the library." }),
1281
+ /* @__PURE__ */ jsx16("p", { className: "max-w-sm text-xs text-muted-foreground", children: "Team generations appear in the library." }),
1245
1282
  /* @__PURE__ */ jsxs14(Button6, { size: "sm", variant: "outline", onClick: openLibrary, children: [
1246
1283
  /* @__PURE__ */ jsx16(Images2, { className: "mr-1.5 h-4 w-4" }),
1247
1284
  "Open library"
@@ -1289,7 +1326,7 @@ function LibraryPanel({
1289
1326
  const visible = useMemo4(() => filterGenerations(generations, typeFilter), [generations, typeFilter]);
1290
1327
  return /* @__PURE__ */ jsxs15("div", { className: "flex min-w-0 flex-col", children: [
1291
1328
  /* @__PURE__ */ jsxs15("div", { className: "mb-4 flex flex-wrap items-center justify-between gap-3", children: [
1292
- /* @__PURE__ */ jsx17(Tabs2, { value: typeFilter ?? "all", onValueChange: (v) => onFilterChange(v === "all" ? null : v), children: /* @__PURE__ */ jsxs15(TabsList2, { className: "h-9 justify-start gap-1 overflow-x-auto overflow-y-hidden rounded-lg border border-border bg-[var(--md3-surface-container-low)] p-1", children: [
1329
+ /* @__PURE__ */ jsx17(Tabs2, { value: typeFilter ?? "all", onValueChange: (v) => onFilterChange(v === "all" ? null : v), children: /* @__PURE__ */ jsxs15(TabsList2, { className: "h-9 justify-start gap-1 overflow-x-auto overflow-y-hidden rounded-lg border border-border bg-background p-1", children: [
1293
1330
  /* @__PURE__ */ jsx17(
1294
1331
  TabsTrigger2,
1295
1332
  {
@@ -1337,7 +1374,7 @@ function GenerationDetailModal({
1337
1374
  return /* @__PURE__ */ jsx18(Dialog2, { open: generation != null, onOpenChange: (open) => {
1338
1375
  if (!open) onClose();
1339
1376
  }, children: /* @__PURE__ */ jsxs16(DialogContent, { className: "max-h-[85vh] max-w-2xl overflow-y-auto border-card-edge bg-popover shadow-overlay", children: [
1340
- /* @__PURE__ */ jsx18(DialogHeader, { children: /* @__PURE__ */ jsx18(DialogTitle, { className: "text-left text-base", children: cfg?.label ?? "Generation" }) }),
1377
+ /* @__PURE__ */ jsx18(DialogHeader, { children: /* @__PURE__ */ jsx18(DialogTitle, { className: "text-left text-[15px] font-semibold", children: cfg ? `${cfg.label} generation` : "Generation" }) }),
1341
1378
  generation && /* @__PURE__ */ jsx18(GenerationDetail, { generation, vaultHref, onNavigate: onClose })
1342
1379
  ] }) });
1343
1380
  }