@tangle-network/sandbox-ui 0.4.0 → 0.5.1

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-MVYFNPAH.js → chunk-7DVFZEVW.js} +298 -272
  8. package/dist/{chunk-MUOL44AE.js → chunk-BRBTD7RH.js} +6 -6
  9. package/dist/{chunk-SSKVYXCR.js → chunk-DCPYTL4W.js} +62 -79
  10. package/dist/chunk-DLCFZDGX.js +182 -0
  11. package/dist/{chunk-HXEA7L2T.js → chunk-FFOXUHOF.js} +10 -10
  12. package/dist/chunk-H5XYSFYE.js +228 -0
  13. package/dist/{chunk-TQN3VR4F.js → chunk-JP725R4W.js} +2 -2
  14. package/dist/{chunk-CJ2RYVZH.js → chunk-NTSRY4GW.js} +68 -10
  15. package/dist/{chunk-DQYODCBN.js → chunk-P24K22CV.js} +57 -66
  16. package/dist/{chunk-GVUW4VDD.js → chunk-R3IU37AW.js} +161 -229
  17. package/dist/chunk-TDYQBLL5.js +127 -0
  18. package/dist/{chunk-HWLX5NME.js → chunk-TSE423UF.js} +12 -12
  19. package/dist/{chunk-YDBXQQLC.js → chunk-VBWY44UU.js} +30 -76
  20. package/dist/{chunk-IW2JZCOC.js → chunk-WBQ7VULC.js} +7 -7
  21. package/dist/{chunk-72UEKFZ2.js → chunk-WC7QTWPN.js} +65 -42
  22. package/dist/{chunk-HYLTXGOI.js → chunk-WQH233GF.js} +5 -5
  23. package/dist/{chunk-CCKNIAS7.js → chunk-XBR3IP7B.js} +2 -2
  24. package/dist/{chunk-OHMO7NUX.js → chunk-XTPAWK7L.js} +20 -31
  25. package/dist/{chunk-SULQQJPB.js → chunk-YS66Q3RC.js} +1 -1
  26. package/dist/{chunk-FRGMMANX.js → chunk-YYGECNZZ.js} +3 -3
  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-BT_-ecpc.d.ts} +11 -10
  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
@@ -7,30 +7,27 @@ import {
7
7
  import {
8
8
  EmptyState,
9
9
  Input
10
- } from "./chunk-MUOL44AE.js";
10
+ } from "./chunk-BRBTD7RH.js";
11
11
  import {
12
12
  ChatContainer
13
- } from "./chunk-GVUW4VDD.js";
13
+ } from "./chunk-R3IU37AW.js";
14
14
  import {
15
15
  OpenUIArtifactRenderer
16
- } from "./chunk-YDBXQQLC.js";
16
+ } from "./chunk-VBWY44UU.js";
17
17
  import {
18
18
  FileArtifactPane,
19
19
  FileTree,
20
20
  filterFileTree
21
- } from "./chunk-HYLTXGOI.js";
21
+ } from "./chunk-WQH233GF.js";
22
22
  import {
23
23
  ArtifactPane
24
24
  } from "./chunk-W4LM3QYZ.js";
25
25
  import {
26
26
  Markdown
27
- } from "./chunk-LTFK464G.js";
27
+ } from "./chunk-H5XYSFYE.js";
28
28
  import {
29
29
  Badge
30
- } from "./chunk-MXCSSOGH.js";
31
- import {
32
- Button
33
- } from "./chunk-HWLX5NME.js";
30
+ } from "./chunk-TDYQBLL5.js";
34
31
  import {
35
32
  cn
36
33
  } from "./chunk-RQHJBTEU.js";
@@ -166,7 +163,7 @@ function MobileDrawer({ side, title, header, onClose, children }) {
166
163
  type: "button",
167
164
  "aria-label": `Close ${title}`,
168
165
  onClick: onClose,
169
- className: "absolute inset-0 bg-black/55 backdrop-blur-[2px]"
166
+ className: "absolute inset-0 bg-black/70"
170
167
  }
171
168
  ),
172
169
  /* @__PURE__ */ jsxs(
@@ -784,6 +781,7 @@ function RuntimePane({
784
781
  subtitle = "Session state, execution output, and inspection surfaces",
785
782
  statusBanner,
786
783
  statusBar,
784
+ content,
787
785
  terminal,
788
786
  audit,
789
787
  inspector,
@@ -805,7 +803,7 @@ function RuntimePane({
805
803
  ] }),
806
804
  statusBanner && /* @__PURE__ */ jsx6(StatusBanner, { ...statusBanner }),
807
805
  statusBar && /* @__PURE__ */ jsx6(StatusBar, { ...statusBar }),
808
- /* @__PURE__ */ jsxs6("div", { className: "grid min-h-0 flex-1 gap-px bg-[var(--border-subtle)] lg:grid-cols-[minmax(0,1.35fr)_minmax(20rem,0.9fr)]", children: [
806
+ content ? /* @__PURE__ */ jsx6("div", { className: "min-h-0 flex-1 overflow-hidden", children: content }) : /* @__PURE__ */ jsxs6("div", { className: "grid min-h-0 flex-1 gap-px bg-[var(--border-subtle)] lg:grid-cols-[minmax(0,1.35fr)_minmax(20rem,0.9fr)]", children: [
809
807
  /* @__PURE__ */ jsx6("div", { className: "min-h-0 overflow-auto bg-[var(--bg-card)]", children: terminal ? /* @__PURE__ */ jsx6(
810
808
  TerminalPanel,
811
809
  {
@@ -894,11 +892,11 @@ function badgeClasses(tone = "neutral") {
894
892
  case "accent":
895
893
  return "border-[var(--border-accent)] bg-[var(--accent-surface-soft)] text-[var(--accent-text)]";
896
894
  case "success":
897
- return "border-emerald-500/30 bg-emerald-500/10 text-emerald-200";
895
+ return "border-[var(--surface-success-border)] bg-[var(--surface-success-bg)] text-[var(--surface-success-text)]";
898
896
  case "warning":
899
- return "border-amber-500/30 bg-amber-500/10 text-amber-100";
897
+ return "border-[var(--surface-warning-border)] bg-[var(--surface-warning-bg)] text-[var(--surface-warning-text)]";
900
898
  case "danger":
901
- return "border-red-500/30 bg-red-500/10 text-red-200";
899
+ return "border-[var(--surface-danger-border)] bg-[var(--surface-danger-bg)] text-[var(--surface-danger-text)]";
902
900
  default:
903
901
  return "border-[var(--border-subtle)] bg-[var(--bg-section)] text-[var(--text-secondary)]";
904
902
  }
@@ -960,39 +958,32 @@ function SessionSidebar({
960
958
  isActive: currentItemId === item.id
961
959
  })).length
962
960
  ])), [currentItemId, filters, orderedItems, sessionsById]);
963
- return /* @__PURE__ */ jsxs7("aside", { className: cn("flex w-72 shrink-0 flex-col border-r border-[var(--border-subtle)] bg-[radial-gradient(circle_at_top,rgba(96,165,250,0.12),transparent_26%),var(--bg-card)]/94 backdrop-blur-xl", className), children: [
964
- /* @__PURE__ */ jsxs7("div", { className: "border-b border-[var(--border-subtle)] px-4 py-4", children: [
965
- /* @__PURE__ */ jsxs7("div", { className: "flex items-center gap-2", children: [
966
- /* @__PURE__ */ jsx7("div", { className: "flex h-11 w-11 items-center justify-center rounded-2xl border border-[var(--border-subtle)] bg-[linear-gradient(135deg,rgba(82,164,255,0.22),rgba(82,164,255,0.08))] text-[var(--accent-text)] shadow-[var(--shadow-accent)]", children: /* @__PURE__ */ jsx7(MessageSquareText, { className: "h-4 w-4" }) }),
967
- /* @__PURE__ */ jsxs7("div", { className: "min-w-0", children: [
968
- /* @__PURE__ */ jsx7("div", { className: "truncate text-sm font-semibold tracking-[0.01em] text-[var(--text-primary)]", children: title }),
969
- subtitle && /* @__PURE__ */ jsx7("div", { className: "truncate text-xs text-[var(--text-muted)]", children: subtitle })
970
- ] })
971
- ] }),
972
- /* @__PURE__ */ jsxs7("div", { className: "mt-4 grid grid-cols-2 gap-2", children: [
973
- /* @__PURE__ */ jsxs7("div", { className: "rounded-[var(--radius-lg)] border border-[var(--border-subtle)] bg-[linear-gradient(180deg,rgba(255,255,255,0.04),transparent)] px-3 py-2", children: [
974
- /* @__PURE__ */ jsx7("div", { className: "text-[10px] font-semibold uppercase tracking-[0.16em] text-[var(--text-muted)]", children: "Tracked" }),
975
- /* @__PURE__ */ jsx7("div", { className: "mt-1 text-sm font-semibold text-[var(--text-primary)]", children: items.length })
961
+ return /* @__PURE__ */ jsxs7("aside", { className: cn("flex w-64 shrink-0 flex-col border-r border-[var(--border-subtle)] bg-[var(--depth-2)]", className), children: [
962
+ /* @__PURE__ */ jsxs7("div", { className: "border-b border-[var(--border-subtle)] px-3 py-3", children: [
963
+ /* @__PURE__ */ jsxs7("div", { className: "flex items-center justify-between gap-2", children: [
964
+ /* @__PURE__ */ jsxs7("div", { className: "flex items-center gap-2 min-w-0", children: [
965
+ /* @__PURE__ */ jsx7("div", { className: "flex h-7 w-7 shrink-0 items-center justify-center rounded-lg border border-[var(--border-accent)]/50 bg-[var(--accent-surface-soft)] text-[var(--accent-text)]", children: /* @__PURE__ */ jsx7(MessageSquareText, { className: "h-3.5 w-3.5" }) }),
966
+ /* @__PURE__ */ jsxs7("div", { className: "min-w-0", children: [
967
+ /* @__PURE__ */ jsx7("div", { className: "truncate text-sm font-semibold tracking-[0.01em] text-[var(--text-primary)]", children: title }),
968
+ subtitle && /* @__PURE__ */ jsx7("div", { className: "truncate text-[11px] text-[var(--text-muted)]", children: subtitle })
969
+ ] })
976
970
  ] }),
977
- /* @__PURE__ */ jsxs7("div", { className: "rounded-[var(--radius-lg)] border border-[var(--border-subtle)] bg-[linear-gradient(180deg,rgba(255,255,255,0.04),transparent)] px-3 py-2", children: [
978
- /* @__PURE__ */ jsx7("div", { className: "text-[10px] font-semibold uppercase tracking-[0.16em] text-[var(--text-muted)]", children: "Running" }),
979
- /* @__PURE__ */ jsx7("div", { className: "mt-1 text-sm font-semibold text-[var(--text-primary)]", children: runningCount })
971
+ /* @__PURE__ */ jsxs7("div", { className: "flex items-center gap-2 shrink-0", children: [
972
+ runningCount > 0 && /* @__PURE__ */ jsx7("span", { className: "rounded-full border border-[var(--border-accent)] bg-[var(--accent-surface-soft)] px-1.5 py-0.5 text-[10px] font-medium text-[var(--accent-text)]", children: runningCount }),
973
+ onCreate && /* @__PURE__ */ jsx7(
974
+ "button",
975
+ {
976
+ type: "button",
977
+ onClick: onCreate,
978
+ title: createLabel,
979
+ className: "flex h-6 w-6 items-center justify-center rounded-md border border-[var(--border-default)] bg-[var(--bg-section)] text-[var(--text-muted)] transition-colors hover:border-[var(--border-accent)] hover:bg-[var(--accent-surface-soft)] hover:text-[var(--accent-text)]",
980
+ children: /* @__PURE__ */ jsx7(Plus, { className: "h-3.5 w-3.5" })
981
+ }
982
+ )
980
983
  ] })
981
984
  ] }),
982
- /* @__PURE__ */ jsxs7(
983
- Button,
984
- {
985
- type: "button",
986
- onClick: onCreate,
987
- className: "mt-4 w-full justify-center gap-2 rounded-xl bg-[linear-gradient(135deg,var(--brand-cool),var(--brand-glow))] text-white shadow-[var(--shadow-accent)] hover:translate-y-[-1px] hover:brightness-105",
988
- children: [
989
- /* @__PURE__ */ jsx7(Plus, { className: "h-4 w-4" }),
990
- createLabel
991
- ]
992
- }
993
- ),
994
- enableSearch && items.length > 0 && /* @__PURE__ */ jsxs7("div", { className: "relative mt-3", children: [
995
- /* @__PURE__ */ jsx7(Search2, { className: "pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-[var(--text-dim)]" }),
985
+ enableSearch && items.length > 0 && /* @__PURE__ */ jsxs7("div", { className: "relative mt-2.5", children: [
986
+ /* @__PURE__ */ jsx7(Search2, { className: "pointer-events-none absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-[var(--text-dim)]" }),
996
987
  /* @__PURE__ */ jsx7(
997
988
  "input",
998
989
  {
@@ -1000,11 +991,11 @@ function SessionSidebar({
1000
991
  onChange: (event) => setQuery(event.target.value),
1001
992
  placeholder: searchPlaceholder,
1002
993
  "aria-label": searchPlaceholder,
1003
- className: "h-10 w-full rounded-[var(--radius-lg)] border border-[var(--border-subtle)] bg-[linear-gradient(180deg,rgba(255,255,255,0.04),transparent)] pl-9 pr-3 text-sm text-[var(--text-primary)] placeholder:text-[var(--text-dim)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--brand-cool)]/45"
994
+ className: "h-8 w-full rounded-[var(--radius-md)] border border-[var(--border-subtle)] bg-[var(--bg-section)] pl-8 pr-3 text-xs text-[var(--text-primary)] placeholder:text-[var(--text-dim)] focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--border-accent)]"
1004
995
  }
1005
996
  )
1006
997
  ] }),
1007
- filters.length > 0 && /* @__PURE__ */ jsx7("div", { className: "mt-3 flex flex-wrap gap-2", children: filters.map((filter) => {
998
+ filters.length > 0 && /* @__PURE__ */ jsx7("div", { className: "mt-2 flex flex-wrap gap-1", children: filters.map((filter) => {
1008
999
  const isSelected = activeFilterId === filter.id;
1009
1000
  return /* @__PURE__ */ jsxs7(
1010
1001
  "button",
@@ -1012,19 +1003,19 @@ function SessionSidebar({
1012
1003
  type: "button",
1013
1004
  onClick: () => setActiveFilterId(filter.id),
1014
1005
  className: cn(
1015
- "inline-flex items-center gap-1.5 rounded-full border px-2.5 py-1 text-[11px] font-medium transition-colors",
1016
- isSelected ? "border-[var(--border-accent)] bg-[var(--accent-surface-soft)] text-[var(--accent-text)]" : "border-[var(--border-subtle)] bg-[var(--bg-section)] text-[var(--text-muted)] hover:text-[var(--text-primary)]"
1006
+ "inline-flex items-center gap-1 rounded-full border px-2 py-0.5 text-[10px] font-medium transition-colors",
1007
+ isSelected ? "border-[var(--border-accent)] bg-[var(--accent-surface-soft)] text-[var(--accent-text)]" : "border-[var(--border-subtle)] bg-transparent text-[var(--text-muted)] hover:text-[var(--text-secondary)]"
1017
1008
  ),
1018
1009
  children: [
1019
1010
  /* @__PURE__ */ jsx7("span", { children: filter.label }),
1020
- /* @__PURE__ */ jsx7("span", { className: "rounded-full bg-[var(--bg-card)] px-1.5 py-0.5 text-[10px] text-[var(--text-secondary)]", children: filterCounts[filter.id] ?? 0 })
1011
+ /* @__PURE__ */ jsx7("span", { className: "text-[9px] opacity-70", children: filterCounts[filter.id] ?? 0 })
1021
1012
  ]
1022
1013
  },
1023
1014
  filter.id
1024
1015
  );
1025
1016
  }) })
1026
1017
  ] }),
1027
- /* @__PURE__ */ jsx7("nav", { "aria-label": "Sessions", className: "flex-1 overflow-y-auto px-3 py-3", children: visibleItems.length === 0 ? /* @__PURE__ */ jsx7("div", { className: "rounded-[var(--radius-lg)] border border-dashed border-[var(--border-subtle)] bg-[var(--bg-section)] px-4 py-5 text-sm text-[var(--text-muted)]", children: query.trim() ? `No sessions match "${query.trim()}".` : emptyMessage }) : /* @__PURE__ */ jsx7("ul", { className: "space-y-1.5", children: visibleItems.map((item) => {
1018
+ /* @__PURE__ */ jsx7("nav", { "aria-label": "Sessions", className: "flex-1 overflow-y-auto px-2 py-2", children: visibleItems.length === 0 ? /* @__PURE__ */ jsx7("div", { className: "rounded-[var(--radius-md)] border border-dashed border-[var(--border-subtle)] bg-[var(--bg-section)] px-3 py-4 text-xs text-[var(--text-muted)]", children: query.trim() ? `No sessions match "${query.trim()}".` : emptyMessage }) : /* @__PURE__ */ jsx7("ul", { className: "space-y-1", children: visibleItems.map((item) => {
1028
1019
  const session = sessionsById.get(item.id) ?? null;
1029
1020
  const isActive = currentItemId === item.id;
1030
1021
  const status = session?.status ?? item.status;
@@ -1036,8 +1027,8 @@ function SessionSidebar({
1036
1027
  "div",
1037
1028
  {
1038
1029
  className: cn(
1039
- "group flex items-start gap-2 rounded-[calc(var(--radius-lg)+2px)] border px-2 py-2 transition-colors backdrop-blur-sm",
1040
- isActive ? "border-[var(--border-accent)] bg-[radial-gradient(circle_at_top_left,rgba(96,165,250,0.16),transparent_40%),var(--accent-surface-soft)] shadow-[var(--shadow-card)]" : "border-transparent bg-transparent hover:border-[var(--border-subtle)] hover:bg-[linear-gradient(180deg,rgba(255,255,255,0.03),transparent)]"
1030
+ "group flex items-start gap-2 rounded-[var(--radius-md)] border px-2 py-2 transition-colors",
1031
+ isActive ? "border-[var(--border-accent)] bg-[var(--accent-surface-soft)] shadow-[var(--shadow-card)]" : "border-[var(--border-subtle)] bg-transparent hover:border-[var(--border-default)] hover:bg-[var(--bg-section)]"
1041
1032
  ),
1042
1033
  children: [
1043
1034
  /* @__PURE__ */ jsxs7(
@@ -1052,17 +1043,17 @@ function SessionSidebar({
1052
1043
  navigateToHref(item.href);
1053
1044
  },
1054
1045
  "aria-current": isActive ? "page" : void 0,
1055
- className: "min-w-0 flex flex-1 items-start gap-3 rounded-[var(--radius-lg)] px-1 py-1 text-left",
1046
+ className: "min-w-0 flex flex-1 items-start gap-2.5 text-left",
1056
1047
  children: [
1057
- /* @__PURE__ */ jsx7("span", { className: cn("mt-1 h-2.5 w-2.5 shrink-0 rounded-full", statusClasses(status)) }),
1048
+ /* @__PURE__ */ jsx7("span", { className: cn("mt-[5px] h-2 w-2 shrink-0 rounded-full", statusClasses(status)) }),
1058
1049
  /* @__PURE__ */ jsxs7("div", { className: "min-w-0 flex-1", children: [
1059
- /* @__PURE__ */ jsx7("div", { className: "truncate text-sm font-medium text-[var(--text-primary)]", children: item.title }),
1060
- item.subtitle && /* @__PURE__ */ jsx7("div", { className: "mt-0.5 truncate text-xs text-[var(--text-muted)]", children: item.subtitle }),
1061
- visibleBadges.length > 0 && /* @__PURE__ */ jsx7("div", { className: "mt-2 flex flex-wrap items-center gap-1.5", children: visibleBadges.map((badge) => /* @__PURE__ */ jsx7(
1050
+ /* @__PURE__ */ jsx7("div", { className: "truncate text-xs font-medium text-[var(--text-primary)]", children: item.title }),
1051
+ item.subtitle && /* @__PURE__ */ jsx7("div", { className: "mt-0.5 truncate text-[11px] leading-tight text-[var(--text-muted)]", children: item.subtitle }),
1052
+ visibleBadges.length > 0 && /* @__PURE__ */ jsx7("div", { className: "mt-1.5 flex flex-wrap items-center gap-1", children: visibleBadges.map((badge) => /* @__PURE__ */ jsx7(
1062
1053
  "span",
1063
1054
  {
1064
1055
  className: cn(
1065
- "inline-flex items-center rounded-full border px-2 py-0.5 text-[10px] font-medium uppercase tracking-[0.08em]",
1056
+ "inline-flex items-center rounded-full border px-1.5 py-0.5 text-[9px] font-medium uppercase tracking-[0.06em]",
1066
1057
  badgeClasses(badge.tone)
1067
1058
  ),
1068
1059
  children: badge.label
@@ -1091,8 +1082,8 @@ function SessionSidebar({
1091
1082
  }
1092
1083
  ) }, item.id);
1093
1084
  }) }) }),
1094
- activityMonitor && /* @__PURE__ */ jsx7("div", { className: "border-t border-[var(--border-subtle)] px-3 py-3", children: activityMonitor }),
1095
- links.length > 0 && /* @__PURE__ */ jsx7("nav", { "aria-label": "Workspace sections", className: "border-t border-[var(--border-subtle)] px-3 py-3", children: /* @__PURE__ */ jsx7("div", { className: "space-y-1", children: links.map((link) => {
1085
+ activityMonitor && /* @__PURE__ */ jsx7("div", { className: "border-t border-[var(--border-subtle)] px-2 py-2", children: activityMonitor }),
1086
+ links.length > 0 && /* @__PURE__ */ jsx7("nav", { "aria-label": "Workspace sections", className: "border-t border-[var(--border-subtle)] px-2 py-2", children: /* @__PURE__ */ jsx7("div", { className: "space-y-0.5", children: links.map((link) => {
1096
1087
  const Icon = iconForLink(link.icon);
1097
1088
  return /* @__PURE__ */ jsxs7(
1098
1089
  "button",
@@ -1105,9 +1096,9 @@ function SessionSidebar({
1105
1096
  }
1106
1097
  navigateToHref(link.href);
1107
1098
  },
1108
- className: "flex w-full items-center gap-2 rounded-[var(--radius-md)] px-3 py-2 text-left text-sm text-[var(--text-secondary)] transition-colors hover:bg-[var(--bg-section)] hover:text-[var(--text-primary)]",
1099
+ className: "flex w-full items-center gap-2 rounded-[var(--radius-sm)] px-2 py-1.5 text-left text-xs text-[var(--text-muted)] transition-colors hover:bg-[var(--bg-section)] hover:text-[var(--text-primary)]",
1109
1100
  children: [
1110
- /* @__PURE__ */ jsx7(Icon, { className: "h-4 w-4 shrink-0" }),
1101
+ /* @__PURE__ */ jsx7(Icon, { className: "h-3.5 w-3.5 shrink-0" }),
1111
1102
  /* @__PURE__ */ jsx7("span", { className: "truncate", children: link.label })
1112
1103
  ]
1113
1104
  },
@@ -1168,7 +1159,7 @@ function SessionActivityMonitor({
1168
1159
  return /* @__PURE__ */ jsxs8(
1169
1160
  "div",
1170
1161
  {
1171
- className: "rounded-[calc(var(--radius-lg)+2px)] border border-[var(--border-subtle)] bg-[radial-gradient(circle_at_top_left,rgba(96,165,250,0.12),transparent_34%),linear-gradient(180deg,rgba(255,255,255,0.04),transparent),var(--bg-card)]/96 p-3 shadow-[var(--shadow-card)]",
1162
+ className: "rounded-[var(--radius-md)] border border-[var(--border-subtle)] bg-[var(--bg-section)] p-3 shadow-[var(--shadow-card)]",
1172
1163
  children: [
1173
1164
  /* @__PURE__ */ jsxs8("div", { className: "flex items-center justify-between gap-3", children: [
1174
1165
  /* @__PURE__ */ jsxs8("div", { children: [
@@ -1437,7 +1428,7 @@ function SandboxWorkbench({
1437
1428
  }
1438
1429
  onArtifactChange?.(artifactId);
1439
1430
  };
1440
- const centerHeader = /* @__PURE__ */ jsxs9("div", { className: "flex min-w-0 items-start justify-between gap-4 rounded-[calc(var(--radius-xl)+2px)] border border-[var(--border-subtle)] bg-[radial-gradient(circle_at_top_left,rgba(96,165,250,0.16),transparent_34%),linear-gradient(135deg,rgba(98,114,243,0.14),rgba(255,255,255,0.03)_42%,transparent_76%)] px-4 py-3.5 shadow-[var(--shadow-accent)] backdrop-blur-sm", children: [
1431
+ const centerHeader = /* @__PURE__ */ jsxs9("div", { className: "flex min-w-0 items-start justify-between gap-4 rounded-[var(--radius-xl)] border border-[var(--border-subtle)] bg-[var(--depth-3)] px-4 py-3.5", children: [
1441
1432
  /* @__PURE__ */ jsxs9("div", { className: "min-w-0", children: [
1442
1433
  /* @__PURE__ */ jsx9("div", { className: "text-[10px] font-semibold uppercase tracking-[0.18em] text-[var(--brand-cool)]", children: "Tangle Sandbox" }),
1443
1434
  /* @__PURE__ */ jsx9("div", { className: "truncate text-[17px] font-semibold tracking-[0.01em] text-[var(--text-primary)]", children: title }),
@@ -1460,7 +1451,7 @@ function SandboxWorkbench({
1460
1451
  meta: session.meta,
1461
1452
  headerActions: session.headerActions,
1462
1453
  className: "h-full",
1463
- contentClassName: "bg-[radial-gradient(circle_at_top,rgba(82,164,255,0.1),transparent_34%),linear-gradient(180deg,rgba(255,255,255,0.02),transparent_22%)]",
1454
+ contentClassName: "bg-[var(--bg-dark)]",
1464
1455
  children: /* @__PURE__ */ jsx9(
1465
1456
  ChatContainer,
1466
1457
  {
@@ -1481,7 +1472,7 @@ function SandboxWorkbench({
1481
1472
  onClose: onArtifactClose
1482
1473
  }
1483
1474
  ),
1484
- /* @__PURE__ */ jsx9("div", { className: "min-h-0 flex-1 overflow-auto bg-[linear-gradient(180deg,rgba(255,255,255,0.02),transparent)]", children: activeArtifact ? renderArtifact(activeArtifact) : /* @__PURE__ */ jsx9("div", { className: "flex h-full items-center justify-center p-6", children: emptyArtifactState ?? /* @__PURE__ */ jsx9(
1475
+ /* @__PURE__ */ jsx9("div", { className: "min-h-0 flex-1 overflow-auto bg-[var(--bg-dark)]", children: activeArtifact ? renderArtifact(activeArtifact) : /* @__PURE__ */ jsx9("div", { className: "flex h-full items-center justify-center p-6", children: emptyArtifactState ?? /* @__PURE__ */ jsx9(
1485
1476
  EmptyState,
1486
1477
  {
1487
1478
  icon: /* @__PURE__ */ jsx9(Boxes, { className: "h-8 w-8" }),