@tangle-network/agent-app 0.45.46 → 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.
- package/dist/{DesignCanvas-P2ZVK6FM.js → DesignCanvas-QY2CA5GI.js} +2 -2
- package/dist/{DesignCanvasEditor-DGNCA54P.js → DesignCanvasEditor-CJ7PLX7A.js} +3 -3
- package/dist/{IntakeInterview-3ZIQMZS6.js → IntakeInterview-NJXKH35Q.js} +2 -2
- package/dist/InvitationsPanel-F2VY4TSL.js +9 -0
- package/dist/InviteAcceptPage-UT4452KT.js +7 -0
- package/dist/MembersPanel-N5CBOUXC.js +9 -0
- package/dist/{TimelineEditor-OTNPJ3SN.js → TimelineEditor-IYNKBSUX.js} +2 -2
- package/dist/assistant/index.d.ts +35 -10
- package/dist/assistant/index.js +234 -89
- package/dist/assistant/index.js.map +1 -1
- package/dist/chat-react/index.js +2 -1
- package/dist/chat-react/index.js.map +1 -1
- package/dist/{chunk-IUSO2XRE.js → chunk-5BACNOVR.js} +13 -14
- package/dist/chunk-5BACNOVR.js.map +1 -0
- package/dist/chunk-AULM4X7U.js +77 -0
- package/dist/chunk-AULM4X7U.js.map +1 -0
- package/dist/{chunk-UM6ODCLN.js → chunk-C7AQW6US.js} +346 -249
- package/dist/chunk-C7AQW6US.js.map +1 -0
- package/dist/{chunk-VCPZ3HTN.js → chunk-DB2D2JBQ.js} +51 -27
- package/dist/chunk-DB2D2JBQ.js.map +1 -0
- package/dist/{chunk-TL37E5YY.js → chunk-DS2WE62K.js} +3 -3
- package/dist/{chunk-TL37E5YY.js.map → chunk-DS2WE62K.js.map} +1 -1
- package/dist/{chunk-PE67O2LH.js → chunk-GT4GTRGQ.js} +18 -13
- package/dist/chunk-GT4GTRGQ.js.map +1 -0
- package/dist/{chunk-BT4QFCTB.js → chunk-HSBJB46C.js} +13 -1
- package/dist/chunk-HSBJB46C.js.map +1 -0
- package/dist/{chunk-54FYYXAX.js → chunk-J6OJTFNE.js} +13 -10
- package/dist/chunk-J6OJTFNE.js.map +1 -0
- package/dist/chunk-MLG6XKPV.js +44 -0
- package/dist/chunk-MLG6XKPV.js.map +1 -0
- package/dist/{chunk-F4XLTVQ3.js → chunk-R6KGLGEJ.js} +18 -17
- package/dist/chunk-R6KGLGEJ.js.map +1 -0
- package/dist/{chunk-B62EZF52.js → chunk-RILGAFEL.js} +3 -3
- package/dist/{chunk-65OZT566.js → chunk-T7XPIBCX.js} +16 -14
- package/dist/chunk-T7XPIBCX.js.map +1 -0
- package/dist/{chunk-VOJB7MVG.js → chunk-XPFNEKHS.js} +70 -28
- package/dist/chunk-XPFNEKHS.js.map +1 -0
- package/dist/{chunk-GNPN6ED4.js → chunk-XVRHISF3.js} +127 -165
- package/dist/chunk-XVRHISF3.js.map +1 -0
- package/dist/design-canvas-react/index.js +14 -12
- package/dist/design-canvas-react/index.js.map +1 -1
- package/dist/design-canvas-react/lazy.js +1 -1
- package/dist/intakes-react/index.js +1 -1
- package/dist/intakes-react/lazy.js +1 -1
- package/dist/sequences-react/index.js +2 -2
- package/dist/studio/index.d.ts +13 -1
- package/dist/studio/index.js +13 -1
- package/dist/studio-react/index.js +100 -63
- package/dist/studio-react/index.js.map +1 -1
- package/dist/studio-react/studio.css +0 -56
- package/dist/teams-react/index.js +4 -3
- package/dist/teams-react/lazy.js +3 -3
- package/dist/theme/tokens.css +173 -0
- package/dist/web-react/index.d.ts +15 -11
- package/dist/web-react/index.js +6 -4
- package/dist/work-product-react/index.js +3 -21
- package/dist/work-product-react/index.js.map +1 -1
- package/package.json +3 -3
- package/dist/InvitationsPanel-F56UOQXA.js +0 -8
- package/dist/InviteAcceptPage-P3QJC3C6.js +0 -7
- package/dist/MembersPanel-XNLF3SA4.js +0 -8
- package/dist/chunk-54FYYXAX.js.map +0 -1
- package/dist/chunk-65OZT566.js.map +0 -1
- package/dist/chunk-BT4QFCTB.js.map +0 -1
- package/dist/chunk-F4XLTVQ3.js.map +0 -1
- package/dist/chunk-GNPN6ED4.js.map +0 -1
- package/dist/chunk-IUSO2XRE.js.map +0 -1
- package/dist/chunk-PE67O2LH.js.map +0 -1
- package/dist/chunk-UM6ODCLN.js.map +0 -1
- package/dist/chunk-VCPZ3HTN.js.map +0 -1
- package/dist/chunk-VOJB7MVG.js.map +0 -1
- /package/dist/{DesignCanvas-P2ZVK6FM.js.map → DesignCanvas-QY2CA5GI.js.map} +0 -0
- /package/dist/{DesignCanvasEditor-DGNCA54P.js.map → DesignCanvasEditor-CJ7PLX7A.js.map} +0 -0
- /package/dist/{IntakeInterview-3ZIQMZS6.js.map → IntakeInterview-NJXKH35Q.js.map} +0 -0
- /package/dist/{InvitationsPanel-F56UOQXA.js.map → InvitationsPanel-F2VY4TSL.js.map} +0 -0
- /package/dist/{InviteAcceptPage-P3QJC3C6.js.map → InviteAcceptPage-UT4452KT.js.map} +0 -0
- /package/dist/{MembersPanel-XNLF3SA4.js.map → MembersPanel-N5CBOUXC.js.map} +0 -0
- /package/dist/{TimelineEditor-OTNPJ3SN.js.map → TimelineEditor-IYNKBSUX.js.map} +0 -0
- /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-
|
|
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 {
|
|
110
|
-
var
|
|
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:
|
|
114
|
-
avatar: { label: "Avatar", icon:
|
|
115
|
-
speech: { label: "Audio", icon: Mic, color:
|
|
116
|
-
transcription: { label: "Transcript", icon: FileText, color:
|
|
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-
|
|
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(
|
|
203
|
-
|
|
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(
|
|
232
|
-
/* @__PURE__ */ jsx3(Field, { label: "Resolution", children: /* @__PURE__ */ jsx3(
|
|
233
|
-
/* @__PURE__ */ jsx3(Field, { label: "Aspect ratio", children: /* @__PURE__ */ jsx3(
|
|
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-
|
|
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 {
|
|
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" : "
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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((
|
|
516
|
+
}).catch(() => {
|
|
500
517
|
if (cancelled) return;
|
|
501
518
|
setMediaModels(null);
|
|
502
|
-
setMediaModelsError(
|
|
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
|
-
"
|
|
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
|
|
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: "
|
|
715
|
-
model.
|
|
716
|
-
|
|
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-
|
|
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-
|
|
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(
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
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
|
|
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: "
|
|
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__ */
|
|
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
|
|
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__ */
|
|
979
|
-
|
|
980
|
-
/* @__PURE__ */ jsx12(
|
|
981
|
-
|
|
982
|
-
|
|
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-
|
|
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(
|
|
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__ */
|
|
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-
|
|
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-
|
|
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-
|
|
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(
|
|
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-
|
|
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-
|
|
1088
|
-
/* @__PURE__ */ jsx14("pre", { className: "max-h-64 overflow-y-auto whitespace-pre-wrap rounded-lg bg-secondary p-4 text-
|
|
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: "
|
|
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-
|
|
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-
|
|
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
|
}
|