@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 +6 -6
- package/dist/{chunk-XBR3IP7B.js → chunk-33W2TLUL.js} +2 -2
- package/dist/{chunk-H5XYSFYE.js → chunk-3HW53XTH.js} +6 -6
- package/dist/{chunk-R3IU37AW.js → chunk-5F3VOGCT.js} +19 -22
- package/dist/{chunk-7DVFZEVW.js → chunk-6V4XVKFY.js} +69 -69
- package/dist/{chunk-FFOXUHOF.js → chunk-FNYJFCGU.js} +3 -3
- package/dist/{chunk-5CEMHKBP.js → chunk-GW4GRAWJ.js} +3 -2
- package/dist/{chunk-WQH233GF.js → chunk-KH5UDAJ2.js} +3 -3
- package/dist/{chunk-WC7QTWPN.js → chunk-LY32SP6X.js} +47 -58
- package/dist/{chunk-NTSRY4GW.js → chunk-MJUDMVRU.js} +5 -5
- package/dist/{chunk-5F4NX5R2.js → chunk-MXRQ4MJE.js} +1 -1
- package/dist/{chunk-VBWY44UU.js → chunk-OVNLOE3Y.js} +1 -1
- package/dist/{chunk-P24K22CV.js → chunk-WSR2NB2H.js} +29 -37
- package/dist/dashboard.js +1 -1
- package/dist/{document-editor-pane-JNXPANWM.js → document-editor-pane-DWWUTTTZ.js} +2 -2
- package/dist/editor.js +2 -2
- package/dist/files.js +2 -2
- package/dist/hooks.js +4 -4
- package/dist/index.js +12 -12
- package/dist/markdown.js +1 -1
- package/dist/openui.js +2 -2
- package/dist/run.js +4 -4
- package/dist/sdk-hooks.js +4 -4
- package/dist/tokens.css +45 -0
- package/dist/workspace.js +7 -7
- package/package.json +2 -1
- package/tailwind.config.cjs +11 -0
package/dist/chat.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ChatMessage
|
|
3
|
-
} from "./chunk-
|
|
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-
|
|
11
|
+
} from "./chunk-5F3VOGCT.js";
|
|
12
12
|
import "./chunk-CNWVHQFY.js";
|
|
13
|
-
import "./chunk-
|
|
13
|
+
import "./chunk-LY32SP6X.js";
|
|
14
14
|
import "./chunk-HRMUF35V.js";
|
|
15
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-MJUDMVRU.js";
|
|
16
16
|
import "./chunk-BX6AQMUS.js";
|
|
17
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-OVNLOE3Y.js";
|
|
18
18
|
import "./chunk-JP725R4W.js";
|
|
19
|
-
import "./chunk-
|
|
19
|
+
import "./chunk-3HW53XTH.js";
|
|
20
20
|
import "./chunk-TDYQBLL5.js";
|
|
21
21
|
import "./chunk-TSE423UF.js";
|
|
22
22
|
import "./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-
|
|
120
|
-
/* @__PURE__ */ jsx("span", { className: cn("text-[
|
|
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: "
|
|
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.
|
|
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-
|
|
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-
|
|
9
|
+
} from "./chunk-LY32SP6X.js";
|
|
10
10
|
import {
|
|
11
11
|
ToolCallGroup,
|
|
12
12
|
ToolCallStep
|
|
13
|
-
} from "./chunk-
|
|
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-
|
|
19
|
+
} from "./chunk-OVNLOE3Y.js";
|
|
20
20
|
import {
|
|
21
21
|
Markdown
|
|
22
|
-
} from "./chunk-
|
|
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-
|
|
100
|
-
/* @__PURE__ */
|
|
101
|
-
/* @__PURE__ */ jsx3("span", { className: "h-1
|
|
102
|
-
/* @__PURE__ */ jsx3("span", { className: "h-1
|
|
103
|
-
/* @__PURE__ */ jsx3("span", { className: "h-1
|
|
104
|
-
] })
|
|
105
|
-
/* @__PURE__ */ jsxs2("
|
|
106
|
-
|
|
107
|
-
|
|
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-
|
|
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-
|
|
471
|
-
/* @__PURE__ */ jsxs4("div", { className: "mb-
|
|
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-[
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
194
|
-
"hover:bg-
|
|
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-
|
|
197
|
-
isActive && "bg-
|
|
198
|
-
!isActive && "text-
|
|
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-
|
|
203
|
-
|
|
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-
|
|
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-
|
|
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-
|
|
271
|
-
"focus-visible:outline-none focus-visible:ring-2 focus-visible: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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
688
|
-
/* @__PURE__ */ jsx7("main", { className: cn("pt-
|
|
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("
|
|
707
|
-
/* @__PURE__ */ jsxs7("
|
|
708
|
-
|
|
709
|
-
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
|
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
|
|
1372
|
-
/* @__PURE__ */ jsxs12(
|
|
1373
|
-
/* @__PURE__ */
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
{
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
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-
|
|
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(
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
1454
|
-
variant.summary && /* @__PURE__ */ jsx13("p", { className: "mt-
|
|
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-
|
|
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-[
|
|
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-[
|
|
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-
|
|
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
|
|
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-
|
|
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-
|
|
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-[
|
|
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(
|