@actioneer/ads 0.7.0 → 1.0.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 (57) hide show
  1. package/DESIGN.md +597 -0
  2. package/components/ai-elements/agent-trace.js +1 -1
  3. package/components/alert.js +3 -3
  4. package/components/answer.js +2 -2
  5. package/components/assistant-ui/action-bar.js +1 -1
  6. package/components/assistant-ui/attachment.js +12 -12
  7. package/components/assistant-ui/badge.js +18 -18
  8. package/components/assistant-ui/composer-harness.js +5 -4
  9. package/components/assistant-ui/composer-trigger-popover.js +9 -9
  10. package/components/assistant-ui/composer.js +32 -32
  11. package/components/assistant-ui/directive-text.js +5 -5
  12. package/components/assistant-ui/image.js +61 -61
  13. package/components/assistant-ui/markdown-text.js +7 -7
  14. package/components/assistant-ui/message-timing.js +1 -1
  15. package/components/assistant-ui/selection-toolbar.js +7 -7
  16. package/components/assistant-ui/sources.js +1 -1
  17. package/components/avatar.d.ts +1 -1
  18. package/components/avatar.js +35 -35
  19. package/components/body-page-header.d.ts +1 -1
  20. package/components/body-page-header.js +1 -1
  21. package/components/chart.js +1 -1
  22. package/components/chip.js +8 -8
  23. package/components/divider.js +25 -25
  24. package/components/drawer.d.ts +2 -14
  25. package/components/drawer.js +103 -109
  26. package/components/field.js +9 -9
  27. package/components/index.d.ts +1 -0
  28. package/components/index.js +466 -465
  29. package/components/infinite-canvas.js +1 -1
  30. package/components/input.js +21 -19
  31. package/components/modal.js +26 -26
  32. package/components/page-body.js +6 -6
  33. package/components/page-header.js +1 -1
  34. package/components/pagination.js +1 -1
  35. package/components/pixel-blast-svg.js +71 -73
  36. package/components/search-disclosure.d.ts +18 -0
  37. package/components/search-disclosure.js +106 -0
  38. package/components/sidebar.js +60 -53
  39. package/components/table.d.ts +1 -1
  40. package/components/table.js +73 -74
  41. package/components/tabs.js +68 -59
  42. package/components/tree.js +17 -17
  43. package/components/typography.d.ts +1 -1
  44. package/components/typography.js +1 -1
  45. package/components/ui/button.d.ts +1 -1
  46. package/components/ui/button.js +4 -4
  47. package/components/ui/dialog.js +23 -23
  48. package/components/viz-charts.js +36 -36
  49. package/demo/components/add-to-artifact.js +3 -2
  50. package/lib/cn.js +7 -7
  51. package/lib/icons.d.ts +4 -0
  52. package/lib/icons.js +105 -104
  53. package/llms.txt +52 -49
  54. package/manifest.json +258 -235
  55. package/package.json +2 -1
  56. package/styles.css +171 -153
  57. package/theme.css +162 -140
package/theme.css CHANGED
@@ -8,7 +8,7 @@
8
8
  /*
9
9
  * ============================================================
10
10
  * ADS 1.0 — Design Tokens
11
- * Palette: soft neutral greys + product green
11
+ * Palette: warm greys + product green
12
12
  * Typeface: Aribau Grotesk
13
13
  * ============================================================
14
14
  */
@@ -26,22 +26,33 @@
26
26
  --font-mono: "JetBrains Mono Variable", ui-monospace, SFMono-Regular,
27
27
  "SF Mono", Menlo, Consolas, "Liberation Mono", "Courier New", monospace;
28
28
 
29
- /* ---- Type scale ---- five canonical steps: S · M · L · XL · 2XL.
30
- Root stays 16px so spacing is unaffected. */
31
- --text-s: 0.8125rem; /* 13px · captions, secondary text, table cells */
32
- --text-s--line-height: 1.125rem; /* 18px */
33
- --text-m: 0.9375rem; /* 15px · default body */
34
- --text-m--line-height: 1.375rem; /* 22px */
35
- --text-l: 1.1875rem; /* 19px · emphasized body, section headings */
36
- --text-l--line-height: 1.625rem; /* 26px */
37
- --text-xl: 1.5625rem; /* 25px · page titles */
38
- --text-xl--line-height: 2rem; /* 32px */
39
- --text-2xl: 1.9375rem; /* 31px · display */
40
- --text-2xl--line-height: 2.375rem; /* 38px */
41
-
42
- /* Compatibility aliases keep existing ADS consumers on the new scale. */
43
- --text-xs: var(--text-s);
44
- --text-xs--line-height: var(--text-s--line-height);
29
+ /* ---- Type scale ---- seven canonical steps: XS · S · M · L · XL · 2XL · 3XL.
30
+ Roles follow the agent workflow. Root stays 16px so spacing is unaffected. */
31
+ --text-xs: 0.625rem; /* 10px · compact chips and micro metadata */
32
+ --text-xs--line-height: 0.875rem; /* 14px */
33
+ --text-s: 0.75rem; /* 12px · table headers and uppercase kickers */
34
+ --text-s--line-height: 1rem; /* 16px */
35
+ --text-m: 0.875rem; /* 14px · default body, table cells, record names */
36
+ --text-m--line-height: 1.25rem; /* 20px */
37
+ --text-l: 1rem; /* 16px · tabs, form labels, and section titles */
38
+ --text-l--line-height: 1.375rem; /* 22px */
39
+ --text-xl: 1.125rem; /* 18px · metric values and subtitles */
40
+ --text-xl--line-height: 1.5rem; /* 24px */
41
+ --text-2xl: 1.5rem; /* 24px · page titles */
42
+ --text-2xl--line-height: 2rem; /* 32px */
43
+ --text-3xl: 2rem; /* 32px · large data display */
44
+ --text-3xl--line-height: 2.5rem; /* 40px */
45
+
46
+ /* This is the complete ADS scale. Remove Tailwind's larger default steps so
47
+ Storybook and product code cannot silently introduce an eighth size. */
48
+ --text-4xl: initial;
49
+ --text-5xl: initial;
50
+ --text-6xl: initial;
51
+ --text-7xl: initial;
52
+ --text-8xl: initial;
53
+ --text-9xl: initial;
54
+
55
+ /* Compatibility aliases keep existing ADS consumers on the canonical scale. */
45
56
  --text-sm: var(--text-s);
46
57
  --text-sm--line-height: var(--text-s--line-height);
47
58
  --text-base: var(--text-m);
@@ -51,10 +62,10 @@
51
62
 
52
63
  /* ---- Foundation palette ----
53
64
  Canonical primitive names:
54
- G1…G12 = Green · NG1…NG12 = Neutral Grey.
65
+ G1…G12 = Green · WG1…WG12 = Warm Grey.
55
66
  Each ramp progresses from light backgrounds and interactive fills through
56
67
  supporting tones to solid colors and accessible text. Neutral UI borders
57
- are intentionally restricted to NG3–NG5. ---- */
68
+ are intentionally restricted to WG3–WG5. ---- */
58
69
  --color-g1: #f7f9f7;
59
70
  --color-g2: #eef5f0;
60
71
  --color-g3: #e2efe5;
@@ -68,33 +79,33 @@
68
79
  --color-g11: #1f623b;
69
80
  --color-g12: #183c28;
70
81
 
71
- --color-ng1: #fafafa;
72
- --color-ng2: #f6f6f6;
73
- --color-ng3: #f1f1f1;
74
- --color-ng4: #ececec;
75
- --color-ng5: #e6e6e6;
76
- --color-ng6: #dedede;
77
- --color-ng7: #d4d4d4;
78
- --color-ng8: #bdbdbd;
79
- --color-ng9: #868686;
80
- --color-ng10: #7c7b7b;
81
- --color-ng11: #5e5d5d;
82
- --color-ng12: #202020;
83
-
84
- /* Deprecated Warm Grey names now resolve to Neutral Grey. Keep these
85
- aliases so existing consumer utilities continue to render safely. */
86
- --color-wg1: var(--color-ng1);
87
- --color-wg2: var(--color-ng2);
88
- --color-wg3: var(--color-ng3);
89
- --color-wg4: var(--color-ng4);
90
- --color-wg5: var(--color-ng5);
91
- --color-wg6: var(--color-ng6);
92
- --color-wg7: var(--color-ng7);
93
- --color-wg8: var(--color-ng8);
94
- --color-wg9: var(--color-ng9);
95
- --color-wg10: var(--color-ng10);
96
- --color-wg11: var(--color-ng11);
97
- --color-wg12: var(--color-ng12);
82
+ --color-wg1: #f5f5f3;
83
+ --color-wg2: #f1f1ef;
84
+ --color-wg3: #ececea;
85
+ --color-wg4: #e5e5e2;
86
+ --color-wg5: #dcdcd8;
87
+ --color-wg6: #d1d1cc;
88
+ --color-wg7: #c2c2bc;
89
+ --color-wg8: #a6a69f;
90
+ --color-wg9: #777771;
91
+ --color-wg10: #686863;
92
+ --color-wg11: #4b4b47;
93
+ --color-wg12: #20201e;
94
+
95
+ /* Deprecated Neutral Grey names resolve to the canonical Warm Grey ramp.
96
+ Keep these aliases so existing consumer utilities continue to render. */
97
+ --color-ng1: var(--color-wg1);
98
+ --color-ng2: var(--color-wg2);
99
+ --color-ng3: var(--color-wg3);
100
+ --color-ng4: var(--color-wg4);
101
+ --color-ng5: var(--color-wg5);
102
+ --color-ng6: var(--color-wg6);
103
+ --color-ng7: var(--color-wg7);
104
+ --color-ng8: var(--color-wg8);
105
+ --color-ng9: var(--color-wg9);
106
+ --color-ng10: var(--color-wg10);
107
+ --color-ng11: var(--color-wg11);
108
+ --color-ng12: var(--color-wg12);
98
109
 
99
110
  --color-white: #ffffff;
100
111
 
@@ -112,31 +123,31 @@
112
123
  --color-green-900: var(--color-g11);
113
124
  --color-green-950: var(--color-g12);
114
125
 
115
- --color-grey-50: var(--color-ng1);
116
- --color-grey-100: var(--color-ng2);
117
- --color-grey-200: var(--color-ng3);
118
- --color-grey-300: var(--color-ng4);
119
- --color-grey-400: var(--color-ng5);
120
- --color-grey-500: var(--color-ng6);
121
- --color-grey-600: var(--color-ng7);
122
- --color-grey-700: var(--color-ng8);
123
- --color-grey-800: var(--color-ng9);
124
- --color-grey-850: var(--color-ng10);
125
- --color-grey-900: var(--color-ng11);
126
- --color-grey-950: var(--color-ng12);
127
-
128
- --color-ink-50: var(--color-ng1);
129
- --color-ink-100: var(--color-ng2);
130
- --color-ink-200: var(--color-ng3);
131
- --color-ink-300: var(--color-ng4);
132
- --color-ink-400: var(--color-ng5);
133
- --color-ink-500: var(--color-ng6);
134
- --color-ink-600: var(--color-ng7);
135
- --color-ink-700: var(--color-ng8);
136
- --color-ink-800: var(--color-ng9);
137
- --color-ink-850: var(--color-ng10);
138
- --color-ink-900: var(--color-ng11);
139
- --color-ink-950: var(--color-ng12);
126
+ --color-grey-50: var(--color-wg1);
127
+ --color-grey-100: var(--color-wg2);
128
+ --color-grey-200: var(--color-wg3);
129
+ --color-grey-300: var(--color-wg4);
130
+ --color-grey-400: var(--color-wg5);
131
+ --color-grey-500: var(--color-wg6);
132
+ --color-grey-600: var(--color-wg7);
133
+ --color-grey-700: var(--color-wg8);
134
+ --color-grey-800: var(--color-wg9);
135
+ --color-grey-850: var(--color-wg10);
136
+ --color-grey-900: var(--color-wg11);
137
+ --color-grey-950: var(--color-wg12);
138
+
139
+ --color-ink-50: var(--color-wg1);
140
+ --color-ink-100: var(--color-wg2);
141
+ --color-ink-200: var(--color-wg3);
142
+ --color-ink-300: var(--color-wg4);
143
+ --color-ink-400: var(--color-wg5);
144
+ --color-ink-500: var(--color-wg6);
145
+ --color-ink-600: var(--color-wg7);
146
+ --color-ink-700: var(--color-wg8);
147
+ --color-ink-800: var(--color-wg9);
148
+ --color-ink-850: var(--color-wg10);
149
+ --color-ink-900: var(--color-wg11);
150
+ --color-ink-950: var(--color-wg12);
140
151
 
141
152
  /* ---- Semantic accent ramps ---- */
142
153
  /* Success uses the lichen lime family and stays status-only. The original
@@ -187,21 +198,21 @@
187
198
  /* Demo logo indigo — source for artifact canvas wash. */
188
199
  --color-brand-mark: #2e1065;
189
200
 
190
- /* ---- Radii ---- five canonical steps: XS · S · M · L · XL.
201
+ /* ---- Radii ---- four canonical steps: XS · S · M · L.
191
202
  M (6px) is the default corner radius. */
192
203
  --radius-xs: 0.125rem; /* 2px · micro details */
193
204
  --radius-s: 0.25rem; /* 4px · compact controls */
194
205
  --radius-m: 0.375rem; /* 6px · default controls and surfaces */
195
- --radius-l: 0.5rem; /* 8px · menus and cards */
196
- --radius-xl: 0.75rem; /* 12px · large panels and feature surfaces */
206
+ --radius-l: 0.5rem; /* 8px · menus, cards, and large surfaces */
197
207
 
198
208
  /* Compatibility aliases preserve existing ADS utilities. */
199
209
  --radius-sm: var(--radius-s);
200
210
  --radius-md: var(--radius-m);
201
211
  --radius-lg: var(--radius-l);
202
- --radius-2xl: var(--radius-xl);
203
- --radius-3xl: var(--radius-xl);
204
- --radius-4xl: var(--radius-xl);
212
+ --radius-xl: var(--radius-l);
213
+ --radius-2xl: var(--radius-l);
214
+ --radius-3xl: var(--radius-l);
215
+ --radius-4xl: var(--radius-l);
205
216
  /* Shape-only exception for avatars, icon buttons, progress tracks, chips,
206
217
  and badges. It is not part of the corner-radius scale. */
207
218
  --radius-full: 9999px;
@@ -211,7 +222,7 @@
211
222
  convention). */
212
223
  --radius-dot: 2px;
213
224
 
214
- /* ---- Elevation ---- Shopify-inspired 0–600 ladder, recolored with NG12.
225
+ /* ---- Elevation ---- Shopify-inspired 0–600 ladder, recolored with WG12.
215
226
  Geometry and opacity increase together; static surfaces remain at 0. */
216
227
  --shadow-0: none;
217
228
  --shadow-100: 0 1px 0 0 rgb(32 32 32 / 0.07);
@@ -227,7 +238,7 @@
227
238
 
228
239
  /* Pinned-table-column smudges — whisper-soft directional casts shown only
229
240
  while content is hidden behind a sticky column (Table is scroll-aware).
230
- Deep negative spread keeps the edge feathered; the tint is neutral grey. */
241
+ Deep negative spread keeps the edge feathered; the tint is warm grey. */
231
242
  --shadow-table-smudge-left: 8px 0 24px -14px rgb(32 32 32 / 0.05);
232
243
  --shadow-table-smudge-right: -8px 0 24px -14px rgb(32 32 32 / 0.05);
233
244
 
@@ -253,8 +264,8 @@
253
264
  --sidebar-item: 2rem; /* 32px — collapsed rail hit target (square) */
254
265
  --sidebar-logo: 1.25rem; /* 20px — brand mark, centered in a --sidebar-item square */
255
266
  --sidebar-text-indent: 2.375rem; /* px-3 + icon size-4 + gap-2.5 — history rows align to nav-item text */
256
- --sidebar-navigation-text-size: var(--text-m); /* 15px — sidebar actions, items, history, and account text */
257
- --sidebar-section-label-size: 0.8125rem; /* 13px — section and history labels */
267
+ --sidebar-navigation-text-size: var(--text-m); /* 14px — sidebar actions, items, history, and account text */
268
+ --sidebar-section-label-size: var(--text-s); /* 12px — section and history labels */
258
269
  --panel-header-height: 2.75rem; /* 44px — Panel / toolbar header */
259
270
  --aside-width: 20rem; /* 320px — right-hand panel column */
260
271
 
@@ -267,7 +278,7 @@
267
278
  --thread-max-width: 44rem; /* chat column cap — readable prose measure, all panes */
268
279
  --thread-max-width-wide: 64rem; /* rich-content breakout cap (tables/charts/tool cards) on wide panes; prose keeps --thread-max-width */
269
280
  --composer-bg: var(--elevated); /* pure white composer surface */
270
- --composer-radius: var(--radius-xl);
281
+ --composer-radius: var(--radius-l);
271
282
  --composer-padding: 0.5rem;
272
283
  --composer-placeholder-max-h: calc(var(--text-m--line-height) * 2); /* rotating placeholder clamp — two lines of the input's own rhythm, so it can never overlap the accessory row */
273
284
  --chat-texture-opacity: 0.06; /* welcome-state halftone wash */
@@ -307,6 +318,7 @@
307
318
  * @theme inline exposes them as utilities (bg-background, text-primary, …).
308
319
  */
309
320
  @theme inline {
321
+ /* The shell canvas and its ink: the ground between top-level panels. */
310
322
  --color-background: var(--background);
311
323
  --color-foreground: var(--foreground);
312
324
 
@@ -323,13 +335,16 @@
323
335
  --color-secondary: var(--text-secondary);
324
336
  --color-tertiary: var(--text-tertiary);
325
337
 
338
+ /* One continuous recess inside a white surface, never a screen-level ground. */
326
339
  --color-surface: var(--surface);
327
340
  --color-surface-foreground: var(--surface-foreground);
328
341
  --color-elevated: var(--elevated);
329
342
 
343
+ /* The hover and row-state wash: interaction, not a default item background. */
330
344
  --color-muted: var(--muted);
331
345
  --color-muted-foreground: var(--muted-foreground);
332
346
 
347
+ /* The white working plane that sits on the canvas, and the specimen hairline. */
333
348
  --color-card: var(--card);
334
349
  --color-card-foreground: var(--card-foreground);
335
350
  --color-specimen-stroke: var(--specimen-stroke);
@@ -351,12 +366,15 @@
351
366
  /* Quiet fill — avatars, chips, and disabled controls */
352
367
  --color-fill: var(--fill);
353
368
  --color-fill-foreground: var(--fill-foreground);
369
+ /* Table surfaces: the white tray, its hairlines, and header ink. */
354
370
  --color-table-shell: var(--table-shell);
355
371
  --color-table-stroke: var(--table-stroke);
356
372
  --color-table-header-foreground: var(--table-header-foreground);
357
373
 
374
+ /* The artifact sheet: white warmed by a trace of the brand mark. */
358
375
  --color-artifact-canvas: var(--artifact-canvas);
359
376
 
377
+ /* The active and selected wash, one step above hover. */
360
378
  --color-accent: var(--accent);
361
379
  --color-accent-foreground: var(--accent-foreground);
362
380
 
@@ -368,12 +386,14 @@
368
386
  /* Amber-500 fill kept (it IS the caution signal); dark ink foreground
369
387
  instead of white = 6.94:1 (white on amber was 2.35:1, failed even 3:1). */
370
388
  --color-warning: var(--color-warning-500);
371
- --color-warning-foreground: var(--color-ng12);
389
+ --color-warning-foreground: var(--color-wg12);
390
+ /* Danger and info: solid semantic fills carrying white foregrounds. */
372
391
  --color-danger: var(--color-danger-600);
373
392
  --color-danger-foreground: var(--color-white);
374
393
  --color-info: var(--color-info-600);
375
394
  --color-info-foreground: var(--color-white);
376
395
 
396
+ /* The neutral stroke ladder: every 1px UI border stays within WG3 to WG5. */
377
397
  --color-border-primary: var(--border-primary);
378
398
  --color-border-secondary: var(--border-secondary);
379
399
  --color-border-tertiary: var(--border-tertiary);
@@ -383,6 +403,7 @@
383
403
  --color-menu-stroke: var(--menu-stroke);
384
404
  --color-toast-stroke: var(--toast-stroke);
385
405
  --color-tree-stroke: var(--tree-stroke);
406
+ /* Focus ring and scrim, both translucent warm ink. */
386
407
  --color-ring: var(--ring);
387
408
  --color-overlay: var(--overlay);
388
409
 
@@ -413,36 +434,37 @@
413
434
 
414
435
  /* ---- Theme (light only) ---- */
415
436
  :root {
416
- /* Surfaces and achromatic text/actions point into NG; the primary CTA
437
+ /* Surfaces and achromatic text/actions point into WG; the primary CTA
417
438
  points into G. */
418
- --background: var(--color-ng2); /* step 2 · canvas */
419
- --foreground: var(--color-ng12); /* step 12 */
420
-
421
- /* Both surface contexts point directly into the approved NG text steps.
422
- NG10 is the tertiary/de-emphasis step; it does not clear 4.5:1 for normal
423
- body text on these surfaces, so reserve it for nonessential content. */
424
- --text-on-white-primary: var(--color-ng12); /* 16.29:1 · AAA */
425
- --text-on-white-secondary: var(--color-ng11); /* 6.56:1 · AA */
426
- --text-on-white-tertiary: var(--color-ng10); /* 4.22:1 */
427
- --text-on-warm-grey-primary: var(--color-ng12); /* legacy name · neutral canvas */
428
- --text-on-warm-grey-secondary: var(--color-ng11); /* legacy name · neutral canvas */
429
- --text-on-warm-grey-tertiary: var(--color-ng10); /* legacy name · neutral canvas */
430
-
431
- /* Existing context-free utilities remain compatibility aliases. Their
432
- tertiary value stays conservative across NG2–NG4 and White. */
433
- --text-primary: var(--color-ng12); /* ~12.5:1 AAA (min surf) */
434
- --text-secondary: var(--color-ng11); /* ~5.0:1 AA (min surf) */
435
- --text-tertiary: #625f5c; /* ~4.53:1 AA (min surf) */
436
-
437
- --surface: var(--color-ng3); /* step 3 · tinted canvas */
438
- --surface-foreground: var(--color-ng12);
439
+ --background: var(--color-wg2); /* step 2 · canvas */
440
+ --foreground: var(--color-wg12); /* step 12 */
441
+
442
+ /* Both surface contexts point directly into the approved WG text steps.
443
+ WG9 is the tertiary/de-emphasis step for nonessential metadata. It clears
444
+ normal-text AA on White; use Secondary when normal text on WG2 must clear
445
+ AA. */
446
+ --text-on-white-primary: var(--color-wg12); /* 16.32:1 · AAA */
447
+ --text-on-white-secondary: var(--color-wg11); /* 8.76:1 · AAA */
448
+ --text-on-white-tertiary: var(--color-wg9); /* 4.50:1 · AA */
449
+ --text-on-warm-grey-primary: var(--color-wg12); /* 14.43:1 on WG2 · AAA */
450
+ --text-on-warm-grey-secondary: var(--color-wg11); /* 7.75:1 on WG2 · AAA */
451
+ --text-on-warm-grey-tertiary: var(--color-wg9); /* 3.98:1 on WG2 · large text AA */
452
+
453
+ /* Existing context-free utilities remain conservative compatibility aliases
454
+ across WG2–WG4 and White until their call sites adopt a surface role. */
455
+ --text-primary: var(--color-wg12); /* 12.93:1 AAA (WG4 min surf) */
456
+ --text-secondary: var(--color-wg11); /* 6.94:1 AA (WG4 min surf) */
457
+ --text-tertiary: color-mix(in srgb, var(--color-wg10) 80%, var(--color-wg11)); /* 4.86:1 AA (WG4) */
458
+
459
+ --surface: var(--color-wg3); /* step 3 · tinted canvas */
460
+ --surface-foreground: var(--color-wg12);
439
461
  --elevated: var(--color-white); /* pure white base */
440
462
 
441
- --muted: var(--color-ng4); /* step 4 */
442
- --muted-foreground: var(--color-ng11); /* step 11 · readable UI text */
463
+ --muted: var(--color-wg4); /* step 4 */
464
+ --muted-foreground: var(--color-wg11); /* step 11 · readable UI text */
443
465
 
444
466
  --card: var(--color-white); /* pure white base */
445
- --card-foreground: var(--color-ng12);
467
+ --card-foreground: var(--color-wg12);
446
468
 
447
469
  /* Studio green is deliberately isolated to the primary CTA role (roughly
448
470
  5–10% of a screen). Selection controls keep using neutral `brand` below,
@@ -455,36 +477,36 @@
455
477
 
456
478
  /* Neutral action role. The `brand` name remains as a compatibility API,
457
479
  and shared selection/control states intentionally remain achromatic. */
458
- --brand: var(--color-ng12); /* darkest neutral action */
480
+ --brand: var(--color-wg12); /* darkest neutral action */
459
481
  --brand-foreground: var(--color-white);
460
- --brand-hover: var(--color-ng11); /* lighter hover lift */
461
- --brand-text: var(--color-ng12); /* action text / links */
482
+ --brand-hover: var(--color-wg11); /* lighter hover lift */
483
+ --brand-text: var(--color-wg12); /* action text / links */
462
484
 
463
- /* Interactive rows lift one step above the NG1 zebra band. */
464
- --table-row-hover: var(--color-ng2);
465
- --table-row-selected: var(--color-ng1);
485
+ /* Interactive row hover/focus uses the WG3 highlight wash. */
486
+ --table-row-hover: var(--color-wg3);
487
+ --table-row-selected: var(--color-wg1);
466
488
 
467
- /* Quiet component fill. NG3 is the first interactive-background
489
+ /* Quiet component fill. WG3 is the first interactive-background
468
490
  step, so this remains visible on both white cards and the step-2 canvas. */
469
- --fill: var(--color-ng3); /* step 3 · default component fill */
470
- --fill-foreground: var(--color-ng12);
491
+ --fill: var(--color-wg3); /* step 3 · default component fill */
492
+ --fill-foreground: var(--color-wg12);
471
493
 
472
- --accent: var(--color-ng5); /* step 5 · active / selected wash */
473
- --accent-foreground: var(--color-ng12);
494
+ --accent: var(--color-wg5); /* step 5 · active / selected wash */
495
+ --accent-foreground: var(--color-wg12);
474
496
 
475
- /* Every neutral border stays within the consecutive NG3–NG5 range:
497
+ /* Every neutral border stays within the consecutive WG3–WG5 range:
476
498
  tertiary is the quietest 1px divider, secondary is the default hairline,
477
499
  and primary is the strongest neutral edge. */
478
- --border-primary: var(--color-ng5); /* step 5 · strongest */
479
- --border-secondary: var(--color-ng4); /* step 4 · default */
480
- --border-tertiary: var(--color-ng3); /* step 3 · faintest */
500
+ --border-primary: var(--color-wg5); /* step 5 · strongest */
501
+ --border-secondary: var(--color-wg4); /* step 4 · default */
502
+ --border-tertiary: var(--color-wg3); /* step 3 · faintest */
481
503
  /* Legacy aliases point into the scale so existing utilities keep resolving. */
482
504
  --border: var(--border-secondary); /* default hairline / separator */
483
505
  --border-strong: var(--border-primary); /* emphasized / hover / selected */
484
- --input: var(--color-ng4); /* form-control edge */
485
- --menu-stroke: var(--color-ng4); /* dropdown edge + separator */
486
- --toast-stroke: var(--color-ng4); /* toast card edge */
487
- --tree-stroke: var(--color-ng4); /* tree connector rail + elbows */
506
+ --input: var(--color-wg4); /* form-control edge */
507
+ --menu-stroke: var(--color-wg4); /* dropdown edge + separator */
508
+ --toast-stroke: var(--color-wg4); /* toast card edge */
509
+ --tree-stroke: var(--color-wg4); /* tree connector rail + elbows */
488
510
  --field-focus: var(--color-g8); /* subtle green focused-control edge */
489
511
 
490
512
  /* Ripple — the appearance wash that radiates from a floating surface's
@@ -495,27 +517,27 @@
495
517
 
496
518
  /* Stroke width — every standard UI border is exactly 1px. */
497
519
  --stroke-width: 1px;
498
- --ring: color-mix(in srgb, var(--color-ng12) 50%, transparent); /* NG12 @ 50% */
499
- --overlay: color-mix(in srgb, var(--color-ng12) 50%, transparent); /* NG12 @ 50% */
520
+ --ring: color-mix(in srgb, var(--color-wg12) 50%, transparent); /* WG12 @ 50% */
521
+ --overlay: color-mix(in srgb, var(--color-wg12) 50%, transparent); /* WG12 @ 50% */
500
522
 
501
523
  /* Functional / domain tokens — named for their render role, pointing into
502
- the canonical NG palette. Components pass these into non-CSS renderers
524
+ the canonical WG palette. Components pass these into non-CSS renderers
503
525
  (Recharts, React Flow, the Paper/WebGL texture) so no component carries a
504
526
  raw primitive value. Same DS pattern as the data-viz palette. */
505
527
  --chart-axis: var(--border-tertiary); /* axis lines + de-emphasised marks */
506
- --chart-grid: var(--color-ng3); /* quieter than axes, visible on white */
507
- --chart-track: var(--color-ng3); /* funnel / progress track */
508
- --chart-context: var(--color-ng6); /* de-emphasised context series */
528
+ --chart-grid: var(--color-wg3); /* quieter than axes, visible on white */
529
+ --chart-track: var(--color-wg3); /* funnel / progress track */
530
+ --chart-context: var(--color-wg6); /* de-emphasised context series */
509
531
  --chart-active-bar-opacity: 0.68; /* hover lightens a bar while preserving its series hue */
510
532
  --canvas-edge: var(--border-secondary);/* infinite-canvas edges / connectors */
511
- --texture-ink: var(--color-ng12); /* brand-texture / pixel-blast marks */
533
+ --texture-ink: var(--color-wg12); /* brand-texture / pixel-blast marks */
512
534
  --table-shell: var(--color-white); /* simplified single-surface table */
513
- --table-stroke: var(--color-ng3); /* table outline + row separators */
514
- --table-header-foreground: var(--color-ng10); /* secondary table heading text */
515
- --specimen-stroke: var(--color-ng3); /* showcase preview + variant-group frames */
516
- --table-scroll-hint: rgb(32 32 32 / 0.04); /* right-edge "more columns" wash */
517
- --surface-inverse: var(--color-ng12); /* dark hero / inverse surface base */
518
- --surface-inverse-soft: var(--color-ng11);/* dark hero gradient falloff */
535
+ --table-stroke: var(--color-wg3); /* table outline + row separators */
536
+ --table-header-foreground: var(--text-tertiary); /* 12px tertiary table heading text */
537
+ --specimen-stroke: var(--color-wg3); /* showcase preview + variant-group frames */
538
+ --table-scroll-hint: color-mix(in srgb, var(--color-wg12) 4%, transparent); /* right-edge wash */
539
+ --surface-inverse: var(--color-wg12); /* dark hero / inverse surface base */
540
+ --surface-inverse-soft: var(--color-wg11);/* dark hero gradient falloff */
519
541
  --artifact-canvas: color-mix(in srgb, var(--color-brand-mark) 7%, var(--color-white));
520
542
 
521
543
  /* shadcn-compat raw surfaces — so a downstream shadcn Sidebar / Popover