@orange-halo/tokens 1.0.0 → 2.0.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.
@@ -3,217 +3,783 @@
3
3
  "color": {
4
4
  "brand": {
5
5
  "$description": "Brand colors — Orange Halo warmth",
6
- "primary": { "$type": "color", "$value": "{color.orange.900}", "$description": "Primary brand action — WCAG AA" },
7
- "primaryHover": { "$type": "color", "$value": "{color.orange.950}", "$description": "Hover state" },
8
- "primaryActive": { "$type": "color", "$value": "{color.orange.950}", "$description": "Active/pressed state" },
9
- "primarySubtle": { "$type": "color", "$value": "{color.orange.50}", "$description": "Subtle tint" },
10
- "primaryMuted": { "$type": "color", "$value": "{color.orange.100}", "$description": "Background tint" },
11
- "highlight": { "$type": "color", "$value": "{color.honey.400}", "$description": "Golden accent" },
12
- "highlightSubtle": { "$type": "color", "$value": "{color.honey.100}" }
6
+ "primary": {
7
+ "$type": "color",
8
+ "$value": "{color.orange.900}",
9
+ "$description": "Primary brand action — WCAG AA"
10
+ },
11
+ "primaryHover": {
12
+ "$type": "color",
13
+ "$value": "{color.orange.950}",
14
+ "$description": "Hover state"
15
+ },
16
+ "primaryActive": {
17
+ "$type": "color",
18
+ "$value": "{color.orange.950}",
19
+ "$description": "Active/pressed state"
20
+ },
21
+ "primarySubtle": {
22
+ "$type": "color",
23
+ "$value": "{color.orange.50}",
24
+ "$description": "Subtle tint"
25
+ },
26
+ "highlight": {
27
+ "$type": "color",
28
+ "$value": "{color.honey.400}",
29
+ "$description": "Golden accent"
30
+ },
31
+ "highlightSubtle": {
32
+ "$type": "color",
33
+ "$value": "{color.honey.100}"
34
+ }
13
35
  },
14
36
  "accent": {
15
37
  "$description": "Blue accent — modern counterbalance for CTAs",
16
- "default": { "$type": "color", "$value": "{color.blue.500}", "$description": "Signature blue accent" },
17
- "hover": { "$type": "color", "$value": "{color.blue.600}" },
18
- "active": { "$type": "color", "$value": "{color.blue.700}" },
19
- "subtle": { "$type": "color", "$value": "{color.blue.50}" },
20
- "muted": { "$type": "color", "$value": "{color.blue.100}" },
21
- "shadow": { "$type": "color", "$value": "{color.blue.200}", "$description": "Chunky shadow for accent" }
38
+ "default": {
39
+ "$type": "color",
40
+ "$value": "{color.blue.500}",
41
+ "$description": "Signature blue accent"
42
+ },
43
+ "hover": {
44
+ "$type": "color",
45
+ "$value": "{color.blue.600}"
46
+ },
47
+ "active": {
48
+ "$type": "color",
49
+ "$value": "{color.blue.700}"
50
+ },
51
+ "subtle": {
52
+ "$type": "color",
53
+ "$value": "{color.blue.50}"
54
+ },
55
+ "shadow": {
56
+ "$type": "color",
57
+ "$value": "{color.blue.200}",
58
+ "$description": "Chunky shadow for accent"
59
+ }
22
60
  },
23
61
  "feedback": {
24
62
  "$description": "Feedback colors — warm-tinted",
25
- "success": { "$type": "color", "$value": "{color.green.600}" },
26
- "successSubtle": { "$type": "color", "$value": "{color.green.50}" },
27
- "successMuted": { "$type": "color", "$value": "{color.green.100}" },
28
- "error": { "$type": "color", "$value": "{color.red.600}" },
29
- "errorHover": { "$type": "color", "$value": "{color.red.700}", "$description": "Error hover/active state" },
30
- "errorSubtle": { "$type": "color", "$value": "{color.red.50}" },
31
- "errorMuted": { "$type": "color", "$value": "{color.red.100}" },
32
- "errorShadow": { "$type": "color", "$value": "{shadow.chunky.error}", "$description": "Error shadow color" },
33
- "warning": { "$type": "color", "$value": "{color.honey.700}" },
34
- "warningSubtle": { "$type": "color", "$value": "{color.honey.50}" },
35
- "warningMuted": { "$type": "color", "$value": "{color.honey.100}" },
36
- "info": { "$type": "color", "$value": "{color.blue.500}" },
37
- "infoSubtle": { "$type": "color", "$value": "{color.blue.50}" },
38
- "infoMuted": { "$type": "color", "$value": "{color.blue.100}" }
63
+ "success": {
64
+ "$type": "color",
65
+ "$value": "{color.green.700}",
66
+ "$description": "5.2:1 on successSubtle — green.600 failed AA for text"
67
+ },
68
+ "successSubtle": {
69
+ "$type": "color",
70
+ "$value": "{color.green.50}"
71
+ },
72
+ "error": {
73
+ "$type": "color",
74
+ "$value": "{color.red.600}"
75
+ },
76
+ "errorHover": {
77
+ "$type": "color",
78
+ "$value": "{color.red.700}",
79
+ "$description": "Error hover/active state"
80
+ },
81
+ "errorSubtle": {
82
+ "$type": "color",
83
+ "$value": "{color.red.50}"
84
+ },
85
+ "errorShadow": {
86
+ "$type": "color",
87
+ "$value": "{shadow.chunky.error}",
88
+ "$description": "Error shadow color"
89
+ },
90
+ "warning": {
91
+ "$type": "color",
92
+ "$value": "{color.honey.700}"
93
+ },
94
+ "warningSubtle": {
95
+ "$type": "color",
96
+ "$value": "{color.honey.50}"
97
+ },
98
+ "info": {
99
+ "$type": "color",
100
+ "$value": "{color.blue.500}"
101
+ },
102
+ "infoSubtle": {
103
+ "$type": "color",
104
+ "$value": "{color.blue.50}"
105
+ }
39
106
  },
40
107
  "surface": {
41
108
  "$description": "Surface system — designed surfaces, not flat planes",
42
- "base": { "$type": "color", "$value": "{color.warm.cream}", "$description": "Page background — warm off-white" },
43
- "raised": { "$type": "color", "$value": "{color.warm.linen}", "$description": "Cards, panels — slight lift" },
44
- "sunlit": { "$type": "color", "$value": "{color.warm.cream}", "$description": "Featured — use with gradient" },
45
- "inset": { "$type": "color", "$value": "{color.warm.parchment}", "$description": "Inputs, wells — pressed in" },
46
- "white": { "$type": "color", "$value": "{color.white}", "$description": "Pure white for focus/highlight states" },
47
- "overlay": { "$type": "color", "$value": "rgba(61, 50, 41, 0.4)", "$description": "Modal backdrop — warm" },
48
- "disabled": { "$type": "color", "$value": "{color.warm.sand}", "$description": "Quiet disabled" },
49
- "hover": { "$type": "color", "$value": "#FFF4E6", "$description": "Warm hover tint" },
50
- "activePressed": { "$type": "color", "$value": "#F0EBE3", "$description": "Active/pressed surface" }
109
+ "base": {
110
+ "$type": "color",
111
+ "$value": "{color.warm.cream}",
112
+ "$description": "Page background — warm off-white"
113
+ },
114
+ "raised": {
115
+ "$type": "color",
116
+ "$value": "{color.warm.linen}",
117
+ "$description": "Cards, panels — slight lift"
118
+ },
119
+ "sunlit": {
120
+ "$type": "color",
121
+ "$value": "{color.warm.cream}",
122
+ "$description": "Featured — use with gradient"
123
+ },
124
+ "inset": {
125
+ "$type": "color",
126
+ "$value": "{color.warm.parchment}",
127
+ "$description": "Inputs, wells — pressed in"
128
+ },
129
+ "highlight": {
130
+ "$type": "color",
131
+ "$value": "{color.white}",
132
+ "$description": "Brightest surface — focused inputs, top of raised gradients"
133
+ },
134
+ "overlay": {
135
+ "$type": "color",
136
+ "$value": "rgba(61, 50, 41, 0.4)",
137
+ "$description": "Modal backdrop — warm"
138
+ },
139
+ "disabled": {
140
+ "$type": "color",
141
+ "$value": "{color.warm.sand}",
142
+ "$description": "Quiet disabled"
143
+ },
144
+ "hover": {
145
+ "$type": "color",
146
+ "$value": "#FFF4E6",
147
+ "$description": "Warm hover tint"
148
+ },
149
+ "activePressed": {
150
+ "$type": "color",
151
+ "$value": "#F0EBE3",
152
+ "$description": "Active/pressed surface"
153
+ }
51
154
  },
52
155
  "border": {
53
156
  "$description": "Border colors — visible and intentional",
54
- "default": { "$type": "color", "$value": "{color.warm.sand}", "$description": "Standard border" },
55
- "subtle": { "$type": "color", "$value": "{color.warm.parchment}", "$description": "Subtle dividers" },
56
- "emphasis": { "$type": "color", "$value": "{color.warm.driftwood}", "$description": "Strong border for form elements" },
57
- "hover": { "$type": "color", "$value": "{color.terracotta.600}", "$description": "Hover border — darker for feedback" },
58
- "focus": { "$type": "color", "$value": "{color.orange.900}", "$description": "Focus ring — warm orange" },
59
- "focusInner": { "$type": "color", "$value": "{color.orange.900}", "$description": "Inner focus ring" },
60
- "disabled": { "$type": "color", "$value": "{color.warm.parchment}" },
61
- "brand": { "$type": "color", "$value": "rgba(197, 67, 0, 0.25)", "$description": "Brand-tinted border" }
157
+ "default": {
158
+ "$type": "color",
159
+ "$value": "{color.warm.sand}",
160
+ "$description": "Standard border"
161
+ },
162
+ "subtle": {
163
+ "$type": "color",
164
+ "$value": "{color.warm.parchment}",
165
+ "$description": "Subtle dividers"
166
+ },
167
+ "emphasis": {
168
+ "$type": "color",
169
+ "$value": "{color.warm.driftwood}",
170
+ "$description": "Strong border for form elements"
171
+ },
172
+ "strong": {
173
+ "$type": "color",
174
+ "$value": "{color.warm.dune}",
175
+ "$description": "Neutral edge between default and emphasis — card hover, drawer edge. Decorative, not a 3:1 control border"
176
+ },
177
+ "hover": {
178
+ "$type": "color",
179
+ "$value": "{color.terracotta.600}",
180
+ "$description": "Hover border — darker for feedback"
181
+ },
182
+ "disabled": {
183
+ "$type": "color",
184
+ "$value": "{color.warm.parchment}"
185
+ },
186
+ "brand": {
187
+ "$type": "color",
188
+ "$value": "rgba(197, 67, 0, 0.25)",
189
+ "$description": "Brand-tinted border"
190
+ }
62
191
  },
63
192
  "text": {
64
193
  "$description": "Text colors — calm and readable, not stark",
65
- "primary": { "$type": "color", "$value": "{color.warm.walnut}", "$description": "Primary text — warm brown" },
66
- "secondary": { "$type": "color", "$value": "{color.warm.driftwood}", "$description": "Secondary text" },
67
- "disabled": { "$type": "color", "$value": "{color.warm.dune}", "$description": "Disabled text" },
68
- "inverse": { "$type": "color", "$value": "{color.warm.cream}", "$description": "On dark backgrounds" },
69
- "link": { "$type": "color", "$value": "{color.orange.900}", "$description": "Link text" },
70
- "linkHover": { "$type": "color", "$value": "{color.orange.950}", "$description": "Link hover" },
71
- "brand": { "$type": "color", "$value": "{color.orange.900}" },
72
- "onBrand": { "$type": "color", "$value": "{color.white}", "$description": "Light text on dark brand bg" },
73
- "onAccent": { "$type": "color", "$value": "{color.white}", "$description": "Light text on dark accent bg" }
194
+ "primary": {
195
+ "$type": "color",
196
+ "$value": "{color.warm.walnut}",
197
+ "$description": "Primary text — warm brown"
198
+ },
199
+ "secondary": {
200
+ "$type": "color",
201
+ "$value": "{color.warm.driftwood}",
202
+ "$description": "Secondary text"
203
+ },
204
+ "disabled": {
205
+ "$type": "color",
206
+ "$value": "{color.warm.dune}",
207
+ "$description": "Disabled text"
208
+ },
209
+ "inverse": {
210
+ "$type": "color",
211
+ "$value": "{color.warm.cream}",
212
+ "$description": "On dark backgrounds"
213
+ },
214
+ "link": {
215
+ "$type": "color",
216
+ "$value": "{color.orange.900}",
217
+ "$description": "Link text"
218
+ },
219
+ "linkHover": {
220
+ "$type": "color",
221
+ "$value": "{color.orange.950}",
222
+ "$description": "Link hover"
223
+ },
224
+ "linkRaised": {
225
+ "$type": "color",
226
+ "$value": "{color.orange.950}",
227
+ "$description": "Links on raised (linen) surfaces — text.link is only 4.4:1 on linen"
228
+ },
229
+ "brand": {
230
+ "$type": "color",
231
+ "$value": "{color.orange.900}"
232
+ },
233
+ "onBrand": {
234
+ "$type": "color",
235
+ "$value": "{color.white}",
236
+ "$description": "Light text on dark brand bg"
237
+ },
238
+ "onAccent": {
239
+ "$type": "color",
240
+ "$value": "{color.white}",
241
+ "$description": "Light text on dark accent bg"
242
+ },
243
+ "onSuccess": {
244
+ "$type": "color",
245
+ "$value": "{color.white}",
246
+ "$description": "Text on filled color.feedback.success"
247
+ },
248
+ "onError": {
249
+ "$type": "color",
250
+ "$value": "{color.white}",
251
+ "$description": "Text on filled color.feedback.error"
252
+ },
253
+ "onWarning": {
254
+ "$type": "color",
255
+ "$value": "{color.white}",
256
+ "$description": "Text on filled color.feedback.warning"
257
+ },
258
+ "onInfo": {
259
+ "$type": "color",
260
+ "$value": "{color.white}",
261
+ "$description": "Text on filled color.feedback.info"
262
+ }
74
263
  }
75
264
  },
76
265
  "typography": {
77
266
  "$description": "Bricolage Grotesque — playful, crafted, warm",
78
267
  "heading": {
79
- "fontFamily": { "$type": "fontFamily", "$value": "{font.family.display}" },
268
+ "fontFamily": {
269
+ "$type": "fontFamily",
270
+ "$value": "{font.family.display}"
271
+ },
80
272
  "h1": {
81
- "fontSize": { "$type": "dimension", "$value": "{font.size.4xl}" },
82
- "fontWeight": { "$type": "fontWeight", "$value": "{font.weight.bold}" },
83
- "lineHeight": { "$type": "number", "$value": "{font.lineHeight.tight}" },
84
- "letterSpacing": { "$type": "dimension", "$value": "{font.letterSpacing.tighter}" }
273
+ "fontSize": {
274
+ "$type": "dimension",
275
+ "$value": "{font.size.4xl}"
276
+ },
277
+ "fontWeight": {
278
+ "$type": "fontWeight",
279
+ "$value": "{font.weight.bold}"
280
+ },
281
+ "lineHeight": {
282
+ "$type": "number",
283
+ "$value": "{font.lineHeight.tight}"
284
+ },
285
+ "letterSpacing": {
286
+ "$type": "dimension",
287
+ "$value": "{font.letterSpacing.tighter}"
288
+ }
85
289
  },
86
290
  "h2": {
87
- "fontSize": { "$type": "dimension", "$value": "{font.size.3xl}" },
88
- "fontWeight": { "$type": "fontWeight", "$value": "{font.weight.semibold}" },
89
- "lineHeight": { "$type": "number", "$value": "{font.lineHeight.tight}" },
90
- "letterSpacing": { "$type": "dimension", "$value": "{font.letterSpacing.tight}" }
291
+ "fontSize": {
292
+ "$type": "dimension",
293
+ "$value": "{font.size.3xl}"
294
+ },
295
+ "fontWeight": {
296
+ "$type": "fontWeight",
297
+ "$value": "{font.weight.bold}"
298
+ },
299
+ "lineHeight": {
300
+ "$type": "number",
301
+ "$value": "{font.lineHeight.tight}"
302
+ },
303
+ "letterSpacing": {
304
+ "$type": "dimension",
305
+ "$value": "{font.letterSpacing.tight}"
306
+ }
91
307
  },
92
308
  "h3": {
93
- "fontSize": { "$type": "dimension", "$value": "{font.size.2xl}" },
94
- "fontWeight": { "$type": "fontWeight", "$value": "{font.weight.semibold}" },
95
- "lineHeight": { "$type": "number", "$value": "{font.lineHeight.snug}" },
96
- "letterSpacing": { "$type": "dimension", "$value": "{font.letterSpacing.tight}" }
309
+ "fontSize": {
310
+ "$type": "dimension",
311
+ "$value": "{font.size.2xl}"
312
+ },
313
+ "fontWeight": {
314
+ "$type": "fontWeight",
315
+ "$value": "{font.weight.semibold}"
316
+ },
317
+ "lineHeight": {
318
+ "$type": "number",
319
+ "$value": "{font.lineHeight.snug}"
320
+ },
321
+ "letterSpacing": {
322
+ "$type": "dimension",
323
+ "$value": "{font.letterSpacing.tight}"
324
+ }
97
325
  },
98
326
  "h4": {
99
- "fontSize": { "$type": "dimension", "$value": "{font.size.xl}" },
100
- "fontWeight": { "$type": "fontWeight", "$value": "{font.weight.medium}" },
101
- "lineHeight": { "$type": "number", "$value": "{font.lineHeight.snug}" },
102
- "letterSpacing": { "$type": "dimension", "$value": "{font.letterSpacing.normal}" }
327
+ "fontSize": {
328
+ "$type": "dimension",
329
+ "$value": "{font.size.xl}"
330
+ },
331
+ "fontWeight": {
332
+ "$type": "fontWeight",
333
+ "$value": "{font.weight.semibold}"
334
+ },
335
+ "lineHeight": {
336
+ "$type": "number",
337
+ "$value": "{font.lineHeight.snug}"
338
+ },
339
+ "letterSpacing": {
340
+ "$type": "dimension",
341
+ "$value": "{font.letterSpacing.normal}"
342
+ }
103
343
  },
104
344
  "h5": {
105
- "fontSize": { "$type": "dimension", "$value": "{font.size.lg}" },
106
- "fontWeight": { "$type": "fontWeight", "$value": "{font.weight.medium}" },
107
- "lineHeight": { "$type": "number", "$value": "{font.lineHeight.normal}" }
345
+ "fontSize": {
346
+ "$type": "dimension",
347
+ "$value": "{font.size.lg}"
348
+ },
349
+ "fontWeight": {
350
+ "$type": "fontWeight",
351
+ "$value": "{font.weight.medium}"
352
+ },
353
+ "lineHeight": {
354
+ "$type": "number",
355
+ "$value": "{font.lineHeight.normal}"
356
+ }
108
357
  },
109
358
  "h6": {
110
- "fontSize": { "$type": "dimension", "$value": "{font.size.base}" },
111
- "fontWeight": { "$type": "fontWeight", "$value": "{font.weight.medium}" },
112
- "lineHeight": { "$type": "number", "$value": "{font.lineHeight.normal}" }
359
+ "fontSize": {
360
+ "$type": "dimension",
361
+ "$value": "{font.size.base}"
362
+ },
363
+ "fontWeight": {
364
+ "$type": "fontWeight",
365
+ "$value": "{font.weight.medium}"
366
+ },
367
+ "lineHeight": {
368
+ "$type": "number",
369
+ "$value": "{font.lineHeight.normal}"
370
+ }
113
371
  }
114
372
  },
115
373
  "body": {
116
- "fontFamily": { "$type": "fontFamily", "$value": "{font.family.sans}" },
374
+ "fontFamily": {
375
+ "$type": "fontFamily",
376
+ "$value": "{font.family.sans}"
377
+ },
378
+ "xl": {
379
+ "$description": "Lead paragraphs and hero subtitles",
380
+ "fontSize": {
381
+ "$type": "dimension",
382
+ "$value": "{font.size.xl}"
383
+ },
384
+ "fontWeight": {
385
+ "$type": "fontWeight",
386
+ "$value": "{font.weight.normal}"
387
+ },
388
+ "lineHeight": {
389
+ "$type": "number",
390
+ "$value": "{font.lineHeight.normal}"
391
+ }
392
+ },
117
393
  "lg": {
118
- "fontSize": { "$type": "dimension", "$value": "{font.size.lg}" },
119
- "fontWeight": { "$type": "fontWeight", "$value": "{font.weight.normal}" },
120
- "lineHeight": { "$type": "number", "$value": "{font.lineHeight.relaxed}" }
394
+ "fontSize": {
395
+ "$type": "dimension",
396
+ "$value": "{font.size.lg}"
397
+ },
398
+ "fontWeight": {
399
+ "$type": "fontWeight",
400
+ "$value": "{font.weight.normal}"
401
+ },
402
+ "lineHeight": {
403
+ "$type": "number",
404
+ "$value": "{font.lineHeight.relaxed}"
405
+ }
121
406
  },
122
407
  "base": {
123
- "fontSize": { "$type": "dimension", "$value": "{font.size.base}" },
124
- "fontWeight": { "$type": "fontWeight", "$value": "{font.weight.normal}" },
125
- "lineHeight": { "$type": "number", "$value": "{font.lineHeight.normal}" }
408
+ "fontSize": {
409
+ "$type": "dimension",
410
+ "$value": "{font.size.base}"
411
+ },
412
+ "fontWeight": {
413
+ "$type": "fontWeight",
414
+ "$value": "{font.weight.normal}"
415
+ },
416
+ "lineHeight": {
417
+ "$type": "number",
418
+ "$value": "{font.lineHeight.normal}"
419
+ }
126
420
  },
127
421
  "sm": {
128
- "fontSize": { "$type": "dimension", "$value": "{font.size.sm}" },
129
- "fontWeight": { "$type": "fontWeight", "$value": "{font.weight.normal}" },
130
- "lineHeight": { "$type": "number", "$value": "{font.lineHeight.normal}" },
131
- "letterSpacing": { "$type": "dimension", "$value": "{font.letterSpacing.wide}" }
422
+ "fontSize": {
423
+ "$type": "dimension",
424
+ "$value": "{font.size.sm}"
425
+ },
426
+ "fontWeight": {
427
+ "$type": "fontWeight",
428
+ "$value": "{font.weight.normal}"
429
+ },
430
+ "lineHeight": {
431
+ "$type": "number",
432
+ "$value": "{font.lineHeight.normal}"
433
+ },
434
+ "letterSpacing": {
435
+ "$type": "dimension",
436
+ "$value": "{font.letterSpacing.wide}"
437
+ }
132
438
  },
133
439
  "xs": {
134
- "fontSize": { "$type": "dimension", "$value": "{font.size.xs}" },
135
- "fontWeight": { "$type": "fontWeight", "$value": "{font.weight.normal}" },
136
- "lineHeight": { "$type": "number", "$value": "{font.lineHeight.normal}" },
137
- "letterSpacing": { "$type": "dimension", "$value": "{font.letterSpacing.wide}" }
440
+ "fontSize": {
441
+ "$type": "dimension",
442
+ "$value": "{font.size.xs}"
443
+ },
444
+ "fontWeight": {
445
+ "$type": "fontWeight",
446
+ "$value": "{font.weight.normal}"
447
+ },
448
+ "lineHeight": {
449
+ "$type": "number",
450
+ "$value": "{font.lineHeight.normal}"
451
+ },
452
+ "letterSpacing": {
453
+ "$type": "dimension",
454
+ "$value": "{font.letterSpacing.wide}"
455
+ }
138
456
  }
139
457
  },
140
458
  "label": {
141
- "fontFamily": { "$type": "fontFamily", "$value": "{font.family.sans}" },
459
+ "fontFamily": {
460
+ "$type": "fontFamily",
461
+ "$value": "{font.family.sans}"
462
+ },
142
463
  "base": {
143
- "fontSize": { "$type": "dimension", "$value": "{font.size.sm}" },
144
- "fontWeight": { "$type": "fontWeight", "$value": "{font.weight.medium}" },
145
- "lineHeight": { "$type": "number", "$value": "{font.lineHeight.normal}", "$description": "1.5 for WCAG 1.4.12" },
146
- "letterSpacing": { "$type": "dimension", "$value": "{font.letterSpacing.wide}" }
464
+ "fontSize": {
465
+ "$type": "dimension",
466
+ "$value": "{font.size.sm}"
467
+ },
468
+ "fontWeight": {
469
+ "$type": "fontWeight",
470
+ "$value": "{font.weight.medium}"
471
+ },
472
+ "lineHeight": {
473
+ "$type": "number",
474
+ "$value": "{font.lineHeight.normal}",
475
+ "$description": "1.5 for WCAG 1.4.12"
476
+ },
477
+ "letterSpacing": {
478
+ "$type": "dimension",
479
+ "$value": "{font.letterSpacing.wide}"
480
+ }
147
481
  },
148
482
  "sm": {
149
- "fontSize": { "$type": "dimension", "$value": "{font.size.xs}" },
150
- "fontWeight": { "$type": "fontWeight", "$value": "{font.weight.medium}" },
151
- "lineHeight": { "$type": "number", "$value": "{font.lineHeight.normal}", "$description": "1.5 for WCAG 1.4.12" },
152
- "letterSpacing": { "$type": "dimension", "$value": "{font.letterSpacing.wide}" }
483
+ "fontSize": {
484
+ "$type": "dimension",
485
+ "$value": "{font.size.xs}"
486
+ },
487
+ "fontWeight": {
488
+ "$type": "fontWeight",
489
+ "$value": "{font.weight.medium}"
490
+ },
491
+ "lineHeight": {
492
+ "$type": "number",
493
+ "$value": "{font.lineHeight.normal}",
494
+ "$description": "1.5 for WCAG 1.4.12"
495
+ },
496
+ "letterSpacing": {
497
+ "$type": "dimension",
498
+ "$value": "{font.letterSpacing.wide}"
499
+ }
500
+ }
501
+ },
502
+ "eyebrow": {
503
+ "$description": "Small uppercase line above a heading (set text-transform: uppercase alongside)",
504
+ "fontFamily": {
505
+ "$type": "fontFamily",
506
+ "$value": "{font.family.sans}"
507
+ },
508
+ "fontSize": {
509
+ "$type": "dimension",
510
+ "$value": "{font.size.base}"
511
+ },
512
+ "fontWeight": {
513
+ "$type": "fontWeight",
514
+ "$value": "{font.weight.medium}"
515
+ },
516
+ "letterSpacing": {
517
+ "$type": "dimension",
518
+ "$value": "{font.letterSpacing.widest}"
519
+ }
520
+ },
521
+ "control": {
522
+ "$description": "Buttons, field labels, legends, select triggers and options, choice labels",
523
+ "fontFamily": {
524
+ "$type": "fontFamily",
525
+ "$value": "{font.family.sans}"
526
+ },
527
+ "fontWeight": {
528
+ "$type": "fontWeight",
529
+ "$value": "{font.weight.semibold}"
530
+ },
531
+ "letterSpacing": {
532
+ "$type": "dimension",
533
+ "$value": "{font.letterSpacing.wide}"
534
+ },
535
+ "fontSize": {
536
+ "sm": {
537
+ "$type": "dimension",
538
+ "$value": "{font.size.base}",
539
+ "$description": "Small buttons, field labels"
540
+ },
541
+ "md": {
542
+ "$type": "dimension",
543
+ "$value": "{font.size.lg}",
544
+ "$description": "Default: input text, choices, buttons"
545
+ },
546
+ "lg": {
547
+ "$type": "dimension",
548
+ "$value": "{font.size.xl}",
549
+ "$description": "Large buttons"
550
+ }
551
+ }
552
+ },
553
+ "emphasis": {
554
+ "$description": "Inline emphasis inside body text: links, the selected option",
555
+ "fontWeight": {
556
+ "$type": "fontWeight",
557
+ "$value": "{font.weight.semibold}"
153
558
  }
154
559
  },
155
560
  "code": {
156
- "fontFamily": { "$type": "fontFamily", "$value": "{font.family.mono}" },
157
- "fontSize": { "$type": "dimension", "$value": "{font.size.sm}" },
158
- "lineHeight": { "$type": "number", "$value": "{font.lineHeight.normal}" }
561
+ "fontFamily": {
562
+ "$type": "fontFamily",
563
+ "$value": "{font.family.mono}"
564
+ },
565
+ "fontSize": {
566
+ "$type": "dimension",
567
+ "$value": "{font.size.sm}"
568
+ },
569
+ "lineHeight": {
570
+ "$type": "number",
571
+ "$value": "{font.lineHeight.normal}"
572
+ }
159
573
  }
160
574
  },
161
575
  "spacing": {
162
576
  "layout": {
163
577
  "$description": "Generous layout spacing",
164
- "page": { "$type": "dimension", "$value": "{spacing.6}" },
165
- "section": { "$type": "dimension", "$value": "{spacing.12}" },
166
- "stack": { "$type": "dimension", "$value": "{spacing.5}" },
167
- "inline": { "$type": "dimension", "$value": "{spacing.4}" }
578
+ "page": {
579
+ "$type": "dimension",
580
+ "$value": "{spacing.6}"
581
+ },
582
+ "section": {
583
+ "$type": "dimension",
584
+ "$value": "{spacing.12}"
585
+ },
586
+ "stack": {
587
+ "$type": "dimension",
588
+ "$value": "{spacing.5}"
589
+ },
590
+ "inline": {
591
+ "$type": "dimension",
592
+ "$value": "{spacing.4}"
593
+ }
168
594
  },
169
595
  "component": {
170
596
  "$description": "Component-level spacing",
171
- "xs": { "$type": "dimension", "$value": "{spacing.1-5}" },
172
- "sm": { "$type": "dimension", "$value": "{spacing.2-5}" },
173
- "md": { "$type": "dimension", "$value": "{spacing.3-5}" },
174
- "lg": { "$type": "dimension", "$value": "{spacing.5}" },
175
- "xl": { "$type": "dimension", "$value": "{spacing.7}" }
597
+ "xs": {
598
+ "$type": "dimension",
599
+ "$value": "{spacing.1-5}"
600
+ },
601
+ "sm": {
602
+ "$type": "dimension",
603
+ "$value": "{spacing.2-5}"
604
+ },
605
+ "md": {
606
+ "$type": "dimension",
607
+ "$value": "{spacing.3-5}"
608
+ },
609
+ "lg": {
610
+ "$type": "dimension",
611
+ "$value": "{spacing.5}"
612
+ },
613
+ "xl": {
614
+ "$type": "dimension",
615
+ "$value": "{spacing.7}"
616
+ }
617
+ }
618
+ },
619
+ "layout": {
620
+ "$description": "Layout sizes",
621
+ "container": {
622
+ "$description": "Max-width of a centred content column (oh-container, oh-hero)",
623
+ "sm": {
624
+ "$type": "dimension",
625
+ "$value": "{size.container.sm}"
626
+ },
627
+ "md": {
628
+ "$type": "dimension",
629
+ "$value": "{size.container.md}"
630
+ },
631
+ "lg": {
632
+ "$type": "dimension",
633
+ "$value": "{size.container.lg}"
634
+ },
635
+ "xl": {
636
+ "$type": "dimension",
637
+ "$value": "{size.container.xl}"
638
+ }
176
639
  }
177
640
  },
178
641
  "shape": {
179
642
  "$description": "Friendly soft corners",
180
- "interactive": { "$type": "dimension", "$value": "{radius.sm}", "$description": "Buttons, inputs (6px)" },
181
- "container": { "$type": "dimension", "$value": "{radius.md}", "$description": "Cards, panels (10px)" },
182
- "large": { "$type": "dimension", "$value": "{radius.lg}", "$description": "Modals (14px)" },
183
- "small": { "$type": "dimension", "$value": "{radius.xs}", "$description": "Chips, tags (4px)" },
184
- "pill": { "$type": "dimension", "$value": "{radius.full}", "$description": "Badges, avatars" }
643
+ "control": {
644
+ "$type": "dimension",
645
+ "$value": "{radius.md}",
646
+ "$description": "Buttons, inputs, selects, tabs"
647
+ },
648
+ "container": {
649
+ "$type": "dimension",
650
+ "$value": "{radius.md}",
651
+ "$description": "Alerts, modals, dropdowns, accordion items, panels"
652
+ },
653
+ "large": {
654
+ "$type": "dimension",
655
+ "$value": "{radius.lg}",
656
+ "$description": "Cards"
657
+ },
658
+ "compact": {
659
+ "$type": "dimension",
660
+ "$value": "{radius.sm}",
661
+ "$description": "Small controls and tags: close buttons, checkboxes, badges, code blocks"
662
+ },
663
+ "tight": {
664
+ "$type": "dimension",
665
+ "$value": "{radius.xs}",
666
+ "$description": "Focus outlines on text links, inline code"
667
+ },
668
+ "pill": {
669
+ "$type": "dimension",
670
+ "$value": "{radius.full}",
671
+ "$description": "Pills, radios, toggles, progress bars"
672
+ }
185
673
  },
186
674
  "elevation": {
187
675
  "$description": "Warm shadows with visible depth",
188
- "none": { "$type": "shadow", "$value": "{shadow.none}" },
189
- "soft": { "$type": "shadow", "$value": "{shadow.soft}", "$description": "Cards, raised elements" },
190
- "medium": { "$type": "shadow", "$value": "{shadow.medium}", "$description": "Dropdowns, popovers" },
191
- "strong": { "$type": "shadow", "$value": "{shadow.strong}", "$description": "Modals, dialogs" },
192
- "glow": { "$type": "shadow", "$value": "{shadow.glow}", "$description": "Focus ring" },
193
- "inset": { "$type": "shadow", "$value": "{shadow.inset}", "$description": "Inputs, wells" }
676
+ "none": {
677
+ "$type": "shadow",
678
+ "$value": "{shadow.none}"
679
+ },
680
+ "soft": {
681
+ "$type": "shadow",
682
+ "$value": "{shadow.soft}",
683
+ "$description": "Cards, raised elements"
684
+ },
685
+ "medium": {
686
+ "$type": "shadow",
687
+ "$value": "{shadow.medium}",
688
+ "$description": "Dropdowns, popovers"
689
+ },
690
+ "strong": {
691
+ "$type": "shadow",
692
+ "$value": "{shadow.strong}",
693
+ "$description": "Modals, dialogs"
694
+ },
695
+ "glow": {
696
+ "$type": "shadow",
697
+ "$value": "{shadow.glow}",
698
+ "$description": "Focus ring"
699
+ },
700
+ "inset": {
701
+ "$type": "shadow",
702
+ "$value": "{shadow.inset}",
703
+ "$description": "Inputs, wells"
704
+ }
194
705
  },
195
706
  "motion": {
196
707
  "$description": "Relaxed, playful motion",
197
- "quick": { "$type": "duration", "$value": "{motion.duration.quick}" },
198
- "snappy": { "$type": "duration", "$value": "{motion.duration.snappy}" },
199
- "gentle": { "$type": "duration", "$value": "{motion.duration.gentle}" },
200
- "relaxed": { "$type": "duration", "$value": "{motion.duration.relaxed}" },
201
- "slow": { "$type": "duration", "$value": "{motion.duration.slow}" },
202
- "easeGentle": { "$type": "cubicBezier", "$value": "{motion.easing.gentle}" },
203
- "easeOut": { "$type": "cubicBezier", "$value": "{motion.easing.out}" },
204
- "easePlayful": { "$type": "cubicBezier", "$value": "{motion.easing.playful}" }
708
+ "quick": {
709
+ "$type": "duration",
710
+ "$value": "{motion.duration.quick}"
711
+ },
712
+ "snappy": {
713
+ "$type": "duration",
714
+ "$value": "{motion.duration.snappy}"
715
+ },
716
+ "gentle": {
717
+ "$type": "duration",
718
+ "$value": "{motion.duration.gentle}"
719
+ },
720
+ "relaxed": {
721
+ "$type": "duration",
722
+ "$value": "{motion.duration.relaxed}"
723
+ },
724
+ "slow": {
725
+ "$type": "duration",
726
+ "$value": "{motion.duration.slow}"
727
+ },
728
+ "easeGentle": {
729
+ "$type": "cubicBezier",
730
+ "$value": "{motion.easing.gentle}"
731
+ },
732
+ "easeOut": {
733
+ "$type": "cubicBezier",
734
+ "$value": "{motion.easing.out}"
735
+ },
736
+ "easePlayful": {
737
+ "$type": "cubicBezier",
738
+ "$value": "{motion.easing.playful}"
739
+ }
205
740
  },
206
741
  "shadow": {
207
742
  "$description": "Chunky offset shadows for playful tactile feel",
208
- "primary": { "$type": "color", "$value": "{shadow.chunky.primary}", "$description": "Primary buttons" },
209
- "secondary": { "$type": "color", "$value": "{shadow.chunky.secondary}", "$description": "Secondary/form elements" },
210
- "accent": { "$type": "color", "$value": "{shadow.chunky.accent}", "$description": "Accent buttons" },
211
- "error": { "$type": "color", "$value": "{shadow.chunky.error}", "$description": "Error state" }
743
+ "primary": {
744
+ "$type": "color",
745
+ "$value": "{shadow.chunky.primary}",
746
+ "$description": "Primary buttons"
747
+ },
748
+ "secondary": {
749
+ "$type": "color",
750
+ "$value": "{shadow.chunky.secondary}",
751
+ "$description": "Secondary/form elements"
752
+ },
753
+ "accent": {
754
+ "$type": "color",
755
+ "$value": "{shadow.chunky.accent}",
756
+ "$description": "Accent buttons"
757
+ },
758
+ "error": {
759
+ "$type": "color",
760
+ "$value": "{shadow.chunky.error}",
761
+ "$description": "Error state"
762
+ }
212
763
  },
213
764
  "focus": {
214
765
  "$description": "Warm, friendly focus ring",
215
- "ringWidth": { "$type": "dimension", "$value": "3px" },
216
- "ringColor": { "$type": "color", "$value": "rgba(197, 67, 0, 0.35)" },
217
- "glowColor": { "$type": "color", "$value": "rgba(197, 67, 0, 0.15)" }
766
+ "ringWidth": {
767
+ "$type": "dimension",
768
+ "$value": "3px"
769
+ },
770
+ "ringOffset": {
771
+ "$type": "dimension",
772
+ "$value": "2px"
773
+ },
774
+ "ringColor": {
775
+ "$type": "color",
776
+ "$value": "{color.orange.900}",
777
+ "$description": "The focus colour: outlines, focused control borders. Must stay opaque (4.7:1 on cream, WCAG 1.4.11)"
778
+ },
779
+ "glowColor": {
780
+ "$type": "color",
781
+ "$value": "rgba(197, 67, 0, 0.15)",
782
+ "$description": "Decorative glow only — never the sole focus indicator"
783
+ }
218
784
  }
219
785
  }