@tangle-network/sandbox-ui 0.4.0 → 0.5.0

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 (61) hide show
  1. package/dist/auth.js +3 -3
  2. package/dist/chat.d.ts +1 -1
  3. package/dist/chat.js +11 -9
  4. package/dist/{chunk-ZP6GSX4D.js → chunk-565V6JTN.js} +26 -50
  5. package/dist/chunk-5CEMHKBP.js +72 -0
  6. package/dist/{chunk-FOQTE67I.js → chunk-5F4NX5R2.js} +10 -5
  7. package/dist/{chunk-MUOL44AE.js → chunk-BRBTD7RH.js} +6 -6
  8. package/dist/{chunk-SSKVYXCR.js → chunk-DCPYTL4W.js} +62 -79
  9. package/dist/chunk-DLCFZDGX.js +182 -0
  10. package/dist/{chunk-HXEA7L2T.js → chunk-FFOXUHOF.js} +10 -10
  11. package/dist/chunk-H5XYSFYE.js +228 -0
  12. package/dist/{chunk-TQN3VR4F.js → chunk-JP725R4W.js} +2 -2
  13. package/dist/{chunk-CJ2RYVZH.js → chunk-NTSRY4GW.js} +68 -10
  14. package/dist/{chunk-DQYODCBN.js → chunk-P24K22CV.js} +57 -66
  15. package/dist/{chunk-GVUW4VDD.js → chunk-R3IU37AW.js} +161 -229
  16. package/dist/chunk-TDYQBLL5.js +127 -0
  17. package/dist/{chunk-HWLX5NME.js → chunk-TSE423UF.js} +12 -12
  18. package/dist/{chunk-YDBXQQLC.js → chunk-VBWY44UU.js} +30 -76
  19. package/dist/{chunk-IW2JZCOC.js → chunk-WBQ7VULC.js} +7 -7
  20. package/dist/{chunk-72UEKFZ2.js → chunk-WC7QTWPN.js} +65 -42
  21. package/dist/{chunk-HYLTXGOI.js → chunk-WQH233GF.js} +5 -5
  22. package/dist/{chunk-CCKNIAS7.js → chunk-XBR3IP7B.js} +2 -2
  23. package/dist/{chunk-OHMO7NUX.js → chunk-XTPAWK7L.js} +20 -31
  24. package/dist/{chunk-SULQQJPB.js → chunk-YS66Q3RC.js} +1 -1
  25. package/dist/{chunk-FRGMMANX.js → chunk-YYGECNZZ.js} +3 -3
  26. package/dist/{chunk-MVYFNPAH.js → chunk-ZOZX2U6I.js} +285 -271
  27. package/dist/dashboard.d.ts +2 -2
  28. package/dist/dashboard.js +6 -6
  29. package/dist/{document-editor-pane-5TN2VWGZ.js → document-editor-pane-JNXPANWM.js} +2 -2
  30. package/dist/editor.js +2 -2
  31. package/dist/files.js +2 -2
  32. package/dist/globals.css +129 -95
  33. package/dist/hooks.d.ts +2 -2
  34. package/dist/hooks.js +5 -5
  35. package/dist/{index-tTfThG0n.d.ts → index-CDt0GE4A.d.ts} +7 -8
  36. package/dist/index.d.ts +16 -23
  37. package/dist/index.js +27 -26
  38. package/dist/markdown.d.ts +14 -17
  39. package/dist/markdown.js +1 -1
  40. package/dist/openui.js +5 -5
  41. package/dist/pages.d.ts +10 -3
  42. package/dist/pages.js +147 -184
  43. package/dist/primitives.d.ts +8 -5
  44. package/dist/primitives.js +8 -8
  45. package/dist/run.d.ts +1 -1
  46. package/dist/run.js +4 -4
  47. package/dist/sdk-hooks.d.ts +1 -1
  48. package/dist/sdk-hooks.js +4 -4
  49. package/dist/styles.css +129 -95
  50. package/dist/terminal.d.ts +2 -2
  51. package/dist/terminal.js +13 -43
  52. package/dist/tokens.css +299 -179
  53. package/dist/{tool-call-feed-D5Ume-Pt.d.ts → tool-call-feed-Bs3MyQMT.d.ts} +3 -1
  54. package/dist/{usage-chart-CY9xo3KX.d.ts → usage-chart-XCoB_7Xu.d.ts} +1 -2
  55. package/dist/{use-pty-session-DeZSxOCN.d.ts → use-pty-session-COzVkhtc.d.ts} +1 -1
  56. package/dist/workspace.d.ts +3 -1
  57. package/dist/workspace.js +11 -11
  58. package/package.json +14 -2
  59. package/dist/chunk-GRYHFH5O.js +0 -110
  60. package/dist/chunk-LTFK464G.js +0 -103
  61. package/dist/chunk-MXCSSOGH.js +0 -105
@@ -11,7 +11,7 @@ import {
11
11
  CodeBlock,
12
12
  CopyButton,
13
13
  Markdown
14
- } from "./chunk-LTFK464G.js";
14
+ } from "./chunk-H5XYSFYE.js";
15
15
  import {
16
16
  cn
17
17
  } from "./chunk-RQHJBTEU.js";
@@ -43,7 +43,7 @@ function PreviewCard({
43
43
  className
44
44
  ),
45
45
  children: [
46
- /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-3 border-b border-[var(--border-subtle)] bg-[var(--bg-elevated)]/70 px-4 py-3", children: [
46
+ /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-3 border-b border-[var(--border-subtle)] bg-[var(--depth-1)] px-4 py-3", children: [
47
47
  /* @__PURE__ */ jsx("div", { className: "flex h-9 w-9 shrink-0 items-center justify-center rounded-[var(--radius-md)] border border-[var(--border-accent)] bg-[var(--bg-section)] text-[var(--brand-cool)]", children: icon }),
48
48
  /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
49
49
  /* @__PURE__ */ jsx("div", { className: "text-sm font-semibold text-[var(--text-primary)]", children: title }),
@@ -64,7 +64,7 @@ function PreviewEmpty({
64
64
  "div",
65
65
  {
66
66
  className: cn(
67
- "rounded-[var(--radius-md)] border border-dashed border-[var(--border-subtle)] bg-[var(--bg-section)]/60 px-3 py-4 text-sm text-[var(--text-muted)]",
67
+ "rounded-[var(--radius-md)] border border-dashed border-[var(--border-subtle)] bg-[var(--bg-section)] px-3 py-4 text-sm text-[var(--text-muted)]",
68
68
  className
69
69
  ),
70
70
  children: label
@@ -72,10 +72,10 @@ function PreviewEmpty({
72
72
  );
73
73
  }
74
74
  function PreviewError({ error }) {
75
- return /* @__PURE__ */ jsx("div", { className: "rounded-[var(--radius-md)] border border-red-500/30 bg-red-500/8 px-3 py-3 text-sm text-red-200", children: error });
75
+ return /* @__PURE__ */ jsx("div", { className: "rounded-[var(--radius-md)] border border-[var(--surface-danger-border)] bg-[var(--surface-danger-bg)] px-3 py-3 text-sm text-[var(--surface-danger-text)]", children: error });
76
76
  }
77
77
  function PreviewLoading({ label = "Running\u2026" }) {
78
- return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 rounded-[var(--radius-md)] border border-[var(--border-subtle)] bg-[var(--bg-section)]/60 px-3 py-3 text-sm text-[var(--text-muted)]", children: [
78
+ return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 rounded-[var(--radius-md)] border border-[var(--border-subtle)] bg-[var(--bg-section)] px-3 py-3 text-sm text-[var(--text-muted)]", children: [
79
79
  /* @__PURE__ */ jsx(Loader2, { className: "h-4 w-4 animate-spin text-[var(--brand-cool)]" }),
80
80
  /* @__PURE__ */ jsx("span", { children: label })
81
81
  ] });
@@ -115,7 +115,7 @@ var CommandPreview = memo(({ part }) => {
115
115
  {
116
116
  className: cn(
117
117
  "inline-flex items-center rounded-full border px-2 py-0.5 font-[var(--font-mono)]",
118
- isError ? "border-red-500/30 bg-red-500/10 text-red-200" : "border-emerald-500/30 bg-emerald-500/10 text-emerald-200"
118
+ isError ? "border-[var(--surface-danger-border)] bg-[var(--surface-danger-bg)] text-[var(--surface-danger-text)]" : "border-[var(--surface-success-border)] bg-[var(--surface-success-bg)] text-[var(--surface-success-text)]"
119
119
  ),
120
120
  children: [
121
121
  "exit ",
@@ -128,7 +128,7 @@ var CommandPreview = memo(({ part }) => {
128
128
  "button",
129
129
  {
130
130
  onClick: () => setExpanded((value) => !value),
131
- className: "flex w-full items-center gap-2 rounded-[var(--radius-md)] border border-[var(--border-subtle)] bg-[var(--bg-section)]/60 px-3 py-2 text-left transition-colors hover:border-[var(--border-accent-hover)] hover:bg-[var(--bg-hover)]/45",
131
+ className: "flex w-full items-center gap-2 rounded-[var(--radius-md)] border border-[var(--border-subtle)] bg-[var(--bg-section)] px-3 py-2 text-left transition-colors hover:border-[var(--border-accent-hover)] hover:bg-[var(--bg-hover)]/45",
132
132
  children: [
133
133
  /* @__PURE__ */ jsx2("code", { className: "min-w-0 flex-1 truncate text-xs font-[var(--font-mono)] text-[var(--text-secondary)]", children: command }),
134
134
  lineCount > 0 ? /* @__PURE__ */ jsxs2("span", { className: "shrink-0 text-xs text-[var(--text-muted)]", children: [
@@ -142,7 +142,7 @@ var CommandPreview = memo(({ part }) => {
142
142
  ),
143
143
  part.state.status === "running" ? /* @__PURE__ */ jsx2(PreviewLoading, {}) : null,
144
144
  errorText ? /* @__PURE__ */ jsx2(PreviewError, { error: errorText }) : null,
145
- expanded && output ? /* @__PURE__ */ jsxs2("div", { className: "overflow-hidden rounded-[var(--radius-md)] border border-[var(--border-subtle)] bg-[var(--bg-section)]/55", children: [
145
+ expanded && output ? /* @__PURE__ */ jsxs2("div", { className: "overflow-hidden rounded-[var(--radius-md)] border border-[var(--border-subtle)] bg-[var(--bg-section)]", children: [
146
146
  output.stdout ? /* @__PURE__ */ jsx2("pre", { className: "max-h-80 overflow-auto px-3 py-3 text-xs font-[var(--font-mono)] whitespace-pre-wrap break-all text-[var(--text-secondary)]", children: output.stdout }) : null,
147
147
  output.stderr ? /* @__PURE__ */ jsx2("pre", { className: "max-h-80 overflow-auto border-t border-[var(--border-subtle)] px-3 py-3 text-xs font-[var(--font-mono)] whitespace-pre-wrap break-all text-red-200", children: output.stderr }) : null
148
148
  ] }) : null
@@ -539,7 +539,7 @@ var QuestionPreview = memo6(({ part }) => {
539
539
  questions.map((question, index) => /* @__PURE__ */ jsxs7(
540
540
  "div",
541
541
  {
542
- className: "rounded-[var(--radius-md)] border border-[var(--border-subtle)] bg-[var(--bg-section)]/55 px-3 py-3",
542
+ className: "rounded-[var(--radius-md)] border border-[var(--border-subtle)] bg-[var(--bg-section)] px-3 py-3",
543
543
  children: [
544
544
  /* @__PURE__ */ jsxs7("div", { className: "text-xs font-semibold uppercase tracking-[0.08em] text-[var(--text-muted)]", children: [
545
545
  "Question ",
@@ -623,6 +623,35 @@ import {
623
623
  FileText as FileText2
624
624
  } from "lucide-react";
625
625
  import { jsx as jsx9, jsxs as jsxs9 } from "react/jsx-runtime";
626
+ var EXT_LANG = {
627
+ ts: "typescript",
628
+ tsx: "tsx",
629
+ js: "javascript",
630
+ jsx: "jsx",
631
+ rs: "rust",
632
+ py: "python",
633
+ go: "go",
634
+ rb: "ruby",
635
+ json: "json",
636
+ yaml: "yaml",
637
+ yml: "yaml",
638
+ toml: "toml",
639
+ md: "markdown",
640
+ css: "css",
641
+ scss: "scss",
642
+ html: "html",
643
+ sh: "bash",
644
+ bash: "bash",
645
+ zsh: "bash",
646
+ sql: "sql",
647
+ sol: "solidity",
648
+ proto: "protobuf"
649
+ };
650
+ function langFromPath(path) {
651
+ if (!path) return void 0;
652
+ const ext = path.split(".").pop()?.toLowerCase();
653
+ return ext ? EXT_LANG[ext] : void 0;
654
+ }
626
655
  function formatOutput(value) {
627
656
  if (value == null) return "";
628
657
  if (typeof value === "string") return value;
@@ -658,7 +687,7 @@ var ExpandedToolDetail = memo8(({ part }) => {
658
687
  }
659
688
  if (meta.displayVariant === "read-file") {
660
689
  return /* @__PURE__ */ jsxs9("div", { className: "overflow-hidden rounded-[var(--radius-lg)] border border-[var(--border-subtle)] bg-[var(--bg-card)] shadow-[var(--shadow-card)]", children: [
661
- /* @__PURE__ */ jsxs9("div", { className: "flex items-center gap-3 border-b border-[var(--border-subtle)] bg-[var(--bg-elevated)]/70 px-4 py-3", children: [
690
+ /* @__PURE__ */ jsxs9("div", { className: "flex items-center gap-3 border-b border-[var(--border-subtle)] bg-[var(--depth-1)] px-4 py-3", children: [
662
691
  /* @__PURE__ */ jsx9("div", { className: "flex h-9 w-9 shrink-0 items-center justify-center rounded-[var(--radius-md)] border border-[var(--border-accent)] bg-[var(--bg-section)] text-[var(--brand-cool)]", children: /* @__PURE__ */ jsx9(FileText2, { className: "h-4 w-4" }) }),
663
692
  /* @__PURE__ */ jsxs9("div", { className: "min-w-0", children: [
664
693
  /* @__PURE__ */ jsx9("div", { className: "text-sm font-semibold text-[var(--text-primary)]", children: "Read file" }),
@@ -666,8 +695,8 @@ var ExpandedToolDetail = memo8(({ part }) => {
666
695
  ] })
667
696
  ] }),
668
697
  /* @__PURE__ */ jsxs9("div", { className: "space-y-3 px-4 py-4", children: [
669
- typeof output === "string" ? /* @__PURE__ */ jsx9(CodeBlock, { code: output, language: "text", className: "rounded-[var(--radius-md)]" }) : /* @__PURE__ */ jsx9("div", { className: "rounded-[var(--radius-md)] border border-dashed border-[var(--border-subtle)] bg-[var(--bg-section)]/60 px-3 py-4 text-sm text-[var(--text-muted)]", children: "No readable file content was returned." }),
670
- error ? /* @__PURE__ */ jsx9("div", { className: "rounded-[var(--radius-md)] border border-red-500/30 bg-red-500/8 px-3 py-3 text-sm text-red-200", children: error }) : null
698
+ typeof output === "string" ? /* @__PURE__ */ jsx9(CodeBlock, { code: output, language: langFromPath(meta.targetPath) ?? "text", className: "rounded-[var(--radius-md)]" }) : /* @__PURE__ */ jsx9("div", { className: "rounded-[var(--radius-md)] border border-dashed border-[var(--border-subtle)] bg-[var(--bg-section)] px-3 py-4 text-sm text-[var(--text-muted)]", children: "No readable file content was returned." }),
699
+ error ? /* @__PURE__ */ jsx9("div", { className: "rounded-[var(--radius-md)] border border-[var(--surface-danger-border)] bg-[var(--surface-danger-bg)] px-3 py-3 text-sm text-[var(--surface-danger-text)]", children: error }) : null
671
700
  ] })
672
701
  ] });
673
702
  }
@@ -675,14 +704,14 @@ var ExpandedToolDetail = memo8(({ part }) => {
675
704
  const outputStr = formatOutput(output);
676
705
  return /* @__PURE__ */ jsxs9("div", { className: "space-y-3", children: [
677
706
  inputStr && /* @__PURE__ */ jsxs9("div", { className: "overflow-hidden rounded-[var(--radius-lg)] border border-[var(--border-subtle)] bg-[var(--bg-card)]", children: [
678
- /* @__PURE__ */ jsxs9("div", { className: "flex items-center gap-2 border-b border-[var(--border-subtle)] bg-[var(--bg-elevated)]/70 px-3 py-2", children: [
707
+ /* @__PURE__ */ jsxs9("div", { className: "flex items-center gap-2 border-b border-[var(--border-subtle)] bg-[var(--depth-1)] px-3 py-2", children: [
679
708
  /* @__PURE__ */ jsx9(ArrowRight, { className: "h-3 w-3 text-[var(--brand-cool)]" }),
680
709
  /* @__PURE__ */ jsx9("span", { className: "text-xs font-medium uppercase tracking-[0.08em] text-[var(--text-muted)]", children: "Input" })
681
710
  ] }),
682
711
  /* @__PURE__ */ jsx9(CodeBlock, { code: inputStr, language: "json", className: "rounded-none border-0" })
683
712
  ] }),
684
713
  status === "completed" && outputStr && /* @__PURE__ */ jsxs9("div", { className: "overflow-hidden rounded-[var(--radius-lg)] border border-[var(--border-subtle)] bg-[var(--bg-card)]", children: [
685
- /* @__PURE__ */ jsxs9("div", { className: "flex items-center gap-2 border-b border-[var(--border-subtle)] bg-[var(--bg-elevated)]/70 px-3 py-2", children: [
714
+ /* @__PURE__ */ jsxs9("div", { className: "flex items-center gap-2 border-b border-[var(--border-subtle)] bg-[var(--depth-1)] px-3 py-2", children: [
686
715
  /* @__PURE__ */ jsx9(ArrowLeft, { className: "h-3 w-3 text-[var(--brand-cool)]" }),
687
716
  /* @__PURE__ */ jsx9("span", { className: "text-xs font-medium uppercase tracking-[0.08em] text-[var(--text-muted)]", children: "Output" })
688
717
  ] }),
@@ -695,14 +724,14 @@ var ExpandedToolDetail = memo8(({ part }) => {
695
724
  }
696
725
  )
697
726
  ] }),
698
- error && /* @__PURE__ */ jsxs9("div", { className: "overflow-hidden rounded-[var(--radius-lg)] border border-red-500/30", children: [
699
- /* @__PURE__ */ jsxs9("div", { className: "flex items-center gap-2 border-b border-red-500/20 bg-red-500/10 px-3 py-2", children: [
700
- /* @__PURE__ */ jsx9(AlertCircle, { className: "h-3 w-3 text-red-300" }),
701
- /* @__PURE__ */ jsx9("span", { className: "text-xs font-medium uppercase tracking-[0.08em] text-red-200", children: "Error" })
727
+ error && /* @__PURE__ */ jsxs9("div", { className: "overflow-hidden rounded-[var(--radius-lg)] border border-[var(--surface-danger-border)]", children: [
728
+ /* @__PURE__ */ jsxs9("div", { className: "flex items-center gap-2 border-b border-[var(--surface-danger-border)] bg-[var(--surface-danger-bg)] px-3 py-2", children: [
729
+ /* @__PURE__ */ jsx9(AlertCircle, { className: "h-3 w-3 text-[var(--surface-danger-text)]" }),
730
+ /* @__PURE__ */ jsx9("span", { className: "text-xs font-medium uppercase tracking-[0.08em] text-[var(--surface-danger-text)]", children: "Error" })
702
731
  ] }),
703
- /* @__PURE__ */ jsx9("pre", { className: "bg-red-500/6 p-3 text-xs font-[var(--font-mono)] whitespace-pre-wrap break-all text-red-100", children: error })
732
+ /* @__PURE__ */ jsx9("pre", { className: "bg-[var(--surface-danger-bg)] p-3 text-xs font-[var(--font-mono)] whitespace-pre-wrap break-all text-[var(--surface-danger-text)]", children: error })
704
733
  ] }),
705
- (status === "pending" || status === "running") && /* @__PURE__ */ jsxs9("div", { className: "flex items-center gap-2 rounded-[var(--radius-md)] border border-[var(--border-subtle)] bg-[var(--bg-section)]/60 px-3 py-3 text-xs text-[var(--text-muted)]", children: [
734
+ (status === "pending" || status === "running") && /* @__PURE__ */ jsxs9("div", { className: "flex items-center gap-2 rounded-[var(--radius-md)] border border-[var(--border-subtle)] bg-[var(--bg-section)] px-3 py-3 text-xs text-[var(--text-muted)]", children: [
706
735
  /* @__PURE__ */ jsx9(Loader23, { className: cn("h-3 w-3 animate-spin text-[var(--brand-cool)]") }),
707
736
  "Running\u2026"
708
737
  ] })
@@ -793,24 +822,18 @@ var InlineToolItem = memo9(
793
822
  className
794
823
  ),
795
824
  children: [
796
- /* @__PURE__ */ jsxs10("div", { className: "flex items-center gap-3 px-3 py-3", children: [
797
- /* @__PURE__ */ jsx11(
798
- "div",
799
- {
800
- className: cn(
801
- "flex h-8 w-8 shrink-0 items-center justify-center rounded-[var(--radius-md)] border",
802
- isRunning && "border-[var(--border-accent)] bg-[var(--brand-cool)]/12 text-[var(--brand-cool)]",
803
- isComplete && "border-emerald-500/30 bg-emerald-500/12 text-emerald-200",
804
- isError && "border-red-500/30 bg-red-500/10 text-red-200",
805
- !isRunning && !isComplete && !isError && "border-[var(--border-subtle)] bg-[var(--bg-section)] text-[var(--text-muted)]"
806
- ),
807
- children: isRunning ? /* @__PURE__ */ jsx11(Loader24, { className: "h-4 w-4 animate-spin" }) : isComplete ? /* @__PURE__ */ jsx11(CheckCircle2, { className: "h-4 w-4" }) : isError ? /* @__PURE__ */ jsx11(AlertCircle2, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx11(DefaultIcon, { className: "h-4 w-4" })
808
- }
809
- ),
825
+ /* @__PURE__ */ jsxs10("div", { className: "flex items-center gap-2.5 px-3 py-2", children: [
826
+ /* @__PURE__ */ jsx11("div", { className: cn(
827
+ "shrink-0",
828
+ isRunning && "text-[var(--brand-cool)]",
829
+ isComplete && "text-[var(--surface-success-text)]",
830
+ isError && "text-[var(--surface-danger-text)]",
831
+ !isRunning && !isComplete && !isError && "text-[var(--text-muted)]"
832
+ ), children: isRunning ? /* @__PURE__ */ jsx11(Loader24, { className: "h-3.5 w-3.5 animate-spin" }) : isComplete ? /* @__PURE__ */ jsx11(CheckCircle2, { className: "h-3.5 w-3.5" }) : isError ? /* @__PURE__ */ jsx11(AlertCircle2, { className: "h-3.5 w-3.5" }) : /* @__PURE__ */ jsx11(DefaultIcon, { className: "h-3.5 w-3.5" }) }),
810
833
  /* @__PURE__ */ jsxs10("div", { className: "min-w-0 flex-1", children: [
811
834
  /* @__PURE__ */ jsxs10("div", { className: "flex items-center gap-2", children: [
812
835
  /* @__PURE__ */ jsx11("span", { className: "truncate text-sm font-medium text-[var(--text-primary)]", children: meta.title }),
813
- isError ? /* @__PURE__ */ jsx11("span", { className: "rounded-full border border-red-500/30 bg-red-500/10 px-2 py-0.5 text-[11px] font-semibold uppercase tracking-[0.06em] text-red-200", children: "Failed" }) : null,
836
+ isError ? /* @__PURE__ */ jsx11("span", { className: "rounded-full border border-[var(--surface-danger-border)] bg-[var(--surface-danger-bg)] px-2 py-0.5 text-[11px] font-semibold uppercase tracking-[0.06em] text-[var(--surface-danger-text)]", children: "Failed" }) : null,
814
837
  isRunning ? /* @__PURE__ */ jsx11("span", { className: "rounded-full border border-[var(--border-accent)] bg-[var(--brand-cool)]/10 px-2 py-0.5 text-[11px] font-semibold uppercase tracking-[0.06em] text-[var(--brand-cool)]", children: "Running" }) : null
815
838
  ] }),
816
839
  meta.description ? /* @__PURE__ */ jsx11("div", { className: "mt-1 truncate text-xs font-[var(--font-mono)] text-[var(--text-muted)]", children: meta.description }) : null
@@ -944,8 +967,8 @@ import { jsx as jsx13, jsxs as jsxs12 } from "react/jsx-runtime";
944
967
  var DEFAULT_BRANDING = {
945
968
  label: "Agent",
946
969
  accentClass: "text-[var(--brand-cool)]",
947
- bgClass: "bg-[var(--brand-cool)]/8",
948
- containerBgClass: "bg-[var(--bg-section)]/60",
970
+ bgClass: "bg-[var(--accent-surface-soft)]",
971
+ containerBgClass: "bg-[var(--bg-section)]",
949
972
  borderClass: "border-[var(--border-accent)]",
950
973
  iconClass: "",
951
974
  textClass: "text-[var(--brand-cool)]"
@@ -1054,8 +1077,8 @@ var RunGroup = memo11(
1054
1077
  "button",
1055
1078
  {
1056
1079
  className: cn(
1057
- "w-full rounded-[calc(var(--radius-xl)+2px)] border px-4 py-3.5 text-left transition-colors shadow-[var(--shadow-card)] backdrop-blur-sm",
1058
- "bg-[radial-gradient(circle_at_top_left,rgba(96,165,250,0.12),transparent_34%),linear-gradient(180deg,rgba(255,255,255,0.03),transparent_30%),var(--bg-card)] hover:bg-[radial-gradient(circle_at_top_left,rgba(96,165,250,0.16),transparent_34%),linear-gradient(180deg,rgba(255,255,255,0.04),transparent_30%),var(--bg-card)]",
1080
+ "w-full rounded-[var(--radius-xl)] border px-4 py-3.5 text-left transition-colors",
1081
+ "bg-[var(--depth-2)] hover:bg-[var(--depth-3)]",
1059
1082
  collapsed ? branding.borderClass : "border-[var(--border-subtle)]",
1060
1083
  branding.bgClass
1061
1084
  ),
@@ -1064,7 +1087,7 @@ var RunGroup = memo11(
1064
1087
  "div",
1065
1088
  {
1066
1089
  className: cn(
1067
- "flex h-11 w-11 shrink-0 items-center justify-center rounded-[calc(var(--radius-lg)+2px)] border bg-[linear-gradient(135deg,rgba(82,164,255,0.22),rgba(82,164,255,0.06))] shadow-[var(--shadow-accent)]",
1090
+ "flex h-11 w-11 shrink-0 items-center justify-center rounded-[calc(var(--radius-lg)+2px)] border bg-[var(--accent-surface-soft)] shadow-[var(--shadow-accent)]",
1068
1091
  branding.borderClass
1069
1092
  ),
1070
1093
  children: /* @__PURE__ */ jsx13(Bot2, { className: cn("h-4 w-4", branding.accentClass) })
@@ -1073,7 +1096,7 @@ var RunGroup = memo11(
1073
1096
  /* @__PURE__ */ jsxs12("div", { className: "min-w-0 flex-1", children: [
1074
1097
  /* @__PURE__ */ jsxs12("div", { className: "flex flex-wrap items-center gap-2", children: [
1075
1098
  /* @__PURE__ */ jsx13("span", { className: cn("text-sm font-semibold tracking-[0.01em]", branding.textClass), children: branding.label }),
1076
- isStreaming ? /* @__PURE__ */ jsxs12("span", { className: "inline-flex items-center gap-1 rounded-full border border-[var(--border-accent)] bg-[linear-gradient(135deg,rgba(82,164,255,0.22),rgba(82,164,255,0.08))] px-2.5 py-0.5 text-[11px] font-semibold uppercase tracking-[0.08em] text-[var(--brand-cool)]", children: [
1099
+ isStreaming ? /* @__PURE__ */ jsxs12("span", { className: "inline-flex items-center gap-1 rounded-full border border-[var(--border-accent)] bg-[var(--accent-surface-soft)] px-2.5 py-0.5 text-[11px] font-semibold uppercase tracking-[0.08em] text-[var(--accent-text)]", children: [
1077
1100
  /* @__PURE__ */ jsx13(Loader25, { className: "h-3 w-3 animate-spin" }),
1078
1101
  "Running"
1079
1102
  ] }) : /* @__PURE__ */ jsxs12("span", { className: "inline-flex items-center gap-1 rounded-full border border-[var(--border-subtle)] bg-[linear-gradient(180deg,rgba(255,255,255,0.04),transparent)] px-2.5 py-0.5 text-[11px] font-semibold uppercase tracking-[0.08em] text-[var(--text-muted)]", children: [
@@ -1133,7 +1156,7 @@ var RunGroup = memo11(
1133
1156
  return /* @__PURE__ */ jsx13(
1134
1157
  "div",
1135
1158
  {
1136
- className: "rounded-[calc(var(--radius-lg)+2px)] border border-[var(--border-subtle)] bg-[radial-gradient(circle_at_top_left,rgba(96,165,250,0.08),transparent_36%),linear-gradient(180deg,rgba(255,255,255,0.03),transparent_30%),var(--bg-card)] px-4 py-4",
1159
+ className: "rounded-[calc(var(--radius-lg)+2px)] border border-[var(--border-subtle)] bg-[var(--bg-card)] px-4 py-4",
1137
1160
  children: /* @__PURE__ */ jsx13(Markdown, { children: part.text })
1138
1161
  },
1139
1162
  key
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-W4LM3QYZ.js";
4
4
  import {
5
5
  Markdown
6
- } from "./chunk-LTFK464G.js";
6
+ } from "./chunk-H5XYSFYE.js";
7
7
  import {
8
8
  cn
9
9
  } from "./chunk-RQHJBTEU.js";
@@ -260,7 +260,7 @@ function CodePreview({ content, filename }) {
260
260
  ] })
261
261
  ] })
262
262
  ] }),
263
- /* @__PURE__ */ jsx2("div", { className: "overflow-auto max-h-[70vh]", children: /* @__PURE__ */ jsx2("table", { className: "w-full", children: /* @__PURE__ */ jsx2("tbody", { children: lines.map((line, i) => /* @__PURE__ */ jsxs2("tr", { className: "hover:bg-[var(--bg-hover)]/50", children: [
263
+ /* @__PURE__ */ jsx2("div", { className: "overflow-auto max-h-[70vh]", children: /* @__PURE__ */ jsx2("table", { className: "w-full", children: /* @__PURE__ */ jsx2("tbody", { children: lines.map((line, i) => /* @__PURE__ */ jsxs2("tr", { className: "hover:bg-[var(--bg-hover)]", children: [
264
264
  /* @__PURE__ */ jsx2("td", { className: "text-right pr-4 pl-4 py-0 select-none text-[var(--text-muted)] text-xs font-[var(--font-mono)] w-10 align-top leading-[1.55]", children: i + 1 }),
265
265
  /* @__PURE__ */ jsx2("td", { className: "pr-4 py-0 font-[var(--font-mono)] text-[13px] text-[var(--text-secondary)] leading-[1.55] whitespace-pre", children: line || " " })
266
266
  ] }, i)) }) }) })
@@ -308,7 +308,7 @@ function CsvPreview({ content }) {
308
308
  },
309
309
  i
310
310
  )) }) }),
311
- /* @__PURE__ */ jsx2("tbody", { children: rows.map((row, i) => /* @__PURE__ */ jsx2("tr", { className: "border-b border-[var(--border-subtle)] hover:bg-[var(--bg-hover)]/50", children: row.map((cell, j) => /* @__PURE__ */ jsx2(
311
+ /* @__PURE__ */ jsx2("tbody", { children: rows.map((row, i) => /* @__PURE__ */ jsx2("tr", { className: "border-b border-[var(--border-subtle)] hover:bg-[var(--bg-hover)]", children: row.map((cell, j) => /* @__PURE__ */ jsx2(
312
312
  "td",
313
313
  {
314
314
  className: "px-3 py-1.5 text-[var(--text-secondary)] font-[var(--font-mono)] text-xs whitespace-nowrap",
@@ -484,7 +484,7 @@ import { lazy, Suspense } from "react";
484
484
  import { Download as Download2, X as X3 } from "lucide-react";
485
485
  import { Fragment, jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
486
486
  var LazyDocumentEditorPane = lazy(async () => {
487
- const module = await import("./document-editor-pane-5TN2VWGZ.js");
487
+ const module = await import("./document-editor-pane-JNXPANWM.js");
488
488
  return { default: module.DocumentEditorPane };
489
489
  });
490
490
  function FileArtifactPane({
@@ -556,7 +556,7 @@ function FileArtifactPane({
556
556
  className,
557
557
  tabs: paneTabs,
558
558
  headerActions,
559
- children: /* @__PURE__ */ jsx4("div", { className: "flex min-h-[20rem] items-center justify-center rounded-[var(--radius-lg)] border border-dashed border-[var(--border-subtle)] bg-[var(--bg-card)]/40 text-sm text-[var(--text-muted)]", children: "Loading editor\u2026" })
559
+ children: /* @__PURE__ */ jsx4("div", { className: "flex min-h-[20rem] items-center justify-center rounded-[var(--radius-lg)] border border-dashed border-[var(--border-subtle)] bg-[var(--bg-section)] text-sm text-[var(--text-muted)]", children: "Loading editor\u2026" })
560
560
  }
561
561
  ),
562
562
  children: /* @__PURE__ */ jsx4(
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  ToolCallGroup,
3
3
  ToolCallStep
4
- } from "./chunk-CJ2RYVZH.js";
4
+ } from "./chunk-NTSRY4GW.js";
5
5
  import {
6
6
  Markdown
7
- } from "./chunk-LTFK464G.js";
7
+ } from "./chunk-H5XYSFYE.js";
8
8
  import {
9
9
  cn
10
10
  } from "./chunk-RQHJBTEU.js";
@@ -8,10 +8,10 @@ import {
8
8
  DropdownMenuLabel,
9
9
  DropdownMenuSeparator,
10
10
  DropdownMenuTrigger
11
- } from "./chunk-IW2JZCOC.js";
11
+ } from "./chunk-WBQ7VULC.js";
12
12
  import {
13
13
  Button
14
- } from "./chunk-HWLX5NME.js";
14
+ } from "./chunk-TSE423UF.js";
15
15
  import {
16
16
  cn
17
17
  } from "./chunk-RQHJBTEU.js";
@@ -122,7 +122,7 @@ function UserMenu({
122
122
  DropdownMenuItem,
123
123
  {
124
124
  onClick: handleLogout,
125
- className: "text-red-500 focus:text-red-500",
125
+ className: "text-[var(--surface-danger-text)] focus:text-[var(--surface-danger-text)]",
126
126
  children: "Sign out"
127
127
  }
128
128
  )
@@ -165,10 +165,8 @@ function AuthHeader({
165
165
  }
166
166
 
167
167
  // src/auth/login-layout.tsx
168
+ import { BookOpen, HelpCircle, Terminal } from "lucide-react";
168
169
  import { Fragment, jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
169
- function MaterialIcon({ name, className }) {
170
- return /* @__PURE__ */ jsx2("span", { className: cn("material-symbols-outlined", className), style: { fontVariationSettings: "'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24" }, children: name });
171
- }
172
170
  function LoginLayout({
173
171
  brandName = "Tangle Sandbox",
174
172
  tagline,
@@ -185,48 +183,39 @@ function LoginLayout({
185
183
  children,
186
184
  className
187
185
  }) {
188
- return /* @__PURE__ */ jsxs2("div", { className: cn("bg-surface text-on-surface font-sans overflow-hidden", className), children: [
189
- /* @__PURE__ */ jsxs2("div", { className: "fixed inset-0 z-0 overflow-hidden", children: [
190
- /* @__PURE__ */ jsx2("div", { className: "absolute top-[-10%] left-[-10%] w-[50%] h-[50%] bg-md3-primary/10 rounded-full blur-[120px]" }),
191
- /* @__PURE__ */ jsx2("div", { className: "absolute bottom-[-10%] right-[-10%] w-[40%] h-[40%] bg-secondary-container/10 rounded-full blur-[100px]" }),
192
- /* @__PURE__ */ jsx2("div", { className: "absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-full h-full opacity-20 pointer-events-none", style: { backgroundImage: "radial-gradient(#4a4455 1px, transparent 1px)", backgroundSize: "40px 40px" } })
193
- ] }),
186
+ return /* @__PURE__ */ jsxs2("div", { className: cn("bg-[var(--depth-1)] text-[var(--text-primary)] font-sans overflow-hidden", className), children: [
187
+ /* @__PURE__ */ jsx2("div", { className: "fixed inset-0 z-0 overflow-hidden pointer-events-none", children: /* @__PURE__ */ jsx2("div", { className: "absolute inset-0 opacity-[0.04]", style: { backgroundImage: "radial-gradient(var(--brand-cool) 1px, transparent 1px)", backgroundSize: "40px 40px" } }) }),
194
188
  /* @__PURE__ */ jsxs2("main", { className: "relative z-10 flex flex-col md:flex-row h-screen", children: [
195
189
  /* @__PURE__ */ jsxs2("section", { className: "hidden md:flex flex-col justify-between p-12 lg:p-20 w-1/2 h-full", children: [
196
190
  /* @__PURE__ */ jsx2("div", { className: "space-y-4", children: /* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-3", children: [
197
- /* @__PURE__ */ jsx2("div", { className: "w-10 h-10 bg-gradient-to-br from-md3-primary to-primary-container rounded-lg flex items-center justify-center shadow-lg shadow-md3-primary/20", children: /* @__PURE__ */ jsx2(MaterialIcon, { name: "terminal", className: "text-on-primary text-2xl" }) }),
198
- /* @__PURE__ */ jsx2("span", { className: "text-2xl font-extrabold tracking-tighter bg-gradient-to-br from-violet-300 to-violet-600 bg-clip-text text-transparent", children: brandName })
191
+ /* @__PURE__ */ jsx2("div", { className: "w-10 h-10 bg-[var(--accent-surface-soft)] border border-[var(--border-accent)] rounded-lg flex items-center justify-center", children: /* @__PURE__ */ jsx2(Terminal, { className: "h-5 w-5 text-[var(--brand-cool)]" }) }),
192
+ /* @__PURE__ */ jsx2("span", { className: "text-2xl font-extrabold tracking-tighter text-[var(--text-primary)]", children: brandName })
199
193
  ] }) }),
200
194
  /* @__PURE__ */ jsxs2("div", { className: "max-w-lg space-y-6", children: [
201
- tagline ? /* @__PURE__ */ jsx2("div", { className: "text-5xl lg:text-7xl font-bold tracking-tight leading-none text-white", children: tagline }) : /* @__PURE__ */ jsxs2("h1", { className: "text-5xl lg:text-7xl font-bold tracking-tight leading-none text-white", children: [
195
+ tagline ? /* @__PURE__ */ jsx2("div", { className: "text-5xl lg:text-7xl font-bold tracking-tight leading-none text-[var(--text-primary)]", children: tagline }) : /* @__PURE__ */ jsxs2("h1", { className: "text-5xl lg:text-7xl font-bold tracking-tight leading-none", children: [
202
196
  "Orchestrate ",
203
197
  /* @__PURE__ */ jsx2("br", {}),
204
- /* @__PURE__ */ jsx2("span", { className: "text-primary-fixed-dim", children: "Agents" }),
198
+ /* @__PURE__ */ jsx2("span", { className: "text-[var(--brand-cool)]", children: "Agents" }),
205
199
  " in Flow."
206
200
  ] }),
207
- /* @__PURE__ */ jsx2("p", { className: "text-on-surface-variant text-lg leading-relaxed font-light", children: subtitle }),
208
- /* @__PURE__ */ jsxs2("div", { className: "mt-12 bg-surface-container-lowest rounded-xl border border-outline-variant/10 overflow-hidden shadow-2xl", children: [
209
- /* @__PURE__ */ jsxs2("div", { className: "bg-surface-container-high px-4 py-2 flex items-center gap-2", children: [
210
- /* @__PURE__ */ jsx2("div", { className: "w-3 h-3 rounded-full bg-md3-error/40" }),
211
- /* @__PURE__ */ jsx2("div", { className: "w-3 h-3 rounded-full bg-md3-primary/40" }),
212
- /* @__PURE__ */ jsx2("div", { className: "w-3 h-3 rounded-full bg-md3-secondary/40" }),
213
- /* @__PURE__ */ jsx2("span", { className: "ml-4 font-mono text-xs text-on-surface-variant/60", children: "tangle --init-node" })
214
- ] }),
201
+ /* @__PURE__ */ jsx2("p", { className: "text-[var(--text-muted)] text-lg leading-relaxed font-light", children: subtitle }),
202
+ /* @__PURE__ */ jsxs2("div", { className: "mt-12 bg-[var(--depth-2)] rounded-xl border border-[var(--border-subtle)] overflow-hidden", children: [
203
+ /* @__PURE__ */ jsx2("div", { className: "bg-[var(--depth-1)] border-b border-[var(--border-subtle)] px-4 py-2 flex items-center gap-2", children: /* @__PURE__ */ jsx2("span", { className: "font-mono text-xs text-[var(--text-muted)]", children: "tangle --init-node" }) }),
215
204
  /* @__PURE__ */ jsx2("div", { className: "p-6 font-mono text-xs space-y-2", children: terminalLines.map((line, i) => /* @__PURE__ */ jsxs2("div", { className: "flex gap-4", children: [
216
- /* @__PURE__ */ jsx2("span", { className: "text-md3-primary/60", children: String(i + 1).padStart(2, "0") }),
205
+ /* @__PURE__ */ jsx2("span", { className: "text-[var(--brand-cool)] opacity-60", children: String(i + 1).padStart(2, "0") }),
217
206
  line.startsWith("DONE") ? /* @__PURE__ */ jsxs2(Fragment, { children: [
218
- /* @__PURE__ */ jsx2("span", { className: "text-primary-fixed-dim", children: "DONE" }),
219
- /* @__PURE__ */ jsx2("span", { className: "text-on-surface", children: line.replace("DONE ", "") })
220
- ] }) : /* @__PURE__ */ jsx2("span", { className: "text-on-surface", children: line })
207
+ /* @__PURE__ */ jsx2("span", { className: "text-[var(--code-success)]", children: "DONE" }),
208
+ /* @__PURE__ */ jsx2("span", { className: "text-[var(--text-primary)]", children: line.replace("DONE ", "") })
209
+ ] }) : /* @__PURE__ */ jsx2("span", { className: "text-[var(--text-secondary)]", children: line })
221
210
  ] }, i)) })
222
211
  ] })
223
212
  ] }),
224
- /* @__PURE__ */ jsx2("nav", { className: "flex gap-8 text-sm font-medium text-on-surface-variant", children: footerLinks.map((link) => /* @__PURE__ */ jsxs2("a", { href: link.href, className: "hover:text-md3-primary transition-colors flex items-center gap-2", children: [
225
- /* @__PURE__ */ jsx2(MaterialIcon, { name: link.label === "Documentation" ? "menu_book" : "contact_support", className: "text-lg" }),
213
+ /* @__PURE__ */ jsx2("nav", { className: "flex gap-8 text-sm font-medium text-[var(--text-muted)]", children: footerLinks.map((link) => /* @__PURE__ */ jsxs2("a", { href: link.href, className: "hover:text-[var(--brand-cool)] transition-colors flex items-center gap-2", children: [
214
+ link.label === "Documentation" ? /* @__PURE__ */ jsx2(BookOpen, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx2(HelpCircle, { className: "h-4 w-4" }),
226
215
  link.label
227
216
  ] }, link.href)) })
228
217
  ] }),
229
- /* @__PURE__ */ jsx2("section", { className: "w-full md:w-1/2 flex items-center justify-center p-6 lg:p-24 relative", children: /* @__PURE__ */ jsx2("div", { className: "w-full max-w-md bg-surface-container/60 backdrop-blur-[20px] rounded-[2rem] p-8 lg:p-12 shadow-2xl border border-white/5", children }) })
218
+ /* @__PURE__ */ jsx2("section", { className: "w-full md:w-1/2 flex items-center justify-center p-6 lg:p-24 relative", children: /* @__PURE__ */ jsx2("div", { className: "w-full max-w-md bg-[var(--depth-2)] rounded-[2rem] p-8 lg:p-12 shadow-2xl border border-[var(--border-subtle)]", children }) })
230
219
  ] })
231
220
  ] });
232
221
  }
@@ -16,7 +16,7 @@ var DialogOverlay = React.forwardRef(({ className, ...props }, ref) => /* @__PUR
16
16
  {
17
17
  ref,
18
18
  className: cn(
19
- "fixed inset-0 z-50 bg-black/80 backdrop-blur-sm",
19
+ "fixed inset-0 z-50 bg-black/85",
20
20
  "data-[state=closed]:animate-out data-[state=open]:animate-in",
21
21
  "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
22
22
  className
@@ -52,7 +52,7 @@ function Skeleton({
52
52
  return /* @__PURE__ */ jsx2(
53
53
  "div",
54
54
  {
55
- className: cn("animate-pulse rounded-lg bg-muted", className),
55
+ className: cn("animate-pulse rounded-lg bg-[var(--depth-3)]", className),
56
56
  ...props
57
57
  }
58
58
  );
@@ -62,7 +62,7 @@ function SkeletonCard({ className }) {
62
62
  "div",
63
63
  {
64
64
  className: cn(
65
- "space-y-4 rounded-xl border border-border bg-card p-6",
65
+ "space-y-4 rounded-xl border border-[var(--border-subtle)] bg-[var(--bg-card)] p-6",
66
66
  className
67
67
  ),
68
68
  children: [
@@ -79,7 +79,7 @@ function SkeletonCard({ className }) {
79
79
  }
80
80
  function SkeletonTable({ rows = 5 }) {
81
81
  return /* @__PURE__ */ jsxs2("div", { className: "space-y-3", children: [
82
- /* @__PURE__ */ jsxs2("div", { className: "flex gap-4 border-border border-b pb-2", children: [
82
+ /* @__PURE__ */ jsxs2("div", { className: "flex gap-4 border-[var(--border-subtle)] border-b pb-2", children: [
83
83
  /* @__PURE__ */ jsx2(Skeleton, { className: "h-4 w-1/4" }),
84
84
  /* @__PURE__ */ jsx2(Skeleton, { className: "h-4 w-1/4" }),
85
85
  /* @__PURE__ */ jsx2(Skeleton, { className: "h-4 w-1/4" }),