@actioneer/ads 1.0.9 → 1.0.10

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 (51) hide show
  1. package/DESIGN.md +98 -57
  2. package/README.md +19 -7
  3. package/components/answer.js +1 -1
  4. package/components/assistant-ui/composer-harness.js +13 -10
  5. package/components/body-page-header.d.ts +9 -4
  6. package/components/body-page-header.js +10 -10
  7. package/components/breadcrumbs.js +22 -22
  8. package/components/card.js +18 -18
  9. package/components/chart.d.ts +9 -0
  10. package/components/chart.js +738 -717
  11. package/components/chip.js +12 -12
  12. package/components/collection-header.js +4 -4
  13. package/components/connector-card.js +30 -30
  14. package/components/date-range-picker.js +1 -1
  15. package/components/detail-list.d.ts +28 -0
  16. package/components/detail-list.js +52 -0
  17. package/components/drawer.d.ts +38 -15
  18. package/components/drawer.js +150 -86
  19. package/components/empty-state.d.ts +3 -2
  20. package/components/empty-state.js +22 -22
  21. package/components/field.d.ts +16 -0
  22. package/components/field.js +63 -42
  23. package/components/file-dropzone.d.ts +15 -4
  24. package/components/file-dropzone.js +100 -64
  25. package/components/filter-bar.d.ts +44 -0
  26. package/components/filter-bar.js +89 -0
  27. package/components/index.d.ts +3 -0
  28. package/components/index.js +526 -513
  29. package/components/input-field.d.ts +1 -1
  30. package/components/input-field.js +24 -22
  31. package/components/modal.js +56 -53
  32. package/components/panel.js +26 -27
  33. package/components/sidebar.js +54 -54
  34. package/components/sparkline.d.ts +30 -0
  35. package/components/sparkline.js +69 -0
  36. package/demo/components/add-to-artifact.js +5 -2
  37. package/examples/README.md +4 -2
  38. package/examples/call-logs-screen.tsx +381 -0
  39. package/examples/campaign-analysis-screen.tsx +114 -72
  40. package/examples/campaigns-screen.tsx +218 -160
  41. package/examples/guardrails-settings-screen.tsx +123 -0
  42. package/fonts/geist-variable.woff2 +0 -0
  43. package/fonts.css +12 -17
  44. package/lib/icons.js +3 -3
  45. package/llms.txt +107 -39
  46. package/manifest.json +3100 -892
  47. package/package.json +1 -1
  48. package/styles.css +102 -59
  49. package/theme.css +81 -37
  50. package/fonts/aribau-grotesk-medium.woff2 +0 -0
  51. package/fonts/aribau-grotesk-regular.woff2 +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@actioneer/ads",
3
- "version": "1.0.9",
3
+ "version": "1.0.10",
4
4
  "description": "Actioneer Design System 1.0 — React 19 + Tailwind v4 component library.",
5
5
  "type": "module",
6
6
  "sideEffects": [
package/styles.css CHANGED
@@ -4,27 +4,22 @@
4
4
  @import "tw-shimmer";
5
5
  @import "tw-animate-css";
6
6
 
7
- /* ---- Aribau Grotesk ---- */
7
+ /* ---- Fonts: Geist (bundled); Season Mix headings are product-supplied ---- */
8
8
  @import "@fontsource-variable/jetbrains-mono/wght.css";
9
9
 
10
- /* Aribau Grotesk — ADS UI typeface.
11
- TWO physical faces, both served compressed (woff2):
12
- • Regular → `font-normal` (weight 100–499)
13
- • Medium → `font-medium` (weight 500)
14
- There is NO semibold or bold face. The broad face range keeps legacy
15
- consumers on the real Medium file, while ADS source uses only 400 and 500.
16
- `font-synthesis-weight: none` (index.css) blocks faux bolding. */
17
- @font-face {
18
- font-family: "Aribau Grotesk";
19
- src: url("./fonts/aribau-grotesk-regular.woff2") format("woff2");
20
- font-weight: 100 499;
21
- font-style: normal;
22
- font-display: swap;
23
- }
10
+ /* Geist — ADS body and UI typeface (SIL Open Font License, bundled).
11
+ One variable face covers every weight; ADS source uses only Regular (400)
12
+ and Medium (500). `font-synthesis-weight: none` (index.css) blocks faux
13
+ bolding.
14
+
15
+ Season Mix — ADS heading typeface (`--font-heading`). It is a licensed
16
+ font, so ADS does NOT bundle or redistribute it: each product declares its
17
+ own `@font-face { font-family: "Season Mix"; … }` from its licensed file.
18
+ Without it, headings fall back to the platform serif. */
24
19
  @font-face {
25
- font-family: "Aribau Grotesk";
26
- src: url("./fonts/aribau-grotesk-medium.woff2") format("woff2");
27
- font-weight: 500 900;
20
+ font-family: "Geist";
21
+ src: url("./fonts/geist-variable.woff2") format("woff2");
22
+ font-weight: 100 900;
28
23
  font-style: normal;
29
24
  font-display: swap;
30
25
  }
@@ -40,16 +35,20 @@
40
35
  * ============================================================
41
36
  * ADS 1.0 — Design Tokens
42
37
  * Palette: neutral greys + product teal
43
- * Typeface: Aribau Grotesk
38
+ * Typefaces: Geist (body and UI), Season Mix (headings)
44
39
  * ============================================================
45
40
  */
46
41
  @theme {
47
42
  /* ---- Typography ----
48
- One brand typeface (Regular + Medium). Figures stay in Aribau Grotesk with
49
- `tabular-nums` (enabled globally in index.css); only literal source code
50
- steps to the mono stack. */
51
- --font-sans: "Aribau Grotesk", ui-sans-serif, system-ui, -apple-system,
52
- "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
43
+ Two families: Geist for body, labels, controls, rows and data values
44
+ (Regular + Medium), and Season Mix for heading roles — page, drawer,
45
+ modal, section and chart titles, and every h1–h6 / [role=heading]
46
+ (index.css applies it). Figures stay in Geist with `tabular-nums`
47
+ (enabled globally in index.css); only literal source code steps to the
48
+ mono stack. Season Mix is licensed and not bundled (see fonts.css). */
49
+ --font-sans: "Geist", system-ui, -apple-system, "Segoe UI", Roboto,
50
+ Helvetica, Arial, sans-serif;
51
+ --font-heading: "Season Mix", serif;
53
52
 
54
53
  /* Source code only (CodeBlock, inline Code). JetBrains Mono is bundled so
55
54
  code renders consistently across platforms. Never use it for UI copy or
@@ -57,27 +56,42 @@
57
56
  --font-mono: "JetBrains Mono Variable", ui-monospace, SFMono-Regular,
58
57
  "SF Mono", Menlo, Consolas, "Liberation Mono", "Courier New", monospace;
59
58
 
60
- /* ---- Type scale ---- seven canonical steps: XS · S · M · L · XL · 2XL · 3XL.
61
- Roles follow the agent workflow. Root stays 16px so spacing is unaffected. */
62
- --text-xs: 0.625rem; /* 10px · noninteractive micro metadata */
63
- --text-xs--line-height: 0.875rem; /* 14px */
64
- --text-s: 0.75rem; /* 12px · compact controls, table headers and kickers */
65
- --text-s--line-height: 1rem; /* 16px */
66
- --text-m: 0.875rem; /* 14px · body, table cells, form labels and controls */
67
- --text-m--line-height: 1.25rem; /* 20px */
68
- --text-l: 1rem; /* 16px · tabs and section titles */
69
- --text-l--line-height: 1.375rem; /* 22px */
70
- --text-xl: 1.125rem; /* 18px · metric values and subtitles */
71
- --text-xl--line-height: 1.5rem; /* 24px */
72
- --text-2xl: 1.5rem; /* 24px · page titles */
73
- --text-2xl--line-height: 2rem; /* 32px */
74
- --text-3xl: 2rem; /* 32px · large data display */
75
- --text-3xl--line-height: 2.5rem; /* 40px */
59
+ /* ---- Type scale ---- the Radix Themes scale (user-mandated, 2026-11-14):
60
+ nine steps, each with its own line height and optical tracking (larger
61
+ steps tighten, the smallest opens slightly). ADS names map one step up
62
+ from the old 14px-body scale so everyday text reads at 16px:
63
+ XS = 1 · S = 2 · M = 3 · L = 4 · XL = 5 · 2XL = 6 · 3XL = 7 · 4XL = 8 · 5XL = 9
64
+ Root stays 16px so spacing is unaffected. */
65
+ --text-xs: 0.75rem; /* 12px · micro metadata, kickers, axis ticks, pagination */
66
+ --text-xs--line-height: 1rem; /* 16px */
67
+ --text-xs--letter-spacing: 0.0025em;
68
+ --text-s: 0.875rem; /* 14px · secondary metadata, chips, table headers, compact controls */
69
+ --text-s--line-height: 1.25rem; /* 20px */
70
+ --text-s--letter-spacing: 0em;
71
+ --text-m: 1rem; /* 16px · body, table cells, form labels, controls and tabs */
72
+ --text-m--line-height: 1.5rem; /* 24px */
73
+ --text-m--letter-spacing: 0em;
74
+ --text-l: 1.125rem; /* 18px · section and card titles */
75
+ --text-l--line-height: 1.625rem; /* 26px */
76
+ --text-l--letter-spacing: -0.0025em;
77
+ --text-xl: 1.25rem; /* 20px · page titles and breadcrumbs */
78
+ --text-xl--line-height: 1.75rem; /* 28px */
79
+ --text-xl--letter-spacing: -0.005em;
80
+ --text-2xl: 1.5rem; /* 24px · onboarding and empty-state headlines */
81
+ --text-2xl--line-height: 1.875rem; /* 30px */
82
+ --text-2xl--letter-spacing: -0.00625em;
83
+ --text-3xl: 1.75rem; /* 28px · detail-panel and tile metrics */
84
+ --text-3xl--line-height: 2.25rem; /* 36px */
85
+ --text-3xl--letter-spacing: -0.0075em;
86
+ --text-4xl: 2.1875rem; /* 35px · stat-card numbers */
87
+ --text-4xl--line-height: 2.5rem; /* 40px */
88
+ --text-4xl--letter-spacing: -0.01em;
89
+ --text-5xl: 3.75rem; /* 60px · display numbers */
90
+ --text-5xl--line-height: 3.75rem; /* 60px */
91
+ --text-5xl--letter-spacing: -0.025em;
76
92
 
77
93
  /* This is the complete ADS scale. Remove Tailwind's larger default steps so
78
- Storybook and product code cannot silently introduce an eighth size. */
79
- --text-4xl: initial;
80
- --text-5xl: initial;
94
+ Storybook and product code cannot silently introduce a tenth size. */
81
95
  --text-6xl: initial;
82
96
  --text-7xl: initial;
83
97
  --text-8xl: initial;
@@ -243,12 +257,19 @@
243
257
  /* Brand mark and artifact canvas wash share the product teal. */
244
258
  --color-brand-mark: var(--brand);
245
259
 
246
- /* ---- Radii ---- four canonical steps: XS · S · M · L.
260
+ /* ---- Radii ---- four control steps (XS · S · M · L) plus two
261
+ surface radii (card, window).
247
262
  M (6px) is the default corner radius. */
248
263
  --radius-xs: 0.125rem; /* 2px · micro details */
249
264
  --radius-s: 0.25rem; /* 4px · compact controls */
250
265
  --radius-m: 0.375rem; /* 6px · default controls and surfaces */
251
- --radius-l: 0.5rem; /* 8px · menus, cards, and large surfaces */
266
+ --radius-l: 0.5rem; /* 8px · menus, popovers and large controls */
267
+
268
+ /* Surface radii (user-mandated 2026-11-12, the window panel style):
269
+ resting cards (stat, chart, connector) and the app window that holds
270
+ the sidebar and the page. Controls never use these. */
271
+ --radius-card: 0.875rem; /* 14px · cards that rest on a white page */
272
+ --radius-window: 1.125rem; /* 18px · the app window (sidebar + page) */
252
273
 
253
274
  /* Compatibility aliases preserve existing ADS utilities. */
254
275
  --radius-sm: var(--radius-s);
@@ -267,7 +288,9 @@
267
288
  convention). */
268
289
  --radius-dot: 2px;
269
290
 
270
- /* ---- Elevation ---- five shadows, nothing else (ADS 1.0.8).
291
+ /* ---- Elevation ---- eight shadows, nothing else (ADS 1.0.10): flat,
292
+ two floating levels, two table hints, two resting surfaces and the
293
+ active sidebar item (below).
271
294
  A shadow means "this layer floats above the page". Everything that sits
272
295
  in the page — cards, panels, chips, buttons, tabs, fields — is flat and
273
296
  reads by fill or border. Neutral WG12 ink (rgb 32 32 32); each floating
@@ -287,6 +310,17 @@
287
310
  --shadow-table-smudge-left: 8px 0 24px -14px rgb(32 32 32 / 0.05);
288
311
  --shadow-table-smudge-right: -8px 0 24px -14px rgb(32 32 32 / 0.05);
289
312
 
313
+ /* Resting surfaces (user-mandated 2026-11-12). Not "floating": a soft,
314
+ barely-there lift that, with the WG4 hairline, sets a card or the app
315
+ window off its ground. Only Card (and stat/chart cards built on it) and
316
+ the app window carry these; panels, rows, chips and controls stay flat. */
317
+ --shadow-card: 0 1px 2px rgb(32 32 32 / 0.04), 0 8px 24px -12px rgb(32 32 32 / 0.10);
318
+ --shadow-window: 0 1px 2px rgb(32 32 32 / 0.05), 0 24px 48px -24px rgb(32 32 32 / 0.18);
319
+ /* The active sidebar item (user-mandated 2026-11-12): its White fill lifts
320
+ off the WG2 rail with a small, tight shadow so "you are here" reads at a
321
+ glance. Sidebar active rows only; hover stays flat. */
322
+ --shadow-nav-active: 0 1px 2px rgb(32 32 32 / 0.08), 0 4px 12px -4px rgb(32 32 32 / 0.14);
323
+
290
324
  /* ---- Layout ---- app-frame dimensions (Sidebar / Panel) */
291
325
  --sidebar-width: 15rem; /* 240px — primary nav rail */
292
326
  --sidebar-width-sm: 3.5rem; /* 56px — collapsed icon rail */
@@ -303,6 +337,8 @@
303
337
  --card-padding: 1.25rem; /* 20px — inner padding for cards */
304
338
  --connector-card-max: 30rem; /* 480px — max column width for connector-card grids (cap; no min) */
305
339
  --connector-card-min: 20rem; /* 320px — min column width for auto-fill connector-card grids (cards stretch to 1fr; column count follows the container) */
340
+ --modal-height: 40rem; /* 640px — every md/lg/xl Modal is this tall; header + footer stay put and ModalBody scrolls */
341
+ --modal-height-sm: 20rem; /* 320px — the fixed height of a sm (confirmation) Modal */
306
342
 
307
343
  /* ---- Chat (Ask Actioneer / assistant-ui) ---- */
308
344
  --thread-max-width: 44rem; /* chat column cap — readable prose measure, all panes */
@@ -329,18 +365,21 @@
329
365
  "good" and red reads "bad" even when the series is just a named entity,
330
366
  so a category key must never imply one. Green/red stay reserved for
331
367
  genuinely semantic states (success badges, danger alerts, a delta the
332
- CALLER has judged). Blue leads as the focal series; purple, orange, cyan
333
- and amber extend; grey closes as the sixth and doubles as the
334
- de-emphasis tone.
368
+ CALLER has judged). Vivid teal leads as the focal series; golden
369
+ yellow, purple, cerulean and indigo navy extend; grey closes as the sixth
370
+ and doubles as the de-emphasis tone.
335
371
 
336
372
  Explicit hexes (not var()) so every series survives @theme pruning,
337
373
  since chart colours are referenced from SVG prop strings. */
338
- --color-chart-1: #3d9aa4; /* teal — primary / focal (the right edge of the brand set) */
339
- --color-chart-2: #f7d06b; /* golden yellow — the warm 2nd series */
340
- --color-chart-3: #52496e; /* muted purple */
341
- --color-chart-4: #2d6f8a; /* deep teal-blue */
342
- --color-chart-5: #232149; /* navy ink */
343
- --color-chart-6: #8c8c84; /* grey — extended series + de-emphasis tone */
374
+ /* Vibrant teal/cyan family (user-mandated 2026-11-14): the same hues as
375
+ the original teal-led set, pushed to full saturation so they read at a
376
+ glance on white (the Span chart look). Still no green or red. */
377
+ --color-chart-1: #0fa3a0; /* vivid teal — primary / focal */
378
+ --color-chart-2: #ffc233; /* vivid golden yellow — the warm 2nd series */
379
+ --color-chart-3: #6b4de6; /* vivid purple */
380
+ --color-chart-4: #0a76b6; /* vivid cerulean (deep teal-blue) */
381
+ --color-chart-5: #3036a8; /* vivid indigo navy */
382
+ --color-chart-6: #8f8f8f; /* neutral grey — extended series + de-emphasis tone */
344
383
  }
345
384
 
346
385
  /*
@@ -849,15 +888,19 @@
849
888
  color: var(--foreground);
850
889
  font-family: var(--font-sans);
851
890
  font-size: var(--text-base); /* 14px base */
852
- /* Stylistic sets ss01, ss02, ss03. Figures are tabular everywhere
853
- (data-dense UI) via the real property, not a "tnum" feature tag. */
854
- font-feature-settings: "ss01", "ss02", "ss03";
891
+ /* Figures are tabular everywhere (data-dense UI) via the real property,
892
+ not a "tnum" feature tag. */
855
893
  font-variant-numeric: tabular-nums;
856
894
  font-synthesis-weight: none;
857
895
  }
858
896
 
897
+ /* Heading roles take the heading family; everything else stays in Geist. */
898
+ :is(h1, h2, h3, h4, h5, h6, [role="heading"]) {
899
+ font-family: var(--font-heading);
900
+ }
901
+
859
902
  /* Literal code uses the bundled mono face, including unclassed semantic
860
- code elements. UI copy and data remain in Aribau Grotesk. */
903
+ code elements. UI copy and data remain in Geist. */
861
904
  code,
862
905
  kbd,
863
906
  samp,
package/theme.css CHANGED
@@ -9,16 +9,20 @@
9
9
  * ============================================================
10
10
  * ADS 1.0 — Design Tokens
11
11
  * Palette: neutral greys + product teal
12
- * Typeface: Aribau Grotesk
12
+ * Typefaces: Geist (body and UI), Season Mix (headings)
13
13
  * ============================================================
14
14
  */
15
15
  @theme {
16
16
  /* ---- Typography ----
17
- One brand typeface (Regular + Medium). Figures stay in Aribau Grotesk with
18
- `tabular-nums` (enabled globally in index.css); only literal source code
19
- steps to the mono stack. */
20
- --font-sans: "Aribau Grotesk", ui-sans-serif, system-ui, -apple-system,
21
- "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
17
+ Two families: Geist for body, labels, controls, rows and data values
18
+ (Regular + Medium), and Season Mix for heading roles — page, drawer,
19
+ modal, section and chart titles, and every h1–h6 / [role=heading]
20
+ (index.css applies it). Figures stay in Geist with `tabular-nums`
21
+ (enabled globally in index.css); only literal source code steps to the
22
+ mono stack. Season Mix is licensed and not bundled (see fonts.css). */
23
+ --font-sans: "Geist", system-ui, -apple-system, "Segoe UI", Roboto,
24
+ Helvetica, Arial, sans-serif;
25
+ --font-heading: "Season Mix", serif;
22
26
 
23
27
  /* Source code only (CodeBlock, inline Code). JetBrains Mono is bundled so
24
28
  code renders consistently across platforms. Never use it for UI copy or
@@ -26,27 +30,42 @@
26
30
  --font-mono: "JetBrains Mono Variable", ui-monospace, SFMono-Regular,
27
31
  "SF Mono", Menlo, Consolas, "Liberation Mono", "Courier New", monospace;
28
32
 
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 · noninteractive micro metadata */
32
- --text-xs--line-height: 0.875rem; /* 14px */
33
- --text-s: 0.75rem; /* 12px · compact controls, table headers and kickers */
34
- --text-s--line-height: 1rem; /* 16px */
35
- --text-m: 0.875rem; /* 14px · body, table cells, form labels and controls */
36
- --text-m--line-height: 1.25rem; /* 20px */
37
- --text-l: 1rem; /* 16px · tabs 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 */
33
+ /* ---- Type scale ---- the Radix Themes scale (user-mandated, 2026-11-14):
34
+ nine steps, each with its own line height and optical tracking (larger
35
+ steps tighten, the smallest opens slightly). ADS names map one step up
36
+ from the old 14px-body scale so everyday text reads at 16px:
37
+ XS = 1 · S = 2 · M = 3 · L = 4 · XL = 5 · 2XL = 6 · 3XL = 7 · 4XL = 8 · 5XL = 9
38
+ Root stays 16px so spacing is unaffected. */
39
+ --text-xs: 0.75rem; /* 12px · micro metadata, kickers, axis ticks, pagination */
40
+ --text-xs--line-height: 1rem; /* 16px */
41
+ --text-xs--letter-spacing: 0.0025em;
42
+ --text-s: 0.875rem; /* 14px · secondary metadata, chips, table headers, compact controls */
43
+ --text-s--line-height: 1.25rem; /* 20px */
44
+ --text-s--letter-spacing: 0em;
45
+ --text-m: 1rem; /* 16px · body, table cells, form labels, controls and tabs */
46
+ --text-m--line-height: 1.5rem; /* 24px */
47
+ --text-m--letter-spacing: 0em;
48
+ --text-l: 1.125rem; /* 18px · section and card titles */
49
+ --text-l--line-height: 1.625rem; /* 26px */
50
+ --text-l--letter-spacing: -0.0025em;
51
+ --text-xl: 1.25rem; /* 20px · page titles and breadcrumbs */
52
+ --text-xl--line-height: 1.75rem; /* 28px */
53
+ --text-xl--letter-spacing: -0.005em;
54
+ --text-2xl: 1.5rem; /* 24px · onboarding and empty-state headlines */
55
+ --text-2xl--line-height: 1.875rem; /* 30px */
56
+ --text-2xl--letter-spacing: -0.00625em;
57
+ --text-3xl: 1.75rem; /* 28px · detail-panel and tile metrics */
58
+ --text-3xl--line-height: 2.25rem; /* 36px */
59
+ --text-3xl--letter-spacing: -0.0075em;
60
+ --text-4xl: 2.1875rem; /* 35px · stat-card numbers */
61
+ --text-4xl--line-height: 2.5rem; /* 40px */
62
+ --text-4xl--letter-spacing: -0.01em;
63
+ --text-5xl: 3.75rem; /* 60px · display numbers */
64
+ --text-5xl--line-height: 3.75rem; /* 60px */
65
+ --text-5xl--letter-spacing: -0.025em;
45
66
 
46
67
  /* 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;
68
+ Storybook and product code cannot silently introduce a tenth size. */
50
69
  --text-6xl: initial;
51
70
  --text-7xl: initial;
52
71
  --text-8xl: initial;
@@ -212,12 +231,19 @@
212
231
  /* Brand mark and artifact canvas wash share the product teal. */
213
232
  --color-brand-mark: var(--brand);
214
233
 
215
- /* ---- Radii ---- four canonical steps: XS · S · M · L.
234
+ /* ---- Radii ---- four control steps (XS · S · M · L) plus two
235
+ surface radii (card, window).
216
236
  M (6px) is the default corner radius. */
217
237
  --radius-xs: 0.125rem; /* 2px · micro details */
218
238
  --radius-s: 0.25rem; /* 4px · compact controls */
219
239
  --radius-m: 0.375rem; /* 6px · default controls and surfaces */
220
- --radius-l: 0.5rem; /* 8px · menus, cards, and large surfaces */
240
+ --radius-l: 0.5rem; /* 8px · menus, popovers and large controls */
241
+
242
+ /* Surface radii (user-mandated 2026-11-12, the window panel style):
243
+ resting cards (stat, chart, connector) and the app window that holds
244
+ the sidebar and the page. Controls never use these. */
245
+ --radius-card: 0.875rem; /* 14px · cards that rest on a white page */
246
+ --radius-window: 1.125rem; /* 18px · the app window (sidebar + page) */
221
247
 
222
248
  /* Compatibility aliases preserve existing ADS utilities. */
223
249
  --radius-sm: var(--radius-s);
@@ -236,7 +262,9 @@
236
262
  convention). */
237
263
  --radius-dot: 2px;
238
264
 
239
- /* ---- Elevation ---- five shadows, nothing else (ADS 1.0.8).
265
+ /* ---- Elevation ---- eight shadows, nothing else (ADS 1.0.10): flat,
266
+ two floating levels, two table hints, two resting surfaces and the
267
+ active sidebar item (below).
240
268
  A shadow means "this layer floats above the page". Everything that sits
241
269
  in the page — cards, panels, chips, buttons, tabs, fields — is flat and
242
270
  reads by fill or border. Neutral WG12 ink (rgb 32 32 32); each floating
@@ -256,6 +284,17 @@
256
284
  --shadow-table-smudge-left: 8px 0 24px -14px rgb(32 32 32 / 0.05);
257
285
  --shadow-table-smudge-right: -8px 0 24px -14px rgb(32 32 32 / 0.05);
258
286
 
287
+ /* Resting surfaces (user-mandated 2026-11-12). Not "floating": a soft,
288
+ barely-there lift that, with the WG4 hairline, sets a card or the app
289
+ window off its ground. Only Card (and stat/chart cards built on it) and
290
+ the app window carry these; panels, rows, chips and controls stay flat. */
291
+ --shadow-card: 0 1px 2px rgb(32 32 32 / 0.04), 0 8px 24px -12px rgb(32 32 32 / 0.10);
292
+ --shadow-window: 0 1px 2px rgb(32 32 32 / 0.05), 0 24px 48px -24px rgb(32 32 32 / 0.18);
293
+ /* The active sidebar item (user-mandated 2026-11-12): its White fill lifts
294
+ off the WG2 rail with a small, tight shadow so "you are here" reads at a
295
+ glance. Sidebar active rows only; hover stays flat. */
296
+ --shadow-nav-active: 0 1px 2px rgb(32 32 32 / 0.08), 0 4px 12px -4px rgb(32 32 32 / 0.14);
297
+
259
298
  /* ---- Layout ---- app-frame dimensions (Sidebar / Panel) */
260
299
  --sidebar-width: 15rem; /* 240px — primary nav rail */
261
300
  --sidebar-width-sm: 3.5rem; /* 56px — collapsed icon rail */
@@ -272,6 +311,8 @@
272
311
  --card-padding: 1.25rem; /* 20px — inner padding for cards */
273
312
  --connector-card-max: 30rem; /* 480px — max column width for connector-card grids (cap; no min) */
274
313
  --connector-card-min: 20rem; /* 320px — min column width for auto-fill connector-card grids (cards stretch to 1fr; column count follows the container) */
314
+ --modal-height: 40rem; /* 640px — every md/lg/xl Modal is this tall; header + footer stay put and ModalBody scrolls */
315
+ --modal-height-sm: 20rem; /* 320px — the fixed height of a sm (confirmation) Modal */
275
316
 
276
317
  /* ---- Chat (Ask Actioneer / assistant-ui) ---- */
277
318
  --thread-max-width: 44rem; /* chat column cap — readable prose measure, all panes */
@@ -298,18 +339,21 @@
298
339
  "good" and red reads "bad" even when the series is just a named entity,
299
340
  so a category key must never imply one. Green/red stay reserved for
300
341
  genuinely semantic states (success badges, danger alerts, a delta the
301
- CALLER has judged). Blue leads as the focal series; purple, orange, cyan
302
- and amber extend; grey closes as the sixth and doubles as the
303
- de-emphasis tone.
342
+ CALLER has judged). Vivid teal leads as the focal series; golden
343
+ yellow, purple, cerulean and indigo navy extend; grey closes as the sixth
344
+ and doubles as the de-emphasis tone.
304
345
 
305
346
  Explicit hexes (not var()) so every series survives @theme pruning,
306
347
  since chart colours are referenced from SVG prop strings. */
307
- --color-chart-1: #3d9aa4; /* teal — primary / focal (the right edge of the brand set) */
308
- --color-chart-2: #f7d06b; /* golden yellow — the warm 2nd series */
309
- --color-chart-3: #52496e; /* muted purple */
310
- --color-chart-4: #2d6f8a; /* deep teal-blue */
311
- --color-chart-5: #232149; /* navy ink */
312
- --color-chart-6: #8c8c84; /* grey — extended series + de-emphasis tone */
348
+ /* Vibrant teal/cyan family (user-mandated 2026-11-14): the same hues as
349
+ the original teal-led set, pushed to full saturation so they read at a
350
+ glance on white (the Span chart look). Still no green or red. */
351
+ --color-chart-1: #0fa3a0; /* vivid teal — primary / focal */
352
+ --color-chart-2: #ffc233; /* vivid golden yellow — the warm 2nd series */
353
+ --color-chart-3: #6b4de6; /* vivid purple */
354
+ --color-chart-4: #0a76b6; /* vivid cerulean (deep teal-blue) */
355
+ --color-chart-5: #3036a8; /* vivid indigo navy */
356
+ --color-chart-6: #8f8f8f; /* neutral grey — extended series + de-emphasis tone */
313
357
  }
314
358
 
315
359
  /*
Binary file
Binary file