@oxyhq/bloom 0.74.3 → 0.74.5

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.
Files changed (59) hide show
  1. package/lib/commonjs/design-tokens/theme.css +4 -0
  2. package/lib/commonjs/fab/Fab.js +4 -4
  3. package/lib/commonjs/fab/Fab.js.map +1 -1
  4. package/lib/commonjs/fab/Fab.web.js +6 -6
  5. package/lib/commonjs/fab/Fab.web.js.map +1 -1
  6. package/lib/commonjs/theme/adaptive-colors.js +10 -0
  7. package/lib/commonjs/theme/adaptive-colors.js.map +1 -1
  8. package/lib/commonjs/theme/build-theme-from-seed.js +4 -0
  9. package/lib/commonjs/theme/build-theme-from-seed.js.map +1 -1
  10. package/lib/commonjs/theme/build-theme.js +4 -0
  11. package/lib/commonjs/theme/build-theme.js.map +1 -1
  12. package/lib/commonjs/theme/color-policy.js +18 -0
  13. package/lib/commonjs/theme/color-policy.js.map +1 -1
  14. package/lib/commonjs/theme/token-registry.js +1 -1
  15. package/lib/commonjs/theme/token-registry.js.map +1 -1
  16. package/lib/module/design-tokens/theme.css +4 -0
  17. package/lib/module/fab/Fab.js +4 -4
  18. package/lib/module/fab/Fab.js.map +1 -1
  19. package/lib/module/fab/Fab.web.js +6 -6
  20. package/lib/module/fab/Fab.web.js.map +1 -1
  21. package/lib/module/theme/adaptive-colors.js +10 -0
  22. package/lib/module/theme/adaptive-colors.js.map +1 -1
  23. package/lib/module/theme/build-theme-from-seed.js +4 -0
  24. package/lib/module/theme/build-theme-from-seed.js.map +1 -1
  25. package/lib/module/theme/build-theme.js +4 -0
  26. package/lib/module/theme/build-theme.js.map +1 -1
  27. package/lib/module/theme/color-policy.js +18 -0
  28. package/lib/module/theme/color-policy.js.map +1 -1
  29. package/lib/module/theme/token-registry.js +1 -1
  30. package/lib/module/theme/token-registry.js.map +1 -1
  31. package/lib/typescript/commonjs/theme/adaptive-colors.d.ts.map +1 -1
  32. package/lib/typescript/commonjs/theme/build-theme-from-seed.d.ts.map +1 -1
  33. package/lib/typescript/commonjs/theme/build-theme.d.ts.map +1 -1
  34. package/lib/typescript/commonjs/theme/color-policy.d.ts.map +1 -1
  35. package/lib/typescript/commonjs/theme/token-registry.d.ts +1 -1
  36. package/lib/typescript/commonjs/theme/token-registry.d.ts.map +1 -1
  37. package/lib/typescript/commonjs/theme/types.d.ts +9 -0
  38. package/lib/typescript/commonjs/theme/types.d.ts.map +1 -1
  39. package/lib/typescript/module/theme/adaptive-colors.d.ts.map +1 -1
  40. package/lib/typescript/module/theme/build-theme-from-seed.d.ts.map +1 -1
  41. package/lib/typescript/module/theme/build-theme.d.ts.map +1 -1
  42. package/lib/typescript/module/theme/color-policy.d.ts.map +1 -1
  43. package/lib/typescript/module/theme/token-registry.d.ts +1 -1
  44. package/lib/typescript/module/theme/token-registry.d.ts.map +1 -1
  45. package/lib/typescript/module/theme/types.d.ts +9 -0
  46. package/lib/typescript/module/theme/types.d.ts.map +1 -1
  47. package/package.json +1 -1
  48. package/src/__tests__/theme.test.ts +4 -0
  49. package/src/design-tokens/theme.css +4 -0
  50. package/src/fab/Fab.tsx +2 -2
  51. package/src/fab/Fab.web.tsx +2 -2
  52. package/src/theme/__tests__/__fixtures__/golden-resolved-tokens.json +104 -0
  53. package/src/theme/__tests__/__snapshots__/visual-gallery.test.tsx.snap +104 -0
  54. package/src/theme/adaptive-colors.ts +10 -0
  55. package/src/theme/build-theme-from-seed.ts +4 -0
  56. package/src/theme/build-theme.ts +4 -0
  57. package/src/theme/color-policy.ts +18 -0
  58. package/src/theme/token-registry.ts +4 -0
  59. package/src/theme/types.ts +9 -0
@@ -27,10 +27,14 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
27
27
  "primarySubtleForeground": "rgb(255 221 184)",
28
28
  "secondary": "rgb(0 213 255)",
29
29
  "secondaryForeground": "rgb(0 0 0)",
30
+ "secondaryStrong": "rgb(0 127 153)",
31
+ "secondaryStrongForeground": "rgb(255 255 255)",
30
32
  "shadow": "rgba(0, 0, 0, 0.3)",
31
33
  "success": "rgb(16 185 129)",
32
34
  "tertiary": "rgb(111 128 255)",
33
35
  "tertiaryForeground": "rgb(0 0 0)",
36
+ "tertiaryStrong": "rgb(78 98 255)",
37
+ "tertiaryStrongForeground": "rgb(255 255 255)",
34
38
  "text": "rgb(244 223 203)",
35
39
  "textSecondary": "rgb(217 195 171)",
36
40
  "textTertiary": "rgb(161 141 120)",
@@ -62,10 +66,14 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
62
66
  "primarySubtleForeground": "rgb(101 62 0)",
63
67
  "secondary": "rgb(0 117 141)",
64
68
  "secondaryForeground": "rgb(255 255 255)",
69
+ "secondaryStrong": "rgb(0 117 141)",
70
+ "secondaryStrongForeground": "rgb(255 255 255)",
65
71
  "shadow": "rgba(0, 0, 0, 0.1)",
66
72
  "success": "rgb(0 122 83)",
67
73
  "tertiary": "rgb(61 84 255)",
68
74
  "tertiaryForeground": "rgb(255 255 255)",
75
+ "tertiaryStrong": "rgb(61 84 255)",
76
+ "tertiaryStrongForeground": "rgb(255 255 255)",
69
77
  "text": "rgb(36 26 14)",
70
78
  "textSecondary": "rgb(84 68 50)",
71
79
  "textTertiary": "rgb(135 116 96)",
@@ -97,10 +105,14 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
97
105
  "primarySubtleForeground": "rgb(207 229 255)",
98
106
  "secondary": "rgb(247 81 63)",
99
107
  "secondaryForeground": "rgb(0 0 0)",
108
+ "secondaryStrong": "rgb(214 58 43)",
109
+ "secondaryStrongForeground": "rgb(255 255 255)",
100
110
  "shadow": "rgba(0, 0, 0, 0.3)",
101
111
  "success": "rgb(16 185 129)",
102
112
  "tertiary": "rgb(252 220 0)",
103
113
  "tertiaryForeground": "rgb(0 0 0)",
114
+ "tertiaryStrong": "rgb(134 116 0)",
115
+ "tertiaryStrongForeground": "rgb(255 255 255)",
104
116
  "text": "rgb(220 227 238)",
105
117
  "textSecondary": "rgb(190 199 212)",
106
118
  "textTertiary": "rgb(136 146 158)",
@@ -132,10 +144,14 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
132
144
  "primarySubtleForeground": "rgb(0 74 120)",
133
145
  "secondary": "rgb(200 48 35)",
134
146
  "secondaryForeground": "rgb(255 255 255)",
147
+ "secondaryStrong": "rgb(200 48 35)",
148
+ "secondaryStrongForeground": "rgb(255 255 255)",
135
149
  "shadow": "rgba(0, 0, 0, 0.1)",
136
150
  "success": "rgb(0 122 83)",
137
151
  "tertiary": "rgb(123 106 0)",
138
152
  "tertiaryForeground": "rgb(255 255 255)",
153
+ "tertiaryStrong": "rgb(123 106 0)",
154
+ "tertiaryStrongForeground": "rgb(255 255 255)",
139
155
  "text": "rgb(21 28 36)",
140
156
  "textSecondary": "rgb(62 72 82)",
141
157
  "textTertiary": "rgb(111 120 132)",
@@ -167,10 +183,14 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
167
183
  "primarySubtleForeground": "rgb(138 254 0)",
168
184
  "secondary": "rgb(122 125 255)",
169
185
  "secondaryForeground": "rgb(0 0 0)",
186
+ "secondaryStrong": "rgb(92 94 255)",
187
+ "secondaryStrongForeground": "rgb(255 255 255)",
170
188
  "shadow": "rgba(0, 0, 0, 0.3)",
171
189
  "success": "rgb(16 185 129)",
172
190
  "tertiary": "rgb(232 76 188)",
173
191
  "tertiaryForeground": "rgb(0 0 0)",
192
+ "tertiaryStrong": "rgb(203 50 163)",
193
+ "tertiaryStrongForeground": "rgb(255 255 255)",
174
194
  "text": "rgb(223 229 211)",
175
195
  "textSecondary": "rgb(193 202 180)",
176
196
  "textTertiary": "rgb(139 148 128)",
@@ -202,10 +222,14 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
202
222
  "primarySubtleForeground": "rgb(40 80 0)",
203
223
  "secondary": "rgb(79 79 255)",
204
224
  "secondaryForeground": "rgb(255 255 255)",
225
+ "secondaryStrong": "rgb(79 79 255)",
226
+ "secondaryStrongForeground": "rgb(255 255 255)",
205
227
  "shadow": "rgba(0, 0, 0, 0.1)",
206
228
  "success": "rgb(0 122 83)",
207
229
  "tertiary": "rgb(190 36 152)",
208
230
  "tertiaryForeground": "rgb(255 255 255)",
231
+ "tertiaryStrong": "rgb(190 36 152)",
232
+ "tertiaryStrongForeground": "rgb(255 255 255)",
209
233
  "text": "rgb(24 29 18)",
210
234
  "textSecondary": "rgb(65 73 57)",
211
235
  "textTertiary": "rgb(114 122 103)",
@@ -237,10 +261,14 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
237
261
  "primarySubtleForeground": "rgb(71 255 184)",
238
262
  "secondary": "rgb(247 76 101)",
239
263
  "secondaryForeground": "rgb(0 0 0)",
264
+ "secondaryStrong": "rgb(216 52 80)",
265
+ "secondaryStrongForeground": "rgb(255 255 255)",
240
266
  "shadow": "rgba(0, 0, 0, 0.3)",
241
267
  "success": "rgb(16 185 129)",
242
268
  "tertiary": "rgb(189 94 255)",
243
269
  "tertiaryForeground": "rgb(0 0 0)",
270
+ "tertiaryStrong": "rgb(165 64 234)",
271
+ "tertiaryStrongForeground": "rgb(255 255 255)",
244
272
  "text": "rgb(217 230 220)",
245
273
  "textSecondary": "rgb(186 203 191)",
246
274
  "textTertiary": "rgb(132 149 138)",
@@ -272,10 +300,14 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
272
300
  "primarySubtleForeground": "rgb(0 82 54)",
273
301
  "secondary": "rgb(202 41 70)",
274
302
  "secondaryForeground": "rgb(255 255 255)",
303
+ "secondaryStrong": "rgb(202 41 70)",
304
+ "secondaryStrongForeground": "rgb(255 255 255)",
275
305
  "shadow": "rgba(0, 0, 0, 0.1)",
276
306
  "success": "rgb(0 122 83)",
277
307
  "tertiary": "rgb(154 51 223)",
278
308
  "tertiaryForeground": "rgb(255 255 255)",
309
+ "tertiaryStrong": "rgb(154 51 223)",
310
+ "tertiaryStrongForeground": "rgb(255 255 255)",
279
311
  "text": "rgb(19 30 24)",
280
312
  "textSecondary": "rgb(59 74 65)",
281
313
  "textTertiary": "rgb(107 123 113)",
@@ -307,10 +339,14 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
307
339
  "primarySubtleForeground": "rgb(0 254 229)",
308
340
  "secondary": "rgb(244 86 35)",
309
341
  "secondaryForeground": "rgb(0 0 0)",
342
+ "secondaryStrong": "rgb(212 63 10)",
343
+ "secondaryStrongForeground": "rgb(255 255 255)",
310
344
  "shadow": "rgba(0, 0, 0, 0.3)",
311
345
  "success": "rgb(16 185 129)",
312
346
  "tertiary": "rgb(227 85 221)",
313
347
  "tertiaryForeground": "rgb(0 0 0)",
348
+ "tertiaryStrong": "rgb(193 53 190)",
349
+ "tertiaryStrongForeground": "rgb(255 255 255)",
314
350
  "text": "rgb(215 230 225)",
315
351
  "textSecondary": "rgb(184 202 198)",
316
352
  "textTertiary": "rgb(130 148 144)",
@@ -342,10 +378,14 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
342
378
  "primarySubtleForeground": "rgb(0 80 72)",
343
379
  "secondary": "rgb(197 54 0)",
344
380
  "secondaryForeground": "rgb(255 255 255)",
381
+ "secondaryStrong": "rgb(197 54 0)",
382
+ "secondaryStrongForeground": "rgb(255 255 255)",
345
383
  "shadow": "rgba(0, 0, 0, 0.1)",
346
384
  "success": "rgb(0 122 83)",
347
385
  "tertiary": "rgb(181 39 179)",
348
386
  "tertiaryForeground": "rgb(255 255 255)",
387
+ "tertiaryStrong": "rgb(181 39 179)",
388
+ "tertiaryStrongForeground": "rgb(255 255 255)",
349
389
  "text": "rgb(17 30 28)",
350
390
  "textSecondary": "rgb(57 74 71)",
351
391
  "textTertiary": "rgb(105 123 119)",
@@ -377,10 +417,14 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
377
417
  "primarySubtleForeground": "rgb(255 219 202)",
378
418
  "secondary": "rgb(0 255 254)",
379
419
  "secondaryForeground": "rgb(0 0 0)",
420
+ "secondaryStrong": "rgb(0 130 130)",
421
+ "secondaryStrongForeground": "rgb(255 255 255)",
380
422
  "shadow": "rgba(0, 0, 0, 0.3)",
381
423
  "success": "rgb(16 185 129)",
382
424
  "tertiary": "rgb(114 127 255)",
383
425
  "tertiaryForeground": "rgb(0 0 0)",
426
+ "tertiaryStrong": "rgb(81 97 255)",
427
+ "tertiaryStrongForeground": "rgb(255 255 255)",
384
428
  "text": "rgb(248 221 209)",
385
429
  "textSecondary": "rgb(223 192 178)",
386
430
  "textTertiary": "rgb(166 139 126)",
@@ -412,10 +456,14 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
412
456
  "primarySubtleForeground": "rgb(120 50 0)",
413
457
  "secondary": "rgb(0 119 119)",
414
458
  "secondaryForeground": "rgb(255 255 255)",
459
+ "secondaryStrong": "rgb(0 119 119)",
460
+ "secondaryStrongForeground": "rgb(255 255 255)",
415
461
  "shadow": "rgba(0, 0, 0, 0.1)",
416
462
  "success": "rgb(0 122 83)",
417
463
  "tertiary": "rgb(66 83 255)",
418
464
  "tertiaryForeground": "rgb(255 255 255)",
465
+ "tertiaryStrong": "rgb(66 83 255)",
466
+ "tertiaryStrongForeground": "rgb(255 255 255)",
419
467
  "text": "rgb(38 24 17)",
420
468
  "textSecondary": "rgb(87 66 56)",
421
469
  "textTertiary": "rgb(139 114 102)",
@@ -447,10 +495,14 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
447
495
  "primarySubtleForeground": "rgb(251 215 255)",
448
496
  "secondary": "rgb(0 253 200)",
449
497
  "secondaryForeground": "rgb(0 0 0)",
498
+ "secondaryStrong": "rgb(0 132 104)",
499
+ "secondaryStrongForeground": "rgb(255 255 255)",
450
500
  "shadow": "rgba(0, 0, 0, 0.3)",
451
501
  "success": "rgb(16 185 129)",
452
502
  "tertiary": "rgb(142 249 86)",
453
503
  "tertiaryForeground": "rgb(0 0 0)",
504
+ "tertiaryStrong": "rgb(53 133 0)",
505
+ "tertiaryStrongForeground": "rgb(255 255 255)",
454
506
  "text": "rgb(237 222 235)",
455
507
  "textSecondary": "rgb(210 193 210)",
456
508
  "textTertiary": "rgb(155 140 155)",
@@ -482,10 +534,14 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
482
534
  "primarySubtleForeground": "rgb(119 0 154)",
483
535
  "secondary": "rgb(0 121 95)",
484
536
  "secondaryForeground": "rgb(255 255 255)",
537
+ "secondaryStrong": "rgb(0 121 95)",
538
+ "secondaryStrongForeground": "rgb(255 255 255)",
485
539
  "shadow": "rgba(0, 0, 0, 0.1)",
486
540
  "success": "rgb(0 122 83)",
487
541
  "tertiary": "rgb(48 122 0)",
488
542
  "tertiaryForeground": "rgb(255 255 255)",
543
+ "tertiaryStrong": "rgb(48 122 0)",
544
+ "tertiaryStrongForeground": "rgb(255 255 255)",
489
545
  "text": "rgb(33 25 34)",
490
546
  "textSecondary": "rgb(79 67 80)",
491
547
  "textTertiary": "rgb(129 115 129)",
@@ -517,10 +573,14 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
517
573
  "primarySubtleForeground": "rgb(255 217 228)",
518
574
  "secondary": "rgb(0 237 255)",
519
575
  "secondaryForeground": "rgb(0 0 0)",
576
+ "secondaryStrong": "rgb(0 129 139)",
577
+ "secondaryStrongForeground": "rgb(255 255 255)",
520
578
  "shadow": "rgba(0, 0, 0, 0.3)",
521
579
  "success": "rgb(16 185 129)",
522
580
  "tertiary": "rgb(100 250 110)",
523
581
  "tertiaryForeground": "rgb(0 0 0)",
582
+ "tertiaryStrong": "rgb(0 135 37)",
583
+ "tertiaryStrongForeground": "rgb(255 255 255)",
524
584
  "text": "rgb(245 220 227)",
525
585
  "textSecondary": "rgb(219 191 200)",
526
586
  "textTertiary": "rgb(163 138 146)",
@@ -552,10 +612,14 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
552
612
  "primarySubtleForeground": "rgb(140 0 83)",
553
613
  "secondary": "rgb(0 118 127)",
554
614
  "secondaryForeground": "rgb(255 255 255)",
615
+ "secondaryStrong": "rgb(0 118 127)",
616
+ "secondaryStrongForeground": "rgb(255 255 255)",
555
617
  "shadow": "rgba(0, 0, 0, 0.1)",
556
618
  "success": "rgb(0 122 83)",
557
619
  "tertiary": "rgb(0 124 33)",
558
620
  "tertiaryForeground": "rgb(255 255 255)",
621
+ "tertiaryStrong": "rgb(0 124 33)",
622
+ "tertiaryStrongForeground": "rgb(255 255 255)",
559
623
  "text": "rgb(37 24 29)",
560
624
  "textSecondary": "rgb(85 65 72)",
561
625
  "textTertiary": "rgb(136 113 120)",
@@ -587,10 +651,14 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
587
651
  "primarySubtleForeground": "rgb(233 221 255)",
588
652
  "secondary": "rgb(254 199 0)",
589
653
  "secondaryForeground": "rgb(0 0 0)",
654
+ "secondaryStrong": "rgb(144 112 0)",
655
+ "secondaryStrongForeground": "rgb(255 255 255)",
590
656
  "shadow": "rgba(0, 0, 0, 0.3)",
591
657
  "success": "rgb(16 185 129)",
592
658
  "tertiary": "rgb(118 245 94)",
593
659
  "tertiaryForeground": "rgb(0 0 0)",
660
+ "tertiaryStrong": "rgb(10 136 0)",
661
+ "tertiaryStrongForeground": "rgb(255 255 255)",
594
662
  "text": "rgb(231 224 238)",
595
663
  "textSecondary": "rgb(203 195 213)",
596
664
  "textTertiary": "rgb(148 142 159)",
@@ -622,10 +690,14 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
622
690
  "primarySubtleForeground": "rgb(86 0 202)",
623
691
  "secondary": "rgb(132 103 0)",
624
692
  "secondaryForeground": "rgb(255 255 255)",
693
+ "secondaryStrong": "rgb(132 103 0)",
694
+ "secondaryStrongForeground": "rgb(255 255 255)",
625
695
  "shadow": "rgba(0, 0, 0, 0.1)",
626
696
  "success": "rgb(0 122 83)",
627
697
  "tertiary": "rgb(9 124 0)",
628
698
  "tertiaryForeground": "rgb(255 255 255)",
699
+ "tertiaryStrong": "rgb(9 124 0)",
700
+ "tertiaryStrongForeground": "rgb(255 255 255)",
629
701
  "text": "rgb(29 26 36)",
630
702
  "textSecondary": "rgb(73 68 83)",
631
703
  "textTertiary": "rgb(122 116 132)",
@@ -657,10 +729,14 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
657
729
  "primarySubtleForeground": "rgb(255 218 215)",
658
730
  "secondary": "rgb(0 193 253)",
659
731
  "secondaryForeground": "rgb(0 0 0)",
732
+ "secondaryStrong": "rgb(0 126 166)",
733
+ "secondaryStrongForeground": "rgb(255 255 255)",
660
734
  "shadow": "rgba(0, 0, 0, 0.3)",
661
735
  "success": "rgb(16 185 129)",
662
736
  "tertiary": "rgb(90 250 115)",
663
737
  "tertiaryForeground": "rgb(0 0 0)",
738
+ "tertiaryStrong": "rgb(0 135 45)",
739
+ "tertiaryStrongForeground": "rgb(255 255 255)",
664
740
  "text": "rgb(249 220 217)",
665
741
  "textSecondary": "rgb(223 191 188)",
666
742
  "textTertiary": "rgb(167 138 136)",
@@ -692,10 +768,14 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
692
768
  "primarySubtleForeground": "rgb(147 0 19)",
693
769
  "secondary": "rgb(0 115 153)",
694
770
  "secondaryForeground": "rgb(255 255 255)",
771
+ "secondaryStrong": "rgb(0 115 153)",
772
+ "secondaryStrongForeground": "rgb(255 255 255)",
695
773
  "shadow": "rgba(0, 0, 0, 0.1)",
696
774
  "success": "rgb(0 122 83)",
697
775
  "tertiary": "rgb(0 124 41)",
698
776
  "tertiaryForeground": "rgb(255 255 255)",
777
+ "tertiaryStrong": "rgb(0 124 41)",
778
+ "tertiaryStrongForeground": "rgb(255 255 255)",
699
779
  "text": "rgb(39 24 23)",
700
780
  "textSecondary": "rgb(88 65 63)",
701
781
  "textTertiary": "rgb(140 113 110)",
@@ -727,10 +807,14 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
727
807
  "primarySubtleForeground": "rgb(201 230 255)",
728
808
  "secondary": "rgb(246 83 51)",
729
809
  "secondaryForeground": "rgb(0 0 0)",
810
+ "secondaryStrong": "rgb(213 61 30)",
811
+ "secondaryStrongForeground": "rgb(255 255 255)",
730
812
  "shadow": "rgba(0, 0, 0, 0.3)",
731
813
  "success": "rgb(16 185 129)",
732
814
  "tertiary": "rgb(253 200 0)",
733
815
  "tertiaryForeground": "rgb(0 0 0)",
816
+ "tertiaryStrong": "rgb(144 112 0)",
817
+ "tertiaryStrongForeground": "rgb(255 255 255)",
734
818
  "text": "rgb(219 227 237)",
735
819
  "textSecondary": "rgb(188 200 211)",
736
820
  "textTertiary": "rgb(134 146 157)",
@@ -762,10 +846,14 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
762
846
  "primarySubtleForeground": "rgb(0 76 110)",
763
847
  "secondary": "rgb(199 50 21)",
764
848
  "secondaryForeground": "rgb(255 255 255)",
849
+ "secondaryStrong": "rgb(199 50 21)",
850
+ "secondaryStrongForeground": "rgb(255 255 255)",
765
851
  "shadow": "rgba(0, 0, 0, 0.1)",
766
852
  "success": "rgb(0 122 83)",
767
853
  "tertiary": "rgb(132 103 0)",
768
854
  "tertiaryForeground": "rgb(255 255 255)",
855
+ "tertiaryStrong": "rgb(132 103 0)",
856
+ "tertiaryStrongForeground": "rgb(255 255 255)",
769
857
  "text": "rgb(20 29 35)",
770
858
  "textSecondary": "rgb(61 72 81)",
771
859
  "textTertiary": "rgb(109 120 131)",
@@ -797,10 +885,14 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
797
885
  "primarySubtleForeground": "rgb(154 240 255)",
798
886
  "secondary": "rgb(243 74 143)",
799
887
  "secondaryForeground": "rgb(0 0 0)",
888
+ "secondaryStrong": "rgb(213 49 120)",
889
+ "secondaryStrongForeground": "rgb(255 255 255)",
800
890
  "shadow": "rgba(0, 0, 0, 0.3)",
801
891
  "success": "rgb(16 185 129)",
802
892
  "tertiary": "rgb(253 144 0)",
803
893
  "tertiaryForeground": "rgb(0 0 0)",
894
+ "tertiaryStrong": "rgb(174 97 0)",
895
+ "tertiaryStrongForeground": "rgb(255 255 255)",
804
896
  "text": "rgb(215 229 232)",
805
897
  "textSecondary": "rgb(184 202 205)",
806
898
  "textTertiary": "rgb(131 148 151)",
@@ -832,10 +924,14 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
832
924
  "primarySubtleForeground": "rgb(0 79 88)",
833
925
  "secondary": "rgb(199 36 110)",
834
926
  "secondaryForeground": "rgb(255 255 255)",
927
+ "secondaryStrong": "rgb(199 36 110)",
928
+ "secondaryStrongForeground": "rgb(255 255 255)",
835
929
  "shadow": "rgba(0, 0, 0, 0.1)",
836
930
  "success": "rgb(0 122 83)",
837
931
  "tertiary": "rgb(160 89 0)",
838
932
  "tertiaryForeground": "rgb(255 255 255)",
933
+ "tertiaryStrong": "rgb(160 89 0)",
934
+ "tertiaryStrongForeground": "rgb(255 255 255)",
839
935
  "text": "rgb(17 29 32)",
840
936
  "textSecondary": "rgb(57 73 77)",
841
937
  "textTertiary": "rgb(105 122 125)",
@@ -867,10 +963,14 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
867
963
  "primarySubtleForeground": "rgb(255 223 154)",
868
964
  "secondary": "rgb(0 186 255)",
869
965
  "secondaryForeground": "rgb(0 0 0)",
966
+ "secondaryStrong": "rgb(0 125 173)",
967
+ "secondaryStrongForeground": "rgb(255 255 255)",
870
968
  "shadow": "rgba(0, 0, 0, 0.3)",
871
969
  "success": "rgb(16 185 129)",
872
970
  "tertiary": "rgb(149 115 255)",
873
971
  "tertiaryForeground": "rgb(0 0 0)",
972
+ "tertiaryStrong": "rgb(127 81 255)",
973
+ "tertiaryStrongForeground": "rgb(255 255 255)",
874
974
  "text": "rgb(238 225 202)",
875
975
  "textSecondary": "rgb(211 197 170)",
876
976
  "textTertiary": "rgb(156 143 119)",
@@ -902,10 +1002,14 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
902
1002
  "primarySubtleForeground": "rgb(90 67 0)",
903
1003
  "secondary": "rgb(0 114 158)",
904
1004
  "secondaryForeground": "rgb(255 255 255)",
1005
+ "secondaryStrong": "rgb(0 114 158)",
1006
+ "secondaryStrongForeground": "rgb(255 255 255)",
905
1007
  "shadow": "rgba(0, 0, 0, 0.1)",
906
1008
  "success": "rgb(0 122 83)",
907
1009
  "tertiary": "rgb(117 66 250)",
908
1010
  "tertiaryForeground": "rgb(255 255 255)",
1011
+ "tertiaryStrong": "rgb(117 66 250)",
1012
+ "tertiaryStrongForeground": "rgb(255 255 255)",
909
1013
  "text": "rgb(33 27 13)",
910
1014
  "textSecondary": "rgb(79 70 49)",
911
1015
  "textTertiary": "rgb(130 118 95)",
@@ -43,6 +43,12 @@ function getAndroidColors(): ThemeColors | null {
43
43
  secondaryForeground: c(d.onSecondary),
44
44
  tertiary: c(d.tertiary),
45
45
  tertiaryForeground: c(d.onTertiary),
46
+ // Adaptive palettes come from the OS, which has no peak-tone accent to
47
+ // deepen, so the solid-button member is the accent itself.
48
+ secondaryStrong: c(d.secondary),
49
+ secondaryStrongForeground: c(d.onSecondary),
50
+ tertiaryStrong: c(d.tertiary),
51
+ tertiaryStrongForeground: c(d.onTertiary),
46
52
  tint: c(d.primary),
47
53
  icon: c(d.onSurfaceVariant),
48
54
  iconActive: c(d.primary),
@@ -88,6 +94,10 @@ function getIOSColors(): ThemeColors | null {
88
94
  secondaryForeground: '#FFFFFF',
89
95
  tertiary: c(i.systemTeal),
90
96
  tertiaryForeground: '#FFFFFF',
97
+ secondaryStrong: c(i.systemPurple),
98
+ secondaryStrongForeground: '#FFFFFF',
99
+ tertiaryStrong: c(i.systemTeal),
100
+ tertiaryStrongForeground: '#FFFFFF',
91
101
  tint: c(i.systemBlue),
92
102
  icon: c(i.secondaryLabel),
93
103
  iconActive: c(i.systemBlue),
@@ -79,6 +79,10 @@ export function buildColorsFromSeed(
79
79
  secondaryForeground: g('secondary-foreground'),
80
80
  tertiary: g('tertiary'),
81
81
  tertiaryForeground: g('tertiary-foreground'),
82
+ secondaryStrong: g('secondary-strong'),
83
+ secondaryStrongForeground: g('secondary-strong-foreground'),
84
+ tertiaryStrong: g('tertiary-strong'),
85
+ tertiaryStrongForeground: g('tertiary-strong-foreground'),
82
86
 
83
87
  tint: g('primary'),
84
88
  icon: g('muted-foreground'),
@@ -78,6 +78,10 @@ function buildColorsFromPreset(
78
78
  secondaryForeground: g('secondary-foreground'),
79
79
  tertiary: g('tertiary'),
80
80
  tertiaryForeground: g('tertiary-foreground'),
81
+ secondaryStrong: g('secondary-strong'),
82
+ secondaryStrongForeground: g('secondary-strong-foreground'),
83
+ tertiaryStrong: g('tertiary-strong'),
84
+ tertiaryStrongForeground: g('tertiary-strong-foreground'),
81
85
 
82
86
  tint: g('primary'),
83
87
  icon: g('muted-foreground'),
@@ -115,6 +115,18 @@ const ACCENT_CHROMA = 80;
115
115
  const TEXT_TONE = { light: 40, dark: 80 } as const;
116
116
  const TEXT_CHROMA = 60;
117
117
 
118
+ /**
119
+ * The tone a `-strong` accent sits at: deep enough to carry a WHITE label.
120
+ *
121
+ * `--tertiary` is the vivid accent — a tile, a chip, a block of colour — and it
122
+ * sits at its hue's peak tone so a lime reads as lime. A solid BUTTON is a
123
+ * different job: it wants the same hue with white on it, which needs tone <= 49.
124
+ * One token cannot do both, exactly as `--primary` could not be both the fill
125
+ * and the legible text accent. Capping `--tertiary` itself to win the label back
126
+ * dulls every other use of it, so the button gets its own member instead.
127
+ */
128
+ const STRONG_TONE = 49;
129
+
118
130
  /** The `-subtle` tint is mixed from a BRIGHT tone at low alpha, never a dark one at high alpha. */
119
131
  const SUBTLE_SOURCE_TONE = 60;
120
132
  const SUBTLE_ALPHA = { light: 0.13, dark: 0.24 } as const;
@@ -318,6 +330,12 @@ export function buildPolicyTokens(
318
330
  vividPalette.tone(SUBTLE_SOURCE_TONE),
319
331
  isDark ? SUBTLE_ALPHA.dark : SUBTLE_ALPHA.light,
320
332
  );
333
+ // The solid-button member: same hue, deep enough for a white label in both
334
+ // modes. In light it lands on the ordinary fill tone, so a button that uses
335
+ // it there is identical to one that used the accent.
336
+ const strong = fillPair(fillPalette, isDark ? STRONG_TONE : LIGHT_FILL_TONE);
337
+ tokens[`--${role}-strong`] = strong.fill;
338
+ tokens[`--${role}-strong-foreground`] = strong.foreground;
321
339
  }
322
340
 
323
341
  // Categorical chart ramp: five hues spread evenly from the seed at one tone.
@@ -61,8 +61,12 @@ export const CANONICAL_TOKENS = [
61
61
  'primary-subtle',
62
62
  'secondary-text',
63
63
  'secondary-subtle',
64
+ 'secondary-strong',
65
+ 'secondary-strong-foreground',
64
66
  'tertiary-text',
65
67
  'tertiary-subtle',
68
+ 'tertiary-strong',
69
+ 'tertiary-strong-foreground',
66
70
 
67
71
  // --- semantic status, themed per mode ---
68
72
  // Replaces four frozen hexes that all FAILED AA under white text (warning at
@@ -25,6 +25,15 @@ export interface ThemeColors {
25
25
  /** The M3 tertiary accent, completing the primary/secondary/tertiary trio. */
26
26
  tertiary: string;
27
27
  tertiaryForeground: string;
28
+ /**
29
+ * The solid-BUTTON member of each accent: the same hue, deep enough to carry a
30
+ * white label. The accent itself sits at its hue's peak tone, where nothing but
31
+ * black survives — fine for a tile or a chip, wrong for a FAB.
32
+ */
33
+ secondaryStrong: string;
34
+ secondaryStrongForeground: string;
35
+ tertiaryStrong: string;
36
+ tertiaryStrongForeground: string;
28
37
 
29
38
  tint: string;
30
39
  icon: string;