@tangle-network/sandbox-ui 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/auth.js +3 -3
  2. package/dist/chat.d.ts +1 -1
  3. package/dist/chat.js +11 -9
  4. package/dist/{chunk-ZP6GSX4D.js → chunk-565V6JTN.js} +26 -50
  5. package/dist/chunk-5CEMHKBP.js +72 -0
  6. package/dist/{chunk-FOQTE67I.js → chunk-5F4NX5R2.js} +10 -5
  7. package/dist/{chunk-MUOL44AE.js → chunk-BRBTD7RH.js} +6 -6
  8. package/dist/{chunk-SSKVYXCR.js → chunk-DCPYTL4W.js} +62 -79
  9. package/dist/chunk-DLCFZDGX.js +182 -0
  10. package/dist/{chunk-HXEA7L2T.js → chunk-FFOXUHOF.js} +10 -10
  11. package/dist/chunk-H5XYSFYE.js +228 -0
  12. package/dist/{chunk-TQN3VR4F.js → chunk-JP725R4W.js} +2 -2
  13. package/dist/{chunk-CJ2RYVZH.js → chunk-NTSRY4GW.js} +68 -10
  14. package/dist/{chunk-DQYODCBN.js → chunk-P24K22CV.js} +57 -66
  15. package/dist/{chunk-GVUW4VDD.js → chunk-R3IU37AW.js} +161 -229
  16. package/dist/chunk-TDYQBLL5.js +127 -0
  17. package/dist/{chunk-HWLX5NME.js → chunk-TSE423UF.js} +12 -12
  18. package/dist/{chunk-YDBXQQLC.js → chunk-VBWY44UU.js} +30 -76
  19. package/dist/{chunk-IW2JZCOC.js → chunk-WBQ7VULC.js} +7 -7
  20. package/dist/{chunk-72UEKFZ2.js → chunk-WC7QTWPN.js} +65 -42
  21. package/dist/{chunk-HYLTXGOI.js → chunk-WQH233GF.js} +5 -5
  22. package/dist/{chunk-CCKNIAS7.js → chunk-XBR3IP7B.js} +2 -2
  23. package/dist/{chunk-OHMO7NUX.js → chunk-XTPAWK7L.js} +20 -31
  24. package/dist/{chunk-SULQQJPB.js → chunk-YS66Q3RC.js} +1 -1
  25. package/dist/{chunk-FRGMMANX.js → chunk-YYGECNZZ.js} +3 -3
  26. package/dist/{chunk-MVYFNPAH.js → chunk-ZOZX2U6I.js} +285 -271
  27. package/dist/dashboard.d.ts +2 -2
  28. package/dist/dashboard.js +6 -6
  29. package/dist/{document-editor-pane-5TN2VWGZ.js → document-editor-pane-JNXPANWM.js} +2 -2
  30. package/dist/editor.js +2 -2
  31. package/dist/files.js +2 -2
  32. package/dist/globals.css +129 -95
  33. package/dist/hooks.d.ts +2 -2
  34. package/dist/hooks.js +5 -5
  35. package/dist/{index-tTfThG0n.d.ts → index-CDt0GE4A.d.ts} +7 -8
  36. package/dist/index.d.ts +16 -23
  37. package/dist/index.js +27 -26
  38. package/dist/markdown.d.ts +14 -17
  39. package/dist/markdown.js +1 -1
  40. package/dist/openui.js +5 -5
  41. package/dist/pages.d.ts +10 -3
  42. package/dist/pages.js +147 -184
  43. package/dist/primitives.d.ts +8 -5
  44. package/dist/primitives.js +8 -8
  45. package/dist/run.d.ts +1 -1
  46. package/dist/run.js +4 -4
  47. package/dist/sdk-hooks.d.ts +1 -1
  48. package/dist/sdk-hooks.js +4 -4
  49. package/dist/styles.css +129 -95
  50. package/dist/terminal.d.ts +2 -2
  51. package/dist/terminal.js +13 -43
  52. package/dist/tokens.css +299 -179
  53. package/dist/{tool-call-feed-D5Ume-Pt.d.ts → tool-call-feed-Bs3MyQMT.d.ts} +3 -1
  54. package/dist/{usage-chart-CY9xo3KX.d.ts → usage-chart-XCoB_7Xu.d.ts} +1 -2
  55. package/dist/{use-pty-session-DeZSxOCN.d.ts → use-pty-session-COzVkhtc.d.ts} +1 -1
  56. package/dist/workspace.d.ts +3 -1
  57. package/dist/workspace.js +11 -11
  58. package/package.json +14 -2
  59. package/dist/chunk-GRYHFH5O.js +0 -110
  60. package/dist/chunk-LTFK464G.js +0 -103
  61. package/dist/chunk-MXCSSOGH.js +0 -105
package/dist/tokens.css CHANGED
@@ -1,66 +1,65 @@
1
1
  /* Tangle Sandbox UI design tokens */
2
+ /* Brand reference: tangle.tools — deep indigo palette, electric #4a3aff primary */
2
3
 
3
- /* MD3 surface hierarchy — Stitch design system */
4
+ /* MD3 surface hierarchy */
4
5
  :root,
5
6
  [data-sandbox-ui] {
6
- --md3-surface: #12131a;
7
- --md3-surface-dim: #12131a;
8
- --md3-surface-bright: #383841;
9
- --md3-surface-container-lowest: #0d0e15;
10
- --md3-surface-container-low: #1a1b23;
11
- --md3-surface-container: #1e1f27;
12
- --md3-surface-container-high: #292931;
13
- --md3-surface-container-highest: #34343c;
14
- --md3-surface-variant: #34343c;
15
- --md3-on-surface: #e3e1ec;
16
- --md3-on-surface-variant: #ccc3d7;
17
- --md3-primary: #d1bcff;
18
- --md3-primary-container: #a178ff;
19
- --md3-on-primary: #3c0090;
20
- --md3-on-primary-container: #34007f;
21
- --md3-primary-fixed: #e9ddff;
22
- --md3-primary-fixed-dim: #d1bcff;
23
- --md3-secondary: #b6c4ff;
24
- --md3-secondary-container: #133eae;
25
- --md3-on-secondary: #00277f;
26
- --md3-on-secondary-container: #a3b5ff;
27
- --md3-secondary-fixed: #dce1ff;
28
- --md3-secondary-fixed-dim: #b6c4ff;
29
- --md3-tertiary: #c7c5d0;
30
- --md3-tertiary-container: #90909a;
31
- --md3-outline: #958da1;
32
- --md3-outline-variant: #4a4455;
33
- --md3-error: #ffb4ab;
34
- --md3-error-container: #93000a;
35
- --md3-on-error: #690005;
36
- --md3-inverse-surface: #e3e1ec;
37
- --md3-inverse-primary: #6f35df;
38
- --md3-surface-tint: #d1bcff;
39
- /* Semantic HSL bridge for shadcn/radix primitives */
40
- --hsl-background: 245 18% 7%;
41
- --hsl-foreground: 220 20% 96%;
42
- --hsl-card: 246 21% 10%;
43
- --hsl-card-foreground: 220 20% 96%;
44
- --hsl-popover: 246 21% 10%;
45
- --hsl-popover-foreground: 220 20% 96%;
46
- --hsl-primary: 226 84% 66%;
47
- --hsl-primary-foreground: 220 20% 98%;
48
- --hsl-secondary: 243 18% 16%;
49
- --hsl-secondary-foreground: 220 18% 92%;
50
- --hsl-muted: 243 18% 14%;
51
- --hsl-muted-foreground: 230 16% 68%;
52
- --hsl-accent: 243 18% 18%;
53
- --hsl-accent-foreground: 220 18% 94%;
54
- --hsl-destructive: 0 82% 63%;
55
- --hsl-destructive-foreground: 220 20% 98%;
56
- --hsl-border: 242 17% 20%;
57
- --hsl-input: 243 18% 16%;
58
- --hsl-ring: 226 84% 66%;
59
- --hsl-success: 142 70% 48%;
60
- --hsl-warning: 41 96% 58%;
61
- --hsl-info: 199 89% 60%;
62
-
63
- /* Tailwind/shadcn variable aliases */
7
+ --md3-surface: #131228;
8
+ --md3-surface-dim: #09080F;
9
+ --md3-surface-bright: #2E2C56;
10
+ --md3-surface-container-lowest: #06060E;
11
+ --md3-surface-container-low: #131228;
12
+ --md3-surface-container: #191738;
13
+ --md3-surface-container-high: #211F45;
14
+ --md3-surface-container-highest: #2A2854;
15
+ --md3-surface-variant: #2A2854;
16
+ --md3-on-surface: #E8E6F6;
17
+ --md3-on-surface-variant: #C4C0D8;
18
+ --md3-primary: #8263FF;
19
+ --md3-primary-container: #4a3aff;
20
+ --md3-on-primary: #FFFFFF;
21
+ --md3-on-primary-container: #FFFFFF;
22
+ --md3-primary-fixed: #C4AAFF;
23
+ --md3-primary-fixed-dim: #8263FF;
24
+ --md3-secondary: #6B7094;
25
+ --md3-secondary-container: #1E1D35;
26
+ --md3-on-secondary: #FFFFFF;
27
+ --md3-on-secondary-container: #C4C0D8;
28
+ --md3-tertiary: #10b981;
29
+ --md3-outline: #6B7094;
30
+ --md3-outline-variant: #2A2B39;
31
+ --md3-error: #FF4D6D;
32
+ --md3-error-container: #7A0020;
33
+ --md3-on-error: #FFFFFF;
34
+ --md3-inverse-surface: #E8E6F6;
35
+ --md3-inverse-primary: #4a3aff;
36
+ --md3-surface-tint: #8263FF;
37
+
38
+ /* Semantic HSL bridge */
39
+ --hsl-background: 248 52% 5%;
40
+ --hsl-foreground: 244 20% 94%;
41
+ --hsl-card: 246 42% 12%;
42
+ --hsl-card-foreground: 244 20% 94%;
43
+ --hsl-popover: 246 40% 15%;
44
+ --hsl-popover-foreground: 244 20% 94%;
45
+ --hsl-primary: 247 100% 61%;
46
+ --hsl-primary-foreground: 0 0% 100%;
47
+ --hsl-secondary: 243 25% 19%;
48
+ --hsl-secondary-foreground: 240 16% 90%;
49
+ --hsl-muted: 242 22% 16%;
50
+ --hsl-muted-foreground: 233 17% 55%;
51
+ --hsl-accent: 245 28% 21%;
52
+ --hsl-accent-foreground: 240 16% 92%;
53
+ --hsl-destructive: 348 90% 60%;
54
+ --hsl-destructive-foreground: 0 0% 100%;
55
+ --hsl-border: 236 16% 22%;
56
+ --hsl-input: 245 30% 15%;
57
+ --hsl-ring: 247 100% 61%;
58
+ --hsl-success: 160 84% 39%;
59
+ --hsl-warning: 40 94% 56%;
60
+ --hsl-info: 200 88% 56%;
61
+
62
+ /* Tailwind/shadcn aliases */
64
63
  --background: var(--hsl-background);
65
64
  --foreground: var(--hsl-foreground);
66
65
  --card: var(--hsl-card);
@@ -85,119 +84,185 @@
85
84
  --error: var(--hsl-destructive);
86
85
  --info: var(--hsl-info);
87
86
 
88
- /* Brand gradients */
89
- --tangle-gradient: linear-gradient(135deg, hsl(226 84% 66%), hsl(199 89% 60%));
90
- --tangle-gradient-text: linear-gradient(45deg, hsl(226 84% 72%), hsl(199 89% 66%));
91
- --accent-gradient-strong: linear-gradient(135deg, hsl(var(--hsl-primary)), var(--brand-glow));
92
- --accent-surface-soft: hsl(var(--hsl-primary) / 0.12);
93
- --accent-surface-strong: hsl(var(--hsl-primary) / 0.18);
94
- --accent-text: var(--brand-cool);
87
+ /* Depth scale — Tangle deep indigo surfaces */
88
+ --depth-1: #08071A;
89
+ --depth-2: #131228;
90
+ --depth-3: #1C1A3A;
91
+ --depth-4: #26244C;
92
+
93
+ /* Status colors */
94
+ --status-running: #10b981;
95
+ --status-creating: #8263FF;
96
+ --status-stopped: #FFB800;
97
+ --status-warm: #FF8A4C;
98
+ --status-cold: #4AABFF;
99
+ --status-error: #FF4D6D;
100
+ --status-deleted: #6B7094;
101
+
102
+ /* Status surface tokens — bg / border / text for each semantic color */
103
+ --surface-success-bg: #022c22;
104
+ --surface-success-border: #14532d;
105
+ --surface-success-text: #34d399;
106
+ --surface-warning-bg: #451a03;
107
+ --surface-warning-border: #78350f;
108
+ --surface-warning-text: #fbbf24;
109
+ --surface-danger-bg: #450a0a;
110
+ --surface-danger-border: #7f1d1d;
111
+ --surface-danger-text: #f87171;
112
+ --surface-info-bg: #082f49;
113
+ --surface-info-border: #0c4a6e;
114
+ --surface-info-text: #38bdf8;
115
+ --surface-teal-bg: #042f2e;
116
+ --surface-teal-border: #134e4a;
117
+ --surface-teal-text: #2dd4bf;
118
+ --surface-violet-bg: #2e1065;
119
+ --surface-violet-border: #4c1d95;
120
+ --surface-violet-text: #a78bfa;
121
+ --surface-orange-bg: #431407;
122
+ --surface-orange-border: #7c2d12;
123
+ --surface-orange-text: #fb923c;
124
+ --surface-neutral-bg: var(--depth-3);
125
+ --surface-neutral-border: var(--border-subtle);
126
+ --surface-neutral-text: var(--text-muted);
127
+
128
+ /* Legacy glass aliases — mapped to solid depth tokens */
129
+ --glass-bg: var(--depth-2);
130
+ --glass-bg-strong: var(--depth-3);
131
+ --glass-border: var(--border-subtle);
132
+ --glass-border-hover: var(--border-default);
133
+ --glass-blur: 0px;
134
+
135
+ /* Mesh gradient — Tangle brand glows */
136
+ --mesh-teal: rgba(16, 185, 129, 0.05);
137
+ --mesh-violet: rgba(130, 99, 255, 0.07);
138
+ --mesh-blue: rgba(74, 58, 255, 0.04);
139
+
140
+ /* Brand gradients — Tangle exact */
141
+ --tangle-gradient: linear-gradient(135deg, #8263FF, #4a3aff);
142
+ --tangle-gradient-text: linear-gradient(135deg, #A78FFF, #6D6AFF);
143
+ --accent-gradient-strong: linear-gradient(135deg, #8263FF, #4a3aff);
144
+ --accent-surface-soft: rgba(130, 99, 255, 0.12);
145
+ --accent-surface-strong: rgba(130, 99, 255, 0.20);
146
+ --accent-text: #A78FFF;
95
147
 
96
148
  /* Surfaces */
97
- --bg-root: radial-gradient(circle at top, rgba(98, 114, 243, 0.14), transparent 34%), linear-gradient(180deg, hsl(var(--hsl-background)), hsl(246 19% 9%) 82%);
98
- --bg-dark: hsl(246 19% 9%);
149
+ --bg-root: radial-gradient(ellipse 70% 50% at 20% 0%, rgba(130, 99, 255, 0.08), transparent),
150
+ radial-gradient(ellipse 50% 40% at 80% 10%, rgba(74, 58, 255, 0.06), transparent),
151
+ linear-gradient(180deg, var(--depth-1), #0D0C1E 100%);
152
+ --bg-dark: var(--depth-1);
99
153
  --bg-card: hsl(var(--hsl-card));
100
- --bg-elevated: hsl(245 20% 12%);
101
- --bg-section: hsl(246 18% 8%);
154
+ --bg-elevated: hsl(246 38% 18%);
155
+ --bg-section: hsl(246 38% 9%);
102
156
  --bg-input: hsl(var(--hsl-input));
103
- --bg-hover: hsl(243 18% 18%);
104
- --bg-selection: hsl(226 84% 66% / 0.15);
157
+ --bg-hover: rgba(130, 99, 255, 0.08);
158
+ --bg-selection: rgba(130, 99, 255, 0.18);
105
159
 
106
160
  /* Text */
107
161
  --text-primary: hsl(var(--hsl-foreground));
108
- --text-secondary: hsl(220 18% 88%);
109
- --text-muted: hsl(var(--hsl-muted-foreground));
162
+ --text-secondary: hsl(244 18% 86%);
163
+ --text-muted: #6B7094;
164
+ --text-dim: #4A4D6A;
110
165
 
111
- /* Brand accents */
112
- --brand-primary: hsl(var(--hsl-primary));
113
- --brand-strong: hsl(226 80% 60%);
114
- --brand-cool: hsl(220 88% 70%);
115
- --brand-glow: hsl(199 89% 66%);
116
- --brand-purple: hsl(254 84% 72%);
117
- --brand-vibrant: hsl(214 90% 63%);
166
+ /* Brand accents — Tangle exact */
167
+ --brand-primary: #4a3aff;
168
+ --brand-strong: #3B2ECC;
169
+ --brand-cool: #8263FF;
170
+ --brand-glow: #6D6AFF;
171
+ --brand-purple: #A78FFF;
172
+ --brand-vibrant: #4a3aff;
173
+ --brand-emerald: #10b981;
118
174
 
119
175
  /* Borders */
120
- --border-subtle: hsl(var(--hsl-border) / 0.55);
121
- --border-default: hsl(var(--hsl-border) / 0.8);
122
- --border-hover: hsl(var(--hsl-border) / 1);
123
- --border-accent: hsl(var(--hsl-primary) / 0.35);
124
- --border-accent-hover: hsl(var(--hsl-primary) / 0.55);
176
+ --border-subtle: rgba(107, 112, 148, 0.25);
177
+ --border-default: rgba(107, 112, 148, 0.40);
178
+ --border-hover: rgba(107, 112, 148, 0.60);
179
+ --border-accent: rgba(130, 99, 255, 0.40);
180
+ --border-accent-hover: rgba(130, 99, 255, 0.65);
125
181
 
126
182
  /* Buttons */
127
- --btn-primary-bg: hsl(var(--hsl-primary));
128
- --btn-primary-hover: hsl(226 84% 72%);
129
- --btn-cta-bg: hsl(220 20% 98%);
130
- --btn-cta-text: hsl(245 18% 10%);
183
+ --btn-primary-bg: #4a3aff;
184
+ --btn-primary-hover: #5B4DFF;
185
+ --btn-cta-bg: #8263FF;
186
+ --btn-cta-text: #FFFFFF;
131
187
 
132
188
  /* Code / runtime syntax */
133
- --code-keyword: hsl(254 88% 76%);
134
- --code-string: hsl(199 89% 72%);
135
- --code-function: hsl(214 90% 72%);
136
- --code-number: hsl(41 96% 66%);
137
- --code-success: hsl(var(--hsl-success));
138
- --code-comment: hsl(230 14% 60%);
139
- --code-error: hsl(var(--hsl-destructive));
189
+ --code-keyword: #A78FFF;
190
+ --code-string: #10b981;
191
+ --code-function: #6D9FFF;
192
+ --code-number: #FFB347;
193
+ --code-success: #10b981;
194
+ --code-comment: #6B7094;
195
+ --code-error: #FF4D6D;
140
196
 
141
197
  /* Shadows */
142
- --shadow-card: 0 18px 60px rgba(0, 0, 0, 0.28), 0 0 0 1px rgba(118, 146, 255, 0.08);
143
- --shadow-dropdown: 0 24px 80px rgba(0, 0, 0, 0.45);
144
- --shadow-glow: 0 0 40px rgba(96, 165, 250, 0.14);
145
- --shadow-accent: 0 18px 48px rgba(0, 0, 0, 0.24), 0 0 0 1px hsl(var(--hsl-primary) / 0.12);
198
+ --shadow-card: 0 1px 3px rgba(0, 0, 0, 0.4), 0 0 0 1px rgba(255, 255, 255, 0.04);
199
+ --shadow-dropdown: 0 8px 32px rgba(0, 0, 0, 0.6), 0 0 0 1px rgba(255, 255, 255, 0.06);
200
+ --shadow-glow: 0 0 32px rgba(130, 99, 255, 0.18);
201
+ --shadow-accent: 0 1px 3px rgba(0, 0, 0, 0.3), 0 0 0 1px rgba(130, 99, 255, 0.2);
202
+ --shadow-status-running: 0 0 6px rgba(16, 185, 129, 0.5);
203
+ --shadow-status-creating: 0 0 6px rgba(130, 99, 255, 0.5);
204
+ --shadow-status-error: 0 0 6px rgba(255, 77, 109, 0.5);
146
205
 
147
206
  /* Radii */
148
- --radius-sm: 10px;
149
- --radius-md: 14px;
150
- --radius-lg: 18px;
151
- --radius-xl: 24px;
207
+ --radius-sm: 6px;
208
+ --radius-md: 8px;
209
+ --radius-lg: 12px;
210
+ --radius-xl: 16px;
152
211
  --radius-pill: 999px;
153
212
  --radius-full: 999px;
154
- --radius: 0.875rem;
213
+ --radius: 0.625rem;
155
214
 
156
- /* Density-aware metrics */
157
- --control-height: 2.5rem;
215
+ /* Density */
216
+ --control-height: 2.25rem;
158
217
  --panel-padding: 1rem;
159
218
  --content-max-width: 80rem;
160
219
 
161
220
  /* Transitions */
162
- --transition-fast: 0.15s ease;
163
- --transition-default: 0.2s ease;
164
- --transition-medium: 0.3s ease;
221
+ --transition-fast: 0.1s ease;
222
+ --transition-default: 0.16s ease;
223
+ --transition-medium: 0.24s ease;
165
224
 
166
225
  /* Fonts */
167
- --font-sans: "Inter", ui-sans-serif, system-ui, sans-serif;
168
- --font-mono: "JetBrains Mono", ui-monospace, monospace;
226
+ --font-sans: "Geist", "DM Sans", ui-sans-serif, system-ui, sans-serif;
227
+ --font-display: "Outfit", "Geist", sans-serif;
228
+ --font-mono: "Geist Mono", "JetBrains Mono", ui-monospace, monospace;
169
229
  }
170
230
 
171
231
  [data-sandbox-theme="builder"] {
172
- --hsl-primary: 214 90% 63%;
173
- --hsl-ring: 214 90% 63%;
174
- --brand-cool: hsl(214 90% 68%);
175
- --brand-glow: hsl(190 92% 62%);
176
- --tangle-gradient: linear-gradient(135deg, hsl(214 90% 63%), hsl(190 92% 62%));
177
- --accent-gradient-strong: linear-gradient(135deg, hsl(214 90% 63%), hsl(190 92% 62%));
232
+ --hsl-primary: 247 100% 61%;
233
+ --brand-primary: #4a3aff;
234
+ --brand-cool: #6D9FFF;
235
+ --brand-glow: #4a3aff;
236
+ --tangle-gradient: linear-gradient(135deg, #4a3aff, #6D9FFF);
237
+ --accent-gradient-strong: linear-gradient(135deg, #4a3aff, #6D9FFF);
238
+ --status-creating: #4a3aff;
178
239
  }
179
240
 
180
241
  [data-sandbox-theme="consumer"] {
181
- --hsl-background: 222 16% 10%;
182
- --hsl-card: 223 18% 13%;
183
- --hsl-input: 223 18% 15%;
184
- --hsl-primary: 187 75% 48%;
185
- --hsl-ring: 187 75% 48%;
186
- --brand-cool: hsl(187 75% 54%);
187
- --brand-glow: hsl(164 74% 56%);
188
- --tangle-gradient: linear-gradient(135deg, hsl(187 75% 48%), hsl(164 74% 56%));
189
- --accent-gradient-strong: linear-gradient(135deg, hsl(187 75% 48%), hsl(164 74% 56%));
242
+ --hsl-background: 246 44% 8%;
243
+ --hsl-card: 246 36% 13%;
244
+ --hsl-input: 246 30% 16%;
245
+ --hsl-primary: 160 84% 39%;
246
+ --hsl-ring: 160 84% 39%;
247
+ --brand-primary: #10b981;
248
+ --brand-cool: #10b981;
249
+ --brand-glow: #34D399;
250
+ --tangle-gradient: linear-gradient(135deg, #10b981, #34D399);
251
+ --accent-gradient-strong: linear-gradient(135deg, #10b981, #34D399);
252
+ --accent-text: #34D399;
253
+ --btn-primary-bg: #10b981;
254
+ --btn-primary-hover: #0EA572;
190
255
  }
191
256
 
192
257
  [data-sandbox-theme="vault"] {
193
- /* Vault AI — navy/emerald fintech palette matching tangle.tools/taxes */
258
+ /* Light themeclean navy/emerald */
194
259
  --hsl-background: 210 17% 97%;
195
260
  --hsl-foreground: 210 20% 10%;
196
261
  --hsl-card: 0 0% 100%;
197
262
  --hsl-card-foreground: 210 20% 10%;
198
263
  --hsl-popover: 0 0% 100%;
199
264
  --hsl-popover-foreground: 210 20% 10%;
200
- --hsl-primary: 212 100% 10%;
265
+ --hsl-primary: 248 100% 35%;
201
266
  --hsl-primary-foreground: 0 0% 100%;
202
267
  --hsl-secondary: 152 100% 22%;
203
268
  --hsl-secondary-foreground: 0 0% 100%;
@@ -209,67 +274,122 @@
209
274
  --hsl-destructive-foreground: 0 0% 100%;
210
275
  --hsl-border: 214 18% 88%;
211
276
  --hsl-input: 214 18% 90%;
212
- --hsl-ring: 152 100% 22%;
277
+ --hsl-ring: 248 100% 35%;
213
278
  --hsl-success: 152 82% 34%;
214
279
  --hsl-warning: 41 96% 50%;
215
280
  --hsl-info: 212 80% 50%;
216
281
 
282
+ --depth-1: #f8f9fa;
283
+ --depth-2: #f2f3f5;
284
+ --depth-3: #e8eaed;
285
+ --depth-4: #dde0e5;
286
+
287
+ --status-running: #2C8C86;
288
+ --status-creating: #3B2ECC;
289
+ --status-stopped: #B45309;
290
+ --status-warm: #C05621;
291
+ --status-cold: #1D6FA4;
292
+ --status-error: #C81E34;
293
+ --status-deleted: #6B6B82;
294
+
295
+ --glass-bg: var(--depth-2);
296
+ --glass-bg-strong: var(--depth-1);
297
+ --glass-border: var(--border-subtle);
298
+ --glass-border-hover: var(--border-default);
299
+
300
+ /* Status surface overrides — light values */
301
+ --surface-success-bg: #ecfdf5;
302
+ --surface-success-border: #a7f3d0;
303
+ --surface-success-text: #047857;
304
+ --surface-warning-bg: #fffbeb;
305
+ --surface-warning-border: #fde68a;
306
+ --surface-warning-text: #b45309;
307
+ --surface-danger-bg: #fff1f2;
308
+ --surface-danger-border: #fecdd3;
309
+ --surface-danger-text: #b91c1c;
310
+ --surface-info-bg: #f0f9ff;
311
+ --surface-info-border: #bae6fd;
312
+ --surface-info-text: #0369a1;
313
+ --surface-teal-bg: #f0fdfa;
314
+ --surface-teal-border: #99f6e4;
315
+ --surface-teal-text: #0f766e;
316
+ --surface-violet-bg: #f5f3ff;
317
+ --surface-violet-border: #ddd6fe;
318
+ --surface-violet-text: #6d28d9;
319
+ --surface-orange-bg: #fff7ed;
320
+ --surface-orange-border: #fed7aa;
321
+ --surface-orange-text: #c2410c;
322
+ --surface-neutral-bg: var(--depth-3);
323
+ --surface-neutral-border: var(--border-subtle);
324
+ --surface-neutral-text: var(--text-muted);
325
+
326
+ --mesh-teal: rgba(44, 140, 134, 0.04);
327
+ --mesh-violet: rgba(74, 58, 255, 0.03);
328
+ --mesh-blue: rgba(29, 111, 164, 0.03);
329
+
217
330
  --bg-root: #f8f9fa;
218
- --bg-dark: #f3f4f5;
331
+ --bg-dark: #f2f3f5;
219
332
  --bg-card: #ffffff;
220
- --bg-elevated: #edeeef;
221
- --bg-section: #f3f4f5;
222
- --bg-input: #f3f4f5;
223
- --bg-hover: #e7e8e9;
224
- --bg-selection: rgba(0, 110, 42, 0.08);
225
-
226
- --text-primary: #001831;
227
- --text-secondary: #43474e;
228
- --text-muted: #73777f;
229
-
230
- --brand-primary: #001831;
231
- --brand-strong: #002d54;
232
- --brand-cool: #006e2a;
233
- --brand-glow: #3ce36a;
234
- --brand-purple: #001831;
235
- --brand-vibrant: #006e2a;
236
-
237
- --border-subtle: rgba(0, 24, 49, 0.06);
238
- --border-default: rgba(0, 24, 49, 0.1);
239
- --border-hover: rgba(0, 24, 49, 0.15);
240
- --border-accent: rgba(0, 110, 42, 0.2);
241
- --border-accent-hover: rgba(0, 110, 42, 0.4);
242
-
243
- --btn-primary-bg: #001831;
244
- --btn-primary-hover: #002d54;
245
- --btn-cta-bg: #006e2a;
333
+ --bg-elevated: #ebedf0;
334
+ --bg-section: #f2f3f5;
335
+ --bg-input: #f0f1f4;
336
+ --bg-hover: rgba(74, 58, 255, 0.05);
337
+ --bg-selection: rgba(74, 58, 255, 0.08);
338
+
339
+ --text-primary: #0F1133;
340
+ --text-secondary: #2A2D4A;
341
+ --text-muted: #6B7094;
342
+ --text-dim: #9DA3C2;
343
+
344
+ --brand-primary: #1e116e;
345
+ --brand-strong: #211f54;
346
+ --brand-cool: #4a3aff;
347
+ --brand-glow: #8263FF;
348
+ --brand-purple: #4a3aff;
349
+ --brand-vibrant: #4a3aff;
350
+ --brand-emerald: #10b981;
351
+
352
+ --border-subtle: rgba(107, 112, 148, 0.15);
353
+ --border-default: rgba(107, 112, 148, 0.25);
354
+ --border-hover: rgba(107, 112, 148, 0.40);
355
+ --border-accent: rgba(74, 58, 255, 0.25);
356
+ --border-accent-hover: rgba(74, 58, 255, 0.50);
357
+
358
+ --btn-primary-bg: #1e116e;
359
+ --btn-primary-hover: #211f54;
360
+ --btn-cta-bg: #4a3aff;
246
361
  --btn-cta-text: #ffffff;
247
362
 
248
- --code-keyword: #002d54;
249
- --code-string: #006e2a;
250
- --code-function: #001831;
251
- --code-number: #b45309;
252
- --code-success: #006e2a;
253
- --code-comment: #73777f;
254
- --code-error: #ba1a1a;
363
+ --code-keyword: #1e116e;
364
+ --code-string: #10b981;
365
+ --code-function: #1e116e;
366
+ --code-number: #B45309;
367
+ --code-success: #10b981;
368
+ --code-comment: #6B7094;
369
+ --code-error: #C81E34;
255
370
 
256
- --shadow-card: 0 20px 48px rgba(0, 24, 49, 0.06);
257
- --shadow-dropdown: 0 24px 64px rgba(0, 24, 49, 0.12);
258
- --shadow-glow: 0 0 40px rgba(0, 110, 42, 0.08);
371
+ --shadow-card: 0 1px 4px rgba(15, 17, 51, 0.06), 0 0 0 1px rgba(15, 17, 51, 0.05);
372
+ --shadow-dropdown: 0 8px 32px rgba(15, 17, 51, 0.10), 0 0 0 1px rgba(15, 17, 51, 0.06);
373
+ --shadow-glow: 0 0 32px rgba(74, 58, 255, 0.10);
374
+ --shadow-accent: 0 2px 8px rgba(74, 58, 255, 0.12), 0 0 0 1px rgba(74, 58, 255, 0.08);
259
375
 
260
- --tangle-gradient: linear-gradient(135deg, #001831, #002d54);
261
- --tangle-gradient-text: linear-gradient(135deg, #001831, #006e2a);
262
- --accent-gradient-strong: linear-gradient(135deg, #001831, #002d54);
376
+ --tangle-gradient: linear-gradient(135deg, #1e116e, #4a3aff);
377
+ --tangle-gradient-text: linear-gradient(135deg, #1e116e, #4a3aff);
378
+ --accent-gradient-strong: linear-gradient(135deg, #1e116e, #4a3aff);
379
+ --accent-surface-soft: rgba(74, 58, 255, 0.06);
380
+ --accent-surface-strong: rgba(74, 58, 255, 0.12);
381
+ --accent-text: #1e116e;
263
382
 
264
- --font-sans: "Inter", "Manrope", ui-sans-serif, system-ui, sans-serif;
265
- --font-mono: "JetBrains Mono", ui-monospace, monospace;
383
+ --font-sans: "Geist", "DM Sans", ui-sans-serif, system-ui, sans-serif;
384
+ --font-display: "Outfit", "Geist", sans-serif;
385
+ --font-mono: "Geist Mono", "JetBrains Mono", ui-monospace, monospace;
266
386
  }
267
387
 
268
388
  [data-density="compact"] {
269
- --radius-sm: 8px;
270
- --radius-md: 12px;
271
- --radius-lg: 16px;
272
- --radius-xl: 20px;
273
- --control-height: 2.25rem;
274
- --panel-padding: 0.75rem;
389
+ --radius-sm: 4px;
390
+ --radius-md: 6px;
391
+ --radius-lg: 8px;
392
+ --radius-xl: 12px;
393
+ --control-height: 2rem;
394
+ --panel-padding: 0.625rem;
275
395
  }
@@ -9,10 +9,12 @@ interface ToolCallStepProps {
9
9
  status: ToolCallStatus;
10
10
  detail?: string;
11
11
  output?: string;
12
+ /** Override syntax highlighting language; inferred from detail path if omitted */
13
+ language?: string;
12
14
  duration?: number;
13
15
  className?: string;
14
16
  }
15
- declare function ToolCallStep({ type, label, status, detail, output, duration, className, }: ToolCallStepProps): react_jsx_runtime.JSX.Element;
17
+ declare function ToolCallStep({ type, label, status, detail, output, language, duration, className, }: ToolCallStepProps): react_jsx_runtime.JSX.Element;
16
18
  /**
17
19
  * ToolCallGroup — groups multiple tool calls under a heading.
18
20
  */
@@ -57,9 +57,8 @@ interface UsageChartProps {
57
57
  data: UsageDataPoint[];
58
58
  title: string;
59
59
  unit: string;
60
- variant?: "agentrun" | "automateai" | "tradingbots" | "sandbox";
61
60
  className?: string;
62
61
  }
63
- declare function UsageChart({ data, title, unit, variant, className, }: UsageChartProps): react_jsx_runtime.JSX.Element;
62
+ declare function UsageChart({ data, title, unit, className }: UsageChartProps): react_jsx_runtime.JSX.Element;
64
63
 
65
64
  export { type BillingSubscription as B, type PricingTier as P, type UsageDataPoint as U, type BillingBalance as a, type BillingUsage as b, BillingDashboard as c, type BillingDashboardProps as d, PricingPage as e, type PricingPageProps as f, UsageChart as g, type UsageChartProps as h };
@@ -61,7 +61,7 @@ interface UsePtySessionReturn {
61
61
  * Protocol:
62
62
  * - POST /terminals → create session → { data: { sessionId } }
63
63
  * - GET /terminals/{id}/stream → SSE output (raw PTY with ANSI codes)
64
- * - POST /terminals/{id}/execute → send command { command: "..." }
64
+ * - POST /terminals/{id}/input → send input { data: "..." }
65
65
  * - DELETE /terminals/{id} → close session
66
66
  */
67
67
  declare function usePtySession({ apiUrl, token, onData }: UsePtySessionOptions): UsePtySessionReturn;
@@ -151,6 +151,8 @@ interface RuntimePaneProps {
151
151
  subtitle?: string;
152
152
  statusBanner?: StatusBannerProps;
153
153
  statusBar?: StatusBarProps;
154
+ /** When provided, replaces the entire 2-column grid with custom content (e.g. a full-pane TerminalView). */
155
+ content?: React.ReactNode;
154
156
  terminal?: TerminalProps;
155
157
  audit?: React.ReactNode;
156
158
  inspector?: React.ReactNode;
@@ -161,7 +163,7 @@ interface RuntimePaneProps {
161
163
  * RuntimePane — shared operating surface for sandbox session state, terminal
162
164
  * output, audit results, and runtime metadata.
163
165
  */
164
- declare function RuntimePane({ title, subtitle, statusBanner, statusBar, terminal, audit, inspector, footer, className, }: RuntimePaneProps): react_jsx_runtime.JSX.Element;
166
+ declare function RuntimePane({ title, subtitle, statusBanner, statusBar, content, terminal, audit, inspector, footer, className, }: RuntimePaneProps): react_jsx_runtime.JSX.Element;
165
167
 
166
168
  interface SessionSidebarItem {
167
169
  id: string;
package/dist/workspace.js CHANGED
@@ -10,24 +10,24 @@ import {
10
10
  StatusBar,
11
11
  TerminalPanel,
12
12
  WorkspaceLayout
13
- } from "./chunk-DQYODCBN.js";
13
+ } from "./chunk-P24K22CV.js";
14
14
  import "./chunk-OEX7NZE3.js";
15
- import "./chunk-MUOL44AE.js";
16
- import "./chunk-GVUW4VDD.js";
15
+ import "./chunk-BRBTD7RH.js";
16
+ import "./chunk-R3IU37AW.js";
17
17
  import "./chunk-CNWVHQFY.js";
18
- import "./chunk-72UEKFZ2.js";
18
+ import "./chunk-WC7QTWPN.js";
19
19
  import "./chunk-HRMUF35V.js";
20
- import "./chunk-CJ2RYVZH.js";
20
+ import "./chunk-NTSRY4GW.js";
21
21
  import "./chunk-BX6AQMUS.js";
22
- import "./chunk-YDBXQQLC.js";
23
- import "./chunk-TQN3VR4F.js";
24
- import "./chunk-HYLTXGOI.js";
22
+ import "./chunk-VBWY44UU.js";
23
+ import "./chunk-JP725R4W.js";
24
+ import "./chunk-WQH233GF.js";
25
25
  import {
26
26
  ArtifactPane
27
27
  } from "./chunk-W4LM3QYZ.js";
28
- import "./chunk-LTFK464G.js";
29
- import "./chunk-MXCSSOGH.js";
30
- import "./chunk-HWLX5NME.js";
28
+ import "./chunk-H5XYSFYE.js";
29
+ import "./chunk-TDYQBLL5.js";
30
+ import "./chunk-TSE423UF.js";
31
31
  import "./chunk-RQHJBTEU.js";
32
32
  export {
33
33
  AgentWorkbench,