@tangle-network/sandbox-ui 0.76.0 → 0.79.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/{WorkflowGraph-V2AVCNDC.js → WorkflowGraph-SJ2SG5TP.js} +11 -1
- package/dist/globals.css +355 -56
- package/dist/styles.css +355 -56
- package/dist/tokens.css +96 -65
- package/dist/workflows.d.ts +8 -1
- package/dist/workflows.js +1 -1
- package/package.json +3 -3
package/dist/tokens.css
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
|
-
/* Tangle
|
|
2
|
-
|
|
1
|
+
/* Tangle design tokens — the single palette every Tangle surface renders from.
|
|
2
|
+
*
|
|
3
|
+
* The surface ladder carries an indigo cast and steps in even ~4-5% lightness
|
|
4
|
+
* increments, so a card, a nested panel and an overlay each read as a distinct
|
|
5
|
+
* plane by their own fill. A flat, desaturated ladder forces separation onto
|
|
6
|
+
* borders instead, which is what makes an app read as grey and washed out.
|
|
7
|
+
* Light mirrors it: white paper on a tinted canvas, never white-on-white.
|
|
8
|
+
*
|
|
9
|
+
* Apps consume this spine as-is. If a product needs its own accent identity,
|
|
10
|
+
* add a named theme in named-themes.css (`data-theme="<name>"`) — do NOT re-declare
|
|
11
|
+
* these tokens in the app, or its surfaces silently stop tracking the brand. */
|
|
3
12
|
|
|
4
13
|
/* MD3 surface hierarchy */
|
|
5
14
|
/* Dark is the default theme (`:root`/`[data-sandbox-ui]`). It also responds to
|
|
@@ -9,15 +18,15 @@
|
|
|
9
18
|
[data-sandbox-ui],
|
|
10
19
|
[data-theme="dark"],
|
|
11
20
|
.dark {
|
|
12
|
-
--md3-surface: #
|
|
13
|
-
--md3-surface-dim: #
|
|
14
|
-
--md3-surface-bright: #
|
|
15
|
-
--md3-surface-container-lowest: #
|
|
16
|
-
--md3-surface-container-low: #
|
|
17
|
-
--md3-surface-container: #
|
|
18
|
-
--md3-surface-container-high: #
|
|
19
|
-
--md3-surface-container-highest: #
|
|
20
|
-
--md3-surface-variant: #
|
|
21
|
+
--md3-surface: #0a0a14; /* L0 page canvas */
|
|
22
|
+
--md3-surface-dim: #060610; /* recessed page */
|
|
23
|
+
--md3-surface-bright: #232238;
|
|
24
|
+
--md3-surface-container-lowest: #050509; /* L-1 terminal/code well */
|
|
25
|
+
--md3-surface-container-low: #12111f; /* L1 chrome, field wells */
|
|
26
|
+
--md3-surface-container: #191826; /* L2 resting card */
|
|
27
|
+
--md3-surface-container-high: #221f33; /* L3 nested / hover */
|
|
28
|
+
--md3-surface-container-highest: #2c2942; /* L4 overlay */
|
|
29
|
+
--md3-surface-variant: #2c2942;
|
|
21
30
|
--md3-on-surface: #fdfdfd;
|
|
22
31
|
--md3-on-surface-variant: #aaa8b8;
|
|
23
32
|
|
|
@@ -37,7 +46,7 @@
|
|
|
37
46
|
|
|
38
47
|
--md3-tertiary: #10B981;
|
|
39
48
|
--md3-outline: #4a4965;
|
|
40
|
-
--md3-outline-variant: #
|
|
49
|
+
--md3-outline-variant: #2a293d;
|
|
41
50
|
|
|
42
51
|
--md3-error: #ff5277;
|
|
43
52
|
--md3-error-dim: #eb2855;
|
|
@@ -50,25 +59,27 @@
|
|
|
50
59
|
--md3-inverse-on-surface: #000000;
|
|
51
60
|
--md3-surface-tint: #818CF8;
|
|
52
61
|
|
|
53
|
-
/* Semantic HSL bridge —
|
|
54
|
-
--hsl-background: 240
|
|
62
|
+
/* Semantic HSL bridge — the indigo-cast surface ladder */
|
|
63
|
+
--hsl-background: 240 33% 6%; /* L0 canvas #0a0a14 */
|
|
55
64
|
--hsl-foreground: 240 6% 93%; /* #ececee */
|
|
56
|
-
--hsl-card:
|
|
65
|
+
--hsl-card: 244 23% 12%; /* L2 card #191826 */
|
|
57
66
|
--hsl-card-foreground: 240 6% 93%;
|
|
58
|
-
--hsl-popover:
|
|
67
|
+
--hsl-popover: 247 23% 21%; /* L4 overlay #2c2942 */
|
|
59
68
|
--hsl-popover-foreground: 240 6% 93%;
|
|
60
69
|
--hsl-primary: 239 84% 62%;
|
|
61
70
|
--hsl-primary-foreground: 0 0% 100%;
|
|
62
|
-
--hsl-secondary:
|
|
71
|
+
--hsl-secondary: 249 24% 16%; /* L3 #221f33 */
|
|
63
72
|
--hsl-secondary-foreground: 240 6% 93%;
|
|
64
|
-
--hsl-muted:
|
|
65
|
-
--hsl-muted-foreground: 240
|
|
66
|
-
|
|
73
|
+
--hsl-muted: 249 24% 16%; /* L3 hover well */
|
|
74
|
+
--hsl-muted-foreground: 240 5% 68%; /* #a9a9b1 — high enough that the
|
|
75
|
+
reduced-opacity caption derivatives (/70, /60) still clear the large-text
|
|
76
|
+
contrast floor against the L2 card. */
|
|
77
|
+
--hsl-accent: 249 24% 16%; /* neutral hover (indigo lives in accent-surface-strong) */
|
|
67
78
|
--hsl-accent-foreground: 240 6% 93%;
|
|
68
79
|
--hsl-destructive: 348 74% 48%;
|
|
69
80
|
--hsl-destructive-foreground: 0 0% 100%;
|
|
70
|
-
--hsl-border:
|
|
71
|
-
--hsl-input:
|
|
81
|
+
--hsl-border: 243 19.6% 20%; /* #2a293d = --md3-outline-variant */
|
|
82
|
+
--hsl-input: 244 29% 9%; /* recessed field well #12111f */
|
|
72
83
|
--hsl-ring: 239 84% 67%;
|
|
73
84
|
--hsl-success: 160 84% 39%;
|
|
74
85
|
--hsl-warning: 40 94% 56%;
|
|
@@ -92,6 +103,11 @@
|
|
|
92
103
|
--destructive: var(--hsl-destructive);
|
|
93
104
|
--destructive-foreground: var(--hsl-destructive-foreground);
|
|
94
105
|
--border: var(--hsl-border);
|
|
106
|
+
/* shadcn's `--input` is the input BORDER and the Switch's off-track — a
|
|
107
|
+
* mid-tone that has to stay visible AGAINST a surface. It is deliberately NOT
|
|
108
|
+
* the field fill: pointing it at the recessed well would tint a border and a
|
|
109
|
+
* track the same color as the plane behind them, and both would vanish. The
|
|
110
|
+
* field fill is --hsl-input / --bg-input below. */
|
|
95
111
|
--input: var(--hsl-muted-foreground);
|
|
96
112
|
--ring: var(--hsl-ring);
|
|
97
113
|
--success: var(--hsl-success);
|
|
@@ -99,21 +115,22 @@
|
|
|
99
115
|
--error: var(--hsl-destructive);
|
|
100
116
|
--info: var(--hsl-info);
|
|
101
117
|
|
|
102
|
-
/* Sidebar tokens —
|
|
103
|
-
|
|
118
|
+
/* Sidebar tokens — L1 chrome: one step ABOVE the canvas in lightness, so the
|
|
119
|
+
* panel reads as its own plane rather than a hole in the page. */
|
|
120
|
+
--sidebar-background: 244 29% 9%; /* L1 chrome #12111f */
|
|
104
121
|
--sidebar-foreground: 240 6% 93%;
|
|
105
122
|
--sidebar-primary: 239 84% 67%;
|
|
106
123
|
--sidebar-primary-foreground: 0 0% 100%;
|
|
107
|
-
--sidebar-accent:
|
|
124
|
+
--sidebar-accent: 249 24% 16%; /* L3 hover well */
|
|
108
125
|
--sidebar-accent-foreground: 240 6% 93%;
|
|
109
|
-
--sidebar-border:
|
|
126
|
+
--sidebar-border: 243 19.6% 20%; /* = --md3-outline-variant */
|
|
110
127
|
--sidebar-ring: 239 84% 67%;
|
|
111
128
|
|
|
112
|
-
/* Depth scale —
|
|
113
|
-
--depth-1: #
|
|
114
|
-
--depth-2: #
|
|
115
|
-
--depth-3: #
|
|
116
|
-
--depth-4: #
|
|
129
|
+
/* Depth scale — tracks the MD3 ladder (canvas / card / nested / overlay) */
|
|
130
|
+
--depth-1: #0a0a14;
|
|
131
|
+
--depth-2: #191826;
|
|
132
|
+
--depth-3: #221f33;
|
|
133
|
+
--depth-4: #2c2942;
|
|
117
134
|
|
|
118
135
|
/* Status colors */
|
|
119
136
|
--status-running: #10B981;
|
|
@@ -157,7 +174,7 @@
|
|
|
157
174
|
--glass-border-hover: var(--border-default);
|
|
158
175
|
--glass-blur: 0px;
|
|
159
176
|
|
|
160
|
-
/* Mesh glows —
|
|
177
|
+
/* Mesh glows — off; depth comes from the ladder, not from glow */
|
|
161
178
|
--mesh-teal: transparent;
|
|
162
179
|
--mesh-violet: transparent;
|
|
163
180
|
--mesh-blue: transparent;
|
|
@@ -171,13 +188,13 @@
|
|
|
171
188
|
--accent-surface-strong: rgba(129, 140, 248, 0.14);
|
|
172
189
|
--accent-text: #b9bffb;
|
|
173
190
|
|
|
174
|
-
/* Surfaces —
|
|
175
|
-
--bg-root: #
|
|
191
|
+
/* Surfaces — solid fills off the ladder (no radial mesh) */
|
|
192
|
+
--bg-root: #0a0a14;
|
|
176
193
|
--bg-dark: var(--depth-1);
|
|
177
194
|
--bg-card: var(--depth-2);
|
|
178
195
|
--bg-elevated: var(--depth-4);
|
|
179
196
|
--bg-section: var(--depth-1);
|
|
180
|
-
--bg-input: var(--
|
|
197
|
+
--bg-input: hsl(var(--hsl-input)); /* the field well — same color, hex-free */
|
|
181
198
|
--bg-hover: rgba(255, 255, 255, 0.04);
|
|
182
199
|
--bg-selection: rgba(129, 140, 248, 0.14);
|
|
183
200
|
|
|
@@ -319,15 +336,21 @@
|
|
|
319
336
|
/* Light theme — clean professional, warm purple accents */
|
|
320
337
|
|
|
321
338
|
/* MD3 surface hierarchy */
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
--md3-surface
|
|
329
|
-
--md3-surface-
|
|
330
|
-
--md3-surface-
|
|
339
|
+
/* The light ladder ALTERNATES; it is not monotonic, and that is deliberate.
|
|
340
|
+
* On a tinted canvas, a raised plane is PAPER (white) and a recessed one is a
|
|
341
|
+
* tinted WELL. So card and overlay are both white and separate from each other
|
|
342
|
+
* by shadow and ring, not by fill — which is how light-mode elevation actually
|
|
343
|
+
* reads. Forcing a strictly-darkening ladder here is what produced the
|
|
344
|
+
* white-on-white flatness this palette replaced. Pinned in tokens.test.ts. */
|
|
345
|
+
--md3-surface: #eceef3; /* L0 page canvas — tinted */
|
|
346
|
+
--md3-surface-dim: #dcdee6;
|
|
347
|
+
--md3-surface-bright: #ffffff;
|
|
348
|
+
--md3-surface-container-lowest: #ffffff; /* insets read as paper */
|
|
349
|
+
--md3-surface-container-low: #f6f7fa; /* L1 chrome, field wells — well */
|
|
350
|
+
--md3-surface-container: #ffffff; /* L2 resting card — paper */
|
|
351
|
+
--md3-surface-container-high: #f1f2f7; /* L3 nested / hover — well */
|
|
352
|
+
--md3-surface-container-highest: #ffffff; /* L4 overlay — paper + shadow */
|
|
353
|
+
--md3-surface-variant: #f1f2f7;
|
|
331
354
|
--md3-on-surface: #191c24;
|
|
332
355
|
--md3-on-surface-variant: #464858;
|
|
333
356
|
|
|
@@ -361,34 +384,37 @@
|
|
|
361
384
|
--md3-inverse-on-surface: #f0f1f4;
|
|
362
385
|
--md3-surface-tint: #6366F1;
|
|
363
386
|
|
|
364
|
-
/* Semantic HSL bridge —
|
|
365
|
-
--hsl-background:
|
|
387
|
+
/* Semantic HSL bridge — white paper on a tinted canvas */
|
|
388
|
+
--hsl-background: 223 23% 94%; /* L0 canvas #eceef3 */
|
|
366
389
|
--hsl-foreground: 0 0% 5%; /* #0d0d0d */
|
|
367
|
-
--hsl-card:
|
|
390
|
+
--hsl-card: 0 0% 100%; /* L2 card = white paper */
|
|
368
391
|
--hsl-card-foreground: 0 0% 5%;
|
|
369
392
|
--hsl-popover: 0 0% 100%;
|
|
370
393
|
--hsl-popover-foreground: 0 0% 5%;
|
|
371
394
|
--hsl-primary: 245 62% 57%; /* #5B4ED4 light accent */
|
|
372
395
|
--hsl-primary-foreground: 0 0% 100%;
|
|
373
|
-
--hsl-secondary:
|
|
396
|
+
--hsl-secondary: 230 27% 96%; /* L3 #f1f2f7 */
|
|
374
397
|
--hsl-secondary-foreground: 0 0% 10%;
|
|
375
|
-
--hsl-muted:
|
|
398
|
+
--hsl-muted: 230 27% 96%; /* L3 hover well */
|
|
376
399
|
--hsl-muted-foreground: 240 5% 38%; /* #5d5d66 text-muted */
|
|
377
|
-
--hsl-accent:
|
|
400
|
+
--hsl-accent: 230 27% 96%; /* neutral hover */
|
|
378
401
|
--hsl-accent-foreground: 0 0% 10%;
|
|
379
402
|
--hsl-destructive: 0 72% 41%;
|
|
380
403
|
--hsl-destructive-foreground: 0 0% 100%;
|
|
381
|
-
--hsl-border:
|
|
382
|
-
--hsl-input:
|
|
404
|
+
--hsl-border: 244 16.3% 80.8%; /* #c7c6d6 = --md3-outline-variant */
|
|
405
|
+
--hsl-input: 225 29% 97%; /* field well #f6f7fa */
|
|
383
406
|
--hsl-ring: 245 62% 57%;
|
|
384
407
|
--hsl-success: 160 84% 30%;
|
|
385
408
|
--hsl-warning: 41 96% 50%;
|
|
386
409
|
--hsl-info: 212 80% 50%;
|
|
387
410
|
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
--depth-
|
|
411
|
+
/* depth-2 (card) and depth-4 (elevated) are BOTH paper, on purpose: in light,
|
|
412
|
+
* a popover does not out-lighten a white card — it lifts by shadow. See the
|
|
413
|
+
* ladder note above. */
|
|
414
|
+
--depth-1: #eceef3; /* canvas */
|
|
415
|
+
--depth-2: #ffffff; /* card — paper */
|
|
416
|
+
--depth-3: #f1f2f7; /* nested well */
|
|
417
|
+
--depth-4: #ffffff; /* elevated — paper, separated by shadow */
|
|
392
418
|
|
|
393
419
|
--status-running: #059669;
|
|
394
420
|
--status-creating: #3E349E;
|
|
@@ -430,13 +456,13 @@
|
|
|
430
456
|
--surface-neutral-text: var(--text-muted);
|
|
431
457
|
|
|
432
458
|
/* Sidebar — light, flat surface + hairline */
|
|
433
|
-
--sidebar-background:
|
|
459
|
+
--sidebar-background: 0 0% 100%; /* white paper */
|
|
434
460
|
--sidebar-foreground: 0 0% 5%;
|
|
435
461
|
--sidebar-primary: 245 62% 57%; /* #5B4ED4 */
|
|
436
462
|
--sidebar-primary-foreground: 0 0% 100%;
|
|
437
|
-
--sidebar-accent:
|
|
463
|
+
--sidebar-accent: 230 27% 96%; /* L3 hover well */
|
|
438
464
|
--sidebar-accent-foreground: 0 0% 10%;
|
|
439
|
-
--sidebar-border:
|
|
465
|
+
--sidebar-border: 244 16.3% 80.8%; /* = --md3-outline-variant */
|
|
440
466
|
--sidebar-ring: 245 62% 57%;
|
|
441
467
|
|
|
442
468
|
--mesh-teal: transparent;
|
|
@@ -444,12 +470,17 @@
|
|
|
444
470
|
--mesh-blue: transparent;
|
|
445
471
|
|
|
446
472
|
/* Surfaces — flat single-neutral light */
|
|
447
|
-
--bg-root: #
|
|
448
|
-
--bg-dark:
|
|
449
|
-
--bg-card:
|
|
450
|
-
--bg-
|
|
451
|
-
|
|
452
|
-
|
|
473
|
+
--bg-root: #eceef3;
|
|
474
|
+
--bg-dark: var(--depth-1);
|
|
475
|
+
--bg-card: var(--depth-2);
|
|
476
|
+
/* Paper, exactly like --bg-card: in light you cannot raise a plane by making it
|
|
477
|
+
* lighter than white, so an overlay lifts by SHADOW. A consumer that fills with
|
|
478
|
+
* --bg-elevated and applies no shadow gets no separation from a card — that is
|
|
479
|
+
* the contract, not an oversight (--hsl-popover is white for the same reason).
|
|
480
|
+
* Pair it with --shadow-dropdown. */
|
|
481
|
+
--bg-elevated: var(--depth-4);
|
|
482
|
+
--bg-section: var(--depth-1);
|
|
483
|
+
--bg-input: hsl(var(--hsl-input)); /* the field well — same color, hex-free */
|
|
453
484
|
--bg-hover: rgba(0, 0, 0, 0.04);
|
|
454
485
|
--bg-selection: rgba(91, 78, 212, 0.10);
|
|
455
486
|
|
package/dist/workflows.d.ts
CHANGED
|
@@ -12,7 +12,14 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
|
12
12
|
* so the spine stays a single readable column.
|
|
13
13
|
*/
|
|
14
14
|
type WfNodeTone = "trigger" | "structural" | "action";
|
|
15
|
-
|
|
15
|
+
/**
|
|
16
|
+
* A node's live run status. `waiting` is NOT a variant of `running`: the run has
|
|
17
|
+
* stopped at that node and makes no further progress until a human answers it (a
|
|
18
|
+
* `decision` step). Collapsing it into `running` tells the viewer the workflow is
|
|
19
|
+
* working when in fact it is blocked on THEM — so it gets its own colour, its own
|
|
20
|
+
* label, and a progress bar that does not move.
|
|
21
|
+
*/
|
|
22
|
+
type WfNodeStatus = "queued" | "running" | "waiting" | "succeeded" | "failed";
|
|
16
23
|
/**
|
|
17
24
|
* Live RUN state for one node, supplied by the host (keyed by node id) and
|
|
18
25
|
* merged onto {@link WfNodeData.state} at render time. Absent ⇒ the graph shows
|
package/dist/workflows.js
CHANGED
|
@@ -26,7 +26,7 @@ function retryImport(factory, retries = 2, delayMs = 350) {
|
|
|
26
26
|
function lazyWorkflowGraph() {
|
|
27
27
|
return lazy(
|
|
28
28
|
() => retryImport(
|
|
29
|
-
() => import("./WorkflowGraph-
|
|
29
|
+
() => import("./WorkflowGraph-SJ2SG5TP.js").then((m) => ({ default: m.WorkflowGraph }))
|
|
30
30
|
)
|
|
31
31
|
);
|
|
32
32
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tangle-network/sandbox-ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.79.0",
|
|
4
4
|
"description": "Unified UI component library for Tangle Sandbox — primitives, chat, dashboard, terminal, editor, and workspace components",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -123,7 +123,7 @@
|
|
|
123
123
|
},
|
|
124
124
|
"peerDependencies": {
|
|
125
125
|
"@tangle-network/agent-interface": ">=0.17.0 <1.0.0",
|
|
126
|
-
"@tangle-network/brand": "^1.
|
|
126
|
+
"@tangle-network/brand": "^1.1.0",
|
|
127
127
|
"@tangle-network/ui": "^11.0.0",
|
|
128
128
|
"@xyflow/react": "^12.0.0",
|
|
129
129
|
"react": "^18 || ^19",
|
|
@@ -178,7 +178,7 @@
|
|
|
178
178
|
"@tailwindcss/postcss": "^4.2.2",
|
|
179
179
|
"@tailwindcss/vite": "^4.2.2",
|
|
180
180
|
"@tangle-network/agent-interface": ">=0.17.0 <1.0.0",
|
|
181
|
-
"@tangle-network/brand": "^1.
|
|
181
|
+
"@tangle-network/brand": "^1.1.0",
|
|
182
182
|
"@tangle-network/ui": "^11.0.0",
|
|
183
183
|
"@tanstack/react-query": "^5.91.0",
|
|
184
184
|
"@testing-library/dom": "^10.4.1",
|