@orange-halo/tokens 1.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.
package/dist/tokens.js CHANGED
@@ -11,8 +11,8 @@ export const OhColorOrange500 = "#ff9800";
11
11
  export const OhColorOrange600 = "#fb8c00";
12
12
  export const OhColorOrange700 = "#f57c00";
13
13
  export const OhColorOrange800 = "#ef6c00";
14
- export const OhColorOrange900 = "#c54300"; // Primary brand — WCAG AA (4.5:1)
15
- export const OhColorOrange950 = "#9e3500"; // Hover/active state — WCAG AA (7.2:1)
14
+ export const OhColorOrange900 = "#c54300"; // Primary brand — 5.0:1 with white text, 4.7:1 on cream. Chosen for contrast: do not lighten.
15
+ export const OhColorOrange950 = "#9e3500"; // Hover/active — 7.1:1 with white text, 6.6:1 on cream
16
16
  export const OhColorHoney50 = "#fefaee";
17
17
  export const OhColorHoney100 = "#fdf3d4";
18
18
  export const OhColorHoney200 = "#fbe7a8";
@@ -20,8 +20,9 @@ export const OhColorHoney300 = "#f8d56f";
20
20
  export const OhColorHoney400 = "#e8a838"; // Signature honey
21
21
  export const OhColorHoney500 = "#d4922c";
22
22
  export const OhColorHoney600 = "#b87a24";
23
- export const OhColorHoney700 = "#8c5e1c"; // WCAG AA (5.2:1)
23
+ export const OhColorHoney700 = "#8c5e1c"; // 5.3:1 on cream
24
24
  export const OhColorHoney800 = "#6b4815";
25
+ export const OhColorHoney900 = "#3d3529"; // Dark theme warning tint
25
26
  export const OhColorTerracotta50 = "#fbf5f0";
26
27
  export const OhColorTerracotta100 = "#f5e8de";
27
28
  export const OhColorTerracotta200 = "#e8cdbf";
@@ -37,35 +38,49 @@ export const OhColorEucalyptus100 = "#e0ebeb";
37
38
  export const OhColorEucalyptus200 = "#c2d7d7";
38
39
  export const OhColorEucalyptus300 = "#9ebebe";
39
40
  export const OhColorEucalyptus400 = "#7aa3a4";
40
- export const OhColorEucalyptus500 = "#5f8a8b"; // Signature eucalyptus — WCAG AA (4.5:1)
41
+ export const OhColorEucalyptus500 = "#5f8a8b"; // 3.6:1 on cream — UI and large text only
41
42
  export const OhColorEucalyptus600 = "#4d7172";
42
- export const OhColorEucalyptus700 = "#3f5c5d"; // WCAG AA (6.2:1)
43
+ export const OhColorEucalyptus700 = "#3f5c5d"; // 6.8:1 on cream
43
44
  export const OhColorEucalyptus800 = "#344a4b";
44
45
  export const OhColorEucalyptus900 = "#2a3c3d";
45
46
  export const OhColorWarmCream = "#faf7f2"; // Base background — warm off-white
46
47
  export const OhColorWarmLinen = "#f5f0e8"; // Raised surface
48
+ export const OhColorWarmDawn = "#fffbf5"; // Sunlit gradient — top
49
+ export const OhColorWarmShell = "#fdf6ee"; // Sunlit gradient — middle
50
+ export const OhColorWarmBiscuit = "#f8efe4"; // Sunlit gradient — bottom
47
51
  export const OhColorWarmParchment = "#ede8df"; // Inset surface
48
52
  export const OhColorWarmSand = "#e2dcd2"; // Borders, dividers
49
- export const OhColorWarmDune = "#c9c1b4"; // Muted elements
50
- export const OhColorWarmDriftwood = "#6b5d4d"; // Secondary text — WCAG AA (4.8:1)
51
- export const OhColorWarmBark = "#52463a"; // Emphasis text (6.8:1)
52
- export const OhColorWarmWalnut = "#3d3229"; // Primary text — WCAG AA (8.2:1)
53
+ export const OhColorWarmDune = "#c9c1b4"; // Decorative only — 1.7:1 on cream, never for control borders
54
+ export const OhColorWarmStone = "#a09080"; // Dark theme control borders — 4.9:1 on cocoa
55
+ export const OhColorWarmTaupe = "#8a7a68"; // Dark theme borders — 3.7:1 on cocoa, 3.0:1 on walnut
56
+ export const OhColorWarmDriftwood = "#6b5d4d"; // Secondary text — 6.0:1 on cream
57
+ export const OhColorWarmBark = "#52463a"; // Emphasis text — 8.6:1 on cream
58
+ export const OhColorWarmHickory = "#4a3f33"; // Dark theme hover and highlight surface
59
+ export const OhColorWarmChestnut = "#44382c"; // Dark theme sunlit surface
60
+ export const OhColorWarmWalnut = "#3d3229"; // Primary text — 11.7:1 on cream. Dark theme raised surface
61
+ export const OhColorWarmMocha = "#352e28"; // Dark theme pressed and disabled surface
62
+ export const OhColorWarmCocoa = "#2a2420"; // Dark theme page background
63
+ export const OhColorWarmEspresso = "#1f1a17"; // Dark theme inset surface
53
64
  export const OhColorGreen50 = "#f0f7f1";
54
65
  export const OhColorGreen100 = "#d9edd9";
66
+ export const OhColorGreen300 = "#7ab87c"; // Dark theme success — 6.5:1 with cocoa text
55
67
  export const OhColorGreen500 = "#5a9a5c";
56
- export const OhColorGreen600 = "#4a8a4c"; // WCAG AA (4.5:1)
57
- export const OhColorGreen700 = "#3d7340";
68
+ export const OhColorGreen600 = "#4a8a4c"; // 3.9:1 on cream — icons and UI only, not text
69
+ export const OhColorGreen700 = "#3d7340"; // Success text — 5.3:1 on cream, 5.2:1 on green.50
70
+ export const OhColorGreen900 = "#2a3629"; // Dark theme success tint
58
71
  export const OhColorRed50 = "#fdf4f3";
59
72
  export const OhColorRed100 = "#f9e0dc";
73
+ export const OhColorRed300 = "#e08f8d"; // Dark theme error — 6.2:1 with cocoa text
60
74
  export const OhColorRed500 = "#c75450";
61
- export const OhColorRed600 = "#b54540"; // WCAG AA (4.8:1)
75
+ export const OhColorRed600 = "#b54540"; // 5.1:1 on cream
62
76
  export const OhColorRed700 = "#943836"; // Hover/active state
77
+ export const OhColorRed900 = "#3d2a29"; // Dark theme error tint
63
78
  export const OhColorBlue50 = "#eef4f9";
64
79
  export const OhColorBlue100 = "#d6e4f0";
65
80
  export const OhColorBlue200 = "#a0b4c8";
66
81
  export const OhColorBlue300 = "#7a9ab8";
67
82
  export const OhColorBlue400 = "#5a82a8";
68
- export const OhColorBlue500 = "#3d5a80"; // Signature blue — WCAG AA (5.5:1)
83
+ export const OhColorBlue500 = "#3d5a80"; // Signature accent — 7.1:1 with white text, 6.6:1 on cream
69
84
  export const OhColorBlue600 = "#354f70"; // Hover state
70
85
  export const OhColorBlue700 = "#2e4460"; // Active state
71
86
  export const OhColorBlue800 = "#253850";
@@ -74,55 +89,60 @@ export const OhColorBrandPrimary = "#c54300"; // Primary brand action — WCAG A
74
89
  export const OhColorBrandPrimaryHover = "#9e3500"; // Hover state
75
90
  export const OhColorBrandPrimaryActive = "#9e3500"; // Active/pressed state
76
91
  export const OhColorBrandPrimarySubtle = "#fff3e0"; // Subtle tint
77
- export const OhColorBrandPrimaryMuted = "#ffe0b2"; // Background tint
78
92
  export const OhColorBrandHighlight = "#e8a838"; // Golden accent
79
93
  export const OhColorBrandHighlightSubtle = "#fdf3d4";
80
94
  export const OhColorAccentDefault = "#3d5a80"; // Signature blue accent
81
95
  export const OhColorAccentHover = "#354f70";
82
96
  export const OhColorAccentActive = "#2e4460";
83
97
  export const OhColorAccentSubtle = "#eef4f9";
84
- export const OhColorAccentMuted = "#d6e4f0";
85
98
  export const OhColorAccentShadow = "#a0b4c8"; // Chunky shadow for accent
86
- export const OhColorFeedbackSuccess = "#4a8a4c";
99
+ export const OhColorFeedbackSuccess = "#3d7340"; // 5.2:1 on successSubtle — green.600 failed AA for text
87
100
  export const OhColorFeedbackSuccessSubtle = "#f0f7f1";
88
- export const OhColorFeedbackSuccessMuted = "#d9edd9";
89
101
  export const OhColorFeedbackError = "#b54540";
90
102
  export const OhColorFeedbackErrorHover = "#943836"; // Error hover/active state
91
103
  export const OhColorFeedbackErrorSubtle = "#fdf4f3";
92
- export const OhColorFeedbackErrorMuted = "#f9e0dc";
93
104
  export const OhColorFeedbackErrorShadow = "#b545404d"; // Error shadow color
94
105
  export const OhColorFeedbackWarning = "#8c5e1c";
95
106
  export const OhColorFeedbackWarningSubtle = "#fefaee";
96
- export const OhColorFeedbackWarningMuted = "#fdf3d4";
97
107
  export const OhColorFeedbackInfo = "#3d5a80";
98
108
  export const OhColorFeedbackInfoSubtle = "#eef4f9";
99
- export const OhColorFeedbackInfoMuted = "#d6e4f0";
100
109
  export const OhColorSurfaceBase = "#faf7f2"; // Page background — warm off-white
101
110
  export const OhColorSurfaceRaised = "#f5f0e8"; // Cards, panels — slight lift
102
111
  export const OhColorSurfaceSunlit = "#faf7f2"; // Featured — use with gradient
103
112
  export const OhColorSurfaceInset = "#ede8df"; // Inputs, wells — pressed in
104
- export const OhColorSurfaceWhite = "#ffffff"; // Pure white for focus/highlight states
113
+ export const OhColorSurfaceHighlight = "#ffffff"; // Brightest surface — focused inputs, top of raised gradients
105
114
  export const OhColorSurfaceOverlay = "#3d322966"; // Modal backdrop — warm
106
115
  export const OhColorSurfaceDisabled = "#e2dcd2"; // Quiet disabled
107
116
  export const OhColorSurfaceHover = "#fff4e6"; // Warm hover tint
108
117
  export const OhColorSurfaceActivePressed = "#f0ebe3"; // Active/pressed surface
118
+ export const OhColorSurfaceFeaturedStart = "#fffbf5"; // Featured (sunlit) card gradient: top
119
+ export const OhColorSurfaceFeaturedMid = "#fdf6ee"; // Featured (sunlit) card gradient: 30%
120
+ export const OhColorSurfaceFeaturedEnd = "#f8efe4"; // Featured (sunlit) card gradient: bottom
121
+ export const OhColorSurfaceSheen = "#ffffff80"; // Light glaze at the top of card headers, fading to transparent
122
+ export const OhColorSurfaceBackdrop = "#3d322999"; // Modal backdrop — darker than surface.overlay so the dialog stands out
109
123
  export const OhColorBorderDefault = "#e2dcd2"; // Standard border
110
124
  export const OhColorBorderSubtle = "#ede8df"; // Subtle dividers
111
125
  export const OhColorBorderEmphasis = "#6b5d4d"; // Strong border for form elements
126
+ export const OhColorBorderStrong = "#c9c1b4"; // Neutral edge between default and emphasis — card hover, drawer edge. Decorative, not a 3:1 control border
112
127
  export const OhColorBorderHover = "#8b4726"; // Hover border — darker for feedback
113
- export const OhColorBorderFocus = "#c54300"; // Focus ring — warm orange
114
- export const OhColorBorderFocusInner = "#c54300"; // Inner focus ring
115
128
  export const OhColorBorderDisabled = "#ede8df";
116
129
  export const OhColorBorderBrand = "#c5430040"; // Brand-tinted border
130
+ export const OhColorBorderBrandHover = "#c5430059"; // Brand-tinted border on hover. Decorative container edge — not a focus or control border
131
+ export const OhColorBorderDivider = "#e2d5c899"; // Decorative divider inside a container, such as a card's header and footer
117
132
  export const OhColorTextPrimary = "#3d3229"; // Primary text — warm brown
118
133
  export const OhColorTextSecondary = "#6b5d4d"; // Secondary text
119
134
  export const OhColorTextDisabled = "#c9c1b4"; // Disabled text
120
135
  export const OhColorTextInverse = "#faf7f2"; // On dark backgrounds
121
136
  export const OhColorTextLink = "#c54300"; // Link text
122
137
  export const OhColorTextLinkHover = "#9e3500"; // Link hover
138
+ export const OhColorTextLinkRaised = "#9e3500"; // Links on raised (linen) surfaces — text.link is only 4.4:1 on linen
123
139
  export const OhColorTextBrand = "#c54300";
124
140
  export const OhColorTextOnBrand = "#ffffff"; // Light text on dark brand bg
125
141
  export const OhColorTextOnAccent = "#ffffff"; // Light text on dark accent bg
142
+ export const OhColorTextOnSuccess = "#ffffff"; // Text on filled color.feedback.success
143
+ export const OhColorTextOnError = "#ffffff"; // Text on filled color.feedback.error
144
+ export const OhColorTextOnWarning = "#ffffff"; // Text on filled color.feedback.warning
145
+ export const OhColorTextOnInfo = "#ffffff"; // Text on filled color.feedback.info
126
146
  export const OhFontFamilySans =
127
147
  "'Bricolage Grotesque', 'General Sans', -apple-system, BlinkMacSystemFont, sans-serif";
128
148
  export const OhFontFamilyDisplay =
@@ -153,33 +173,7 @@ export const OhFontLetterSpacingTight = "-0.01em";
153
173
  export const OhFontLetterSpacingNormal = "0";
154
174
  export const OhFontLetterSpacingWide = "0.01em";
155
175
  export const OhFontLetterSpacingWider = "0.02em";
156
- export const OhSpacing0 = "0";
157
- export const OhSpacing1 = "0.25rem"; // 4px
158
- export const OhSpacing2 = "0.5rem"; // 8px
159
- export const OhSpacing3 = "0.75rem"; // 12px
160
- export const OhSpacing4 = "1rem"; // 16px
161
- export const OhSpacing5 = "1.25rem"; // 20px
162
- export const OhSpacing6 = "1.5rem"; // 24px
163
- export const OhSpacing7 = "1.75rem"; // 28px
164
- export const OhSpacing8 = "2rem"; // 32px
165
- export const OhSpacing10 = "2.5rem"; // 40px
166
- export const OhSpacing12 = "3rem"; // 48px
167
- export const OhSpacing16 = "4rem"; // 64px
168
- export const OhSpacing20 = "5rem"; // 80px
169
- export const OhSpacingPx = "1px";
170
- export const OhSpacing05 = "0.125rem"; // 2px
171
- export const OhSpacing15 = "0.375rem"; // 6px
172
- export const OhSpacing25 = "0.625rem"; // 10px
173
- export const OhSpacing35 = "0.875rem"; // 14px
174
- export const OhSpacingLayoutPage = "1.5rem";
175
- export const OhSpacingLayoutSection = "3rem";
176
- export const OhSpacingLayoutStack = "1.25rem";
177
- export const OhSpacingLayoutInline = "1rem";
178
- export const OhSpacingComponentXs = "0.375rem";
179
- export const OhSpacingComponentSm = "0.625rem";
180
- export const OhSpacingComponentMd = "0.875rem";
181
- export const OhSpacingComponentLg = "1.25rem";
182
- export const OhSpacingComponentXl = "1.75rem";
176
+ export const OhFontLetterSpacingWidest = "0.05em"; // Uppercase labels: hero eyebrows, footer headings
183
177
  export const OhRadiusNone = "0";
184
178
  export const OhRadiusXs = "4px"; // Small details, chips
185
179
  export const OhRadiusSm = "6px"; // Buttons, inputs
@@ -199,14 +193,38 @@ export const OhShadowGlow =
199
193
  export const OhShadowInset = "inset 0 1px 3px rgba(61, 50, 41, 0.08)"; // Inputs, wells
200
194
  export const OhShadowChunkyPrimary = "#e8c4a0"; // Warm peach for primary buttons
201
195
  export const OhShadowChunkySecondary = "#d4c4b0"; // Neutral tan for secondary/form elements
202
- export const OhShadowChunkyAccent = "#a0b4c8"; // Cool blue-gray for accent buttons
196
+ export const OhShadowChunkyAccent = "#a0b4c8"; // Blue offset shadow for accent buttons — decorative
203
197
  export const OhShadowChunkyError = "#b545404d"; // Error state shadow
198
+ export const OhShadowChunkyDriftwood = "#6b5d4d26"; // Translucent driftwood, for offset shadows on cream
199
+ export const OhShadowChunkyDriftwoodHover = "#6b5d4d33"; // A step darker, for the lifted state
200
+ export const OhShadowChunkyDriftwoodDeep = "#6b5d4d40"; // For dialogs, which sit above everything
201
+ export const OhShadowChunkyWalnut = "#3d322926"; // Translucent walnut, for the inset shadow inside fields
202
+ export const OhShadowLayeredFlat =
203
+ "0 1px 2px rgba(61, 50, 41, 0.04), inset 0 1px 0 rgba(255, 255, 255, 0.6)";
204
+ export const OhShadowLayeredRaised =
205
+ "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)";
206
+ export const OhShadowLayeredLifted =
207
+ "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)";
208
+ export const OhShadowLayeredPressed =
209
+ "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)";
210
+ export const OhShadowLayeredFocused =
211
+ "0 2px 6px rgba(61, 50, 41, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.8)"; // Sits under the focus glow
212
+ export const OhShadowLayeredSunlit =
213
+ "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)";
214
+ export const OhShadowLayeredSunlitLifted =
215
+ "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)";
216
+ export const OhShadowLayeredSunlitFocused =
217
+ "0 2px 8px rgba(139, 69, 19, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.9)"; // Sits under the focus glow
204
218
  export const OhShadowPrimary = "#e8c4a0"; // Primary buttons
205
219
  export const OhShadowSecondary = "#d4c4b0"; // Secondary/form elements
206
220
  export const OhShadowAccent = "#a0b4c8"; // Accent buttons
207
221
  export const OhShadowError = "#b545404d"; // Error state
222
+ export const OhShadowNeutral = "#6b5d4d26"; // Containers and the skip link
223
+ export const OhShadowNeutralHover = "#6b5d4d33"; // Lifted containers
224
+ export const OhShadowOverlay = "#6b5d4d40"; // Dialogs
225
+ export const OhShadowField = "#3d322926"; // The inset shadow inside text fields
208
226
  export const OhGradientSunlit =
209
- "linear-gradient(180deg, #FAF7F2 0%, #F5EFE4 100%)"; // Gentle warmth for surfaces
227
+ "linear-gradient(180deg, #fffbf5 0%, #fdf6ee 30%, #f8efe4 100%)"; // Gentle warmth for surfaces — same stops as the sunlit card
210
228
  export const OhGradientWarm =
211
229
  "linear-gradient(135deg, #C54300 0%, #FF9800 100%)"; // Brand emphasis
212
230
  export const OhGradientNostalgic =
@@ -231,6 +249,42 @@ export const OhMotionEasePlayful = [0.34, 1.3, 0.64, 1];
231
249
  export const OhBorderWidth0 = "0";
232
250
  export const OhBorderWidth1 = "1px";
233
251
  export const OhBorderWidth2 = "2px";
252
+ export const OhBorderWidthChunky = "2.5px"; // Signature chunky frame for controls and feedback
253
+ export const OhSpacing0 = "0";
254
+ export const OhSpacing1 = "0.25rem"; // 4px
255
+ export const OhSpacing2 = "0.5rem"; // 8px
256
+ export const OhSpacing3 = "0.75rem"; // 12px
257
+ export const OhSpacing4 = "1rem"; // 16px
258
+ export const OhSpacing5 = "1.25rem"; // 20px
259
+ export const OhSpacing6 = "1.5rem"; // 24px
260
+ export const OhSpacing7 = "1.75rem"; // 28px
261
+ export const OhSpacing8 = "2rem"; // 32px
262
+ export const OhSpacing10 = "2.5rem"; // 40px
263
+ export const OhSpacing12 = "3rem"; // 48px
264
+ export const OhSpacing16 = "4rem"; // 64px
265
+ export const OhSpacing20 = "5rem"; // 80px
266
+ export const OhSpacingPx = "1px";
267
+ export const OhSpacing05 = "0.125rem"; // 2px
268
+ export const OhSpacing15 = "0.375rem"; // 6px
269
+ export const OhSpacing25 = "0.625rem"; // 10px
270
+ export const OhSpacing35 = "0.875rem"; // 14px
271
+ export const OhSpacingLayoutPage = "1.5rem";
272
+ export const OhSpacingLayoutSection = "3rem";
273
+ export const OhSpacingLayoutStack = "1.25rem";
274
+ export const OhSpacingLayoutInline = "1rem";
275
+ export const OhSpacingComponentXs = "0.375rem";
276
+ export const OhSpacingComponentSm = "0.625rem";
277
+ export const OhSpacingComponentMd = "0.875rem";
278
+ export const OhSpacingComponentLg = "1.25rem";
279
+ export const OhSpacingComponentXl = "1.75rem";
280
+ export const OhSizeContainerSm = "640px";
281
+ export const OhSizeContainerMd = "768px";
282
+ export const OhSizeContainerLg = "1024px";
283
+ export const OhSizeContainerXl = "1280px";
284
+ export const OhSizeBreakpointXs = "480px";
285
+ export const OhSizeBreakpointSm = "640px";
286
+ export const OhSizeBreakpointMd = "768px";
287
+ export const OhSizeBreakpointLg = "1024px";
234
288
  export const OhZIndex0 = 0;
235
289
  export const OhZIndex10 = 10;
236
290
  export const OhZIndex20 = 20;
@@ -246,7 +300,7 @@ export const OhTypographyHeadingH1FontWeight = "700";
246
300
  export const OhTypographyHeadingH1LineHeight = 1.25;
247
301
  export const OhTypographyHeadingH1LetterSpacing = "-0.02em";
248
302
  export const OhTypographyHeadingH2FontSize = "2rem";
249
- export const OhTypographyHeadingH2FontWeight = "600";
303
+ export const OhTypographyHeadingH2FontWeight = "700";
250
304
  export const OhTypographyHeadingH2LineHeight = 1.25;
251
305
  export const OhTypographyHeadingH2LetterSpacing = "-0.01em";
252
306
  export const OhTypographyHeadingH3FontSize = "1.625rem";
@@ -254,7 +308,7 @@ export const OhTypographyHeadingH3FontWeight = "600";
254
308
  export const OhTypographyHeadingH3LineHeight = 1.35;
255
309
  export const OhTypographyHeadingH3LetterSpacing = "-0.01em";
256
310
  export const OhTypographyHeadingH4FontSize = "1.25rem";
257
- export const OhTypographyHeadingH4FontWeight = "500";
311
+ export const OhTypographyHeadingH4FontWeight = "600";
258
312
  export const OhTypographyHeadingH4LineHeight = 1.35;
259
313
  export const OhTypographyHeadingH4LetterSpacing = "0";
260
314
  export const OhTypographyHeadingH5FontSize = "1.125rem";
@@ -265,6 +319,9 @@ export const OhTypographyHeadingH6FontWeight = "500";
265
319
  export const OhTypographyHeadingH6LineHeight = 1.5;
266
320
  export const OhTypographyBodyFontFamily =
267
321
  "'Bricolage Grotesque', 'General Sans', -apple-system, BlinkMacSystemFont, sans-serif";
322
+ export const OhTypographyBodyXlFontSize = "1.25rem";
323
+ export const OhTypographyBodyXlFontWeight = "400";
324
+ export const OhTypographyBodyXlLineHeight = 1.5;
268
325
  export const OhTypographyBodyLgFontSize = "1.125rem";
269
326
  export const OhTypographyBodyLgFontWeight = "400";
270
327
  export const OhTypographyBodyLgLineHeight = 1.65;
@@ -289,15 +346,33 @@ export const OhTypographyLabelSmFontSize = "0.75rem";
289
346
  export const OhTypographyLabelSmFontWeight = "500";
290
347
  export const OhTypographyLabelSmLineHeight = 1.5; // 1.5 for WCAG 1.4.12
291
348
  export const OhTypographyLabelSmLetterSpacing = "0.01em";
349
+ export const OhTypographyEyebrowFontFamily =
350
+ "'Bricolage Grotesque', 'General Sans', -apple-system, BlinkMacSystemFont, sans-serif";
351
+ export const OhTypographyEyebrowFontSize = "1rem";
352
+ export const OhTypographyEyebrowFontWeight = "500";
353
+ export const OhTypographyEyebrowLetterSpacing = "0.05em";
354
+ export const OhTypographyControlFontFamily =
355
+ "'Bricolage Grotesque', 'General Sans', -apple-system, BlinkMacSystemFont, sans-serif";
356
+ export const OhTypographyControlFontWeight = "600";
357
+ export const OhTypographyControlLetterSpacing = "0.01em";
358
+ export const OhTypographyControlFontSizeSm = "1rem"; // Small buttons, field labels
359
+ export const OhTypographyControlFontSizeMd = "1.125rem"; // Default: input text, choices, buttons
360
+ export const OhTypographyControlFontSizeLg = "1.25rem"; // Large buttons
361
+ export const OhTypographyEmphasisFontWeight = "600";
292
362
  export const OhTypographyCodeFontFamily =
293
363
  "'JetBrains Mono', 'Fira Code', ui-monospace, monospace";
294
364
  export const OhTypographyCodeFontSize = "0.875rem";
295
365
  export const OhTypographyCodeLineHeight = 1.5;
296
- export const OhShapeInteractive = "6px"; // Buttons, inputs (6px)
297
- export const OhShapeContainer = "10px"; // Cards, panels (10px)
298
- export const OhShapeLarge = "14px"; // Modals (14px)
299
- export const OhShapeSmall = "4px"; // Chips, tags (4px)
300
- export const OhShapePill = "9999px"; // Badges, avatars
366
+ export const OhLayoutContainerSm = "640px";
367
+ export const OhLayoutContainerMd = "768px";
368
+ export const OhLayoutContainerLg = "1024px";
369
+ export const OhLayoutContainerXl = "1280px";
370
+ export const OhShapeControl = "10px"; // Buttons, inputs, selects, tabs
371
+ export const OhShapeContainer = "10px"; // Alerts, modals, dropdowns, accordion items, panels
372
+ export const OhShapeLarge = "14px"; // Cards
373
+ export const OhShapeCompact = "6px"; // Small controls and tags: close buttons, checkboxes, badges, code blocks
374
+ export const OhShapeTight = "4px"; // Focus outlines on text links, inline code
375
+ export const OhShapePill = "9999px"; // Pills, radios, toggles, progress bars
301
376
  export const OhElevationNone = "none";
302
377
  export const OhElevationSoft =
303
378
  "0 2px 8px rgba(61, 50, 41, 0.06), 0 1px 3px rgba(61, 50, 41, 0.08)"; // Cards, raised elements
@@ -308,31 +383,65 @@ export const OhElevationStrong =
308
383
  export const OhElevationGlow =
309
384
  "0 0 0 3px rgba(197, 67, 0, 0.2), 0 0 12px rgba(197, 67, 0, 0.1)"; // Focus ring
310
385
  export const OhElevationInset = "inset 0 1px 3px rgba(61, 50, 41, 0.08)"; // Inputs, wells
386
+ export const OhElevationSurfaceFlat =
387
+ "0 1px 2px rgba(61, 50, 41, 0.04), inset 0 1px 0 rgba(255, 255, 255, 0.6)";
388
+ export const OhElevationSurfaceRaised =
389
+ "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)";
390
+ export const OhElevationSurfaceLifted =
391
+ "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)"; // Hovered
392
+ export const OhElevationSurfacePressed =
393
+ "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)";
394
+ export const OhElevationSurfaceFocused =
395
+ "0 2px 6px rgba(61, 50, 41, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.8)"; // Sits under the focus glow
396
+ export const OhElevationSurfaceFeatured =
397
+ "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)";
398
+ export const OhElevationSurfaceFeaturedLifted =
399
+ "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)";
400
+ export const OhElevationSurfaceFeaturedFocused =
401
+ "0 2px 8px rgba(139, 69, 19, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.9)";
402
+ export const OhElevationOffsetXs = "1px";
403
+ export const OhElevationOffsetSm = "2px";
404
+ export const OhElevationOffsetMd = "3px";
405
+ export const OhElevationOffsetLg = "4px";
406
+ export const OhElevationOffsetXl = "5px";
407
+ export const OhElevationOffset2xl = "6px";
408
+ export const OhLiftHoverSm = "-1px";
409
+ export const OhLiftHoverMd = "-2px";
410
+ export const OhLiftPressSm = "1px";
411
+ export const OhLiftPressMd = "2px";
412
+ export const OhStrokeControl = "2.5px"; // Controls and framed containers: buttons, fields, checkboxes, alerts, dialogs
413
+ export const OhStrokeSurface = "1px"; // Card edges
414
+ export const OhStrokeDivider = "1px"; // Lines between sections
415
+ export const OhDecorationUnderlineThickness = "2px";
416
+ export const OhDecorationUnderlineFocusThickness = "3px"; // The solid underline that shows keyboard focus on inline links
417
+ export const OhDecorationUnderlineDash = "4px";
418
+ export const OhDecorationUnderlinePeriod = "8px";
311
419
  export const OhFocusRingWidth = "3px";
312
- export const OhFocusRingColor = "#c5430059";
313
- export const OhFocusGlowColor = "#c5430026";
420
+ export const OhFocusRingOffset = "2px";
421
+ export const OhFocusRingColor = "#c54300"; // The focus colour: outlines, focused control borders. Must stay opaque (4.7:1 on cream, WCAG 1.4.11)
422
+ export const OhFocusGlowColor = "#c5430026"; // Decorative glow only — never the sole focus indicator
314
423
  export const OhButtonBaseFontFamily =
315
424
  "'Bricolage Grotesque', 'General Sans', -apple-system, BlinkMacSystemFont, sans-serif";
316
- export const OhButtonBaseFontWeight = "500";
425
+ export const OhButtonBaseFontWeight = "600";
317
426
  export const OhButtonBaseLetterSpacing = "0.01em";
318
427
  export const OhButtonBaseBorderRadius = "10px";
319
428
  export const OhButtonBaseBorderWidth = "2.5px";
320
429
  export const OhButtonBaseTransitionDuration = "150ms";
321
430
  export const OhButtonBaseTransitionEasing = [0.34, 1.3, 0.64, 1];
322
- export const OhButtonSizeSmFontSize = "0.875rem";
323
- export const OhButtonSizeSmPaddingX = "0.75rem";
431
+ export const OhButtonSizeSmFontSize = "1rem";
432
+ export const OhButtonSizeSmPaddingX = "1rem";
324
433
  export const OhButtonSizeSmPaddingY = "0.5rem";
325
- export const OhButtonSizeSmMinHeight = "36px";
326
- export const OhButtonSizeSmGap = "0.375rem";
327
- export const OhButtonSizeMdFontSize = "0.875rem";
328
- export const OhButtonSizeMdPaddingX = "1rem";
329
- export const OhButtonSizeMdPaddingY = "0.625rem";
330
- export const OhButtonSizeMdMinHeight = "44px";
434
+ export const OhButtonSizeSmMinHeight = "40px";
435
+ export const OhButtonSizeSmGap = "0.5rem";
436
+ export const OhButtonSizeMdFontSize = "1.125rem";
437
+ export const OhButtonSizeMdPaddingX = "1.5rem";
438
+ export const OhButtonSizeMdPaddingY = "0.75rem";
439
+ export const OhButtonSizeMdMinHeight = "48px";
331
440
  export const OhButtonSizeMdGap = "0.5rem";
332
- export const OhButtonSizeLgFontSize = "1rem";
333
- export const OhButtonSizeLgPaddingX = "1.5rem";
334
- export const OhButtonSizeLgPaddingY = "0.875rem";
335
- export const OhButtonSizeLgMinHeight = "52px";
441
+ export const OhButtonSizeLgFontSize = "1.25rem";
442
+ export const OhButtonSizeLgPaddingX = "2rem";
443
+ export const OhButtonSizeLgPaddingY = "1rem";
444
+ export const OhButtonSizeLgMinHeight = "56px";
336
445
  export const OhButtonSizeLgGap = "0.625rem";
337
446
  export const OhButtonVariantPrimaryBackground = "#c54300";
338
447
  export const OhButtonVariantPrimaryBackgroundHover = "#9e3500";
@@ -341,7 +450,7 @@ export const OhButtonVariantPrimaryColor = "#ffffff";
341
450
  export const OhButtonVariantPrimaryBorderColor = "#c54300";
342
451
  export const OhButtonVariantPrimaryShadowColor = "#e8c4a0";
343
452
  export const OhButtonVariantSecondaryBackground = "#faf7f2";
344
- export const OhButtonVariantSecondaryBackgroundHover = "#ffffff";
453
+ export const OhButtonVariantSecondaryBackgroundHover = "#fff4e6";
345
454
  export const OhButtonVariantSecondaryBackgroundActive = "#f0ebe3";
346
455
  export const OhButtonVariantSecondaryColor = "#3d3229";
347
456
  export const OhButtonVariantSecondaryBorderColor = "#6b5d4d";
@@ -352,8 +461,7 @@ export const OhButtonVariantAccentBackgroundActive = "#2e4460";
352
461
  export const OhButtonVariantAccentColor = "#ffffff";
353
462
  export const OhButtonVariantAccentBorderColor = "#3d5a80";
354
463
  export const OhButtonVariantAccentShadowColor = "#a0b4c8";
355
- export const OhButtonFocusRingWidth = "3px";
356
- export const OhButtonFocusRingColor = "#c5430059";
464
+ export const OhButtonFocusRingColor = "#c54300";
357
465
  export const OhButtonFocusGlowColor = "#c5430026";
358
466
  export const OhInputBaseFontFamily =
359
467
  "'Bricolage Grotesque', 'General Sans', -apple-system, BlinkMacSystemFont, sans-serif";
@@ -379,7 +487,7 @@ export const OhInputStateErrorBorderColor = "#b54540";
379
487
  export const OhInputStateErrorBackground = "#fdf4f3";
380
488
  export const OhInputStateErrorShadowColor = "#b545404d";
381
489
  export const OhCardBaseBackground = "#f5f0e8";
382
- export const OhCardBaseBorderRadius = "10px";
490
+ export const OhCardBaseBorderRadius = "14px";
383
491
  export const OhCardBaseBorderWidth = "1px";
384
492
  export const OhCardBaseBorderColor = "#e2dcd2";
385
493
  export const OhCardBaseShadow =
@@ -391,17 +499,35 @@ export const OhCardInteractiveBackgroundHover = "#faf7f2";
391
499
  export const OhCardInteractiveBorderColorHover = "#c5430040";
392
500
  export const OhCardInteractiveShadowHover =
393
501
  "0 4px 16px rgba(61, 50, 41, 0.08), 0 2px 6px rgba(61, 50, 41, 0.06)";
502
+ export const OhCardRaisedGradientStart = "#ffffff";
503
+ export const OhCardRaisedGradientMid = "#faf7f2";
504
+ export const OhCardRaisedGradientEnd = "#f5f0e8";
505
+ export const OhCardRaisedBorderColor = "#e2dcd2";
506
+ export const OhCardFlatGradientStart = "#faf7f2";
507
+ export const OhCardFlatGradientEnd = "#f5f0e8";
508
+ export const OhCardFlatBorderColor = "#e2dcd2";
394
509
  export const OhCardSunlitBackground =
395
- "linear-gradient(180deg, #FAF7F2 0%, #F5EFE4 100%)";
510
+ "linear-gradient(180deg, #fffbf5 0%, #fdf6ee 30%, #f8efe4 100%)";
511
+ export const OhCardSunlitGradientStart = "#fffbf5";
512
+ export const OhCardSunlitGradientMid = "#fdf6ee";
513
+ export const OhCardSunlitGradientEnd = "#f8efe4";
396
514
  export const OhCardSunlitBorderColor = "#c5430040";
515
+ export const OhCardSunlitBorderColorHover = "#c5430059";
397
516
  export const OhCardSunlitShadow =
398
517
  "0 4px 16px rgba(61, 50, 41, 0.08), 0 2px 6px rgba(61, 50, 41, 0.06)";
518
+ export const OhCardSectionDividerColor = "#e2d5c899";
519
+ export const OhCardSectionHeaderGradientStart = "#ffffff80";
520
+ export const OhCardSectionHeaderGradientEnd = "#ffffff00";
521
+ export const OhProgressTrackInsetShadow = "#0000000f"; // Neutral, so it works on every track colour
522
+ export const OhProgressInverseTrackBackground = "#ffffff26";
523
+ export const OhProgressInverseTrackBorder = "#ffffff4d";
524
+ export const OhProgressInverseFill = "#faf7f2";
399
525
  export const OhBadgeBaseFontFamily =
400
526
  "'Bricolage Grotesque', 'General Sans', -apple-system, BlinkMacSystemFont, sans-serif";
401
- export const OhBadgeBaseFontSize = "0.75rem";
527
+ export const OhBadgeBaseFontSize = "1rem";
402
528
  export const OhBadgeBaseFontWeight = "500";
403
529
  export const OhBadgeBaseLetterSpacing = "0.01em";
404
- export const OhBadgeBaseBorderRadius = "9999px";
530
+ export const OhBadgeBaseBorderRadius = "6px";
405
531
  export const OhBadgeBasePaddingX = "0.625rem";
406
532
  export const OhBadgeBasePaddingY = "0.25rem";
407
533
  export const OhBadgeVariantBrandBackground = "#fff3e0";
@@ -409,7 +535,7 @@ export const OhBadgeVariantBrandColor = "#c54300";
409
535
  export const OhBadgeVariantAccentBackground = "#eef4f9";
410
536
  export const OhBadgeVariantAccentColor = "#3d5a80";
411
537
  export const OhBadgeVariantSuccessBackground = "#f0f7f1";
412
- export const OhBadgeVariantSuccessColor = "#4a8a4c";
538
+ export const OhBadgeVariantSuccessColor = "#3d7340";
413
539
  export const OhBadgeVariantErrorBackground = "#fdf4f3";
414
540
  export const OhBadgeVariantErrorColor = "#b54540";
415
541
  export const OhBadgeVariantWarningBackground = "#fefaee";
@@ -420,3 +546,7 @@ export const OhLinkColor = "#c54300";
420
546
  export const OhLinkColorHover = "#9e3500";
421
547
  export const OhLinkTextDecoration = "underline";
422
548
  export const OhLinkTextDecorationHover = "none";
549
+ export const OhLinkInverseFocusBackground = "#0000001a"; // Focus tint — paired with the underline, which is the indicator
550
+ export const OhModalOverlay = "#3d322999";
551
+ export const OhCloseButtonBackgroundHover = "#00000014"; // Neutral tint that works on every alert variant
552
+ export const OhCloseButtonShadowHover = "#00000026"; // Offset shadow colour on hover and press. Neutral, like the background, so it works on every alert variant