@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.
@@ -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)',