@orange-halo/tokens 2.0.0 → 2.1.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.
@@ -0,0 +1,130 @@
1
+ {
2
+ "$description": "Hood brand palette (tier 1): Fraser Hood's personal site. Greyscale and type-led, after fraser-hood.co.uk/gig-history: flat, no shadows, small corners, one quiet blue for links that need a colour and for info.",
3
+ "color": {
4
+ "grey": {
5
+ "$description": "Neutral greys. 850, 800, 750 and 100 are the gig-history site's page, surface, line and text colours; 500 is its muted grey, a touch lighter",
6
+ "50": { "$type": "color", "$value": "#F7F7F7" },
7
+ "100": { "$type": "color", "$value": "#EDEDED" },
8
+ "200": { "$type": "color", "$value": "#DEDEDE" },
9
+ "300": { "$type": "color", "$value": "#C4C4C4" },
10
+ "400": { "$type": "color", "$value": "#A8A8A8" },
11
+ "500": { "$type": "color", "$value": "#929292", "$description": "The site's muted grey (#8F8F8F) lifted just enough for 4.5:1 on surface.raised" },
12
+ "600": { "$type": "color", "$value": "#6B6B6B" },
13
+ "650": { "$type": "color", "$value": "#575757" },
14
+ "700": { "$type": "color", "$value": "#454545" },
15
+ "750": { "$type": "color", "$value": "#363636" },
16
+ "800": { "$type": "color", "$value": "#292929" },
17
+ "850": { "$type": "color", "$value": "#1F1F1F" },
18
+ "900": { "$type": "color", "$value": "#171717" },
19
+ "950": { "$type": "color", "$value": "#0D0D0D" }
20
+ },
21
+ "white": { "$type": "color", "$value": "#FFFFFF" },
22
+ "black": { "$type": "color", "$value": "#000000" },
23
+ "blue": {
24
+ "$description": "The one colour: accent and info",
25
+ "50": { "$type": "color", "$value": "#EDF3FC" },
26
+ "200": { "$type": "color", "$value": "#B3CDF2" },
27
+ "300": { "$type": "color", "$value": "#93B8EC" },
28
+ "700": { "$type": "color", "$value": "#1F5CB3" },
29
+ "800": { "$type": "color", "$value": "#184A91" },
30
+ "900": { "$type": "color", "$value": "#16263D" }
31
+ },
32
+ "green": {
33
+ "$description": "Success",
34
+ "50": { "$type": "color", "$value": "#EBF6EE" },
35
+ "300": { "$type": "color", "$value": "#82CF9C" },
36
+ "700": { "$type": "color", "$value": "#1D7238" },
37
+ "900": { "$type": "color", "$value": "#142B1C" }
38
+ },
39
+ "red": {
40
+ "$description": "Error",
41
+ "50": { "$type": "color", "$value": "#FCEEEE" },
42
+ "100": { "$type": "color", "$value": "#FAD4D4" },
43
+ "300": { "$type": "color", "$value": "#F59A9A" },
44
+ "700": { "$type": "color", "$value": "#B02525" },
45
+ "800": { "$type": "color", "$value": "#8C1D1D" },
46
+ "900": { "$type": "color", "$value": "#3A1717" }
47
+ },
48
+ "amber": {
49
+ "$description": "Warning",
50
+ "50": { "$type": "color", "$value": "#FCF4E3" },
51
+ "300": { "$type": "color", "$value": "#EBC271" },
52
+ "700": { "$type": "color", "$value": "#835600" },
53
+ "900": { "$type": "color", "$value": "#33260E" }
54
+ }
55
+ },
56
+ "font": {
57
+ "family": {
58
+ "$description": "Plus Jakarta Sans for everything, as on the site",
59
+ "sans": { "$type": "fontFamily", "$value": "'Plus Jakarta Sans', Arial, Helvetica, sans-serif" },
60
+ "display": { "$type": "fontFamily", "$value": "'Plus Jakarta Sans', Arial, Helvetica, sans-serif" },
61
+ "mono": { "$type": "fontFamily", "$value": "ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" }
62
+ },
63
+ "size": {
64
+ "$description": "The site's scale: 15px body, large bold headings",
65
+ "xs": { "$type": "dimension", "$value": "0.6875rem" },
66
+ "sm": { "$type": "dimension", "$value": "0.8125rem" },
67
+ "base": { "$type": "dimension", "$value": "0.9375rem" },
68
+ "lg": { "$type": "dimension", "$value": "1.0625rem" },
69
+ "xl": { "$type": "dimension", "$value": "1.35rem" },
70
+ "2xl": { "$type": "dimension", "$value": "1.8rem" },
71
+ "3xl": { "$type": "dimension", "$value": "2.6rem" },
72
+ "4xl": { "$type": "dimension", "$value": "3.5rem" },
73
+ "5xl": { "$type": "dimension", "$value": "4.2rem" }
74
+ },
75
+ "weight": {
76
+ "normal": { "$type": "fontWeight", "$value": "400" },
77
+ "medium": { "$type": "fontWeight", "$value": "500" },
78
+ "semibold": { "$type": "fontWeight", "$value": "600" },
79
+ "bold": { "$type": "fontWeight", "$value": "700" },
80
+ "extrabold": { "$type": "fontWeight", "$value": "800" }
81
+ },
82
+ "lineHeight": {
83
+ "none": { "$type": "number", "$value": 1 },
84
+ "tight": { "$type": "number", "$value": 1.1 },
85
+ "snug": { "$type": "number", "$value": 1.3 },
86
+ "normal": { "$type": "number", "$value": 1.5 },
87
+ "relaxed": { "$type": "number", "$value": 1.6 }
88
+ },
89
+ "letterSpacing": {
90
+ "tighter": { "$type": "dimension", "$value": "-0.02em" },
91
+ "tight": { "$type": "dimension", "$value": "-0.01em" },
92
+ "normal": { "$type": "dimension", "$value": "0" },
93
+ "wide": { "$type": "dimension", "$value": "0.02em" },
94
+ "widest": { "$type": "dimension", "$value": "0.08em", "$description": "Small uppercase labels, as on the site" }
95
+ }
96
+ },
97
+ "radius": {
98
+ "$description": "Small, square-ish corners: 2px badges, 4px controls",
99
+ "none": { "$type": "dimension", "$value": "0" },
100
+ "xs": { "$type": "dimension", "$value": "2px" },
101
+ "sm": { "$type": "dimension", "$value": "4px" },
102
+ "md": { "$type": "dimension", "$value": "6px" },
103
+ "full": { "$type": "dimension", "$value": "9999px" }
104
+ },
105
+ "border": {
106
+ "width": {
107
+ "1": { "$type": "dimension", "$value": "1px" },
108
+ "2": { "$type": "dimension", "$value": "2px" }
109
+ }
110
+ },
111
+ "shadow": {
112
+ "$description": "Flat: no shadows, except under dialogs",
113
+ "none": { "$type": "shadow", "$value": "none" },
114
+ "overlay": { "$type": "shadow", "$value": "0 12px 32px rgba(0, 0, 0, 0.35)", "$description": "Modals and drawers only, to lift them off the backdrop" }
115
+ },
116
+ "motion": {
117
+ "duration": {
118
+ "quick": { "$type": "duration", "$value": "100ms" },
119
+ "snappy": { "$type": "duration", "$value": "150ms" },
120
+ "gentle": { "$type": "duration", "$value": "200ms" },
121
+ "relaxed": { "$type": "duration", "$value": "250ms" },
122
+ "slow": { "$type": "duration", "$value": "350ms" }
123
+ },
124
+ "easing": {
125
+ "$description": "Plain ease-out: no overshoot",
126
+ "standard": { "$type": "cubicBezier", "$value": [0.4, 0, 0.2, 1] },
127
+ "out": { "$type": "cubicBezier", "$value": [0, 0, 0.2, 1] }
128
+ }
129
+ }
130
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "$description": "About the brand, for tools that show it (Storybook's Brand control): its name, and the stylesheets that load its fonts.",
3
+ "name": "Orange Halo",
4
+ "fonts": ["https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap"]
5
+ }
@@ -39,7 +39,12 @@
39
39
  "overlay": { "$type": "color", "$value": "rgba(15, 12, 10, 0.7)" },
40
40
  "disabled": { "$type": "color", "$value": "{color.warm.mocha}" },
41
41
  "hover": { "$type": "color", "$value": "{color.warm.hickory}" },
42
- "activePressed": { "$type": "color", "$value": "{color.warm.mocha}" }
42
+ "activePressed": { "$type": "color", "$value": "{color.warm.mocha}" },
43
+ "featuredStart": { "$type": "color", "$value": "{color.warm.dawn}", "$description": "Same as light for now: the dark theme hasn't been designed" },
44
+ "featuredMid": { "$type": "color", "$value": "{color.warm.shell}" },
45
+ "featuredEnd": { "$type": "color", "$value": "{color.warm.biscuit}" },
46
+ "sheen": { "$type": "color", "$value": "rgba(255, 255, 255, 0.5)" },
47
+ "backdrop": { "$type": "color", "$value": "rgba(61, 50, 41, 0.6)" }
43
48
  },
44
49
  "border": {
45
50
  "default": { "$type": "color", "$value": "{color.warm.taupe}" },
@@ -48,7 +53,9 @@
48
53
  "strong": { "$type": "color", "$value": "{color.warm.stone}" },
49
54
  "hover": { "$type": "color", "$value": "{color.warm.dune}" },
50
55
  "disabled": { "$type": "color", "$value": "{color.warm.hickory}" },
51
- "brand": { "$type": "color", "$value": "rgba(232, 168, 56, 0.3)" }
56
+ "brand": { "$type": "color", "$value": "rgba(232, 168, 56, 0.3)" },
57
+ "brandHover": { "$type": "color", "$value": "rgba(197, 67, 0, 0.35)", "$description": "Same as light for now: the dark theme hasn't been designed" },
58
+ "divider": { "$type": "color", "$value": "rgba(226, 213, 200, 0.6)" }
52
59
  },
53
60
  "text": {
54
61
  "primary": { "$type": "color", "$value": "{color.warm.linen}" },
@@ -72,7 +79,11 @@
72
79
  "primary": { "$type": "color", "$value": "{color.honey.800}" },
73
80
  "secondary": { "$type": "color", "$value": "{color.warm.espresso}" },
74
81
  "accent": { "$type": "color", "$value": "{color.blue.800}" },
75
- "error": { "$type": "color", "$value": "{color.red.900}" }
82
+ "error": { "$type": "color", "$value": "{color.red.900}" },
83
+ "neutral": { "$type": "color", "$value": "{shadow.chunky.driftwood}", "$description": "As in light, which is what dark showed before these were tokens. Faint on cocoa: review with the dark design" },
84
+ "neutralHover": { "$type": "color", "$value": "{shadow.chunky.driftwoodHover}", "$description": "As in light; review with the dark design" },
85
+ "overlay": { "$type": "color", "$value": "{shadow.chunky.driftwoodDeep}", "$description": "As in light; review with the dark design" },
86
+ "field": { "$type": "color", "$value": "{shadow.chunky.walnut}", "$description": "As in light; review with the dark design" }
76
87
  },
77
88
  "elevation": {
78
89
  "$description": "Black-based shadows — warm-brown shadows vanish on cocoa",
@@ -150,6 +150,31 @@
150
150
  "$type": "color",
151
151
  "$value": "#F0EBE3",
152
152
  "$description": "Active/pressed surface"
153
+ },
154
+ "featuredStart": {
155
+ "$type": "color",
156
+ "$value": "{color.warm.dawn}",
157
+ "$description": "Featured (sunlit) card gradient: top"
158
+ },
159
+ "featuredMid": {
160
+ "$type": "color",
161
+ "$value": "{color.warm.shell}",
162
+ "$description": "Featured (sunlit) card gradient: 30%"
163
+ },
164
+ "featuredEnd": {
165
+ "$type": "color",
166
+ "$value": "{color.warm.biscuit}",
167
+ "$description": "Featured (sunlit) card gradient: bottom"
168
+ },
169
+ "sheen": {
170
+ "$type": "color",
171
+ "$value": "rgba(255, 255, 255, 0.5)",
172
+ "$description": "Light glaze at the top of card headers, fading to transparent"
173
+ },
174
+ "backdrop": {
175
+ "$type": "color",
176
+ "$value": "rgba(61, 50, 41, 0.6)",
177
+ "$description": "Modal backdrop — darker than surface.overlay so the dialog stands out"
153
178
  }
154
179
  },
155
180
  "border": {
@@ -187,6 +212,16 @@
187
212
  "$type": "color",
188
213
  "$value": "rgba(197, 67, 0, 0.25)",
189
214
  "$description": "Brand-tinted border"
215
+ },
216
+ "brandHover": {
217
+ "$type": "color",
218
+ "$value": "rgba(197, 67, 0, 0.35)",
219
+ "$description": "Brand-tinted border on hover. Decorative container edge — not a focus or control border"
220
+ },
221
+ "divider": {
222
+ "$type": "color",
223
+ "$value": "rgba(226, 213, 200, 0.6)",
224
+ "$description": "Decorative divider inside a container, such as a card's header and footer"
190
225
  }
191
226
  },
192
227
  "text": {
@@ -701,8 +736,48 @@
701
736
  "$type": "shadow",
702
737
  "$value": "{shadow.inset}",
703
738
  "$description": "Inputs, wells"
739
+ },
740
+ "surface": {
741
+ "$description": "Card surfaces, by state. Featured is the sunlit card",
742
+ "flat": { "$type": "shadow", "$value": "{shadow.layered.flat}" },
743
+ "raised": { "$type": "shadow", "$value": "{shadow.layered.raised}" },
744
+ "lifted": { "$type": "shadow", "$value": "{shadow.layered.lifted}", "$description": "Hovered" },
745
+ "pressed": { "$type": "shadow", "$value": "{shadow.layered.pressed}" },
746
+ "focused": { "$type": "shadow", "$value": "{shadow.layered.focused}", "$description": "Sits under the focus glow" },
747
+ "featured": { "$type": "shadow", "$value": "{shadow.layered.sunlit}" },
748
+ "featuredLifted": { "$type": "shadow", "$value": "{shadow.layered.sunlitLifted}" },
749
+ "featuredFocused": { "$type": "shadow", "$value": "{shadow.layered.sunlitFocused}" }
750
+ },
751
+ "offset": {
752
+ "$description": "How far solid offset shadows sit from the element, from pressed (xs) to dialogs (2xl). The colour comes from shadow.*. A flat brand sets every step to 0",
753
+ "xs": { "$type": "dimension", "$value": "1px" },
754
+ "sm": { "$type": "dimension", "$value": "2px" },
755
+ "md": { "$type": "dimension", "$value": "3px" },
756
+ "lg": { "$type": "dimension", "$value": "4px" },
757
+ "xl": { "$type": "dimension", "$value": "5px" },
758
+ "2xl": { "$type": "dimension", "$value": "6px" }
704
759
  }
705
760
  },
761
+ "lift": {
762
+ "$description": "How far elements move on hover (negative: up and left, towards the viewer) and when pressed (positive: into the page). A still brand sets every step to 0",
763
+ "hoverSm": { "$type": "dimension", "$value": "-1px" },
764
+ "hoverMd": { "$type": "dimension", "$value": "-2px" },
765
+ "pressSm": { "$type": "dimension", "$value": "1px" },
766
+ "pressMd": { "$type": "dimension", "$value": "2px" }
767
+ },
768
+ "stroke": {
769
+ "$description": "Border widths by role",
770
+ "control": { "$type": "dimension", "$value": "{border.width.chunky}", "$description": "Controls and framed containers: buttons, fields, checkboxes, alerts, dialogs" },
771
+ "surface": { "$type": "dimension", "$value": "{border.width.1}", "$description": "Card edges" },
772
+ "divider": { "$type": "dimension", "$value": "{border.width.1}", "$description": "Lines between sections" }
773
+ },
774
+ "decoration": {
775
+ "$description": "Link underlines. Orange Halo's are dashed: a dash, then a gap, repeating every period. A solid underline sets dash and period to the same value",
776
+ "underlineThickness": { "$type": "dimension", "$value": "2px" },
777
+ "underlineFocusThickness": { "$type": "dimension", "$value": "3px", "$description": "The solid underline that shows keyboard focus on inline links" },
778
+ "underlineDash": { "$type": "dimension", "$value": "4px" },
779
+ "underlinePeriod": { "$type": "dimension", "$value": "8px" }
780
+ },
706
781
  "motion": {
707
782
  "$description": "Relaxed, playful motion",
708
783
  "quick": {
@@ -759,6 +834,26 @@
759
834
  "$type": "color",
760
835
  "$value": "{shadow.chunky.error}",
761
836
  "$description": "Error state"
837
+ },
838
+ "neutral": {
839
+ "$type": "color",
840
+ "$value": "{shadow.chunky.driftwood}",
841
+ "$description": "Containers and the skip link"
842
+ },
843
+ "neutralHover": {
844
+ "$type": "color",
845
+ "$value": "{shadow.chunky.driftwoodHover}",
846
+ "$description": "Lifted containers"
847
+ },
848
+ "overlay": {
849
+ "$type": "color",
850
+ "$value": "{shadow.chunky.driftwoodDeep}",
851
+ "$description": "Dialogs"
852
+ },
853
+ "field": {
854
+ "$type": "color",
855
+ "$value": "{shadow.chunky.walnut}",
856
+ "$description": "The inset shadow inside text fields"
762
857
  }
763
858
  },
764
859
  "focus": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$description": "Global Design Tokens — Orange Halo Visual DNA. Warm, playful, personal.",
2
+ "$description": "Orange Halo palette (tier 1): colours, fonts, radii, shadows, gradients, motion and borders. Warm, playful, personal. Other brands provide their own palette with the same groups.",
3
3
  "color": {
4
4
  "$description": "Warm palette with nostalgic character. Neutrals are always warm; blue is the deliberate accent.",
5
5
  "orange": {
@@ -536,97 +536,6 @@
536
536
  }
537
537
  }
538
538
  },
539
- "spacing": {
540
- "$description": "Generous spacing — breathing room, not dense",
541
- "0": {
542
- "$type": "dimension",
543
- "$value": "0"
544
- },
545
- "px": {
546
- "$type": "dimension",
547
- "$value": "1px"
548
- },
549
- "0-5": {
550
- "$type": "dimension",
551
- "$value": "0.125rem",
552
- "$description": "2px"
553
- },
554
- "1": {
555
- "$type": "dimension",
556
- "$value": "0.25rem",
557
- "$description": "4px"
558
- },
559
- "1-5": {
560
- "$type": "dimension",
561
- "$value": "0.375rem",
562
- "$description": "6px"
563
- },
564
- "2": {
565
- "$type": "dimension",
566
- "$value": "0.5rem",
567
- "$description": "8px"
568
- },
569
- "2-5": {
570
- "$type": "dimension",
571
- "$value": "0.625rem",
572
- "$description": "10px"
573
- },
574
- "3": {
575
- "$type": "dimension",
576
- "$value": "0.75rem",
577
- "$description": "12px"
578
- },
579
- "3-5": {
580
- "$type": "dimension",
581
- "$value": "0.875rem",
582
- "$description": "14px"
583
- },
584
- "4": {
585
- "$type": "dimension",
586
- "$value": "1rem",
587
- "$description": "16px"
588
- },
589
- "5": {
590
- "$type": "dimension",
591
- "$value": "1.25rem",
592
- "$description": "20px"
593
- },
594
- "6": {
595
- "$type": "dimension",
596
- "$value": "1.5rem",
597
- "$description": "24px"
598
- },
599
- "7": {
600
- "$type": "dimension",
601
- "$value": "1.75rem",
602
- "$description": "28px"
603
- },
604
- "8": {
605
- "$type": "dimension",
606
- "$value": "2rem",
607
- "$description": "32px"
608
- },
609
- "10": {
610
- "$type": "dimension",
611
- "$value": "2.5rem",
612
- "$description": "40px"
613
- },
614
- "12": {
615
- "$type": "dimension",
616
- "$value": "3rem",
617
- "$description": "48px"
618
- },
619
- "16": {
620
- "$type": "dimension",
621
- "$value": "4rem",
622
- "$description": "64px"
623
- },
624
- "20": {
625
- "$type": "dimension",
626
- "$value": "5rem",
627
- "$description": "80px"
628
- }
629
- },
630
539
  "radius": {
631
540
  "$description": "Friendly and soft — not sharp, not overly pill-shaped",
632
541
  "none": {
@@ -716,6 +625,63 @@
716
625
  "$type": "color",
717
626
  "$value": "rgba(181, 69, 64, 0.3)",
718
627
  "$description": "Error state shadow"
628
+ },
629
+ "driftwood": {
630
+ "$type": "color",
631
+ "$value": "rgba(107, 93, 77, 0.15)",
632
+ "$description": "Translucent driftwood, for offset shadows on cream"
633
+ },
634
+ "driftwoodHover": {
635
+ "$type": "color",
636
+ "$value": "rgba(107, 93, 77, 0.2)",
637
+ "$description": "A step darker, for the lifted state"
638
+ },
639
+ "driftwoodDeep": {
640
+ "$type": "color",
641
+ "$value": "rgba(107, 93, 77, 0.25)",
642
+ "$description": "For dialogs, which sit above everything"
643
+ },
644
+ "walnut": {
645
+ "$type": "color",
646
+ "$value": "rgba(61, 50, 41, 0.15)",
647
+ "$description": "Translucent walnut, for the inset shadow inside fields"
648
+ }
649
+ },
650
+ "layered": {
651
+ "$description": "Layered surface shadows: soft drop shadows with a top highlight, so cards feel like physical objects",
652
+ "flat": {
653
+ "$type": "shadow",
654
+ "$value": "0 1px 2px rgba(61, 50, 41, 0.04), inset 0 1px 0 rgba(255, 255, 255, 0.6)"
655
+ },
656
+ "raised": {
657
+ "$type": "shadow",
658
+ "$value": "0 2px 6px rgba(61, 50, 41, 0.08), 0 6px 16px rgba(61, 50, 41, 0.05), inset 0 1px 0 rgba(255, 255, 255, 0.8)"
659
+ },
660
+ "lifted": {
661
+ "$type": "shadow",
662
+ "$value": "0 4px 12px rgba(61, 50, 41, 0.1), 0 12px 28px rgba(61, 50, 41, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.9)"
663
+ },
664
+ "pressed": {
665
+ "$type": "shadow",
666
+ "$value": "0 1px 3px rgba(61, 50, 41, 0.1), 0 3px 8px rgba(61, 50, 41, 0.06), inset 0 1px 2px rgba(61, 50, 41, 0.04)"
667
+ },
668
+ "focused": {
669
+ "$type": "shadow",
670
+ "$value": "0 2px 6px rgba(61, 50, 41, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.8)",
671
+ "$description": "Sits under the focus glow"
672
+ },
673
+ "sunlit": {
674
+ "$type": "shadow",
675
+ "$value": "0 2px 8px rgba(139, 69, 19, 0.08), 0 8px 24px rgba(139, 69, 19, 0.06), 0 0 20px rgba(197, 67, 0, 0.04), inset 0 1px 0 rgba(255, 255, 255, 0.9)"
676
+ },
677
+ "sunlitLifted": {
678
+ "$type": "shadow",
679
+ "$value": "0 4px 12px rgba(139, 69, 19, 0.12), 0 12px 32px rgba(139, 69, 19, 0.08), 0 0 28px rgba(197, 67, 0, 0.06), inset 0 1px 0 rgba(255, 255, 255, 1)"
680
+ },
681
+ "sunlitFocused": {
682
+ "$type": "shadow",
683
+ "$value": "0 2px 8px rgba(139, 69, 19, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.9)",
684
+ "$description": "Sits under the focus glow"
719
685
  }
720
686
  }
721
687
  },
@@ -830,81 +796,5 @@
830
796
  "$description": "Signature chunky frame for controls and feedback"
831
797
  }
832
798
  }
833
- },
834
- "size": {
835
- "$description": "Fixed layout sizes: content widths and viewport breakpoints",
836
- "container": {
837
- "$description": "Content max-widths",
838
- "sm": {
839
- "$type": "dimension",
840
- "$value": "640px"
841
- },
842
- "md": {
843
- "$type": "dimension",
844
- "$value": "768px"
845
- },
846
- "lg": {
847
- "$type": "dimension",
848
- "$value": "1024px"
849
- },
850
- "xl": {
851
- "$type": "dimension",
852
- "$value": "1280px"
853
- }
854
- },
855
- "breakpoint": {
856
- "$description": "Viewport widths for @media queries. CSS can't read custom properties in a media query, so components write the value; check:tokens fails any (min|max)-width that isn't one of these (or one pixel either side, for adjoining ranges).",
857
- "xs": {
858
- "$type": "dimension",
859
- "$value": "480px"
860
- },
861
- "sm": {
862
- "$type": "dimension",
863
- "$value": "640px"
864
- },
865
- "md": {
866
- "$type": "dimension",
867
- "$value": "768px"
868
- },
869
- "lg": {
870
- "$type": "dimension",
871
- "$value": "1024px"
872
- }
873
- }
874
- },
875
- "zIndex": {
876
- "$description": "Z-index layering",
877
- "0": {
878
- "$type": "number",
879
- "$value": 0
880
- },
881
- "10": {
882
- "$type": "number",
883
- "$value": 10
884
- },
885
- "20": {
886
- "$type": "number",
887
- "$value": 20
888
- },
889
- "dropdown": {
890
- "$type": "number",
891
- "$value": 1000
892
- },
893
- "sticky": {
894
- "$type": "number",
895
- "$value": 1100
896
- },
897
- "modal": {
898
- "$type": "number",
899
- "$value": 1200
900
- },
901
- "popover": {
902
- "$type": "number",
903
- "$value": 1300
904
- },
905
- "tooltip": {
906
- "$type": "number",
907
- "$value": 1400
908
- }
909
799
  }
910
800
  }
@@ -7,7 +7,7 @@
7
7
  "fontWeight": { "$type": "fontWeight", "$value": "{typography.control.fontWeight}" },
8
8
  "letterSpacing": { "$type": "dimension", "$value": "{typography.control.letterSpacing}" },
9
9
  "borderRadius": { "$type": "dimension", "$value": "{shape.control}" },
10
- "borderWidth": { "$type": "dimension", "$value": "2.5px" },
10
+ "borderWidth": { "$type": "dimension", "$value": "{stroke.control}" },
11
11
  "transitionDuration": { "$type": "duration", "$value": "{motion.snappy}" },
12
12
  "transitionEasing": { "$type": "cubicBezier", "$value": "{motion.easePlayful}" }
13
13
  },
@@ -77,7 +77,7 @@
77
77
  "fontSize": { "$type": "dimension", "$value": "{typography.control.fontSize.md}" },
78
78
  "lineHeight": { "$type": "number", "$value": "{typography.body.base.lineHeight}" },
79
79
  "borderRadius": { "$type": "dimension", "$value": "{shape.control}" },
80
- "borderWidth": { "$type": "dimension", "$value": "2.5px" },
80
+ "borderWidth": { "$type": "dimension", "$value": "{stroke.control}" },
81
81
  "transitionDuration": { "$type": "duration", "$value": "{motion.snappy}" },
82
82
  "transitionEasing": { "$type": "cubicBezier", "$value": "{motion.easeGentle}" }
83
83
  },
@@ -116,7 +116,7 @@
116
116
  "base": {
117
117
  "background": { "$type": "color", "$value": "{color.surface.raised}" },
118
118
  "borderRadius": { "$type": "dimension", "$value": "{shape.large}" },
119
- "borderWidth": { "$type": "dimension", "$value": "{border.width.1}" },
119
+ "borderWidth": { "$type": "dimension", "$value": "{stroke.surface}" },
120
120
  "borderColor": { "$type": "color", "$value": "{color.border.default}" },
121
121
  "shadow": { "$type": "shadow", "$value": "{elevation.soft}" },
122
122
  "padding": { "$type": "dimension", "$value": "{spacing.5}" }
@@ -144,23 +144,26 @@
144
144
  },
145
145
  "sunlit": {
146
146
  "$description": "Sunlit card — featured with gradient",
147
- "background": { "$type": "string", "$value": "{gradient.sunlit}" },
148
- "gradientStart": { "$type": "color", "$value": "{color.warm.dawn}" },
149
- "gradientMid": { "$type": "color", "$value": "{color.warm.shell}" },
150
- "gradientEnd": { "$type": "color", "$value": "{color.warm.biscuit}" },
147
+ "background": { "$type": "string", "$value": "linear-gradient(180deg, {color.surface.featuredStart} 0%, {color.surface.featuredMid} 30%, {color.surface.featuredEnd} 100%)" },
148
+ "gradientStart": { "$type": "color", "$value": "{color.surface.featuredStart}" },
149
+ "gradientMid": { "$type": "color", "$value": "{color.surface.featuredMid}" },
150
+ "gradientEnd": { "$type": "color", "$value": "{color.surface.featuredEnd}" },
151
151
  "borderColor": { "$type": "color", "$value": "{color.border.brand}" },
152
- "borderColorHover": { "$type": "color", "$value": "rgba(197, 67, 0, 0.35)", "$description": "Decorative container edge — not a focus or control border" },
152
+ "borderColorHover": { "$type": "color", "$value": "{color.border.brandHover}" },
153
153
  "shadow": { "$type": "shadow", "$value": "{elevation.medium}" }
154
154
  },
155
155
  "section": {
156
156
  "$description": "Card header and footer",
157
- "dividerColor": { "$type": "color", "$value": "rgba(226, 213, 200, 0.6)", "$description": "Decorative divider" },
158
- "headerGradientStart": { "$type": "color", "$value": "rgba(255, 255, 255, 0.5)" },
157
+ "dividerColor": { "$type": "color", "$value": "{color.border.divider}" },
158
+ "headerGradientStart": { "$type": "color", "$value": "{color.surface.sheen}" },
159
159
  "headerGradientEnd": { "$type": "color", "$value": "rgba(255, 255, 255, 0)" }
160
160
  }
161
161
  },
162
162
  "progress": {
163
163
  "$description": "Progress — chunky pill track",
164
+ "track": {
165
+ "insetShadow": { "$type": "color", "$value": "rgba(0, 0, 0, 0.06)", "$description": "Neutral, so it works on every track colour" }
166
+ },
164
167
  "inverse": {
165
168
  "$description": "On brand/accent backgrounds (e.g. journey hero). Fill is cream so it reads at 3.7:1 against the track.",
166
169
  "trackBackground": { "$type": "color", "$value": "rgba(255, 255, 255, 0.15)" },
@@ -219,10 +222,11 @@
219
222
  },
220
223
  "modal": {
221
224
  "$description": "Modal dialog",
222
- "overlay": { "$type": "color", "$value": "rgba(61, 50, 41, 0.6)", "$description": "Backdrop — darker than color.surface.overlay so the dialog stands out" }
225
+ "overlay": { "$type": "color", "$value": "{color.surface.backdrop}" }
223
226
  },
224
227
  "closeButton": {
225
228
  "$description": "Icon-only close buttons in alerts and modals",
226
- "backgroundHover": { "$type": "color", "$value": "rgba(0, 0, 0, 0.08)", "$description": "Neutral tint that works on every alert variant" }
229
+ "backgroundHover": { "$type": "color", "$value": "rgba(0, 0, 0, 0.08)", "$description": "Neutral tint that works on every alert variant" },
230
+ "shadowHover": { "$type": "color", "$value": "rgba(0, 0, 0, 0.15)", "$description": "Offset shadow colour on hover and press. Neutral, like the background, so it works on every alert variant" }
227
231
  }
228
232
  }