@orange-halo/tokens 2.0.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,7 +4,11 @@
4
4
 
5
5
  [data-theme='dark'] {
6
6
  --oh-color-surface-overlay: rgba(15, 12, 10, 0.7);
7
+ --oh-color-surface-sheen: rgba(255, 255, 255, 0.5);
8
+ --oh-color-surface-backdrop: rgba(61, 50, 41, 0.6);
7
9
  --oh-color-border-brand: rgba(232, 168, 56, 0.3);
10
+ --oh-color-border-brand-hover: rgba(197, 67, 0, 0.35); /** Same as light for now: the dark theme hasn't been designed */
11
+ --oh-color-border-divider: rgba(226, 213, 200, 0.6);
8
12
  --oh-elevation-soft: 0 2px 8px rgba(0, 0, 0, 0.25);
9
13
  --oh-elevation-medium: 0 4px 16px rgba(0, 0, 0, 0.3);
10
14
  --oh-elevation-strong: 0 8px 24px rgba(0, 0, 0, 0.4);
@@ -39,6 +43,9 @@
39
43
  --oh-color-surface-disabled: var(--oh-color-warm-mocha);
40
44
  --oh-color-surface-hover: var(--oh-color-warm-hickory);
41
45
  --oh-color-surface-active-pressed: var(--oh-color-warm-mocha);
46
+ --oh-color-surface-featured-start: var(--oh-color-warm-dawn); /** Same as light for now: the dark theme hasn't been designed */
47
+ --oh-color-surface-featured-mid: var(--oh-color-warm-shell);
48
+ --oh-color-surface-featured-end: var(--oh-color-warm-biscuit);
42
49
  --oh-color-border-default: var(--oh-color-warm-taupe);
43
50
  --oh-color-border-subtle: var(--oh-color-warm-driftwood); /** Decorative dividers only — below 3:1 */
44
51
  --oh-color-border-emphasis: var(--oh-color-warm-stone);
@@ -63,5 +70,9 @@
63
70
  --oh-shadow-secondary: var(--oh-color-warm-espresso);
64
71
  --oh-shadow-accent: var(--oh-color-blue-800);
65
72
  --oh-shadow-error: var(--oh-color-red-900);
73
+ --oh-shadow-neutral: var(--oh-shadow-chunky-driftwood); /** As in light, which is what dark showed before these were tokens. Faint on cocoa: review with the dark design */
74
+ --oh-shadow-neutral-hover: var(--oh-shadow-chunky-driftwood-hover); /** As in light; review with the dark design */
75
+ --oh-shadow-overlay: var(--oh-shadow-chunky-driftwood-deep); /** As in light; review with the dark design */
76
+ --oh-shadow-field: var(--oh-shadow-chunky-walnut); /** As in light; review with the dark design */
66
77
  --oh-focus-ring-color: var(--oh-color-honey-400); /** Opaque, as in light */
67
78
  }
@@ -1,5 +1,9 @@
1
1
  {
2
2
  "$description": "Dark Theme — warm cocoa base, cozy evening Orange Halo. Overrides tier 2 only; every colour references the palette. Applies when data-theme=\"dark\" is set.",
3
+ "grid": {
4
+ "$description": "The brand's layout grid. Spacing is multiples of half a unit; type sizes and line heights sit on it (see style-dictionary.config.js)",
5
+ "unit": "8px"
6
+ },
3
7
  "color": {
4
8
  "$description": "Warm palette with nostalgic character. Neutrals are always warm; blue is the deliberate accent.",
5
9
  "orange": {
@@ -149,7 +153,12 @@
149
153
  "overlay": "#0f0c0ab3",
150
154
  "disabled": "#352e28",
151
155
  "hover": "#4a3f33",
152
- "activePressed": "#352e28"
156
+ "activePressed": "#352e28",
157
+ "featuredStart": "#fffbf5",
158
+ "featuredMid": "#fdf6ee",
159
+ "featuredEnd": "#f8efe4",
160
+ "sheen": "#ffffff80",
161
+ "backdrop": "#3d322999"
153
162
  },
154
163
  "border": {
155
164
  "$description": "Border colors — visible and intentional",
@@ -159,7 +168,9 @@
159
168
  "strong": "#a09080",
160
169
  "hover": "#c9c1b4",
161
170
  "disabled": "#4a3f33",
162
- "brand": "#e8a8384d"
171
+ "brand": "#e8a8384d",
172
+ "brandHover": "#c5430059",
173
+ "divider": "#e2d5c899"
163
174
  },
164
175
  "text": {
165
176
  "$description": "Text colors — calm and readable, not stark",
@@ -187,16 +198,16 @@
187
198
  "mono": "'JetBrains Mono', 'Fira Code', ui-monospace, monospace"
188
199
  },
189
200
  "size": {
190
- "$description": "Slightly expressive type scale",
201
+ "$description": "Type scale on the brand's grid (grid.unit): every size is a multiple of half a unit. Strict: no size between xs and base",
191
202
  "xs": "0.75rem",
192
- "sm": "0.875rem",
203
+ "sm": "0.75rem",
193
204
  "base": "1rem",
194
- "lg": "1.125rem",
195
- "xl": "1.25rem",
196
- "2xl": "1.625rem",
205
+ "lg": "1.25rem",
206
+ "xl": "1.5rem",
207
+ "2xl": "1.75rem",
197
208
  "3xl": "2rem",
198
- "4xl": "2.625rem",
199
- "5xl": "3.25rem"
209
+ "4xl": "2.5rem",
210
+ "5xl": "3rem"
200
211
  },
201
212
  "weight": {
202
213
  "$description": "Font weights for hierarchy",
@@ -224,42 +235,6 @@
224
235
  "widest": "0.05em"
225
236
  }
226
237
  },
227
- "spacing": {
228
- "0": "0",
229
- "1": "0.25rem",
230
- "2": "0.5rem",
231
- "3": "0.75rem",
232
- "4": "1rem",
233
- "5": "1.25rem",
234
- "6": "1.5rem",
235
- "7": "1.75rem",
236
- "8": "2rem",
237
- "10": "2.5rem",
238
- "12": "3rem",
239
- "16": "4rem",
240
- "20": "5rem",
241
- "$description": "Generous spacing — breathing room, not dense",
242
- "px": "1px",
243
- "0-5": "0.125rem",
244
- "1-5": "0.375rem",
245
- "2-5": "0.625rem",
246
- "3-5": "0.875rem",
247
- "layout": {
248
- "$description": "Generous layout spacing",
249
- "page": "1.5rem",
250
- "section": "3rem",
251
- "stack": "1.25rem",
252
- "inline": "1rem"
253
- },
254
- "component": {
255
- "$description": "Component-level spacing",
256
- "xs": "0.375rem",
257
- "sm": "0.625rem",
258
- "md": "0.875rem",
259
- "lg": "1.25rem",
260
- "xl": "1.75rem"
261
- }
262
- },
263
238
  "radius": {
264
239
  "$description": "Friendly and soft — not sharp, not overly pill-shaped",
265
240
  "none": "0",
@@ -283,12 +258,31 @@
283
258
  "primary": "#e8c4a0",
284
259
  "secondary": "#d4c4b0",
285
260
  "accent": "#a0b4c8",
286
- "error": "#b545404d"
261
+ "error": "#b545404d",
262
+ "driftwood": "#6b5d4d26",
263
+ "driftwoodHover": "#6b5d4d33",
264
+ "driftwoodDeep": "#6b5d4d40",
265
+ "walnut": "#3d322926"
266
+ },
267
+ "layered": {
268
+ "$description": "Layered surface shadows: soft drop shadows with a top highlight, so cards feel like physical objects",
269
+ "flat": "0 1px 2px rgba(61, 50, 41, 0.04), inset 0 1px 0 rgba(255, 255, 255, 0.6)",
270
+ "raised": "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)",
271
+ "lifted": "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)",
272
+ "pressed": "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)",
273
+ "focused": "0 2px 6px rgba(61, 50, 41, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.8)",
274
+ "sunlit": "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)",
275
+ "sunlitLifted": "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)",
276
+ "sunlitFocused": "0 2px 8px rgba(139, 69, 19, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.9)"
287
277
  },
288
278
  "primary": "#6b4815",
289
279
  "secondary": "#1f1a17",
290
280
  "accent": "#253850",
291
- "error": "#3d2a29"
281
+ "error": "#3d2a29",
282
+ "neutral": "#6b5d4d26",
283
+ "neutralHover": "#6b5d4d33",
284
+ "overlay": "#6b5d4d40",
285
+ "field": "#3d322926"
292
286
  },
293
287
  "gradient": {
294
288
  "$description": "Soft, nostalgic gradients — never high-contrast or flashy",
@@ -364,6 +358,42 @@
364
358
  "chunky": "2.5px"
365
359
  }
366
360
  },
361
+ "spacing": {
362
+ "0": "0",
363
+ "1": "0.25rem",
364
+ "2": "0.5rem",
365
+ "3": "0.75rem",
366
+ "4": "1rem",
367
+ "5": "1.25rem",
368
+ "6": "1.5rem",
369
+ "7": "1.75rem",
370
+ "8": "2rem",
371
+ "10": "2.5rem",
372
+ "12": "3rem",
373
+ "16": "4rem",
374
+ "20": "5rem",
375
+ "$description": "Generous spacing — breathing room, not dense. Multiples of half the brand's grid.unit (spacing.1 = half a unit, spacing.2 = one unit), computed per brand at build time by style-dictionary.config.js; the values written here are what an 8px grid gives. The x-5 steps fall between half-units: avoid them in new work",
376
+ "px": "1px",
377
+ "0-5": "0.125rem",
378
+ "1-5": "0.375rem",
379
+ "2-5": "0.625rem",
380
+ "3-5": "0.875rem",
381
+ "layout": {
382
+ "$description": "Generous layout spacing",
383
+ "page": "1.5rem",
384
+ "section": "3rem",
385
+ "stack": "1.25rem",
386
+ "inline": "1rem"
387
+ },
388
+ "component": {
389
+ "$description": "Component-level spacing",
390
+ "xs": "0.375rem",
391
+ "sm": "0.625rem",
392
+ "md": "0.875rem",
393
+ "lg": "1.25rem",
394
+ "xl": "1.75rem"
395
+ }
396
+ },
367
397
  "size": {
368
398
  "$description": "Fixed layout sizes: content widths and viewport breakpoints",
369
399
  "container": {
@@ -397,9 +427,9 @@
397
427
  "heading": {
398
428
  "fontFamily": "'Bricolage Grotesque', 'General Sans', sans-serif",
399
429
  "h1": {
400
- "fontSize": "2.625rem",
430
+ "fontSize": "2.5rem",
401
431
  "fontWeight": "700",
402
- "lineHeight": 1.25,
432
+ "lineHeight": 1.2,
403
433
  "letterSpacing": "-0.02em"
404
434
  },
405
435
  "h2": {
@@ -409,21 +439,21 @@
409
439
  "letterSpacing": "-0.01em"
410
440
  },
411
441
  "h3": {
412
- "fontSize": "1.625rem",
442
+ "fontSize": "1.75rem",
413
443
  "fontWeight": "600",
414
- "lineHeight": 1.35,
444
+ "lineHeight": 1.4286,
415
445
  "letterSpacing": "-0.01em"
416
446
  },
417
447
  "h4": {
418
- "fontSize": "1.25rem",
448
+ "fontSize": "1.5rem",
419
449
  "fontWeight": "600",
420
- "lineHeight": 1.35,
450
+ "lineHeight": 1.3333,
421
451
  "letterSpacing": "0"
422
452
  },
423
453
  "h5": {
424
- "fontSize": "1.125rem",
454
+ "fontSize": "1.25rem",
425
455
  "fontWeight": "500",
426
- "lineHeight": 1.5
456
+ "lineHeight": 1.6
427
457
  },
428
458
  "h6": {
429
459
  "fontSize": "1rem",
@@ -435,14 +465,14 @@
435
465
  "fontFamily": "'Bricolage Grotesque', 'General Sans', -apple-system, BlinkMacSystemFont, sans-serif",
436
466
  "xl": {
437
467
  "$description": "Lead paragraphs and hero subtitles",
438
- "fontSize": "1.25rem",
468
+ "fontSize": "1.5rem",
439
469
  "fontWeight": "400",
440
- "lineHeight": 1.5
470
+ "lineHeight": 1.6667
441
471
  },
442
472
  "lg": {
443
- "fontSize": "1.125rem",
473
+ "fontSize": "1.25rem",
444
474
  "fontWeight": "400",
445
- "lineHeight": 1.65
475
+ "lineHeight": 1.6
446
476
  },
447
477
  "base": {
448
478
  "fontSize": "1rem",
@@ -450,22 +480,22 @@
450
480
  "lineHeight": 1.5
451
481
  },
452
482
  "sm": {
453
- "fontSize": "0.875rem",
483
+ "fontSize": "0.75rem",
454
484
  "fontWeight": "400",
455
- "lineHeight": 1.5,
485
+ "lineHeight": 1.6667,
456
486
  "letterSpacing": "0.01em"
457
487
  },
458
488
  "xs": {
459
489
  "fontSize": "0.75rem",
460
490
  "fontWeight": "400",
461
- "lineHeight": 1.5,
491
+ "lineHeight": 1.6667,
462
492
  "letterSpacing": "0.01em"
463
493
  }
464
494
  },
465
495
  "label": {
466
496
  "fontFamily": "'Bricolage Grotesque', 'General Sans', -apple-system, BlinkMacSystemFont, sans-serif",
467
497
  "base": {
468
- "fontSize": "0.875rem",
498
+ "fontSize": "1rem",
469
499
  "fontWeight": "500",
470
500
  "lineHeight": 1.5,
471
501
  "letterSpacing": "0.01em"
@@ -473,7 +503,7 @@
473
503
  "sm": {
474
504
  "fontSize": "0.75rem",
475
505
  "fontWeight": "500",
476
- "lineHeight": 1.5,
506
+ "lineHeight": 1.6667,
477
507
  "letterSpacing": "0.01em"
478
508
  }
479
509
  },
@@ -491,8 +521,8 @@
491
521
  "letterSpacing": "0.01em",
492
522
  "fontSize": {
493
523
  "sm": "1rem",
494
- "md": "1.125rem",
495
- "lg": "1.25rem"
524
+ "md": "1.25rem",
525
+ "lg": "1.5rem"
496
526
  }
497
527
  },
498
528
  "emphasis": {
@@ -501,7 +531,7 @@
501
531
  },
502
532
  "code": {
503
533
  "fontFamily": "'JetBrains Mono', 'Fira Code', ui-monospace, monospace",
504
- "fontSize": "0.875rem",
534
+ "fontSize": "1rem",
505
535
  "lineHeight": 1.5
506
536
  }
507
537
  },
@@ -531,7 +561,47 @@
531
561
  "medium": "0 4px 16px rgba(0, 0, 0, 0.3)",
532
562
  "strong": "0 8px 24px rgba(0, 0, 0, 0.4)",
533
563
  "glow": "0 0 0 3px rgba(197, 67, 0, 0.2), 0 0 12px rgba(197, 67, 0, 0.1)",
534
- "inset": "inset 0 1px 3px rgba(0, 0, 0, 0.3)"
564
+ "inset": "inset 0 1px 3px rgba(0, 0, 0, 0.3)",
565
+ "surface": {
566
+ "$description": "Card surfaces, by state. Featured is the sunlit card",
567
+ "flat": "0 1px 2px rgba(61, 50, 41, 0.04), inset 0 1px 0 rgba(255, 255, 255, 0.6)",
568
+ "raised": "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)",
569
+ "lifted": "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)",
570
+ "pressed": "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)",
571
+ "focused": "0 2px 6px rgba(61, 50, 41, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.8)",
572
+ "featured": "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)",
573
+ "featuredLifted": "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)",
574
+ "featuredFocused": "0 2px 8px rgba(139, 69, 19, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.9)"
575
+ },
576
+ "offset": {
577
+ "$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",
578
+ "xs": "1px",
579
+ "sm": "2px",
580
+ "md": "3px",
581
+ "lg": "4px",
582
+ "xl": "5px",
583
+ "2xl": "6px"
584
+ }
585
+ },
586
+ "lift": {
587
+ "$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",
588
+ "hoverSm": "-1px",
589
+ "hoverMd": "-2px",
590
+ "pressSm": "1px",
591
+ "pressMd": "2px"
592
+ },
593
+ "stroke": {
594
+ "$description": "Border widths by role",
595
+ "control": "2.5px",
596
+ "surface": "1px",
597
+ "divider": "1px"
598
+ },
599
+ "decoration": {
600
+ "$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",
601
+ "underlineThickness": "2px",
602
+ "underlineFocusThickness": "3px",
603
+ "underlineDash": "4px",
604
+ "underlinePeriod": "8px"
535
605
  },
536
606
  "focus": {
537
607
  "$description": "Warm, friendly focus ring",
@@ -566,14 +636,14 @@
566
636
  "gap": "0.5rem"
567
637
  },
568
638
  "md": {
569
- "fontSize": "1.125rem",
639
+ "fontSize": "1.25rem",
570
640
  "paddingX": "1.5rem",
571
641
  "paddingY": "0.75rem",
572
642
  "minHeight": "48px",
573
643
  "gap": "0.5rem"
574
644
  },
575
645
  "lg": {
576
- "fontSize": "1.25rem",
646
+ "fontSize": "1.5rem",
577
647
  "paddingX": "2rem",
578
648
  "paddingY": "1rem",
579
649
  "minHeight": "56px",
@@ -619,7 +689,7 @@
619
689
  "$description": "Input — chunky border, inset shadow, tactile feel",
620
690
  "base": {
621
691
  "fontFamily": "'Bricolage Grotesque', 'General Sans', -apple-system, BlinkMacSystemFont, sans-serif",
622
- "fontSize": "1.125rem",
692
+ "fontSize": "1.25rem",
623
693
  "lineHeight": 1.5,
624
694
  "borderRadius": "10px",
625
695
  "borderWidth": "2.5px",
@@ -716,6 +786,9 @@
716
786
  },
717
787
  "progress": {
718
788
  "$description": "Progress — chunky pill track",
789
+ "track": {
790
+ "insetShadow": "#0000000f"
791
+ },
719
792
  "inverse": {
720
793
  "$description": "On brand/accent backgrounds (e.g. journey hero). Fill is cream so it reads at 3.7:1 against the track.",
721
794
  "trackBackground": "#ffffff26",
@@ -778,6 +851,7 @@
778
851
  },
779
852
  "closeButton": {
780
853
  "$description": "Icon-only close buttons in alerts and modals",
781
- "backgroundHover": "#00000014"
854
+ "backgroundHover": "#00000014",
855
+ "shadowHover": "#00000026"
782
856
  }
783
857
  }