@tangle-network/sandbox-ui 0.6.1 → 0.9.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 (68) hide show
  1. package/README.md +5 -6
  2. package/dist/auth.d.ts +10 -6
  3. package/dist/auth.js +3 -3
  4. package/dist/{chat-container-Cg-GwyiK.d.ts → chat-container-f4yEs6KN.d.ts} +9 -1
  5. package/dist/chat.d.ts +12 -2
  6. package/dist/chat.js +10 -10
  7. package/dist/{chunk-WBQ7VULC.js → chunk-34A66VBG.js} +7 -7
  8. package/dist/{chunk-JP725R4W.js → chunk-34I7UFSX.js} +2 -2
  9. package/dist/{chunk-CNWVHQFY.js → chunk-54SQQMMM.js} +6 -24
  10. package/dist/{chunk-DLCFZDGX.js → chunk-5UM2XMEJ.js} +39 -14
  11. package/dist/{chunk-YYGECNZZ.js → chunk-66EZOYZR.js} +3 -3
  12. package/dist/{chunk-6V4XVKFY.js → chunk-7YWFOGKQ.js} +344 -338
  13. package/dist/{chunk-DCPYTL4W.js → chunk-D4CZWJCD.js} +72 -148
  14. package/dist/{chunk-XTPAWK7L.js → chunk-DI3NZ5ZX.js} +15 -51
  15. package/dist/{chunk-MXRQ4MJE.js → chunk-DXMIEK4K.js} +34 -23
  16. package/dist/{chunk-ZMWWE5RF.js → chunk-EXSOPXIY.js} +141 -123
  17. package/dist/{chunk-GW4GRAWJ.js → chunk-GSZA3TSY.js} +18 -12
  18. package/dist/{chunk-W4LM3QYZ.js → chunk-HB5Y37YU.js} +8 -8
  19. package/dist/{chunk-RKXIRRKQ.js → chunk-JLKYXLFN.js} +70 -66
  20. package/dist/{chunk-BRBTD7RH.js → chunk-MA7YKRUP.js} +28 -18
  21. package/dist/{chunk-TSE423UF.js → chunk-MKTSMWVD.js} +6 -6
  22. package/dist/{chunk-MJUDMVRU.js → chunk-MT5FJ3ZT.js} +17 -17
  23. package/dist/{chunk-565V6JTN.js → chunk-OHPW55EV.js} +60 -99
  24. package/dist/chunk-OKLQVY3Y.js +139 -0
  25. package/dist/{chunk-OVNLOE3Y.js → chunk-PLTZB5BC.js} +41 -41
  26. package/dist/{chunk-E2XT3G52.js → chunk-QC4BJEG6.js} +136 -137
  27. package/dist/{chunk-KH5UDAJ2.js → chunk-QDH5GEGY.js} +58 -54
  28. package/dist/{chunk-33W2TLUL.js → chunk-QID2OOMG.js} +12 -3
  29. package/dist/{chunk-FJSVPBKY.js → chunk-S7OXQTST.js} +17 -3
  30. package/dist/chunk-T7HMZEVO.js +216 -0
  31. package/dist/{chunk-FNYJFCGU.js → chunk-U6QTHMY6.js} +145 -256
  32. package/dist/{chunk-YS66Q3RC.js → chunk-US6JKJKH.js} +2 -2
  33. package/dist/chunk-VX3XOUEB.js +63 -0
  34. package/dist/{chunk-TDYQBLL5.js → chunk-ZMNSRDMH.js} +6 -6
  35. package/dist/dashboard.d.ts +156 -4
  36. package/dist/dashboard.js +885 -8
  37. package/dist/{document-editor-pane-DWWUTTTZ.js → document-editor-pane-TLPVRBBU.js} +3 -3
  38. package/dist/editor.d.ts +9 -8
  39. package/dist/editor.js +3 -3
  40. package/dist/files.js +3 -3
  41. package/dist/globals.css +4787 -69
  42. package/dist/hooks.d.ts +1 -1
  43. package/dist/hooks.js +7 -7
  44. package/dist/index.d.ts +4 -4
  45. package/dist/index.js +28 -28
  46. package/dist/markdown.js +1 -1
  47. package/dist/openui.js +5 -5
  48. package/dist/pages.d.ts +114 -5
  49. package/dist/pages.js +1978 -365
  50. package/dist/primitives.d.ts +5 -2
  51. package/dist/primitives.js +10 -10
  52. package/dist/run.js +4 -4
  53. package/dist/sdk-hooks.d.ts +2 -3
  54. package/dist/sdk-hooks.js +5 -5
  55. package/dist/styles.css +4787 -69
  56. package/dist/template-card-BAtvcAkU.d.ts +18 -0
  57. package/dist/terminal.d.ts +3 -1
  58. package/dist/terminal.js +66 -32
  59. package/dist/tokens.css +289 -237
  60. package/dist/{usage-chart-XCoB_7Xu.d.ts → usage-chart-SSiOgeQI.d.ts} +3 -1
  61. package/dist/{use-pty-session-COzVkhtc.d.ts → use-pty-session-0AOuwXgq.d.ts} +2 -0
  62. package/dist/{index-BT_-ecpc.d.ts → variant-list-CsS6ydgm.d.ts} +16 -7
  63. package/dist/workspace.d.ts +2 -2
  64. package/dist/workspace.js +13 -13
  65. package/package.json +18 -3
  66. package/tailwind.config.cjs +3 -2
  67. package/dist/chunk-3HW53XTH.js +0 -228
  68. package/dist/chunk-OKCIKTXQ.js +0 -63
@@ -23,16 +23,16 @@ function ArtifactPane({
23
23
  "section",
24
24
  {
25
25
  className: cn(
26
- "flex h-full min-h-0 flex-col overflow-hidden rounded-[var(--radius-xl)] bg-[linear-gradient(180deg,rgba(255,255,255,0.02),transparent_18%),var(--bg-dark)] text-[var(--text-primary)]",
26
+ "flex h-full min-h-0 flex-col overflow-hidden bg-background text-foreground",
27
27
  className
28
28
  ),
29
29
  children: [
30
- /* @__PURE__ */ jsxs("header", { className: "border-b border-[var(--border-subtle)] bg-[radial-gradient(circle_at_top_left,rgba(98,114,243,0.12),transparent_34%),linear-gradient(180deg,rgba(255,255,255,0.04),transparent)]", children: [
31
- /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-3 px-4 py-3", children: [
30
+ /* @__PURE__ */ jsxs("header", { className: "border-b border-border bg-muted/10", children: [
31
+ /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-3 px-3 py-2", children: [
32
32
  /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
33
- eyebrow && /* @__PURE__ */ jsx("div", { className: "mb-1 inline-flex max-w-full items-center rounded-full border border-[var(--border-accent)] bg-[var(--brand-cool)]/10 px-2.5 py-1 text-[10px] font-semibold uppercase tracking-[0.16em] text-[var(--brand-cool)]", children: eyebrow }),
34
- /* @__PURE__ */ jsx("div", { className: "min-w-0 text-[15px] font-semibold text-[var(--text-primary)]", children: title }),
35
- (subtitle || meta) && /* @__PURE__ */ jsxs("div", { className: "mt-1 flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1 text-xs leading-relaxed text-[var(--text-muted)]", children: [
33
+ eyebrow && /* @__PURE__ */ jsx("div", { className: "mb-1 inline-flex max-w-full items-center px-1 py-0.5 text-[10px] font-bold uppercase tracking-wider text-muted-foreground", children: eyebrow }),
34
+ /* @__PURE__ */ jsx("div", { className: "min-w-0 text-[13px] font-medium text-foreground", children: title }),
35
+ (subtitle || meta) && /* @__PURE__ */ jsxs("div", { className: "mt-1 flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1 text-xs leading-relaxed text-muted-foreground", children: [
36
36
  subtitle && /* @__PURE__ */ jsx("span", { className: "truncate", children: subtitle }),
37
37
  meta && /* @__PURE__ */ jsx("span", { className: "flex items-center gap-2", children: meta })
38
38
  ] })
@@ -40,10 +40,10 @@ function ArtifactPane({
40
40
  headerActions && /* @__PURE__ */ jsx("div", { className: "flex shrink-0 items-center gap-1.5", children: headerActions })
41
41
  ] }),
42
42
  tabs,
43
- toolbar && /* @__PURE__ */ jsx("div", { className: "border-t border-[var(--border-subtle)] px-3 py-2", children: toolbar })
43
+ toolbar && /* @__PURE__ */ jsx("div", { className: "border-t border-border px-3 py-2", children: toolbar })
44
44
  ] }),
45
45
  /* @__PURE__ */ jsx("div", { className: cn("min-h-0 flex-1 overflow-auto", contentClassName), children: hasContent ? children : emptyState ? /* @__PURE__ */ jsx("div", { className: "flex h-full items-center justify-center p-6", children: emptyState }) : null }),
46
- footer && /* @__PURE__ */ jsx("footer", { className: "shrink-0 border-t border-[var(--border-subtle)] bg-[var(--bg-card)] px-3 py-2", children: footer })
46
+ footer && /* @__PURE__ */ jsx("footer", { className: "shrink-0 border-t border-border bg-card px-3 py-2", children: footer })
47
47
  ]
48
48
  }
49
49
  );
@@ -2,24 +2,24 @@ import {
2
2
  useAutoScroll,
3
3
  useRunCollapseState,
4
4
  useRunGroups
5
- } from "./chunk-CNWVHQFY.js";
5
+ } from "./chunk-54SQQMMM.js";
6
6
  import {
7
7
  InlineThinkingItem,
8
8
  RunGroup
9
- } from "./chunk-ZMWWE5RF.js";
9
+ } from "./chunk-EXSOPXIY.js";
10
10
  import {
11
11
  ToolCallGroup,
12
12
  ToolCallStep
13
- } from "./chunk-MJUDMVRU.js";
13
+ } from "./chunk-MT5FJ3ZT.js";
14
14
  import {
15
15
  getToolDisplayMetadata
16
16
  } from "./chunk-BX6AQMUS.js";
17
17
  import {
18
18
  OpenUIArtifactRenderer
19
- } from "./chunk-OVNLOE3Y.js";
19
+ } from "./chunk-PLTZB5BC.js";
20
20
  import {
21
21
  Markdown
22
- } from "./chunk-3HW53XTH.js";
22
+ } from "./chunk-T7HMZEVO.js";
23
23
  import {
24
24
  cn
25
25
  } from "./chunk-RQHJBTEU.js";
@@ -31,11 +31,11 @@ var UserMessage = memo(({ message, parts, actions }) => {
31
31
  const textContent = parts.filter((p) => p.type === "text").map((p) => p.text).join("\n");
32
32
  if (!textContent.trim()) return null;
33
33
  return /* @__PURE__ */ jsx("div", { className: "flex justify-end", children: /* @__PURE__ */ jsxs("div", { className: "flex max-w-[82%] flex-col items-end gap-2", children: [
34
- /* @__PURE__ */ jsxs("div", { className: "w-full rounded-[var(--radius-xl)] rounded-br-[var(--radius-sm)] border border-[var(--border-accent)] bg-[var(--depth-3)] px-4 py-3.5", children: [
35
- /* @__PURE__ */ jsx("div", { className: "mb-1.5 text-[11px] font-semibold uppercase tracking-[0.14em] text-[var(--brand-cool)]", children: "You" }),
36
- /* @__PURE__ */ jsx("div", { className: "text-[15px] leading-7 text-[var(--text-primary)]", children: /* @__PURE__ */ jsx(Markdown, { className: "tangle-prose", children: textContent }) })
34
+ /* @__PURE__ */ jsxs("div", { className: "w-full rounded-[var(--radius-xl)] rounded-br-[var(--radius-sm)] border border-border bg-muted/50 px-4 py-3.5", children: [
35
+ /* @__PURE__ */ jsx("div", { className: "mb-1.5 text-[11px] font-semibold uppercase tracking-[0.14em] text-primary", children: "You" }),
36
+ /* @__PURE__ */ jsx("div", { className: "text-[15px] leading-7 text-foreground", children: /* @__PURE__ */ jsx(Markdown, { className: "tangle-prose", children: textContent }) })
37
37
  ] }),
38
- actions ? /* @__PURE__ */ jsx("div", { className: "flex flex-wrap items-center justify-end gap-1.5 text-xs text-[var(--text-muted)]", children: actions }) : null
38
+ actions ? /* @__PURE__ */ jsx("div", { className: "flex flex-wrap items-center justify-end gap-1.5 text-xs text-muted-foreground", children: actions }) : null
39
39
  ] }) });
40
40
  });
41
41
  UserMessage.displayName = "UserMessage";
@@ -98,11 +98,11 @@ function ThinkingIndicator({ className }) {
98
98
  }, []);
99
99
  return /* @__PURE__ */ jsxs2("div", { className: cn("flex items-center gap-2 px-3 py-1.5", className), children: [
100
100
  /* @__PURE__ */ jsxs2("div", { className: "flex gap-[3px]", children: [
101
- /* @__PURE__ */ jsx3("span", { className: "h-1 w-1 animate-bounce rounded-full bg-[var(--brand-glow)]", style: { animationDelay: "0ms" } }),
102
- /* @__PURE__ */ jsx3("span", { className: "h-1 w-1 animate-bounce rounded-full bg-[var(--brand-glow)]", style: { animationDelay: "150ms" } }),
103
- /* @__PURE__ */ jsx3("span", { className: "h-1 w-1 animate-bounce rounded-full bg-[var(--brand-glow)]", style: { animationDelay: "300ms" } })
101
+ /* @__PURE__ */ jsx3("span", { className: "h-[var(--indicator-dot-size)] w-[var(--indicator-dot-size)] animate-bounce rounded-full bg-[var(--brand-glow)]", style: { animationDelay: "0ms" } }),
102
+ /* @__PURE__ */ jsx3("span", { className: "h-[var(--indicator-dot-size)] w-[var(--indicator-dot-size)] animate-bounce rounded-full bg-[var(--brand-glow)]", style: { animationDelay: "150ms" } }),
103
+ /* @__PURE__ */ jsx3("span", { className: "h-[var(--indicator-dot-size)] w-[var(--indicator-dot-size)] animate-bounce rounded-full bg-[var(--brand-glow)]", style: { animationDelay: "300ms" } })
104
104
  ] }),
105
- elapsed > 3 && /* @__PURE__ */ jsxs2("span", { className: "text-[11px] tabular-nums text-[var(--text-dim)]", children: [
105
+ elapsed > 3 && /* @__PURE__ */ jsxs2("span", { className: "text-[var(--font-size-xs)] tabular-nums text-[var(--text-dim)]", children: [
106
106
  elapsed,
107
107
  "s"
108
108
  ] })
@@ -121,8 +121,8 @@ import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
121
121
  var TONE_STYLES = {
122
122
  default: {
123
123
  dot: "bg-[var(--border-hover)]",
124
- card: "border-[var(--border-subtle)] bg-[var(--bg-card)]",
125
- text: "text-[var(--text-secondary)]",
124
+ card: "border-border bg-card",
125
+ text: "text-foreground",
126
126
  icon: CircleDot
127
127
  },
128
128
  info: {
@@ -156,25 +156,25 @@ function formatTime(date) {
156
156
  function AgentTimelineRow({ isLast, accentClassName, children }) {
157
157
  return /* @__PURE__ */ jsxs3("div", { className: "grid grid-cols-[1.25rem_minmax(0,1fr)] gap-x-4", children: [
158
158
  /* @__PURE__ */ jsxs3("div", { className: "relative flex justify-center", children: [
159
- !isLast && /* @__PURE__ */ jsx4("span", { className: "absolute top-4 bottom-[-0.75rem] left-1/2 w-px -translate-x-1/2 bg-[var(--border-subtle)]" }),
160
- /* @__PURE__ */ jsx4("span", { className: cn("relative mt-2 h-2.5 w-2.5 rounded-full ring-4 ring-[var(--bg-root)]", accentClassName) })
159
+ !isLast && /* @__PURE__ */ jsx4("span", { className: "absolute top-4 bottom-[-0.75rem] left-1/2 w-px -translate-x-1/2 bg-border" }),
160
+ /* @__PURE__ */ jsx4("span", { className: cn("relative mt-2 h-[var(--timeline-dot-size)] w-[var(--timeline-dot-size)] rounded-full ring-4 ring-[var(--bg-root)]", accentClassName) })
161
161
  ] }),
162
162
  /* @__PURE__ */ jsx4("div", { className: "min-w-0 pb-3", children })
163
163
  ] });
164
164
  }
165
165
  function UserMessage2({ item }) {
166
- return /* @__PURE__ */ jsx4("div", { className: "mb-3 flex justify-end", children: /* @__PURE__ */ jsx4("div", { className: "max-w-[72%]", children: /* @__PURE__ */ jsxs3("div", { className: "rounded-2xl border border-[var(--border-accent)] bg-[var(--depth-3)] px-4 py-3", children: [
167
- item.timestamp && /* @__PURE__ */ jsx4("div", { className: "mb-1.5 text-right text-[11px] text-[var(--text-muted)]", children: formatTime(item.timestamp) }),
168
- /* @__PURE__ */ jsx4("div", { className: "whitespace-pre-wrap text-[15px] leading-7 text-[var(--text-primary)]", children: item.content })
166
+ return /* @__PURE__ */ jsx4("div", { className: "mb-3 flex justify-end", children: /* @__PURE__ */ jsx4("div", { className: "max-w-[72%]", children: /* @__PURE__ */ jsxs3("div", { className: "rounded-2xl border border-border bg-muted/50 px-4 py-3", children: [
167
+ item.timestamp && /* @__PURE__ */ jsx4("div", { className: "mb-1.5 text-right text-[var(--font-size-xs)] text-muted-foreground", children: formatTime(item.timestamp) }),
168
+ /* @__PURE__ */ jsx4("div", { className: "whitespace-pre-wrap text-[var(--font-size-base)] leading-[var(--line-height-base)] text-foreground", children: item.content })
169
169
  ] }) }) });
170
170
  }
171
171
  function AssistantMessage({ item }) {
172
172
  return /* @__PURE__ */ jsxs3("div", { className: "-mt-0.5", children: [
173
- item.timestamp && /* @__PURE__ */ jsx4("div", { className: "mb-2 text-[11px] text-[var(--text-muted)]", children: formatTime(item.timestamp) }),
174
- item.content && /* @__PURE__ */ jsx4(Markdown, { className: "tangle-prose text-[15px] leading-7", children: item.content }),
175
- item.isStreaming && /* @__PURE__ */ jsx4("span", { className: "ml-0.5 inline-block h-4 w-2 animate-pulse rounded-sm bg-[var(--brand-cool)] align-text-bottom" }),
173
+ item.timestamp && /* @__PURE__ */ jsx4("div", { className: "mb-2 text-[var(--font-size-xs)] text-muted-foreground", children: formatTime(item.timestamp) }),
174
+ item.content && /* @__PURE__ */ jsx4(Markdown, { className: "tangle-prose text-[var(--font-size-base)] leading-[var(--line-height-base)]", children: item.content }),
175
+ item.isStreaming && /* @__PURE__ */ jsx4("span", { className: "ml-0.5 inline-block h-4 w-2 animate-pulse rounded-sm bg-primary align-text-bottom" }),
176
176
  item.toolCalls && /* @__PURE__ */ jsx4("div", { className: "mt-3", children: item.toolCalls }),
177
- item.after && /* @__PURE__ */ jsx4("div", { className: "mt-3 border-t border-[var(--border-subtle)] pt-3", children: item.after })
177
+ item.after && /* @__PURE__ */ jsx4("div", { className: "mt-3 border-t border-border pt-3", children: item.after })
178
178
  ] });
179
179
  }
180
180
  function StatusCard({ item }) {
@@ -184,18 +184,18 @@ function StatusCard({ item }) {
184
184
  /* @__PURE__ */ jsx4(Icon, { className: cn("mt-0.5 h-4 w-4 shrink-0", tone.text) }),
185
185
  /* @__PURE__ */ jsxs3("div", { className: "min-w-0", children: [
186
186
  /* @__PURE__ */ jsx4("div", { className: cn("text-sm font-medium", tone.text), children: item.label }),
187
- item.detail && /* @__PURE__ */ jsx4("div", { className: "mt-0.5 text-sm text-[var(--text-muted)]", children: item.detail })
187
+ item.detail && /* @__PURE__ */ jsx4("div", { className: "mt-0.5 text-sm text-muted-foreground", children: item.detail })
188
188
  ] })
189
189
  ] }) });
190
190
  }
191
191
  function ArtifactCard({ item }) {
192
192
  const tone = TONE_STYLES[item.tone ?? "default"];
193
193
  const content = /* @__PURE__ */ jsx4("div", { className: cn("rounded-[var(--radius-lg)] border px-4 py-3", tone.card), children: /* @__PURE__ */ jsxs3("div", { className: "flex items-start gap-3", children: [
194
- /* @__PURE__ */ jsx4("div", { className: "mt-0.5 flex h-8 w-8 shrink-0 items-center justify-center rounded-[var(--radius-md)] bg-[var(--bg-elevated)] text-[var(--text-secondary)]", children: item.icon ?? /* @__PURE__ */ jsx4(FileText, { className: "h-4 w-4" }) }),
194
+ /* @__PURE__ */ jsx4("div", { className: "mt-0.5 flex h-[var(--avatar-size)] w-[var(--avatar-size)] shrink-0 items-center justify-center rounded-[var(--radius-md)] bg-muted/50 text-foreground", children: item.icon ?? /* @__PURE__ */ jsx4(FileText, { className: "h-4 w-4" }) }),
195
195
  /* @__PURE__ */ jsxs3("div", { className: "min-w-0 flex-1", children: [
196
- /* @__PURE__ */ jsx4("div", { className: "text-sm font-medium text-[var(--text-primary)]", children: item.title }),
197
- item.description && /* @__PURE__ */ jsx4("div", { className: "mt-1 text-sm text-[var(--text-muted)]", children: item.description }),
198
- item.meta && /* @__PURE__ */ jsx4("div", { className: "mt-2 flex flex-wrap items-center gap-2 text-xs text-[var(--text-muted)]", children: item.meta })
196
+ /* @__PURE__ */ jsx4("div", { className: "text-sm font-medium text-foreground", children: item.title }),
197
+ item.description && /* @__PURE__ */ jsx4("div", { className: "mt-1 text-sm text-muted-foreground", children: item.description }),
198
+ item.meta && /* @__PURE__ */ jsx4("div", { className: "mt-2 flex flex-wrap items-center gap-2 text-xs text-muted-foreground", children: item.meta })
199
199
  ] }),
200
200
  item.action && /* @__PURE__ */ jsx4("div", { className: "shrink-0", children: item.action })
201
201
  ] }) });
@@ -212,7 +212,7 @@ function ArtifactCard({ item }) {
212
212
  item.onClick?.();
213
213
  }
214
214
  },
215
- className: "block w-full text-left transition-transform hover:-translate-y-0.5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--brand-cool)]/60",
215
+ className: "block w-full text-left transition-transform hover:-translate-y-0.5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/60",
216
216
  children: content
217
217
  }
218
218
  );
@@ -309,7 +309,11 @@ function ChatInput({
309
309
  accept,
310
310
  dropTitle = "Drop files to add context",
311
311
  dropDescription = "Files will be attached to your next message.",
312
- className
312
+ className,
313
+ inputLabel = "Agent Command Deck",
314
+ idleStatus = "Ready for next instruction",
315
+ streamingStatus = "Streaming response",
316
+ hideShortcutHint
313
317
  }) {
314
318
  const [value, setValue] = useState2("");
315
319
  const [dragOver, setDragOver] = useState2(false);
@@ -398,10 +402,10 @@ function ChatInput({
398
402
  onDragOver: onAttach ? handleDragOver : void 0,
399
403
  onDrop: onAttach ? handleDrop : void 0,
400
404
  children: [
401
- dragOver && /* @__PURE__ */ jsx5("div", { className: "absolute inset-0 z-10 flex items-center justify-center rounded-[var(--radius-xl)] border-2 border-dashed border-[var(--border-accent)] bg-[var(--depth-2)] pointer-events-none", children: /* @__PURE__ */ jsxs4("div", { className: "text-center", children: [
402
- /* @__PURE__ */ jsx5("div", { className: "mx-auto mb-3 flex h-12 w-12 items-center justify-center rounded-xl bg-[var(--accent-surface-soft)]", children: /* @__PURE__ */ jsx5(Upload, { className: "h-6 w-6 text-[var(--brand-cool)]" }) }),
403
- /* @__PURE__ */ jsx5("p", { className: "text-sm font-semibold text-[var(--text-primary)]", children: dropTitle }),
404
- /* @__PURE__ */ jsx5("p", { className: "mt-1 text-xs text-[var(--text-muted)]", children: dropDescription })
405
+ dragOver && /* @__PURE__ */ jsx5("div", { className: "absolute inset-0 z-10 flex items-center justify-center rounded-[var(--radius-xl)] border-2 border-dashed border-border bg-card pointer-events-none", children: /* @__PURE__ */ jsxs4("div", { className: "text-center", children: [
406
+ /* @__PURE__ */ jsx5("div", { className: "mx-auto mb-3 flex h-12 w-12 items-center justify-center rounded-xl bg-[var(--accent-surface-soft)]", children: /* @__PURE__ */ jsx5(Upload, { className: "h-6 w-6 text-primary" }) }),
407
+ /* @__PURE__ */ jsx5("p", { className: "text-sm font-semibold text-foreground", children: dropTitle }),
408
+ /* @__PURE__ */ jsx5("p", { className: "mt-1 text-xs text-muted-foreground", children: dropDescription })
405
409
  ] }) }),
406
410
  pendingFiles.length > 0 && /* @__PURE__ */ jsxs4("div", { className: "mb-3 flex flex-wrap gap-2", children: [
407
411
  folderChips.map((f) => /* @__PURE__ */ jsxs4(
@@ -409,26 +413,26 @@ function ChatInput({
409
413
  {
410
414
  className: cn(
411
415
  "inline-flex items-center gap-1.5 rounded-[var(--radius-full)] border px-3 py-1.5 text-xs",
412
- "border-[var(--border-subtle)] bg-[var(--depth-3)]",
416
+ "border-border bg-muted/50",
413
417
  f.status === "error" && "border-[var(--code-error)]/30 text-[var(--code-error)]",
414
- f.status !== "error" && "text-[var(--text-secondary)]"
418
+ f.status !== "error" && "text-foreground"
415
419
  ),
416
420
  children: [
417
421
  /* @__PURE__ */ jsx5(FolderUp, { className: "h-3 w-3 shrink-0" }),
418
422
  /* @__PURE__ */ jsx5("span", { className: "truncate max-w-[150px]", children: f.name }),
419
- f.fileCount !== void 0 && /* @__PURE__ */ jsxs4("span", { className: "text-[var(--text-muted)]", children: [
423
+ f.fileCount !== void 0 && /* @__PURE__ */ jsxs4("span", { className: "text-muted-foreground", children: [
420
424
  "(",
421
425
  f.fileCount,
422
426
  ")"
423
427
  ] }),
424
- f.status === "uploading" && /* @__PURE__ */ jsx5("span", { className: "w-3 h-3 border-2 border-[var(--brand-cool)] border-t-transparent rounded-full animate-spin" }),
428
+ f.status === "uploading" && /* @__PURE__ */ jsx5("span", { className: "w-3 h-3 border-2 border-primary border-t-transparent rounded-full animate-spin" }),
425
429
  onRemoveFile && /* @__PURE__ */ jsx5(
426
430
  "button",
427
431
  {
428
432
  type: "button",
429
433
  "aria-label": `Remove ${f.name}`,
430
434
  onClick: () => onRemoveFile(f.id),
431
- className: "rounded p-0.5 transition-colors hover:text-[var(--text-primary)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--brand-cool)]/60",
435
+ className: "rounded p-0.5 transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/60",
432
436
  children: /* @__PURE__ */ jsx5(X, { className: "h-3 w-3" })
433
437
  }
434
438
  )
@@ -441,21 +445,21 @@ function ChatInput({
441
445
  {
442
446
  className: cn(
443
447
  "inline-flex items-center gap-1.5 rounded-[var(--radius-full)] border px-3 py-1.5 text-xs",
444
- "border-[var(--border-subtle)] bg-[var(--depth-3)]",
448
+ "border-border bg-muted/50",
445
449
  f.status === "error" && "border-[var(--code-error)]/30 text-[var(--code-error)]",
446
- f.status !== "error" && "text-[var(--text-secondary)]"
450
+ f.status !== "error" && "text-foreground"
447
451
  ),
448
452
  children: [
449
453
  /* @__PURE__ */ jsx5(Paperclip, { className: "h-3 w-3 shrink-0" }),
450
454
  /* @__PURE__ */ jsx5("span", { className: "truncate max-w-[150px]", children: f.name }),
451
- f.status === "uploading" && /* @__PURE__ */ jsx5("span", { className: "w-3 h-3 border-2 border-[var(--brand-cool)] border-t-transparent rounded-full animate-spin" }),
455
+ f.status === "uploading" && /* @__PURE__ */ jsx5("span", { className: "w-3 h-3 border-2 border-primary border-t-transparent rounded-full animate-spin" }),
452
456
  onRemoveFile && /* @__PURE__ */ jsx5(
453
457
  "button",
454
458
  {
455
459
  type: "button",
456
460
  "aria-label": `Remove ${f.name}`,
457
461
  onClick: () => onRemoveFile(f.id),
458
- className: "rounded p-0.5 transition-colors hover:text-[var(--text-primary)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--brand-cool)]/60",
462
+ className: "rounded p-0.5 transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/60",
459
463
  children: /* @__PURE__ */ jsx5(X, { className: "h-3 w-3" })
460
464
  }
461
465
  )
@@ -464,10 +468,10 @@ function ChatInput({
464
468
  f.id
465
469
  ))
466
470
  ] }),
467
- /* @__PURE__ */ jsx5("div", { className: "rounded-[var(--radius-xl)] border border-[var(--border-default)] bg-[var(--depth-2)] shadow-[var(--shadow-card)]", children: /* @__PURE__ */ jsxs4("div", { className: "rounded-[var(--radius-xl)] px-3 py-[var(--chat-input-py)] transition-colors focus-within:border-[var(--border-accent)]", children: [
468
- /* @__PURE__ */ jsxs4("div", { className: "mb-1.5 flex items-center justify-between gap-3 px-1", children: [
469
- /* @__PURE__ */ jsx5("div", { className: "text-[11px] font-semibold uppercase tracking-[0.16em] text-[var(--text-muted)]", children: "Agent Command Deck" }),
470
- /* @__PURE__ */ jsx5("div", { className: "text-[11px] text-[var(--text-muted)]", children: isStreaming ? "Streaming response" : "Ready for next instruction" })
471
+ /* @__PURE__ */ jsx5("div", { className: "rounded-[var(--radius-xl)] border border-[var(--chat-input-border,var(--border-default))] [background:var(--chat-input-bg,var(--depth-2))] shadow-[var(--chat-input-shadow,var(--shadow-card))] transition-all focus-within:border-[var(--chat-input-focus-border,var(--border-accent))] focus-within:shadow-[var(--chat-input-focus-shadow,var(--shadow-card))]", children: /* @__PURE__ */ jsxs4("div", { className: "rounded-[var(--radius-xl)] px-3 py-[var(--chat-input-py)]", children: [
472
+ (inputLabel !== null || idleStatus !== null || streamingStatus !== null) && /* @__PURE__ */ jsxs4("div", { className: "mb-1.5 flex items-center justify-between gap-3 px-1", children: [
473
+ inputLabel !== null && /* @__PURE__ */ jsx5("div", { className: "text-[var(--chat-label-size,11px)] font-[var(--chat-label-weight,600)] uppercase tracking-[var(--chat-label-tracking,0.16em)] text-[var(--text-muted)]", children: inputLabel }),
474
+ (idleStatus !== null || streamingStatus !== null) && /* @__PURE__ */ jsx5("div", { className: "text-[var(--chat-label-size,11px)] text-[var(--text-muted)]", children: isStreaming ? streamingStatus ?? "" : idleStatus ?? "" })
471
475
  ] }),
472
476
  /* @__PURE__ */ jsxs4("div", { className: "flex items-end gap-2", children: [
473
477
  onAttach && /* @__PURE__ */ jsxs4(Fragment, { children: [
@@ -479,7 +483,7 @@ function ChatInput({
479
483
  disabled: isStreaming,
480
484
  "aria-label": "Attach files",
481
485
  title: "Attach files",
482
- className: "mb-0.5 shrink-0 rounded-[var(--radius-md)] border border-transparent p-2 text-[var(--text-muted)] transition-colors hover:border-[var(--border-subtle)] hover:bg-[var(--bg-hover)] hover:text-[var(--text-secondary)] disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--brand-cool)]/60",
486
+ className: "mb-0.5 shrink-0 rounded-[var(--radius-md)] border border-transparent p-2 text-muted-foreground transition-colors hover:border-border hover:bg-accent hover:text-foreground disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/60",
483
487
  children: /* @__PURE__ */ jsx5(Paperclip, { className: "h-4 w-4" })
484
488
  }
485
489
  ),
@@ -504,7 +508,7 @@ function ChatInput({
504
508
  disabled: isStreaming,
505
509
  "aria-label": "Attach folder",
506
510
  title: "Attach folder",
507
- className: "mb-0.5 shrink-0 rounded-[var(--radius-md)] border border-transparent p-2 text-[var(--text-muted)] transition-colors hover:border-[var(--border-subtle)] hover:bg-[var(--bg-hover)] hover:text-[var(--text-secondary)] disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--brand-cool)]/60",
511
+ className: "mb-0.5 shrink-0 rounded-[var(--radius-md)] border border-transparent p-2 text-muted-foreground transition-colors hover:border-border hover:bg-accent hover:text-foreground disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/60",
508
512
  children: /* @__PURE__ */ jsx5(FolderUp, { className: "h-4 w-4" })
509
513
  }
510
514
  ),
@@ -531,7 +535,7 @@ function ChatInput({
531
535
  disabled: isStreaming || disabled,
532
536
  rows: 1,
533
537
  "aria-label": "Message input",
534
- className: "min-h-[32px] max-h-[120px] flex-1 resize-none bg-transparent text-[14px] leading-6 text-[var(--text-primary)] placeholder:text-[var(--text-muted)] disabled:opacity-50 focus-visible:outline-none"
538
+ className: "min-h-[32px] max-h-[120px] flex-1 resize-none bg-transparent text-[14px] leading-6 text-foreground placeholder:text-muted-foreground disabled:opacity-50 focus-visible:outline-none"
535
539
  }
536
540
  ),
537
541
  isStreaming ? /* @__PURE__ */ jsx5(
@@ -550,29 +554,29 @@ function ChatInput({
550
554
  onClick: handleSend,
551
555
  disabled: !value.trim() || disabled,
552
556
  "aria-label": "Send message",
553
- className: "mb-0.5 shrink-0 rounded-[var(--radius-lg)] border border-[var(--border-accent)] bg-[var(--accent-surface-soft)] p-2.5 text-[var(--accent-text)] transition-colors hover:translate-y-[-1px] hover:bg-[var(--accent-surface-strong)] disabled:opacity-30 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--border-accent)]",
557
+ className: "mb-0.5 shrink-0 rounded-[var(--chat-send-radius,var(--radius-lg))] border border-[var(--chat-send-border,var(--border-accent))] [background:var(--chat-send-bg,var(--accent-surface-soft))] p-2.5 text-[var(--chat-send-color,var(--accent-text))] shadow-[var(--chat-send-shadow,none)] transition-all hover:translate-y-[-1px] hover:[background:var(--chat-send-hover-bg,var(--accent-surface-strong))] disabled:opacity-30 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--chat-send-ring,var(--border-accent))]",
554
558
  children: /* @__PURE__ */ jsx5(Send, { className: "h-4 w-4" })
555
559
  }
556
560
  )
557
561
  ] })
558
562
  ] }) }),
559
- /* @__PURE__ */ jsxs4("div", { className: "mt-2 flex items-center justify-between px-1", children: [
563
+ (modelLabel || !hideShortcutHint) && /* @__PURE__ */ jsxs4("div", { className: "mt-2 flex items-center justify-between px-1", children: [
560
564
  /* @__PURE__ */ jsx5("div", { className: "flex items-center gap-2", children: modelLabel && /* @__PURE__ */ jsxs4(
561
565
  "button",
562
566
  {
563
567
  type: "button",
564
568
  onClick: onModelClick,
565
569
  "aria-label": `Select model, current model ${modelLabel}`,
566
- className: "inline-flex items-center gap-1.5 rounded-[var(--radius-full)] border border-[var(--border-subtle)] bg-[linear-gradient(180deg,rgba(255,255,255,0.04),transparent)] px-2.5 py-1 text-xs text-[var(--text-muted)] transition-colors hover:border-[var(--border-accent)] hover:text-[var(--text-secondary)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--brand-cool)]/60",
570
+ className: "inline-flex items-center gap-1.5 rounded-[var(--radius-full)] border border-border bg-[linear-gradient(180deg,rgba(255,255,255,0.04),transparent)] px-2.5 py-1 text-xs text-muted-foreground transition-colors hover:border-primary/20 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/60",
567
571
  children: [
568
572
  /* @__PURE__ */ jsx5("span", { className: "w-1.5 h-1.5 rounded-full bg-[var(--code-success)]" }),
569
573
  modelLabel
570
574
  ]
571
575
  }
572
576
  ) }),
573
- /* @__PURE__ */ jsxs4("span", { className: "text-xs text-[var(--text-muted)]", children: [
574
- /* @__PURE__ */ jsx5("kbd", { className: "px-1 py-0.5 bg-[var(--bg-input)] rounded border border-[var(--border-subtle)] text-[10px]", children: "Cmd" }),
575
- /* @__PURE__ */ jsx5("kbd", { className: "px-1 py-0.5 bg-[var(--bg-input)] rounded border border-[var(--border-subtle)] text-[10px] ml-0.5", children: "L" }),
577
+ !hideShortcutHint && /* @__PURE__ */ jsxs4("span", { className: "text-xs text-muted-foreground", children: [
578
+ /* @__PURE__ */ jsx5("kbd", { className: "px-1 py-0.5 bg-background rounded border border-border text-[10px]", children: "Cmd" }),
579
+ /* @__PURE__ */ jsx5("kbd", { className: "px-1 py-0.5 bg-background rounded border border-border text-[10px] ml-0.5", children: "L" }),
576
580
  /* @__PURE__ */ jsx5("span", { className: "ml-1", children: "to focus" })
577
581
  ] })
578
582
  ] })
@@ -739,7 +743,7 @@ function buildTimelineItems(messages, partMap, isStreaming, onOpenUIAction, enab
739
743
  items.push({
740
744
  id: `${message.id}-openui-${part.id}`,
741
745
  kind: "custom",
742
- content: /* @__PURE__ */ jsx6("div", { className: "my-2 rounded-[var(--radius-lg)] border border-[var(--border-subtle)] bg-[var(--bg-card)] p-4 shadow-[var(--shadow-card)]", children: /* @__PURE__ */ jsx6(OpenUIArtifactRenderer, { schema, onAction: onOpenUIAction }) })
746
+ content: /* @__PURE__ */ jsx6("div", { className: "my-2 rounded-[var(--radius-lg)] border border-border bg-card p-4 shadow-[var(--shadow-card)]", children: /* @__PURE__ */ jsx6(OpenUIArtifactRenderer, { schema, onAction: onOpenUIAction }) })
743
747
  });
744
748
  }
745
749
  }
@@ -771,7 +775,7 @@ function buildTimelineItems(messages, partMap, isStreaming, onOpenUIAction, enab
771
775
  items.push({
772
776
  id: `${itemId}-openui`,
773
777
  kind: "custom",
774
- content: /* @__PURE__ */ jsx6("div", { className: "my-2 rounded-[var(--radius-lg)] border border-[var(--border-subtle)] bg-[var(--bg-card)] p-4 shadow-[var(--shadow-card)]", children: /* @__PURE__ */ jsx6(OpenUIArtifactRenderer, { schema, onAction: onOpenUIAction }) })
778
+ content: /* @__PURE__ */ jsx6("div", { className: "my-2 rounded-[var(--radius-lg)] border border-border bg-card p-4 shadow-[var(--shadow-card)]", children: /* @__PURE__ */ jsx6(OpenUIArtifactRenderer, { schema, onAction: onOpenUIAction }) })
775
779
  });
776
780
  const afterJson = part.text.slice(part.text.lastIndexOf("```") + 3).trim();
777
781
  if (afterJson) {
@@ -863,9 +867,9 @@ var ChatContainer = memo3(
863
867
  {
864
868
  ref: scrollRef,
865
869
  className: "flex-1 overflow-y-auto px-4 py-2 [scrollbar-gutter:stable]",
866
- children: messages.length === 0 ? /* @__PURE__ */ jsx6("div", { className: "flex h-full items-center justify-center", children: /* @__PURE__ */ jsxs5("div", { className: "max-w-md rounded-[var(--radius-xl)] border border-[var(--border-subtle)] bg-[linear-gradient(180deg,rgba(255,255,255,0.03),transparent)] px-5 py-5 text-center shadow-[var(--shadow-card)]", children: [
867
- /* @__PURE__ */ jsx6("div", { className: "text-sm font-semibold text-[var(--text-primary)]", children: "Start the filing workflow" }),
868
- /* @__PURE__ */ jsx6("div", { className: "mt-2 text-sm leading-relaxed text-[var(--text-muted)]", children: "Ask the agent to analyze documents, generate forms, explain a calculation, or review the current filing package." })
870
+ children: messages.length === 0 ? /* @__PURE__ */ jsx6("div", { className: "flex h-full items-center justify-center", children: /* @__PURE__ */ jsxs5("div", { className: "max-w-md rounded-[var(--radius-xl)] border border-border bg-[linear-gradient(180deg,rgba(255,255,255,0.03),transparent)] px-5 py-5 text-center shadow-[var(--shadow-card)]", children: [
871
+ /* @__PURE__ */ jsx6("div", { className: "text-sm font-semibold text-foreground", children: "Start the filing workflow" }),
872
+ /* @__PURE__ */ jsx6("div", { className: "mt-2 text-sm leading-relaxed text-muted-foreground", children: "Ask the agent to analyze documents, generate forms, explain a calculation, or review the current filing package." })
869
873
  ] }) }) : presentation === "timeline" ? /* @__PURE__ */ jsx6(AgentTimeline, { items: timeline.items, isThinking: timeline.showThinking }) : /* @__PURE__ */ jsx6("div", { className: "mx-auto flex w-full max-w-5xl flex-col gap-3", children: /* @__PURE__ */ jsx6(
870
874
  MessageList,
871
875
  {
@@ -888,9 +892,9 @@ var ChatContainer = memo3(
888
892
  onClick: scrollToBottom,
889
893
  className: cn(
890
894
  "flex items-center gap-1.5 px-3 py-1.5 rounded-full",
891
- "border border-[var(--border-subtle)] bg-[var(--bg-card)] shadow-[var(--shadow-card)]",
892
- "text-xs text-[var(--text-secondary)] transition-colors hover:bg-[var(--bg-hover)]",
893
- "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--brand-cool)]/60"
895
+ "border border-border bg-card shadow-[var(--shadow-card)]",
896
+ "text-xs text-foreground transition-colors hover:bg-accent",
897
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/60"
894
898
  ),
895
899
  children: [
896
900
  /* @__PURE__ */ jsx6(ArrowDown, { className: "w-3 h-3" }),
@@ -911,7 +915,7 @@ var ChatContainer = memo3(
911
915
  onRemoveFile,
912
916
  onAttach,
913
917
  disabled,
914
- className: "shrink-0 border-t border-[var(--border-subtle)] bg-[var(--bg-dark)]"
918
+ className: "shrink-0 border-t border-border bg-background"
915
919
  }
916
920
  )
917
921
  ] });
@@ -4,28 +4,38 @@ import {
4
4
 
5
5
  // src/primitives/input.tsx
6
6
  import * as React from "react";
7
+ import { cva } from "class-variance-authority";
7
8
  import { jsx, jsxs } from "react/jsx-runtime";
9
+ var inputVariants = cva(
10
+ "flex w-full rounded-lg border bg-card px-4 py-2 text-sm transition-all duration-200 placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-offset-0 disabled:cursor-not-allowed disabled:opacity-50 file:border-0 file:bg-transparent file:font-medium file:text-sm",
11
+ {
12
+ variants: {
13
+ variant: {
14
+ default: "border-input focus:ring-ring",
15
+ sandbox: "border-border focus:border-[var(--border-accent-hover)] focus:ring-[var(--border-accent)]",
16
+ error: "border-[var(--surface-danger-border)] focus:ring-[var(--surface-danger-border)]"
17
+ },
18
+ size: {
19
+ default: "h-11",
20
+ sm: "h-9 px-3",
21
+ lg: "h-12 px-5"
22
+ }
23
+ },
24
+ defaultVariants: {
25
+ variant: "default",
26
+ size: "default"
27
+ }
28
+ }
29
+ );
8
30
  var Input = React.forwardRef(
9
- ({ className, type, variant = "default", label, error, hint, id, ...props }, ref) => {
31
+ ({ className, type, variant, size, label, error, hint, id, ...props }, ref) => {
10
32
  const inputId = id ?? label?.toLowerCase().replace(/\s+/g, "-");
11
- const variants = {
12
- default: "border-input focus:ring-ring",
13
- sandbox: "border-[var(--border-accent)] focus:border-[var(--border-accent-hover)] focus:ring-[var(--border-accent)]"
14
- };
15
33
  const input = /* @__PURE__ */ jsx(
16
34
  "input",
17
35
  {
18
36
  type,
19
37
  id: inputId,
20
- className: cn(
21
- "flex h-11 w-full rounded-lg border bg-[var(--depth-2)] px-4 py-2 text-sm transition-all duration-200",
22
- "placeholder:text-muted-foreground",
23
- "focus:outline-none focus:ring-2 focus:ring-offset-0",
24
- "disabled:cursor-not-allowed disabled:opacity-50",
25
- "file:border-0 file:bg-transparent file:font-medium file:text-sm",
26
- error ? "border-[var(--surface-danger-border)] focus:ring-[var(--surface-danger-border)]" : variants[variant],
27
- className
28
- ),
38
+ className: cn(inputVariants({ variant: error ? "error" : variant, size, className })),
29
39
  ref,
30
40
  ...props
31
41
  }
@@ -36,12 +46,12 @@ var Input = React.forwardRef(
36
46
  "label",
37
47
  {
38
48
  htmlFor: inputId,
39
- className: "block font-medium text-muted-foreground text-sm",
49
+ className: "block font-medium text-foreground text-sm",
40
50
  children: label
41
51
  }
42
52
  ),
43
53
  input,
44
- error && /* @__PURE__ */ jsx("p", { className: "text-[var(--surface-danger-text)] text-sm", children: error }),
54
+ error && /* @__PURE__ */ jsx("p", { className: "text-[var(--surface-danger-text)] text-sm font-medium", children: error }),
45
55
  hint && !error && /* @__PURE__ */ jsx("p", { className: "text-muted-foreground/70 text-sm", children: hint })
46
56
  ] });
47
57
  }
@@ -52,14 +62,14 @@ var Textarea = React.forwardRef(
52
62
  const textareaId = id ?? label?.toLowerCase().replace(/\s+/g, "-");
53
63
  const variants = {
54
64
  default: "border-input focus:ring-ring",
55
- sandbox: "border-[var(--border-accent)] focus:border-[var(--border-accent-hover)] focus:ring-[var(--border-accent)]"
65
+ sandbox: "border-border focus:border-[var(--border-accent-hover)] focus:ring-[var(--border-accent)]"
56
66
  };
57
67
  const textarea = /* @__PURE__ */ jsx(
58
68
  "textarea",
59
69
  {
60
70
  id: textareaId,
61
71
  className: cn(
62
- "flex min-h-[120px] w-full resize-y rounded-lg border bg-[var(--depth-2)] px-4 py-3 text-sm transition-all duration-200",
72
+ "flex min-h-[120px] w-full resize-y rounded-lg border bg-card px-4 py-3 text-sm transition-all duration-200",
63
73
  "placeholder:text-muted-foreground",
64
74
  "focus:outline-none focus:ring-2 focus:ring-offset-0",
65
75
  "disabled:cursor-not-allowed disabled:opacity-50",
@@ -12,13 +12,13 @@ var buttonVariants = cva(
12
12
  {
13
13
  variants: {
14
14
  variant: {
15
- default: "bg-[var(--btn-primary-bg)] text-primary-foreground shadow-[var(--shadow-accent)] hover:bg-[var(--btn-primary-hover)] active:scale-[0.97] duration-[var(--transition-fast)]",
16
- destructive: "bg-destructive/15 border border-destructive/25 text-destructive hover:bg-destructive/22 active:scale-[0.97] duration-[var(--transition-fast)]",
17
- outline: "border border-[var(--border-default)] bg-transparent hover:bg-[var(--bg-hover)] hover:border-[var(--border-hover)] active:scale-[0.97] duration-[var(--transition-fast)]",
18
- secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/70 active:scale-[0.97] duration-[var(--transition-fast)]",
19
- ghost: "hover:bg-[var(--bg-hover)] hover:text-foreground duration-[var(--transition-fast)]",
15
+ default: "bg-primary text-primary-foreground hover:bg-primary/90 active:scale-[0.97] duration-[var(--transition-fast)]",
16
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90 active:scale-[0.97] duration-[var(--transition-fast)]",
17
+ outline: "border border-border bg-card hover:bg-muted active:scale-[0.97] duration-[var(--transition-fast)] text-foreground",
18
+ secondary: "bg-muted border border-border text-foreground hover:bg-muted/80 active:scale-[0.97] duration-[var(--transition-fast)]",
19
+ ghost: "hover:bg-muted hover:text-foreground duration-[var(--transition-fast)] text-muted-foreground border border-transparent",
20
20
  link: "text-primary underline-offset-4 hover:underline",
21
- sandbox: "bg-[image:var(--accent-gradient-strong)] text-white shadow-[var(--shadow-accent)] hover:brightness-110 active:scale-[0.97] duration-[var(--transition-fast)]"
21
+ sandbox: "bg-[var(--btn-primary-bg)] text-[var(--btn-primary-text)] border border-[var(--border-accent)] hover:bg-[var(--btn-primary-hover)] active:scale-[0.97] duration-[var(--transition-fast)]"
22
22
  },
23
23
  size: {
24
24
  default: "h-[var(--control-height)] px-4 py-2",