@matteoaliano/forest-ui 0.8.9 → 1.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/theme.js CHANGED
@@ -39,10 +39,7 @@ __export(theme_exports, {
39
39
  fontFamilyMono: () => fontFamilyMono,
40
40
  fontSize: () => fontSize,
41
41
  fontWeight: () => fontWeight,
42
- forestAgencyPreset: () => forestAgencyPreset,
43
42
  forestAlkemyPlusPreset: () => forestAlkemyPlusPreset,
44
- forestExternalPreset: () => forestExternalPreset,
45
- forestInternalPreset: () => forestInternalPreset,
46
43
  forestTheme: () => forestTheme,
47
44
  forestThemeOptions: () => forestThemeOptions,
48
45
  getAvailablePresets: () => getAvailablePresets,
@@ -72,703 +69,87 @@ module.exports = __toCommonJS(theme_exports);
72
69
  // src/theme/buildTheme.ts
73
70
  var import_styles = require("@mui/material/styles");
74
71
 
75
- // src/theme/tokens.ts
76
- var violet = {
77
- 25: "#faf8ff",
78
- 50: "#f5f0ff",
79
- 100: "#ebe0ff",
80
- 200: "#d6c0ff",
81
- 300: "#b090ff",
82
- 400: "#9D5FFF",
83
- 500: "#7c4de6",
84
- 600: "#5b3acc",
85
- 700: "#3a1aad",
86
- 800: "#190a8a",
87
- 900: "#000066",
88
- 950: "#000033"
89
- };
90
- var magenta = {
91
- 25: "#fff8fd",
92
- 50: "#fff0fa",
93
- 100: "#ffe0f5",
94
- 200: "#ffc0eb",
95
- 300: "#ff90d8",
96
- 400: "#FF78F3",
97
- 500: "#e650d4",
98
- 600: "#cc28b5",
99
- 700: "#a3008c",
100
- 800: "#7a0066",
101
- 900: "#520044",
102
- 950: "#290022"
103
- };
104
- var gray = {
105
- 25: "#fdfcfc",
106
- 50: "#faf9f8",
107
- 100: "#f5f3f1",
108
- 200: "#e8e5e3",
109
- 300: "#d8d8dc",
110
- 400: "#a0a0a6",
111
- 500: "#71717a",
112
- 600: "#52525b",
113
- 700: "#3f3f46",
114
- 800: "#27272a",
115
- 900: "#18181b",
116
- 950: "#09090b"
117
- };
118
- var red = {
119
- 25: "#fff8f7",
120
- 50: "#fff0ee",
121
- 100: "#ffe0dd",
122
- 200: "#ffc0bb",
123
- 300: "#ff9090",
124
- 400: "#FF2821",
125
- 500: "#e61a1a",
126
- 600: "#cc1010",
127
- 700: "#a30808",
128
- 800: "#7a0000",
129
- 900: "#520000",
130
- 950: "#290000"
131
- };
132
- var misc = {
133
- teal: {
134
- 25: "#f6fefc",
135
- 50: "#f0fdf9",
136
- 100: "#ccfbef",
137
- 200: "#99f6e0",
138
- 300: "#5fe9d0",
139
- 400: "#2ed3b7",
140
- 500: "#15b79e",
141
- 600: "#0e9384",
142
- 700: "#107569",
143
- 800: "#125d56",
144
- 900: "#134e48",
145
- 950: "#0a2926"
146
- },
147
- orange: {
148
- 25: "#fefaf5",
149
- 50: "#fef6ee",
150
- 100: "#fdead7",
151
- 200: "#f9dbaf",
152
- 300: "#f7b27a",
153
- 400: "#f38744",
154
- 500: "#ef6820",
155
- 600: "#e04f16",
156
- 700: "#b93815",
157
- 800: "#932f19",
158
- 900: "#772917",
159
- 950: "#511c10"
160
- },
161
- purple: {
162
- 25: "#fafaff",
163
- 50: "#f4f3ff",
164
- 100: "#ebe9fe",
165
- 200: "#d9d6fe",
166
- 300: "#bdb4fe",
167
- 400: "#9b8afb",
168
- 500: "#7a5af8",
169
- 600: "#6938ef",
170
- 700: "#5925dc",
171
- 800: "#4a1fb8",
172
- 900: "#3e1c96",
173
- 950: "#27115f"
174
- },
175
- pink: {
176
- 25: "#fef6fb",
177
- 50: "#fdf2fa",
178
- 100: "#fce7f6",
179
- 200: "#fcceee",
180
- 300: "#faa7e0",
181
- 400: "#f670c7",
182
- 500: "#ee46bc",
183
- 600: "#dd2590",
184
- 700: "#c11574",
185
- 800: "#9e165f",
186
- 900: "#851651",
187
- 950: "#4e0d30"
188
- },
189
- fuchsia: {
190
- 25: "#fefaff",
191
- 50: "#fdf4ff",
192
- 100: "#fbe8ff",
193
- 200: "#f6d0fe",
194
- 300: "#eeaafd",
195
- 400: "#e478fa",
196
- 500: "#d444f1",
197
- 600: "#ba24d5",
198
- 700: "#9f1ab1",
199
- 800: "#821890",
200
- 900: "#6f1877",
201
- 950: "#47104c"
202
- },
203
- orangeDark: {
204
- 25: "#fff9f5",
205
- 50: "#fff4ed",
206
- 100: "#ffe6d5",
207
- 200: "#ffd6ae",
208
- 300: "#ff9c66",
209
- 400: "#ff692e",
210
- 500: "#ff4405",
211
- 600: "#e62e05",
212
- 700: "#bc1b06",
213
- 800: "#97180c",
214
- 900: "#771a0d",
215
- 950: "#57130a"
216
- },
217
- green: {
218
- 25: "#f6fef9",
219
- 50: "#edfcf2",
220
- 100: "#d3f8df",
221
- 200: "#aaf0c4",
222
- 300: "#73e2a3",
223
- 400: "#3ccb7f",
224
- 500: "#16b364",
225
- 600: "#099250",
226
- 700: "#087443",
227
- 800: "#095c37",
228
- 900: "#084c2e",
229
- 950: "#052e1c"
230
- },
231
- indigo: {
232
- 25: "#f5f8ff",
233
- 50: "#eef4ff",
234
- 100: "#e0eaff",
235
- 200: "#c7d7fe",
236
- 300: "#a4bcfd",
237
- 400: "#8098f9",
238
- 500: "#6172f3",
239
- 600: "#444ce7",
240
- 700: "#3538cd",
241
- 800: "#2d31a6",
242
- 900: "#2d3282",
243
- 950: "#1f235b"
244
- },
245
- rose: {
246
- 25: "#fff5f6",
247
- 50: "#fff1f3",
248
- 100: "#ffe4e8",
249
- 200: "#fecdd6",
250
- 300: "#fea3b4",
251
- 400: "#fd6f8e",
252
- 500: "#f63d68",
253
- 600: "#e31b54",
254
- 700: "#c01048",
255
- 800: "#a11043",
256
- 900: "#89123e",
257
- 950: "#510b24"
258
- },
259
- blueLight: {
260
- 25: "#f5fbff",
261
- 50: "#f0f9ff",
262
- 100: "#e0f2fe",
263
- 200: "#b9e6fe",
264
- 300: "#7cd4fd",
265
- 400: "#36bffa",
266
- 500: "#0ba5ec",
267
- 600: "#0086c9",
268
- 700: "#026aa2",
269
- 800: "#065986",
270
- 900: "#0b4a6f",
271
- 950: "#062c41"
272
- },
273
- cyan: {
274
- 25: "#f5feff",
275
- 50: "#ecfdff",
276
- 100: "#cff9fe",
277
- 200: "#a5f0fc",
278
- 300: "#67e3f9",
279
- 400: "#22ccee",
280
- 500: "#06aed4",
281
- 600: "#088ab2",
282
- 700: "#0e7090",
283
- 800: "#155b75",
284
- 900: "#164c63",
285
- 950: "#0d2d3a"
286
- }
287
- };
288
- var base = {
289
- white: "#ffffff",
290
- black: "#000000",
291
- transparent: "#ffffff00"
292
- };
293
- var error = {
294
- 25: "#fffbfa",
295
- 50: "#fef3f2",
296
- 100: "#fee4e2",
297
- 200: "#fecdca",
298
- 300: "#fda29b",
299
- 400: "#f97066",
300
- 500: "#f04438",
301
- 600: "#d92d20",
302
- 700: "#b42318",
303
- 800: "#912018",
304
- 900: "#7a271a",
305
- 950: "#55160c"
306
- };
307
- var warning = {
308
- 25: "#fffcf5",
309
- 50: "#fffaeb",
310
- 100: "#fef0c7",
311
- 200: "#fedf89",
312
- 300: "#fec84b",
313
- 400: "#fdb022",
314
- 500: "#f79009",
315
- 600: "#dc6803",
316
- 700: "#b54708",
317
- 800: "#93370d",
318
- 900: "#7a2e0e",
319
- 950: "#4e1d09"
320
- };
321
- var success = {
322
- 25: "#f6fef9",
323
- 50: "#ecfdf3",
324
- 100: "#dcfae6",
325
- 200: "#abefc6",
326
- 300: "#75e0a7",
327
- 400: "#47cd89",
328
- 500: "#17b26a",
329
- 600: "#079455",
330
- 700: "#067647",
331
- 800: "#085d3a",
332
- 900: "#074d31",
333
- 950: "#053321"
334
- };
335
- var info = {
336
- 25: "#f5faff",
337
- 50: "#eff8ff",
338
- 100: "#d1e9ff",
339
- 200: "#b2ddff",
340
- 300: "#84caff",
341
- 400: "#53b1fd",
342
- 500: "#2e90fa",
343
- 600: "#1570ef",
344
- 700: "#175cd3",
345
- 800: "#1849a9",
346
- 900: "#194185",
347
- 950: "#102a56"
348
- };
349
- var spacing = {
350
- none: 0,
351
- xxs: 2,
352
- xs: 4,
353
- sm: 6,
354
- md: 8,
355
- lg: 12,
356
- xl: 16,
357
- "2xl": 20,
358
- "3xl": 24,
359
- "4xl": 32,
360
- "5xl": 40,
361
- "6xl": 48,
362
- "7xl": 64,
363
- "8xl": 80,
364
- "9xl": 96,
365
- "10xl": 128,
366
- "11xl": 160
367
- };
368
- var radius = {
369
- none: 0,
370
- xxs: 2,
371
- xs: 4,
372
- sm: 6,
373
- md: 8,
374
- lg: 10,
375
- xl: 12,
376
- "2xl": 16,
377
- "3xl": 20,
378
- "4xl": 24,
379
- full: 9999
380
- };
381
- var shadows = {
382
- xs: "0px 1px 2px 0px #1018280d",
383
- sm: "0px 1px 3px 0px #1018281a, 0px 1px 2px 0px #1018280f",
384
- md: "0px 4px 8px -2px #1018281a, 0px 2px 4px -2px #1018280f",
385
- lg: "0px 12px 16px -4px #10182814, 0px 4px 6px -2px #10182808",
386
- xl: "0px 20px 24px -4px #10182814, 0px 8px 8px -4px #10182808",
387
- "2xl": "0px 24px 48px -12px #1018282e",
388
- "3xl": "0px 32px 64px -12px #10182824"
389
- };
390
- var focusRings = {
391
- brand: "0px 0px 0px 4px #7c4de63d",
392
- brandShadowXs: "0px 1px 2px 0px #1018280d, 0px 0px 0px 4px #7c4de63d",
393
- brandShadowSm: "0px 1px 3px 0px #1018281a, 0px 1px 2px 0px #1018280f, 0px 0px 0px 4px #7c4de63d",
394
- gray: "0px 0px 0px 4px #a0a0a624",
395
- grayShadowXs: "0px 1px 2px 0px #1018280d, 0px 0px 0px 4px #a0a0a624",
396
- grayShadowSm: "0px 1px 3px 0px #1018281a, 0px 1px 2px 0px #1018280f, 0px 0px 0px 4px #a0a0a624",
397
- error: "0px 0px 0px 4px #f044383d",
398
- errorShadowXs: "0px 1px 2px 0px #1018280d, 0px 0px 0px 4px #f044383d"
399
- };
400
- var fontFamily = '"Aeonik", sans-serif';
401
- var fontFamilyMono = '"Aeonik Mono", monospace';
402
- var fontSize = {
403
- xxs: 11,
404
- xs: 12,
405
- sm: 14,
406
- md: 16,
407
- lg: 18,
408
- xl: 20
409
- };
410
- var lineHeight = {
411
- xxs: "16px",
412
- xs: "18px",
413
- sm: "20px",
414
- md: "24px",
415
- lg: "28px",
416
- xl: "30px"
417
- };
418
- var fontWeight = {
419
- regular: 400,
420
- medium: 500,
421
- semibold: 600,
422
- bold: 700
423
- };
424
- var display = {
425
- "2xl": { fontSize: 72, lineHeight: "90px", letterSpacing: "-0.02em" },
426
- xl: { fontSize: 60, lineHeight: "72px", letterSpacing: "-0.02em" },
427
- lg: { fontSize: 48, lineHeight: "60px", letterSpacing: "-0.02em" },
428
- md: { fontSize: 36, lineHeight: "44px", letterSpacing: "-0.02em" },
429
- sm: { fontSize: 30, lineHeight: "38px" },
430
- xs: { fontSize: 24, lineHeight: "32px" }
431
- };
432
- var container = {
433
- maxWidthDesktop: 1280,
434
- paddingDesktop: 32,
435
- paddingMobile: 16
436
- };
437
- var widths = {
438
- xxs: 320,
439
- xs: 384,
440
- sm: 480,
441
- md: 560,
442
- lg: 640,
443
- xl: 768,
444
- "2xl": 1024,
445
- "3xl": 1280,
446
- "4xl": 1440,
447
- "5xl": 1600,
448
- "6xl": 1920
449
- };
450
- var text = {
451
- primary: gray[900],
452
- secondary: gray[700],
453
- secondaryHover: gray[800],
454
- tertiary: gray[600],
455
- tertiaryHover: gray[700],
456
- quaternary: gray[500],
457
- disabled: gray[500],
458
- placeholder: gray[500],
459
- placeholderSubtle: gray[300],
460
- white: base.white,
461
- brandPrimary: violet[900],
462
- brandSecondary: violet[700],
463
- brandTertiary: violet[600],
464
- brandTertiaryAlt: violet[600],
465
- primaryOnBrand: base.white,
466
- secondaryOnBrand: violet[200],
467
- tertiaryOnBrand: violet[200],
468
- quaternaryOnBrand: violet[300],
469
- errorPrimary: error[600],
470
- warningPrimary: warning[600],
471
- successPrimary: success[600]
472
- };
473
- var bg = {
474
- primary: gray[50],
475
- primaryAlt: gray[50],
476
- primaryHover: gray[100],
477
- primarySolid: gray[950],
478
- secondary: base.white,
479
- secondaryAlt: base.white,
480
- secondarySubtle: gray[25],
481
- secondaryHover: gray[50],
482
- secondarySolid: gray[600],
483
- tertiary: gray[100],
484
- quaternary: gray[200],
485
- active: gray[200],
486
- disabled: gray[100],
487
- disabledSubtle: gray[50],
488
- overlay: gray[950],
489
- brandPrimary: violet[50],
490
- brandPrimaryAlt: violet[50],
491
- brandSecondary: violet[100],
492
- brandSolid: violet[600],
493
- brandSolidHover: violet[700],
494
- brandSection: violet[800],
495
- brandSectionSubtle: violet[700],
496
- errorPrimary: error[50],
497
- errorSecondary: error[100],
498
- errorSolid: error[600],
499
- warningPrimary: warning[50],
500
- warningSecondary: warning[100],
501
- warningSolid: warning[600],
502
- successPrimary: success[50],
503
- successSecondary: success[100],
504
- successSolid: success[600]
505
- };
506
- var fg = {
507
- primary: gray[900],
508
- secondary: gray[700],
509
- secondaryHover: gray[800],
510
- tertiary: gray[600],
511
- tertiaryHover: gray[700],
512
- quaternary: gray[500],
513
- quaternaryHover: gray[600],
514
- quinary: gray[400],
515
- quinaryHover: gray[500],
516
- senary: gray[300],
517
- white: base.white,
518
- disabled: gray[400],
519
- disabledSubtle: gray[300],
520
- brandPrimary: violet[600],
521
- brandPrimaryAlt: violet[600],
522
- brandSecondary: violet[500],
523
- errorPrimary: error[600],
524
- errorSecondary: error[500],
525
- warningPrimary: warning[600],
526
- warningSecondary: warning[500],
527
- successPrimary: success[600],
528
- successSecondary: success[500]
529
- };
530
- var border = {
531
- primary: gray[300],
532
- secondary: gray[200],
533
- tertiary: gray[100],
534
- disabled: gray[300],
535
- disabledSubtle: gray[200],
536
- brand: violet[300],
537
- brandSolid: violet[600],
538
- brandSolidAlt: violet[600],
539
- error: error[300],
540
- errorSolid: error[600]
541
- };
542
- var buttonColors = {
543
- primary: {
544
- bg: violet[600],
545
- bgHover: violet[700],
546
- fg: base.white,
547
- fgHover: base.white,
548
- border: violet[600],
549
- borderHover: violet[700]
550
- },
551
- secondary: {
552
- bg: gray[900],
553
- bgHover: gray[950],
554
- fg: base.white,
555
- fgHover: base.white,
556
- border: gray[900],
557
- borderHover: gray[950]
558
- },
559
- secondaryColor: {
560
- bg: base.white,
561
- bgHover: violet[50],
562
- fg: violet[700],
563
- fgHover: violet[800],
564
- border: violet[300],
565
- borderHover: violet[300]
566
- },
567
- tertiary: {
568
- fg: gray[600],
569
- fgHover: gray[700],
570
- bgHover: gray[50]
571
- },
572
- tertiaryColor: {
573
- fg: violet[700],
574
- fgHover: violet[800],
575
- bgHover: violet[50]
576
- },
577
- primaryError: {
578
- bg: error[600],
579
- bgHover: error[700],
580
- fg: base.white,
581
- fgHover: base.white,
582
- border: error[600],
583
- borderHover: error[700]
584
- },
585
- secondaryError: {
586
- bg: base.white,
587
- bgHover: error[50],
588
- fg: error[700],
589
- fgHover: error[800],
590
- border: error[300],
591
- borderHover: error[300]
592
- },
593
- tertiaryError: {
594
- fg: error[700],
595
- fgHover: error[800],
596
- bgHover: error[50]
597
- }
598
- };
599
- var avatarColors = {
600
- bg: gray[100],
601
- contrastBorder: "#00000014",
602
- profilePhotoBorder: base.white,
603
- focusBorder: "#a0a0a624"
604
- };
605
- var breadcrumbColors = {
606
- fg: gray[600],
607
- fgHover: gray[700],
608
- bgHover: gray[50],
609
- brandBgHover: violet[50],
610
- brandFgHover: violet[700],
611
- iconFg: gray[500],
612
- iconFgHover: gray[700],
613
- brandIconFgHover: violet[700]
614
- };
615
- var iconColors = {
616
- fgBrand: violet[600],
617
- fgBrandOnBrand: violet[200],
618
- featuredModernBorder: gray[200],
619
- featuredLightFgBrand: violet[600],
620
- featuredLightFgGray: gray[500],
621
- featuredLightFgError: error[600],
622
- featuredLightFgWarning: warning[600],
623
- featuredLightFgSuccess: success[600],
624
- featuredDarkFgBrand: base.white,
625
- featuredDarkFgGray: base.white,
626
- featuredDarkFgError: base.white,
627
- featuredDarkFgWarning: base.white,
628
- featuredDarkFgSuccess: base.white
629
- };
630
- var navColors = {
631
- itemIconFg: gray[500],
632
- itemIconFgActive: gray[700],
633
- itemButtonIconFg: gray[500],
634
- itemButtonIconFgActive: gray[700]
635
- };
636
- var sliderColors = {
637
- handleBorder: violet[600],
638
- handleBg: base.white
639
- };
640
- var toggleColors = {
641
- buttonFgDisabled: gray[50]
642
- };
643
- var chartColors = {
644
- axisFg: gray[100],
645
- gridlineFg: gray[100],
646
- labelFg: gray[600],
647
- labelFgEmphasis: gray[700],
648
- bg: base.white,
649
- bgAlt: gray[50],
650
- tooltipBg: gray[950],
651
- tooltipFg: base.white,
652
- crosshairFg: gray[500],
653
- legendFg: text.tertiary,
654
- series: [
655
- { fg: misc.purple[500], fgHover: misc.purple[600], bg: misc.purple[100], bgHover: misc.purple[200] },
656
- { fg: misc.orangeDark[400], fgHover: misc.orangeDark[500], bg: misc.orangeDark[100], bgHover: misc.orangeDark[200] },
657
- { fg: misc.teal[300], fgHover: misc.teal[400], bg: misc.teal[50], bgHover: misc.teal[100] },
658
- { fg: warning[400], fgHover: warning[500], bg: warning[100], bgHover: warning[200] },
659
- { fg: misc.rose[400], fgHover: misc.rose[500], bg: misc.rose[100], bgHover: misc.rose[200] },
660
- { fg: misc.blueLight[400], fgHover: misc.blueLight[500], bg: misc.blueLight[100], bgHover: misc.blueLight[200] },
661
- { fg: misc.orange[300], fgHover: misc.orange[400], bg: misc.orange[100], bgHover: misc.orange[200] },
662
- { fg: misc.cyan[600], fgHover: misc.cyan[700], bg: misc.cyan[100], bgHover: misc.cyan[200] },
663
- { fg: misc.green[500], fgHover: misc.green[600], bg: misc.green[100], bgHover: misc.green[200] },
664
- { fg: misc.pink[400], fgHover: misc.pink[500], bg: misc.pink[100], bgHover: misc.pink[200] },
665
- { fg: misc.fuchsia[400], fgHover: misc.fuchsia[500], bg: misc.fuchsia[100], bgHover: misc.fuchsia[200] },
666
- { fg: misc.teal[600], fgHover: misc.teal[700], bg: misc.teal[100], bgHover: misc.teal[200] }
667
- ]
668
- };
669
- var alpha = {
670
- white: {
671
- 10: "#ffffff1a",
672
- 20: "#ffffff33",
673
- 30: "#ffffff4d",
674
- 40: "#ffffff66",
675
- 50: "#ffffff80",
676
- 60: "#ffffff99",
677
- 70: "#ffffffb3",
678
- 80: "#ffffffcc",
679
- 90: "#ffffffe6",
680
- 100: "#ffffff"
681
- },
682
- black: {
683
- 10: "#0000001a",
684
- 20: "#00000033",
685
- 30: "#0000004d",
686
- 40: "#00000066",
687
- 50: "#00000080",
688
- 60: "#00000099",
689
- 70: "#000000b3",
690
- 80: "#000000cc",
691
- 90: "#000000e6",
692
- 100: "#000000"
693
- }
694
- };
695
-
696
72
  // src/theme/palette.ts
697
- function buildPalette(tokens) {
698
- var _a;
699
- const { base: base2, error: error2, warning: warning2, success: success2, info: info3, text: text6, bg: bg6, fg: fg6, border: border6 } = tokens;
73
+ function buildPalette(tokens2, mode = "light") {
74
+ const { base: base2, error: error2, warning: warning2, success: success2, info: info2, text: text4, bg: bg4, fg: fg4, border: border4 } = tokens2;
700
75
  return {
76
+ mode,
701
77
  primary: {
702
- main: tokens.bg.brandSolid,
703
- light: tokens.fg.brandPrimary,
704
- dark: tokens.bg.brandSolidHover,
705
- contrastText: tokens.base.white
78
+ main: tokens2.bg.brandSolid,
79
+ light: tokens2.fg.brandPrimary,
80
+ dark: tokens2.bg.brandSolidHover,
81
+ contrastText: tokens2.base.white
706
82
  },
707
83
  secondary: {
708
- main: tokens.bg.secondarySolid,
709
- light: tokens.fg.secondary,
710
- dark: tokens.text.secondaryHover,
711
- contrastText: tokens.base.white
84
+ main: tokens2.bg.secondarySolid,
85
+ light: tokens2.fg.secondary,
86
+ dark: tokens2.text.secondaryHover,
87
+ contrastText: tokens2.base.white
712
88
  },
713
89
  error: {
714
- main: tokens.error[600],
715
- light: tokens.error[300],
716
- dark: tokens.error[700],
717
- contrastText: tokens.base.white
90
+ main: tokens2.error[600],
91
+ light: tokens2.error[300],
92
+ dark: tokens2.error[700],
93
+ contrastText: tokens2.base.white
718
94
  },
719
95
  warning: {
720
- main: tokens.warning[600],
721
- light: tokens.warning[300],
722
- dark: tokens.warning[700],
723
- contrastText: tokens.base.white
96
+ main: tokens2.warning[600],
97
+ light: tokens2.warning[300],
98
+ dark: tokens2.warning[700],
99
+ contrastText: tokens2.base.white
724
100
  },
725
101
  success: {
726
- main: tokens.success[600],
727
- light: tokens.success[300],
728
- dark: tokens.success[700],
729
- contrastText: tokens.base.white
102
+ main: tokens2.success[600],
103
+ light: tokens2.success[300],
104
+ dark: tokens2.success[700],
105
+ contrastText: tokens2.base.white
730
106
  },
731
107
  info: {
732
- main: tokens.info[600],
733
- light: tokens.info[300],
734
- dark: tokens.info[700],
735
- contrastText: tokens.base.white
108
+ main: tokens2.info[600],
109
+ light: tokens2.info[300],
110
+ dark: tokens2.info[700],
111
+ contrastText: tokens2.base.white
736
112
  },
737
113
  background: {
738
- default: bg6.primary,
739
- paper: bg6.secondary
114
+ default: bg4.primary,
115
+ paper: bg4.secondary
740
116
  },
741
- text: {
742
- primary: text6.primary,
743
- secondary: text6.secondary,
744
- disabled: text6.disabled,
745
- placeholder: text6.placeholder
746
- },
747
- divider: border6.secondary,
117
+ // Spread the full forest text scale so every key gets a CSS var; MUI's
118
+ // own components still read primary/secondary/disabled from here.
119
+ text: { ...text4 },
120
+ divider: border4.secondary,
748
121
  action: {
749
- active: fg6.tertiary,
750
- hover: bg6.primaryHover,
751
- selected: bg6.brandPrimary,
752
- disabled: fg6.disabled,
753
- disabledBackground: bg6.disabled
754
- },
755
- chart: (_a = tokens.chartColors) != null ? _a : chartColors,
756
- ...tokens.highlight && {
122
+ active: fg4.tertiary,
123
+ hover: bg4.primaryHover,
124
+ selected: bg4.brandPrimary,
125
+ disabled: fg4.disabled,
126
+ disabledBackground: bg4.disabled
127
+ },
128
+ chart: tokens2.chartColors,
129
+ bg: tokens2.bg,
130
+ fg: tokens2.fg,
131
+ border: tokens2.border,
132
+ buttonColors: tokens2.buttonColors,
133
+ sliderColors: tokens2.sliderColors,
134
+ avatarColors: tokens2.avatarColors,
135
+ breadcrumbColors: tokens2.breadcrumbColors,
136
+ navColors: tokens2.navColors,
137
+ ...tokens2.highlight && {
757
138
  highlight: {
758
- main: tokens.highlight[600],
759
- light: tokens.highlight[300],
760
- dark: tokens.highlight[700],
761
- contrastText: tokens.base.white
139
+ main: tokens2.highlight[600],
140
+ light: tokens2.highlight[300],
141
+ dark: tokens2.highlight[700],
142
+ contrastText: tokens2.base.white
762
143
  }
763
144
  }
764
145
  };
765
146
  }
766
147
 
767
148
  // src/theme/typography.ts
768
- function buildTypography(tokens) {
149
+ function buildTypography(tokens2) {
769
150
  var _a, _b, _c, _d;
770
- const { fontFamily: fontFamily2, display: display2, fontSize: fontSize2, lineHeight: lineHeight2, fontWeight: fontWeight2, letterSpacing: letterSpacing2 } = tokens;
771
- const ls = letterSpacing2 != null ? letterSpacing2 : {};
151
+ const { fontFamily: fontFamily2, display: display2, fontSize: fontSize2, lineHeight: lineHeight2, fontWeight: fontWeight2, letterSpacing: letterSpacing3 } = tokens2;
152
+ const ls = letterSpacing3 != null ? letterSpacing3 : {};
772
153
  return {
773
154
  fontFamily: fontFamily2,
774
155
  fontWeightRegular: fontWeight2.regular,
@@ -859,8 +240,8 @@ function buildTypography(tokens) {
859
240
  }
860
241
 
861
242
  // src/theme/shadows.ts
862
- function buildShadows(tokens) {
863
- const tokenShadows = tokens.shadows;
243
+ function buildShadows(tokens2) {
244
+ const tokenShadows = tokens2.shadows;
864
245
  return [
865
246
  "none",
866
247
  // 0
@@ -916,46 +297,110 @@ function buildShadows(tokens) {
916
297
  }
917
298
 
918
299
  // src/theme/components.ts
919
- function buildComponents(tokens) {
300
+ function buildComponents(tokens2) {
920
301
  const {
921
302
  base: base2,
922
303
  error: error2,
923
304
  warning: warning2,
924
305
  success: success2,
925
- info: info3,
926
- highlight: highlight2,
927
- radius: radius6,
928
- focusRings: focusRings6,
306
+ info: info2,
307
+ highlight: highlight3,
308
+ radius: radius4,
309
+ focusRings: focusRings4,
929
310
  shadows: tokenShadows,
930
- text: text6,
931
- bg: bg6,
932
- fg: fg6,
933
- border: border6,
934
- buttonColors: buttonColors6,
935
- sliderColors: sliderColors6,
936
- avatarColors: avatarColors6,
937
- breadcrumbColors: breadcrumbColors6
938
- } = tokens;
311
+ text: text4,
312
+ bg: bg4,
313
+ fg: fg4,
314
+ border: border4,
315
+ buttonColors: buttonColors4,
316
+ sliderColors: sliderColors4,
317
+ avatarColors: avatarColors3,
318
+ breadcrumbColors: breadcrumbColors4
319
+ } = tokens2;
939
320
  const containedFill = {
940
- backgroundColor: buttonColors6.primary.bg,
941
- color: buttonColors6.primary.fg,
321
+ backgroundColor: buttonColors4.primary.bg,
322
+ color: buttonColors4.primary.fg,
942
323
  "&:hover": {
943
- backgroundColor: buttonColors6.primary.bgHover
324
+ backgroundColor: buttonColors4.primary.bgHover
944
325
  }
945
326
  };
946
327
  const outlinedFill = {
947
- borderColor: buttonColors6.secondaryColor.border,
948
- color: buttonColors6.secondaryColor.fg,
328
+ borderColor: buttonColors4.secondaryColor.border,
329
+ color: buttonColors4.secondaryColor.fg,
949
330
  "&:hover": {
950
331
  // Darken the whole outlined button on hover via brightness (< 1) — single
951
332
  // mechanism, no separate border-color change. 0.97 is a barely-there darken.
333
+ // No-tint is the spec: suppress MUI's ~4% --variant-outlinedBg hover tint
334
+ // so the ButtonGroup/IconButton outlined replicas match exactly.
335
+ backgroundColor: "transparent",
952
336
  filter: "brightness(0.97)"
953
337
  }
954
338
  };
339
+ const fabFill = {
340
+ ...containedFill,
341
+ "&:hover": {
342
+ backgroundColor: buttonColors4.primary.bgHover,
343
+ color: buttonColors4.primary.fgHover
344
+ }
345
+ };
955
346
  const textFill = {
956
- color: buttonColors6.tertiaryColor.fg,
347
+ color: buttonColors4.tertiaryColor.fg,
957
348
  "&:hover": {
958
- backgroundColor: buttonColors6.tertiaryColor.bgHover
349
+ backgroundColor: buttonColors4.tertiaryColor.bgHover
350
+ }
351
+ };
352
+ const bevelHover = {
353
+ borderTopWidth: 4,
354
+ borderBottomWidth: 1,
355
+ borderTopLeftRadius: radius4.lg,
356
+ borderTopRightRadius: radius4.lg,
357
+ borderBottomLeftRadius: radius4.md,
358
+ borderBottomRightRadius: radius4.md
359
+ };
360
+ const bevelPress = {
361
+ // Snap the press faster than the 300ms hover flip so it feels tactile.
362
+ transition: "border-width 120ms ease, border-radius 120ms ease, opacity 120ms ease",
363
+ borderTopWidth: 1,
364
+ borderTopLeftRadius: radius4.md,
365
+ borderTopRightRadius: radius4.md,
366
+ opacity: 0.75
367
+ };
368
+ const bevel3D = {
369
+ position: "relative",
370
+ overflow: "hidden",
371
+ transition: "filter 300ms ease, border-width 300ms ease, border-radius 300ms ease, opacity 300ms ease, background-color 300ms ease",
372
+ borderStyle: "solid",
373
+ borderTopWidth: 1,
374
+ borderRightWidth: 1,
375
+ borderLeftWidth: 1,
376
+ borderBottomWidth: 4,
377
+ borderBottomLeftRadius: radius4.lg,
378
+ borderBottomRightRadius: radius4.lg,
379
+ "&::before": {
380
+ content: '""',
381
+ position: "absolute",
382
+ left: 0,
383
+ top: "-150%",
384
+ width: "100%",
385
+ height: 5,
386
+ borderRadius: 4,
387
+ backgroundColor: "currentColor",
388
+ boxShadow: "0 0 24px 4px currentColor",
389
+ // 0.3 matches MuiButton's contained sweep exactly — the consts and the
390
+ // Button/Fab inline copies must not drift.
391
+ opacity: 0.3,
392
+ filter: "blur(2px)",
393
+ pointerEvents: "none",
394
+ transition: "top 500ms ease-in-out"
395
+ },
396
+ "&:hover": bevelHover,
397
+ "&:hover::before": {
398
+ top: "150%"
399
+ },
400
+ "&:active": bevelPress,
401
+ "@media (prefers-reduced-motion: reduce)": {
402
+ transition: "none",
403
+ "&::before": { display: "none" }
959
404
  }
960
405
  };
961
406
  return {
@@ -978,15 +423,15 @@ function buildComponents(tokens) {
978
423
  // mirrors the forest-web Button. Colors are untouched — the bevel and
979
424
  // sweep use translucent `currentColor` so they adapt per variant.
980
425
  // Applied to `contained` + `outlined`; `text` keeps its flat styling.
981
- root: ({ ownerState }) => {
426
+ root: ({ ownerState, theme }) => {
982
427
  const interactive = ownerState.variant !== "text";
983
428
  const isContained = ownerState.variant === "contained";
984
429
  const isOutlined = ownerState.variant === "outlined";
985
430
  const sweepColor = isOutlined ? "color-mix(in srgb, currentColor 45%, #fff)" : "currentColor";
986
- const colorScales = { error: error2, warning: warning2, success: success2, info: info3 };
431
+ const colorScales = { error: error2, warning: warning2, success: success2, info: info2 };
987
432
  const faceScale = ownerState.color ? colorScales[ownerState.color] : void 0;
988
433
  return {
989
- borderRadius: radius6.md,
434
+ borderRadius: radius4.md,
990
435
  fontWeight: 600,
991
436
  boxShadow: tokenShadows.xs,
992
437
  height: 32,
@@ -994,7 +439,7 @@ function buildComponents(tokens) {
994
439
  fontSize: 14,
995
440
  lineHeight: "20px",
996
441
  "&:focus-visible": {
997
- boxShadow: focusRings6.brandShadowXs
442
+ boxShadow: focusRings4.brandShadowXs
998
443
  },
999
444
  ...interactive && {
1000
445
  position: "relative",
@@ -1008,15 +453,15 @@ function buildComponents(tokens) {
1008
453
  // Round the thick-bevel side more than the rest so the inner
1009
454
  // surface isn't squared off. Follows the bevel: bottom at rest,
1010
455
  // top on hover.
1011
- borderBottomLeftRadius: radius6.lg,
1012
- borderBottomRightRadius: radius6.lg,
456
+ borderBottomLeftRadius: radius4.lg,
457
+ borderBottomRightRadius: radius4.lg,
1013
458
  // Contained buttons have no border of their own — give them a
1014
459
  // translucent bevel. Outlined keeps its own border color.
1015
460
  ...isContained && {
1016
461
  // Greyscale bevel — visible on both the charcoal face and a
1017
462
  // light page (white washed out on hover). Semantic colors keep
1018
463
  // their in-hue bevel.
1019
- borderColor: faceScale ? faceScale[700] : gray[600]
464
+ borderColor: faceScale ? faceScale[700] : fg4.tertiary
1020
465
  },
1021
466
  "&::before": {
1022
467
  content: '""',
@@ -1036,18 +481,23 @@ function buildComponents(tokens) {
1036
481
  "&:hover": {
1037
482
  borderTopWidth: 4,
1038
483
  borderBottomWidth: 1,
1039
- borderTopLeftRadius: radius6.lg,
1040
- borderTopRightRadius: radius6.lg,
1041
- borderBottomLeftRadius: radius6.md,
1042
- borderBottomRightRadius: radius6.md,
484
+ borderTopLeftRadius: radius4.lg,
485
+ borderTopRightRadius: radius4.lg,
486
+ borderBottomLeftRadius: radius4.md,
487
+ borderBottomRightRadius: radius4.md,
1043
488
  // One step lighter than the default bevel (60% → 70%) so it
1044
489
  // stays visible against the brightened face on hover.
1045
490
  ...isContained && {
491
+ // Light mode: the face is dark (charcoal/vivid), so a
492
+ // brightness lift reads as a hover. Dark mode: the face is
493
+ // already light — brightness(1.5) blows it out to near-white
494
+ // and swallows the top bevel, so drop the lift and let the
495
+ // bgHover darken provide the feedback instead.
1046
496
  filter: "brightness(1.5)",
1047
- // Charcoal (non-semantic) keeps its default gray[600] border —
1048
- // the brightness lift lightens it on hover. Semantic colors
1049
- // darken to [900] so their bevel survives the brightness.
1050
- ...faceScale && { borderColor: faceScale[900] }
497
+ ...faceScale && { borderColor: faceScale[900] },
498
+ ...theme.applyStyles("dark", {
499
+ filter: "brightness(1)"
500
+ })
1051
501
  }
1052
502
  },
1053
503
  "&:hover::before": {
@@ -1061,8 +511,8 @@ function buildComponents(tokens) {
1061
511
  // like a tactile click rather than a slow settle.
1062
512
  transition: "border-width 120ms ease, border-radius 120ms ease, opacity 120ms ease",
1063
513
  borderTopWidth: 1,
1064
- borderTopLeftRadius: radius6.md,
1065
- borderTopRightRadius: radius6.md,
514
+ borderTopLeftRadius: radius4.md,
515
+ borderTopRightRadius: radius4.md,
1066
516
  opacity: 0.75
1067
517
  },
1068
518
  "@media (prefers-reduced-motion: reduce)": {
@@ -1085,51 +535,214 @@ function buildComponents(tokens) {
1085
535
  }
1086
536
  },
1087
537
  // ─── Button Group ───────────────────────────────────────────────
538
+ // Variant alignment: each group variant renders its children EXACTLY like
539
+ // the standalone <Button> of the same variant (contained = charcoal fill /
540
+ // light-grey in dark; outlined = transparent + grey border; text = quiet).
541
+ // Forest <Button> children force variant="contained", so the outlined and
542
+ // text groups must repaint the face at group level; contained needs no
543
+ // repaint. Two group classes out-specify MuiButton's single variant class,
544
+ // and the `:not(.Mui-disabled)` guard keeps MUI's disabled styling winning.
1088
545
  MuiButtonGroup: {
1089
546
  defaultProps: {
1090
547
  disableElevation: true
1091
548
  },
1092
549
  styleOverrides: {
1093
550
  root: {
1094
- borderRadius: radius6.md
1095
- },
1096
- grouped: {
1097
- "&:not(:last-of-type)": {
1098
- borderRight: `1px solid ${buttonColors6.primary.borderHover}`
551
+ borderRadius: radius4.md,
552
+ // contained group → children already render as contained Buttons; only
553
+ // re-pin the bevel border color, which MUI's own grouped-contained
554
+ // default (palette grey) otherwise overrides away from the standalone
555
+ // Button's greyscale bevel.
556
+ "&.MuiButtonGroup-contained .MuiButtonGroup-grouped:not(.Mui-disabled)": {
557
+ borderColor: fg4.tertiary
558
+ },
559
+ // outlined group → the outlined-Button look (outlinedFill), including
560
+ // its lightened hover sweep (the forced-contained children would
561
+ // otherwise sweep at full currentColor strength).
562
+ "&.MuiButtonGroup-outlined .MuiButtonGroup-grouped:not(.Mui-disabled)": {
563
+ backgroundColor: "transparent",
564
+ color: buttonColors4.secondaryColor.fg,
565
+ borderColor: buttonColors4.secondaryColor.border,
566
+ "&::before": {
567
+ backgroundColor: "color-mix(in srgb, currentColor 45%, #fff)",
568
+ boxShadow: "0 0 24px 4px color-mix(in srgb, currentColor 45%, #fff)",
569
+ opacity: 0.2,
570
+ filter: "blur(3px)"
571
+ },
572
+ "&:hover": {
573
+ backgroundColor: "transparent",
574
+ filter: "brightness(0.97)"
575
+ }
576
+ },
577
+ // text group → the quiet text-Button look: flatten the inherited
578
+ // bevel/sweep (incl. the contained hover brightness + radius flips),
579
+ // kill the :active press-dim, keep the brand focus ring reachable.
580
+ "&.MuiButtonGroup-text .MuiButtonGroup-grouped:not(.Mui-disabled)": {
581
+ backgroundColor: "transparent",
582
+ color: buttonColors4.tertiaryColor.fg,
583
+ borderWidth: 0,
584
+ borderRadius: radius4.md,
585
+ boxShadow: "none",
586
+ "&::before": { display: "none" },
587
+ "&:active": { opacity: 1 },
588
+ "&:hover": {
589
+ backgroundColor: buttonColors4.tertiaryColor.bgHover,
590
+ filter: "none"
591
+ },
592
+ "&:focus-visible": {
593
+ boxShadow: focusRings4.brandShadowXs
594
+ }
595
+ },
596
+ // Text-group divider, painted per orientation (child borders are 0).
597
+ "&.MuiButtonGroup-text.MuiButtonGroup-horizontal .MuiButtonGroup-grouped:not(.Mui-disabled):not(:last-of-type)": {
598
+ borderRight: `1px solid ${border4.secondary}`
599
+ },
600
+ "&.MuiButtonGroup-text.MuiButtonGroup-vertical .MuiButtonGroup-grouped:not(.Mui-disabled):not(:last-of-type)": {
601
+ borderBottom: `1px solid ${border4.secondary}`
1099
602
  }
1100
603
  }
604
+ // No `grouped` divider override: contained/outlined separation comes
605
+ // from the children's own (re-pinned) borders, same as standalone
606
+ // Buttons sitting side by side; the text group paints its own divider.
1101
607
  }
1102
608
  },
1103
609
  // ─── IconButton ─────────────────────────────────────────────────
610
+ // Default (text) icon buttons stay bare. The forest IconButton wrapper can
611
+ // opt into `variant="contained" | "outlined"`, which adds the ForestIconButton
612
+ // class(es) — those get the same faux-3D bevel + press as <Button>.
1104
613
  MuiIconButton: {
1105
614
  styleOverrides: {
1106
- root: {
1107
- borderRadius: radius6.md,
615
+ root: ({ theme }) => ({
616
+ borderRadius: radius4.md,
1108
617
  padding: 6,
1109
618
  "& .MuiSvgIcon-root": {
1110
619
  fontSize: 20
620
+ },
621
+ "&.ForestIconButton": {
622
+ ...bevel3D,
623
+ boxShadow: tokenShadows.xs,
624
+ "&:focus-visible": {
625
+ boxShadow: focusRings4.brandShadowXs
626
+ }
627
+ },
628
+ "&.ForestIconButton-contained": {
629
+ backgroundColor: buttonColors4.primary.bg,
630
+ color: buttonColors4.primary.fg,
631
+ borderColor: fg4.tertiary,
632
+ "&:hover": {
633
+ backgroundColor: buttonColors4.primary.bgHover,
634
+ // Light mode: dark face, brightness lift reads as hover. Dark
635
+ // mode: the face is already light — a lift blows out the top
636
+ // bevel, so drop it and let bgHover provide the feedback.
637
+ filter: "brightness(1.5)",
638
+ ...theme.applyStyles("dark", {
639
+ filter: "brightness(1)"
640
+ })
641
+ }
642
+ },
643
+ "&.ForestIconButton-outlined": {
644
+ backgroundColor: "transparent",
645
+ color: buttonColors4.secondaryColor.fg,
646
+ borderColor: buttonColors4.secondaryColor.border,
647
+ // Same lightened sweep as the outlined Button — full currentColor
648
+ // reads too dark on the light outlined face.
649
+ "&::before": {
650
+ backgroundColor: "color-mix(in srgb, currentColor 45%, #fff)",
651
+ boxShadow: "0 0 24px 4px color-mix(in srgb, currentColor 45%, #fff)",
652
+ opacity: 0.2,
653
+ filter: "blur(3px)"
654
+ },
655
+ "&:hover": {
656
+ backgroundColor: "transparent",
657
+ filter: "brightness(0.97)"
658
+ }
659
+ },
660
+ // Disabled parity with the Button variants: MUI IconButton's own
661
+ // .Mui-disabled (transparent bg + action.disabled icon) ties with the
662
+ // variant faces at (0,2,0) and loses on insertion order — pin the
663
+ // disabled treatment one class higher.
664
+ "&.ForestIconButton-contained.Mui-disabled": {
665
+ backgroundColor: (theme.vars || theme).palette.action.disabledBackground,
666
+ color: (theme.vars || theme).palette.action.disabled
667
+ },
668
+ "&.ForestIconButton-outlined.Mui-disabled": {
669
+ color: (theme.vars || theme).palette.action.disabled,
670
+ borderColor: border4.disabled
1111
671
  }
1112
- }
672
+ })
1113
673
  }
1114
674
  },
1115
675
  // ─── FAB ────────────────────────────────────────────────────────
676
+ // A Fab is a round contained Button: same faux-3D bevel, light sweep,
677
+ // brightness lift, and press. The border radii are left untouched so the
678
+ // circular / extended silhouettes survive the bevel flip (no radius swap
679
+ // like Button/IconButton do on their rounded corners).
1116
680
  MuiFab: {
1117
681
  styleOverrides: {
1118
- root: {
1119
- boxShadow: tokenShadows.md,
682
+ root: ({ theme, ownerState }) => ({
683
+ // `default` has no dedicated slot class, so fold it into root —
684
+ // it renders the same contained fill as primary/secondary.
685
+ ...(!ownerState.color || ownerState.color === "default") && fabFill,
686
+ position: "relative",
687
+ overflow: "hidden",
688
+ boxShadow: tokenShadows.xs,
689
+ transition: "filter 300ms ease, border-width 300ms ease, opacity 300ms ease, background-color 300ms ease",
690
+ borderStyle: "solid",
691
+ borderColor: fg4.tertiary,
692
+ borderTopWidth: 1,
693
+ borderRightWidth: 1,
694
+ borderLeftWidth: 1,
695
+ borderBottomWidth: 4,
696
+ "&::before": {
697
+ content: '""',
698
+ position: "absolute",
699
+ left: 0,
700
+ top: "-150%",
701
+ width: "100%",
702
+ height: 5,
703
+ borderRadius: 4,
704
+ backgroundColor: "currentColor",
705
+ boxShadow: "0 0 24px 4px currentColor",
706
+ opacity: 0.3,
707
+ filter: "blur(2px)",
708
+ pointerEvents: "none",
709
+ transition: "top 500ms ease-in-out"
710
+ },
1120
711
  "&:hover": {
1121
- boxShadow: tokenShadows.lg
712
+ boxShadow: tokenShadows.xs,
713
+ borderTopWidth: 4,
714
+ borderBottomWidth: 1,
715
+ // Light mode: dark face, brightness lift reads as hover. Dark
716
+ // mode: the face is already light — a lift blows out the top
717
+ // bevel, so drop it and let bgHover provide the feedback.
718
+ filter: "brightness(1.5)",
719
+ ...theme.applyStyles("dark", {
720
+ filter: "brightness(1)"
721
+ })
722
+ },
723
+ "&:hover::before": {
724
+ top: "150%"
725
+ },
726
+ "&:active": {
727
+ transition: "border-width 120ms ease, opacity 120ms ease",
728
+ boxShadow: tokenShadows.xs,
729
+ borderTopWidth: 1,
730
+ opacity: 0.75
1122
731
  },
1123
732
  "&:focus-visible": {
1124
- boxShadow: focusRings6.brandShadowSm
1125
- }
1126
- },
1127
- primary: {
1128
- backgroundColor: buttonColors6.primary.bg,
1129
- "&:hover": {
1130
- backgroundColor: buttonColors6.primary.bgHover
733
+ boxShadow: focusRings4.brandShadowSm
734
+ },
735
+ "@media (prefers-reduced-motion: reduce)": {
736
+ transition: "none",
737
+ "&::before": { display: "none" }
1131
738
  }
1132
- }
739
+ }),
740
+ // Greyscale parity with Button: primary and secondary both render the
741
+ // contained charcoal fill. MUI defaults the icon color to
742
+ // contrastText (always white); in dark the Fab face is light, so pin
743
+ // the mode-aware fg (dark icon).
744
+ primary: fabFill,
745
+ secondary: fabFill
1133
746
  }
1134
747
  },
1135
748
  // ─── TextField / Input ──────────────────────────────────────────
@@ -1151,8 +764,8 @@ function buildComponents(tokens) {
1151
764
  styleOverrides: {
1152
765
  input: {
1153
766
  "&::placeholder": {
1154
- color: text6.placeholder,
1155
- WebkitTextFillColor: text6.placeholder,
767
+ color: text4.placeholder,
768
+ WebkitTextFillColor: text4.placeholder,
1156
769
  fontWeight: 400,
1157
770
  opacity: 1
1158
771
  }
@@ -1162,33 +775,33 @@ function buildComponents(tokens) {
1162
775
  MuiOutlinedInput: {
1163
776
  styleOverrides: {
1164
777
  root: {
1165
- borderRadius: radius6.md,
778
+ borderRadius: radius4.md,
1166
779
  boxShadow: tokenShadows.xs,
1167
780
  "&&:hover:not(.Mui-focused):not(.Mui-disabled) .MuiOutlinedInput-notchedOutline": {
1168
- borderColor: border6.brand
781
+ borderColor: border4.brand
1169
782
  },
1170
783
  "&&.Mui-focused .MuiOutlinedInput-notchedOutline": {
1171
- borderColor: border6.brandSolid,
784
+ borderColor: border4.brandSolid,
1172
785
  borderWidth: 1,
1173
786
  boxShadow: "none"
1174
787
  },
1175
788
  "&&.Mui-error:not(.Mui-focused) .MuiOutlinedInput-notchedOutline": {
1176
- borderColor: border6.error
789
+ borderColor: border4.error
1177
790
  },
1178
791
  "&&.Mui-error.Mui-focused .MuiOutlinedInput-notchedOutline": {
1179
- borderColor: border6.errorSolid,
792
+ borderColor: border4.errorSolid,
1180
793
  boxShadow: "none"
1181
794
  },
1182
795
  "& .MuiInputAdornment-root .MuiIconButton-root": {
1183
- color: fg6.quaternary,
796
+ color: fg4.quaternary,
1184
797
  "&:hover": {
1185
- backgroundColor: bg6.primaryHover,
1186
- color: fg6.brandPrimary
798
+ backgroundColor: bg4.primaryHover,
799
+ color: fg4.brandPrimary
1187
800
  }
1188
801
  }
1189
802
  },
1190
803
  notchedOutline: {
1191
- borderColor: border6.primary
804
+ borderColor: border4.primary
1192
805
  },
1193
806
  input: {
1194
807
  padding: "6px 12px",
@@ -1200,12 +813,12 @@ function buildComponents(tokens) {
1200
813
  MuiFormLabel: {
1201
814
  styleOverrides: {
1202
815
  root: {
1203
- color: text6.placeholder,
816
+ color: text4.placeholder,
1204
817
  "&.Mui-focused": {
1205
- color: text6.placeholder
818
+ color: text4.placeholder
1206
819
  },
1207
820
  "&.Mui-error": {
1208
- color: text6.errorPrimary
821
+ color: text4.errorPrimary
1209
822
  }
1210
823
  }
1211
824
  }
@@ -1215,12 +828,12 @@ function buildComponents(tokens) {
1215
828
  root: {
1216
829
  fontSize: 14,
1217
830
  fontWeight: 500,
1218
- color: text6.placeholder,
831
+ color: text4.placeholder,
1219
832
  "&.Mui-focused": {
1220
- color: text6.placeholder
833
+ color: text4.placeholder
1221
834
  },
1222
835
  "&.Mui-error": {
1223
- color: text6.errorPrimary
836
+ color: text4.errorPrimary
1224
837
  }
1225
838
  },
1226
839
  outlined: {
@@ -1239,7 +852,7 @@ function buildComponents(tokens) {
1239
852
  marginTop: 6,
1240
853
  marginLeft: 0,
1241
854
  "&.Mui-error": {
1242
- color: text6.errorPrimary
855
+ color: text4.errorPrimary
1243
856
  }
1244
857
  }
1245
858
  }
@@ -1269,43 +882,45 @@ function buildComponents(tokens) {
1269
882
  }
1270
883
  },
1271
884
  icon: {
1272
- color: text6.placeholder,
885
+ color: text4.placeholder,
1273
886
  right: 8
1274
887
  }
1275
888
  }
1276
889
  },
1277
890
  MuiMenuItem: {
1278
891
  styleOverrides: {
1279
- root: {
1280
- borderRadius: radius6.md,
892
+ root: ({ theme }) => ({
893
+ borderRadius: radius4.md,
1281
894
  padding: "6px 8px",
1282
895
  gap: 4,
1283
896
  "&:hover": {
1284
- backgroundColor: bg6.primaryHover
897
+ backgroundColor: bg4.primaryHover,
898
+ ...theme.applyStyles("dark", { backgroundColor: bg4.active })
1285
899
  },
900
+ // Selected: keep the label color, mark it with weight + a neutral
901
+ // (non-violet) background. bg.active adapts per scheme.
1286
902
  "&.Mui-selected": {
1287
- backgroundColor: info3[50],
1288
- color: info3[700],
1289
- // ListItemText primary hardcodes its own color (text.secondary),
1290
- // which beats the inherited MenuItem color re-point it here so
1291
- // selected labels actually take the info color (e.g. MultiSelect).
903
+ backgroundColor: bg4.active,
904
+ fontWeight: 600,
905
+ // ListItemText primary hardcodes its own color/weight — re-point
906
+ // weight here so selected labels bold (e.g. MultiSelect).
1292
907
  "& .MuiListItemText-primary": {
1293
- color: info3[700]
908
+ fontWeight: 600
1294
909
  },
1295
910
  "&:hover": {
1296
- backgroundColor: info3[100]
911
+ backgroundColor: bg4.active
1297
912
  }
1298
913
  }
1299
- }
914
+ })
1300
915
  }
1301
916
  },
1302
917
  // ─── Autocomplete ───────────────────────────────────────────────
1303
918
  MuiAutocomplete: {
1304
919
  styleOverrides: {
1305
920
  paper: {
1306
- borderRadius: radius6.md,
921
+ borderRadius: radius4.md,
1307
922
  boxShadow: tokenShadows.lg,
1308
- border: `1px solid ${border6.secondary}`,
923
+ border: `1px solid ${border4.secondary}`,
1309
924
  marginTop: 4
1310
925
  },
1311
926
  inputRoot: {
@@ -1321,15 +936,12 @@ function buildComponents(tokens) {
1321
936
  fontSize: 14,
1322
937
  lineHeight: "20px",
1323
938
  padding: "6px 12px",
1324
- "&.Mui-focused": {
1325
- backgroundColor: bg6.primaryHover
1326
- },
939
+ // Hover + selected backgrounds come from MUI's theme-aware action
940
+ // overlays (a light overlay on dark, so they stay visible — a solid
941
+ // dark-grey tier here reads as "no hover"). Selected keeps the text
942
+ // color (no violet) and is marked with weight only.
1327
943
  '&[aria-selected="true"]': {
1328
- backgroundColor: info3[50],
1329
- color: info3[700]
1330
- },
1331
- '&[aria-selected="true"].Mui-focused': {
1332
- backgroundColor: info3[100]
944
+ fontWeight: 600
1333
945
  }
1334
946
  },
1335
947
  listbox: {
@@ -1344,28 +956,28 @@ function buildComponents(tokens) {
1344
956
  },
1345
957
  styleOverrides: {
1346
958
  root: {
1347
- color: border6.primary,
1348
- borderRadius: radius6.xs,
959
+ color: border4.primary,
960
+ borderRadius: radius4.xs,
1349
961
  padding: 0,
1350
962
  width: 20,
1351
963
  height: 20,
1352
964
  "&:hover": {
1353
965
  backgroundColor: "transparent",
1354
- color: fg6.brandPrimary
966
+ color: fg4.brandPrimary
1355
967
  },
1356
968
  "&.Mui-checked": {
1357
- color: fg6.brandPrimary
969
+ color: fg4.brandPrimary
1358
970
  },
1359
971
  "&.Mui-checked:hover": {
1360
- color: buttonColors6.primary.bgHover
972
+ color: buttonColors4.primary.bgHover
1361
973
  },
1362
974
  "&.Mui-focusVisible": {
1363
975
  outline: "none",
1364
- boxShadow: focusRings6.brand,
1365
- borderRadius: radius6.xs
976
+ boxShadow: focusRings4.brand,
977
+ borderRadius: radius4.xs
1366
978
  },
1367
979
  "&.Mui-disabled": {
1368
- color: border6.primary
980
+ color: border4.primary
1369
981
  }
1370
982
  }
1371
983
  }
@@ -1377,25 +989,25 @@ function buildComponents(tokens) {
1377
989
  },
1378
990
  styleOverrides: {
1379
991
  root: {
1380
- color: border6.primary,
992
+ color: border4.primary,
1381
993
  padding: 0,
1382
994
  "&:hover": {
1383
995
  backgroundColor: "transparent",
1384
- color: fg6.brandPrimary
996
+ color: fg4.brandPrimary
1385
997
  },
1386
998
  "&.Mui-checked": {
1387
- color: fg6.brandPrimary
999
+ color: fg4.brandPrimary
1388
1000
  },
1389
1001
  "&.Mui-checked:hover": {
1390
- color: buttonColors6.primary.bgHover
1002
+ color: buttonColors4.primary.bgHover
1391
1003
  },
1392
1004
  "&.Mui-focusVisible": {
1393
1005
  outline: "none",
1394
- boxShadow: focusRings6.brand,
1395
- borderRadius: radius6.full
1006
+ boxShadow: focusRings4.brand,
1007
+ borderRadius: radius4.full
1396
1008
  },
1397
1009
  "&.Mui-disabled": {
1398
- color: border6.primary
1010
+ color: border4.primary
1399
1011
  }
1400
1012
  }
1401
1013
  }
@@ -1415,20 +1027,23 @@ function buildComponents(tokens) {
1415
1027
  padding: 2,
1416
1028
  "&.Mui-checked": {
1417
1029
  transform: "translateX(20px)",
1418
- color: fg6.white,
1030
+ // Thumb sits on the brand track. In dark the track is light-grey, so
1031
+ // a white thumb vanished — use the mode-aware on-brand fg (dark in
1032
+ // dark, white in light).
1033
+ color: buttonColors4.primary.fg,
1419
1034
  "& + .MuiSwitch-track": {
1420
- backgroundColor: fg6.brandPrimary,
1035
+ backgroundColor: fg4.brandPrimary,
1421
1036
  opacity: 1
1422
1037
  }
1423
1038
  },
1424
1039
  "&.Mui-checked:hover + .MuiSwitch-track": {
1425
- backgroundColor: buttonColors6.primary.bgHover
1040
+ backgroundColor: buttonColors4.primary.bgHover
1426
1041
  },
1427
1042
  "&.Mui-focusVisible .MuiSwitch-thumb": {
1428
- boxShadow: focusRings6.brand
1043
+ boxShadow: focusRings4.brand
1429
1044
  },
1430
1045
  "&.Mui-disabled .MuiSwitch-thumb": {
1431
- color: bg6.disabled
1046
+ color: bg4.disabled
1432
1047
  },
1433
1048
  "&.Mui-disabled + .MuiSwitch-track": {
1434
1049
  opacity: 0.5
@@ -1440,60 +1055,122 @@ function buildComponents(tokens) {
1440
1055
  boxShadow: "0px 1px 2px 0px #1018280d"
1441
1056
  },
1442
1057
  track: {
1443
- borderRadius: radius6.full,
1444
- backgroundColor: border6.secondary,
1445
- opacity: 1
1058
+ borderRadius: radius4.full,
1059
+ backgroundColor: border4.secondary,
1060
+ opacity: 1,
1061
+ // Faux-3D bottom edge (button-family cue), adapted for a pill: an
1062
+ // inset bottom shadow instead of a real border, so the sliding thumb
1063
+ // never collides with it. Reads on both light and dark tracks.
1064
+ boxShadow: "inset 0 -3px 0 0 rgba(0,0,0,0.18)"
1446
1065
  }
1447
1066
  }
1448
1067
  },
1449
1068
  // ─── Toggle Button ─────────────────────────────────────────────
1069
+ // Aligned with the contained <Button>: same face, same faux-3D bevel and
1070
+ // hover flip. Selected = the pressed Button held down — bevel collapsed,
1071
+ // dimmed, slightly inset. A toggle is a button that stays pushed in.
1450
1072
  MuiToggleButton: {
1451
1073
  styleOverrides: {
1452
- root: {
1453
- borderColor: border6.primary,
1454
- color: text6.secondary,
1074
+ root: ({ theme }) => ({
1075
+ ...bevel3D,
1076
+ ...containedFill,
1077
+ borderColor: fg4.tertiary,
1455
1078
  fontSize: 14,
1456
1079
  fontWeight: 600,
1457
1080
  lineHeight: "20px",
1458
1081
  height: 32,
1459
1082
  padding: "6px 12px",
1460
1083
  textTransform: "none",
1084
+ boxShadow: tokenShadows.xs,
1461
1085
  "&:hover": {
1462
- backgroundColor: bg6.primaryHover,
1463
- borderColor: border6.primary
1086
+ ...bevelHover,
1087
+ backgroundColor: buttonColors4.primary.bgHover,
1088
+ // Same mode split as the contained Button: the brightness lift
1089
+ // reads on the dark light-mode face but blows out the light
1090
+ // dark-mode face.
1091
+ filter: "brightness(1.5)",
1092
+ ...theme.applyStyles("dark", {
1093
+ filter: "brightness(1)"
1094
+ })
1464
1095
  },
1465
1096
  "&.Mui-selected": {
1466
- backgroundColor: bg6.brandPrimary,
1467
- color: buttonColors6.secondaryColor.fg,
1468
- borderColor: border6.brandSolid,
1097
+ backgroundColor: buttonColors4.primary.bg,
1098
+ color: buttonColors4.primary.fg,
1099
+ borderTopWidth: 1,
1100
+ borderBottomWidth: 1,
1101
+ borderTopLeftRadius: radius4.md,
1102
+ borderTopRightRadius: radius4.md,
1103
+ borderBottomLeftRadius: radius4.md,
1104
+ borderBottomRightRadius: radius4.md,
1105
+ opacity: 0.75,
1106
+ boxShadow: "inset 0 2px 4px 0 rgba(0,0,0,0.3)",
1107
+ "&::before": { display: "none" },
1108
+ // Stays pressed on hover — no bevel re-raise, no brightness lift.
1469
1109
  "&:hover": {
1470
- backgroundColor: bg6.brandSecondary
1110
+ backgroundColor: buttonColors4.primary.bg,
1111
+ filter: "none",
1112
+ borderTopWidth: 1,
1113
+ borderBottomWidth: 1,
1114
+ borderTopLeftRadius: radius4.md,
1115
+ borderTopRightRadius: radius4.md
1116
+ }
1117
+ },
1118
+ // Disabled parity with the disabled contained Button: greyed face +
1119
+ // disabled fg, bevel geometry retained. MUI's own .Mui-disabled rule
1120
+ // only swaps color and border-shorthands the bevel away — and ties
1121
+ // with .Mui-selected at (0,2,0) — so this block sits AFTER selected
1122
+ // to win both.
1123
+ "&.Mui-disabled": {
1124
+ backgroundColor: (theme.vars || theme).palette.action.disabledBackground,
1125
+ color: (theme.vars || theme).palette.action.disabled,
1126
+ borderStyle: "solid",
1127
+ borderColor: fg4.tertiary,
1128
+ borderTopWidth: 1,
1129
+ borderRightWidth: 1,
1130
+ borderLeftWidth: 1,
1131
+ borderBottomWidth: 4,
1132
+ "&::before": { display: "none" },
1133
+ // selected+disabled keeps the pressed-in cue, greyed.
1134
+ "&.Mui-selected": {
1135
+ borderBottomWidth: 1,
1136
+ boxShadow: "inset 0 2px 4px 0 rgba(0,0,0,0.15)"
1471
1137
  }
1472
1138
  },
1473
1139
  "&:focus-visible": {
1474
- boxShadow: focusRings6.brandShadowXs
1140
+ boxShadow: focusRings4.brandShadowXs
1475
1141
  }
1476
- }
1142
+ })
1477
1143
  }
1478
1144
  },
1479
1145
  MuiToggleButtonGroup: {
1480
1146
  styleOverrides: {
1481
1147
  root: {
1482
- borderRadius: radius6.md,
1148
+ borderRadius: radius4.md,
1483
1149
  overflow: "hidden"
1484
1150
  },
1151
+ // The child ToggleButton's selected/hover/active rules set per-corner
1152
+ // radii and win insertion-order ties at (0,2,0), which would round the
1153
+ // internal seam corners of a segmented control. Re-pin every state at
1154
+ // higher specificity: seams stay square, only outer corners round.
1485
1155
  grouped: {
1486
1156
  borderRadius: 0,
1157
+ "&:hover, &:active, &.Mui-selected": {
1158
+ borderRadius: 0
1159
+ },
1487
1160
  "&:not(:first-of-type)": {
1488
1161
  marginLeft: -1
1489
1162
  },
1490
1163
  "&:first-of-type": {
1491
- borderTopLeftRadius: radius6.md,
1492
- borderBottomLeftRadius: radius6.md
1164
+ "&, &:hover, &:active, &.Mui-selected": {
1165
+ borderTopLeftRadius: radius4.md,
1166
+ borderBottomLeftRadius: radius4.md
1167
+ }
1493
1168
  },
1494
1169
  "&:last-of-type": {
1495
- borderTopRightRadius: radius6.md,
1496
- borderBottomRightRadius: radius6.md
1170
+ "&, &:hover, &:active, &.Mui-selected": {
1171
+ borderTopRightRadius: radius4.md,
1172
+ borderBottomRightRadius: radius4.md
1173
+ }
1497
1174
  }
1498
1175
  }
1499
1176
  }
@@ -1502,8 +1179,8 @@ function buildComponents(tokens) {
1502
1179
  MuiDrawer: {
1503
1180
  styleOverrides: {
1504
1181
  paper: {
1505
- backgroundColor: bg6.primary,
1506
- borderRight: `1px solid ${border6.secondary}`
1182
+ backgroundColor: bg4.primary,
1183
+ borderRight: `1px solid ${border4.secondary}`
1507
1184
  }
1508
1185
  }
1509
1186
  },
@@ -1514,9 +1191,9 @@ function buildComponents(tokens) {
1514
1191
  },
1515
1192
  styleOverrides: {
1516
1193
  root: {
1517
- borderRadius: radius6.xl,
1518
- border: `1px solid ${border6.secondary}`,
1519
- backgroundColor: bg6.primary,
1194
+ borderRadius: radius4.xl,
1195
+ border: `1px solid ${border4.secondary}`,
1196
+ backgroundColor: bg4.primary,
1520
1197
  boxShadow: tokenShadows.xs,
1521
1198
  overflow: "hidden"
1522
1199
  }
@@ -1563,35 +1240,35 @@ function buildComponents(tokens) {
1563
1240
  backgroundImage: "none"
1564
1241
  },
1565
1242
  rounded: {
1566
- borderRadius: radius6.lg
1243
+ borderRadius: radius4.lg
1567
1244
  },
1568
1245
  elevation1: {
1569
1246
  boxShadow: tokenShadows.xs,
1570
- border: `1px solid ${border6.secondary}`
1247
+ border: `1px solid ${border4.secondary}`
1571
1248
  },
1572
1249
  elevation2: {
1573
1250
  boxShadow: tokenShadows.sm,
1574
- border: `1px solid ${border6.secondary}`
1251
+ border: `1px solid ${border4.secondary}`
1575
1252
  },
1576
1253
  elevation3: {
1577
1254
  boxShadow: tokenShadows.md,
1578
- border: `1px solid ${border6.secondary}`
1255
+ border: `1px solid ${border4.secondary}`
1579
1256
  },
1580
1257
  elevation4: {
1581
1258
  boxShadow: tokenShadows.lg,
1582
- border: `1px solid ${border6.secondary}`
1259
+ border: `1px solid ${border4.secondary}`
1583
1260
  },
1584
1261
  elevation8: {
1585
1262
  boxShadow: tokenShadows.xl,
1586
- border: `1px solid ${border6.secondary}`
1263
+ border: `1px solid ${border4.secondary}`
1587
1264
  },
1588
1265
  elevation16: {
1589
1266
  boxShadow: tokenShadows["2xl"],
1590
- border: `1px solid ${border6.secondary}`
1267
+ border: `1px solid ${border4.secondary}`
1591
1268
  },
1592
1269
  elevation24: {
1593
1270
  boxShadow: tokenShadows["3xl"],
1594
- border: `1px solid ${border6.secondary}`
1271
+ border: `1px solid ${border4.secondary}`
1595
1272
  }
1596
1273
  }
1597
1274
  },
@@ -1603,8 +1280,8 @@ function buildComponents(tokens) {
1603
1280
  },
1604
1281
  styleOverrides: {
1605
1282
  root: {
1606
- border: `1px solid ${border6.secondary}`,
1607
- borderRadius: radius6.lg,
1283
+ border: `1px solid ${border4.secondary}`,
1284
+ borderRadius: radius4.lg,
1608
1285
  "&:not(:last-child)": {
1609
1286
  marginBottom: 8
1610
1287
  },
@@ -1614,7 +1291,7 @@ function buildComponents(tokens) {
1614
1291
  "&.Mui-expanded": {
1615
1292
  margin: 0,
1616
1293
  marginBottom: 8,
1617
- borderRadius: radius6.lg
1294
+ borderRadius: radius4.lg
1618
1295
  }
1619
1296
  }
1620
1297
  }
@@ -1626,7 +1303,7 @@ function buildComponents(tokens) {
1626
1303
  minHeight: 56,
1627
1304
  "&.Mui-expanded": {
1628
1305
  minHeight: 56,
1629
- borderBottom: `1px solid ${border6.secondary}`
1306
+ borderBottom: `1px solid ${border4.secondary}`
1630
1307
  }
1631
1308
  },
1632
1309
  content: {
@@ -1652,8 +1329,8 @@ function buildComponents(tokens) {
1652
1329
  },
1653
1330
  styleOverrides: {
1654
1331
  root: {
1655
- borderBottom: `1px solid ${border6.secondary}`,
1656
- backgroundColor: bg6.primary
1332
+ borderBottom: `1px solid ${border4.secondary}`,
1333
+ backgroundColor: bg4.primary
1657
1334
  }
1658
1335
  }
1659
1336
  },
@@ -1679,8 +1356,10 @@ function buildComponents(tokens) {
1679
1356
  root: {
1680
1357
  minHeight: 48
1681
1358
  },
1359
+ // Primary (brand) scale via varified tokens so it adapts per scheme:
1360
+ // charcoal on light, light-grey on dark.
1682
1361
  indicator: {
1683
- backgroundColor: info3[600],
1362
+ backgroundColor: bg4.brandSolid,
1684
1363
  height: 2
1685
1364
  }
1686
1365
  }
@@ -1695,14 +1374,16 @@ function buildComponents(tokens) {
1695
1374
  fontWeight: 600,
1696
1375
  lineHeight: "20px",
1697
1376
  textTransform: "none",
1698
- color: text6.tertiary,
1699
- borderRadius: `${radius6.md}px ${radius6.md}px 0 0`,
1377
+ color: text4.tertiary,
1378
+ borderRadius: `${radius4.md}px ${radius4.md}px 0 0`,
1700
1379
  "&:hover": {
1701
- backgroundColor: bg6.primaryHover
1380
+ backgroundColor: bg4.primaryHover
1702
1381
  },
1382
+ // Selected face uses brand bg/text tokens — light brand tint + dark
1383
+ // text on light; dark-grey face + light text on dark.
1703
1384
  "&.Mui-selected": {
1704
- color: info3[700],
1705
- backgroundColor: info3[50]
1385
+ color: text4.brandPrimary,
1386
+ backgroundColor: bg4.brandPrimary
1706
1387
  }
1707
1388
  }
1708
1389
  }
@@ -1710,60 +1391,67 @@ function buildComponents(tokens) {
1710
1391
  // ─── Chip ───────────────────────────────────────────────────────
1711
1392
  MuiChip: {
1712
1393
  variants: [
1713
- ...highlight2 ? [
1394
+ ...highlight3 ? [
1714
1395
  {
1715
1396
  props: { color: "highlight" },
1716
1397
  style: {
1717
1398
  "&.MuiChip-filled": {
1718
- backgroundColor: highlight2[600],
1399
+ backgroundColor: highlight3[600],
1719
1400
  color: base2.white,
1720
- "& .MuiChip-deleteIcon": { color: highlight2[200] }
1401
+ "& .MuiChip-deleteIcon": { color: highlight3[200] }
1721
1402
  },
1722
1403
  "&.MuiChip-outlined": {
1723
- borderColor: highlight2[300],
1724
- color: highlight2[700],
1725
- "& .MuiChip-deleteIcon": { color: highlight2[400] }
1404
+ borderColor: highlight3[300],
1405
+ color: highlight3[700],
1406
+ "& .MuiChip-deleteIcon": { color: highlight3[400] }
1726
1407
  }
1727
1408
  }
1728
1409
  }
1729
1410
  ] : []
1730
1411
  ],
1731
1412
  styleOverrides: {
1413
+ // ponytail: single 20px chip size — sizeSmall/sizeMedium render identically
1732
1414
  root: {
1733
- borderRadius: radius6.md
1415
+ borderRadius: radius4.md,
1416
+ height: 20,
1417
+ fontSize: 14,
1418
+ lineHeight: "20px"
1734
1419
  },
1735
1420
  label: {
1736
- fontWeight: 500
1421
+ fontWeight: 500,
1422
+ paddingLeft: 6,
1423
+ paddingRight: 6
1737
1424
  },
1738
- sizeSmall: {
1739
- fontSize: 12,
1740
- height: 20
1425
+ icon: {
1426
+ marginLeft: 6,
1427
+ marginRight: -2
1428
+ // 4px gap to label (label pads 6)
1741
1429
  },
1742
- sizeMedium: {
1430
+ deleteIcon: {
1743
1431
  fontSize: 14,
1744
- height: 24,
1745
- "& .MuiChip-deleteIcon": { fontSize: 16 }
1432
+ marginRight: 6,
1433
+ marginLeft: -2
1746
1434
  },
1747
1435
  colorDefault: {
1748
1436
  "&.MuiChip-filled": {
1749
- backgroundColor: tokens.bg.secondaryHover,
1750
- color: tokens.fg.secondary,
1751
- "& .MuiChip-deleteIcon": { color: tokens.fg.quinary }
1437
+ backgroundColor: tokens2.bg.secondaryHover,
1438
+ color: tokens2.fg.secondary,
1439
+ "& .MuiChip-deleteIcon": { color: tokens2.fg.quinary }
1752
1440
  }
1753
1441
  },
1754
1442
  colorPrimary: {
1755
1443
  "&.MuiChip-filled": {
1756
- backgroundColor: tokens.bg.brandPrimary,
1757
- color: tokens.fg.brandPrimary,
1758
- "& .MuiChip-deleteIcon": { color: tokens.fg.brandPrimary }
1444
+ backgroundColor: tokens2.bg.brandPrimary,
1445
+ color: tokens2.fg.brandPrimary,
1446
+ "& .MuiChip-deleteIcon": { color: tokens2.fg.brandPrimary }
1759
1447
  }
1760
1448
  },
1761
1449
  colorSecondary: {
1762
1450
  "&.MuiChip-filled": {
1763
- backgroundColor: highlight2 ? highlight2[50] : tokens.bg.secondarySubtle,
1764
- color: highlight2 ? highlight2[700] : tokens.text.secondary,
1451
+ backgroundColor: highlight3 ? highlight3[50] : tokens2.bg.secondarySubtle,
1452
+ color: highlight3 ? highlight3[700] : tokens2.text.secondary,
1765
1453
  "& .MuiChip-deleteIcon": {
1766
- color: highlight2 ? highlight2[500] : tokens.fg.secondary
1454
+ color: highlight3 ? highlight3[500] : tokens2.fg.secondary
1767
1455
  }
1768
1456
  }
1769
1457
  },
@@ -1790,9 +1478,9 @@ function buildComponents(tokens) {
1790
1478
  },
1791
1479
  colorInfo: {
1792
1480
  "&.MuiChip-filled": {
1793
- backgroundColor: info3[50],
1794
- color: info3[700],
1795
- "& .MuiChip-deleteIcon": { color: info3[400] }
1481
+ backgroundColor: info2[50],
1482
+ color: info2[700],
1483
+ "& .MuiChip-deleteIcon": { color: info2[400] }
1796
1484
  }
1797
1485
  }
1798
1486
  }
@@ -1808,7 +1496,7 @@ function buildComponents(tokens) {
1808
1496
  fontSize: 14,
1809
1497
  lineHeight: "20px",
1810
1498
  fontWeight: 500,
1811
- color: text6.secondary
1499
+ color: text4.secondary
1812
1500
  }
1813
1501
  }
1814
1502
  },
@@ -1824,30 +1512,30 @@ function buildComponents(tokens) {
1824
1512
  MuiTableCell: {
1825
1513
  styleOverrides: {
1826
1514
  root: {
1827
- borderBottom: `1px solid ${border6.secondary}`,
1515
+ borderBottom: `1px solid ${border4.secondary}`,
1828
1516
  padding: "16px 24px",
1829
1517
  fontSize: 14,
1830
1518
  lineHeight: "20px",
1831
- color: fg6.tertiary
1519
+ color: fg4.tertiary
1832
1520
  },
1833
1521
  head: {
1834
- backgroundColor: bg6.secondary,
1835
- color: fg6.tertiary,
1522
+ backgroundColor: bg4.secondary,
1523
+ color: fg4.tertiary,
1836
1524
  fontWeight: 500,
1837
1525
  fontSize: 12,
1838
1526
  lineHeight: "18px"
1839
1527
  },
1840
1528
  body: {
1841
- color: fg6.tertiary
1529
+ color: fg4.tertiary
1842
1530
  }
1843
1531
  }
1844
1532
  },
1845
1533
  MuiTableHead: {
1846
1534
  styleOverrides: {
1847
1535
  root: {
1848
- backgroundColor: bg6.secondary,
1536
+ backgroundColor: bg4.secondary,
1849
1537
  "& .MuiTableRow-root:last-child .MuiTableCell-root": {
1850
- borderBottom: `1px solid ${border6.secondary}`
1538
+ borderBottom: `1px solid ${border4.secondary}`
1851
1539
  }
1852
1540
  }
1853
1541
  }
@@ -1855,17 +1543,17 @@ function buildComponents(tokens) {
1855
1543
  MuiTableRow: {
1856
1544
  styleOverrides: {
1857
1545
  root: {
1858
- backgroundColor: bg6.secondary,
1546
+ backgroundColor: bg4.secondary,
1859
1547
  "&:last-child td, &:last-child th": {
1860
1548
  border: 0
1861
1549
  },
1862
1550
  "&:hover": {
1863
- backgroundColor: bg6.primaryHover
1551
+ backgroundColor: bg4.primaryHover
1864
1552
  },
1865
1553
  "&.Mui-selected": {
1866
- backgroundColor: info3[50],
1554
+ backgroundColor: info2[50],
1867
1555
  "&:hover": {
1868
- backgroundColor: info3[100]
1556
+ backgroundColor: info2[100]
1869
1557
  }
1870
1558
  }
1871
1559
  }
@@ -1874,8 +1562,8 @@ function buildComponents(tokens) {
1874
1562
  MuiTableContainer: {
1875
1563
  styleOverrides: {
1876
1564
  root: {
1877
- borderRadius: radius6.xl,
1878
- border: `1px solid ${border6.secondary}`,
1565
+ borderRadius: radius4.xl,
1566
+ border: `1px solid ${border4.secondary}`,
1879
1567
  boxShadow: "none"
1880
1568
  }
1881
1569
  }
@@ -1889,27 +1577,37 @@ function buildComponents(tokens) {
1889
1577
  lineHeight: "18px",
1890
1578
  minWidth: 20,
1891
1579
  height: 20,
1892
- borderRadius: radius6.full
1580
+ borderRadius: radius4.full
1893
1581
  },
1894
1582
  colorPrimary: {
1895
- backgroundColor: bg6.brandSolid
1583
+ backgroundColor: bg4.brandSolid,
1584
+ // brandSolid is a dark charcoal in light mode but a LIGHT grey in
1585
+ // dark; MUI's default white contrastText then vanishes on it. Pin the
1586
+ // on-brand fg (white in light / dark in dark) so the count stays legible.
1587
+ color: buttonColors4.primary.fg
1588
+ },
1589
+ colorSecondary: {
1590
+ // secondarySolid inverts to a LIGHT grey in dark; the raw MUI
1591
+ // contrastText stays white and is unreadable. Pin a mode-aware fg.
1592
+ backgroundColor: bg4.secondarySolid,
1593
+ color: buttonColors4.secondary.fg
1896
1594
  },
1897
1595
  colorError: {
1898
- backgroundColor: bg6.errorSolid
1596
+ backgroundColor: bg4.errorSolid
1899
1597
  },
1900
1598
  colorSuccess: {
1901
- backgroundColor: bg6.successSolid
1599
+ backgroundColor: bg4.successSolid
1902
1600
  },
1903
1601
  colorWarning: {
1904
- backgroundColor: bg6.warningSolid
1602
+ backgroundColor: bg4.warningSolid
1905
1603
  },
1906
1604
  dot: {
1907
1605
  minWidth: 8,
1908
1606
  height: 8,
1909
- borderRadius: radius6.full,
1910
- ...highlight2 && {
1607
+ borderRadius: radius4.full,
1608
+ ...highlight3 && {
1911
1609
  "&.MuiBadge-colorDefault, &.MuiBadge-colorPrimary": {
1912
- backgroundColor: highlight2[500]
1610
+ backgroundColor: highlight3[500]
1913
1611
  }
1914
1612
  }
1915
1613
  }
@@ -1919,7 +1617,7 @@ function buildComponents(tokens) {
1919
1617
  MuiDivider: {
1920
1618
  styleOverrides: {
1921
1619
  root: {
1922
- borderColor: border6.secondary
1620
+ borderColor: border4.secondary
1923
1621
  }
1924
1622
  }
1925
1623
  },
@@ -1934,16 +1632,16 @@ function buildComponents(tokens) {
1934
1632
  MuiListItemButton: {
1935
1633
  styleOverrides: {
1936
1634
  root: {
1937
- borderRadius: radius6.sm,
1635
+ borderRadius: radius4.sm,
1938
1636
  padding: "8px 12px",
1939
1637
  "&:hover": {
1940
- backgroundColor: bg6.primaryHover
1638
+ backgroundColor: bg4.primaryHover
1941
1639
  },
1942
1640
  "&.Mui-selected": {
1943
- backgroundColor: info3[50],
1944
- color: info3[700],
1641
+ backgroundColor: info2[50],
1642
+ color: info2[700],
1945
1643
  "&:hover": {
1946
- backgroundColor: info3[100]
1644
+ backgroundColor: info2[100]
1947
1645
  }
1948
1646
  }
1949
1647
  }
@@ -1953,7 +1651,7 @@ function buildComponents(tokens) {
1953
1651
  styleOverrides: {
1954
1652
  root: {
1955
1653
  minWidth: 36,
1956
- color: fg6.quaternary
1654
+ color: fg4.quaternary
1957
1655
  }
1958
1656
  }
1959
1657
  },
@@ -1963,12 +1661,12 @@ function buildComponents(tokens) {
1963
1661
  fontSize: 14,
1964
1662
  lineHeight: "20px",
1965
1663
  fontWeight: 500,
1966
- color: text6.secondary
1664
+ color: text4.secondary
1967
1665
  },
1968
1666
  secondary: {
1969
1667
  fontSize: 14,
1970
1668
  lineHeight: "20px",
1971
- color: text6.quaternary
1669
+ color: text4.quaternary
1972
1670
  }
1973
1671
  }
1974
1672
  },
@@ -1976,17 +1674,21 @@ function buildComponents(tokens) {
1976
1674
  MuiTooltip: {
1977
1675
  styleOverrides: {
1978
1676
  tooltip: {
1979
- backgroundColor: bg6.primarySolid,
1980
- color: text6.white,
1677
+ // Inverted surface: charcoal in light mode, near-white in dark. The
1678
+ // text must invert WITH the face (text.white is mode-invariant and
1679
+ // vanished on the dark-mode light face) — primary.fg is the on-solid
1680
+ // fg: white in light, near-black in dark.
1681
+ backgroundColor: bg4.primarySolid,
1682
+ color: buttonColors4.primary.fg,
1981
1683
  fontSize: 12,
1982
1684
  lineHeight: "18px",
1983
1685
  fontWeight: 600,
1984
1686
  padding: "8px 12px",
1985
- borderRadius: radius6.md,
1687
+ borderRadius: radius4.md,
1986
1688
  boxShadow: tokenShadows.lg
1987
1689
  },
1988
1690
  arrow: {
1989
- color: bg6.primarySolid
1691
+ color: bg4.primarySolid
1990
1692
  }
1991
1693
  }
1992
1694
  },
@@ -1996,25 +1698,25 @@ function buildComponents(tokens) {
1996
1698
  variant: "standard"
1997
1699
  },
1998
1700
  variants: [
1999
- ...highlight2 ? [
1701
+ ...highlight3 ? [
2000
1702
  {
2001
1703
  props: { variant: "featured" },
2002
1704
  style: {
2003
- borderRadius: radius6.xl,
1705
+ borderRadius: radius4.xl,
2004
1706
  fontSize: 14,
2005
1707
  lineHeight: "20px",
2006
1708
  padding: "12px 16px",
2007
1709
  alignItems: "center",
2008
- backgroundColor: highlight2[50],
2009
- color: highlight2[700],
2010
- border: `1px solid ${highlight2[200]}`,
1710
+ backgroundColor: highlight3[50],
1711
+ color: highlight3[700],
1712
+ border: `1px solid ${highlight3[200]}`,
2011
1713
  "& .MuiAlert-icon": {
2012
- color: highlight2[600],
1714
+ color: highlight3[600],
2013
1715
  padding: 0,
2014
1716
  marginRight: 12
2015
1717
  },
2016
1718
  "& .MuiAlertTitle-root": {
2017
- color: highlight2[800]
1719
+ color: highlight3[800]
2018
1720
  }
2019
1721
  }
2020
1722
  }
@@ -2022,44 +1724,66 @@ function buildComponents(tokens) {
2022
1724
  ],
2023
1725
  styleOverrides: {
2024
1726
  root: {
2025
- borderRadius: radius6.xl,
1727
+ borderRadius: radius4.xl,
2026
1728
  fontSize: 14,
2027
1729
  lineHeight: "20px",
2028
1730
  padding: "12px 16px",
2029
1731
  alignItems: "center"
2030
1732
  },
2031
- standardError: {
2032
- backgroundColor: bg6.errorPrimary,
1733
+ // All four severities share one scheme so they read consistently:
1734
+ // light → bg [50], text [700], border [300], icon [600]
1735
+ // dark → bg [950], text [200], border [800], icon [400]
1736
+ // Light is unchanged; dark uses a deep tinted bg with a LIGHT text tint
1737
+ // (the previous [700] text sat too dark on the deep dark bg), and info
1738
+ // now goes dark like the rest instead of staying light.
1739
+ standardError: ({ theme }) => ({
1740
+ backgroundColor: error2[50],
2033
1741
  color: error2[700],
2034
- border: `1px solid ${border6.error}`,
2035
- "& .MuiAlert-icon": {
2036
- color: fg6.errorPrimary
2037
- }
2038
- },
2039
- standardWarning: {
2040
- backgroundColor: bg6.warningPrimary,
1742
+ border: `1px solid ${error2[300]}`,
1743
+ "& .MuiAlert-icon": { color: error2[600] },
1744
+ ...theme.applyStyles("dark", {
1745
+ backgroundColor: error2[950],
1746
+ color: error2[200],
1747
+ border: `1px solid ${error2[800]}`,
1748
+ "& .MuiAlert-icon": { color: error2[400] }
1749
+ })
1750
+ }),
1751
+ standardWarning: ({ theme }) => ({
1752
+ backgroundColor: warning2[50],
2041
1753
  color: warning2[700],
2042
1754
  border: `1px solid ${warning2[300]}`,
2043
- "& .MuiAlert-icon": {
2044
- color: fg6.warningPrimary
2045
- }
2046
- },
2047
- standardSuccess: {
2048
- backgroundColor: bg6.successPrimary,
1755
+ "& .MuiAlert-icon": { color: warning2[600] },
1756
+ ...theme.applyStyles("dark", {
1757
+ backgroundColor: warning2[950],
1758
+ color: warning2[200],
1759
+ border: `1px solid ${warning2[800]}`,
1760
+ "& .MuiAlert-icon": { color: warning2[400] }
1761
+ })
1762
+ }),
1763
+ standardSuccess: ({ theme }) => ({
1764
+ backgroundColor: success2[50],
2049
1765
  color: success2[700],
2050
1766
  border: `1px solid ${success2[300]}`,
2051
- "& .MuiAlert-icon": {
2052
- color: fg6.successPrimary
2053
- }
2054
- },
2055
- standardInfo: {
2056
- backgroundColor: info3[50],
2057
- color: info3[700],
2058
- border: `1px solid ${info3[300]}`,
2059
- "& .MuiAlert-icon": {
2060
- color: info3[600]
2061
- }
2062
- },
1767
+ "& .MuiAlert-icon": { color: success2[600] },
1768
+ ...theme.applyStyles("dark", {
1769
+ backgroundColor: success2[950],
1770
+ color: success2[200],
1771
+ border: `1px solid ${success2[800]}`,
1772
+ "& .MuiAlert-icon": { color: success2[400] }
1773
+ })
1774
+ }),
1775
+ standardInfo: ({ theme }) => ({
1776
+ backgroundColor: info2[50],
1777
+ color: info2[700],
1778
+ border: `1px solid ${info2[300]}`,
1779
+ "& .MuiAlert-icon": { color: info2[600] },
1780
+ ...theme.applyStyles("dark", {
1781
+ backgroundColor: info2[950],
1782
+ color: info2[200],
1783
+ border: `1px solid ${info2[800]}`,
1784
+ "& .MuiAlert-icon": { color: info2[400] }
1785
+ })
1786
+ }),
2063
1787
  icon: {
2064
1788
  padding: 0,
2065
1789
  marginRight: 12
@@ -2079,8 +1803,10 @@ function buildComponents(tokens) {
2079
1803
  // ─── Backdrop ───────────────────────────────────────────────────
2080
1804
  MuiBackdrop: {
2081
1805
  styleOverrides: {
1806
+ // Neutral greyscale scrim (was a blue-tinted #101828). gray[950] with
1807
+ // alpha reads as a true-neutral dim in both light and dark.
2082
1808
  root: {
2083
- backgroundColor: "rgba(16, 24, 40, 0.7)"
1809
+ backgroundColor: "rgba(9, 9, 11, 0.7)"
2084
1810
  }
2085
1811
  }
2086
1812
  },
@@ -2088,7 +1814,7 @@ function buildComponents(tokens) {
2088
1814
  MuiDialog: {
2089
1815
  styleOverrides: {
2090
1816
  paper: {
2091
- borderRadius: radius6.xl,
1817
+ borderRadius: radius4.xl,
2092
1818
  boxShadow: tokenShadows.xl,
2093
1819
  padding: 0
2094
1820
  }
@@ -2100,7 +1826,7 @@ function buildComponents(tokens) {
2100
1826
  fontSize: 18,
2101
1827
  lineHeight: "28px",
2102
1828
  fontWeight: 600,
2103
- color: text6.primary,
1829
+ color: text4.primary,
2104
1830
  padding: "24px 24px 0"
2105
1831
  }
2106
1832
  }
@@ -2111,7 +1837,7 @@ function buildComponents(tokens) {
2111
1837
  padding: "20px 24px",
2112
1838
  fontSize: 14,
2113
1839
  lineHeight: "20px",
2114
- color: text6.tertiary
1840
+ color: text4.tertiary
2115
1841
  }
2116
1842
  }
2117
1843
  },
@@ -2127,27 +1853,27 @@ function buildComponents(tokens) {
2127
1853
  MuiLinearProgress: {
2128
1854
  styleOverrides: {
2129
1855
  root: {
2130
- borderRadius: radius6.full,
1856
+ borderRadius: radius4.full,
2131
1857
  height: 8,
2132
- backgroundColor: border6.secondary
1858
+ backgroundColor: border4.secondary
2133
1859
  },
2134
1860
  barColorPrimary: {
2135
- backgroundColor: fg6.brandPrimary,
2136
- borderRadius: radius6.full
1861
+ backgroundColor: fg4.brandPrimary,
1862
+ borderRadius: radius4.full
2137
1863
  },
2138
1864
  barColorSecondary: {
2139
- backgroundColor: bg6.secondarySolid,
2140
- borderRadius: radius6.full
1865
+ backgroundColor: bg4.secondarySolid,
1866
+ borderRadius: radius4.full
2141
1867
  }
2142
1868
  }
2143
1869
  },
2144
1870
  MuiCircularProgress: {
2145
1871
  styleOverrides: {
2146
1872
  colorPrimary: {
2147
- color: fg6.brandPrimary
1873
+ color: fg4.brandPrimary
2148
1874
  },
2149
1875
  colorSecondary: {
2150
- color: bg6.secondarySolid
1876
+ color: bg4.secondarySolid
2151
1877
  }
2152
1878
  }
2153
1879
  },
@@ -2158,29 +1884,36 @@ function buildComponents(tokens) {
2158
1884
  },
2159
1885
  styleOverrides: {
2160
1886
  root: {
2161
- backgroundColor: bg6.tertiary
1887
+ backgroundColor: bg4.tertiary
2162
1888
  },
2163
1889
  rounded: {
2164
- borderRadius: radius6.md
1890
+ borderRadius: radius4.md
2165
1891
  },
2166
1892
  circular: {
2167
- borderRadius: radius6.full
1893
+ borderRadius: radius4.full
2168
1894
  }
2169
1895
  }
2170
1896
  },
2171
1897
  // ─── Snackbar ───────────────────────────────────────────────────
2172
1898
  MuiSnackbarContent: {
2173
1899
  styleOverrides: {
2174
- root: {
2175
- backgroundColor: bg6.primarySolid,
2176
- color: text6.white,
2177
- borderRadius: radius6.xl,
1900
+ // A toast is an inverse surface: charcoal in light. bg.primarySolid
1901
+ // inverts to a light value in dark (white-on-white), so pin the dark
1902
+ // scheme to a dark grey with light text instead.
1903
+ root: ({ theme }) => ({
1904
+ backgroundColor: bg4.primarySolid,
1905
+ color: text4.white,
1906
+ borderRadius: radius4.xl,
2178
1907
  boxShadow: tokenShadows.lg,
2179
1908
  fontSize: 14,
2180
1909
  lineHeight: "20px",
2181
1910
  fontWeight: 500,
2182
- padding: "6px 16px"
2183
- }
1911
+ padding: "6px 16px",
1912
+ ...theme.applyStyles("dark", {
1913
+ backgroundColor: bg4.tertiary,
1914
+ color: text4.primary
1915
+ })
1916
+ })
2184
1917
  }
2185
1918
  },
2186
1919
  // ─── Typography ─────────────────────────────────────────────────
@@ -2206,53 +1939,53 @@ function buildComponents(tokens) {
2206
1939
  MuiSlider: {
2207
1940
  styleOverrides: {
2208
1941
  root: {
2209
- color: fg6.brandPrimary,
1942
+ color: fg4.brandPrimary,
2210
1943
  height: 8,
2211
1944
  "&.Mui-disabled": {
2212
- color: border6.secondary
1945
+ color: border4.secondary
2213
1946
  }
2214
1947
  },
2215
1948
  thumb: {
2216
1949
  width: 20,
2217
1950
  height: 20,
2218
- backgroundColor: sliderColors6.handleBg,
2219
- border: `2px solid ${sliderColors6.handleBorder}`,
1951
+ backgroundColor: sliderColors4.handleBg,
1952
+ border: `2px solid ${sliderColors4.handleBorder}`,
2220
1953
  boxShadow: tokenShadows.xs,
2221
1954
  "&:hover, &.Mui-focusVisible": {
2222
- boxShadow: focusRings6.brandShadowXs
1955
+ boxShadow: focusRings4.brandShadowXs
2223
1956
  },
2224
1957
  "&.Mui-active": {
2225
- boxShadow: focusRings6.brandShadowSm
1958
+ boxShadow: focusRings4.brandShadowSm
2226
1959
  }
2227
1960
  },
2228
1961
  track: {
2229
- borderRadius: radius6.full,
1962
+ borderRadius: radius4.full,
2230
1963
  border: "none"
2231
1964
  },
2232
1965
  rail: {
2233
- backgroundColor: border6.secondary,
2234
- borderRadius: radius6.full,
1966
+ backgroundColor: border4.secondary,
1967
+ borderRadius: radius4.full,
2235
1968
  opacity: 1
2236
1969
  },
2237
1970
  valueLabel: {
2238
- backgroundColor: bg6.primarySolid,
2239
- borderRadius: radius6.md,
1971
+ backgroundColor: bg4.primarySolid,
1972
+ borderRadius: radius4.md,
2240
1973
  fontSize: 12,
2241
1974
  fontWeight: 600,
2242
1975
  padding: "4px 8px"
2243
1976
  },
2244
1977
  mark: {
2245
- backgroundColor: border6.secondary,
1978
+ backgroundColor: border4.secondary,
2246
1979
  width: 4,
2247
1980
  height: 4,
2248
- borderRadius: radius6.full
1981
+ borderRadius: radius4.full
2249
1982
  },
2250
1983
  markActive: {
2251
- backgroundColor: fg6.brandPrimary
1984
+ backgroundColor: fg4.brandPrimary
2252
1985
  },
2253
1986
  markLabel: {
2254
1987
  fontSize: 12,
2255
- color: text6.tertiary
1988
+ color: text4.tertiary
2256
1989
  }
2257
1990
  }
2258
1991
  },
@@ -2260,17 +1993,17 @@ function buildComponents(tokens) {
2260
1993
  MuiRating: {
2261
1994
  styleOverrides: {
2262
1995
  root: {
2263
- color: fg6.brandPrimary,
1996
+ color: fg4.brandPrimary,
2264
1997
  gap: 4
2265
1998
  },
2266
1999
  iconEmpty: {
2267
- color: border6.secondary
2000
+ color: border4.secondary
2268
2001
  },
2269
2002
  iconFilled: {
2270
- color: fg6.brandPrimary
2003
+ color: fg4.brandPrimary
2271
2004
  },
2272
2005
  iconHover: {
2273
- color: buttonColors6.primary.bgHover
2006
+ color: buttonColors4.primary.bgHover
2274
2007
  }
2275
2008
  }
2276
2009
  },
@@ -2283,30 +2016,33 @@ function buildComponents(tokens) {
2283
2016
  MuiPaginationItem: {
2284
2017
  styleOverrides: {
2285
2018
  root: {
2286
- borderRadius: radius6.md,
2019
+ borderRadius: radius4.md,
2287
2020
  fontSize: 14,
2288
2021
  fontWeight: 500,
2289
- color: text6.secondary,
2022
+ color: text4.secondary,
2290
2023
  "&:hover": {
2291
- backgroundColor: bg6.primaryHover
2024
+ backgroundColor: bg4.primaryHover
2292
2025
  },
2293
2026
  "&.Mui-selected": {
2294
- backgroundColor: fg6.brandPrimary,
2295
- color: base2.white,
2027
+ backgroundColor: fg4.brandPrimary,
2028
+ // fg.brandPrimary is charcoal in light but a LIGHT grey in dark, so
2029
+ // a hardcoded white number vanished. primary.fg is the on-solid fg
2030
+ // (white in light / near-black in dark) — inverts with the face.
2031
+ color: buttonColors4.primary.fg,
2296
2032
  "&:hover": {
2297
- backgroundColor: buttonColors6.primary.bgHover
2033
+ backgroundColor: buttonColors4.primary.bgHover
2298
2034
  }
2299
2035
  },
2300
2036
  "&.Mui-focusVisible": {
2301
- boxShadow: focusRings6.brandShadowXs
2037
+ boxShadow: focusRings4.brandShadowXs
2302
2038
  }
2303
2039
  },
2304
2040
  outlined: {
2305
- border: `1px solid ${border6.primary}`,
2041
+ border: `1px solid ${border4.primary}`,
2306
2042
  "&.Mui-selected": {
2307
- backgroundColor: fg6.brandPrimary,
2308
- color: base2.white,
2309
- borderColor: fg6.brandPrimary
2043
+ backgroundColor: fg4.brandPrimary,
2044
+ color: buttonColors4.primary.fg,
2045
+ borderColor: fg4.brandPrimary
2310
2046
  }
2311
2047
  }
2312
2048
  }
@@ -2315,20 +2051,24 @@ function buildComponents(tokens) {
2315
2051
  MuiAvatar: {
2316
2052
  styleOverrides: {
2317
2053
  root: {
2318
- backgroundColor: avatarColors6.bg,
2054
+ backgroundColor: avatarColors3.bg,
2055
+ // MUI defaults letter/initials color to palette.background.default
2056
+ // (near-invisible on the avatar bg, esp. in dark). Set it explicitly;
2057
+ // avatarColors.fg is a palette var so it swaps per scheme.
2058
+ color: avatarColors3.fg,
2319
2059
  fontSize: 14,
2320
2060
  fontWeight: 600,
2321
- border: `1.5px solid ${avatarColors6.contrastBorder}`
2061
+ border: `1.5px solid ${avatarColors3.contrastBorder}`
2322
2062
  },
2323
2063
  rounded: {
2324
- borderRadius: radius6.md
2064
+ borderRadius: radius4.md
2325
2065
  }
2326
2066
  }
2327
2067
  },
2328
2068
  MuiAvatarGroup: {
2329
2069
  styleOverrides: {
2330
2070
  avatar: {
2331
- border: `2px solid ${avatarColors6.profilePhotoBorder}`,
2071
+ border: `2px solid ${avatarColors3.profilePhotoBorder}`,
2332
2072
  width: 32,
2333
2073
  height: 32,
2334
2074
  fontSize: 13,
@@ -2340,17 +2080,17 @@ function buildComponents(tokens) {
2340
2080
  MuiBottomNavigation: {
2341
2081
  styleOverrides: {
2342
2082
  root: {
2343
- backgroundColor: bg6.primary,
2344
- borderTop: `1px solid ${border6.secondary}`
2083
+ backgroundColor: bg4.primary,
2084
+ borderTop: `1px solid ${border4.secondary}`
2345
2085
  }
2346
2086
  }
2347
2087
  },
2348
2088
  MuiBottomNavigationAction: {
2349
2089
  styleOverrides: {
2350
2090
  root: {
2351
- color: fg6.quaternary,
2091
+ color: fg4.quaternary,
2352
2092
  "&.Mui-selected": {
2353
- color: fg6.brandPrimary
2093
+ color: fg4.brandPrimary
2354
2094
  }
2355
2095
  },
2356
2096
  label: {
@@ -2364,35 +2104,26 @@ function buildComponents(tokens) {
2364
2104
  }
2365
2105
  },
2366
2106
  // ─── SpeedDial ──────────────────────────────────────────────────
2367
- MuiSpeedDial: {
2368
- styleOverrides: {
2369
- fab: {
2370
- backgroundColor: fg6.brandPrimary,
2371
- color: base2.white,
2372
- boxShadow: tokenShadows.md,
2373
- "&:hover": {
2374
- backgroundColor: buttonColors6.primary.bgHover
2375
- }
2376
- }
2377
- }
2378
- },
2107
+ // The main FAB renders a MuiFab internally, so it inherits the full
2108
+ // faux-3D Fab styling (bevel, light sweep, hover lift) with no override
2109
+ // here. Only the smaller action buttons get their own flat treatment.
2379
2110
  MuiSpeedDialAction: {
2380
2111
  styleOverrides: {
2381
2112
  fab: {
2382
- backgroundColor: bg6.primary,
2383
- color: fg6.secondary,
2113
+ backgroundColor: bg4.primary,
2114
+ color: fg4.secondary,
2384
2115
  boxShadow: tokenShadows.sm,
2385
- border: `1px solid ${border6.secondary}`,
2116
+ border: `1px solid ${border4.secondary}`,
2386
2117
  "&:hover": {
2387
- backgroundColor: bg6.primaryHover
2118
+ backgroundColor: bg4.primaryHover
2388
2119
  }
2389
2120
  },
2390
2121
  staticTooltipLabel: {
2391
- backgroundColor: bg6.primarySolid,
2392
- color: text6.white,
2122
+ backgroundColor: bg4.primarySolid,
2123
+ color: text4.white,
2393
2124
  fontSize: 12,
2394
2125
  fontWeight: 600,
2395
- borderRadius: radius6.md,
2126
+ borderRadius: radius4.md,
2396
2127
  whiteSpace: "nowrap"
2397
2128
  }
2398
2129
  }
@@ -2410,13 +2141,13 @@ function buildComponents(tokens) {
2410
2141
  label: {
2411
2142
  fontSize: 14,
2412
2143
  fontWeight: 500,
2413
- color: text6.tertiary,
2144
+ color: text4.tertiary,
2414
2145
  "&.Mui-active": {
2415
- color: text6.primary,
2146
+ color: text4.primary,
2416
2147
  fontWeight: 600
2417
2148
  },
2418
2149
  "&.Mui-completed": {
2419
- color: text6.primary,
2150
+ color: text4.primary,
2420
2151
  fontWeight: 500
2421
2152
  }
2422
2153
  }
@@ -2425,12 +2156,18 @@ function buildComponents(tokens) {
2425
2156
  MuiStepIcon: {
2426
2157
  styleOverrides: {
2427
2158
  root: {
2428
- color: border6.secondary,
2159
+ color: border4.secondary,
2160
+ // Use the brand-solid button pairing so the number's fill always
2161
+ // contrasts its circle — fg.brandPrimary is near-white in dark mode,
2162
+ // which collided with MUI's default white text (white-on-white).
2429
2163
  "&.Mui-active": {
2430
- color: fg6.brandPrimary
2164
+ color: buttonColors4.primary.bg,
2165
+ "& .MuiStepIcon-text": {
2166
+ fill: buttonColors4.primary.fg
2167
+ }
2431
2168
  },
2432
2169
  "&.Mui-completed": {
2433
- color: fg6.brandPrimary
2170
+ color: buttonColors4.primary.bg
2434
2171
  }
2435
2172
  },
2436
2173
  text: {
@@ -2442,7 +2179,7 @@ function buildComponents(tokens) {
2442
2179
  MuiStepConnector: {
2443
2180
  styleOverrides: {
2444
2181
  line: {
2445
- borderColor: border6.secondary
2182
+ borderColor: border4.secondary
2446
2183
  },
2447
2184
  lineHorizontal: {
2448
2185
  borderTopWidth: 2
@@ -2460,20 +2197,20 @@ function buildComponents(tokens) {
2460
2197
  padding: "8px 0"
2461
2198
  },
2462
2199
  dot: {
2463
- backgroundColor: border6.secondary,
2200
+ backgroundColor: border4.secondary,
2464
2201
  width: 8,
2465
2202
  height: 8
2466
2203
  },
2467
2204
  dotActive: {
2468
- backgroundColor: fg6.brandPrimary
2205
+ backgroundColor: fg4.brandPrimary
2469
2206
  },
2470
2207
  progress: {
2471
2208
  width: "100%",
2472
- backgroundColor: border6.secondary,
2473
- borderRadius: radius6.full,
2209
+ backgroundColor: border4.secondary,
2210
+ borderRadius: radius4.full,
2474
2211
  "& .MuiLinearProgress-bar": {
2475
- backgroundColor: fg6.brandPrimary,
2476
- borderRadius: radius6.full
2212
+ backgroundColor: fg4.brandPrimary,
2213
+ borderRadius: radius4.full
2477
2214
  }
2478
2215
  }
2479
2216
  }
@@ -2486,18 +2223,27 @@ function buildComponents(tokens) {
2486
2223
  lineHeight: "20px"
2487
2224
  },
2488
2225
  separator: {
2489
- color: breadcrumbColors6.iconFg,
2226
+ color: breadcrumbColors4.iconFg,
2490
2227
  marginLeft: 4,
2491
2228
  marginRight: 4
2492
2229
  },
2493
2230
  li: {
2231
+ fontSize: 14,
2232
+ lineHeight: "20px",
2494
2233
  "& a": {
2495
- color: breadcrumbColors6.fg,
2234
+ color: breadcrumbColors4.fg,
2496
2235
  textDecoration: "none",
2497
2236
  fontWeight: 500,
2498
2237
  "&:hover": {
2499
- color: breadcrumbColors6.fgHover
2238
+ color: breadcrumbColors4.fgHover
2500
2239
  }
2240
+ },
2241
+ // Current-page item (a non-link <Typography>) must match the link
2242
+ // size/weight — only its color sets it apart, no bigger/lighter text.
2243
+ "& .MuiTypography-root": {
2244
+ fontSize: 14,
2245
+ lineHeight: "20px",
2246
+ fontWeight: 500
2501
2247
  }
2502
2248
  }
2503
2249
  }
@@ -2505,24 +2251,35 @@ function buildComponents(tokens) {
2505
2251
  // ─── Link ───────────────────────────────────────────────────────
2506
2252
  MuiLink: {
2507
2253
  styleOverrides: {
2508
- root: {
2509
- color: info3[600],
2254
+ // info is a raw hue scale (not varified), so the dark link color must be
2255
+ // set explicitly. info[600] is too dark on the near-black dark bg — step
2256
+ // up to lighter tiers for legible contrast.
2257
+ root: ({ theme }) => ({
2258
+ color: info2[600],
2510
2259
  fontWeight: 500,
2511
- textDecorationColor: info3[600],
2260
+ textDecorationColor: info2[600],
2512
2261
  "&:hover": {
2513
- color: info3[700],
2514
- textDecorationColor: info3[700]
2515
- }
2516
- }
2262
+ color: info2[700],
2263
+ textDecorationColor: info2[700]
2264
+ },
2265
+ ...theme.applyStyles("dark", {
2266
+ color: info2[400],
2267
+ textDecorationColor: info2[400],
2268
+ "&:hover": {
2269
+ color: info2[300],
2270
+ textDecorationColor: info2[300]
2271
+ }
2272
+ })
2273
+ })
2517
2274
  }
2518
2275
  },
2519
2276
  // ─── Popover ────────────────────────────────────────────────────
2520
2277
  MuiPopover: {
2521
2278
  styleOverrides: {
2522
2279
  paper: {
2523
- borderRadius: radius6.lg,
2280
+ borderRadius: radius4.lg,
2524
2281
  boxShadow: tokenShadows.lg,
2525
- border: `1px solid ${border6.secondary}`
2282
+ border: `1px solid ${border4.secondary}`
2526
2283
  }
2527
2284
  }
2528
2285
  },
@@ -2533,14 +2290,74 @@ function buildComponents(tokens) {
2533
2290
  }
2534
2291
  },
2535
2292
  // ─── CardActionArea ─────────────────────────────────────────────
2293
+ // Clickable-card affordance: mirrors the Button's faux-3D bevel (thick edge
2294
+ // that flips bottom->top on hover), light glaze sweep, border-color shift,
2295
+ // and press-to-sink. This is what visually marks a card as clickable — use
2296
+ // <Card><CardActionArea>…</CardActionArea></Card> for any interactive card.
2536
2297
  MuiCardActionArea: {
2537
2298
  styleOverrides: {
2538
2299
  root: {
2300
+ position: "relative",
2301
+ overflow: "hidden",
2302
+ borderRadius: radius4.xl,
2303
+ borderStyle: "solid",
2304
+ borderColor: border4.primary,
2305
+ borderTopWidth: 1,
2306
+ borderRightWidth: 1,
2307
+ borderLeftWidth: 1,
2308
+ borderBottomWidth: 4,
2309
+ borderBottomLeftRadius: radius4["2xl"],
2310
+ borderBottomRightRadius: radius4["2xl"],
2311
+ boxShadow: tokenShadows.xs,
2312
+ transition: "box-shadow 300ms ease, border-width 300ms ease, border-radius 300ms ease, border-color 300ms ease, opacity 300ms ease",
2313
+ // Moving glaze — a soft light streak that sweeps top->bottom on hover.
2314
+ "&::before": {
2315
+ content: '""',
2316
+ position: "absolute",
2317
+ left: 0,
2318
+ top: "-150%",
2319
+ width: "100%",
2320
+ height: 6,
2321
+ borderRadius: 4,
2322
+ backgroundColor: "color-mix(in srgb, currentColor 40%, #fff)",
2323
+ boxShadow: "0 0 28px 6px color-mix(in srgb, currentColor 40%, #fff)",
2324
+ opacity: 0.35,
2325
+ filter: "blur(3px)",
2326
+ pointerEvents: "none",
2327
+ transition: "top 600ms ease-in-out",
2328
+ zIndex: 1
2329
+ },
2330
+ "&:hover": {
2331
+ borderColor: border4.brand,
2332
+ borderTopWidth: 4,
2333
+ borderBottomWidth: 1,
2334
+ borderTopLeftRadius: radius4["2xl"],
2335
+ borderTopRightRadius: radius4["2xl"],
2336
+ borderBottomLeftRadius: radius4.xl,
2337
+ borderBottomRightRadius: radius4.xl,
2338
+ boxShadow: tokenShadows.lg
2339
+ },
2340
+ "&:hover::before": {
2341
+ top: "150%"
2342
+ },
2343
+ // Press: collapse the raised top edge so the card sinks (snappier than
2344
+ // the hover flip), matching the Button's tactile press.
2345
+ "&:active": {
2346
+ transition: "border-width 120ms ease, border-radius 120ms ease, opacity 120ms ease",
2347
+ borderTopWidth: 1,
2348
+ borderTopLeftRadius: radius4.xl,
2349
+ borderTopRightRadius: radius4.xl,
2350
+ opacity: 0.85
2351
+ },
2539
2352
  "&:hover .MuiCardActionArea-focusHighlight": {
2540
2353
  opacity: 0.04
2541
2354
  },
2542
2355
  "&.Mui-focusVisible .MuiCardActionArea-focusHighlight": {
2543
2356
  opacity: 0.08
2357
+ },
2358
+ "@media (prefers-reduced-motion: reduce)": {
2359
+ transition: "none",
2360
+ "&::before": { display: "none" }
2544
2361
  }
2545
2362
  }
2546
2363
  }
@@ -2549,16 +2366,16 @@ function buildComponents(tokens) {
2549
2366
  MuiFilledInput: {
2550
2367
  styleOverrides: {
2551
2368
  root: {
2552
- borderRadius: `${radius6.md}px ${radius6.md}px 0 0`,
2553
- backgroundColor: bg6.secondary,
2369
+ borderRadius: `${radius4.md}px ${radius4.md}px 0 0`,
2370
+ backgroundColor: bg4.secondary,
2554
2371
  "&:hover": {
2555
- backgroundColor: bg6.secondaryHover
2372
+ backgroundColor: bg4.secondaryHover
2556
2373
  },
2557
2374
  "&.Mui-focused": {
2558
- backgroundColor: bg6.secondary
2375
+ backgroundColor: bg4.secondary
2559
2376
  },
2560
2377
  "&:after": {
2561
- borderBottomColor: fg6.brandPrimary
2378
+ borderBottomColor: fg4.brandPrimary
2562
2379
  }
2563
2380
  },
2564
2381
  input: {
@@ -2573,25 +2390,25 @@ function buildComponents(tokens) {
2573
2390
  styleOverrides: {
2574
2391
  root: {
2575
2392
  fontSize: 14,
2576
- color: text6.tertiary
2393
+ color: text4.tertiary
2577
2394
  },
2578
2395
  selectLabel: {
2579
2396
  fontSize: 14,
2580
- color: text6.tertiary
2397
+ color: text4.tertiary
2581
2398
  },
2582
2399
  displayedRows: {
2583
2400
  fontSize: 14,
2584
- color: text6.tertiary
2401
+ color: text4.tertiary
2585
2402
  },
2586
2403
  select: {
2587
2404
  fontSize: 14
2588
2405
  },
2589
2406
  actions: {
2590
2407
  "& .MuiIconButton-root": {
2591
- color: fg6.quaternary,
2408
+ color: fg4.quaternary,
2592
2409
  "&:hover": {
2593
- backgroundColor: bg6.primaryHover,
2594
- color: fg6.brandPrimary
2410
+ backgroundColor: bg4.primaryHover,
2411
+ color: fg4.brandPrimary
2595
2412
  }
2596
2413
  }
2597
2414
  }
@@ -2602,12 +2419,12 @@ function buildComponents(tokens) {
2602
2419
  styleOverrides: {
2603
2420
  root: {
2604
2421
  "&:hover": {
2605
- color: fg6.secondary
2422
+ color: fg4.secondary
2606
2423
  },
2607
2424
  "&.Mui-active": {
2608
- color: fg6.secondary,
2425
+ color: fg4.secondary,
2609
2426
  "& .MuiTableSortLabel-icon": {
2610
- color: fg6.brandPrimary
2427
+ color: fg4.brandPrimary
2611
2428
  }
2612
2429
  }
2613
2430
  }
@@ -2617,9 +2434,9 @@ function buildComponents(tokens) {
2617
2434
  MuiTabScrollButton: {
2618
2435
  styleOverrides: {
2619
2436
  root: {
2620
- color: fg6.quaternary,
2437
+ color: fg4.quaternary,
2621
2438
  "&:hover": {
2622
- color: fg6.brandPrimary
2439
+ color: fg4.brandPrimary
2623
2440
  }
2624
2441
  }
2625
2442
  }
@@ -2630,21 +2447,21 @@ function buildComponents(tokens) {
2630
2447
  MuiDataGrid: {
2631
2448
  styleOverrides: {
2632
2449
  root: {
2633
- border: `1px solid ${border6.secondary}`,
2634
- borderRadius: radius6.xl,
2450
+ border: `1px solid ${border4.secondary}`,
2451
+ borderRadius: radius4.xl,
2635
2452
  fontFamily: "inherit",
2636
2453
  "& .MuiDataGrid-withBorderColor": {
2637
- borderColor: border6.secondary
2454
+ borderColor: border4.secondary
2638
2455
  }
2639
2456
  },
2640
2457
  columnHeaders: {
2641
- backgroundColor: bg6.secondary
2458
+ backgroundColor: bg4.secondary
2642
2459
  },
2643
2460
  columnHeader: {
2644
2461
  fontSize: 12,
2645
2462
  lineHeight: "18px",
2646
2463
  fontWeight: 500,
2647
- color: fg6.tertiary,
2464
+ color: fg4.tertiary,
2648
2465
  "&:focus, &:focus-within": {
2649
2466
  outline: "none"
2650
2467
  }
@@ -2657,28 +2474,28 @@ function buildComponents(tokens) {
2657
2474
  alignItems: "center",
2658
2475
  fontSize: 14,
2659
2476
  lineHeight: "20px",
2660
- color: fg6.tertiary,
2477
+ color: fg4.tertiary,
2661
2478
  "&:focus, &:focus-within": {
2662
2479
  outline: "none"
2663
2480
  }
2664
2481
  },
2665
2482
  row: {
2666
- backgroundColor: bg6.secondary,
2483
+ backgroundColor: bg4.secondary,
2667
2484
  "&:hover": {
2668
- backgroundColor: bg6.primaryHover
2485
+ backgroundColor: bg4.primaryHover
2669
2486
  },
2670
2487
  "&.Mui-selected": {
2671
- backgroundColor: bg6.brandPrimary,
2488
+ backgroundColor: bg4.brandPrimary,
2672
2489
  "&:hover": {
2673
- backgroundColor: bg6.brandPrimary
2490
+ backgroundColor: bg4.brandPrimary
2674
2491
  }
2675
2492
  }
2676
2493
  },
2677
2494
  footerContainer: {
2678
- borderTop: `1px solid ${border6.secondary}`
2495
+ borderTop: `1px solid ${border4.secondary}`
2679
2496
  },
2680
2497
  columnSeparator: {
2681
- color: border6.secondary
2498
+ color: border4.secondary
2682
2499
  }
2683
2500
  }
2684
2501
  }
@@ -2687,40 +2504,53 @@ function buildComponents(tokens) {
2687
2504
  // MUI X uses its own sub-components that are separate from MuiOutlinedInput,
2688
2505
  // so height/padding and brand colours must be set here independently.
2689
2506
  ...{
2690
- // Input field — mirrors MuiOutlinedInput sizing
2691
- MuiPickersTextField: {
2507
+ // Input field — 32px to match MuiOutlinedInput. MUI X's PickersTextField
2508
+ // renders its OWN tree (MuiPickersInputBase / MuiPickersOutlinedInput),
2509
+ // not classic MuiInputBase/MuiOutlinedInput, so the height/padding/border
2510
+ // must target those keys. sectionsContainer padding 6px 0 + 20px
2511
+ // line-height = 32px, mirroring MuiOutlinedInput.input.
2512
+ MuiPickersInputBase: {
2513
+ styleOverrides: {
2514
+ root: {
2515
+ borderRadius: radius4.md,
2516
+ boxShadow: tokenShadows.xs,
2517
+ fontSize: 14,
2518
+ lineHeight: "20px"
2519
+ }
2520
+ }
2521
+ },
2522
+ MuiPickersOutlinedInput: {
2692
2523
  styleOverrides: {
2524
+ // The sections container carries the default 16.5px vertical padding
2525
+ // (mirrors MuiOutlinedInput). 6px + 20px line-height = 32px, matching
2526
+ // the other inputs. Must live here, not on MuiPickersInputBase — the
2527
+ // OutlinedInput slot is the more specific one that actually paints it.
2528
+ sectionsContainer: {
2529
+ padding: "6px 0"
2530
+ },
2693
2531
  root: {
2694
- "& .MuiInputBase-root": {
2695
- height: 32,
2696
- borderRadius: radius6.md,
2697
- boxShadow: tokenShadows.xs,
2698
- fontSize: 14,
2699
- lineHeight: "20px"
2700
- },
2701
- "& .MuiInputBase-input": {
2702
- padding: "6px 12px",
2703
- fontSize: 14,
2704
- lineHeight: "20px"
2532
+ padding: "0 12px",
2533
+ "&:hover:not(.Mui-disabled) .MuiPickersOutlinedInput-notchedOutline": {
2534
+ borderColor: border4.brand
2705
2535
  },
2706
- "& .MuiOutlinedInput-notchedOutline": {
2707
- borderColor: border6.primary
2708
- },
2709
- "&:hover:not(:has(.Mui-disabled)) .MuiOutlinedInput-notchedOutline": {
2710
- borderColor: border6.brand
2711
- },
2712
- "& .Mui-focused .MuiOutlinedInput-notchedOutline": {
2713
- borderColor: border6.brandSolid,
2536
+ "&.Mui-focused .MuiPickersOutlinedInput-notchedOutline": {
2537
+ borderColor: border4.brandSolid,
2714
2538
  borderWidth: 1,
2715
2539
  boxShadow: "none"
2716
2540
  },
2541
+ "&.Mui-error .MuiPickersOutlinedInput-notchedOutline": {
2542
+ borderColor: border4.error
2543
+ },
2717
2544
  "& .MuiInputAdornment-root .MuiIconButton-root": {
2718
- color: fg6.quaternary,
2545
+ color: fg4.quaternary,
2719
2546
  "&:hover": {
2720
- backgroundColor: bg6.primaryHover,
2721
- color: fg6.brandPrimary
2547
+ backgroundColor: bg4.primaryHover,
2548
+ color: fg4.brandPrimary
2722
2549
  }
2723
2550
  }
2551
+ },
2552
+ notchedOutline: {
2553
+ borderColor: border4.primary
2724
2554
  }
2725
2555
  }
2726
2556
  },
@@ -2728,9 +2558,9 @@ function buildComponents(tokens) {
2728
2558
  MuiPickersPopper: {
2729
2559
  styleOverrides: {
2730
2560
  paper: {
2731
- borderRadius: radius6.xl,
2561
+ borderRadius: radius4.xl,
2732
2562
  boxShadow: tokenShadows.lg,
2733
- border: `1px solid ${border6.secondary}`,
2563
+ border: `1px solid ${border4.secondary}`,
2734
2564
  marginTop: 4
2735
2565
  }
2736
2566
  }
@@ -2755,19 +2585,19 @@ function buildComponents(tokens) {
2755
2585
  label: {
2756
2586
  fontSize: 14,
2757
2587
  fontWeight: 600,
2758
- color: text6.primary
2588
+ color: text4.primary
2759
2589
  },
2760
2590
  switchViewButton: {
2761
- color: fg6.quaternary,
2762
- "&:hover": { backgroundColor: bg6.primaryHover, color: fg6.brandPrimary }
2591
+ color: fg4.quaternary,
2592
+ "&:hover": { backgroundColor: bg4.primaryHover, color: fg4.brandPrimary }
2763
2593
  }
2764
2594
  }
2765
2595
  },
2766
2596
  MuiPickersArrowSwitcher: {
2767
2597
  styleOverrides: {
2768
2598
  button: {
2769
- color: fg6.quaternary,
2770
- "&:hover": { backgroundColor: bg6.primaryHover, color: fg6.brandPrimary }
2599
+ color: fg4.quaternary,
2600
+ "&:hover": { backgroundColor: bg4.primaryHover, color: fg4.brandPrimary }
2771
2601
  }
2772
2602
  }
2773
2603
  },
@@ -2777,7 +2607,7 @@ function buildComponents(tokens) {
2777
2607
  weekDayLabel: {
2778
2608
  fontSize: 12,
2779
2609
  fontWeight: 500,
2780
- color: text6.tertiary,
2610
+ color: text4.tertiary,
2781
2611
  width: 32,
2782
2612
  height: 32
2783
2613
  },
@@ -2797,39 +2627,39 @@ function buildComponents(tokens) {
2797
2627
  fontWeight: 400,
2798
2628
  width: 32,
2799
2629
  height: 32,
2800
- borderRadius: radius6.md,
2801
- color: text6.primary,
2630
+ borderRadius: radius4.md,
2631
+ color: text4.primary,
2802
2632
  backgroundColor: "transparent",
2803
2633
  "&:hover": {
2804
- backgroundColor: bg6.primaryHover
2634
+ backgroundColor: bg4.primaryHover
2805
2635
  },
2806
2636
  "&.Mui-selected": {
2807
- backgroundColor: info3[600],
2808
- color: base2.white,
2637
+ backgroundColor: buttonColors4.primary.bg,
2638
+ color: buttonColors4.primary.fg,
2809
2639
  fontWeight: 600,
2810
2640
  "&:hover": {
2811
- backgroundColor: info3[700]
2641
+ backgroundColor: buttonColors4.primary.bgHover
2812
2642
  },
2813
2643
  "&:focus": {
2814
- backgroundColor: info3[600]
2644
+ backgroundColor: buttonColors4.primary.bg
2815
2645
  }
2816
2646
  },
2817
2647
  "&.MuiPickersDay-today": {
2818
- border: `1px solid ${info3[600]}`,
2819
- color: info3[700],
2648
+ border: `1px solid ${fg4.brandPrimary}`,
2649
+ color: text4.brandPrimary,
2820
2650
  backgroundColor: "transparent",
2821
2651
  fontWeight: 600,
2822
2652
  "&.Mui-selected": {
2823
- backgroundColor: info3[600],
2824
- color: base2.white,
2653
+ backgroundColor: buttonColors4.primary.bg,
2654
+ color: buttonColors4.primary.fg,
2825
2655
  border: "none"
2826
2656
  }
2827
2657
  },
2828
2658
  "&.Mui-focusVisible": {
2829
- boxShadow: focusRings6.brand
2659
+ boxShadow: focusRings4.brand
2830
2660
  },
2831
2661
  "&.Mui-disabled": {
2832
- color: text6.disabled
2662
+ color: text4.disabled
2833
2663
  }
2834
2664
  }
2835
2665
  }
@@ -2839,12 +2669,12 @@ function buildComponents(tokens) {
2839
2669
  styleOverrides: {
2840
2670
  yearButton: {
2841
2671
  fontSize: 13,
2842
- borderRadius: radius6.md,
2843
- "&:hover": { backgroundColor: bg6.primaryHover },
2672
+ borderRadius: radius4.md,
2673
+ "&:hover": { backgroundColor: bg4.primaryHover },
2844
2674
  "&.Mui-selected": {
2845
- backgroundColor: fg6.brandPrimary,
2846
- color: base2.white,
2847
- "&:hover": { backgroundColor: buttonColors6.primary.bgHover }
2675
+ backgroundColor: buttonColors4.primary.bg,
2676
+ color: buttonColors4.primary.fg,
2677
+ "&:hover": { backgroundColor: buttonColors4.primary.bgHover }
2848
2678
  }
2849
2679
  }
2850
2680
  }
@@ -2854,12 +2684,12 @@ function buildComponents(tokens) {
2854
2684
  styleOverrides: {
2855
2685
  monthButton: {
2856
2686
  fontSize: 13,
2857
- borderRadius: radius6.md,
2858
- "&:hover": { backgroundColor: bg6.primaryHover },
2687
+ borderRadius: radius4.md,
2688
+ "&:hover": { backgroundColor: bg4.primaryHover },
2859
2689
  "&.Mui-selected": {
2860
- backgroundColor: fg6.brandPrimary,
2861
- color: base2.white,
2862
- "&:hover": { backgroundColor: buttonColors6.primary.bgHover }
2690
+ backgroundColor: buttonColors4.primary.bg,
2691
+ color: buttonColors4.primary.fg,
2692
+ "&:hover": { backgroundColor: buttonColors4.primary.bgHover }
2863
2693
  }
2864
2694
  }
2865
2695
  }
@@ -2869,344 +2699,431 @@ function buildComponents(tokens) {
2869
2699
  }
2870
2700
 
2871
2701
  // src/theme/buildTheme.ts
2872
- function buildThemeOptions(tokens) {
2702
+ function toVars(value, path) {
2703
+ if (typeof value === "string") {
2704
+ return `var(--mui-palette-${path}, ${value})`;
2705
+ }
2706
+ const out = {};
2707
+ for (const key of Object.keys(value)) {
2708
+ out[key] = toVars(value[key], `${path}-${key}`);
2709
+ }
2710
+ return out;
2711
+ }
2712
+ function varifyColorTokens(tokens2) {
2873
2713
  return {
2874
- palette: buildPalette(tokens),
2875
- typography: buildTypography(tokens),
2876
- components: buildComponents(tokens),
2877
- shadows: buildShadows(tokens),
2714
+ ...tokens2,
2715
+ text: toVars(tokens2.text, "text"),
2716
+ bg: toVars(tokens2.bg, "bg"),
2717
+ fg: toVars(tokens2.fg, "fg"),
2718
+ border: toVars(tokens2.border, "border"),
2719
+ buttonColors: toVars(tokens2.buttonColors, "buttonColors"),
2720
+ sliderColors: toVars(tokens2.sliderColors, "sliderColors"),
2721
+ avatarColors: toVars(tokens2.avatarColors, "avatarColors"),
2722
+ breadcrumbColors: toVars(tokens2.breadcrumbColors, "breadcrumbColors")
2723
+ };
2724
+ }
2725
+ function buildThemeOptions(tokens2, tokensDark2) {
2726
+ const componentTokens = tokensDark2 ? varifyColorTokens(tokens2) : tokens2;
2727
+ const shared = {
2728
+ typography: buildTypography(tokens2),
2729
+ components: buildComponents(componentTokens),
2730
+ shadows: buildShadows(tokens2),
2878
2731
  shape: {
2879
- borderRadius: tokens.radius.md
2732
+ borderRadius: tokens2.radius.md
2733
+ }
2734
+ };
2735
+ if (!tokensDark2) {
2736
+ return { ...shared, palette: buildPalette(tokens2, "light") };
2737
+ }
2738
+ return {
2739
+ ...shared,
2740
+ cssVariables: { colorSchemeSelector: "class" },
2741
+ colorSchemes: {
2742
+ light: { palette: buildPalette(tokens2, "light") },
2743
+ dark: { palette: buildPalette(tokensDark2, "dark") }
2880
2744
  }
2881
2745
  };
2882
2746
  }
2883
- function buildTheme(tokens) {
2884
- return (0, import_styles.createTheme)(buildThemeOptions(tokens));
2747
+ function buildTheme(tokens2, tokensDark2) {
2748
+ return (0, import_styles.createTheme)(buildThemeOptions(tokens2, tokensDark2));
2885
2749
  }
2886
2750
 
2887
- // src/theme/presets/forest-external.ts
2888
- var radius2 = {
2889
- ...radius,
2890
- xxs: 1,
2891
- xs: 2,
2892
- sm: 3,
2893
- md: 4,
2894
- lg: 5,
2895
- xl: 6,
2896
- "2xl": 8,
2897
- "3xl": 10,
2898
- "4xl": 12
2899
- };
2900
- var text2 = {
2901
- primary: gray[900],
2902
- secondary: gray[700],
2903
- secondaryHover: gray[800],
2904
- tertiary: gray[600],
2905
- tertiaryHover: gray[700],
2906
- quaternary: gray[500],
2907
- disabled: gray[500],
2908
- placeholder: gray[500],
2909
- placeholderSubtle: gray[300],
2910
- white: base.white,
2911
- brandPrimary: violet[900],
2912
- brandSecondary: violet[700],
2913
- brandTertiary: violet[600],
2914
- brandTertiaryAlt: violet[600],
2915
- primaryOnBrand: base.white,
2916
- secondaryOnBrand: violet[200],
2917
- tertiaryOnBrand: violet[200],
2918
- quaternaryOnBrand: violet[300],
2919
- errorPrimary: error[600],
2920
- warningPrimary: warning[600],
2921
- successPrimary: success[600]
2751
+ // src/theme/tokens.ts
2752
+ var violet = {
2753
+ 25: "#faf8ff",
2754
+ 50: "#f5f0ff",
2755
+ 100: "#ebe0ff",
2756
+ 200: "#d6c0ff",
2757
+ 300: "#b090ff",
2758
+ 400: "#9D5FFF",
2759
+ 500: "#7c4de6",
2760
+ 600: "#5b3acc",
2761
+ 700: "#3a1aad",
2762
+ 800: "#190a8a",
2763
+ 900: "#000066",
2764
+ 950: "#000033"
2922
2765
  };
2923
- var bg2 = {
2924
- primary: gray[50],
2925
- primaryAlt: gray[50],
2926
- primaryHover: gray[100],
2927
- primarySolid: gray[950],
2928
- secondary: base.white,
2929
- secondaryAlt: base.white,
2930
- secondarySubtle: gray[25],
2931
- secondaryHover: gray[50],
2932
- secondarySolid: gray[600],
2933
- tertiary: gray[100],
2934
- quaternary: gray[200],
2935
- active: gray[200],
2936
- disabled: gray[100],
2937
- disabledSubtle: gray[50],
2938
- overlay: gray[950],
2939
- brandPrimary: violet[50],
2940
- brandPrimaryAlt: violet[50],
2941
- brandSecondary: violet[100],
2942
- brandSolid: violet[400],
2943
- brandSolidHover: violet[500],
2944
- brandSection: violet[800],
2945
- brandSectionSubtle: violet[700],
2946
- errorPrimary: error[50],
2947
- errorSecondary: error[100],
2948
- errorSolid: error[600],
2949
- warningPrimary: warning[50],
2950
- warningSecondary: warning[100],
2951
- warningSolid: warning[600],
2952
- successPrimary: success[50],
2953
- successSecondary: success[100],
2954
- successSolid: success[600]
2766
+ var magenta = {
2767
+ 25: "#fff8fd",
2768
+ 50: "#fff0fa",
2769
+ 100: "#ffe0f5",
2770
+ 200: "#ffc0eb",
2771
+ 300: "#ff90d8",
2772
+ 400: "#FF78F3",
2773
+ 500: "#e650d4",
2774
+ 600: "#cc28b5",
2775
+ 700: "#a3008c",
2776
+ 800: "#7a0066",
2777
+ 900: "#520044",
2778
+ 950: "#290022"
2955
2779
  };
2956
- var fg2 = {
2957
- primary: gray[900],
2958
- secondary: gray[700],
2959
- secondaryHover: gray[800],
2960
- tertiary: gray[600],
2961
- tertiaryHover: gray[700],
2962
- quaternary: gray[500],
2963
- quaternaryHover: gray[600],
2964
- quinary: gray[400],
2965
- quinaryHover: gray[500],
2966
- senary: gray[300],
2967
- white: base.white,
2968
- disabled: gray[400],
2969
- disabledSubtle: gray[300],
2970
- brandPrimary: violet[400],
2971
- brandPrimaryAlt: violet[400],
2972
- brandSecondary: violet[400],
2973
- errorPrimary: error[600],
2974
- errorSecondary: error[500],
2975
- warningPrimary: warning[600],
2976
- warningSecondary: warning[500],
2977
- successPrimary: success[600],
2978
- successSecondary: success[500]
2780
+ var gray = {
2781
+ 25: "#fdfcfc",
2782
+ 50: "#faf9f8",
2783
+ 100: "#f5f3f1",
2784
+ 200: "#e8e5e3",
2785
+ 300: "#d8d8dc",
2786
+ 400: "#a0a0a6",
2787
+ 500: "#71717a",
2788
+ 600: "#52525b",
2789
+ 700: "#3f3f46",
2790
+ 800: "#27272a",
2791
+ 900: "#18181b",
2792
+ 950: "#09090b"
2979
2793
  };
2980
- var border2 = {
2981
- primary: gray[300],
2982
- secondary: gray[200],
2983
- tertiary: gray[100],
2984
- disabled: gray[300],
2985
- disabledSubtle: gray[200],
2986
- brand: violet[300],
2987
- brandSolid: violet[400],
2988
- brandSolidAlt: violet[400],
2989
- error: error[300],
2990
- errorSolid: error[600]
2794
+ var red = {
2795
+ 25: "#fff8f7",
2796
+ 50: "#fff0ee",
2797
+ 100: "#ffe0dd",
2798
+ 200: "#ffc0bb",
2799
+ 300: "#ff9090",
2800
+ 400: "#FF2821",
2801
+ 500: "#e61a1a",
2802
+ 600: "#cc1010",
2803
+ 700: "#a30808",
2804
+ 800: "#7a0000",
2805
+ 900: "#520000",
2806
+ 950: "#290000"
2991
2807
  };
2992
- var buttonColors2 = {
2993
- primary: {
2994
- bg: violet[400],
2995
- bgHover: violet[500],
2996
- fg: base.white,
2997
- fgHover: base.white,
2998
- border: violet[400],
2999
- borderHover: violet[500]
2808
+ var misc = {
2809
+ teal: {
2810
+ 25: "#f6fefc",
2811
+ 50: "#f0fdf9",
2812
+ 100: "#ccfbef",
2813
+ 200: "#99f6e0",
2814
+ 300: "#5fe9d0",
2815
+ 400: "#2ed3b7",
2816
+ 500: "#15b79e",
2817
+ 600: "#0e9384",
2818
+ 700: "#107569",
2819
+ 800: "#125d56",
2820
+ 900: "#134e48",
2821
+ 950: "#0a2926"
3000
2822
  },
3001
- secondary: {
3002
- bg: gray[900],
3003
- bgHover: gray[950],
3004
- fg: base.white,
3005
- fgHover: base.white,
3006
- border: gray[900],
3007
- borderHover: gray[950]
2823
+ orange: {
2824
+ 25: "#fefaf5",
2825
+ 50: "#fef6ee",
2826
+ 100: "#fdead7",
2827
+ 200: "#f9dbaf",
2828
+ 300: "#f7b27a",
2829
+ 400: "#f38744",
2830
+ 500: "#ef6820",
2831
+ 600: "#e04f16",
2832
+ 700: "#b93815",
2833
+ 800: "#932f19",
2834
+ 900: "#772917",
2835
+ 950: "#511c10"
3008
2836
  },
3009
- secondaryColor: {
3010
- bg: base.white,
3011
- bgHover: violet[50],
3012
- fg: violet[400],
3013
- fgHover: violet[500],
3014
- border: violet[300],
3015
- borderHover: violet[300]
2837
+ purple: {
2838
+ 25: "#fafaff",
2839
+ 50: "#f4f3ff",
2840
+ 100: "#ebe9fe",
2841
+ 200: "#d9d6fe",
2842
+ 300: "#bdb4fe",
2843
+ 400: "#9b8afb",
2844
+ 500: "#7a5af8",
2845
+ 600: "#6938ef",
2846
+ 700: "#5925dc",
2847
+ 800: "#4a1fb8",
2848
+ 900: "#3e1c96",
2849
+ 950: "#27115f"
2850
+ },
2851
+ pink: {
2852
+ 25: "#fef6fb",
2853
+ 50: "#fdf2fa",
2854
+ 100: "#fce7f6",
2855
+ 200: "#fcceee",
2856
+ 300: "#faa7e0",
2857
+ 400: "#f670c7",
2858
+ 500: "#ee46bc",
2859
+ 600: "#dd2590",
2860
+ 700: "#c11574",
2861
+ 800: "#9e165f",
2862
+ 900: "#851651",
2863
+ 950: "#4e0d30"
2864
+ },
2865
+ fuchsia: {
2866
+ 25: "#fefaff",
2867
+ 50: "#fdf4ff",
2868
+ 100: "#fbe8ff",
2869
+ 200: "#f6d0fe",
2870
+ 300: "#eeaafd",
2871
+ 400: "#e478fa",
2872
+ 500: "#d444f1",
2873
+ 600: "#ba24d5",
2874
+ 700: "#9f1ab1",
2875
+ 800: "#821890",
2876
+ 900: "#6f1877",
2877
+ 950: "#47104c"
2878
+ },
2879
+ orangeDark: {
2880
+ 25: "#fff9f5",
2881
+ 50: "#fff4ed",
2882
+ 100: "#ffe6d5",
2883
+ 200: "#ffd6ae",
2884
+ 300: "#ff9c66",
2885
+ 400: "#ff692e",
2886
+ 500: "#ff4405",
2887
+ 600: "#e62e05",
2888
+ 700: "#bc1b06",
2889
+ 800: "#97180c",
2890
+ 900: "#771a0d",
2891
+ 950: "#57130a"
3016
2892
  },
3017
- tertiary: {
3018
- fg: gray[600],
3019
- fgHover: gray[700],
3020
- bgHover: gray[50]
2893
+ green: {
2894
+ 25: "#f6fef9",
2895
+ 50: "#edfcf2",
2896
+ 100: "#d3f8df",
2897
+ 200: "#aaf0c4",
2898
+ 300: "#73e2a3",
2899
+ 400: "#3ccb7f",
2900
+ 500: "#16b364",
2901
+ 600: "#099250",
2902
+ 700: "#087443",
2903
+ 800: "#095c37",
2904
+ 900: "#084c2e",
2905
+ 950: "#052e1c"
3021
2906
  },
3022
- tertiaryColor: {
3023
- fg: violet[400],
3024
- fgHover: violet[500],
3025
- bgHover: violet[50]
2907
+ indigo: {
2908
+ 25: "#f5f8ff",
2909
+ 50: "#eef4ff",
2910
+ 100: "#e0eaff",
2911
+ 200: "#c7d7fe",
2912
+ 300: "#a4bcfd",
2913
+ 400: "#8098f9",
2914
+ 500: "#6172f3",
2915
+ 600: "#444ce7",
2916
+ 700: "#3538cd",
2917
+ 800: "#2d31a6",
2918
+ 900: "#2d3282",
2919
+ 950: "#1f235b"
3026
2920
  },
3027
- primaryError: {
3028
- bg: error[600],
3029
- bgHover: error[700],
3030
- fg: base.white,
3031
- fgHover: base.white,
3032
- border: error[600],
3033
- borderHover: error[700]
2921
+ rose: {
2922
+ 25: "#fff5f6",
2923
+ 50: "#fff1f3",
2924
+ 100: "#ffe4e8",
2925
+ 200: "#fecdd6",
2926
+ 300: "#fea3b4",
2927
+ 400: "#fd6f8e",
2928
+ 500: "#f63d68",
2929
+ 600: "#e31b54",
2930
+ 700: "#c01048",
2931
+ 800: "#a11043",
2932
+ 900: "#89123e",
2933
+ 950: "#510b24"
3034
2934
  },
3035
- secondaryError: {
3036
- bg: base.white,
3037
- bgHover: error[50],
3038
- fg: error[700],
3039
- fgHover: error[800],
3040
- border: error[300],
3041
- borderHover: error[300]
2935
+ blueLight: {
2936
+ 25: "#f5fbff",
2937
+ 50: "#f0f9ff",
2938
+ 100: "#e0f2fe",
2939
+ 200: "#b9e6fe",
2940
+ 300: "#7cd4fd",
2941
+ 400: "#36bffa",
2942
+ 500: "#0ba5ec",
2943
+ 600: "#0086c9",
2944
+ 700: "#026aa2",
2945
+ 800: "#065986",
2946
+ 900: "#0b4a6f",
2947
+ 950: "#062c41"
3042
2948
  },
3043
- tertiaryError: {
3044
- fg: error[700],
3045
- fgHover: error[800],
3046
- bgHover: error[50]
2949
+ cyan: {
2950
+ 25: "#f5feff",
2951
+ 50: "#ecfdff",
2952
+ 100: "#cff9fe",
2953
+ 200: "#a5f0fc",
2954
+ 300: "#67e3f9",
2955
+ 400: "#22ccee",
2956
+ 500: "#06aed4",
2957
+ 600: "#088ab2",
2958
+ 700: "#0e7090",
2959
+ 800: "#155b75",
2960
+ 900: "#164c63",
2961
+ 950: "#0d2d3a"
3047
2962
  }
3048
2963
  };
3049
- var avatarColors2 = {
3050
- bg: gray[100],
3051
- contrastBorder: "#00000014",
3052
- profilePhotoBorder: base.white,
3053
- focusBorder: "#a0a0a624"
3054
- // gray[400] + 14% alpha
2964
+ var base = {
2965
+ white: "#ffffff",
2966
+ black: "#000000",
2967
+ transparent: "#ffffff00"
3055
2968
  };
3056
- var breadcrumbColors2 = {
3057
- fg: gray[600],
3058
- fgHover: gray[700],
3059
- bgHover: gray[50],
3060
- brandBgHover: violet[50],
3061
- brandFgHover: violet[700],
3062
- iconFg: gray[500],
3063
- iconFgHover: gray[700],
3064
- brandIconFgHover: violet[700]
2969
+ var error = {
2970
+ 25: "#fffbfa",
2971
+ 50: "#fef3f2",
2972
+ 100: "#fee4e2",
2973
+ 200: "#fecdca",
2974
+ 300: "#fda29b",
2975
+ 400: "#f97066",
2976
+ 500: "#f04438",
2977
+ 600: "#d92d20",
2978
+ 700: "#b42318",
2979
+ 800: "#912018",
2980
+ 900: "#7a271a",
2981
+ 950: "#55160c"
3065
2982
  };
3066
- var iconColors2 = {
3067
- fgBrand: violet[400],
3068
- fgBrandOnBrand: violet[200],
3069
- featuredModernBorder: gray[200],
3070
- featuredLightFgBrand: violet[400],
3071
- featuredLightFgGray: gray[500],
3072
- featuredLightFgError: error[600],
3073
- featuredLightFgWarning: warning[600],
3074
- featuredLightFgSuccess: success[600],
3075
- featuredDarkFgBrand: base.white,
3076
- featuredDarkFgGray: base.white,
3077
- featuredDarkFgError: base.white,
3078
- featuredDarkFgWarning: base.white,
3079
- featuredDarkFgSuccess: base.white
2983
+ var warning = {
2984
+ 25: "#fffcf5",
2985
+ 50: "#fffaeb",
2986
+ 100: "#fef0c7",
2987
+ 200: "#fedf89",
2988
+ 300: "#fec84b",
2989
+ 400: "#fdb022",
2990
+ 500: "#f79009",
2991
+ 600: "#dc6803",
2992
+ 700: "#b54708",
2993
+ 800: "#93370d",
2994
+ 900: "#7a2e0e",
2995
+ 950: "#4e1d09"
3080
2996
  };
3081
- var navColors2 = {
3082
- itemIconFg: gray[500],
3083
- itemIconFgActive: gray[700],
3084
- itemButtonIconFg: gray[500],
3085
- itemButtonIconFgActive: gray[700]
2997
+ var success = {
2998
+ 25: "#f6fef9",
2999
+ 50: "#ecfdf3",
3000
+ 100: "#dcfae6",
3001
+ 200: "#abefc6",
3002
+ 300: "#75e0a7",
3003
+ 400: "#47cd89",
3004
+ 500: "#17b26a",
3005
+ 600: "#079455",
3006
+ 700: "#067647",
3007
+ 800: "#085d3a",
3008
+ 900: "#074d31",
3009
+ 950: "#053321"
3086
3010
  };
3087
- var sliderColors2 = {
3088
- handleBorder: violet[400],
3089
- handleBg: base.white
3011
+ var info = {
3012
+ 25: "#f5faff",
3013
+ 50: "#eff8ff",
3014
+ 100: "#d1e9ff",
3015
+ 200: "#b2ddff",
3016
+ 300: "#84caff",
3017
+ 400: "#53b1fd",
3018
+ 500: "#2e90fa",
3019
+ 600: "#1570ef",
3020
+ 700: "#175cd3",
3021
+ 800: "#1849a9",
3022
+ 900: "#194185",
3023
+ 950: "#102a56"
3090
3024
  };
3091
- var toggleColors2 = {
3092
- buttonFgDisabled: gray[50]
3025
+ var spacing = {
3026
+ none: 0,
3027
+ xxs: 2,
3028
+ xs: 4,
3029
+ sm: 6,
3030
+ md: 8,
3031
+ lg: 12,
3032
+ xl: 16,
3033
+ "2xl": 20,
3034
+ "3xl": 24,
3035
+ "4xl": 32,
3036
+ "5xl": 40,
3037
+ "6xl": 48,
3038
+ "7xl": 64,
3039
+ "8xl": 80,
3040
+ "9xl": 96,
3041
+ "10xl": 128,
3042
+ "11xl": 160
3093
3043
  };
3094
- var chartColors2 = {
3095
- axisFg: gray[100],
3096
- gridlineFg: gray[100],
3097
- labelFg: gray[600],
3098
- labelFgEmphasis: gray[700],
3099
- bg: base.white,
3100
- bgAlt: gray[50],
3101
- tooltipBg: gray[950],
3102
- tooltipFg: base.white,
3103
- crosshairFg: gray[500],
3104
- legendFg: text2.tertiary,
3105
- series: [
3106
- { fg: misc.purple[500], fgHover: misc.purple[600], bg: misc.purple[100], bgHover: misc.purple[200] },
3107
- { fg: misc.orangeDark[400], fgHover: misc.orangeDark[500], bg: misc.orangeDark[100], bgHover: misc.orangeDark[200] },
3108
- { fg: misc.teal[300], fgHover: misc.teal[400], bg: misc.teal[50], bgHover: misc.teal[100] },
3109
- { fg: warning[400], fgHover: warning[500], bg: warning[100], bgHover: warning[200] },
3110
- { fg: misc.rose[400], fgHover: misc.rose[500], bg: misc.rose[100], bgHover: misc.rose[200] },
3111
- { fg: misc.blueLight[400], fgHover: misc.blueLight[500], bg: misc.blueLight[100], bgHover: misc.blueLight[200] },
3112
- { fg: misc.orange[300], fgHover: misc.orange[400], bg: misc.orange[100], bgHover: misc.orange[200] },
3113
- { fg: misc.cyan[600], fgHover: misc.cyan[700], bg: misc.cyan[100], bgHover: misc.cyan[200] },
3114
- { fg: misc.green[500], fgHover: misc.green[600], bg: misc.green[100], bgHover: misc.green[200] },
3115
- { fg: misc.pink[400], fgHover: misc.pink[500], bg: misc.pink[100], bgHover: misc.pink[200] },
3116
- { fg: misc.fuchsia[400], fgHover: misc.fuchsia[500], bg: misc.fuchsia[100], bgHover: misc.fuchsia[200] },
3117
- { fg: misc.teal[600], fgHover: misc.teal[700], bg: misc.teal[100], bgHover: misc.teal[200] }
3118
- ]
3044
+ var radius = {
3045
+ none: 0,
3046
+ xxs: 2,
3047
+ xs: 4,
3048
+ sm: 6,
3049
+ md: 8,
3050
+ lg: 10,
3051
+ xl: 12,
3052
+ "2xl": 16,
3053
+ "3xl": 20,
3054
+ "4xl": 24,
3055
+ full: 9999
3119
3056
  };
3120
- var focusRings2 = {
3121
- brand: "0px 0px 0px 4px #9D5FFF3d",
3122
- brandShadowXs: "0px 1px 2px 0px #1018280d, 0px 0px 0px 4px #9D5FFF3d",
3123
- brandShadowSm: "0px 1px 3px 0px #1018281a, 0px 1px 2px 0px #1018280f, 0px 0px 0px 4px #9D5FFF3d",
3057
+ var shadows = {
3058
+ xs: "0px 1px 2px 0px #1018280d",
3059
+ sm: "0px 1px 3px 0px #1018281a, 0px 1px 2px 0px #1018280f",
3060
+ md: "0px 4px 8px -2px #1018281a, 0px 2px 4px -2px #1018280f",
3061
+ lg: "0px 12px 16px -4px #10182814, 0px 4px 6px -2px #10182808",
3062
+ xl: "0px 20px 24px -4px #10182814, 0px 8px 8px -4px #10182808",
3063
+ "2xl": "0px 24px 48px -12px #1018282e",
3064
+ "3xl": "0px 32px 64px -12px #10182824"
3065
+ };
3066
+ var focusRings = {
3067
+ brand: "0px 0px 0px 4px #7c4de63d",
3068
+ brandShadowXs: "0px 1px 2px 0px #1018280d, 0px 0px 0px 4px #7c4de63d",
3069
+ brandShadowSm: "0px 1px 3px 0px #1018281a, 0px 1px 2px 0px #1018280f, 0px 0px 0px 4px #7c4de63d",
3124
3070
  gray: "0px 0px 0px 4px #a0a0a624",
3125
3071
  grayShadowXs: "0px 1px 2px 0px #1018280d, 0px 0px 0px 4px #a0a0a624",
3126
3072
  grayShadowSm: "0px 1px 3px 0px #1018281a, 0px 1px 2px 0px #1018280f, 0px 0px 0px 4px #a0a0a624",
3127
3073
  error: "0px 0px 0px 4px #f044383d",
3128
3074
  errorShadowXs: "0px 1px 2px 0px #1018280d, 0px 0px 0px 4px #f044383d"
3129
3075
  };
3130
- var forestExternalPreset = {
3131
- name: "forest-external",
3132
- defaultVariant: "light",
3133
- variants: {
3134
- light: {
3135
- tokens: {
3136
- base,
3137
- error,
3138
- warning,
3139
- success,
3140
- info,
3141
- spacing,
3142
- radius: radius2,
3143
- shadows,
3144
- focusRings: focusRings2,
3145
- fontFamily: '"Aeonik", sans-serif',
3146
- fontFamilyMono: '"Aeonik Mono", monospace',
3147
- fontSize,
3148
- lineHeight,
3149
- fontWeight,
3150
- display,
3151
- container,
3152
- widths,
3153
- text: text2,
3154
- bg: bg2,
3155
- fg: fg2,
3156
- border: border2,
3157
- buttonColors: buttonColors2,
3158
- avatarColors: avatarColors2,
3159
- breadcrumbColors: breadcrumbColors2,
3160
- iconColors: iconColors2,
3161
- navColors: navColors2,
3162
- sliderColors: sliderColors2,
3163
- toggleColors: toggleColors2,
3164
- chartColors: chartColors2,
3165
- alpha
3166
- }
3167
- }
3168
- }
3076
+ var fontFamily = '"Aeonik", sans-serif';
3077
+ var fontFamilyMono = '"Aeonik Mono", monospace';
3078
+ var fontSize = {
3079
+ xxs: 11,
3080
+ xs: 12,
3081
+ sm: 14,
3082
+ md: 16,
3083
+ lg: 18,
3084
+ xl: 20
3169
3085
  };
3170
-
3171
- // src/theme/presets/forest-agency.ts
3172
- var colors = {
3173
- base,
3174
- error,
3175
- warning,
3176
- success,
3177
- info,
3178
- brand: {
3179
- 25: gray[25],
3180
- 50: gray[50],
3181
- 100: gray[100],
3182
- 200: gray[200],
3183
- 300: gray[300],
3184
- 400: gray[400],
3185
- 500: gray[500],
3186
- 600: gray[900],
3187
- // #18181b - dark brand
3188
- 700: gray[950],
3189
- // #09090b - primary brand
3190
- 800: gray[950],
3191
- 900: gray[950],
3192
- 950: gray[950]
3193
- },
3194
- accent: red,
3195
- gray
3086
+ var lineHeight = {
3087
+ xxs: "16px",
3088
+ xs: "18px",
3089
+ sm: "20px",
3090
+ md: "24px",
3091
+ lg: "28px",
3092
+ xl: "30px"
3196
3093
  };
3197
- var radius3 = {
3198
- ...radius,
3199
- xxs: 1,
3200
- xs: 2,
3201
- sm: 3,
3202
- md: 4,
3203
- lg: 5,
3204
- xl: 6,
3205
- "2xl": 8,
3206
- "3xl": 10,
3207
- "4xl": 12
3094
+ var fontWeight = {
3095
+ regular: 400,
3096
+ medium: 500,
3097
+ semibold: 600,
3098
+ bold: 700
3208
3099
  };
3209
- var text3 = {
3100
+ var display = {
3101
+ "2xl": { fontSize: 72, lineHeight: "90px", letterSpacing: "-0.02em" },
3102
+ xl: { fontSize: 60, lineHeight: "72px", letterSpacing: "-0.02em" },
3103
+ lg: { fontSize: 48, lineHeight: "60px", letterSpacing: "-0.02em" },
3104
+ md: { fontSize: 36, lineHeight: "44px", letterSpacing: "-0.02em" },
3105
+ sm: { fontSize: 30, lineHeight: "38px" },
3106
+ xs: { fontSize: 24, lineHeight: "32px" }
3107
+ };
3108
+ var container = {
3109
+ maxWidthDesktop: 1280,
3110
+ paddingDesktop: 32,
3111
+ paddingMobile: 16
3112
+ };
3113
+ var widths = {
3114
+ xxs: 320,
3115
+ xs: 384,
3116
+ sm: 480,
3117
+ md: 560,
3118
+ lg: 640,
3119
+ xl: 768,
3120
+ "2xl": 1024,
3121
+ "3xl": 1280,
3122
+ "4xl": 1440,
3123
+ "5xl": 1600,
3124
+ "6xl": 1920
3125
+ };
3126
+ var text = {
3210
3127
  primary: gray[900],
3211
3128
  secondary: gray[700],
3212
3129
  secondaryHover: gray[800],
@@ -3217,19 +3134,19 @@ var text3 = {
3217
3134
  placeholder: gray[500],
3218
3135
  placeholderSubtle: gray[300],
3219
3136
  white: base.white,
3220
- brandPrimary: colors.brand[900],
3221
- brandSecondary: colors.brand[700],
3222
- brandTertiary: colors.brand[600],
3223
- brandTertiaryAlt: colors.brand[600],
3137
+ brandPrimary: violet[900],
3138
+ brandSecondary: violet[700],
3139
+ brandTertiary: violet[600],
3140
+ brandTertiaryAlt: violet[600],
3224
3141
  primaryOnBrand: base.white,
3225
- secondaryOnBrand: colors.brand[200],
3226
- tertiaryOnBrand: colors.brand[200],
3227
- quaternaryOnBrand: colors.brand[300],
3142
+ secondaryOnBrand: violet[200],
3143
+ tertiaryOnBrand: violet[200],
3144
+ quaternaryOnBrand: violet[300],
3228
3145
  errorPrimary: error[600],
3229
3146
  warningPrimary: warning[600],
3230
3147
  successPrimary: success[600]
3231
3148
  };
3232
- var bg3 = {
3149
+ var bg = {
3233
3150
  primary: gray[50],
3234
3151
  primaryAlt: gray[50],
3235
3152
  primaryHover: gray[100],
@@ -3245,13 +3162,13 @@ var bg3 = {
3245
3162
  disabled: gray[100],
3246
3163
  disabledSubtle: gray[50],
3247
3164
  overlay: gray[950],
3248
- brandPrimary: colors.brand[50],
3249
- brandPrimaryAlt: colors.brand[50],
3250
- brandSecondary: colors.brand[100],
3251
- brandSolid: colors.brand[600],
3252
- brandSolidHover: colors.brand[700],
3253
- brandSection: colors.brand[800],
3254
- brandSectionSubtle: colors.brand[700],
3165
+ brandPrimary: violet[50],
3166
+ brandPrimaryAlt: violet[50],
3167
+ brandSecondary: violet[100],
3168
+ brandSolid: violet[600],
3169
+ brandSolidHover: violet[700],
3170
+ brandSection: violet[800],
3171
+ brandSectionSubtle: violet[700],
3255
3172
  errorPrimary: error[50],
3256
3173
  errorSecondary: error[100],
3257
3174
  errorSolid: error[600],
@@ -3262,7 +3179,7 @@ var bg3 = {
3262
3179
  successSecondary: success[100],
3263
3180
  successSolid: success[600]
3264
3181
  };
3265
- var fg3 = {
3182
+ var fg = {
3266
3183
  primary: gray[900],
3267
3184
  secondary: gray[700],
3268
3185
  secondaryHover: gray[800],
@@ -3276,9 +3193,9 @@ var fg3 = {
3276
3193
  white: base.white,
3277
3194
  disabled: gray[400],
3278
3195
  disabledSubtle: gray[300],
3279
- brandPrimary: colors.brand[600],
3280
- brandPrimaryAlt: colors.brand[600],
3281
- brandSecondary: colors.brand[500],
3196
+ brandPrimary: violet[600],
3197
+ brandPrimaryAlt: violet[600],
3198
+ brandSecondary: violet[500],
3282
3199
  errorPrimary: error[600],
3283
3200
  errorSecondary: error[500],
3284
3201
  warningPrimary: warning[600],
@@ -3286,26 +3203,26 @@ var fg3 = {
3286
3203
  successPrimary: success[600],
3287
3204
  successSecondary: success[500]
3288
3205
  };
3289
- var border3 = {
3206
+ var border = {
3290
3207
  primary: gray[300],
3291
3208
  secondary: gray[200],
3292
3209
  tertiary: gray[100],
3293
3210
  disabled: gray[300],
3294
3211
  disabledSubtle: gray[200],
3295
- brand: gray[400],
3296
- brandSolid: colors.brand[600],
3297
- brandSolidAlt: colors.brand[600],
3212
+ brand: violet[300],
3213
+ brandSolid: violet[600],
3214
+ brandSolidAlt: violet[600],
3298
3215
  error: error[300],
3299
3216
  errorSolid: error[600]
3300
3217
  };
3301
- var buttonColors3 = {
3218
+ var buttonColors = {
3302
3219
  primary: {
3303
- bg: colors.brand[700],
3304
- bgHover: colors.brand[800],
3220
+ bg: violet[600],
3221
+ bgHover: violet[700],
3305
3222
  fg: base.white,
3306
3223
  fgHover: base.white,
3307
- border: colors.brand[700],
3308
- borderHover: colors.brand[800]
3224
+ border: violet[600],
3225
+ borderHover: violet[700]
3309
3226
  },
3310
3227
  secondary: {
3311
3228
  bg: gray[900],
@@ -3317,11 +3234,11 @@ var buttonColors3 = {
3317
3234
  },
3318
3235
  secondaryColor: {
3319
3236
  bg: base.white,
3320
- bgHover: colors.brand[50],
3321
- fg: colors.brand[700],
3322
- fgHover: colors.brand[800],
3323
- border: colors.brand[300],
3324
- borderHover: colors.brand[300]
3237
+ bgHover: violet[50],
3238
+ fg: violet[700],
3239
+ fgHover: violet[800],
3240
+ border: violet[300],
3241
+ borderHover: violet[300]
3325
3242
  },
3326
3243
  tertiary: {
3327
3244
  fg: gray[600],
@@ -3329,9 +3246,9 @@ var buttonColors3 = {
3329
3246
  bgHover: gray[50]
3330
3247
  },
3331
3248
  tertiaryColor: {
3332
- fg: colors.brand[700],
3333
- fgHover: colors.brand[800],
3334
- bgHover: colors.brand[50]
3249
+ fg: violet[700],
3250
+ fgHover: violet[800],
3251
+ bgHover: violet[50]
3335
3252
  },
3336
3253
  primaryError: {
3337
3254
  bg: error[600],
@@ -3355,28 +3272,28 @@ var buttonColors3 = {
3355
3272
  bgHover: error[50]
3356
3273
  }
3357
3274
  };
3358
- var avatarColors3 = {
3275
+ var avatarColors = {
3359
3276
  bg: gray[100],
3277
+ fg: gray[600],
3360
3278
  contrastBorder: "#00000014",
3361
3279
  profilePhotoBorder: base.white,
3362
3280
  focusBorder: "#a0a0a624"
3363
- // gray[400] + 14% alpha
3364
3281
  };
3365
- var breadcrumbColors3 = {
3282
+ var breadcrumbColors = {
3366
3283
  fg: gray[600],
3367
3284
  fgHover: gray[700],
3368
3285
  bgHover: gray[50],
3369
- brandBgHover: colors.brand[50],
3370
- brandFgHover: colors.brand[700],
3286
+ brandBgHover: violet[50],
3287
+ brandFgHover: violet[700],
3371
3288
  iconFg: gray[500],
3372
3289
  iconFgHover: gray[700],
3373
- brandIconFgHover: colors.brand[700]
3290
+ brandIconFgHover: violet[700]
3374
3291
  };
3375
- var iconColors3 = {
3376
- fgBrand: colors.brand[600],
3377
- fgBrandOnBrand: colors.brand[200],
3292
+ var iconColors = {
3293
+ fgBrand: violet[600],
3294
+ fgBrandOnBrand: violet[200],
3378
3295
  featuredModernBorder: gray[200],
3379
- featuredLightFgBrand: colors.brand[600],
3296
+ featuredLightFgBrand: violet[600],
3380
3297
  featuredLightFgGray: gray[500],
3381
3298
  featuredLightFgError: error[600],
3382
3299
  featuredLightFgWarning: warning[600],
@@ -3387,20 +3304,20 @@ var iconColors3 = {
3387
3304
  featuredDarkFgWarning: base.white,
3388
3305
  featuredDarkFgSuccess: base.white
3389
3306
  };
3390
- var navColors3 = {
3307
+ var navColors = {
3391
3308
  itemIconFg: gray[500],
3392
3309
  itemIconFgActive: gray[700],
3393
3310
  itemButtonIconFg: gray[500],
3394
3311
  itemButtonIconFgActive: gray[700]
3395
3312
  };
3396
- var sliderColors3 = {
3397
- handleBorder: colors.brand[600],
3313
+ var sliderColors = {
3314
+ handleBorder: violet[600],
3398
3315
  handleBg: base.white
3399
3316
  };
3400
- var toggleColors3 = {
3317
+ var toggleColors = {
3401
3318
  buttonFgDisabled: gray[50]
3402
3319
  };
3403
- var chartColors3 = {
3320
+ var chartColors = {
3404
3321
  axisFg: gray[100],
3405
3322
  gridlineFg: gray[100],
3406
3323
  labelFg: gray[600],
@@ -3410,7 +3327,7 @@ var chartColors3 = {
3410
3327
  tooltipBg: gray[950],
3411
3328
  tooltipFg: base.white,
3412
3329
  crosshairFg: gray[500],
3413
- legendFg: text3.tertiary,
3330
+ legendFg: text.tertiary,
3414
3331
  series: [
3415
3332
  { fg: misc.purple[500], fgHover: misc.purple[600], bg: misc.purple[100], bgHover: misc.purple[200] },
3416
3333
  { fg: misc.orangeDark[400], fgHover: misc.orangeDark[500], bg: misc.orangeDark[100], bgHover: misc.orangeDark[200] },
@@ -3426,59 +3343,36 @@ var chartColors3 = {
3426
3343
  { fg: misc.teal[600], fgHover: misc.teal[700], bg: misc.teal[100], bgHover: misc.teal[200] }
3427
3344
  ]
3428
3345
  };
3429
- var focusRings3 = {
3430
- brand: "0px 0px 0px 4px #4040403d",
3431
- brandShadowXs: "0px 1px 2px 0px #1018280d, 0px 0px 0px 4px #4040403d",
3432
- brandShadowSm: "0px 1px 3px 0px #1018281a, 0px 1px 2px 0px #1018280f, 0px 0px 0px 4px #4040403d",
3433
- gray: "0px 0px 0px 4px #a0a0a624",
3434
- grayShadowXs: "0px 1px 2px 0px #1018280d, 0px 0px 0px 4px #a0a0a624",
3435
- grayShadowSm: "0px 1px 3px 0px #1018281a, 0px 1px 2px 0px #1018280f, 0px 0px 0px 4px #a0a0a624",
3436
- error: "0px 0px 0px 4px #f044383d",
3437
- errorShadowXs: "0px 1px 2px 0px #1018280d, 0px 0px 0px 4px #f044383d"
3438
- };
3439
- var forestAgencyPreset = {
3440
- name: "forest-agency",
3441
- defaultVariant: "light",
3442
- variants: {
3443
- light: {
3444
- tokens: {
3445
- base,
3446
- error,
3447
- warning,
3448
- success,
3449
- info,
3450
- spacing,
3451
- radius: radius3,
3452
- shadows,
3453
- focusRings: focusRings3,
3454
- fontFamily: '"Aeonik", sans-serif',
3455
- fontFamilyMono: '"Aeonik Mono", monospace',
3456
- fontSize,
3457
- lineHeight,
3458
- fontWeight,
3459
- display,
3460
- container,
3461
- widths,
3462
- text: text3,
3463
- bg: bg3,
3464
- fg: fg3,
3465
- border: border3,
3466
- buttonColors: buttonColors3,
3467
- avatarColors: avatarColors3,
3468
- breadcrumbColors: breadcrumbColors3,
3469
- iconColors: iconColors3,
3470
- navColors: navColors3,
3471
- sliderColors: sliderColors3,
3472
- toggleColors: toggleColors3,
3473
- chartColors: chartColors3,
3474
- alpha
3475
- }
3476
- }
3346
+ var alpha = {
3347
+ white: {
3348
+ 10: "#ffffff1a",
3349
+ 20: "#ffffff33",
3350
+ 30: "#ffffff4d",
3351
+ 40: "#ffffff66",
3352
+ 50: "#ffffff80",
3353
+ 60: "#ffffff99",
3354
+ 70: "#ffffffb3",
3355
+ 80: "#ffffffcc",
3356
+ 90: "#ffffffe6",
3357
+ 100: "#ffffff"
3358
+ },
3359
+ black: {
3360
+ 10: "#0000001a",
3361
+ 20: "#00000033",
3362
+ 30: "#0000004d",
3363
+ 40: "#00000066",
3364
+ 50: "#00000080",
3365
+ 60: "#00000099",
3366
+ 70: "#000000b3",
3367
+ 80: "#000000cc",
3368
+ 90: "#000000e6",
3369
+ 100: "#000000"
3477
3370
  }
3478
3371
  };
3479
3372
 
3480
- // src/theme/presets/forest-internal.ts
3481
- var radius4 = {
3373
+ // src/theme/presets/forest-alkemy-plus.dark.ts
3374
+ var highlight = magenta;
3375
+ var radius2 = {
3482
3376
  ...radius,
3483
3377
  xxs: 1,
3484
3378
  xs: 2,
@@ -3490,286 +3384,298 @@ var radius4 = {
3490
3384
  "3xl": 10,
3491
3385
  "4xl": 12
3492
3386
  };
3493
- var text4 = {
3494
- primary: gray[900],
3495
- secondary: gray[700],
3496
- secondaryHover: gray[800],
3497
- tertiary: gray[600],
3498
- tertiaryHover: gray[700],
3387
+ var text2 = {
3388
+ primary: gray[50],
3389
+ secondary: gray[300],
3390
+ secondaryHover: gray[200],
3391
+ tertiary: gray[400],
3392
+ tertiaryHover: gray[300],
3499
3393
  quaternary: gray[500],
3500
- disabled: gray[500],
3394
+ disabled: gray[600],
3501
3395
  placeholder: gray[500],
3502
- placeholderSubtle: gray[300],
3396
+ placeholderSubtle: gray[600],
3503
3397
  white: base.white,
3504
- brandPrimary: magenta[900],
3505
- brandSecondary: magenta[700],
3506
- brandTertiary: magenta[600],
3507
- brandTertiaryAlt: magenta[600],
3508
- primaryOnBrand: base.white,
3509
- secondaryOnBrand: magenta[200],
3510
- tertiaryOnBrand: magenta[200],
3511
- quaternaryOnBrand: magenta[300],
3512
- errorPrimary: error[600],
3513
- warningPrimary: warning[600],
3514
- successPrimary: success[600]
3398
+ // Greyscale brand text (light neutral on the dark page).
3399
+ brandPrimary: gray[50],
3400
+ brandSecondary: gray[200],
3401
+ brandTertiary: gray[300],
3402
+ brandTertiaryAlt: gray[300],
3403
+ // "onBrand" text sits on the LIGHT-grey brand surface -> it must be dark.
3404
+ primaryOnBrand: gray[950],
3405
+ secondaryOnBrand: gray[700],
3406
+ tertiaryOnBrand: gray[700],
3407
+ quaternaryOnBrand: gray[600],
3408
+ errorPrimary: error[400],
3409
+ warningPrimary: warning[400],
3410
+ successPrimary: success[400]
3515
3411
  };
3516
- var bg4 = {
3517
- primary: gray[50],
3518
- primaryAlt: gray[50],
3519
- primaryHover: gray[100],
3520
- primarySolid: gray[950],
3521
- secondary: base.white,
3522
- secondaryAlt: base.white,
3523
- secondarySubtle: gray[25],
3524
- secondaryHover: gray[50],
3525
- secondarySolid: gray[600],
3526
- tertiary: gray[100],
3527
- quaternary: gray[200],
3528
- active: gray[200],
3529
- disabled: gray[100],
3530
- disabledSubtle: gray[50],
3412
+ var bg2 = {
3413
+ primary: gray[950],
3414
+ primaryAlt: gray[950],
3415
+ primaryHover: gray[900],
3416
+ primarySolid: gray[50],
3417
+ secondary: gray[900],
3418
+ secondaryAlt: gray[900],
3419
+ secondarySubtle: gray[900],
3420
+ secondaryHover: gray[800],
3421
+ secondarySolid: gray[300],
3422
+ tertiary: gray[800],
3423
+ quaternary: gray[700],
3424
+ active: gray[700],
3425
+ disabled: gray[800],
3426
+ disabledSubtle: gray[900],
3531
3427
  overlay: gray[950],
3532
- brandPrimary: magenta[50],
3533
- brandPrimaryAlt: magenta[50],
3534
- brandSecondary: magenta[100],
3535
- brandSolid: magenta[400],
3536
- brandSolidHover: magenta[500],
3537
- brandSection: magenta[800],
3538
- brandSectionSubtle: magenta[700],
3539
- errorPrimary: error[50],
3540
- errorSecondary: error[100],
3428
+ // Greyscale brand surfaces: subtle brand bg is a dark grey; the solid brand
3429
+ // face is a LIGHT grey (mirrors light's charcoal solid).
3430
+ brandPrimary: gray[800],
3431
+ brandPrimaryAlt: gray[800],
3432
+ brandSecondary: gray[700],
3433
+ brandSolid: gray[100],
3434
+ brandSolidHover: gray[200],
3435
+ brandSection: gray[900],
3436
+ brandSectionSubtle: gray[800],
3437
+ errorPrimary: error[950],
3438
+ errorSecondary: error[900],
3541
3439
  errorSolid: error[600],
3542
- warningPrimary: warning[50],
3543
- warningSecondary: warning[100],
3440
+ warningPrimary: warning[950],
3441
+ warningSecondary: warning[900],
3544
3442
  warningSolid: warning[600],
3545
- successPrimary: success[50],
3546
- successSecondary: success[100],
3443
+ successPrimary: success[950],
3444
+ successSecondary: success[900],
3547
3445
  successSolid: success[600]
3548
3446
  };
3549
- var fg4 = {
3550
- primary: gray[900],
3551
- secondary: gray[700],
3552
- secondaryHover: gray[800],
3553
- tertiary: gray[600],
3554
- tertiaryHover: gray[700],
3447
+ var fg2 = {
3448
+ primary: gray[50],
3449
+ secondary: gray[300],
3450
+ secondaryHover: gray[200],
3451
+ tertiary: gray[400],
3452
+ tertiaryHover: gray[300],
3555
3453
  quaternary: gray[500],
3556
- quaternaryHover: gray[600],
3557
- quinary: gray[400],
3558
- quinaryHover: gray[500],
3559
- senary: gray[300],
3454
+ quaternaryHover: gray[400],
3455
+ quinary: gray[500],
3456
+ quinaryHover: gray[400],
3457
+ senary: gray[600],
3560
3458
  white: base.white,
3561
- disabled: gray[400],
3562
- disabledSubtle: gray[300],
3563
- brandPrimary: magenta[400],
3564
- brandPrimaryAlt: magenta[400],
3565
- brandSecondary: magenta[400],
3566
- errorPrimary: error[600],
3459
+ disabled: gray[600],
3460
+ disabledSubtle: gray[700],
3461
+ brandPrimary: gray[100],
3462
+ brandPrimaryAlt: gray[100],
3463
+ brandSecondary: gray[300],
3464
+ errorPrimary: error[400],
3567
3465
  errorSecondary: error[500],
3568
- warningPrimary: warning[600],
3466
+ warningPrimary: warning[400],
3569
3467
  warningSecondary: warning[500],
3570
- successPrimary: success[600],
3468
+ successPrimary: success[400],
3571
3469
  successSecondary: success[500]
3572
3470
  };
3573
- var border4 = {
3574
- primary: gray[300],
3575
- secondary: gray[200],
3576
- tertiary: gray[100],
3577
- disabled: gray[300],
3578
- disabledSubtle: gray[200],
3579
- brand: magenta[300],
3580
- brandSolid: magenta[400],
3581
- brandSolidAlt: magenta[400],
3582
- error: error[300],
3471
+ var border2 = {
3472
+ primary: gray[700],
3473
+ secondary: gray[800],
3474
+ tertiary: gray[800],
3475
+ disabled: gray[700],
3476
+ disabledSubtle: gray[800],
3477
+ brand: gray[600],
3478
+ brandSolid: gray[100],
3479
+ brandSolidAlt: gray[100],
3480
+ error: error[800],
3583
3481
  errorSolid: error[600]
3584
3482
  };
3585
- var buttonColors4 = {
3483
+ var buttonColors2 = {
3586
3484
  primary: {
3587
- bg: magenta[400],
3588
- bgHover: magenta[500],
3589
- fg: base.white,
3590
- fgHover: base.white,
3591
- border: magenta[400],
3592
- borderHover: magenta[500]
3485
+ bg: gray[100],
3486
+ bgHover: gray[200],
3487
+ fg: gray[950],
3488
+ fgHover: gray[950],
3489
+ border: gray[100],
3490
+ borderHover: gray[200]
3593
3491
  },
3594
3492
  secondary: {
3595
- bg: gray[900],
3596
- bgHover: gray[950],
3597
- fg: base.white,
3598
- fgHover: base.white,
3599
- border: gray[900],
3600
- borderHover: gray[950]
3493
+ bg: gray[100],
3494
+ bgHover: base.white,
3495
+ fg: gray[900],
3496
+ fgHover: gray[950],
3497
+ border: gray[100],
3498
+ borderHover: base.white
3601
3499
  },
3602
3500
  secondaryColor: {
3603
- bg: base.white,
3604
- bgHover: magenta[50],
3605
- fg: magenta[400],
3606
- fgHover: magenta[500],
3607
- border: magenta[300],
3608
- borderHover: magenta[300]
3501
+ bg: gray[900],
3502
+ bgHover: gray[800],
3503
+ fg: gray[100],
3504
+ fgHover: gray[50],
3505
+ border: gray[700],
3506
+ borderHover: gray[700]
3609
3507
  },
3610
3508
  tertiary: {
3611
- fg: gray[600],
3612
- fgHover: gray[700],
3613
- bgHover: gray[50]
3509
+ fg: gray[300],
3510
+ fgHover: gray[100],
3511
+ bgHover: gray[800]
3614
3512
  },
3615
3513
  tertiaryColor: {
3616
- fg: magenta[400],
3617
- fgHover: magenta[500],
3618
- bgHover: magenta[50]
3514
+ fg: gray[100],
3515
+ fgHover: gray[50],
3516
+ bgHover: gray[800]
3619
3517
  },
3620
3518
  primaryError: {
3621
3519
  bg: error[600],
3622
- bgHover: error[700],
3520
+ bgHover: error[500],
3623
3521
  fg: base.white,
3624
3522
  fgHover: base.white,
3625
3523
  border: error[600],
3626
- borderHover: error[700]
3524
+ borderHover: error[500]
3627
3525
  },
3628
3526
  secondaryError: {
3629
- bg: base.white,
3630
- bgHover: error[50],
3631
- fg: error[700],
3632
- fgHover: error[800],
3633
- border: error[300],
3634
- borderHover: error[300]
3527
+ bg: gray[900],
3528
+ bgHover: error[950],
3529
+ fg: error[300],
3530
+ fgHover: error[200],
3531
+ border: error[800],
3532
+ borderHover: error[800]
3635
3533
  },
3636
3534
  tertiaryError: {
3637
- fg: error[700],
3638
- fgHover: error[800],
3639
- bgHover: error[50]
3535
+ fg: error[300],
3536
+ fgHover: error[200],
3537
+ bgHover: error[950]
3640
3538
  }
3641
3539
  };
3642
- var avatarColors4 = {
3643
- bg: gray[100],
3644
- contrastBorder: "#00000014",
3645
- profilePhotoBorder: base.white,
3646
- focusBorder: "#a0a0a624"
3647
- // gray[400] + 14% alpha
3648
- };
3649
- var breadcrumbColors4 = {
3650
- fg: gray[600],
3651
- fgHover: gray[700],
3652
- bgHover: gray[50],
3653
- brandBgHover: magenta[50],
3654
- brandFgHover: magenta[700],
3540
+ var breadcrumbColors2 = {
3541
+ fg: gray[400],
3542
+ fgHover: gray[200],
3543
+ bgHover: gray[800],
3544
+ brandBgHover: gray[800],
3545
+ brandFgHover: gray[100],
3655
3546
  iconFg: gray[500],
3656
- iconFgHover: gray[700],
3657
- brandIconFgHover: magenta[700]
3547
+ iconFgHover: gray[300],
3548
+ brandIconFgHover: gray[100]
3658
3549
  };
3659
- var iconColors4 = {
3660
- fgBrand: magenta[400],
3661
- fgBrandOnBrand: magenta[200],
3662
- featuredModernBorder: gray[200],
3663
- featuredLightFgBrand: magenta[400],
3664
- featuredLightFgGray: gray[500],
3665
- featuredLightFgError: error[600],
3666
- featuredLightFgWarning: warning[600],
3667
- featuredLightFgSuccess: success[600],
3550
+ var iconColors2 = {
3551
+ fgBrand: gray[100],
3552
+ fgBrandOnBrand: gray[700],
3553
+ featuredModernBorder: gray[700],
3554
+ featuredLightFgBrand: gray[100],
3555
+ featuredLightFgGray: gray[400],
3556
+ featuredLightFgError: error[400],
3557
+ featuredLightFgWarning: warning[400],
3558
+ featuredLightFgSuccess: success[400],
3668
3559
  featuredDarkFgBrand: base.white,
3669
3560
  featuredDarkFgGray: base.white,
3670
3561
  featuredDarkFgError: base.white,
3671
3562
  featuredDarkFgWarning: base.white,
3672
3563
  featuredDarkFgSuccess: base.white
3673
3564
  };
3674
- var navColors4 = {
3675
- itemIconFg: gray[500],
3676
- itemIconFgActive: gray[700],
3677
- itemButtonIconFg: gray[500],
3678
- itemButtonIconFgActive: gray[700]
3565
+ var sliderColors2 = {
3566
+ handleBorder: gray[100],
3567
+ handleBg: gray[50]
3679
3568
  };
3680
- var sliderColors4 = {
3681
- handleBorder: magenta[400],
3682
- handleBg: base.white
3569
+ var avatarColors2 = {
3570
+ bg: gray[800],
3571
+ fg: gray[50],
3572
+ contrastBorder: "#ffffff1f",
3573
+ profilePhotoBorder: gray[900],
3574
+ focusBorder: "#a0a0a624"
3683
3575
  };
3684
- var toggleColors4 = {
3685
- buttonFgDisabled: gray[50]
3576
+ var navColors2 = {
3577
+ itemIconFg: gray[400],
3578
+ itemIconFgActive: gray[100],
3579
+ itemButtonIconFg: gray[400],
3580
+ itemButtonIconFgActive: gray[100]
3686
3581
  };
3687
- var chartColors4 = {
3688
- axisFg: gray[100],
3689
- gridlineFg: gray[100],
3690
- labelFg: gray[600],
3691
- labelFgEmphasis: gray[700],
3692
- bg: base.white,
3693
- bgAlt: gray[50],
3694
- tooltipBg: gray[950],
3695
- tooltipFg: base.white,
3582
+ var toggleColors2 = {
3583
+ buttonFgDisabled: gray[800]
3584
+ };
3585
+ var chartColors2 = {
3586
+ axisFg: gray[800],
3587
+ gridlineFg: gray[800],
3588
+ labelFg: gray[400],
3589
+ labelFgEmphasis: gray[300],
3590
+ bg: gray[900],
3591
+ bgAlt: gray[800],
3592
+ tooltipBg: gray[50],
3593
+ tooltipFg: gray[900],
3696
3594
  crosshairFg: gray[500],
3697
- legendFg: text4.tertiary,
3595
+ legendFg: text2.tertiary,
3698
3596
  series: [
3699
- { fg: misc.purple[500], fgHover: misc.purple[600], bg: misc.purple[100], bgHover: misc.purple[200] },
3700
- { fg: misc.orangeDark[400], fgHover: misc.orangeDark[500], bg: misc.orangeDark[100], bgHover: misc.orangeDark[200] },
3701
- { fg: misc.teal[300], fgHover: misc.teal[400], bg: misc.teal[50], bgHover: misc.teal[100] },
3702
- { fg: warning[400], fgHover: warning[500], bg: warning[100], bgHover: warning[200] },
3703
- { fg: misc.rose[400], fgHover: misc.rose[500], bg: misc.rose[100], bgHover: misc.rose[200] },
3704
- { fg: misc.blueLight[400], fgHover: misc.blueLight[500], bg: misc.blueLight[100], bgHover: misc.blueLight[200] },
3705
- { fg: misc.orange[300], fgHover: misc.orange[400], bg: misc.orange[100], bgHover: misc.orange[200] },
3706
- { fg: misc.cyan[600], fgHover: misc.cyan[700], bg: misc.cyan[100], bgHover: misc.cyan[200] },
3707
- { fg: misc.green[500], fgHover: misc.green[600], bg: misc.green[100], bgHover: misc.green[200] },
3708
- { fg: misc.pink[400], fgHover: misc.pink[500], bg: misc.pink[100], bgHover: misc.pink[200] },
3709
- { fg: misc.fuchsia[400], fgHover: misc.fuchsia[500], bg: misc.fuchsia[100], bgHover: misc.fuchsia[200] },
3710
- { fg: misc.teal[600], fgHover: misc.teal[700], bg: misc.teal[100], bgHover: misc.teal[200] }
3597
+ { fg: violet[400], fgHover: violet[300], bg: violet[900], bgHover: violet[800] },
3598
+ { fg: magenta[400], fgHover: magenta[300], bg: magenta[900], bgHover: magenta[800] },
3599
+ { fg: misc.teal[300], fgHover: misc.teal[200], bg: misc.teal[900], bgHover: misc.teal[800] },
3600
+ { fg: warning[400], fgHover: warning[300], bg: warning[900], bgHover: warning[800] },
3601
+ { fg: misc.blueLight[400], fgHover: misc.blueLight[300], bg: misc.blueLight[900], bgHover: misc.blueLight[800] },
3602
+ { fg: misc.rose[400], fgHover: misc.rose[300], bg: misc.rose[900], bgHover: misc.rose[800] },
3603
+ { fg: misc.green[400], fgHover: misc.green[300], bg: misc.green[900], bgHover: misc.green[800] },
3604
+ { fg: misc.orangeDark[400], fgHover: misc.orangeDark[300], bg: misc.orangeDark[900], bgHover: misc.orangeDark[800] },
3605
+ { fg: misc.cyan[400], fgHover: misc.cyan[300], bg: misc.cyan[900], bgHover: misc.cyan[800] },
3606
+ { fg: misc.orange[300], fgHover: misc.orange[200], bg: misc.orange[900], bgHover: misc.orange[800] },
3607
+ { fg: misc.teal[500], fgHover: misc.teal[400], bg: misc.teal[800], bgHover: misc.teal[700] },
3608
+ { fg: misc.pink[400], fgHover: misc.pink[300], bg: misc.pink[900], bgHover: misc.pink[800] }
3711
3609
  ]
3712
3610
  };
3713
- var focusRings4 = {
3714
- brand: "0px 0px 0px 4px #FF78F33d",
3715
- brandShadowXs: "0px 1px 2px 0px #1018280d, 0px 0px 0px 4px #FF78F33d",
3716
- brandShadowSm: "0px 1px 3px 0px #1018281a, 0px 1px 2px 0px #1018280f, 0px 0px 0px 4px #FF78F33d",
3611
+ var focusRings2 = {
3612
+ brand: "0px 0px 0px 4px #4040403d",
3613
+ brandShadowXs: "0px 1px 2px 0px #1018280d, 0px 0px 0px 4px #4040403d",
3614
+ brandShadowSm: "0px 1px 3px 0px #1018281a, 0px 1px 2px 0px #1018280f, 0px 0px 0px 4px #4040403d",
3717
3615
  gray: "0px 0px 0px 4px #a0a0a624",
3718
3616
  grayShadowXs: "0px 1px 2px 0px #1018280d, 0px 0px 0px 4px #a0a0a624",
3719
3617
  grayShadowSm: "0px 1px 3px 0px #1018281a, 0px 1px 2px 0px #1018280f, 0px 0px 0px 4px #a0a0a624",
3720
3618
  error: "0px 0px 0px 4px #f044383d",
3721
3619
  errorShadowXs: "0px 1px 2px 0px #1018280d, 0px 0px 0px 4px #f044383d"
3722
3620
  };
3723
- var forestInternalPreset = {
3724
- name: "forest-internal",
3725
- defaultVariant: "light",
3726
- variants: {
3727
- light: {
3728
- tokens: {
3729
- base,
3730
- error,
3731
- warning,
3732
- success,
3733
- info,
3734
- spacing,
3735
- radius: radius4,
3736
- shadows,
3737
- focusRings: focusRings4,
3738
- fontFamily: '"Aeonik", sans-serif',
3739
- fontFamilyMono: '"Aeonik Mono", monospace',
3740
- fontSize,
3741
- lineHeight,
3742
- fontWeight,
3743
- display,
3744
- container,
3745
- widths,
3746
- text: text4,
3747
- bg: bg4,
3748
- fg: fg4,
3749
- border: border4,
3750
- buttonColors: buttonColors4,
3751
- avatarColors: avatarColors4,
3752
- breadcrumbColors: breadcrumbColors4,
3753
- iconColors: iconColors4,
3754
- navColors: navColors4,
3755
- sliderColors: sliderColors4,
3756
- toggleColors: toggleColors4,
3757
- chartColors: chartColors4,
3758
- alpha
3759
- }
3760
- }
3761
- }
3621
+ var letterSpacing = {
3622
+ h1: "-0.02em",
3623
+ h2: "-0.02em",
3624
+ h3: "-0.02em",
3625
+ h4: "-0.02em",
3626
+ h5: "-0.02em",
3627
+ h6: "-0.02em",
3628
+ subtitle1: "0.02em",
3629
+ subtitle2: "0.02em",
3630
+ body1: "0.02em",
3631
+ body2: "0.02em",
3632
+ caption: "0.02em",
3633
+ overline: "0.02em",
3634
+ button: "0.02em"
3635
+ };
3636
+ var alkemyPlusDarkTokens = {
3637
+ base,
3638
+ error,
3639
+ warning,
3640
+ success,
3641
+ info,
3642
+ spacing,
3643
+ radius: radius2,
3644
+ shadows,
3645
+ focusRings: focusRings2,
3646
+ fontFamily: '"Aeonik", sans-serif',
3647
+ fontFamilyMono: '"Aeonik Mono", monospace',
3648
+ fontSize,
3649
+ lineHeight,
3650
+ fontWeight,
3651
+ display,
3652
+ container,
3653
+ widths,
3654
+ text: text2,
3655
+ bg: bg2,
3656
+ fg: fg2,
3657
+ border: border2,
3658
+ buttonColors: buttonColors2,
3659
+ avatarColors: avatarColors2,
3660
+ breadcrumbColors: breadcrumbColors2,
3661
+ iconColors: iconColors2,
3662
+ navColors: navColors2,
3663
+ sliderColors: sliderColors2,
3664
+ toggleColors: toggleColors2,
3665
+ chartColors: chartColors2,
3666
+ alpha,
3667
+ letterSpacing,
3668
+ highlight
3762
3669
  };
3763
3670
 
3764
3671
  // src/theme/presets/forest-alkemy-plus.ts
3765
- var info2 = violet;
3766
- var highlight = magenta;
3767
- var colors2 = {
3672
+ var highlight2 = magenta;
3673
+ var colors = {
3768
3674
  base,
3769
3675
  error,
3770
3676
  warning,
3771
3677
  success,
3772
- info: info2,
3678
+ info,
3773
3679
  brand: {
3774
3680
  25: gray[25],
3775
3681
  50: gray[50],
@@ -3789,7 +3695,7 @@ var colors2 = {
3789
3695
  accent: red,
3790
3696
  gray
3791
3697
  };
3792
- var radius5 = {
3698
+ var radius3 = {
3793
3699
  ...radius,
3794
3700
  xxs: 1,
3795
3701
  xs: 2,
@@ -3801,7 +3707,7 @@ var radius5 = {
3801
3707
  "3xl": 10,
3802
3708
  "4xl": 12
3803
3709
  };
3804
- var text5 = {
3710
+ var text3 = {
3805
3711
  primary: gray[900],
3806
3712
  secondary: gray[700],
3807
3713
  secondaryHover: gray[800],
@@ -3812,19 +3718,19 @@ var text5 = {
3812
3718
  placeholder: gray[500],
3813
3719
  placeholderSubtle: gray[300],
3814
3720
  white: base.white,
3815
- brandPrimary: colors2.brand[900],
3816
- brandSecondary: colors2.brand[700],
3817
- brandTertiary: colors2.brand[600],
3818
- brandTertiaryAlt: colors2.brand[600],
3721
+ brandPrimary: colors.brand[900],
3722
+ brandSecondary: colors.brand[700],
3723
+ brandTertiary: colors.brand[600],
3724
+ brandTertiaryAlt: colors.brand[600],
3819
3725
  primaryOnBrand: base.white,
3820
- secondaryOnBrand: colors2.brand[200],
3821
- tertiaryOnBrand: colors2.brand[200],
3822
- quaternaryOnBrand: colors2.brand[300],
3726
+ secondaryOnBrand: colors.brand[200],
3727
+ tertiaryOnBrand: colors.brand[200],
3728
+ quaternaryOnBrand: colors.brand[300],
3823
3729
  errorPrimary: error[600],
3824
3730
  warningPrimary: warning[600],
3825
3731
  successPrimary: success[600]
3826
3732
  };
3827
- var bg5 = {
3733
+ var bg3 = {
3828
3734
  primary: gray[25],
3829
3735
  primaryAlt: gray[25],
3830
3736
  primaryHover: gray[100],
@@ -3840,13 +3746,13 @@ var bg5 = {
3840
3746
  disabled: gray[100],
3841
3747
  disabledSubtle: gray[50],
3842
3748
  overlay: gray[950],
3843
- brandPrimary: colors2.brand[50],
3844
- brandPrimaryAlt: colors2.brand[50],
3845
- brandSecondary: colors2.brand[100],
3846
- brandSolid: colors2.brand[600],
3847
- brandSolidHover: colors2.brand[700],
3848
- brandSection: colors2.brand[800],
3849
- brandSectionSubtle: colors2.brand[700],
3749
+ brandPrimary: colors.brand[50],
3750
+ brandPrimaryAlt: colors.brand[50],
3751
+ brandSecondary: colors.brand[100],
3752
+ brandSolid: colors.brand[600],
3753
+ brandSolidHover: colors.brand[700],
3754
+ brandSection: colors.brand[800],
3755
+ brandSectionSubtle: colors.brand[700],
3850
3756
  errorPrimary: error[50],
3851
3757
  errorSecondary: error[100],
3852
3758
  errorSolid: error[600],
@@ -3857,7 +3763,7 @@ var bg5 = {
3857
3763
  successSecondary: success[100],
3858
3764
  successSolid: success[600]
3859
3765
  };
3860
- var fg5 = {
3766
+ var fg3 = {
3861
3767
  primary: gray[900],
3862
3768
  secondary: gray[700],
3863
3769
  secondaryHover: gray[800],
@@ -3871,9 +3777,9 @@ var fg5 = {
3871
3777
  white: base.white,
3872
3778
  disabled: gray[400],
3873
3779
  disabledSubtle: gray[300],
3874
- brandPrimary: colors2.brand[600],
3875
- brandPrimaryAlt: colors2.brand[600],
3876
- brandSecondary: colors2.brand[500],
3780
+ brandPrimary: colors.brand[600],
3781
+ brandPrimaryAlt: colors.brand[600],
3782
+ brandSecondary: colors.brand[500],
3877
3783
  errorPrimary: error[600],
3878
3784
  errorSecondary: error[500],
3879
3785
  warningPrimary: warning[600],
@@ -3881,26 +3787,26 @@ var fg5 = {
3881
3787
  successPrimary: success[600],
3882
3788
  successSecondary: success[500]
3883
3789
  };
3884
- var border5 = {
3790
+ var border3 = {
3885
3791
  primary: gray[300],
3886
3792
  secondary: gray[200],
3887
3793
  tertiary: gray[100],
3888
3794
  disabled: gray[300],
3889
3795
  disabledSubtle: gray[200],
3890
3796
  brand: gray[400],
3891
- brandSolid: colors2.brand[600],
3892
- brandSolidAlt: colors2.brand[600],
3797
+ brandSolid: colors.brand[600],
3798
+ brandSolidAlt: colors.brand[600],
3893
3799
  error: error[300],
3894
3800
  errorSolid: error[600]
3895
3801
  };
3896
- var buttonColors5 = {
3802
+ var buttonColors3 = {
3897
3803
  primary: {
3898
- bg: colors2.brand[700],
3899
- bgHover: colors2.brand[800],
3804
+ bg: colors.brand[700],
3805
+ bgHover: colors.brand[800],
3900
3806
  fg: base.white,
3901
3807
  fgHover: base.white,
3902
- border: colors2.brand[700],
3903
- borderHover: colors2.brand[800]
3808
+ border: colors.brand[700],
3809
+ borderHover: colors.brand[800]
3904
3810
  },
3905
3811
  secondary: {
3906
3812
  bg: gray[900],
@@ -3912,11 +3818,11 @@ var buttonColors5 = {
3912
3818
  },
3913
3819
  secondaryColor: {
3914
3820
  bg: base.white,
3915
- bgHover: colors2.brand[50],
3916
- fg: colors2.brand[700],
3917
- fgHover: colors2.brand[800],
3918
- border: colors2.brand[300],
3919
- borderHover: colors2.brand[300]
3821
+ bgHover: colors.brand[50],
3822
+ fg: colors.brand[700],
3823
+ fgHover: colors.brand[800],
3824
+ border: colors.brand[300],
3825
+ borderHover: colors.brand[300]
3920
3826
  },
3921
3827
  tertiary: {
3922
3828
  fg: gray[600],
@@ -3924,9 +3830,9 @@ var buttonColors5 = {
3924
3830
  bgHover: gray[50]
3925
3831
  },
3926
3832
  tertiaryColor: {
3927
- fg: colors2.brand[700],
3928
- fgHover: colors2.brand[800],
3929
- bgHover: colors2.brand[50]
3833
+ fg: colors.brand[700],
3834
+ fgHover: colors.brand[800],
3835
+ bgHover: colors.brand[50]
3930
3836
  },
3931
3837
  primaryError: {
3932
3838
  bg: error[600],
@@ -3950,28 +3856,21 @@ var buttonColors5 = {
3950
3856
  bgHover: error[50]
3951
3857
  }
3952
3858
  };
3953
- var avatarColors5 = {
3954
- bg: gray[100],
3955
- contrastBorder: "#00000014",
3956
- profilePhotoBorder: base.white,
3957
- focusBorder: "#a0a0a624"
3958
- // gray[400] + 14% alpha
3959
- };
3960
- var breadcrumbColors5 = {
3859
+ var breadcrumbColors3 = {
3961
3860
  fg: gray[600],
3962
3861
  fgHover: gray[700],
3963
3862
  bgHover: gray[50],
3964
- brandBgHover: colors2.brand[50],
3965
- brandFgHover: colors2.brand[700],
3863
+ brandBgHover: colors.brand[50],
3864
+ brandFgHover: colors.brand[700],
3966
3865
  iconFg: gray[500],
3967
3866
  iconFgHover: gray[700],
3968
- brandIconFgHover: colors2.brand[700]
3867
+ brandIconFgHover: colors.brand[700]
3969
3868
  };
3970
- var iconColors5 = {
3971
- fgBrand: colors2.brand[600],
3972
- fgBrandOnBrand: colors2.brand[200],
3869
+ var iconColors3 = {
3870
+ fgBrand: colors.brand[600],
3871
+ fgBrandOnBrand: colors.brand[200],
3973
3872
  featuredModernBorder: gray[200],
3974
- featuredLightFgBrand: colors2.brand[600],
3873
+ featuredLightFgBrand: colors.brand[600],
3975
3874
  featuredLightFgGray: gray[500],
3976
3875
  featuredLightFgError: error[600],
3977
3876
  featuredLightFgWarning: warning[600],
@@ -3982,20 +3881,36 @@ var iconColors5 = {
3982
3881
  featuredDarkFgWarning: base.white,
3983
3882
  featuredDarkFgSuccess: base.white
3984
3883
  };
3985
- var navColors5 = {
3986
- itemIconFg: gray[500],
3987
- itemIconFgActive: gray[700],
3988
- itemButtonIconFg: gray[500],
3989
- itemButtonIconFgActive: gray[700]
3990
- };
3991
- var sliderColors5 = {
3992
- handleBorder: colors2.brand[600],
3884
+ var sliderColors3 = {
3885
+ handleBorder: colors.brand[600],
3993
3886
  handleBg: base.white
3994
3887
  };
3995
- var toggleColors5 = {
3996
- buttonFgDisabled: gray[50]
3888
+ var letterSpacing2 = {
3889
+ h1: "-0.02em",
3890
+ h2: "-0.02em",
3891
+ h3: "-0.02em",
3892
+ h4: "-0.02em",
3893
+ h5: "-0.02em",
3894
+ h6: "-0.02em",
3895
+ subtitle1: "0.02em",
3896
+ subtitle2: "0.02em",
3897
+ body1: "0.02em",
3898
+ body2: "0.02em",
3899
+ caption: "0.02em",
3900
+ overline: "0.02em",
3901
+ button: "0.02em"
3902
+ };
3903
+ var focusRings3 = {
3904
+ brand: "0px 0px 0px 4px #4040403d",
3905
+ brandShadowXs: "0px 1px 2px 0px #1018280d, 0px 0px 0px 4px #4040403d",
3906
+ brandShadowSm: "0px 1px 3px 0px #1018281a, 0px 1px 2px 0px #1018280f, 0px 0px 0px 4px #4040403d",
3907
+ gray: "0px 0px 0px 4px #a0a0a624",
3908
+ grayShadowXs: "0px 1px 2px 0px #1018280d, 0px 0px 0px 4px #a0a0a624",
3909
+ grayShadowSm: "0px 1px 3px 0px #1018281a, 0px 1px 2px 0px #1018280f, 0px 0px 0px 4px #a0a0a624",
3910
+ error: "0px 0px 0px 4px #f044383d",
3911
+ errorShadowXs: "0px 1px 2px 0px #1018280d, 0px 0px 0px 4px #f044383d"
3997
3912
  };
3998
- var chartColors5 = {
3913
+ var chartColors3 = {
3999
3914
  axisFg: gray[100],
4000
3915
  gridlineFg: gray[100],
4001
3916
  labelFg: gray[600],
@@ -4005,7 +3920,7 @@ var chartColors5 = {
4005
3920
  tooltipBg: gray[950],
4006
3921
  tooltipFg: base.white,
4007
3922
  crosshairFg: gray[500],
4008
- legendFg: text5.tertiary,
3923
+ legendFg: text3.tertiary,
4009
3924
  series: [
4010
3925
  // Brand accents lead — violet + magenta anchor the palette
4011
3926
  { fg: violet[500], fgHover: violet[600], bg: violet[100], bgHover: violet[200] },
@@ -4024,79 +3939,47 @@ var chartColors5 = {
4024
3939
  { fg: misc.pink[400], fgHover: misc.pink[500], bg: misc.pink[100], bgHover: misc.pink[200] }
4025
3940
  ]
4026
3941
  };
4027
- var letterSpacing = {
4028
- h1: "-0.02em",
4029
- h2: "-0.02em",
4030
- h3: "-0.02em",
4031
- h4: "-0.02em",
4032
- h5: "-0.02em",
4033
- h6: "-0.02em",
4034
- subtitle1: "0.02em",
4035
- subtitle2: "0.02em",
4036
- body1: "0.02em",
4037
- body2: "0.02em",
4038
- caption: "0.02em",
4039
- overline: "0.02em",
4040
- button: "0.02em"
4041
- };
4042
- var focusRings5 = {
4043
- brand: "0px 0px 0px 4px #4040403d",
4044
- brandShadowXs: "0px 1px 2px 0px #1018280d, 0px 0px 0px 4px #4040403d",
4045
- brandShadowSm: "0px 1px 3px 0px #1018281a, 0px 1px 2px 0px #1018280f, 0px 0px 0px 4px #4040403d",
4046
- gray: "0px 0px 0px 4px #a0a0a624",
4047
- grayShadowXs: "0px 1px 2px 0px #1018280d, 0px 0px 0px 4px #a0a0a624",
4048
- grayShadowSm: "0px 1px 3px 0px #1018281a, 0px 1px 2px 0px #1018280f, 0px 0px 0px 4px #a0a0a624",
4049
- error: "0px 0px 0px 4px #f044383d",
4050
- errorShadowXs: "0px 1px 2px 0px #1018280d, 0px 0px 0px 4px #f044383d"
4051
- };
4052
3942
  var forestAlkemyPlusPreset = {
4053
3943
  name: "forest-alkemy+",
4054
- defaultVariant: "light",
4055
- variants: {
4056
- light: {
4057
- tokens: {
4058
- base,
4059
- error,
4060
- warning,
4061
- success,
4062
- info: info2,
4063
- spacing,
4064
- radius: radius5,
4065
- shadows,
4066
- focusRings: focusRings5,
4067
- fontFamily: '"Aeonik", sans-serif',
4068
- fontFamilyMono: '"Aeonik Mono", monospace',
4069
- fontSize,
4070
- lineHeight,
4071
- fontWeight,
4072
- display,
4073
- container,
4074
- widths,
4075
- text: text5,
4076
- bg: bg5,
4077
- fg: fg5,
4078
- border: border5,
4079
- buttonColors: buttonColors5,
4080
- avatarColors: avatarColors5,
4081
- breadcrumbColors: breadcrumbColors5,
4082
- iconColors: iconColors5,
4083
- navColors: navColors5,
4084
- sliderColors: sliderColors5,
4085
- toggleColors: toggleColors5,
4086
- chartColors: chartColors5,
4087
- alpha,
4088
- letterSpacing,
4089
- highlight
4090
- }
4091
- }
4092
- }
3944
+ tokens: {
3945
+ base,
3946
+ error,
3947
+ warning,
3948
+ success,
3949
+ info,
3950
+ spacing,
3951
+ radius: radius3,
3952
+ shadows,
3953
+ focusRings: focusRings3,
3954
+ fontFamily: '"Aeonik", sans-serif',
3955
+ fontFamilyMono: '"Aeonik Mono", monospace',
3956
+ fontSize,
3957
+ lineHeight,
3958
+ fontWeight,
3959
+ display,
3960
+ container,
3961
+ widths,
3962
+ text: text3,
3963
+ bg: bg3,
3964
+ fg: fg3,
3965
+ border: border3,
3966
+ buttonColors: buttonColors3,
3967
+ avatarColors,
3968
+ breadcrumbColors: breadcrumbColors3,
3969
+ iconColors: iconColors3,
3970
+ navColors,
3971
+ sliderColors: sliderColors3,
3972
+ toggleColors,
3973
+ chartColors: chartColors3,
3974
+ alpha,
3975
+ letterSpacing: letterSpacing2,
3976
+ highlight: highlight2
3977
+ },
3978
+ tokensDark: alkemyPlusDarkTokens
4093
3979
  };
4094
3980
 
4095
3981
  // src/theme/presets/index.ts
4096
3982
  var presetRegistry = /* @__PURE__ */ new Map();
4097
- presetRegistry.set(forestExternalPreset.name, forestExternalPreset);
4098
- presetRegistry.set(forestAgencyPreset.name, forestAgencyPreset);
4099
- presetRegistry.set(forestInternalPreset.name, forestInternalPreset);
4100
3983
  presetRegistry.set(forestAlkemyPlusPreset.name, forestAlkemyPlusPreset);
4101
3984
  function getPreset(name) {
4102
3985
  return presetRegistry.get(name);
@@ -4109,9 +3992,9 @@ function getAvailablePresets() {
4109
3992
  }
4110
3993
 
4111
3994
  // src/theme/index.ts
4112
- var agencyTokens = forestAgencyPreset.variants.light.tokens;
4113
- var forestTheme = buildTheme(agencyTokens);
4114
- var forestThemeOptions = buildThemeOptions(agencyTokens);
3995
+ var { tokens, tokensDark } = forestAlkemyPlusPreset;
3996
+ var forestTheme = buildTheme(tokens, tokensDark);
3997
+ var forestThemeOptions = buildThemeOptions(tokens, tokensDark);
4115
3998
  // Annotate the CommonJS export names for ESM import in node:
4116
3999
  0 && (module.exports = {
4117
4000
  alpha,
@@ -4133,10 +4016,7 @@ var forestThemeOptions = buildThemeOptions(agencyTokens);
4133
4016
  fontFamilyMono,
4134
4017
  fontSize,
4135
4018
  fontWeight,
4136
- forestAgencyPreset,
4137
4019
  forestAlkemyPlusPreset,
4138
- forestExternalPreset,
4139
- forestInternalPreset,
4140
4020
  forestTheme,
4141
4021
  forestThemeOptions,
4142
4022
  getAvailablePresets,