@burdenoff/fe-libs 2026.1021.4 → 2026.1021.6
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/README.md +35 -0
- package/dist/shared/assistant/quota.d.ts +6 -3
- package/dist/shared/assistant/ui/AssistantOverlay.js +8 -8
- package/dist/shared/components/QuotaUpgradeBridge.d.ts +99 -0
- package/dist/shared/components/QuotaUpgradeBridge.js +106 -0
- package/dist/shared/components/UpgradePromptModal.d.ts +7 -3
- package/dist/shared/components/index.d.ts +2 -0
- package/dist/shared/utils/canvasTokens.d.ts +65 -0
- package/dist/shared/utils/canvasTokens.js +159 -0
- package/dist/shared/utils/index.d.ts +2 -0
- package/dist/shared-assistant.js +11 -11
- package/dist/shared-components.js +7 -6
- package/dist/shared-utils.js +19 -18
- package/dist/shared.js +135 -133
- package/dist/utils/index.js +1 -0
- package/package.json +6 -2
- package/shared/config/eslint.config.d.mts +21 -0
- package/shared/config/eslint.config.mjs +80 -18
- package/src/shared/styles/app-shell.css +3 -0
- package/src/shared/styles/canvas-theme.css +82 -0
- package/src/shared/tokens/build/semantic.css +83 -0
- package/src/shared/tokens/build/tailwind.preset.js +65 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canvas / node / edge / data-type token utilities (Tailwind v4).
|
|
3
|
+
*
|
|
4
|
+
* Maps the G19 builder tokens from tokens.css to utilities such as
|
|
5
|
+
* `bg-node-trigger`, `bg-node-logic-subtle`, `border-node-border-selected`,
|
|
6
|
+
* `ring-node-state-running`, `stroke-edge-default`, `fill-canvas-grid` and
|
|
7
|
+
* `text-datatype-string`. Imported by app-shell.css; a shell with its own
|
|
8
|
+
* @theme imports it directly:
|
|
9
|
+
*
|
|
10
|
+
* @import "tailwindcss";
|
|
11
|
+
* @import '@burdenoff/fe-libs/shared/tokens/tokens.css';
|
|
12
|
+
* @import '@burdenoff/fe-libs/shared/styles/canvas-theme.css';
|
|
13
|
+
*
|
|
14
|
+
* For values outside Tailwind (React Flow props, SVG attributes, inline
|
|
15
|
+
* styles) use `var(--color-…)` directly, or the helpers in
|
|
16
|
+
* @burdenoff/fe-libs/shared/utils (nodeCategoryColor, edgeColor, …).
|
|
17
|
+
*/
|
|
18
|
+
@theme {
|
|
19
|
+
--color-canvas-bg: var(--color-canvas-bg);
|
|
20
|
+
--color-canvas-grid: var(--color-canvas-grid);
|
|
21
|
+
--color-canvas-selection: var(--color-canvas-selection);
|
|
22
|
+
--color-canvas-minimap-bg: var(--color-canvas-minimap-bg);
|
|
23
|
+
--color-canvas-minimap-node: var(--color-canvas-minimap-node);
|
|
24
|
+
--color-canvas-minimap-mask: var(--color-canvas-minimap-mask);
|
|
25
|
+
--color-canvas-control-bg: var(--color-canvas-control-bg);
|
|
26
|
+
--color-node-bg: var(--color-node-bg);
|
|
27
|
+
--color-node-bg-hover: var(--color-node-bg-hover);
|
|
28
|
+
--color-node-border: var(--color-node-border);
|
|
29
|
+
--color-node-border-hover: var(--color-node-border-hover);
|
|
30
|
+
--color-node-border-selected: var(--color-node-border-selected);
|
|
31
|
+
--color-node-text: var(--color-node-text);
|
|
32
|
+
--color-node-text-muted: var(--color-node-text-muted);
|
|
33
|
+
--color-node-handle: var(--color-node-handle);
|
|
34
|
+
--color-node-handle-connected: var(--color-node-handle-connected);
|
|
35
|
+
--color-node-trigger: var(--color-node-trigger);
|
|
36
|
+
--color-node-trigger-subtle: var(--color-node-trigger-subtle);
|
|
37
|
+
--color-node-action: var(--color-node-action);
|
|
38
|
+
--color-node-action-subtle: var(--color-node-action-subtle);
|
|
39
|
+
--color-node-logic: var(--color-node-logic);
|
|
40
|
+
--color-node-logic-subtle: var(--color-node-logic-subtle);
|
|
41
|
+
--color-node-loop: var(--color-node-loop);
|
|
42
|
+
--color-node-loop-subtle: var(--color-node-loop-subtle);
|
|
43
|
+
--color-node-data: var(--color-node-data);
|
|
44
|
+
--color-node-data-subtle: var(--color-node-data-subtle);
|
|
45
|
+
--color-node-integration: var(--color-node-integration);
|
|
46
|
+
--color-node-integration-subtle: var(--color-node-integration-subtle);
|
|
47
|
+
--color-node-ai: var(--color-node-ai);
|
|
48
|
+
--color-node-ai-subtle: var(--color-node-ai-subtle);
|
|
49
|
+
--color-node-human: var(--color-node-human);
|
|
50
|
+
--color-node-human-subtle: var(--color-node-human-subtle);
|
|
51
|
+
--color-node-utility: var(--color-node-utility);
|
|
52
|
+
--color-node-utility-subtle: var(--color-node-utility-subtle);
|
|
53
|
+
--color-node-end: var(--color-node-end);
|
|
54
|
+
--color-node-end-subtle: var(--color-node-end-subtle);
|
|
55
|
+
--color-node-default: var(--color-node-default);
|
|
56
|
+
--color-node-default-subtle: var(--color-node-default-subtle);
|
|
57
|
+
--color-node-state-idle: var(--color-node-state-idle);
|
|
58
|
+
--color-node-state-queued: var(--color-node-state-queued);
|
|
59
|
+
--color-node-state-running: var(--color-node-state-running);
|
|
60
|
+
--color-node-state-success: var(--color-node-state-success);
|
|
61
|
+
--color-node-state-warning: var(--color-node-state-warning);
|
|
62
|
+
--color-node-state-error: var(--color-node-state-error);
|
|
63
|
+
--color-node-state-skipped: var(--color-node-state-skipped);
|
|
64
|
+
--color-edge-default: var(--color-edge-default);
|
|
65
|
+
--color-edge-hover: var(--color-edge-hover);
|
|
66
|
+
--color-edge-selected: var(--color-edge-selected);
|
|
67
|
+
--color-edge-active: var(--color-edge-active);
|
|
68
|
+
--color-edge-success: var(--color-edge-success);
|
|
69
|
+
--color-edge-error: var(--color-edge-error);
|
|
70
|
+
--color-edge-compatible: var(--color-edge-compatible);
|
|
71
|
+
--color-edge-incompatible: var(--color-edge-incompatible);
|
|
72
|
+
--color-edge-label-bg: var(--color-edge-label-bg);
|
|
73
|
+
--color-edge-label-text: var(--color-edge-label-text);
|
|
74
|
+
--color-datatype-string: var(--color-datatype-string);
|
|
75
|
+
--color-datatype-number: var(--color-datatype-number);
|
|
76
|
+
--color-datatype-boolean: var(--color-datatype-boolean);
|
|
77
|
+
--color-datatype-object: var(--color-datatype-object);
|
|
78
|
+
--color-datatype-array: var(--color-datatype-array);
|
|
79
|
+
--color-datatype-date: var(--color-datatype-date);
|
|
80
|
+
--color-datatype-binary: var(--color-datatype-binary);
|
|
81
|
+
--color-datatype-any: var(--color-datatype-any);
|
|
82
|
+
}
|
|
@@ -506,6 +506,89 @@
|
|
|
506
506
|
--color-focus-ring: var(--color-action-primary-bg);
|
|
507
507
|
}
|
|
508
508
|
|
|
509
|
+
/* G19: canvas, node-category, edge and data-type tokens (workflow builders,
|
|
510
|
+
* graphs, mappers). Every value ALIASES an existing chart-* / status-* /
|
|
511
|
+
* surface token — no new palette — so light, dark, every brand and the
|
|
512
|
+
* expressive / high-contrast themes come for free.
|
|
513
|
+
*
|
|
514
|
+
* Declared on each element that can carry a theme (not only :root) so a
|
|
515
|
+
* `.dark` subtree re-resolves the aliases against ITS chart/status values;
|
|
516
|
+
* a var() alias declared only on :root would inherit the light value. */
|
|
517
|
+
:root,
|
|
518
|
+
[data-theme],
|
|
519
|
+
[data-brand],
|
|
520
|
+
.dark {
|
|
521
|
+
/* Canvas */
|
|
522
|
+
--color-canvas-bg: var(--color-bg-canvas);
|
|
523
|
+
--color-canvas-grid: var(--color-chart-grid);
|
|
524
|
+
--color-canvas-selection: var(--color-bg-accentSubtle);
|
|
525
|
+
--color-canvas-minimap-bg: var(--color-bg-surface);
|
|
526
|
+
--color-canvas-minimap-node: var(--color-chart-axis);
|
|
527
|
+
--color-canvas-minimap-mask: var(--color-bg-overlay);
|
|
528
|
+
--color-canvas-control-bg: var(--color-bg-elevated);
|
|
529
|
+
/* Node surface */
|
|
530
|
+
--color-node-bg: var(--color-bg-surface);
|
|
531
|
+
--color-node-bg-hover: var(--color-bg-elevated);
|
|
532
|
+
--color-node-border: var(--color-border-default);
|
|
533
|
+
--color-node-border-hover: var(--color-border-strong);
|
|
534
|
+
--color-node-border-selected: var(--color-action-primary-bg);
|
|
535
|
+
--color-node-text: var(--color-text-primary);
|
|
536
|
+
--color-node-text-muted: var(--color-text-muted);
|
|
537
|
+
--color-node-handle: var(--color-border-strong);
|
|
538
|
+
--color-node-handle-connected: var(--color-action-primary-bg);
|
|
539
|
+
/* Node categories (solid accent + subtle tint for headers / icon wells) */
|
|
540
|
+
--color-node-trigger: var(--color-chart-7); /* starts a run: webhook, schedule, API, event */
|
|
541
|
+
--color-node-trigger-subtle: color-mix(in oklab, var(--color-node-trigger) 14%, transparent);
|
|
542
|
+
--color-node-action: var(--color-chart-1); /* does work: an app or service step */
|
|
543
|
+
--color-node-action-subtle: color-mix(in oklab, var(--color-node-action) 14%, transparent);
|
|
544
|
+
--color-node-logic: var(--color-chart-3); /* branches: if, switch, router */
|
|
545
|
+
--color-node-logic-subtle: color-mix(in oklab, var(--color-node-logic) 14%, transparent);
|
|
546
|
+
--color-node-loop: var(--color-chart-4); /* iterates: loop, batch, map */
|
|
547
|
+
--color-node-loop-subtle: color-mix(in oklab, var(--color-node-loop) 14%, transparent);
|
|
548
|
+
--color-node-data: var(--color-chart-2); /* shapes data: set, filter, aggregate, transform, code */
|
|
549
|
+
--color-node-data-subtle: color-mix(in oklab, var(--color-node-data) 14%, transparent);
|
|
550
|
+
--color-node-integration: var(--color-chart-12); /* talks to the outside: HTTP, database, connector */
|
|
551
|
+
--color-node-integration-subtle: color-mix(in oklab, var(--color-node-integration) 14%, transparent);
|
|
552
|
+
--color-node-ai: var(--color-chart-8); /* model, agent, embedding, assistant */
|
|
553
|
+
--color-node-ai-subtle: color-mix(in oklab, var(--color-node-ai) 14%, transparent);
|
|
554
|
+
--color-node-human: var(--color-chart-6); /* waits on a person: approval, form, review */
|
|
555
|
+
--color-node-human-subtle: color-mix(in oklab, var(--color-node-human) 14%, transparent);
|
|
556
|
+
--color-node-utility: var(--color-chart-axis); /* wait, no-op, note, merge */
|
|
557
|
+
--color-node-utility-subtle: color-mix(in oklab, var(--color-node-utility) 14%, transparent);
|
|
558
|
+
--color-node-end: var(--color-chart-5); /* stops a run: end, error, return */
|
|
559
|
+
--color-node-end-subtle: color-mix(in oklab, var(--color-node-end) 14%, transparent);
|
|
560
|
+
--color-node-default: var(--color-chart-1); /* a node with no known category */
|
|
561
|
+
--color-node-default-subtle: color-mix(in oklab, var(--color-node-default) 14%, transparent);
|
|
562
|
+
/* Node execution state (ring / badge) */
|
|
563
|
+
--color-node-state-idle: var(--color-border-default);
|
|
564
|
+
--color-node-state-queued: var(--color-chart-axis);
|
|
565
|
+
--color-node-state-running: var(--color-status-info-bg);
|
|
566
|
+
--color-node-state-success: var(--color-status-success-bg);
|
|
567
|
+
--color-node-state-warning: var(--color-status-warning-bg);
|
|
568
|
+
--color-node-state-error: var(--color-status-error-bg);
|
|
569
|
+
--color-node-state-skipped: var(--color-chart-axis);
|
|
570
|
+
/* Edges */
|
|
571
|
+
--color-edge-default: var(--color-chart-axis);
|
|
572
|
+
--color-edge-hover: var(--color-text-secondary);
|
|
573
|
+
--color-edge-selected: var(--color-action-primary-bg);
|
|
574
|
+
--color-edge-active: var(--color-status-info-bg);
|
|
575
|
+
--color-edge-success: var(--color-status-success-bg);
|
|
576
|
+
--color-edge-error: var(--color-status-error-bg);
|
|
577
|
+
--color-edge-compatible: var(--color-status-info-bg);
|
|
578
|
+
--color-edge-incompatible: var(--color-status-error-bg);
|
|
579
|
+
--color-edge-label-bg: var(--color-bg-elevated);
|
|
580
|
+
--color-edge-label-text: var(--color-text-secondary);
|
|
581
|
+
/* Port / mapper data types */
|
|
582
|
+
--color-datatype-string: var(--color-chart-3);
|
|
583
|
+
--color-datatype-number: var(--color-chart-10);
|
|
584
|
+
--color-datatype-boolean: var(--color-chart-2);
|
|
585
|
+
--color-datatype-object: var(--color-chart-12);
|
|
586
|
+
--color-datatype-array: var(--color-chart-4);
|
|
587
|
+
--color-datatype-date: var(--color-chart-6);
|
|
588
|
+
--color-datatype-binary: var(--color-chart-11);
|
|
589
|
+
--color-datatype-any: var(--color-chart-axis);
|
|
590
|
+
}
|
|
591
|
+
|
|
509
592
|
/* Large Typography Scale - Auto-generated */
|
|
510
593
|
[data-typography="large"] {
|
|
511
594
|
--font-size-body-sm: 16px;
|
|
@@ -141,6 +141,71 @@ export default {
|
|
|
141
141
|
'chart-axis': 'var(--color-chart-axis)',
|
|
142
142
|
'chart-positive': 'var(--color-chart-positive)',
|
|
143
143
|
'chart-negative': 'var(--color-chart-negative)',
|
|
144
|
+
|
|
145
|
+
// G19 — canvas / node / edge / data-type tokens
|
|
146
|
+
'canvas-bg': 'var(--color-canvas-bg)',
|
|
147
|
+
'canvas-grid': 'var(--color-canvas-grid)',
|
|
148
|
+
'canvas-selection': 'var(--color-canvas-selection)',
|
|
149
|
+
'canvas-minimap-bg': 'var(--color-canvas-minimap-bg)',
|
|
150
|
+
'canvas-minimap-node': 'var(--color-canvas-minimap-node)',
|
|
151
|
+
'canvas-minimap-mask': 'var(--color-canvas-minimap-mask)',
|
|
152
|
+
'canvas-control-bg': 'var(--color-canvas-control-bg)',
|
|
153
|
+
'node-bg': 'var(--color-node-bg)',
|
|
154
|
+
'node-bg-hover': 'var(--color-node-bg-hover)',
|
|
155
|
+
'node-border': 'var(--color-node-border)',
|
|
156
|
+
'node-border-hover': 'var(--color-node-border-hover)',
|
|
157
|
+
'node-border-selected': 'var(--color-node-border-selected)',
|
|
158
|
+
'node-text': 'var(--color-node-text)',
|
|
159
|
+
'node-text-muted': 'var(--color-node-text-muted)',
|
|
160
|
+
'node-handle': 'var(--color-node-handle)',
|
|
161
|
+
'node-handle-connected': 'var(--color-node-handle-connected)',
|
|
162
|
+
'node-trigger': 'var(--color-node-trigger)',
|
|
163
|
+
'node-trigger-subtle': 'var(--color-node-trigger-subtle)',
|
|
164
|
+
'node-action': 'var(--color-node-action)',
|
|
165
|
+
'node-action-subtle': 'var(--color-node-action-subtle)',
|
|
166
|
+
'node-logic': 'var(--color-node-logic)',
|
|
167
|
+
'node-logic-subtle': 'var(--color-node-logic-subtle)',
|
|
168
|
+
'node-loop': 'var(--color-node-loop)',
|
|
169
|
+
'node-loop-subtle': 'var(--color-node-loop-subtle)',
|
|
170
|
+
'node-data': 'var(--color-node-data)',
|
|
171
|
+
'node-data-subtle': 'var(--color-node-data-subtle)',
|
|
172
|
+
'node-integration': 'var(--color-node-integration)',
|
|
173
|
+
'node-integration-subtle': 'var(--color-node-integration-subtle)',
|
|
174
|
+
'node-ai': 'var(--color-node-ai)',
|
|
175
|
+
'node-ai-subtle': 'var(--color-node-ai-subtle)',
|
|
176
|
+
'node-human': 'var(--color-node-human)',
|
|
177
|
+
'node-human-subtle': 'var(--color-node-human-subtle)',
|
|
178
|
+
'node-utility': 'var(--color-node-utility)',
|
|
179
|
+
'node-utility-subtle': 'var(--color-node-utility-subtle)',
|
|
180
|
+
'node-end': 'var(--color-node-end)',
|
|
181
|
+
'node-end-subtle': 'var(--color-node-end-subtle)',
|
|
182
|
+
'node-default': 'var(--color-node-default)',
|
|
183
|
+
'node-default-subtle': 'var(--color-node-default-subtle)',
|
|
184
|
+
'node-state-idle': 'var(--color-node-state-idle)',
|
|
185
|
+
'node-state-queued': 'var(--color-node-state-queued)',
|
|
186
|
+
'node-state-running': 'var(--color-node-state-running)',
|
|
187
|
+
'node-state-success': 'var(--color-node-state-success)',
|
|
188
|
+
'node-state-warning': 'var(--color-node-state-warning)',
|
|
189
|
+
'node-state-error': 'var(--color-node-state-error)',
|
|
190
|
+
'node-state-skipped': 'var(--color-node-state-skipped)',
|
|
191
|
+
'edge-default': 'var(--color-edge-default)',
|
|
192
|
+
'edge-hover': 'var(--color-edge-hover)',
|
|
193
|
+
'edge-selected': 'var(--color-edge-selected)',
|
|
194
|
+
'edge-active': 'var(--color-edge-active)',
|
|
195
|
+
'edge-success': 'var(--color-edge-success)',
|
|
196
|
+
'edge-error': 'var(--color-edge-error)',
|
|
197
|
+
'edge-compatible': 'var(--color-edge-compatible)',
|
|
198
|
+
'edge-incompatible': 'var(--color-edge-incompatible)',
|
|
199
|
+
'edge-label-bg': 'var(--color-edge-label-bg)',
|
|
200
|
+
'edge-label-text': 'var(--color-edge-label-text)',
|
|
201
|
+
'datatype-string': 'var(--color-datatype-string)',
|
|
202
|
+
'datatype-number': 'var(--color-datatype-number)',
|
|
203
|
+
'datatype-boolean': 'var(--color-datatype-boolean)',
|
|
204
|
+
'datatype-object': 'var(--color-datatype-object)',
|
|
205
|
+
'datatype-array': 'var(--color-datatype-array)',
|
|
206
|
+
'datatype-date': 'var(--color-datatype-date)',
|
|
207
|
+
'datatype-binary': 'var(--color-datatype-binary)',
|
|
208
|
+
'datatype-any': 'var(--color-datatype-any)',
|
|
144
209
|
},
|
|
145
210
|
spacing: {
|
|
146
211
|
'page-padding': 'var(--space-pagePadding)',
|