@tangle-network/sandbox-ui 0.5.1 → 0.6.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.
package/dist/chat.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ChatMessage
3
- } from "./chunk-5CEMHKBP.js";
3
+ } from "./chunk-GW4GRAWJ.js";
4
4
  import {
5
5
  AgentTimeline,
6
6
  ChatContainer,
@@ -8,15 +8,15 @@ import {
8
8
  MessageList,
9
9
  ThinkingIndicator,
10
10
  UserMessage
11
- } from "./chunk-R3IU37AW.js";
11
+ } from "./chunk-5F3VOGCT.js";
12
12
  import "./chunk-CNWVHQFY.js";
13
- import "./chunk-WC7QTWPN.js";
13
+ import "./chunk-LY32SP6X.js";
14
14
  import "./chunk-HRMUF35V.js";
15
- import "./chunk-NTSRY4GW.js";
15
+ import "./chunk-MJUDMVRU.js";
16
16
  import "./chunk-BX6AQMUS.js";
17
- import "./chunk-VBWY44UU.js";
17
+ import "./chunk-OVNLOE3Y.js";
18
18
  import "./chunk-JP725R4W.js";
19
- import "./chunk-H5XYSFYE.js";
19
+ import "./chunk-3HW53XTH.js";
20
20
  import "./chunk-TDYQBLL5.js";
21
21
  import "./chunk-TSE423UF.js";
22
22
  import "./chunk-RQHJBTEU.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  ToolCallGroup,
3
3
  ToolCallStep
4
- } from "./chunk-NTSRY4GW.js";
4
+ } from "./chunk-MJUDMVRU.js";
5
5
  import {
6
6
  Markdown
7
- } from "./chunk-H5XYSFYE.js";
7
+ } from "./chunk-3HW53XTH.js";
8
8
  import {
9
9
  cn
10
10
  } from "./chunk-RQHJBTEU.js";
@@ -116,8 +116,8 @@ var CodeBlock = memo(
116
116
  className: cn("group relative overflow-hidden rounded-lg border font-mono", bg, className),
117
117
  ...props,
118
118
  children: [
119
- language && /* @__PURE__ */ jsxs("div", { className: cn("flex items-center justify-between border-b px-4 py-1.5", headerBg), children: [
120
- /* @__PURE__ */ jsx("span", { className: cn("text-[11px] font-mono font-medium uppercase tracking-widest", langColor), children: language }),
119
+ language && /* @__PURE__ */ jsxs("div", { className: cn("flex items-center justify-between border-b px-3 py-1", headerBg), children: [
120
+ /* @__PURE__ */ jsx("span", { className: cn("text-[10px] font-mono font-medium uppercase tracking-widest", langColor), children: language }),
121
121
  children
122
122
  ] }),
123
123
  !language && children && /* @__PURE__ */ jsx("div", { className: "absolute right-2 top-2 z-10 flex items-center gap-2 opacity-0 transition-opacity group-hover:opacity-100", children }),
@@ -134,10 +134,10 @@ var CodeBlock = memo(
134
134
  },
135
135
  customStyle: {
136
136
  margin: 0,
137
- padding: "1rem",
137
+ padding: "var(--code-padding-y, 0.625rem) var(--code-padding-x, 0.75rem)",
138
138
  background: "transparent",
139
- fontSize: "0.8125rem",
140
- lineHeight: "1.65",
139
+ fontSize: "var(--code-font-size, 0.8125rem)",
140
+ lineHeight: "var(--code-line-height, 1.5)",
141
141
  overflowX: "auto"
142
142
  },
143
143
  codeTagProps: { style: { fontFamily: "var(--font-mono, 'JetBrains Mono', ui-monospace, monospace)" } },
@@ -165,7 +165,7 @@ var CopyButton = memo(({ text }) => {
165
165
  "button",
166
166
  {
167
167
  onClick: handleCopy,
168
- className: "flex items-center justify-center w-7 h-7 rounded-md bg-[var(--bg-section)] border border-[var(--border-subtle)] hover:border-[var(--border-default)] transition-colors",
168
+ className: "flex items-center justify-center w-6 h-6 rounded-md bg-[var(--bg-section)] border border-[var(--border-subtle)] hover:border-[var(--border-default)] transition-colors",
169
169
  title: "Copy to clipboard",
170
170
  children: copied ? /* @__PURE__ */ jsx(Check, { className: "w-3.5 h-3.5 text-[var(--brand-emerald)]" }) : /* @__PURE__ */ jsx(Copy, { className: "w-3.5 h-3.5 text-[var(--text-muted)]" })
171
171
  }
@@ -6,20 +6,20 @@ import {
6
6
  import {
7
7
  InlineThinkingItem,
8
8
  RunGroup
9
- } from "./chunk-WC7QTWPN.js";
9
+ } from "./chunk-LY32SP6X.js";
10
10
  import {
11
11
  ToolCallGroup,
12
12
  ToolCallStep
13
- } from "./chunk-NTSRY4GW.js";
13
+ } from "./chunk-MJUDMVRU.js";
14
14
  import {
15
15
  getToolDisplayMetadata
16
16
  } from "./chunk-BX6AQMUS.js";
17
17
  import {
18
18
  OpenUIArtifactRenderer
19
- } from "./chunk-VBWY44UU.js";
19
+ } from "./chunk-OVNLOE3Y.js";
20
20
  import {
21
21
  Markdown
22
- } from "./chunk-H5XYSFYE.js";
22
+ } from "./chunk-3HW53XTH.js";
23
23
  import {
24
24
  cn
25
25
  } from "./chunk-RQHJBTEU.js";
@@ -96,18 +96,15 @@ function ThinkingIndicator({ className }) {
96
96
  const interval = window.setInterval(() => setElapsed((current) => current + 1), 1e3);
97
97
  return () => window.clearInterval(interval);
98
98
  }, []);
99
- return /* @__PURE__ */ jsxs2("div", { className: cn("flex gap-3 px-4 py-3", className), children: [
100
- /* @__PURE__ */ jsx3("div", { className: "mt-0.5 flex h-7 w-7 shrink-0 items-center justify-center rounded-lg bg-[var(--brand-glow)]/15 text-[var(--brand-glow)]", children: /* @__PURE__ */ jsxs2("div", { className: "flex gap-0.5", children: [
101
- /* @__PURE__ */ jsx3("span", { className: "h-1.5 w-1.5 animate-bounce rounded-full bg-current", style: { animationDelay: "0ms" } }),
102
- /* @__PURE__ */ jsx3("span", { className: "h-1.5 w-1.5 animate-bounce rounded-full bg-current", style: { animationDelay: "150ms" } }),
103
- /* @__PURE__ */ jsx3("span", { className: "h-1.5 w-1.5 animate-bounce rounded-full bg-current", style: { animationDelay: "300ms" } })
104
- ] }) }),
105
- /* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-2", children: [
106
- /* @__PURE__ */ jsx3("span", { className: "text-sm text-[var(--text-muted)]", children: elapsed < 10 ? "Thinking..." : elapsed < 60 ? "Thinking deeply..." : "Still working..." }),
107
- elapsed > 5 && /* @__PURE__ */ jsxs2("span", { className: "text-xs tabular-nums text-[var(--text-muted)]", children: [
108
- elapsed,
109
- "s"
110
- ] })
99
+ return /* @__PURE__ */ jsxs2("div", { className: cn("flex items-center gap-2 px-3 py-1.5", className), children: [
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" } })
104
+ ] }),
105
+ elapsed > 3 && /* @__PURE__ */ jsxs2("span", { className: "text-[11px] tabular-nums text-[var(--text-dim)]", children: [
106
+ elapsed,
107
+ "s"
111
108
  ] })
112
109
  ] });
113
110
  }
@@ -227,7 +224,7 @@ function AgentTimeline({
227
224
  className
228
225
  }) {
229
226
  if (items.length === 0 && !isThinking) {
230
- return emptyState ? /* @__PURE__ */ jsx4("div", { className: cn("flex h-full items-center justify-center p-8", className), children: emptyState }) : null;
227
+ return emptyState ? /* @__PURE__ */ jsx4("div", { className: cn("flex h-full items-center justify-center p-4", className), children: emptyState }) : null;
231
228
  }
232
229
  const renderedItems = isThinking ? [...items, { id: "__thinking__", kind: "custom", content: /* @__PURE__ */ jsx4(ThinkingIndicator, {}) }] : items;
233
230
  const timelineItems = renderedItems.filter((item) => !(item.kind === "message" && item.role === "user"));
@@ -467,8 +464,8 @@ function ChatInput({
467
464
  f.id
468
465
  ))
469
466
  ] }),
470
- /* @__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-3.5 transition-colors focus-within:border-[var(--border-accent)]", children: [
471
- /* @__PURE__ */ jsxs4("div", { className: "mb-2 flex items-center justify-between gap-3 px-1", children: [
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: [
472
469
  /* @__PURE__ */ jsx5("div", { className: "text-[11px] font-semibold uppercase tracking-[0.16em] text-[var(--text-muted)]", children: "Agent Command Deck" }),
473
470
  /* @__PURE__ */ jsx5("div", { className: "text-[11px] text-[var(--text-muted)]", children: isStreaming ? "Streaming response" : "Ready for next instruction" })
474
471
  ] }),
@@ -534,7 +531,7 @@ function ChatInput({
534
531
  disabled: isStreaming || disabled,
535
532
  rows: 1,
536
533
  "aria-label": "Message input",
537
- className: "min-h-[36px] max-h-[160px] flex-1 resize-none bg-transparent text-[15px] leading-7 text-[var(--text-primary)] placeholder:text-[var(--text-muted)] disabled:opacity-50 focus-visible:outline-none"
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
535
  }
539
536
  ),
540
537
  isStreaming ? /* @__PURE__ */ jsx5(
@@ -865,8 +862,8 @@ var ChatContainer = memo3(
865
862
  "div",
866
863
  {
867
864
  ref: scrollRef,
868
- className: "flex-1 overflow-y-auto px-4 py-4 [scrollbar-gutter:stable]",
869
- 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-6 py-8 text-center shadow-[var(--shadow-card)]", children: [
865
+ 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: [
870
867
  /* @__PURE__ */ jsx6("div", { className: "text-sm font-semibold text-[var(--text-primary)]", children: "Start the filing workflow" }),
871
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." })
872
869
  ] }) }) : 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(
@@ -158,7 +158,7 @@ function Sidebar({ children, className }) {
158
158
  {
159
159
  "data-sidebar": "true",
160
160
  className: cn(
161
- "fixed inset-y-0 left-0 z-40 flex bg-sidebar border-r border-sidebar-border transition-[transform,width] duration-200 ease-in-out",
161
+ "fixed inset-y-0 left-0 z-40 flex bg-[var(--depth-1)] border-r border-[var(--border-subtle)] transition-[transform,width] duration-200 ease-in-out",
162
162
  hidden && "-translate-x-full",
163
163
  className
164
164
  ),
@@ -168,10 +168,10 @@ function Sidebar({ children, className }) {
168
168
  );
169
169
  }
170
170
  function SidebarRail({ children, className }) {
171
- return /* @__PURE__ */ jsx2("div", { className: cn("flex flex-col h-full w-16 shrink-0", className), children });
171
+ return /* @__PURE__ */ jsx2("div", { className: cn("flex flex-col h-full w-16 shrink-0 bg-[var(--depth-2)]", className), children });
172
172
  }
173
173
  function SidebarRailHeader({ children, className }) {
174
- return /* @__PURE__ */ jsx2("div", { className: cn("flex h-14 items-center justify-center border-b border-sidebar-border", className), children });
174
+ return /* @__PURE__ */ jsx2("div", { className: cn("flex h-14 items-center justify-center border-b border-[var(--border-subtle)]", className), children });
175
175
  }
176
176
  function SidebarRailNav({ children, className }) {
177
177
  return /* @__PURE__ */ jsx2("nav", { className: cn("flex flex-col items-center gap-1 py-3 flex-1", className), children });
@@ -180,7 +180,7 @@ function SidebarRailFooter({ children, className }) {
180
180
  return /* @__PURE__ */ jsx2("div", { className: cn("flex flex-col items-center gap-1 pb-3", className), children });
181
181
  }
182
182
  function RailSeparator({ className }) {
183
- return /* @__PURE__ */ jsx2("div", { className: cn("my-2 h-px w-10 bg-sidebar-border", className) });
183
+ return /* @__PURE__ */ jsx2("div", { className: cn("my-2 h-px w-10 bg-[var(--border-subtle)]", className) });
184
184
  }
185
185
  function RailButton({ icon: Icon2, label, isActive, badge, onClick, className }) {
186
186
  return /* @__PURE__ */ jsxs(
@@ -190,17 +190,21 @@ function RailButton({ icon: Icon2, label, isActive, badge, onClick, className })
190
190
  onClick,
191
191
  title: label,
192
192
  className: cn(
193
- "relative flex items-center justify-center w-10 h-10 rounded-lg transition-all duration-150",
194
- "hover:bg-sidebar-accent/80 hover:text-sidebar-accent-foreground",
193
+ "group relative flex flex-col items-center justify-center gap-0.5 w-12 h-12 rounded-lg transition-all duration-150",
194
+ "hover:bg-[var(--accent-surface-soft)] hover:text-[var(--accent-text)]",
195
195
  "active:scale-95",
196
- "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sidebar-ring",
197
- isActive && "bg-sidebar-accent text-sidebar-accent-foreground",
198
- !isActive && "text-sidebar-foreground/70",
196
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--brand-cool)]",
197
+ isActive && "bg-[var(--accent-surface-strong)] text-[var(--accent-text)] shadow-[0_0_12px_-2px_rgba(130,99,255,0.3)]",
198
+ !isActive && "text-[var(--text-muted)]",
199
199
  className
200
200
  ),
201
201
  children: [
202
- /* @__PURE__ */ jsx2(Icon2, { className: "h-5 w-5" }),
203
- badge !== void 0 && badge > 0 && /* @__PURE__ */ jsx2("span", { className: "absolute -top-1 -right-1 flex h-4 min-w-4 items-center justify-center rounded-full bg-sidebar-primary text-[10px] font-medium text-white px-1", children: badge > 99 ? "99+" : badge })
202
+ /* @__PURE__ */ jsx2(Icon2, { className: "h-[18px] w-[18px]" }),
203
+ /* @__PURE__ */ jsx2("span", { className: cn(
204
+ "text-[9px] leading-none font-medium tracking-tight truncate max-w-[44px]",
205
+ isActive ? "text-[var(--accent-text)]" : "text-[var(--text-dim)] group-hover:text-[var(--accent-text)]"
206
+ ), children: label }),
207
+ badge !== void 0 && badge > 0 && /* @__PURE__ */ jsx2("span", { className: "absolute -top-0.5 -right-0.5 flex h-3.5 min-w-3.5 items-center justify-center rounded-full bg-[var(--brand-primary)] text-[8px] font-medium text-white px-0.5", children: badge > 99 ? "99+" : badge })
204
208
  ]
205
209
  }
206
210
  );
@@ -225,7 +229,7 @@ function SidebarPanel({ children, className }) {
225
229
  "div",
226
230
  {
227
231
  className: cn(
228
- "transition-[opacity] duration-150 h-full overflow-hidden border-l border-sidebar-border",
232
+ "transition-[opacity] duration-150 h-full overflow-hidden border-l border-[var(--border-subtle)] bg-[var(--depth-1)]",
229
233
  panelOpen ? "w-[260px] opacity-100" : "w-0 opacity-0 pointer-events-none",
230
234
  className
231
235
  ),
@@ -234,7 +238,7 @@ function SidebarPanel({ children, className }) {
234
238
  );
235
239
  }
236
240
  function SidebarPanelHeader({ children, title, className }) {
237
- return /* @__PURE__ */ jsx2("div", { className: cn("flex h-14 items-center px-4 border-b border-sidebar-border shrink-0", className), children: children ?? /* @__PURE__ */ jsx2("h2", { className: "text-sm font-semibold text-sidebar-foreground", children: title }) });
241
+ return /* @__PURE__ */ jsx2("div", { className: cn("flex h-14 items-center px-4 border-b border-[var(--border-subtle)] shrink-0", className), children: children ?? /* @__PURE__ */ jsx2("h2", { className: "text-sm font-semibold text-[var(--text-primary)]", children: title }) });
238
242
  }
239
243
  function SidebarPanelContent({ children, className }) {
240
244
  return /* @__PURE__ */ jsx2("div", { className: cn("flex-1 overflow-y-auto px-2 py-2", className), children });
@@ -267,8 +271,8 @@ function ProfileAvatar({
267
271
  {
268
272
  type: "button",
269
273
  className: cn(
270
- "flex items-center justify-center w-10 h-10 rounded-lg transition-colors hover:bg-sidebar-accent",
271
- "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sidebar-ring",
274
+ "flex items-center justify-center w-12 h-12 rounded-lg transition-colors hover:bg-[var(--accent-surface-soft)]",
275
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--brand-cool)]",
272
276
  className
273
277
  ),
274
278
  "aria-label": "User menu",
@@ -366,16 +370,16 @@ function CreditBalance({
366
370
  className
367
371
  }) {
368
372
  const [topUpValue, setTopUpValue] = React2.useState("50.00");
369
- return /* @__PURE__ */ jsxs3("div", { className: cn("bg-[var(--depth-2)] p-8 rounded-xl flex flex-col justify-between border border-[var(--border-subtle)]", className), children: [
373
+ return /* @__PURE__ */ jsxs3("div", { className: cn("bg-[var(--depth-2)] p-5 rounded-xl flex flex-col justify-between border border-[var(--border-subtle)]", className), children: [
370
374
  /* @__PURE__ */ jsxs3("div", { children: [
371
375
  /* @__PURE__ */ jsx4("h3", { className: "text-sm font-semibold text-[var(--text-muted)] uppercase tracking-widest mb-2", children: "Available Credits" }),
372
- /* @__PURE__ */ jsxs3("div", { className: "text-5xl font-extrabold text-[var(--brand-cool)] tracking-tighter mb-3", children: [
376
+ /* @__PURE__ */ jsxs3("div", { className: "text-4xl font-extrabold text-[var(--brand-cool)] tracking-tighter mb-2", children: [
373
377
  "$",
374
378
  amount.toFixed(2)
375
379
  ] }),
376
380
  /* @__PURE__ */ jsx4("p", { className: "text-sm text-[var(--text-muted)] leading-relaxed", children: description })
377
381
  ] }),
378
- onTopUp && /* @__PURE__ */ jsxs3("div", { className: "space-y-3 mt-8", children: [
382
+ onTopUp && /* @__PURE__ */ jsxs3("div", { className: "space-y-2.5 mt-5", children: [
379
383
  /* @__PURE__ */ jsxs3("div", { className: "bg-[var(--depth-1)] border border-[var(--border-subtle)] p-1 rounded-lg flex items-center", children: [
380
384
  /* @__PURE__ */ jsx4(
381
385
  "input",
@@ -461,17 +465,17 @@ import { Check } from "lucide-react";
461
465
  import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
462
466
  function PlanCards({ plans, className }) {
463
467
  return /* @__PURE__ */ jsxs5("section", { className, children: [
464
- /* @__PURE__ */ jsx6("h2", { className: "text-2xl font-bold text-[var(--text-primary)] tracking-tight mb-8 px-2", children: "Subscription Plans" }),
468
+ /* @__PURE__ */ jsx6("h2", { className: "text-2xl font-bold text-[var(--text-primary)] tracking-tight mb-5 px-2", children: "Subscription Plans" }),
465
469
  /* @__PURE__ */ jsx6("div", { className: "grid grid-cols-1 md:grid-cols-3 gap-6", children: plans.map((plan) => /* @__PURE__ */ jsxs5(
466
470
  "div",
467
471
  {
468
472
  className: cn(
469
- "p-8 rounded-xl transition-all relative overflow-hidden border",
473
+ "p-5 rounded-xl transition-all relative overflow-hidden border",
470
474
  plan.popular ? "bg-[var(--depth-3)] border-[var(--border-accent)]" : "bg-[var(--depth-2)] border-[var(--border-subtle)] hover:bg-[var(--depth-3)] hover:border-[var(--border-default)]"
471
475
  ),
472
476
  children: [
473
477
  plan.popular && /* @__PURE__ */ jsx6("div", { className: "absolute top-0 right-0 bg-[var(--accent-surface-soft)] border-l border-b border-[var(--border-accent)] px-4 py-1 text-[10px] font-bold text-[var(--accent-text)] uppercase tracking-widest rounded-bl-lg", children: "Popular" }),
474
- /* @__PURE__ */ jsxs5("div", { className: "mb-6", children: [
478
+ /* @__PURE__ */ jsxs5("div", { className: "mb-4", children: [
475
479
  /* @__PURE__ */ jsx6("div", { className: cn("text-xs font-mono uppercase tracking-widest mb-2", plan.popular ? "text-[var(--brand-cool)]" : "text-[var(--text-muted)]"), children: plan.name }),
476
480
  /* @__PURE__ */ jsxs5("div", { className: "text-3xl font-bold text-[var(--text-primary)]", children: [
477
481
  "$",
@@ -482,7 +486,7 @@ function PlanCards({ plans, className }) {
482
486
  ] })
483
487
  ] })
484
488
  ] }),
485
- /* @__PURE__ */ jsx6("ul", { className: "space-y-3 mb-8 text-sm text-[var(--text-muted)]", children: plan.features.map((f, i) => /* @__PURE__ */ jsxs5("li", { className: "flex items-center gap-2", children: [
489
+ /* @__PURE__ */ jsx6("ul", { className: "space-y-2 mb-5 text-sm text-[var(--text-muted)]", children: plan.features.map((f, i) => /* @__PURE__ */ jsxs5("li", { className: "flex items-center gap-2", children: [
486
490
  /* @__PURE__ */ jsx6(Check, { className: "h-3.5 w-3.5 text-[var(--brand-cool)] shrink-0" }),
487
491
  f.text
488
492
  ] }, i)) }),
@@ -684,8 +688,8 @@ function DashboardLayoutInner({
684
688
  }
685
689
  ),
686
690
  /* @__PURE__ */ jsx7(Sidebar, { className: cn("hidden lg:flex", sidebarClassName), children: sidebarContent }),
687
- /* @__PURE__ */ jsx7(SidebarContent, { className: cn("pt-20 px-8 pb-12 hidden lg:block", contentClassName), children }),
688
- /* @__PURE__ */ jsx7("main", { className: cn("pt-20 px-8 pb-12 min-h-screen lg:hidden", contentClassName), children }),
691
+ /* @__PURE__ */ jsx7(SidebarContent, { className: cn("pt-16 px-6 pb-8 hidden lg:block", contentClassName), children }),
692
+ /* @__PURE__ */ jsx7("main", { className: cn("pt-16 px-6 pb-8 min-h-screen lg:hidden", contentClassName), children }),
689
693
  footer
690
694
  ] });
691
695
  }
@@ -703,21 +707,19 @@ function getBarColor(percent) {
703
707
  function ResourceMeter({ label, value, max = 100, unit, icon, className }) {
704
708
  const percent = max > 0 ? Math.min(value / max * 100, 100) : 0;
705
709
  const barColor = getBarColor(percent);
706
- return /* @__PURE__ */ jsxs7("div", { className: cn("space-y-1.5", className), children: [
707
- /* @__PURE__ */ jsxs7("div", { className: "flex justify-between text-[10px] font-mono text-[var(--text-muted)] uppercase tracking-wide", children: [
708
- /* @__PURE__ */ jsxs7("span", { className: "flex items-center gap-1 text-[var(--text-secondary)]", children: [
709
- icon,
710
- label
711
- ] }),
712
- /* @__PURE__ */ jsx8("span", { className: "tabular-nums", children: unit ? `${value}${unit} / ${max}${unit}` : `${Math.round(percent)}%` })
710
+ return /* @__PURE__ */ jsxs7("div", { className: cn("flex items-center gap-3", className), children: [
711
+ /* @__PURE__ */ jsxs7("span", { className: "flex shrink-0 items-center gap-1 text-[10px] font-mono text-[var(--text-secondary)] uppercase tracking-wide", children: [
712
+ icon,
713
+ label
713
714
  ] }),
714
- /* @__PURE__ */ jsx8("div", { className: "h-1.5 w-full bg-[var(--depth-1)] rounded-full overflow-hidden", children: /* @__PURE__ */ jsx8(
715
+ /* @__PURE__ */ jsx8("div", { className: "h-1.5 min-w-0 flex-1 bg-[var(--depth-1)] rounded-full overflow-hidden", children: /* @__PURE__ */ jsx8(
715
716
  "div",
716
717
  {
717
718
  className: cn("h-full rounded-full transition-all duration-500", barColor),
718
719
  style: { width: `${percent}%` }
719
720
  }
720
- ) })
721
+ ) }),
722
+ /* @__PURE__ */ jsx8("span", { className: "shrink-0 text-[10px] font-mono tabular-nums text-[var(--text-muted)]", children: unit ? `${value}${unit}/${max}${unit}` : `${Math.round(percent)}%` })
721
723
  ] });
722
724
  }
723
725
 
@@ -866,7 +868,7 @@ function NewSandboxCard({ onClick, className }) {
866
868
  type: "button",
867
869
  onClick,
868
870
  className: cn(
869
- "border-2 border-dashed border-[var(--border-subtle)] rounded-xl p-6 flex flex-col items-center justify-center text-center group cursor-pointer hover:border-[var(--border-accent)] hover:bg-[var(--accent-surface-soft)] transition-all duration-300 w-full min-h-[200px]",
871
+ "border-2 border-dashed border-[var(--border-subtle)] rounded-xl p-5 flex flex-col items-center justify-center text-center group cursor-pointer hover:border-[var(--border-accent)] hover:bg-[var(--accent-surface-soft)] transition-all duration-300 w-full min-h-[160px]",
870
872
  className
871
873
  ),
872
874
  children: [
@@ -1274,7 +1276,7 @@ import {
1274
1276
  X,
1275
1277
  XCircle
1276
1278
  } from "lucide-react";
1277
- import { jsx as jsx13, jsxs as jsxs12 } from "react/jsx-runtime";
1279
+ import { Fragment as Fragment6, jsx as jsx13, jsxs as jsxs12 } from "react/jsx-runtime";
1278
1280
  var statusConfig2 = {
1279
1281
  pending: {
1280
1282
  icon: Clock,
@@ -1358,40 +1360,38 @@ function VariantList({
1358
1360
  isActioning,
1359
1361
  className
1360
1362
  }) {
1361
- return /* @__PURE__ */ jsx13("div", { className: `space-y-3 ${className || ""}`, children: variants.map((variant) => {
1363
+ return /* @__PURE__ */ jsx13("div", { className: `space-y-2 ${className || ""}`, children: variants.map((variant) => {
1362
1364
  const status = statusConfig2[variant.status];
1363
1365
  const StatusIcon = status.icon;
1364
1366
  const isSelected = variant.id === selectedId;
1365
1367
  return /* @__PURE__ */ jsxs12(
1366
1368
  "div",
1367
1369
  {
1368
- className: `cursor-pointer rounded-lg border p-4 transition-colors ${isSelected ? "border-[var(--border-accent)] bg-[var(--accent-surface-soft)]" : "border-[var(--border-subtle)] bg-[var(--depth-2)] hover:border-[var(--border-default)] hover:bg-[var(--depth-3)]"}`,
1370
+ className: `cursor-pointer rounded-lg border px-3 py-2.5 transition-colors ${isSelected ? "border-[var(--border-accent)] bg-[var(--accent-surface-soft)]" : "border-[var(--border-subtle)] bg-[var(--depth-2)] hover:border-[var(--border-default)] hover:bg-[var(--depth-3)]"}`,
1369
1371
  onClick: () => onSelect?.(variant.id),
1370
1372
  children: [
1371
- /* @__PURE__ */ jsxs12("div", { className: "flex items-center justify-between", children: [
1372
- /* @__PURE__ */ jsxs12("div", { className: "flex items-center gap-3", children: [
1373
- /* @__PURE__ */ jsxs12(Badge, { className: `${status.bg} ${status.border} ${status.color}`, children: [
1374
- /* @__PURE__ */ jsx13(
1375
- StatusIcon,
1376
- {
1377
- className: `mr-1 h-3 w-3 ${status.animate ? "animate-spin" : ""}`
1378
- }
1379
- ),
1380
- status.label
1381
- ] }),
1382
- /* @__PURE__ */ jsx13("span", { className: "font-medium text-[var(--text-primary)]", children: variant.label }),
1383
- variant.sublabel && /* @__PURE__ */ jsxs12("span", { className: "text-sm text-[var(--text-muted)]", children: [
1384
- "(",
1385
- variant.sublabel,
1386
- ")"
1387
- ] }),
1388
- variant.durationMs && /* @__PURE__ */ jsxs12("span", { className: "flex items-center gap-1 text-sm text-[var(--text-muted)]", children: [
1389
- /* @__PURE__ */ jsx13(Timer, { className: "h-3 w-3" }),
1390
- (variant.durationMs / 1e3).toFixed(2),
1391
- "s"
1392
- ] })
1373
+ /* @__PURE__ */ jsxs12("div", { className: "flex items-center gap-2", children: [
1374
+ /* @__PURE__ */ jsxs12(Badge, { className: `shrink-0 ${status.bg} ${status.border} ${status.color}`, children: [
1375
+ /* @__PURE__ */ jsx13(
1376
+ StatusIcon,
1377
+ {
1378
+ className: `mr-1 h-3 w-3 ${status.animate ? "animate-spin" : ""}`
1379
+ }
1380
+ ),
1381
+ status.label
1382
+ ] }),
1383
+ /* @__PURE__ */ jsx13("span", { className: "truncate text-sm font-medium text-[var(--text-primary)]", children: variant.label }),
1384
+ variant.sublabel && /* @__PURE__ */ jsxs12("span", { className: "shrink-0 text-xs text-[var(--text-muted)]", children: [
1385
+ "(",
1386
+ variant.sublabel,
1387
+ ")"
1388
+ ] }),
1389
+ variant.durationMs && /* @__PURE__ */ jsxs12("span", { className: "flex shrink-0 items-center gap-1 text-xs text-[var(--text-muted)]", children: [
1390
+ /* @__PURE__ */ jsx13(Timer, { className: "h-3 w-3" }),
1391
+ (variant.durationMs / 1e3).toFixed(1),
1392
+ "s"
1393
1393
  ] }),
1394
- /* @__PURE__ */ jsxs12("div", { className: "flex items-center gap-2", children: [
1394
+ /* @__PURE__ */ jsxs12("div", { className: "ml-auto flex shrink-0 items-center gap-1.5", children: [
1395
1395
  variant.outcome && /* @__PURE__ */ jsx13(
1396
1396
  Badge,
1397
1397
  {
@@ -1399,20 +1399,20 @@ function VariantList({
1399
1399
  children: outcomeConfig[variant.outcome].label
1400
1400
  }
1401
1401
  ),
1402
- variant.status === "completed" && variant.outcome === "pending_review" && onAccept && onReject && /* @__PURE__ */ jsxs12("div", { className: "flex items-center gap-2", children: [
1402
+ variant.status === "completed" && variant.outcome === "pending_review" && onAccept && onReject && /* @__PURE__ */ jsxs12(Fragment6, { children: [
1403
1403
  /* @__PURE__ */ jsxs12(
1404
1404
  Button,
1405
1405
  {
1406
1406
  variant: "outline",
1407
1407
  size: "sm",
1408
- className: "border-[var(--surface-success-border)] bg-[var(--surface-success-bg)] text-[var(--surface-success-text)] hover:bg-[var(--surface-success-border)]",
1408
+ className: "h-7 border-[var(--surface-success-border)] bg-[var(--surface-success-bg)] px-2 text-xs text-[var(--surface-success-text)] hover:bg-[var(--surface-success-border)]",
1409
1409
  onClick: (e) => {
1410
1410
  e.stopPropagation();
1411
1411
  onAccept(variant.id);
1412
1412
  },
1413
1413
  disabled: isActioning === variant.id,
1414
1414
  children: [
1415
- /* @__PURE__ */ jsx13(Check3, { className: "mr-1 h-4 w-4" }),
1415
+ /* @__PURE__ */ jsx13(Check3, { className: "mr-1 h-3 w-3" }),
1416
1416
  "Accept"
1417
1417
  ]
1418
1418
  }
@@ -1422,14 +1422,14 @@ function VariantList({
1422
1422
  {
1423
1423
  variant: "outline",
1424
1424
  size: "sm",
1425
- className: "border-[var(--surface-danger-border)] bg-[var(--surface-danger-bg)] text-[var(--surface-danger-text)] hover:bg-[var(--surface-danger-border)]",
1425
+ className: "h-7 border-[var(--surface-danger-border)] bg-[var(--surface-danger-bg)] px-2 text-xs text-[var(--surface-danger-text)] hover:bg-[var(--surface-danger-border)]",
1426
1426
  onClick: (e) => {
1427
1427
  e.stopPropagation();
1428
1428
  onReject(variant.id);
1429
1429
  },
1430
1430
  disabled: isActioning === variant.id,
1431
1431
  children: [
1432
- /* @__PURE__ */ jsx13(X, { className: "mr-1 h-4 w-4" }),
1432
+ /* @__PURE__ */ jsx13(X, { className: "mr-1 h-3 w-3" }),
1433
1433
  "Reject"
1434
1434
  ]
1435
1435
  }
@@ -1440,18 +1440,18 @@ function VariantList({
1440
1440
  {
1441
1441
  variant: "ghost",
1442
1442
  size: "sm",
1443
- className: "text-[var(--text-muted)] hover:text-[var(--text-primary)]",
1443
+ className: "h-7 w-7 p-0 text-[var(--text-muted)] hover:text-[var(--text-primary)]",
1444
1444
  onClick: (e) => {
1445
1445
  e.stopPropagation();
1446
1446
  window.open(variant.detailsUrl, "_blank");
1447
1447
  },
1448
- children: /* @__PURE__ */ jsx13(ExternalLink2, { className: "h-4 w-4" })
1448
+ children: /* @__PURE__ */ jsx13(ExternalLink2, { className: "h-3.5 w-3.5" })
1449
1449
  }
1450
1450
  )
1451
1451
  ] })
1452
1452
  ] }),
1453
- variant.error && /* @__PURE__ */ jsx13("p", { className: "mt-2 text-sm text-[var(--surface-danger-text)]", children: variant.error }),
1454
- variant.summary && /* @__PURE__ */ jsx13("p", { className: "mt-2 line-clamp-2 text-sm text-[var(--text-muted)]", children: variant.summary })
1453
+ variant.error && /* @__PURE__ */ jsx13("p", { className: "mt-1.5 text-xs text-[var(--surface-danger-text)]", children: variant.error }),
1454
+ variant.summary && /* @__PURE__ */ jsx13("p", { className: "mt-1.5 line-clamp-2 text-xs text-[var(--text-muted)]", children: variant.summary })
1455
1455
  ]
1456
1456
  },
1457
1457
  variant.id
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-W4LM3QYZ.js";
10
10
  import {
11
11
  Markdown
12
- } from "./chunk-H5XYSFYE.js";
12
+ } from "./chunk-3HW53XTH.js";
13
13
  import {
14
14
  cn
15
15
  } from "./chunk-RQHJBTEU.js";
@@ -933,7 +933,7 @@ function MarkdownDocumentEditor({
933
933
  "div",
934
934
  {
935
935
  className: cn(
936
- "flex min-h-[24rem] w-full flex-col overflow-hidden rounded-[var(--radius-lg)] border border-[var(--border-subtle)] bg-[var(--bg-input)]",
936
+ "flex min-h-[14rem] w-full flex-col overflow-hidden rounded-[var(--radius-lg)] border border-[var(--border-subtle)] bg-[var(--bg-input)]",
937
937
  className
938
938
  ),
939
939
  children: [
@@ -1213,7 +1213,7 @@ function CollaborativeDocumentSurface({
1213
1213
  placeholder,
1214
1214
  autoFocus,
1215
1215
  readOnly,
1216
- className: cn("h-full min-h-[28rem]", className),
1216
+ className: cn("h-full min-h-[16rem]", className),
1217
1217
  onUpdate: (editor) => {
1218
1218
  onChange?.(normalizeMarkdown(htmlToMarkdown(editor.getHTML())));
1219
1219
  }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Markdown
3
- } from "./chunk-H5XYSFYE.js";
3
+ } from "./chunk-3HW53XTH.js";
4
4
  import {
5
5
  cn
6
6
  } from "./chunk-RQHJBTEU.js";
@@ -40,7 +40,8 @@ function ChatMessage({
40
40
  "div",
41
41
  {
42
42
  className: cn(
43
- "min-w-0 max-w-[85%] space-y-1.5 rounded-[var(--radius-xl)] border px-4 py-3",
43
+ "min-w-0 max-w-[85%] space-y-1 rounded-[var(--radius-lg)] border",
44
+ "px-[var(--chat-message-px)] py-[var(--chat-message-py)]",
44
45
  isUser ? "border-[var(--border-accent)] bg-[var(--depth-3)]" : "border-[var(--border-subtle)] bg-[var(--depth-2)]"
45
46
  ),
46
47
  children: [
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-W4LM3QYZ.js";
4
4
  import {
5
5
  Markdown
6
- } from "./chunk-H5XYSFYE.js";
6
+ } from "./chunk-3HW53XTH.js";
7
7
  import {
8
8
  cn
9
9
  } from "./chunk-RQHJBTEU.js";
@@ -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-JNXPANWM.js");
487
+ const module = await import("./document-editor-pane-DWWUTTTZ.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-section)] text-sm text-[var(--text-muted)]", children: "Loading editor\u2026" })
559
+ children: /* @__PURE__ */ jsx4("div", { className: "flex min-h-[12rem] 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(