@tangle-network/sandbox-ui 0.4.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth.js +3 -3
- package/dist/chat.d.ts +1 -1
- package/dist/chat.js +11 -9
- package/dist/{chunk-ZP6GSX4D.js → chunk-565V6JTN.js} +26 -50
- package/dist/chunk-5CEMHKBP.js +72 -0
- package/dist/{chunk-FOQTE67I.js → chunk-5F4NX5R2.js} +10 -5
- package/dist/{chunk-MVYFNPAH.js → chunk-7DVFZEVW.js} +298 -272
- package/dist/{chunk-MUOL44AE.js → chunk-BRBTD7RH.js} +6 -6
- package/dist/{chunk-SSKVYXCR.js → chunk-DCPYTL4W.js} +62 -79
- package/dist/chunk-DLCFZDGX.js +182 -0
- package/dist/{chunk-HXEA7L2T.js → chunk-FFOXUHOF.js} +10 -10
- package/dist/chunk-H5XYSFYE.js +228 -0
- package/dist/{chunk-TQN3VR4F.js → chunk-JP725R4W.js} +2 -2
- package/dist/{chunk-CJ2RYVZH.js → chunk-NTSRY4GW.js} +68 -10
- package/dist/{chunk-DQYODCBN.js → chunk-P24K22CV.js} +57 -66
- package/dist/{chunk-GVUW4VDD.js → chunk-R3IU37AW.js} +161 -229
- package/dist/chunk-TDYQBLL5.js +127 -0
- package/dist/{chunk-HWLX5NME.js → chunk-TSE423UF.js} +12 -12
- package/dist/{chunk-YDBXQQLC.js → chunk-VBWY44UU.js} +30 -76
- package/dist/{chunk-IW2JZCOC.js → chunk-WBQ7VULC.js} +7 -7
- package/dist/{chunk-72UEKFZ2.js → chunk-WC7QTWPN.js} +65 -42
- package/dist/{chunk-HYLTXGOI.js → chunk-WQH233GF.js} +5 -5
- package/dist/{chunk-CCKNIAS7.js → chunk-XBR3IP7B.js} +2 -2
- package/dist/{chunk-OHMO7NUX.js → chunk-XTPAWK7L.js} +20 -31
- package/dist/{chunk-SULQQJPB.js → chunk-YS66Q3RC.js} +1 -1
- package/dist/{chunk-FRGMMANX.js → chunk-YYGECNZZ.js} +3 -3
- package/dist/dashboard.d.ts +2 -2
- package/dist/dashboard.js +6 -6
- package/dist/{document-editor-pane-5TN2VWGZ.js → document-editor-pane-JNXPANWM.js} +2 -2
- package/dist/editor.js +2 -2
- package/dist/files.js +2 -2
- package/dist/globals.css +129 -95
- package/dist/hooks.d.ts +2 -2
- package/dist/hooks.js +5 -5
- package/dist/{index-tTfThG0n.d.ts → index-BT_-ecpc.d.ts} +11 -10
- package/dist/index.d.ts +16 -23
- package/dist/index.js +27 -26
- package/dist/markdown.d.ts +14 -17
- package/dist/markdown.js +1 -1
- package/dist/openui.js +5 -5
- package/dist/pages.d.ts +10 -3
- package/dist/pages.js +147 -184
- package/dist/primitives.d.ts +8 -5
- package/dist/primitives.js +8 -8
- package/dist/run.d.ts +1 -1
- package/dist/run.js +4 -4
- package/dist/sdk-hooks.d.ts +1 -1
- package/dist/sdk-hooks.js +4 -4
- package/dist/styles.css +129 -95
- package/dist/terminal.d.ts +2 -2
- package/dist/terminal.js +13 -43
- package/dist/tokens.css +299 -179
- package/dist/{tool-call-feed-D5Ume-Pt.d.ts → tool-call-feed-Bs3MyQMT.d.ts} +3 -1
- package/dist/{usage-chart-CY9xo3KX.d.ts → usage-chart-XCoB_7Xu.d.ts} +1 -2
- package/dist/{use-pty-session-DeZSxOCN.d.ts → use-pty-session-COzVkhtc.d.ts} +1 -1
- package/dist/workspace.d.ts +3 -1
- package/dist/workspace.js +11 -11
- package/package.json +14 -2
- package/dist/chunk-GRYHFH5O.js +0 -110
- package/dist/chunk-LTFK464G.js +0 -103
- package/dist/chunk-MXCSSOGH.js +0 -105
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import {
|
|
2
|
+
cn
|
|
3
|
+
} from "./chunk-RQHJBTEU.js";
|
|
4
|
+
|
|
5
|
+
// src/primitives/card.tsx
|
|
6
|
+
import * as React from "react";
|
|
7
|
+
import { jsx } from "react/jsx-runtime";
|
|
8
|
+
var Card = React.forwardRef(({ className, variant = "default", hover = false, ...props }, ref) => {
|
|
9
|
+
const variants = {
|
|
10
|
+
default: "bg-card border-[var(--border-default)]",
|
|
11
|
+
elevated: "bg-[var(--bg-elevated)] border-[var(--border-subtle)] shadow-[var(--shadow-card)]",
|
|
12
|
+
glass: "bg-[var(--depth-2)] border-[var(--border-subtle)] shadow-[var(--shadow-card)]",
|
|
13
|
+
sandbox: "bg-[var(--depth-3)] border-[var(--border-accent)] shadow-[var(--shadow-accent)]"
|
|
14
|
+
};
|
|
15
|
+
return /* @__PURE__ */ jsx(
|
|
16
|
+
"div",
|
|
17
|
+
{
|
|
18
|
+
ref,
|
|
19
|
+
className: cn(
|
|
20
|
+
"rounded-[var(--radius-lg)] border text-card-foreground transition-[border-color,box-shadow]",
|
|
21
|
+
"duration-[var(--transition-default)]",
|
|
22
|
+
variants[variant],
|
|
23
|
+
hover && "cursor-pointer hover:border-[var(--border-hover)]",
|
|
24
|
+
className
|
|
25
|
+
),
|
|
26
|
+
...props
|
|
27
|
+
}
|
|
28
|
+
);
|
|
29
|
+
});
|
|
30
|
+
Card.displayName = "Card";
|
|
31
|
+
var CardHeader = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
32
|
+
"div",
|
|
33
|
+
{
|
|
34
|
+
ref,
|
|
35
|
+
className: cn("flex flex-col space-y-1 p-4", className),
|
|
36
|
+
...props
|
|
37
|
+
}
|
|
38
|
+
));
|
|
39
|
+
CardHeader.displayName = "CardHeader";
|
|
40
|
+
var CardTitle = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
41
|
+
"h3",
|
|
42
|
+
{
|
|
43
|
+
ref,
|
|
44
|
+
className: cn("font-semibold leading-none tracking-tight", className),
|
|
45
|
+
...props
|
|
46
|
+
}
|
|
47
|
+
));
|
|
48
|
+
CardTitle.displayName = "CardTitle";
|
|
49
|
+
var CardDescription = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
50
|
+
"p",
|
|
51
|
+
{
|
|
52
|
+
ref,
|
|
53
|
+
className: cn("text-muted-foreground text-sm", className),
|
|
54
|
+
...props
|
|
55
|
+
}
|
|
56
|
+
));
|
|
57
|
+
CardDescription.displayName = "CardDescription";
|
|
58
|
+
var CardContent = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("p-4 pt-0", className), ...props }));
|
|
59
|
+
CardContent.displayName = "CardContent";
|
|
60
|
+
var CardFooter = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
61
|
+
"div",
|
|
62
|
+
{
|
|
63
|
+
ref,
|
|
64
|
+
className: cn("flex items-center p-6 pt-0", className),
|
|
65
|
+
...props
|
|
66
|
+
}
|
|
67
|
+
));
|
|
68
|
+
CardFooter.displayName = "CardFooter";
|
|
69
|
+
|
|
70
|
+
// src/primitives/badge.tsx
|
|
71
|
+
import { cva } from "class-variance-authority";
|
|
72
|
+
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
73
|
+
var badgeVariants = cva(
|
|
74
|
+
"inline-flex items-center gap-1.5 rounded-full border px-2.5 py-0.5 font-medium text-xs transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
|
|
75
|
+
{
|
|
76
|
+
variants: {
|
|
77
|
+
variant: {
|
|
78
|
+
default: "border-transparent bg-primary text-primary-foreground",
|
|
79
|
+
secondary: "border-transparent bg-secondary text-secondary-foreground",
|
|
80
|
+
destructive: "border-transparent bg-destructive/15 border-destructive/25 text-destructive",
|
|
81
|
+
outline: "text-foreground border-border",
|
|
82
|
+
success: "border-[var(--surface-success-border)] bg-[var(--surface-success-bg)] text-[var(--surface-success-text)]",
|
|
83
|
+
warning: "border-[var(--surface-warning-border)] bg-[var(--surface-warning-bg)] text-[var(--surface-warning-text)]",
|
|
84
|
+
error: "border-[var(--surface-danger-border)] bg-[var(--surface-danger-bg)] text-[var(--surface-danger-text)]",
|
|
85
|
+
info: "border-[var(--surface-info-border)] bg-[var(--surface-info-bg)] text-[var(--surface-info-text)]",
|
|
86
|
+
sandbox: "border-[var(--border-accent)] bg-[var(--accent-surface-soft)] text-[var(--accent-text)]",
|
|
87
|
+
/* Operational status variants */
|
|
88
|
+
running: "border-[var(--surface-teal-border)] bg-[var(--surface-teal-bg)] text-[var(--surface-teal-text)]",
|
|
89
|
+
creating: "border-[var(--surface-violet-border)] bg-[var(--surface-violet-bg)] text-[var(--surface-violet-text)]",
|
|
90
|
+
stopped: "border-[var(--surface-warning-border)] bg-[var(--surface-warning-bg)] text-[var(--surface-warning-text)]",
|
|
91
|
+
warm: "border-[var(--surface-orange-border)] bg-[var(--surface-orange-bg)] text-[var(--surface-orange-text)]",
|
|
92
|
+
cold: "border-[var(--surface-info-border)] bg-[var(--surface-info-bg)] text-[var(--surface-info-text)]",
|
|
93
|
+
deleted: "border-[var(--surface-neutral-border)] bg-[var(--surface-neutral-bg)] text-[var(--surface-neutral-text)]"
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
defaultVariants: {
|
|
97
|
+
variant: "default"
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
);
|
|
101
|
+
var statusDotClass = {
|
|
102
|
+
running: "status-dot status-dot-running",
|
|
103
|
+
creating: "status-dot status-dot-creating",
|
|
104
|
+
stopped: "status-dot status-dot-stopped",
|
|
105
|
+
warm: "status-dot status-dot-warm",
|
|
106
|
+
cold: "status-dot status-dot-cold",
|
|
107
|
+
error: "status-dot status-dot-error",
|
|
108
|
+
deleted: "status-dot status-dot-deleted"
|
|
109
|
+
};
|
|
110
|
+
function Badge({ className, variant, dot, children, ...props }) {
|
|
111
|
+
const dotClass = dot && variant ? statusDotClass[variant] : null;
|
|
112
|
+
return /* @__PURE__ */ jsxs("div", { className: cn(badgeVariants({ variant }), className), ...props, children: [
|
|
113
|
+
dotClass && /* @__PURE__ */ jsx2("span", { className: dotClass, "aria-hidden": true }),
|
|
114
|
+
children
|
|
115
|
+
] });
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
export {
|
|
119
|
+
Card,
|
|
120
|
+
CardHeader,
|
|
121
|
+
CardTitle,
|
|
122
|
+
CardDescription,
|
|
123
|
+
CardContent,
|
|
124
|
+
CardFooter,
|
|
125
|
+
badgeVariants,
|
|
126
|
+
Badge
|
|
127
|
+
};
|
|
@@ -8,24 +8,24 @@ import { cva } from "class-variance-authority";
|
|
|
8
8
|
import * as React from "react";
|
|
9
9
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
10
10
|
var buttonVariants = cva(
|
|
11
|
-
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-lg font-medium text-sm transition-all
|
|
11
|
+
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-lg font-medium text-sm transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
|
12
12
|
{
|
|
13
13
|
variants: {
|
|
14
14
|
variant: {
|
|
15
|
-
default: "bg-primary text-primary-foreground shadow-
|
|
16
|
-
destructive: "bg-destructive
|
|
17
|
-
outline: "border border-border bg-transparent hover:bg-
|
|
18
|
-
secondary: "bg-secondary text-secondary-foreground
|
|
19
|
-
ghost: "hover:bg-
|
|
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)]",
|
|
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.
|
|
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)]"
|
|
22
22
|
},
|
|
23
23
|
size: {
|
|
24
|
-
default: "h-
|
|
25
|
-
sm: "h-
|
|
26
|
-
lg: "h-
|
|
27
|
-
xl: "h-
|
|
28
|
-
icon: "h-
|
|
24
|
+
default: "h-[var(--control-height)] px-4 py-2",
|
|
25
|
+
sm: "h-8 rounded-md px-3 text-xs",
|
|
26
|
+
lg: "h-11 rounded-lg px-7 text-sm",
|
|
27
|
+
xl: "h-13 rounded-xl px-9 text-base",
|
|
28
|
+
icon: "h-[var(--control-height)] w-[var(--control-height)]"
|
|
29
29
|
}
|
|
30
30
|
},
|
|
31
31
|
defaultVariants: {
|
|
@@ -5,10 +5,11 @@ import {
|
|
|
5
5
|
TableHead,
|
|
6
6
|
TableHeader,
|
|
7
7
|
TableRow
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-JP725R4W.js";
|
|
9
9
|
import {
|
|
10
|
+
CodeBlock,
|
|
10
11
|
Markdown
|
|
11
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-H5XYSFYE.js";
|
|
12
13
|
import {
|
|
13
14
|
Badge,
|
|
14
15
|
Card,
|
|
@@ -16,68 +17,22 @@ import {
|
|
|
16
17
|
CardDescription,
|
|
17
18
|
CardHeader,
|
|
18
19
|
CardTitle
|
|
19
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-TDYQBLL5.js";
|
|
20
21
|
import {
|
|
21
22
|
Button
|
|
22
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-TSE423UF.js";
|
|
23
24
|
import {
|
|
24
25
|
cn
|
|
25
26
|
} from "./chunk-RQHJBTEU.js";
|
|
26
27
|
|
|
27
28
|
// src/primitives/code-block.tsx
|
|
28
|
-
import {
|
|
29
|
-
import { useState } from "react";
|
|
30
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
31
|
-
function CodeBlock({
|
|
32
|
-
code,
|
|
33
|
-
language,
|
|
34
|
-
showCopy = true,
|
|
35
|
-
showLineNumbers = false,
|
|
36
|
-
className,
|
|
37
|
-
...props
|
|
38
|
-
}) {
|
|
39
|
-
const [copied, setCopied] = useState(false);
|
|
40
|
-
const handleCopy = async () => {
|
|
41
|
-
await navigator.clipboard.writeText(code);
|
|
42
|
-
setCopied(true);
|
|
43
|
-
setTimeout(() => setCopied(false), 2e3);
|
|
44
|
-
};
|
|
45
|
-
const lines = code.split("\n");
|
|
46
|
-
return /* @__PURE__ */ jsxs("div", { className: "group relative", children: [
|
|
47
|
-
/* @__PURE__ */ jsx(
|
|
48
|
-
"pre",
|
|
49
|
-
{
|
|
50
|
-
className: clsx(
|
|
51
|
-
"overflow-x-auto rounded-lg border border-[#262626] bg-[#0a0a0a] p-4 font-mono text-sm",
|
|
52
|
-
className
|
|
53
|
-
),
|
|
54
|
-
...props,
|
|
55
|
-
children: /* @__PURE__ */ jsx("code", { className: language ? `language-${language}` : void 0, children: showLineNumbers ? /* @__PURE__ */ jsx("table", { className: "w-full", children: /* @__PURE__ */ jsx("tbody", { children: lines.map((line, i) => /* @__PURE__ */ jsxs("tr", { children: [
|
|
56
|
-
/* @__PURE__ */ jsx("td", { className: "w-8 select-none pr-4 text-right text-[#525252]", children: i + 1 }),
|
|
57
|
-
/* @__PURE__ */ jsx("td", { className: "text-[#a1a1a1]", children: line || " " })
|
|
58
|
-
] }, i)) }) }) : /* @__PURE__ */ jsx("span", { className: "text-[#a1a1a1]", children: code }) })
|
|
59
|
-
}
|
|
60
|
-
),
|
|
61
|
-
showCopy && /* @__PURE__ */ jsx(
|
|
62
|
-
"button",
|
|
63
|
-
{
|
|
64
|
-
onClick: handleCopy,
|
|
65
|
-
className: clsx(
|
|
66
|
-
"absolute top-2 right-2 rounded px-2 py-1 text-xs",
|
|
67
|
-
"bg-[#262626] text-[#a1a1a1] hover:bg-[#363636] hover:text-white",
|
|
68
|
-
"opacity-0 transition-opacity group-hover:opacity-100"
|
|
69
|
-
),
|
|
70
|
-
children: copied ? "Copied!" : "Copy"
|
|
71
|
-
}
|
|
72
|
-
)
|
|
73
|
-
] });
|
|
74
|
-
}
|
|
29
|
+
import { jsx } from "react/jsx-runtime";
|
|
75
30
|
function InlineCode({ className, children, ...props }) {
|
|
76
31
|
return /* @__PURE__ */ jsx(
|
|
77
32
|
"code",
|
|
78
33
|
{
|
|
79
|
-
className:
|
|
80
|
-
"rounded border border-[
|
|
34
|
+
className: cn(
|
|
35
|
+
"rounded border border-[var(--border-subtle)] bg-[var(--depth-2)] px-1.5 py-0.5 font-mono text-[0.85em] text-[var(--code-keyword)]",
|
|
81
36
|
className
|
|
82
37
|
),
|
|
83
38
|
...props,
|
|
@@ -89,7 +44,7 @@ function InlineCode({ className, children, ...props }) {
|
|
|
89
44
|
// src/openui/openui-artifact-renderer.tsx
|
|
90
45
|
import { Fragment } from "react";
|
|
91
46
|
import { ArrowRight, Minus } from "lucide-react";
|
|
92
|
-
import { jsx as jsx2, jsxs
|
|
47
|
+
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
93
48
|
var GAP_STYLES = {
|
|
94
49
|
sm: "gap-2",
|
|
95
50
|
md: "gap-4",
|
|
@@ -139,7 +94,7 @@ function renderNode(node, onAction) {
|
|
|
139
94
|
case "heading": {
|
|
140
95
|
const level = node.level ?? 2;
|
|
141
96
|
const HeadingTag = `h${level}`;
|
|
142
|
-
return /* @__PURE__ */
|
|
97
|
+
return /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
|
|
143
98
|
node.kicker && /* @__PURE__ */ jsx2("div", { className: "text-[10px] font-semibold uppercase tracking-[0.16em] text-[var(--text-muted)]", children: node.kicker }),
|
|
144
99
|
/* @__PURE__ */ jsx2(
|
|
145
100
|
HeadingTag,
|
|
@@ -164,9 +119,9 @@ function renderNode(node, onAction) {
|
|
|
164
119
|
className: cn(
|
|
165
120
|
"text-sm leading-6 text-[var(--text-secondary)]",
|
|
166
121
|
node.tone === "muted" && "text-[var(--text-muted)]",
|
|
167
|
-
node.tone === "success" && "text-
|
|
168
|
-
node.tone === "warning" && "text-
|
|
169
|
-
node.tone === "error" && "text-
|
|
122
|
+
node.tone === "success" && "text-[var(--surface-success-text)]",
|
|
123
|
+
node.tone === "warning" && "text-[var(--surface-warning-text)]",
|
|
124
|
+
node.tone === "error" && "text-[var(--surface-danger-text)]",
|
|
170
125
|
node.mono && "font-[var(--font-mono)] text-[13px]"
|
|
171
126
|
),
|
|
172
127
|
children: node.text
|
|
@@ -175,7 +130,7 @@ function renderNode(node, onAction) {
|
|
|
175
130
|
case "badge":
|
|
176
131
|
return /* @__PURE__ */ jsx2(Badge, { variant: node.tone ?? "outline", children: node.label });
|
|
177
132
|
case "stat":
|
|
178
|
-
return /* @__PURE__ */ jsx2(Card, { variant: "glass", className: "border-[var(--border-subtle)] shadow-[var(--shadow-card)]", children: /* @__PURE__ */
|
|
133
|
+
return /* @__PURE__ */ jsx2(Card, { variant: "glass", className: "border-[var(--border-subtle)] shadow-[var(--shadow-card)]", children: /* @__PURE__ */ jsxs(CardContent, { className: "space-y-2 p-4", children: [
|
|
179
134
|
/* @__PURE__ */ jsx2("div", { className: "text-xs uppercase tracking-[0.12em] text-[var(--text-muted)]", children: node.label }),
|
|
180
135
|
/* @__PURE__ */ jsx2("div", { className: "text-2xl font-semibold tracking-tight text-[var(--text-primary)]", children: node.value }),
|
|
181
136
|
node.change && /* @__PURE__ */ jsx2(
|
|
@@ -183,10 +138,10 @@ function renderNode(node, onAction) {
|
|
|
183
138
|
{
|
|
184
139
|
className: cn(
|
|
185
140
|
"text-xs",
|
|
186
|
-
node.tone === "success" && "text-
|
|
187
|
-
node.tone === "warning" && "text-
|
|
188
|
-
node.tone === "error" && "text-
|
|
189
|
-
node.tone === "info" && "text-
|
|
141
|
+
node.tone === "success" && "text-[var(--surface-success-text)]",
|
|
142
|
+
node.tone === "warning" && "text-[var(--surface-warning-text)]",
|
|
143
|
+
node.tone === "error" && "text-[var(--surface-danger-text)]",
|
|
144
|
+
node.tone === "info" && "text-[var(--surface-info-text)]",
|
|
190
145
|
!node.tone || node.tone === "default" ? "text-[var(--text-muted)]" : void 0
|
|
191
146
|
),
|
|
192
147
|
children: node.change
|
|
@@ -194,7 +149,7 @@ function renderNode(node, onAction) {
|
|
|
194
149
|
)
|
|
195
150
|
] }) });
|
|
196
151
|
case "key_value":
|
|
197
|
-
return /* @__PURE__ */ jsx2("dl", { className: "grid gap-3 sm:grid-cols-2", children: node.items.map((item, index) => /* @__PURE__ */
|
|
152
|
+
return /* @__PURE__ */ jsx2("dl", { className: "grid gap-3 sm:grid-cols-2", children: node.items.map((item, index) => /* @__PURE__ */ jsxs(
|
|
198
153
|
"div",
|
|
199
154
|
{
|
|
200
155
|
className: "rounded-[var(--radius-lg)] border border-[var(--border-subtle)] bg-[var(--bg-card)] px-4 py-3",
|
|
@@ -215,7 +170,7 @@ function renderNode(node, onAction) {
|
|
|
215
170
|
item.id ?? `${item.label}-${index}`
|
|
216
171
|
)) });
|
|
217
172
|
case "code":
|
|
218
|
-
return /* @__PURE__ */
|
|
173
|
+
return /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
219
174
|
node.title && /* @__PURE__ */ jsx2("div", { className: "text-xs uppercase tracking-[0.12em] text-[var(--text-muted)]", children: node.title }),
|
|
220
175
|
/* @__PURE__ */ jsx2(
|
|
221
176
|
CodeBlock,
|
|
@@ -230,8 +185,8 @@ function renderNode(node, onAction) {
|
|
|
230
185
|
case "markdown":
|
|
231
186
|
return /* @__PURE__ */ jsx2("div", { className: "rounded-[var(--radius-lg)] border border-[var(--border-subtle)] bg-[var(--bg-card)] p-5", children: /* @__PURE__ */ jsx2(Markdown, { className: "prose-sm max-w-none", children: node.content }) });
|
|
232
187
|
case "table":
|
|
233
|
-
return /* @__PURE__ */
|
|
234
|
-
/* @__PURE__ */
|
|
188
|
+
return /* @__PURE__ */ jsxs("div", { className: "overflow-hidden rounded-[var(--radius-lg)] border border-[var(--border-subtle)] bg-[var(--bg-card)]", children: [
|
|
189
|
+
/* @__PURE__ */ jsxs(Table, { children: [
|
|
235
190
|
/* @__PURE__ */ jsx2(TableHeader, { children: /* @__PURE__ */ jsx2(TableRow, { className: "border-[var(--border-subtle)]", children: node.columns.map((column) => /* @__PURE__ */ jsx2(
|
|
236
191
|
TableHead,
|
|
237
192
|
{
|
|
@@ -260,7 +215,7 @@ function renderNode(node, onAction) {
|
|
|
260
215
|
case "actions":
|
|
261
216
|
return renderActions(node.actions, onAction);
|
|
262
217
|
case "separator":
|
|
263
|
-
return /* @__PURE__ */
|
|
218
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
|
|
264
219
|
/* @__PURE__ */ jsx2("div", { className: "h-px flex-1 bg-[var(--border-subtle)]" }),
|
|
265
220
|
node.label && /* @__PURE__ */ jsx2("span", { className: "text-[10px] uppercase tracking-[0.14em] text-[var(--text-muted)]", children: node.label }),
|
|
266
221
|
/* @__PURE__ */ jsx2("div", { className: "h-px flex-1 bg-[var(--border-subtle)]" })
|
|
@@ -282,10 +237,10 @@ function renderNode(node, onAction) {
|
|
|
282
237
|
case "grid":
|
|
283
238
|
return /* @__PURE__ */ jsx2("div", { className: cn("grid", GRID_STYLES[node.columns ?? 2], GAP_STYLES[node.gap ?? "md"]), children: node.children.map((child, index) => /* @__PURE__ */ jsx2(Fragment, { children: renderNode(child, onAction) }, child.id ?? `${child.type}-${index}`)) });
|
|
284
239
|
case "card":
|
|
285
|
-
return /* @__PURE__ */
|
|
286
|
-
(node.eyebrow || node.title || node.description || node.badge || node.actions) && /* @__PURE__ */
|
|
287
|
-
/* @__PURE__ */
|
|
288
|
-
/* @__PURE__ */
|
|
240
|
+
return /* @__PURE__ */ jsxs(Card, { variant: "glass", className: "border-[var(--border-subtle)] shadow-[var(--shadow-card)]", children: [
|
|
241
|
+
(node.eyebrow || node.title || node.description || node.badge || node.actions) && /* @__PURE__ */ jsxs(CardHeader, { className: "gap-2 p-4 pb-0", children: [
|
|
242
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-3", children: [
|
|
243
|
+
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1 space-y-1", children: [
|
|
289
244
|
node.eyebrow && /* @__PURE__ */ jsx2("div", { className: "text-[10px] font-semibold uppercase tracking-[0.16em] text-[var(--text-muted)]", children: node.eyebrow }),
|
|
290
245
|
node.title && /* @__PURE__ */ jsx2(CardTitle, { className: "text-base text-[var(--text-primary)]", children: node.title }),
|
|
291
246
|
node.description && /* @__PURE__ */ jsx2(CardDescription, { className: "text-[var(--text-muted)]", children: node.description })
|
|
@@ -312,7 +267,7 @@ function OpenUIArtifactRenderer({
|
|
|
312
267
|
"flex h-full min-h-[16rem] items-center justify-center rounded-[var(--radius-xl)] border border-dashed border-[var(--border-subtle)] bg-[var(--bg-card)] p-6 text-center",
|
|
313
268
|
className
|
|
314
269
|
),
|
|
315
|
-
children: /* @__PURE__ */
|
|
270
|
+
children: /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
316
271
|
/* @__PURE__ */ jsx2("div", { className: "mx-auto flex h-10 w-10 items-center justify-center rounded-full bg-[var(--bg-elevated)] text-[var(--text-muted)]", children: /* @__PURE__ */ jsx2(Minus, { className: "h-4 w-4" }) }),
|
|
317
272
|
/* @__PURE__ */ jsx2("div", { className: "text-sm font-medium text-[var(--text-primary)]", children: "No structured artifact payload" }),
|
|
318
273
|
/* @__PURE__ */ jsx2("div", { className: "text-sm text-[var(--text-muted)]", children: "Pass an OpenUI-like schema to render dynamic result panels with sandbox-ui primitives." })
|
|
@@ -320,9 +275,9 @@ function OpenUIArtifactRenderer({
|
|
|
320
275
|
}
|
|
321
276
|
);
|
|
322
277
|
}
|
|
323
|
-
return /* @__PURE__ */
|
|
278
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("space-y-4 p-4", className), children: [
|
|
324
279
|
nodes.map((node, index) => /* @__PURE__ */ jsx2(Fragment, { children: renderNode(node, onAction) }, node.id ?? `${node.type}-${index}`)),
|
|
325
|
-
/* @__PURE__ */
|
|
280
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 rounded-[var(--radius-lg)] border border-[var(--border-subtle)] bg-[var(--bg-card)] px-3 py-2 text-xs text-[var(--text-muted)]", children: [
|
|
326
281
|
/* @__PURE__ */ jsx2(ArrowRight, { className: "h-3.5 w-3.5" }),
|
|
327
282
|
"Structured artifact rendered through sandbox-ui primitives"
|
|
328
283
|
] })
|
|
@@ -330,7 +285,6 @@ function OpenUIArtifactRenderer({
|
|
|
330
285
|
}
|
|
331
286
|
|
|
332
287
|
export {
|
|
333
|
-
CodeBlock,
|
|
334
288
|
InlineCode,
|
|
335
289
|
OpenUIArtifactRenderer
|
|
336
290
|
};
|
|
@@ -57,7 +57,7 @@ var DropdownMenuSubTrigger = React2.forwardRef(({ className, inset, children, ..
|
|
|
57
57
|
ref,
|
|
58
58
|
className: cn(
|
|
59
59
|
"flex cursor-default select-none items-center rounded-md px-2 py-1.5 text-sm outline-none",
|
|
60
|
-
"focus:bg-accent data-[state=open]:bg-
|
|
60
|
+
"focus:bg-accent data-[state=open]:bg-[var(--depth-3)]",
|
|
61
61
|
inset && "pl-8",
|
|
62
62
|
className
|
|
63
63
|
),
|
|
@@ -74,7 +74,7 @@ var DropdownMenuSubContent = React2.forwardRef(({ className, ...props }, ref) =>
|
|
|
74
74
|
{
|
|
75
75
|
ref,
|
|
76
76
|
className: cn(
|
|
77
|
-
"z-50 min-w-[8rem] overflow-hidden rounded-xl border border-border bg-
|
|
77
|
+
"z-50 min-w-[8rem] overflow-hidden rounded-xl border border-[var(--border-subtle)] bg-[var(--depth-2)] p-1 text-[var(--text-primary)] shadow-[var(--shadow-card)]",
|
|
78
78
|
"data-[state=closed]:animate-out data-[state=open]:animate-in",
|
|
79
79
|
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
80
80
|
"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
|
|
@@ -92,7 +92,7 @@ var DropdownMenuContent = React2.forwardRef(({ className, sideOffset = 4, ...pro
|
|
|
92
92
|
ref,
|
|
93
93
|
sideOffset,
|
|
94
94
|
className: cn(
|
|
95
|
-
"z-50 min-w-[8rem] overflow-hidden rounded-xl border border-border bg-
|
|
95
|
+
"z-50 min-w-[8rem] overflow-hidden rounded-xl border border-[var(--border-subtle)] bg-[var(--depth-2)] p-1 text-[var(--text-primary)] shadow-[var(--shadow-card)]",
|
|
96
96
|
"data-[state=closed]:animate-out data-[state=open]:animate-in",
|
|
97
97
|
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
98
98
|
"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
|
|
@@ -110,7 +110,7 @@ var DropdownMenuItem = React2.forwardRef(({ className, inset, ...props }, ref) =
|
|
|
110
110
|
ref,
|
|
111
111
|
className: cn(
|
|
112
112
|
"relative flex cursor-pointer select-none items-center rounded-md px-2 py-1.5 text-sm outline-none transition-colors",
|
|
113
|
-
"focus:bg-
|
|
113
|
+
"focus:bg-[var(--depth-3)] focus:text-[var(--text-primary)]",
|
|
114
114
|
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
115
115
|
inset && "pl-8",
|
|
116
116
|
className
|
|
@@ -125,7 +125,7 @@ var DropdownMenuCheckboxItem = React2.forwardRef(({ className, children, checked
|
|
|
125
125
|
ref,
|
|
126
126
|
className: cn(
|
|
127
127
|
"relative flex cursor-pointer select-none items-center rounded-md py-1.5 pr-2 pl-8 text-sm outline-none transition-colors",
|
|
128
|
-
"focus:bg-
|
|
128
|
+
"focus:bg-[var(--depth-3)] focus:text-[var(--text-primary)]",
|
|
129
129
|
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
130
130
|
className
|
|
131
131
|
),
|
|
@@ -144,7 +144,7 @@ var DropdownMenuRadioItem = React2.forwardRef(({ className, children, ...props }
|
|
|
144
144
|
ref,
|
|
145
145
|
className: cn(
|
|
146
146
|
"relative flex cursor-pointer select-none items-center rounded-md py-1.5 pr-2 pl-8 text-sm outline-none transition-colors",
|
|
147
|
-
"focus:bg-
|
|
147
|
+
"focus:bg-[var(--depth-3)] focus:text-[var(--text-primary)]",
|
|
148
148
|
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
149
149
|
className
|
|
150
150
|
),
|
|
@@ -173,7 +173,7 @@ var DropdownMenuSeparator = React2.forwardRef(({ className, ...props }, ref) =>
|
|
|
173
173
|
DropdownMenuPrimitive.Separator,
|
|
174
174
|
{
|
|
175
175
|
ref,
|
|
176
|
-
className: cn("-mx-1 my-1 h-px bg-border", className),
|
|
176
|
+
className: cn("-mx-1 my-1 h-px bg-[var(--border-subtle)]", className),
|
|
177
177
|
...props
|
|
178
178
|
}
|
|
179
179
|
));
|