@matteoaliano/forest-ui 0.8.8 → 1.0.0

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