jouw-stem__design-system 0.1.0 → 0.2.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.
- package/dist/css/theme-dark.css +78 -78
- package/dist/css/theme-light.css +888 -888
- package/dist/manifest.json +2 -2
- package/dist/scss/_tokens.scss +48 -48
- package/dist/token-refs.json +67 -67
- package/package.json +1 -1
- package/src/components/ButtonPrimary/ButtonPrimary.tokens.theme-light.json +8 -8
- package/tokens/themes/theme-dark/color.json +9 -9
- package/tokens/themes/theme-light/color.json +52 -52
package/dist/manifest.json
CHANGED
package/dist/scss/_tokens.scss
CHANGED
|
@@ -2,73 +2,73 @@
|
|
|
2
2
|
// These SCSS variables reference CSS custom properties for runtime theming
|
|
3
3
|
|
|
4
4
|
// Surface
|
|
5
|
-
$surface-canvas: var(--surface-canvas); // Main page background —
|
|
6
|
-
$surface-panel: var(--surface-panel); // Card/panel background —
|
|
5
|
+
$surface-canvas: var(--surface-canvas); // Main page background — warm off-white, the dominant fill across all six mockups
|
|
6
|
+
$surface-panel: var(--surface-panel); // Card/panel background — pure white cards sitting on the warm canvas (pricing cards, form fields)
|
|
7
7
|
$surface-elevated: var(--surface-elevated); // Elevated surface (modals, dropdowns)
|
|
8
|
-
$surface-overlay: var(--surface-overlay); // Modal overlay backdrop
|
|
9
|
-
$surface-muted: var(--surface-muted); // Subtle/recessed background —
|
|
10
|
-
$surface-inverse: var(--surface-inverse); // Dark surface for contrast (
|
|
11
|
-
$surface-highlight: var(--surface-highlight); //
|
|
12
|
-
$surface-gradient-start: var(--surface-gradient-start); // Gradient background start — flattened to solid (no
|
|
13
|
-
$surface-gradient-end: var(--surface-gradient-end); // Gradient background end — flattened to solid (no
|
|
8
|
+
$surface-overlay: var(--surface-overlay); // Modal overlay backdrop — deep petrol wash rather than neutral black
|
|
9
|
+
$surface-muted: var(--surface-muted); // Subtle/recessed background — cool grey-green band (quote block, 'eerste les gratis' strip)
|
|
10
|
+
$surface-inverse: var(--surface-inverse); // Dark surface for contrast (footer, CTA bands) — deep petrol, measured flat fill
|
|
11
|
+
$surface-highlight: var(--surface-highlight); // Accent surface — light teal tint (selected/'meest gekozen' card wash)
|
|
12
|
+
$surface-gradient-start: var(--surface-gradient-start); // Gradient background start — flattened to solid (design uses no surface gradients)
|
|
13
|
+
$surface-gradient-end: var(--surface-gradient-end); // Gradient background end — flattened to solid (design uses no surface gradients)
|
|
14
14
|
|
|
15
15
|
// Text
|
|
16
|
-
$text-default: var(--text-default); // Primary text —
|
|
16
|
+
$text-default: var(--text-default); // Primary body text — petrol slate, 11.2:1 on canvas
|
|
17
17
|
$text-primary: var(--text-primary); // Primary text (alias)
|
|
18
|
-
$text-secondary: var(--text-secondary); // Secondary text —
|
|
19
|
-
$text-muted: var(--text-muted); // Helper/secondary text
|
|
20
|
-
$text-subtle: var(--text-subtle); // Placeholder text
|
|
21
|
-
$text-inverse: var(--text-inverse); // Text on dark
|
|
22
|
-
$text-link: var(--text-link); // Link text —
|
|
23
|
-
$text-linkHover: var(--text-linkHover); // Link hover —
|
|
24
|
-
$text-linkVisited: var(--text-linkVisited); // Visited link
|
|
25
|
-
$text-heading: var(--text-heading); // Heading text —
|
|
18
|
+
$text-secondary: var(--text-secondary); // Secondary text — lifted petrol slate, 8.0:1 on canvas
|
|
19
|
+
$text-muted: var(--text-muted); // Helper/secondary text — 4.8:1 on canvas, holds AA
|
|
20
|
+
$text-subtle: var(--text-subtle); // Placeholder text — 3.2:1 on canvas (AA-large / non-text minimum)
|
|
21
|
+
$text-inverse: var(--text-inverse); // Text on dark surfaces — warm off-white, 16.8:1 on the petrol inverse
|
|
22
|
+
$text-link: var(--text-link); // Link text — teal ramp step 700, 5.2:1 on canvas
|
|
23
|
+
$text-linkHover: var(--text-linkHover); // Link hover — one ramp step deeper, 7.2:1 on canvas
|
|
24
|
+
$text-linkVisited: var(--text-linkVisited); // Visited link — muted slate-blue, kept distinguishable from the teal link
|
|
25
|
+
$text-heading: var(--text-heading); // Heading text — near-black petrol ink, 17.6:1 on canvas (darkest measured stroke plateau)
|
|
26
26
|
|
|
27
27
|
// Border
|
|
28
|
-
$border-subtle: var(--border-subtle); // Subtle borders —
|
|
29
|
-
$border-default: var(--border-default); // Default borders
|
|
30
|
-
$border-strong: var(--border-strong); // Emphasised borders —
|
|
31
|
-
$border-focus: var(--border-focus); // Focus ring colour —
|
|
32
|
-
$border-vibrant-start: var(--border-vibrant-start); // Vibrant gradient border start — flattened to solid
|
|
33
|
-
$border-vibrant-end: var(--border-vibrant-end); // Vibrant gradient border end — flattened to solid
|
|
28
|
+
$border-subtle: var(--border-subtle); // Subtle borders — warm hairline measured on the pricing-card outlines
|
|
29
|
+
$border-default: var(--border-default); // Default borders — cool hairline matching the recessed band
|
|
30
|
+
$border-strong: var(--border-strong); // Emphasised borders — petrol ink rule (used under headings in the mockups)
|
|
31
|
+
$border-focus: var(--border-focus); // Focus ring colour — teal ramp step 700
|
|
32
|
+
$border-vibrant-start: var(--border-vibrant-start); // Vibrant gradient border start — flattened to solid teal
|
|
33
|
+
$border-vibrant-end: var(--border-vibrant-end); // Vibrant gradient border end — flattened to solid teal
|
|
34
34
|
|
|
35
35
|
// Feedback
|
|
36
|
-
$feedback-success: var(--feedback-success); // Success state
|
|
36
|
+
$feedback-success: var(--feedback-success); // Success state — teal-leaning green, harmonised with the palette (5.0:1 on canvas)
|
|
37
37
|
$feedback-successSubtle: var(--feedback-successSubtle); // Success background
|
|
38
38
|
$feedback-successEmphasis: var(--feedback-successEmphasis); // Success text
|
|
39
|
-
$feedback-warning: var(--feedback-warning); // Warning state
|
|
39
|
+
$feedback-warning: var(--feedback-warning); // Warning state — warm ochre tuned to the warm canvas (3.8:1)
|
|
40
40
|
$feedback-warningSubtle: var(--feedback-warningSubtle); // Warning background
|
|
41
|
-
$feedback-warningEmphasis: var(--feedback-warningEmphasis); // Warning text
|
|
42
|
-
$feedback-error: var(--feedback-error); // Error state —
|
|
41
|
+
$feedback-warningEmphasis: var(--feedback-warningEmphasis); // Warning text — 5.9:1 on canvas
|
|
42
|
+
$feedback-error: var(--feedback-error); // Error state — muted brick red, desaturated to sit beside the teal (5.6:1)
|
|
43
43
|
$feedback-errorSubtle: var(--feedback-errorSubtle); // Error background
|
|
44
|
-
$feedback-errorEmphasis: var(--feedback-errorEmphasis); // Error text —
|
|
45
|
-
$feedback-info: var(--feedback-info); // Info state —
|
|
44
|
+
$feedback-errorEmphasis: var(--feedback-errorEmphasis); // Error text — 8.0:1 on canvas
|
|
45
|
+
$feedback-info: var(--feedback-info); // Info state — teal (the design carries no separate informational blue)
|
|
46
46
|
$feedback-infoSubtle: var(--feedback-infoSubtle); // Info background
|
|
47
|
-
$feedback-infoEmphasis: var(--feedback-infoEmphasis); // Info text
|
|
47
|
+
$feedback-infoEmphasis: var(--feedback-infoEmphasis); // Info text — one ramp step deeper
|
|
48
48
|
|
|
49
49
|
// Accent
|
|
50
|
-
$accent-gradient-start: var(--accent-gradient-start); // Accent gradient start — flattened to solid
|
|
51
|
-
$accent-gradient-end: var(--accent-gradient-end); // Accent gradient end — flattened to solid
|
|
52
|
-
$accent-gradient-hoverStart: var(--accent-gradient-hoverStart); // Accent hover start — flattened to
|
|
53
|
-
$accent-gradient-hoverEnd: var(--accent-gradient-hoverEnd); // Accent hover end — flattened to
|
|
50
|
+
$accent-gradient-start: var(--accent-gradient-start); // Accent gradient start — flattened to solid teal (design uses solid fills)
|
|
51
|
+
$accent-gradient-end: var(--accent-gradient-end); // Accent gradient end — flattened to solid teal
|
|
52
|
+
$accent-gradient-hoverStart: var(--accent-gradient-hoverStart); // Accent hover start — flattened to one ramp step deeper
|
|
53
|
+
$accent-gradient-hoverEnd: var(--accent-gradient-hoverEnd); // Accent hover end — flattened to one ramp step deeper
|
|
54
54
|
|
|
55
55
|
// Intent
|
|
56
|
-
$intent-action-default: var(--intent-action-default); // Primary CTA colour —
|
|
57
|
-
$intent-action-hover: var(--intent-action-hover); // Primary CTA hover
|
|
58
|
-
$intent-action-active: var(--intent-action-active); // Primary CTA pressed
|
|
56
|
+
$intent-action-default: var(--intent-action-default); // Primary CTA colour — teal.700 #0f766e, within 2% of the measured button fill #097878; 5.5:1 against a white label
|
|
57
|
+
$intent-action-hover: var(--intent-action-hover); // Primary CTA hover — one ramp step deeper, 7.6:1 against white
|
|
58
|
+
$intent-action-active: var(--intent-action-active); // Primary CTA pressed — two ramp steps deeper, 9.5:1 against white
|
|
59
59
|
$intent-action-disabled: var(--intent-action-disabled); // Disabled state
|
|
60
60
|
$intent-secondary-default: var(--intent-secondary-default); // Secondary action bg
|
|
61
|
-
$intent-secondary-hover: var(--intent-secondary-hover); // Secondary action hover
|
|
62
|
-
$intent-secondary-border: var(--intent-secondary-border); // Secondary action border —
|
|
61
|
+
$intent-secondary-hover: var(--intent-secondary-hover); // Secondary action hover — recessed band tint
|
|
62
|
+
$intent-secondary-border: var(--intent-secondary-border); // Secondary action border — teal outline (matches the 'Meer over mij' ghost buttons)
|
|
63
63
|
|
|
64
64
|
// Focus
|
|
65
|
-
$focus-ring: var(--focus-ring); // Focus ring colour —
|
|
65
|
+
$focus-ring: var(--focus-ring); // Focus ring colour — teal.700, 5.2:1 on canvas
|
|
66
66
|
|
|
67
67
|
// Brand
|
|
68
|
-
$brand-primary: var(--brand-primary); // Primary brand colour —
|
|
69
|
-
$brand-secondary: var(--brand-secondary); // Secondary brand colour
|
|
70
|
-
$brand-accent: var(--brand-accent); // Accent brand colour —
|
|
71
|
-
$brand-subtle: var(--brand-subtle); // Subtle brand background
|
|
68
|
+
$brand-primary: var(--brand-primary); // Primary brand colour — the 'Jouw Stem' teal, carried by every CTA and the logo waveform
|
|
69
|
+
$brand-secondary: var(--brand-secondary); // Secondary brand colour — mid teal used for the decorative connector lines and icon strokes
|
|
70
|
+
$brand-accent: var(--brand-accent); // Accent brand colour — light teal for on-dark use (footer section labels, 9.6:1 on the petrol inverse)
|
|
71
|
+
$brand-subtle: var(--brand-subtle); // Subtle brand background — light teal wash
|
|
72
72
|
|
|
73
73
|
// Container
|
|
74
74
|
$container-max-width-narrow: var(--container-max-width-narrow); // Long-form reading / forms / articles (~65ch comfortable line length)
|
|
@@ -391,11 +391,11 @@ $button-outlined-border-active: var(--button-outlined-border-active); // Outline
|
|
|
391
391
|
$button-outlined-border-disabled: var(--button-outlined-border-disabled); // Outlined button disabled border
|
|
392
392
|
|
|
393
393
|
// Button-primary
|
|
394
|
-
$button-primary-background-default: var(--button-primary-background-default); // Primary button background —
|
|
395
|
-
$button-primary-background-hover: var(--button-primary-background-hover); // Primary button hover —
|
|
396
|
-
$button-primary-background-active: var(--button-primary-background-active); // Primary button pressed —
|
|
394
|
+
$button-primary-background-default: var(--button-primary-background-default); // Primary button background — teal action fill from the Jouw Stem mockups. Repointed from {primary.700} on 2026-08-09: the brand chain still resolves primary=navy, which no longer matches the extracted identity (mirrors the theme-high-contrast-solarized-dark pattern)
|
|
395
|
+
$button-primary-background-hover: var(--button-primary-background-hover); // Primary button hover — one step deeper teal
|
|
396
|
+
$button-primary-background-active: var(--button-primary-background-active); // Primary button pressed — two steps deeper teal
|
|
397
397
|
$button-primary-background-disabled: var(--button-primary-background-disabled); // Primary button disabled background (state-exempt from rules)
|
|
398
|
-
$button-primary-text-default: var(--button-primary-text-default); // Primary button label — white on
|
|
398
|
+
$button-primary-text-default: var(--button-primary-text-default); // Primary button label — white on the teal fill, 5.3:1
|
|
399
399
|
$button-primary-text-disabled: var(--button-primary-text-disabled); // Primary button disabled label
|
|
400
400
|
$button-primary-border-default: var(--button-primary-border-default); // Primary button border — matches fill
|
|
401
401
|
$button-primary-border-hover: var(--button-primary-border-hover); // Primary button hover border
|
package/dist/token-refs.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"generatedAt": "2026-
|
|
2
|
+
"generatedAt": "2026-08-09T08:29:36.143Z",
|
|
3
3
|
"themes": {
|
|
4
4
|
"dark": {
|
|
5
5
|
"neutral-0": "#ffffff",
|
|
@@ -263,19 +263,19 @@
|
|
|
263
263
|
"border-subtle": "{primary.700}",
|
|
264
264
|
"border-default": "{primary.600}",
|
|
265
265
|
"border-strong": "{primary.500}",
|
|
266
|
-
"border-focus": "
|
|
267
|
-
"border-vibrant-start": "
|
|
268
|
-
"border-vibrant-end": "
|
|
269
|
-
"feedback-success": "#
|
|
266
|
+
"border-focus": "{teal.700}",
|
|
267
|
+
"border-vibrant-start": "{teal.700}",
|
|
268
|
+
"border-vibrant-end": "{teal.700}",
|
|
269
|
+
"feedback-success": "#1f7a55",
|
|
270
270
|
"feedback-successSubtle": "{success.100}",
|
|
271
271
|
"feedback-successEmphasis": "{success.400}",
|
|
272
|
-
"feedback-warning": "#
|
|
272
|
+
"feedback-warning": "#b3701a",
|
|
273
273
|
"feedback-warningSubtle": "{warning.100}",
|
|
274
274
|
"feedback-warningEmphasis": "{warning.400}",
|
|
275
|
-
"feedback-error": "#
|
|
275
|
+
"feedback-error": "#b8342c",
|
|
276
276
|
"feedback-errorSubtle": "{danger.100}",
|
|
277
277
|
"feedback-errorEmphasis": "{danger.400}",
|
|
278
|
-
"feedback-info": "
|
|
278
|
+
"feedback-info": "{teal.700}",
|
|
279
279
|
"feedback-infoSubtle": "{info.100}",
|
|
280
280
|
"feedback-infoEmphasis": "{info.400}",
|
|
281
281
|
"intent-action-default": "{secondary.500}",
|
|
@@ -285,9 +285,9 @@
|
|
|
285
285
|
"intent-secondary-default": "transparent",
|
|
286
286
|
"intent-secondary-hover": "{primary.700}",
|
|
287
287
|
"intent-secondary-border": "{primary.500}",
|
|
288
|
-
"focus-ring": "
|
|
288
|
+
"focus-ring": "{teal.700}",
|
|
289
289
|
"brand-primary": "{primary.300}",
|
|
290
|
-
"brand-secondary": "
|
|
290
|
+
"brand-secondary": "{teal.600}",
|
|
291
291
|
"brand-accent": "{accent.400}",
|
|
292
292
|
"brand-subtle": "{primary.700}",
|
|
293
293
|
"container-max-width-narrow": "720px",
|
|
@@ -8458,10 +8458,10 @@
|
|
|
8458
8458
|
"accent-800": "{amber.800}",
|
|
8459
8459
|
"accent-900": "{amber.900}",
|
|
8460
8460
|
"accent-950": "{amber.900}",
|
|
8461
|
-
"accent-gradient-start": "
|
|
8462
|
-
"accent-gradient-end": "
|
|
8463
|
-
"accent-gradient-hoverStart": "
|
|
8464
|
-
"accent-gradient-hoverEnd": "
|
|
8461
|
+
"accent-gradient-start": "{teal.700}",
|
|
8462
|
+
"accent-gradient-end": "{teal.700}",
|
|
8463
|
+
"accent-gradient-hoverStart": "{teal.800}",
|
|
8464
|
+
"accent-gradient-hoverEnd": "{teal.800}",
|
|
8465
8465
|
"success-0": "{green.50}",
|
|
8466
8466
|
"success-50": "{green.50}",
|
|
8467
8467
|
"success-100": "{green.100}",
|
|
@@ -8513,55 +8513,55 @@
|
|
|
8513
8513
|
"font-sans": "system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif",
|
|
8514
8514
|
"font-display": "system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif",
|
|
8515
8515
|
"font-mono": "ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace",
|
|
8516
|
-
"surface-canvas": "#
|
|
8517
|
-
"surface-panel": "#
|
|
8516
|
+
"surface-canvas": "#faf8f5",
|
|
8517
|
+
"surface-panel": "#ffffff",
|
|
8518
8518
|
"surface-elevated": "#ffffff",
|
|
8519
|
-
"surface-overlay": "rgba(
|
|
8520
|
-
"surface-muted": "#
|
|
8521
|
-
"surface-inverse": "#
|
|
8522
|
-
"surface-highlight": "#
|
|
8523
|
-
"surface-gradient-start": "#
|
|
8524
|
-
"surface-gradient-end": "#
|
|
8525
|
-
"text-default": "#
|
|
8526
|
-
"text-primary": "#
|
|
8527
|
-
"text-secondary": "#
|
|
8528
|
-
"text-muted": "#
|
|
8529
|
-
"text-subtle": "#
|
|
8530
|
-
"text-inverse": "#
|
|
8531
|
-
"text-link": "
|
|
8532
|
-
"text-linkHover": "
|
|
8533
|
-
"text-linkVisited": "#
|
|
8534
|
-
"text-heading": "#
|
|
8535
|
-
"border-subtle": "#
|
|
8536
|
-
"border-default": "#
|
|
8537
|
-
"border-strong": "#
|
|
8538
|
-
"border-focus": "
|
|
8539
|
-
"border-vibrant-start": "
|
|
8540
|
-
"border-vibrant-end": "
|
|
8541
|
-
"feedback-success": "#
|
|
8542
|
-
"feedback-successSubtle": "#
|
|
8543
|
-
"feedback-successEmphasis": "#
|
|
8544
|
-
"feedback-warning": "#
|
|
8545
|
-
"feedback-warningSubtle": "#
|
|
8546
|
-
"feedback-warningEmphasis": "#
|
|
8547
|
-
"feedback-error": "#
|
|
8548
|
-
"feedback-errorSubtle": "#
|
|
8549
|
-
"feedback-errorEmphasis": "#
|
|
8550
|
-
"feedback-info": "
|
|
8551
|
-
"feedback-infoSubtle": "#
|
|
8552
|
-
"feedback-infoEmphasis": "
|
|
8553
|
-
"intent-action-default": "
|
|
8554
|
-
"intent-action-hover": "
|
|
8555
|
-
"intent-action-active": "
|
|
8556
|
-
"intent-action-disabled": "#
|
|
8519
|
+
"surface-overlay": "rgba(4, 26, 38, 0.55)",
|
|
8520
|
+
"surface-muted": "#eceeec",
|
|
8521
|
+
"surface-inverse": "#041a26",
|
|
8522
|
+
"surface-highlight": "#e2efec",
|
|
8523
|
+
"surface-gradient-start": "#faf8f5",
|
|
8524
|
+
"surface-gradient-end": "#faf8f5",
|
|
8525
|
+
"text-default": "#253a43",
|
|
8526
|
+
"text-primary": "#253a43",
|
|
8527
|
+
"text-secondary": "#3d5058",
|
|
8528
|
+
"text-muted": "#5f7178",
|
|
8529
|
+
"text-subtle": "#7d8f95",
|
|
8530
|
+
"text-inverse": "#faf8f5",
|
|
8531
|
+
"text-link": "{teal.700}",
|
|
8532
|
+
"text-linkHover": "{teal.800}",
|
|
8533
|
+
"text-linkVisited": "#4a5f74",
|
|
8534
|
+
"text-heading": "#04141f",
|
|
8535
|
+
"border-subtle": "#e6e2dd",
|
|
8536
|
+
"border-default": "#d5d8d4",
|
|
8537
|
+
"border-strong": "#04141f",
|
|
8538
|
+
"border-focus": "{teal.700}",
|
|
8539
|
+
"border-vibrant-start": "{teal.700}",
|
|
8540
|
+
"border-vibrant-end": "{teal.700}",
|
|
8541
|
+
"feedback-success": "#1f7a55",
|
|
8542
|
+
"feedback-successSubtle": "#e4f2ec",
|
|
8543
|
+
"feedback-successEmphasis": "#145c3f",
|
|
8544
|
+
"feedback-warning": "#b3701a",
|
|
8545
|
+
"feedback-warningSubtle": "#f7eddf",
|
|
8546
|
+
"feedback-warningEmphasis": "#8a5410",
|
|
8547
|
+
"feedback-error": "#b8342c",
|
|
8548
|
+
"feedback-errorSubtle": "#f7e6e4",
|
|
8549
|
+
"feedback-errorEmphasis": "#8f2620",
|
|
8550
|
+
"feedback-info": "{teal.700}",
|
|
8551
|
+
"feedback-infoSubtle": "#e2efee",
|
|
8552
|
+
"feedback-infoEmphasis": "{teal.800}",
|
|
8553
|
+
"intent-action-default": "{teal.700}",
|
|
8554
|
+
"intent-action-hover": "{teal.800}",
|
|
8555
|
+
"intent-action-active": "{teal.900}",
|
|
8556
|
+
"intent-action-disabled": "#d5d8d4",
|
|
8557
8557
|
"intent-secondary-default": "transparent",
|
|
8558
|
-
"intent-secondary-hover": "#
|
|
8559
|
-
"intent-secondary-border": "
|
|
8560
|
-
"focus-ring": "
|
|
8561
|
-
"brand-primary": "
|
|
8562
|
-
"brand-secondary": "
|
|
8563
|
-
"brand-accent": "
|
|
8564
|
-
"brand-subtle": "#
|
|
8558
|
+
"intent-secondary-hover": "#eceeec",
|
|
8559
|
+
"intent-secondary-border": "{teal.700}",
|
|
8560
|
+
"focus-ring": "{teal.700}",
|
|
8561
|
+
"brand-primary": "{teal.700}",
|
|
8562
|
+
"brand-secondary": "{teal.600}",
|
|
8563
|
+
"brand-accent": "{teal.400}",
|
|
8564
|
+
"brand-subtle": "#e2efec",
|
|
8565
8565
|
"container-max-width-narrow": "720px",
|
|
8566
8566
|
"container-max-width-default": "1200px",
|
|
8567
8567
|
"container-max-width-wide": "1600px",
|
|
@@ -8837,15 +8837,15 @@
|
|
|
8837
8837
|
"button-outlined-border-hover": "{brand.primary}",
|
|
8838
8838
|
"button-outlined-border-active": "{brand.primary}",
|
|
8839
8839
|
"button-outlined-border-disabled": "{neutral.300}",
|
|
8840
|
-
"button-primary-background-default": "{
|
|
8841
|
-
"button-primary-background-hover": "{
|
|
8842
|
-
"button-primary-background-active": "{
|
|
8840
|
+
"button-primary-background-default": "{intent.action.default}",
|
|
8841
|
+
"button-primary-background-hover": "{intent.action.hover}",
|
|
8842
|
+
"button-primary-background-active": "{intent.action.active}",
|
|
8843
8843
|
"button-primary-background-disabled": "{neutral.200}",
|
|
8844
8844
|
"button-primary-text-default": "{neutral.0}",
|
|
8845
8845
|
"button-primary-text-disabled": "{neutral.500}",
|
|
8846
|
-
"button-primary-border-default": "{
|
|
8847
|
-
"button-primary-border-hover": "{
|
|
8848
|
-
"button-primary-border-active": "{
|
|
8846
|
+
"button-primary-border-default": "{intent.action.default}",
|
|
8847
|
+
"button-primary-border-hover": "{intent.action.hover}",
|
|
8848
|
+
"button-primary-border-active": "{intent.action.active}",
|
|
8849
8849
|
"button-primary-border-disabled": "{neutral.200}",
|
|
8850
8850
|
"button-secondary-background-default": "{surface.muted}",
|
|
8851
8851
|
"button-secondary-background-hover": "{intent.secondary.hover}",
|
package/package.json
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"button-primary": {
|
|
3
3
|
"background": {
|
|
4
|
-
"default": { "value": "{
|
|
5
|
-
"hover": { "value": "{
|
|
6
|
-
"active": { "value": "{
|
|
4
|
+
"default": { "value": "{intent.action.default}", "type": "color", "description": "Primary button background — teal action fill from the Jouw Stem mockups. Repointed from {primary.700} on 2026-08-09: the brand chain still resolves primary=navy, which no longer matches the extracted identity (mirrors the theme-high-contrast-solarized-dark pattern)" },
|
|
5
|
+
"hover": { "value": "{intent.action.hover}", "type": "color", "description": "Primary button hover — one step deeper teal" },
|
|
6
|
+
"active": { "value": "{intent.action.active}", "type": "color", "description": "Primary button pressed — two steps deeper teal" },
|
|
7
7
|
"disabled": { "value": "{neutral.200}", "type": "color", "description": "Primary button disabled background (state-exempt from rules)" }
|
|
8
8
|
},
|
|
9
9
|
"text": {
|
|
10
|
-
"default": { "value": "{neutral.0}", "type": "color", "description": "Primary button label — white on
|
|
10
|
+
"default": { "value": "{neutral.0}", "type": "color", "description": "Primary button label — white on the teal fill, 5.3:1" },
|
|
11
11
|
"disabled": { "value": "{neutral.500}", "type": "color", "description": "Primary button disabled label" }
|
|
12
12
|
},
|
|
13
13
|
"border": {
|
|
14
|
-
"default": { "value": "{
|
|
15
|
-
"hover": { "value": "{
|
|
16
|
-
"active": { "value": "{
|
|
17
|
-
"disabled": { "value": "{neutral.200}",
|
|
14
|
+
"default": { "value": "{intent.action.default}", "type": "color", "description": "Primary button border — matches fill" },
|
|
15
|
+
"hover": { "value": "{intent.action.hover}", "type": "color", "description": "Primary button hover border" },
|
|
16
|
+
"active": { "value": "{intent.action.active}", "type": "color", "description": "Primary button active border" },
|
|
17
|
+
"disabled": { "value": "{neutral.200}", "type": "color", "description": "Primary button disabled border" }
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
}
|
|
@@ -32,24 +32,24 @@
|
|
|
32
32
|
"subtle": { "value": "{primary.700}", "type": "color", "description": "Subtle borders" },
|
|
33
33
|
"default": { "value": "{primary.600}", "type": "color", "description": "Default borders" },
|
|
34
34
|
"strong": { "value": "{primary.500}", "type": "color", "description": "Emphasized borders" },
|
|
35
|
-
"focus": { "value": "
|
|
35
|
+
"focus": { "value": "{teal.700}","type": "color", "description": "Focus ring color — re-synced from light (teal.700, 3.5:1 on the dark canvas)" },
|
|
36
36
|
"vibrant": {
|
|
37
|
-
"start": { "value": "
|
|
38
|
-
"end": { "value": "
|
|
37
|
+
"start": { "value": "{teal.700}", "type": "color", "description": "Vibrant border start — flattened, re-synced from light (teal.700)" },
|
|
38
|
+
"end": { "value": "{teal.700}", "type": "color", "description": "Vibrant border end — flattened, re-synced from light (teal.700)" }
|
|
39
39
|
}
|
|
40
40
|
},
|
|
41
41
|
|
|
42
42
|
"feedback": {
|
|
43
|
-
"success": { "value": "#
|
|
43
|
+
"success": { "value": "#1f7a55", "type": "color", "description": "Success state — re-synced from light (3.6:1 on the dark canvas)" },
|
|
44
44
|
"successSubtle": { "value": "{success.100}", "type": "color", "description": "Success background" },
|
|
45
45
|
"successEmphasis": { "value": "{success.400}", "type": "color", "description": "Success text" },
|
|
46
|
-
"warning": { "value": "#
|
|
46
|
+
"warning": { "value": "#b3701a", "type": "color", "description": "Warning state — re-synced from light (4.8:1 on the dark canvas)" },
|
|
47
47
|
"warningSubtle": { "value": "{warning.100}", "type": "color", "description": "Warning background" },
|
|
48
48
|
"warningEmphasis": { "value": "{warning.400}", "type": "color", "description": "Warning text" },
|
|
49
|
-
"error": { "value": "#
|
|
49
|
+
"error": { "value": "#b8342c", "type": "color", "description": "Error state — re-synced from light (muted brick red, 3.3:1 on the dark canvas)" },
|
|
50
50
|
"errorSubtle": { "value": "{danger.100}", "type": "color", "description": "Error background" },
|
|
51
51
|
"errorEmphasis": { "value": "{danger.400}", "type": "color", "description": "Error text" },
|
|
52
|
-
"info": { "value": "
|
|
52
|
+
"info": { "value": "{teal.700}", "type": "color", "description": "Info state — re-synced from light (teal.700; the design carries no separate informational blue)" },
|
|
53
53
|
"infoSubtle": { "value": "{info.100}", "type": "color", "description": "Info background" },
|
|
54
54
|
"infoEmphasis": { "value": "{info.400}", "type": "color", "description": "Info text" }
|
|
55
55
|
},
|
|
@@ -78,12 +78,12 @@
|
|
|
78
78
|
},
|
|
79
79
|
|
|
80
80
|
"focus": {
|
|
81
|
-
"ring": { "value": "
|
|
81
|
+
"ring": { "value": "{teal.700}", "type": "color", "description": "Focus ring color — re-synced from light (teal.700)" }
|
|
82
82
|
},
|
|
83
83
|
|
|
84
84
|
"brand": {
|
|
85
85
|
"primary": { "value": "{primary.300}", "type": "color", "description": "Primary brand color" },
|
|
86
|
-
"secondary": { "value": "
|
|
86
|
+
"secondary": { "value": "{teal.600}", "type": "color", "description": "Secondary brand color (CTA) — re-synced from light; teal.600, 5.1:1 against the dark canvas" },
|
|
87
87
|
"accent": { "value": "{accent.400}", "type": "color", "description": "Accent brand color" },
|
|
88
88
|
"subtle": { "value": "{primary.700}", "type": "color", "description": "Subtle brand background" }
|
|
89
89
|
}
|