@robr0/design-system 0.14.0 → 0.15.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 (62) hide show
  1. package/README.md +8 -5
  2. package/charts.d.ts +1 -0
  3. package/charts.js +2 -0
  4. package/components/AnchorNav/AnchorNav.css +74 -0
  5. package/components/AnchorNav/AnchorNav.d.ts +7 -0
  6. package/components/AnchorNav/AnchorNav.js +74 -21
  7. package/components/Button/Button.css +51 -0
  8. package/components/Button/Button.d.ts +2 -2
  9. package/components/Chart/Chart.css +4 -1
  10. package/components/CircularButton/CircularButton.css +46 -0
  11. package/components/CircularButton/CircularButton.d.ts +13 -2
  12. package/components/CircularButton/CircularButton.js +19 -16
  13. package/components/CommandPalette/CommandPalette.css +26 -1
  14. package/components/CommandPalette/CommandPalette.js +11 -7
  15. package/components/Composer/Composer.css +18 -0
  16. package/components/Composer/Composer.d.ts +4 -2
  17. package/components/Composer/Composer.js +1 -0
  18. package/components/ContributionGraph/ContributionGraph.css +21 -0
  19. package/components/ContributionGraph/ContributionGraph.js +18 -10
  20. package/components/Figure/Figure.css +14 -4
  21. package/components/Figure/Figure.js +11 -20
  22. package/components/FunnelChart/FunnelChart.css +11 -36
  23. package/components/FunnelChart/FunnelChart.d.ts +19 -16
  24. package/components/FunnelChart/FunnelChart.js +67 -39
  25. package/components/Gauge/Gauge.css +11 -1
  26. package/components/Meter/Meter.css +10 -1
  27. package/components/ProgressBar/ProgressBar.css +1 -1
  28. package/components/SegmentedControl/SegmentedControl.css +23 -0
  29. package/components/SegmentedControl/SegmentedControl.d.ts +3 -1
  30. package/components/SegmentedControl/SegmentedControl.js +3 -1
  31. package/components/Slider/Slider.css +1 -1
  32. package/components/Slider/Slider.js +1 -1
  33. package/components/SourceTrail/SourceTrail.css +209 -0
  34. package/components/SourceTrail/SourceTrail.d.ts +49 -0
  35. package/components/SourceTrail/SourceTrail.js +108 -0
  36. package/components/Sparkline/Sparkline.css +26 -2
  37. package/components/Sparkline/Sparkline.js +2 -1
  38. package/components/Spinner/Spinner.css +1 -1
  39. package/components/SplitButton/SplitButton.d.ts +1 -1
  40. package/components/SplitButton/SplitButton.js +1 -0
  41. package/components/ToggleGroup/ToggleGroup.css +17 -0
  42. package/components/ToggleGroup/ToggleGroup.d.ts +2 -0
  43. package/components/ToggleGroup/ToggleGroup.js +2 -0
  44. package/components/ToolCall/ToolCall.css +7 -2
  45. package/components/Tooltip/Tooltip.css +24 -7
  46. package/components/Tooltip/Tooltip.d.ts +2 -1
  47. package/components/UsageCard/UsageCard.css +30 -0
  48. package/components/UsageCard/UsageCard.d.ts +48 -0
  49. package/components/UsageCard/UsageCard.js +54 -0
  50. package/components/registry.d.ts +8 -2
  51. package/components/registry.json +41 -14
  52. package/components/registry.json.d.ts +41 -14
  53. package/components/registry.json.js +1 -1
  54. package/index.d.ts +2 -1
  55. package/index.js +4 -2
  56. package/package.json +1 -1
  57. package/tokens/registry.json +4 -0
  58. package/tokens/registry.json.d.ts +4 -0
  59. package/tokens/registry.json.js +1 -1
  60. package/tokens/tokens-dark.css +11 -2
  61. package/tokens/tokens-light.css +25 -11
  62. package/tokens/tokens-primitives.css +3 -0
package/index.js CHANGED
@@ -51,7 +51,6 @@ import { FieldContext, useField } from "./components/Field/FieldContext.js";
51
51
  import { Figure } from "./components/Figure/Figure.js";
52
52
  import { FileInput } from "./components/FileInput/FileInput.js";
53
53
  import { FilterBar } from "./components/FilterBar/FilterBar.js";
54
- import { FunnelChart } from "./components/FunnelChart/FunnelChart.js";
55
54
  import { Gauge } from "./components/Gauge/Gauge.js";
56
55
  import { Globe } from "./components/Globe/Globe.js";
57
56
  import { HoverCard } from "./components/HoverCard/HoverCard.js";
@@ -90,6 +89,7 @@ import { ShaderField } from "./components/ShaderField/ShaderField.js";
90
89
  import { Skeleton } from "./components/Skeleton/Skeleton.js";
91
90
  import { Slider } from "./components/Slider/Slider.js";
92
91
  import { SourceChip } from "./components/SourceChip/SourceChip.js";
92
+ import { SourceTrail } from "./components/SourceTrail/SourceTrail.js";
93
93
  import { Sparkline } from "./components/Sparkline/Sparkline.js";
94
94
  import { Spinner } from "./components/Spinner/Spinner.js";
95
95
  import { SplitButton } from "./components/SplitButton/SplitButton.js";
@@ -110,6 +110,7 @@ import { ToggleSwitch } from "./components/ToggleSwitch/ToggleSwitch.js";
110
110
  import { ToolCall } from "./components/ToolCall/ToolCall.js";
111
111
  import { Tooltip } from "./components/Tooltip/Tooltip.js";
112
112
  import { TreeView } from "./components/TreeView/TreeView.js";
113
+ import { UsageCard } from "./components/UsageCard/UsageCard.js";
113
114
  import { COMPONENT_COUNT, componentCategories, componentCategoryMetadata, componentMetadata, componentRegistry } from "./components/registry.js";
114
115
  import { TOKEN_COUNT, TOKEN_COUNTS, tokenRegistry } from "./tokens/registry.js";
115
116
  import { BLOB_COUNT } from "./components/ShaderField/field.glsl.js";
@@ -173,7 +174,6 @@ export {
173
174
  Figure,
174
175
  FileInput,
175
176
  FilterBar,
176
- FunnelChart,
177
177
  Gauge,
178
178
  Globe,
179
179
  HoverCard,
@@ -214,6 +214,7 @@ export {
214
214
  Skeleton,
215
215
  Slider,
216
216
  SourceChip,
217
+ SourceTrail,
217
218
  Sparkline,
218
219
  Spinner,
219
220
  SplitButton,
@@ -237,6 +238,7 @@ export {
237
238
  ToolCall,
238
239
  Tooltip,
239
240
  TreeView,
241
+ UsageCard,
240
242
  agentStatusPatterns,
241
243
  componentCategories,
242
244
  componentCategoryMetadata,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@robr0/design-system",
3
- "version": "0.14.0",
3
+ "version": "0.15.0",
4
4
  "description": "An AI-ready React design system: accessible components on composable tokens, light/dark theming, and CSS-variable overrides.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -4,6 +4,10 @@
4
4
  "colour": [
5
5
  "--color-action-icon-active",
6
6
  "--color-action-icon-default",
7
+ "--color-action-neutral-bg",
8
+ "--color-action-neutral-bg-active",
9
+ "--color-action-neutral-bg-hover",
10
+ "--color-action-neutral-text",
7
11
  "--color-action-passive-bg",
8
12
  "--color-action-passive-bg-active",
9
13
  "--color-action-passive-bg-hover",
@@ -4,6 +4,10 @@ declare const _default: {
4
4
  "colour": [
5
5
  "--color-action-icon-active",
6
6
  "--color-action-icon-default",
7
+ "--color-action-neutral-bg",
8
+ "--color-action-neutral-bg-active",
9
+ "--color-action-neutral-bg-hover",
10
+ "--color-action-neutral-text",
7
11
  "--color-action-passive-bg",
8
12
  "--color-action-passive-bg-active",
9
13
  "--color-action-passive-bg-hover",
@@ -1,4 +1,4 @@
1
- const categories = { "colour": ["--color-action-icon-active", "--color-action-icon-default", "--color-action-passive-bg", "--color-action-passive-bg-active", "--color-action-passive-bg-hover", "--color-action-passive-text", "--color-action-primary-bg", "--color-action-primary-bg-active", "--color-action-primary-bg-hover", "--color-action-primary-border", "--color-action-primary-border-secondary", "--color-action-primary-border-tertiary", "--color-action-primary-text", "--color-action-primary-text-active", "--color-action-primary-text-secondary", "--color-action-primary-text-tertiary", "--color-ai-gradient-end", "--color-ai-gradient-mid", "--color-ai-gradient-start", "--color-bg-container-border", "--color-bg-container-inverse", "--color-bg-container-primary", "--color-bg-container-primary-semi", "--color-bg-container-primary-transparent", "--color-bg-container-secondary", "--color-bg-container-tertiary", "--color-bg-glass", "--color-bg-page-inverse", "--color-bg-page-primary", "--color-chart-contribution-0", "--color-chart-contribution-1", "--color-chart-contribution-2", "--color-chart-contribution-3", "--color-chart-contribution-4", "--color-chart-series-1", "--color-chart-series-2", "--color-chart-series-3", "--color-chart-series-4", "--color-chart-series-5", "--color-chart-series-6", "--color-chart-series-7", "--color-chat-bubble-received-bg", "--color-chat-bubble-received-text", "--color-chat-bubble-sent-bg", "--color-chat-bubble-sent-text", "--color-control-thumb", "--color-core-accent-amber", "--color-core-accent-cobalt", "--color-core-accent-coral", "--color-core-accent-gold", "--color-core-accent-mint", "--color-core-accent-violet", "--color-core-ui-primary", "--color-core-ui-secondary", "--color-divider", "--color-icon-primary", "--color-icon-secondary", "--color-input-bg-disabled", "--color-input-bg-primary", "--color-input-border-disabled", "--color-input-border-hover", "--color-input-border-primary", "--color-input-border-selected", "--color-input-text-disabled", "--color-input-text-inverse", "--color-input-text-placeholder", "--color-input-text-primary", "--color-scrim", "--color-status-error-bg", "--color-status-error-border", "--color-status-error-text", "--color-status-info-bg", "--color-status-info-border", "--color-status-info-text", "--color-status-neutral-bg", "--color-status-neutral-border", "--color-status-neutral-text", "--color-status-positive-bg", "--color-status-positive-border", "--color-status-positive-text", "--color-status-warning-bg", "--color-status-warning-border", "--color-status-warning-text", "--color-text-inverse", "--color-text-on-inverse", "--color-text-primary", "--color-text-secondary", "--color-text-tertiary", "--color-trend-down", "--color-trend-up"], "typography": ["--font-caption-family", "--font-caption-letter-spacing", "--font-caption-line-height", "--font-caption-size", "--font-caption-weight", "--font-display-1-family", "--font-display-1-letter-spacing", "--font-display-1-line-height", "--font-display-1-size", "--font-display-1-weight", "--font-display-2-family", "--font-display-2-letter-spacing", "--font-display-2-line-height", "--font-display-2-size", "--font-display-2-weight", "--font-family-code", "--font-family-primary", "--font-heading-1-family", "--font-heading-1-letter-spacing", "--font-heading-1-line-height", "--font-heading-1-size", "--font-heading-1-weight", "--font-heading-2-family", "--font-heading-2-letter-spacing", "--font-heading-2-line-height", "--font-heading-2-size", "--font-heading-2-weight", "--font-heading-3-family", "--font-heading-3-letter-spacing", "--font-heading-3-line-height", "--font-heading-3-size", "--font-heading-3-weight", "--font-mega-1-family", "--font-mega-1-letter-spacing", "--font-mega-1-line-height", "--font-mega-1-size", "--font-mega-1-weight", "--font-mega-2-family", "--font-mega-2-letter-spacing", "--font-mega-2-line-height", "--font-mega-2-size", "--font-mega-2-weight", "--font-overline-family", "--font-overline-letter-spacing", "--font-overline-line-height", "--font-overline-size", "--font-overline-weight", "--font-paragraph-em-family", "--font-paragraph-em-letter-spacing", "--font-paragraph-em-line-height", "--font-paragraph-em-size", "--font-paragraph-em-weight", "--font-paragraph-family", "--font-paragraph-letter-spacing", "--font-paragraph-line-height", "--font-paragraph-size", "--font-paragraph-sm-em-family", "--font-paragraph-sm-em-letter-spacing", "--font-paragraph-sm-em-line-height", "--font-paragraph-sm-em-size", "--font-paragraph-sm-em-weight", "--font-paragraph-sm-family", "--font-paragraph-sm-letter-spacing", "--font-paragraph-sm-line-height", "--font-paragraph-sm-size", "--font-paragraph-sm-weight", "--font-paragraph-weight", "--font-sub-display-family", "--font-sub-display-letter-spacing", "--font-sub-display-line-height", "--font-sub-display-size", "--font-sub-display-weight", "--font-title-body-family", "--font-title-body-letter-spacing", "--font-title-body-line-height", "--font-title-body-size", "--font-title-body-weight"], "spacing": ["--gap-lg", "--gap-md", "--gap-sm", "--gap-sm-md", "--gap-xl", "--gap-xs", "--gap-xxl", "--gap-xxs", "--gap-xxxl", "--gap-xxxxl", "--padding-lg", "--padding-md", "--padding-sm", "--padding-sm-md", "--padding-xl", "--padding-xs", "--padding-xxl", "--padding-xxs", "--padding-xxxs"], "radius": ["--radius-composer", "--radius-full", "--radius-lg", "--radius-md", "--radius-sm", "--radius-xl", "--radius-xs", "--radius-xxl", "--radius-xxs"], "border": ["--border-md", "--border-xs"], "shadow": ["--shadow-floating", "--shadow-modal"], "icons": ["--icon-size-lg", "--icon-size-md", "--icon-size-sm", "--icon-size-xl"], "motion": ["--motion-duration-base", "--motion-duration-deliberate", "--motion-duration-fast", "--motion-duration-instant", "--motion-duration-loop-matrix", "--motion-duration-loop-shimmer", "--motion-duration-loop-spin", "--motion-duration-slow", "--motion-duration-slower", "--motion-ease-emphasized", "--motion-ease-entrance", "--motion-ease-linear", "--motion-ease-spring", "--motion-ease-standard"] };
1
+ const categories = { "colour": ["--color-action-icon-active", "--color-action-icon-default", "--color-action-neutral-bg", "--color-action-neutral-bg-active", "--color-action-neutral-bg-hover", "--color-action-neutral-text", "--color-action-passive-bg", "--color-action-passive-bg-active", "--color-action-passive-bg-hover", "--color-action-passive-text", "--color-action-primary-bg", "--color-action-primary-bg-active", "--color-action-primary-bg-hover", "--color-action-primary-border", "--color-action-primary-border-secondary", "--color-action-primary-border-tertiary", "--color-action-primary-text", "--color-action-primary-text-active", "--color-action-primary-text-secondary", "--color-action-primary-text-tertiary", "--color-ai-gradient-end", "--color-ai-gradient-mid", "--color-ai-gradient-start", "--color-bg-container-border", "--color-bg-container-inverse", "--color-bg-container-primary", "--color-bg-container-primary-semi", "--color-bg-container-primary-transparent", "--color-bg-container-secondary", "--color-bg-container-tertiary", "--color-bg-glass", "--color-bg-page-inverse", "--color-bg-page-primary", "--color-chart-contribution-0", "--color-chart-contribution-1", "--color-chart-contribution-2", "--color-chart-contribution-3", "--color-chart-contribution-4", "--color-chart-series-1", "--color-chart-series-2", "--color-chart-series-3", "--color-chart-series-4", "--color-chart-series-5", "--color-chart-series-6", "--color-chart-series-7", "--color-chat-bubble-received-bg", "--color-chat-bubble-received-text", "--color-chat-bubble-sent-bg", "--color-chat-bubble-sent-text", "--color-control-thumb", "--color-core-accent-amber", "--color-core-accent-cobalt", "--color-core-accent-coral", "--color-core-accent-gold", "--color-core-accent-mint", "--color-core-accent-violet", "--color-core-ui-primary", "--color-core-ui-secondary", "--color-divider", "--color-icon-primary", "--color-icon-secondary", "--color-input-bg-disabled", "--color-input-bg-primary", "--color-input-border-disabled", "--color-input-border-hover", "--color-input-border-primary", "--color-input-border-selected", "--color-input-text-disabled", "--color-input-text-inverse", "--color-input-text-placeholder", "--color-input-text-primary", "--color-scrim", "--color-status-error-bg", "--color-status-error-border", "--color-status-error-text", "--color-status-info-bg", "--color-status-info-border", "--color-status-info-text", "--color-status-neutral-bg", "--color-status-neutral-border", "--color-status-neutral-text", "--color-status-positive-bg", "--color-status-positive-border", "--color-status-positive-text", "--color-status-warning-bg", "--color-status-warning-border", "--color-status-warning-text", "--color-text-inverse", "--color-text-on-inverse", "--color-text-primary", "--color-text-secondary", "--color-text-tertiary", "--color-trend-down", "--color-trend-up"], "typography": ["--font-caption-family", "--font-caption-letter-spacing", "--font-caption-line-height", "--font-caption-size", "--font-caption-weight", "--font-display-1-family", "--font-display-1-letter-spacing", "--font-display-1-line-height", "--font-display-1-size", "--font-display-1-weight", "--font-display-2-family", "--font-display-2-letter-spacing", "--font-display-2-line-height", "--font-display-2-size", "--font-display-2-weight", "--font-family-code", "--font-family-primary", "--font-heading-1-family", "--font-heading-1-letter-spacing", "--font-heading-1-line-height", "--font-heading-1-size", "--font-heading-1-weight", "--font-heading-2-family", "--font-heading-2-letter-spacing", "--font-heading-2-line-height", "--font-heading-2-size", "--font-heading-2-weight", "--font-heading-3-family", "--font-heading-3-letter-spacing", "--font-heading-3-line-height", "--font-heading-3-size", "--font-heading-3-weight", "--font-mega-1-family", "--font-mega-1-letter-spacing", "--font-mega-1-line-height", "--font-mega-1-size", "--font-mega-1-weight", "--font-mega-2-family", "--font-mega-2-letter-spacing", "--font-mega-2-line-height", "--font-mega-2-size", "--font-mega-2-weight", "--font-overline-family", "--font-overline-letter-spacing", "--font-overline-line-height", "--font-overline-size", "--font-overline-weight", "--font-paragraph-em-family", "--font-paragraph-em-letter-spacing", "--font-paragraph-em-line-height", "--font-paragraph-em-size", "--font-paragraph-em-weight", "--font-paragraph-family", "--font-paragraph-letter-spacing", "--font-paragraph-line-height", "--font-paragraph-size", "--font-paragraph-sm-em-family", "--font-paragraph-sm-em-letter-spacing", "--font-paragraph-sm-em-line-height", "--font-paragraph-sm-em-size", "--font-paragraph-sm-em-weight", "--font-paragraph-sm-family", "--font-paragraph-sm-letter-spacing", "--font-paragraph-sm-line-height", "--font-paragraph-sm-size", "--font-paragraph-sm-weight", "--font-paragraph-weight", "--font-sub-display-family", "--font-sub-display-letter-spacing", "--font-sub-display-line-height", "--font-sub-display-size", "--font-sub-display-weight", "--font-title-body-family", "--font-title-body-letter-spacing", "--font-title-body-line-height", "--font-title-body-size", "--font-title-body-weight"], "spacing": ["--gap-lg", "--gap-md", "--gap-sm", "--gap-sm-md", "--gap-xl", "--gap-xs", "--gap-xxl", "--gap-xxs", "--gap-xxxl", "--gap-xxxxl", "--padding-lg", "--padding-md", "--padding-sm", "--padding-sm-md", "--padding-xl", "--padding-xs", "--padding-xxl", "--padding-xxs", "--padding-xxxs"], "radius": ["--radius-composer", "--radius-full", "--radius-lg", "--radius-md", "--radius-sm", "--radius-xl", "--radius-xs", "--radius-xxl", "--radius-xxs"], "border": ["--border-md", "--border-xs"], "shadow": ["--shadow-floating", "--shadow-modal"], "icons": ["--icon-size-lg", "--icon-size-md", "--icon-size-sm", "--icon-size-xl"], "motion": ["--motion-duration-base", "--motion-duration-deliberate", "--motion-duration-fast", "--motion-duration-instant", "--motion-duration-loop-matrix", "--motion-duration-loop-shimmer", "--motion-duration-loop-spin", "--motion-duration-slow", "--motion-duration-slower", "--motion-ease-emphasized", "--motion-ease-entrance", "--motion-ease-linear", "--motion-ease-spring", "--motion-ease-standard"] };
2
2
  const registry = {
3
3
  categories
4
4
  };
@@ -75,6 +75,14 @@
75
75
  --color-action-passive-bg-hover: var(--primitive-neutral-08-semi);
76
76
  --color-action-passive-bg-active: var(--primitive-neutral-07-semi);
77
77
 
78
+ /* Action - Neutral (grey filled buttons). The fill stays visible at
79
+ rest, one step above the container greys; hover and active brighten
80
+ toward the page's opposite, like the primary family. */
81
+ --color-action-neutral-bg: var(--primitive-neutral-08);
82
+ --color-action-neutral-bg-hover: var(--primitive-neutral-07);
83
+ --color-action-neutral-bg-active: var(--primitive-neutral-06);
84
+ --color-action-neutral-text: var(--primitive-neutral-01);
85
+
78
86
  /* Status - Positive */
79
87
  --color-status-positive-bg: var(--primitive-green-10);
80
88
  --color-status-positive-border: var(--primitive-green-07);
@@ -100,8 +108,9 @@
100
108
  --color-status-neutral-border: var(--primitive-neutral-06);
101
109
  --color-status-neutral-text: var(--primitive-neutral-01);
102
110
 
103
- /* AI - The gradient accent, one step brighter than light mode so the ring
104
- stays luminous on dark surfaces. */
111
+ /* AI - The gradient accent: the same luminous stops as light. One set
112
+ works on both floors, so the AI signature never shifts hue with the
113
+ theme. */
105
114
  --color-ai-gradient-start: var(--primitive-red-05);
106
115
  --color-ai-gradient-mid: var(--primitive-blue-05);
107
116
  --color-ai-gradient-end: var(--primitive-teal-07);
@@ -19,22 +19,25 @@
19
19
  --color-icon-secondary: var(--primitive-neutral-04);
20
20
 
21
21
  /* Background - Page */
22
- --color-bg-page-primary: var(--primitive-neutral-00);
22
+ --color-bg-page-primary: var(--primitive-neutral-01);
23
23
  --color-bg-page-inverse: var(--primitive-neutral-10);
24
24
 
25
25
  /* Background - Container */
26
- --color-bg-container-primary: var(--primitive-neutral-01);
27
- --color-bg-container-primary-transparent: var(--primitive-neutral-01-transparent);
28
- --color-bg-container-primary-semi: var(--primitive-neutral-01-semi);
29
- --color-bg-container-secondary: var(--primitive-neutral-02);
30
- --color-bg-container-tertiary: var(--primitive-neutral-03);
26
+ --color-bg-container-primary: var(--primitive-neutral-00);
27
+ --color-bg-container-primary-transparent: var(--primitive-neutral-00-transparent);
28
+ /* The semi surface rides the glass-strength white, not the 60% one: light
29
+ containers should read bright white, with the ambient background only
30
+ whispering through. */
31
+ --color-bg-container-primary-semi: var(--primitive-neutral-00-glass);
32
+ --color-bg-container-secondary: var(--primitive-neutral-01);
33
+ --color-bg-container-tertiary: var(--primitive-neutral-02);
31
34
  --color-bg-container-inverse: var(--primitive-neutral-09);
32
35
  --color-bg-container-border: var(--primitive-neutral-02);
33
36
 
34
37
  /* Glass: the translucent floating-surface fill (chat panel, floating
35
38
  sidebar). Deliberately translucent in both themes so the page's
36
39
  colours reach the surface; pair it with backdrop-filter: blur(24px). */
37
- --color-bg-glass: var(--primitive-neutral-01-glass);
40
+ --color-bg-glass: var(--primitive-neutral-00-glass);
38
41
 
39
42
  /* Divider */
40
43
  --color-divider: var(--primitive-neutral-02-semi);
@@ -81,6 +84,15 @@
81
84
  --color-action-passive-bg-hover: var(--primitive-neutral-02-semi);
82
85
  --color-action-passive-bg-active: var(--primitive-neutral-03-semi);
83
86
 
87
+ /* Action - Neutral (grey filled buttons). Unlike passive, the fill is a
88
+ solid grey step that stays visible at rest — a filled button without
89
+ the action teal's "click here" weight. Hover and active deepen in
90
+ light mode and brighten in dark, like the primary family. */
91
+ --color-action-neutral-bg: var(--primitive-neutral-02);
92
+ --color-action-neutral-bg-hover: var(--primitive-neutral-03);
93
+ --color-action-neutral-bg-active: var(--primitive-neutral-04);
94
+ --color-action-neutral-text: var(--primitive-neutral-10);
95
+
84
96
  /* Core colours */
85
97
  --color-core-ui-primary: var(--primitive-teal-08);
86
98
  --color-core-ui-secondary: var(--primitive-teal-10);
@@ -125,10 +137,12 @@
125
137
  /* AI - The gradient accent reserved for AI entry points and surfaces.
126
138
  Red → blue → teal, so the AI affordance is its own signature and the
127
139
  flat action teal keeps meaning "click here". Used as gradient stops
128
- (AiButton's ring and glow), never as fills for ordinary chrome. */
129
- --color-ai-gradient-start: var(--primitive-red-06);
130
- --color-ai-gradient-mid: var(--primitive-blue-06);
131
- --color-ai-gradient-end: var(--primitive-teal-08);
140
+ (AiButton's ring and glow), never as fills for ordinary chrome.
141
+ One luminous set, shared with dark: the deeper inks read as a heavy
142
+ dark border on white surfaces. */
143
+ --color-ai-gradient-start: var(--primitive-red-05);
144
+ --color-ai-gradient-mid: var(--primitive-blue-05);
145
+ --color-ai-gradient-end: var(--primitive-teal-07);
132
146
 
133
147
  /* Chart - Contribution heatmap ramp (level 0 = none → level 4 = most) */
134
148
  --color-chart-contribution-0: var(--color-bg-container-primary);
@@ -11,6 +11,9 @@
11
11
 
12
12
  /* Neutral Scale */
13
13
  --primitive-neutral-00: #FFFFFF;
14
+ --primitive-neutral-00-transparent: rgba(255, 255, 255, 0.01);
15
+ --primitive-neutral-00-semi: rgba(255, 255, 255, 0.6);
16
+ --primitive-neutral-00-glass: rgba(255, 255, 255, 0.9);
14
17
  --primitive-neutral-01: #F1F1F1;
15
18
  --primitive-neutral-01-transparent: rgba(241, 241, 241, 0.01);
16
19
  --primitive-neutral-01-semi: rgba(241, 241, 241, 0.6);