@matteoaliano/forest-ui 0.8.9 → 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,18 +413,23 @@ 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": {
@@ -990,8 +443,8 @@ function buildComponents(tokens) {
990
443
  // like a tactile click rather than a slow settle.
991
444
  transition: "border-width 120ms ease, border-radius 120ms ease, opacity 120ms ease",
992
445
  borderTopWidth: 1,
993
- borderTopLeftRadius: radius6.md,
994
- borderTopRightRadius: radius6.md,
446
+ borderTopLeftRadius: radius4.md,
447
+ borderTopRightRadius: radius4.md,
995
448
  opacity: 0.75
996
449
  },
997
450
  "@media (prefers-reduced-motion: reduce)": {
@@ -1014,51 +467,214 @@ function buildComponents(tokens) {
1014
467
  }
1015
468
  },
1016
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.
1017
477
  MuiButtonGroup: {
1018
478
  defaultProps: {
1019
479
  disableElevation: true
1020
480
  },
1021
481
  styleOverrides: {
1022
482
  root: {
1023
- borderRadius: radius6.md
1024
- },
1025
- grouped: {
1026
- "&:not(:last-of-type)": {
1027
- 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}`
1028
534
  }
1029
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.
1030
539
  }
1031
540
  },
1032
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>.
1033
545
  MuiIconButton: {
1034
546
  styleOverrides: {
1035
- root: {
1036
- borderRadius: radius6.md,
547
+ root: ({ theme }) => ({
548
+ borderRadius: radius4.md,
1037
549
  padding: 6,
1038
550
  "& .MuiSvgIcon-root": {
1039
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
1040
603
  }
1041
- }
604
+ })
1042
605
  }
1043
606
  },
1044
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).
1045
612
  MuiFab: {
1046
613
  styleOverrides: {
1047
- root: {
1048
- 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
+ },
1049
643
  "&:hover": {
1050
- 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
1051
663
  },
1052
664
  "&:focus-visible": {
1053
- boxShadow: focusRings6.brandShadowSm
1054
- }
1055
- },
1056
- primary: {
1057
- backgroundColor: buttonColors6.primary.bg,
1058
- "&:hover": {
1059
- backgroundColor: buttonColors6.primary.bgHover
665
+ boxShadow: focusRings4.brandShadowSm
666
+ },
667
+ "@media (prefers-reduced-motion: reduce)": {
668
+ transition: "none",
669
+ "&::before": { display: "none" }
1060
670
  }
1061
- }
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
1062
678
  }
1063
679
  },
1064
680
  // ─── TextField / Input ──────────────────────────────────────────
@@ -1080,8 +696,8 @@ function buildComponents(tokens) {
1080
696
  styleOverrides: {
1081
697
  input: {
1082
698
  "&::placeholder": {
1083
- color: text6.placeholder,
1084
- WebkitTextFillColor: text6.placeholder,
699
+ color: text4.placeholder,
700
+ WebkitTextFillColor: text4.placeholder,
1085
701
  fontWeight: 400,
1086
702
  opacity: 1
1087
703
  }
@@ -1091,33 +707,33 @@ function buildComponents(tokens) {
1091
707
  MuiOutlinedInput: {
1092
708
  styleOverrides: {
1093
709
  root: {
1094
- borderRadius: radius6.md,
710
+ borderRadius: radius4.md,
1095
711
  boxShadow: tokenShadows.xs,
1096
712
  "&&:hover:not(.Mui-focused):not(.Mui-disabled) .MuiOutlinedInput-notchedOutline": {
1097
- borderColor: border6.brand
713
+ borderColor: border4.brand
1098
714
  },
1099
715
  "&&.Mui-focused .MuiOutlinedInput-notchedOutline": {
1100
- borderColor: border6.brandSolid,
716
+ borderColor: border4.brandSolid,
1101
717
  borderWidth: 1,
1102
718
  boxShadow: "none"
1103
719
  },
1104
720
  "&&.Mui-error:not(.Mui-focused) .MuiOutlinedInput-notchedOutline": {
1105
- borderColor: border6.error
721
+ borderColor: border4.error
1106
722
  },
1107
723
  "&&.Mui-error.Mui-focused .MuiOutlinedInput-notchedOutline": {
1108
- borderColor: border6.errorSolid,
724
+ borderColor: border4.errorSolid,
1109
725
  boxShadow: "none"
1110
726
  },
1111
727
  "& .MuiInputAdornment-root .MuiIconButton-root": {
1112
- color: fg6.quaternary,
728
+ color: fg4.quaternary,
1113
729
  "&:hover": {
1114
- backgroundColor: bg6.primaryHover,
1115
- color: fg6.brandPrimary
730
+ backgroundColor: bg4.primaryHover,
731
+ color: fg4.brandPrimary
1116
732
  }
1117
733
  }
1118
734
  },
1119
735
  notchedOutline: {
1120
- borderColor: border6.primary
736
+ borderColor: border4.primary
1121
737
  },
1122
738
  input: {
1123
739
  padding: "6px 12px",
@@ -1129,12 +745,12 @@ function buildComponents(tokens) {
1129
745
  MuiFormLabel: {
1130
746
  styleOverrides: {
1131
747
  root: {
1132
- color: text6.placeholder,
748
+ color: text4.placeholder,
1133
749
  "&.Mui-focused": {
1134
- color: text6.placeholder
750
+ color: text4.placeholder
1135
751
  },
1136
752
  "&.Mui-error": {
1137
- color: text6.errorPrimary
753
+ color: text4.errorPrimary
1138
754
  }
1139
755
  }
1140
756
  }
@@ -1144,12 +760,12 @@ function buildComponents(tokens) {
1144
760
  root: {
1145
761
  fontSize: 14,
1146
762
  fontWeight: 500,
1147
- color: text6.placeholder,
763
+ color: text4.placeholder,
1148
764
  "&.Mui-focused": {
1149
- color: text6.placeholder
765
+ color: text4.placeholder
1150
766
  },
1151
767
  "&.Mui-error": {
1152
- color: text6.errorPrimary
768
+ color: text4.errorPrimary
1153
769
  }
1154
770
  },
1155
771
  outlined: {
@@ -1168,7 +784,7 @@ function buildComponents(tokens) {
1168
784
  marginTop: 6,
1169
785
  marginLeft: 0,
1170
786
  "&.Mui-error": {
1171
- color: text6.errorPrimary
787
+ color: text4.errorPrimary
1172
788
  }
1173
789
  }
1174
790
  }
@@ -1198,43 +814,45 @@ function buildComponents(tokens) {
1198
814
  }
1199
815
  },
1200
816
  icon: {
1201
- color: text6.placeholder,
817
+ color: text4.placeholder,
1202
818
  right: 8
1203
819
  }
1204
820
  }
1205
821
  },
1206
822
  MuiMenuItem: {
1207
823
  styleOverrides: {
1208
- root: {
1209
- borderRadius: radius6.md,
824
+ root: ({ theme }) => ({
825
+ borderRadius: radius4.md,
1210
826
  padding: "6px 8px",
1211
827
  gap: 4,
1212
828
  "&:hover": {
1213
- backgroundColor: bg6.primaryHover
829
+ backgroundColor: bg4.primaryHover,
830
+ ...theme.applyStyles("dark", { backgroundColor: bg4.active })
1214
831
  },
832
+ // Selected: keep the label color, mark it with weight + a neutral
833
+ // (non-violet) background. bg.active adapts per scheme.
1215
834
  "&.Mui-selected": {
1216
- backgroundColor: info3[50],
1217
- color: info3[700],
1218
- // ListItemText primary hardcodes its own color (text.secondary),
1219
- // which beats the inherited MenuItem color re-point it here so
1220
- // 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).
1221
839
  "& .MuiListItemText-primary": {
1222
- color: info3[700]
840
+ fontWeight: 600
1223
841
  },
1224
842
  "&:hover": {
1225
- backgroundColor: info3[100]
843
+ backgroundColor: bg4.active
1226
844
  }
1227
845
  }
1228
- }
846
+ })
1229
847
  }
1230
848
  },
1231
849
  // ─── Autocomplete ───────────────────────────────────────────────
1232
850
  MuiAutocomplete: {
1233
851
  styleOverrides: {
1234
852
  paper: {
1235
- borderRadius: radius6.md,
853
+ borderRadius: radius4.md,
1236
854
  boxShadow: tokenShadows.lg,
1237
- border: `1px solid ${border6.secondary}`,
855
+ border: `1px solid ${border4.secondary}`,
1238
856
  marginTop: 4
1239
857
  },
1240
858
  inputRoot: {
@@ -1250,15 +868,12 @@ function buildComponents(tokens) {
1250
868
  fontSize: 14,
1251
869
  lineHeight: "20px",
1252
870
  padding: "6px 12px",
1253
- "&.Mui-focused": {
1254
- backgroundColor: bg6.primaryHover
1255
- },
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.
1256
875
  '&[aria-selected="true"]': {
1257
- backgroundColor: info3[50],
1258
- color: info3[700]
1259
- },
1260
- '&[aria-selected="true"].Mui-focused': {
1261
- backgroundColor: info3[100]
876
+ fontWeight: 600
1262
877
  }
1263
878
  },
1264
879
  listbox: {
@@ -1273,28 +888,28 @@ function buildComponents(tokens) {
1273
888
  },
1274
889
  styleOverrides: {
1275
890
  root: {
1276
- color: border6.primary,
1277
- borderRadius: radius6.xs,
891
+ color: border4.primary,
892
+ borderRadius: radius4.xs,
1278
893
  padding: 0,
1279
894
  width: 20,
1280
895
  height: 20,
1281
896
  "&:hover": {
1282
897
  backgroundColor: "transparent",
1283
- color: fg6.brandPrimary
898
+ color: fg4.brandPrimary
1284
899
  },
1285
900
  "&.Mui-checked": {
1286
- color: fg6.brandPrimary
901
+ color: fg4.brandPrimary
1287
902
  },
1288
903
  "&.Mui-checked:hover": {
1289
- color: buttonColors6.primary.bgHover
904
+ color: buttonColors4.primary.bgHover
1290
905
  },
1291
906
  "&.Mui-focusVisible": {
1292
907
  outline: "none",
1293
- boxShadow: focusRings6.brand,
1294
- borderRadius: radius6.xs
908
+ boxShadow: focusRings4.brand,
909
+ borderRadius: radius4.xs
1295
910
  },
1296
911
  "&.Mui-disabled": {
1297
- color: border6.primary
912
+ color: border4.primary
1298
913
  }
1299
914
  }
1300
915
  }
@@ -1306,25 +921,25 @@ function buildComponents(tokens) {
1306
921
  },
1307
922
  styleOverrides: {
1308
923
  root: {
1309
- color: border6.primary,
924
+ color: border4.primary,
1310
925
  padding: 0,
1311
926
  "&:hover": {
1312
927
  backgroundColor: "transparent",
1313
- color: fg6.brandPrimary
928
+ color: fg4.brandPrimary
1314
929
  },
1315
930
  "&.Mui-checked": {
1316
- color: fg6.brandPrimary
931
+ color: fg4.brandPrimary
1317
932
  },
1318
933
  "&.Mui-checked:hover": {
1319
- color: buttonColors6.primary.bgHover
934
+ color: buttonColors4.primary.bgHover
1320
935
  },
1321
936
  "&.Mui-focusVisible": {
1322
937
  outline: "none",
1323
- boxShadow: focusRings6.brand,
1324
- borderRadius: radius6.full
938
+ boxShadow: focusRings4.brand,
939
+ borderRadius: radius4.full
1325
940
  },
1326
941
  "&.Mui-disabled": {
1327
- color: border6.primary
942
+ color: border4.primary
1328
943
  }
1329
944
  }
1330
945
  }
@@ -1344,20 +959,23 @@ function buildComponents(tokens) {
1344
959
  padding: 2,
1345
960
  "&.Mui-checked": {
1346
961
  transform: "translateX(20px)",
1347
- 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,
1348
966
  "& + .MuiSwitch-track": {
1349
- backgroundColor: fg6.brandPrimary,
967
+ backgroundColor: fg4.brandPrimary,
1350
968
  opacity: 1
1351
969
  }
1352
970
  },
1353
971
  "&.Mui-checked:hover + .MuiSwitch-track": {
1354
- backgroundColor: buttonColors6.primary.bgHover
972
+ backgroundColor: buttonColors4.primary.bgHover
1355
973
  },
1356
974
  "&.Mui-focusVisible .MuiSwitch-thumb": {
1357
- boxShadow: focusRings6.brand
975
+ boxShadow: focusRings4.brand
1358
976
  },
1359
977
  "&.Mui-disabled .MuiSwitch-thumb": {
1360
- color: bg6.disabled
978
+ color: bg4.disabled
1361
979
  },
1362
980
  "&.Mui-disabled + .MuiSwitch-track": {
1363
981
  opacity: 0.5
@@ -1369,60 +987,122 @@ function buildComponents(tokens) {
1369
987
  boxShadow: "0px 1px 2px 0px #1018280d"
1370
988
  },
1371
989
  track: {
1372
- borderRadius: radius6.full,
1373
- backgroundColor: border6.secondary,
1374
- 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)"
1375
997
  }
1376
998
  }
1377
999
  },
1378
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.
1379
1004
  MuiToggleButton: {
1380
1005
  styleOverrides: {
1381
- root: {
1382
- borderColor: border6.primary,
1383
- color: text6.secondary,
1006
+ root: ({ theme }) => ({
1007
+ ...bevel3D,
1008
+ ...containedFill,
1009
+ borderColor: fg4.tertiary,
1384
1010
  fontSize: 14,
1385
1011
  fontWeight: 600,
1386
1012
  lineHeight: "20px",
1387
1013
  height: 32,
1388
1014
  padding: "6px 12px",
1389
1015
  textTransform: "none",
1016
+ boxShadow: tokenShadows.xs,
1390
1017
  "&:hover": {
1391
- backgroundColor: bg6.primaryHover,
1392
- 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
+ })
1393
1027
  },
1394
1028
  "&.Mui-selected": {
1395
- backgroundColor: bg6.brandPrimary,
1396
- color: buttonColors6.secondaryColor.fg,
1397
- 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.
1398
1041
  "&:hover": {
1399
- 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)"
1400
1069
  }
1401
1070
  },
1402
1071
  "&:focus-visible": {
1403
- boxShadow: focusRings6.brandShadowXs
1072
+ boxShadow: focusRings4.brandShadowXs
1404
1073
  }
1405
- }
1074
+ })
1406
1075
  }
1407
1076
  },
1408
1077
  MuiToggleButtonGroup: {
1409
1078
  styleOverrides: {
1410
1079
  root: {
1411
- borderRadius: radius6.md,
1080
+ borderRadius: radius4.md,
1412
1081
  overflow: "hidden"
1413
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.
1414
1087
  grouped: {
1415
1088
  borderRadius: 0,
1089
+ "&:hover, &:active, &.Mui-selected": {
1090
+ borderRadius: 0
1091
+ },
1416
1092
  "&:not(:first-of-type)": {
1417
1093
  marginLeft: -1
1418
1094
  },
1419
1095
  "&:first-of-type": {
1420
- borderTopLeftRadius: radius6.md,
1421
- borderBottomLeftRadius: radius6.md
1096
+ "&, &:hover, &:active, &.Mui-selected": {
1097
+ borderTopLeftRadius: radius4.md,
1098
+ borderBottomLeftRadius: radius4.md
1099
+ }
1422
1100
  },
1423
1101
  "&:last-of-type": {
1424
- borderTopRightRadius: radius6.md,
1425
- borderBottomRightRadius: radius6.md
1102
+ "&, &:hover, &:active, &.Mui-selected": {
1103
+ borderTopRightRadius: radius4.md,
1104
+ borderBottomRightRadius: radius4.md
1105
+ }
1426
1106
  }
1427
1107
  }
1428
1108
  }
@@ -1431,8 +1111,8 @@ function buildComponents(tokens) {
1431
1111
  MuiDrawer: {
1432
1112
  styleOverrides: {
1433
1113
  paper: {
1434
- backgroundColor: bg6.primary,
1435
- borderRight: `1px solid ${border6.secondary}`
1114
+ backgroundColor: bg4.primary,
1115
+ borderRight: `1px solid ${border4.secondary}`
1436
1116
  }
1437
1117
  }
1438
1118
  },
@@ -1443,9 +1123,9 @@ function buildComponents(tokens) {
1443
1123
  },
1444
1124
  styleOverrides: {
1445
1125
  root: {
1446
- borderRadius: radius6.xl,
1447
- border: `1px solid ${border6.secondary}`,
1448
- backgroundColor: bg6.primary,
1126
+ borderRadius: radius4.xl,
1127
+ border: `1px solid ${border4.secondary}`,
1128
+ backgroundColor: bg4.primary,
1449
1129
  boxShadow: tokenShadows.xs,
1450
1130
  overflow: "hidden"
1451
1131
  }
@@ -1492,35 +1172,35 @@ function buildComponents(tokens) {
1492
1172
  backgroundImage: "none"
1493
1173
  },
1494
1174
  rounded: {
1495
- borderRadius: radius6.lg
1175
+ borderRadius: radius4.lg
1496
1176
  },
1497
1177
  elevation1: {
1498
1178
  boxShadow: tokenShadows.xs,
1499
- border: `1px solid ${border6.secondary}`
1179
+ border: `1px solid ${border4.secondary}`
1500
1180
  },
1501
1181
  elevation2: {
1502
1182
  boxShadow: tokenShadows.sm,
1503
- border: `1px solid ${border6.secondary}`
1183
+ border: `1px solid ${border4.secondary}`
1504
1184
  },
1505
1185
  elevation3: {
1506
1186
  boxShadow: tokenShadows.md,
1507
- border: `1px solid ${border6.secondary}`
1187
+ border: `1px solid ${border4.secondary}`
1508
1188
  },
1509
1189
  elevation4: {
1510
1190
  boxShadow: tokenShadows.lg,
1511
- border: `1px solid ${border6.secondary}`
1191
+ border: `1px solid ${border4.secondary}`
1512
1192
  },
1513
1193
  elevation8: {
1514
1194
  boxShadow: tokenShadows.xl,
1515
- border: `1px solid ${border6.secondary}`
1195
+ border: `1px solid ${border4.secondary}`
1516
1196
  },
1517
1197
  elevation16: {
1518
1198
  boxShadow: tokenShadows["2xl"],
1519
- border: `1px solid ${border6.secondary}`
1199
+ border: `1px solid ${border4.secondary}`
1520
1200
  },
1521
1201
  elevation24: {
1522
1202
  boxShadow: tokenShadows["3xl"],
1523
- border: `1px solid ${border6.secondary}`
1203
+ border: `1px solid ${border4.secondary}`
1524
1204
  }
1525
1205
  }
1526
1206
  },
@@ -1532,8 +1212,8 @@ function buildComponents(tokens) {
1532
1212
  },
1533
1213
  styleOverrides: {
1534
1214
  root: {
1535
- border: `1px solid ${border6.secondary}`,
1536
- borderRadius: radius6.lg,
1215
+ border: `1px solid ${border4.secondary}`,
1216
+ borderRadius: radius4.lg,
1537
1217
  "&:not(:last-child)": {
1538
1218
  marginBottom: 8
1539
1219
  },
@@ -1543,7 +1223,7 @@ function buildComponents(tokens) {
1543
1223
  "&.Mui-expanded": {
1544
1224
  margin: 0,
1545
1225
  marginBottom: 8,
1546
- borderRadius: radius6.lg
1226
+ borderRadius: radius4.lg
1547
1227
  }
1548
1228
  }
1549
1229
  }
@@ -1555,7 +1235,7 @@ function buildComponents(tokens) {
1555
1235
  minHeight: 56,
1556
1236
  "&.Mui-expanded": {
1557
1237
  minHeight: 56,
1558
- borderBottom: `1px solid ${border6.secondary}`
1238
+ borderBottom: `1px solid ${border4.secondary}`
1559
1239
  }
1560
1240
  },
1561
1241
  content: {
@@ -1581,8 +1261,8 @@ function buildComponents(tokens) {
1581
1261
  },
1582
1262
  styleOverrides: {
1583
1263
  root: {
1584
- borderBottom: `1px solid ${border6.secondary}`,
1585
- backgroundColor: bg6.primary
1264
+ borderBottom: `1px solid ${border4.secondary}`,
1265
+ backgroundColor: bg4.primary
1586
1266
  }
1587
1267
  }
1588
1268
  },
@@ -1608,8 +1288,10 @@ function buildComponents(tokens) {
1608
1288
  root: {
1609
1289
  minHeight: 48
1610
1290
  },
1291
+ // Primary (brand) scale via varified tokens so it adapts per scheme:
1292
+ // charcoal on light, light-grey on dark.
1611
1293
  indicator: {
1612
- backgroundColor: info3[600],
1294
+ backgroundColor: bg4.brandSolid,
1613
1295
  height: 2
1614
1296
  }
1615
1297
  }
@@ -1624,14 +1306,16 @@ function buildComponents(tokens) {
1624
1306
  fontWeight: 600,
1625
1307
  lineHeight: "20px",
1626
1308
  textTransform: "none",
1627
- color: text6.tertiary,
1628
- borderRadius: `${radius6.md}px ${radius6.md}px 0 0`,
1309
+ color: text4.tertiary,
1310
+ borderRadius: `${radius4.md}px ${radius4.md}px 0 0`,
1629
1311
  "&:hover": {
1630
- backgroundColor: bg6.primaryHover
1312
+ backgroundColor: bg4.primaryHover
1631
1313
  },
1314
+ // Selected face uses brand bg/text tokens — light brand tint + dark
1315
+ // text on light; dark-grey face + light text on dark.
1632
1316
  "&.Mui-selected": {
1633
- color: info3[700],
1634
- backgroundColor: info3[50]
1317
+ color: text4.brandPrimary,
1318
+ backgroundColor: bg4.brandPrimary
1635
1319
  }
1636
1320
  }
1637
1321
  }
@@ -1639,60 +1323,67 @@ function buildComponents(tokens) {
1639
1323
  // ─── Chip ───────────────────────────────────────────────────────
1640
1324
  MuiChip: {
1641
1325
  variants: [
1642
- ...highlight2 ? [
1326
+ ...highlight3 ? [
1643
1327
  {
1644
1328
  props: { color: "highlight" },
1645
1329
  style: {
1646
1330
  "&.MuiChip-filled": {
1647
- backgroundColor: highlight2[600],
1331
+ backgroundColor: highlight3[600],
1648
1332
  color: base2.white,
1649
- "& .MuiChip-deleteIcon": { color: highlight2[200] }
1333
+ "& .MuiChip-deleteIcon": { color: highlight3[200] }
1650
1334
  },
1651
1335
  "&.MuiChip-outlined": {
1652
- borderColor: highlight2[300],
1653
- color: highlight2[700],
1654
- "& .MuiChip-deleteIcon": { color: highlight2[400] }
1336
+ borderColor: highlight3[300],
1337
+ color: highlight3[700],
1338
+ "& .MuiChip-deleteIcon": { color: highlight3[400] }
1655
1339
  }
1656
1340
  }
1657
1341
  }
1658
1342
  ] : []
1659
1343
  ],
1660
1344
  styleOverrides: {
1345
+ // ponytail: single 20px chip size — sizeSmall/sizeMedium render identically
1661
1346
  root: {
1662
- borderRadius: radius6.md
1347
+ borderRadius: radius4.md,
1348
+ height: 20,
1349
+ fontSize: 14,
1350
+ lineHeight: "20px"
1663
1351
  },
1664
1352
  label: {
1665
- fontWeight: 500
1353
+ fontWeight: 500,
1354
+ paddingLeft: 6,
1355
+ paddingRight: 6
1666
1356
  },
1667
- sizeSmall: {
1668
- fontSize: 12,
1669
- height: 20
1357
+ icon: {
1358
+ marginLeft: 6,
1359
+ marginRight: -2
1360
+ // 4px gap to label (label pads 6)
1670
1361
  },
1671
- sizeMedium: {
1362
+ deleteIcon: {
1672
1363
  fontSize: 14,
1673
- height: 24,
1674
- "& .MuiChip-deleteIcon": { fontSize: 16 }
1364
+ marginRight: 6,
1365
+ marginLeft: -2
1675
1366
  },
1676
1367
  colorDefault: {
1677
1368
  "&.MuiChip-filled": {
1678
- backgroundColor: tokens.bg.secondaryHover,
1679
- color: tokens.fg.secondary,
1680
- "& .MuiChip-deleteIcon": { color: tokens.fg.quinary }
1369
+ backgroundColor: tokens2.bg.secondaryHover,
1370
+ color: tokens2.fg.secondary,
1371
+ "& .MuiChip-deleteIcon": { color: tokens2.fg.quinary }
1681
1372
  }
1682
1373
  },
1683
1374
  colorPrimary: {
1684
1375
  "&.MuiChip-filled": {
1685
- backgroundColor: tokens.bg.brandPrimary,
1686
- color: tokens.fg.brandPrimary,
1687
- "& .MuiChip-deleteIcon": { color: tokens.fg.brandPrimary }
1376
+ backgroundColor: tokens2.bg.brandPrimary,
1377
+ color: tokens2.fg.brandPrimary,
1378
+ "& .MuiChip-deleteIcon": { color: tokens2.fg.brandPrimary }
1688
1379
  }
1689
1380
  },
1690
1381
  colorSecondary: {
1691
1382
  "&.MuiChip-filled": {
1692
- backgroundColor: highlight2 ? highlight2[50] : tokens.bg.secondarySubtle,
1693
- color: highlight2 ? highlight2[700] : tokens.text.secondary,
1383
+ backgroundColor: highlight3 ? highlight3[50] : tokens2.bg.secondarySubtle,
1384
+ color: highlight3 ? highlight3[700] : tokens2.text.secondary,
1694
1385
  "& .MuiChip-deleteIcon": {
1695
- color: highlight2 ? highlight2[500] : tokens.fg.secondary
1386
+ color: highlight3 ? highlight3[500] : tokens2.fg.secondary
1696
1387
  }
1697
1388
  }
1698
1389
  },
@@ -1719,9 +1410,9 @@ function buildComponents(tokens) {
1719
1410
  },
1720
1411
  colorInfo: {
1721
1412
  "&.MuiChip-filled": {
1722
- backgroundColor: info3[50],
1723
- color: info3[700],
1724
- "& .MuiChip-deleteIcon": { color: info3[400] }
1413
+ backgroundColor: info2[50],
1414
+ color: info2[700],
1415
+ "& .MuiChip-deleteIcon": { color: info2[400] }
1725
1416
  }
1726
1417
  }
1727
1418
  }
@@ -1737,7 +1428,7 @@ function buildComponents(tokens) {
1737
1428
  fontSize: 14,
1738
1429
  lineHeight: "20px",
1739
1430
  fontWeight: 500,
1740
- color: text6.secondary
1431
+ color: text4.secondary
1741
1432
  }
1742
1433
  }
1743
1434
  },
@@ -1753,30 +1444,30 @@ function buildComponents(tokens) {
1753
1444
  MuiTableCell: {
1754
1445
  styleOverrides: {
1755
1446
  root: {
1756
- borderBottom: `1px solid ${border6.secondary}`,
1447
+ borderBottom: `1px solid ${border4.secondary}`,
1757
1448
  padding: "16px 24px",
1758
1449
  fontSize: 14,
1759
1450
  lineHeight: "20px",
1760
- color: fg6.tertiary
1451
+ color: fg4.tertiary
1761
1452
  },
1762
1453
  head: {
1763
- backgroundColor: bg6.secondary,
1764
- color: fg6.tertiary,
1454
+ backgroundColor: bg4.secondary,
1455
+ color: fg4.tertiary,
1765
1456
  fontWeight: 500,
1766
1457
  fontSize: 12,
1767
1458
  lineHeight: "18px"
1768
1459
  },
1769
1460
  body: {
1770
- color: fg6.tertiary
1461
+ color: fg4.tertiary
1771
1462
  }
1772
1463
  }
1773
1464
  },
1774
1465
  MuiTableHead: {
1775
1466
  styleOverrides: {
1776
1467
  root: {
1777
- backgroundColor: bg6.secondary,
1468
+ backgroundColor: bg4.secondary,
1778
1469
  "& .MuiTableRow-root:last-child .MuiTableCell-root": {
1779
- borderBottom: `1px solid ${border6.secondary}`
1470
+ borderBottom: `1px solid ${border4.secondary}`
1780
1471
  }
1781
1472
  }
1782
1473
  }
@@ -1784,17 +1475,17 @@ function buildComponents(tokens) {
1784
1475
  MuiTableRow: {
1785
1476
  styleOverrides: {
1786
1477
  root: {
1787
- backgroundColor: bg6.secondary,
1478
+ backgroundColor: bg4.secondary,
1788
1479
  "&:last-child td, &:last-child th": {
1789
1480
  border: 0
1790
1481
  },
1791
1482
  "&:hover": {
1792
- backgroundColor: bg6.primaryHover
1483
+ backgroundColor: bg4.primaryHover
1793
1484
  },
1794
1485
  "&.Mui-selected": {
1795
- backgroundColor: info3[50],
1486
+ backgroundColor: info2[50],
1796
1487
  "&:hover": {
1797
- backgroundColor: info3[100]
1488
+ backgroundColor: info2[100]
1798
1489
  }
1799
1490
  }
1800
1491
  }
@@ -1803,8 +1494,8 @@ function buildComponents(tokens) {
1803
1494
  MuiTableContainer: {
1804
1495
  styleOverrides: {
1805
1496
  root: {
1806
- borderRadius: radius6.xl,
1807
- border: `1px solid ${border6.secondary}`,
1497
+ borderRadius: radius4.xl,
1498
+ border: `1px solid ${border4.secondary}`,
1808
1499
  boxShadow: "none"
1809
1500
  }
1810
1501
  }
@@ -1818,27 +1509,37 @@ function buildComponents(tokens) {
1818
1509
  lineHeight: "18px",
1819
1510
  minWidth: 20,
1820
1511
  height: 20,
1821
- borderRadius: radius6.full
1512
+ borderRadius: radius4.full
1822
1513
  },
1823
1514
  colorPrimary: {
1824
- 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
1825
1526
  },
1826
1527
  colorError: {
1827
- backgroundColor: bg6.errorSolid
1528
+ backgroundColor: bg4.errorSolid
1828
1529
  },
1829
1530
  colorSuccess: {
1830
- backgroundColor: bg6.successSolid
1531
+ backgroundColor: bg4.successSolid
1831
1532
  },
1832
1533
  colorWarning: {
1833
- backgroundColor: bg6.warningSolid
1534
+ backgroundColor: bg4.warningSolid
1834
1535
  },
1835
1536
  dot: {
1836
1537
  minWidth: 8,
1837
1538
  height: 8,
1838
- borderRadius: radius6.full,
1839
- ...highlight2 && {
1539
+ borderRadius: radius4.full,
1540
+ ...highlight3 && {
1840
1541
  "&.MuiBadge-colorDefault, &.MuiBadge-colorPrimary": {
1841
- backgroundColor: highlight2[500]
1542
+ backgroundColor: highlight3[500]
1842
1543
  }
1843
1544
  }
1844
1545
  }
@@ -1848,7 +1549,7 @@ function buildComponents(tokens) {
1848
1549
  MuiDivider: {
1849
1550
  styleOverrides: {
1850
1551
  root: {
1851
- borderColor: border6.secondary
1552
+ borderColor: border4.secondary
1852
1553
  }
1853
1554
  }
1854
1555
  },
@@ -1863,16 +1564,16 @@ function buildComponents(tokens) {
1863
1564
  MuiListItemButton: {
1864
1565
  styleOverrides: {
1865
1566
  root: {
1866
- borderRadius: radius6.sm,
1567
+ borderRadius: radius4.sm,
1867
1568
  padding: "8px 12px",
1868
1569
  "&:hover": {
1869
- backgroundColor: bg6.primaryHover
1570
+ backgroundColor: bg4.primaryHover
1870
1571
  },
1871
1572
  "&.Mui-selected": {
1872
- backgroundColor: info3[50],
1873
- color: info3[700],
1573
+ backgroundColor: info2[50],
1574
+ color: info2[700],
1874
1575
  "&:hover": {
1875
- backgroundColor: info3[100]
1576
+ backgroundColor: info2[100]
1876
1577
  }
1877
1578
  }
1878
1579
  }
@@ -1882,7 +1583,7 @@ function buildComponents(tokens) {
1882
1583
  styleOverrides: {
1883
1584
  root: {
1884
1585
  minWidth: 36,
1885
- color: fg6.quaternary
1586
+ color: fg4.quaternary
1886
1587
  }
1887
1588
  }
1888
1589
  },
@@ -1892,12 +1593,12 @@ function buildComponents(tokens) {
1892
1593
  fontSize: 14,
1893
1594
  lineHeight: "20px",
1894
1595
  fontWeight: 500,
1895
- color: text6.secondary
1596
+ color: text4.secondary
1896
1597
  },
1897
1598
  secondary: {
1898
1599
  fontSize: 14,
1899
1600
  lineHeight: "20px",
1900
- color: text6.quaternary
1601
+ color: text4.quaternary
1901
1602
  }
1902
1603
  }
1903
1604
  },
@@ -1905,17 +1606,21 @@ function buildComponents(tokens) {
1905
1606
  MuiTooltip: {
1906
1607
  styleOverrides: {
1907
1608
  tooltip: {
1908
- backgroundColor: bg6.primarySolid,
1909
- 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,
1910
1615
  fontSize: 12,
1911
1616
  lineHeight: "18px",
1912
1617
  fontWeight: 600,
1913
1618
  padding: "8px 12px",
1914
- borderRadius: radius6.md,
1619
+ borderRadius: radius4.md,
1915
1620
  boxShadow: tokenShadows.lg
1916
1621
  },
1917
1622
  arrow: {
1918
- color: bg6.primarySolid
1623
+ color: bg4.primarySolid
1919
1624
  }
1920
1625
  }
1921
1626
  },
@@ -1925,25 +1630,25 @@ function buildComponents(tokens) {
1925
1630
  variant: "standard"
1926
1631
  },
1927
1632
  variants: [
1928
- ...highlight2 ? [
1633
+ ...highlight3 ? [
1929
1634
  {
1930
1635
  props: { variant: "featured" },
1931
1636
  style: {
1932
- borderRadius: radius6.xl,
1637
+ borderRadius: radius4.xl,
1933
1638
  fontSize: 14,
1934
1639
  lineHeight: "20px",
1935
1640
  padding: "12px 16px",
1936
1641
  alignItems: "center",
1937
- backgroundColor: highlight2[50],
1938
- color: highlight2[700],
1939
- border: `1px solid ${highlight2[200]}`,
1642
+ backgroundColor: highlight3[50],
1643
+ color: highlight3[700],
1644
+ border: `1px solid ${highlight3[200]}`,
1940
1645
  "& .MuiAlert-icon": {
1941
- color: highlight2[600],
1646
+ color: highlight3[600],
1942
1647
  padding: 0,
1943
1648
  marginRight: 12
1944
1649
  },
1945
1650
  "& .MuiAlertTitle-root": {
1946
- color: highlight2[800]
1651
+ color: highlight3[800]
1947
1652
  }
1948
1653
  }
1949
1654
  }
@@ -1951,44 +1656,66 @@ function buildComponents(tokens) {
1951
1656
  ],
1952
1657
  styleOverrides: {
1953
1658
  root: {
1954
- borderRadius: radius6.xl,
1659
+ borderRadius: radius4.xl,
1955
1660
  fontSize: 14,
1956
1661
  lineHeight: "20px",
1957
1662
  padding: "12px 16px",
1958
1663
  alignItems: "center"
1959
1664
  },
1960
- standardError: {
1961
- 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],
1962
1673
  color: error2[700],
1963
- border: `1px solid ${border6.error}`,
1964
- "& .MuiAlert-icon": {
1965
- color: fg6.errorPrimary
1966
- }
1967
- },
1968
- standardWarning: {
1969
- 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],
1970
1685
  color: warning2[700],
1971
1686
  border: `1px solid ${warning2[300]}`,
1972
- "& .MuiAlert-icon": {
1973
- color: fg6.warningPrimary
1974
- }
1975
- },
1976
- standardSuccess: {
1977
- 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],
1978
1697
  color: success2[700],
1979
1698
  border: `1px solid ${success2[300]}`,
1980
- "& .MuiAlert-icon": {
1981
- color: fg6.successPrimary
1982
- }
1983
- },
1984
- standardInfo: {
1985
- backgroundColor: info3[50],
1986
- color: info3[700],
1987
- border: `1px solid ${info3[300]}`,
1988
- "& .MuiAlert-icon": {
1989
- color: info3[600]
1990
- }
1991
- },
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
+ }),
1992
1719
  icon: {
1993
1720
  padding: 0,
1994
1721
  marginRight: 12
@@ -2008,8 +1735,10 @@ function buildComponents(tokens) {
2008
1735
  // ─── Backdrop ───────────────────────────────────────────────────
2009
1736
  MuiBackdrop: {
2010
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.
2011
1740
  root: {
2012
- backgroundColor: "rgba(16, 24, 40, 0.7)"
1741
+ backgroundColor: "rgba(9, 9, 11, 0.7)"
2013
1742
  }
2014
1743
  }
2015
1744
  },
@@ -2017,7 +1746,7 @@ function buildComponents(tokens) {
2017
1746
  MuiDialog: {
2018
1747
  styleOverrides: {
2019
1748
  paper: {
2020
- borderRadius: radius6.xl,
1749
+ borderRadius: radius4.xl,
2021
1750
  boxShadow: tokenShadows.xl,
2022
1751
  padding: 0
2023
1752
  }
@@ -2029,7 +1758,7 @@ function buildComponents(tokens) {
2029
1758
  fontSize: 18,
2030
1759
  lineHeight: "28px",
2031
1760
  fontWeight: 600,
2032
- color: text6.primary,
1761
+ color: text4.primary,
2033
1762
  padding: "24px 24px 0"
2034
1763
  }
2035
1764
  }
@@ -2040,7 +1769,7 @@ function buildComponents(tokens) {
2040
1769
  padding: "20px 24px",
2041
1770
  fontSize: 14,
2042
1771
  lineHeight: "20px",
2043
- color: text6.tertiary
1772
+ color: text4.tertiary
2044
1773
  }
2045
1774
  }
2046
1775
  },
@@ -2056,27 +1785,27 @@ function buildComponents(tokens) {
2056
1785
  MuiLinearProgress: {
2057
1786
  styleOverrides: {
2058
1787
  root: {
2059
- borderRadius: radius6.full,
1788
+ borderRadius: radius4.full,
2060
1789
  height: 8,
2061
- backgroundColor: border6.secondary
1790
+ backgroundColor: border4.secondary
2062
1791
  },
2063
1792
  barColorPrimary: {
2064
- backgroundColor: fg6.brandPrimary,
2065
- borderRadius: radius6.full
1793
+ backgroundColor: fg4.brandPrimary,
1794
+ borderRadius: radius4.full
2066
1795
  },
2067
1796
  barColorSecondary: {
2068
- backgroundColor: bg6.secondarySolid,
2069
- borderRadius: radius6.full
1797
+ backgroundColor: bg4.secondarySolid,
1798
+ borderRadius: radius4.full
2070
1799
  }
2071
1800
  }
2072
1801
  },
2073
1802
  MuiCircularProgress: {
2074
1803
  styleOverrides: {
2075
1804
  colorPrimary: {
2076
- color: fg6.brandPrimary
1805
+ color: fg4.brandPrimary
2077
1806
  },
2078
1807
  colorSecondary: {
2079
- color: bg6.secondarySolid
1808
+ color: bg4.secondarySolid
2080
1809
  }
2081
1810
  }
2082
1811
  },
@@ -2087,29 +1816,36 @@ function buildComponents(tokens) {
2087
1816
  },
2088
1817
  styleOverrides: {
2089
1818
  root: {
2090
- backgroundColor: bg6.tertiary
1819
+ backgroundColor: bg4.tertiary
2091
1820
  },
2092
1821
  rounded: {
2093
- borderRadius: radius6.md
1822
+ borderRadius: radius4.md
2094
1823
  },
2095
1824
  circular: {
2096
- borderRadius: radius6.full
1825
+ borderRadius: radius4.full
2097
1826
  }
2098
1827
  }
2099
1828
  },
2100
1829
  // ─── Snackbar ───────────────────────────────────────────────────
2101
1830
  MuiSnackbarContent: {
2102
1831
  styleOverrides: {
2103
- root: {
2104
- backgroundColor: bg6.primarySolid,
2105
- color: text6.white,
2106
- 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,
2107
1839
  boxShadow: tokenShadows.lg,
2108
1840
  fontSize: 14,
2109
1841
  lineHeight: "20px",
2110
1842
  fontWeight: 500,
2111
- padding: "6px 16px"
2112
- }
1843
+ padding: "6px 16px",
1844
+ ...theme.applyStyles("dark", {
1845
+ backgroundColor: bg4.tertiary,
1846
+ color: text4.primary
1847
+ })
1848
+ })
2113
1849
  }
2114
1850
  },
2115
1851
  // ─── Typography ─────────────────────────────────────────────────
@@ -2135,53 +1871,53 @@ function buildComponents(tokens) {
2135
1871
  MuiSlider: {
2136
1872
  styleOverrides: {
2137
1873
  root: {
2138
- color: fg6.brandPrimary,
1874
+ color: fg4.brandPrimary,
2139
1875
  height: 8,
2140
1876
  "&.Mui-disabled": {
2141
- color: border6.secondary
1877
+ color: border4.secondary
2142
1878
  }
2143
1879
  },
2144
1880
  thumb: {
2145
1881
  width: 20,
2146
1882
  height: 20,
2147
- backgroundColor: sliderColors6.handleBg,
2148
- border: `2px solid ${sliderColors6.handleBorder}`,
1883
+ backgroundColor: sliderColors4.handleBg,
1884
+ border: `2px solid ${sliderColors4.handleBorder}`,
2149
1885
  boxShadow: tokenShadows.xs,
2150
1886
  "&:hover, &.Mui-focusVisible": {
2151
- boxShadow: focusRings6.brandShadowXs
1887
+ boxShadow: focusRings4.brandShadowXs
2152
1888
  },
2153
1889
  "&.Mui-active": {
2154
- boxShadow: focusRings6.brandShadowSm
1890
+ boxShadow: focusRings4.brandShadowSm
2155
1891
  }
2156
1892
  },
2157
1893
  track: {
2158
- borderRadius: radius6.full,
1894
+ borderRadius: radius4.full,
2159
1895
  border: "none"
2160
1896
  },
2161
1897
  rail: {
2162
- backgroundColor: border6.secondary,
2163
- borderRadius: radius6.full,
1898
+ backgroundColor: border4.secondary,
1899
+ borderRadius: radius4.full,
2164
1900
  opacity: 1
2165
1901
  },
2166
1902
  valueLabel: {
2167
- backgroundColor: bg6.primarySolid,
2168
- borderRadius: radius6.md,
1903
+ backgroundColor: bg4.primarySolid,
1904
+ borderRadius: radius4.md,
2169
1905
  fontSize: 12,
2170
1906
  fontWeight: 600,
2171
1907
  padding: "4px 8px"
2172
1908
  },
2173
1909
  mark: {
2174
- backgroundColor: border6.secondary,
1910
+ backgroundColor: border4.secondary,
2175
1911
  width: 4,
2176
1912
  height: 4,
2177
- borderRadius: radius6.full
1913
+ borderRadius: radius4.full
2178
1914
  },
2179
1915
  markActive: {
2180
- backgroundColor: fg6.brandPrimary
1916
+ backgroundColor: fg4.brandPrimary
2181
1917
  },
2182
1918
  markLabel: {
2183
1919
  fontSize: 12,
2184
- color: text6.tertiary
1920
+ color: text4.tertiary
2185
1921
  }
2186
1922
  }
2187
1923
  },
@@ -2189,17 +1925,17 @@ function buildComponents(tokens) {
2189
1925
  MuiRating: {
2190
1926
  styleOverrides: {
2191
1927
  root: {
2192
- color: fg6.brandPrimary,
1928
+ color: fg4.brandPrimary,
2193
1929
  gap: 4
2194
1930
  },
2195
1931
  iconEmpty: {
2196
- color: border6.secondary
1932
+ color: border4.secondary
2197
1933
  },
2198
1934
  iconFilled: {
2199
- color: fg6.brandPrimary
1935
+ color: fg4.brandPrimary
2200
1936
  },
2201
1937
  iconHover: {
2202
- color: buttonColors6.primary.bgHover
1938
+ color: buttonColors4.primary.bgHover
2203
1939
  }
2204
1940
  }
2205
1941
  },
@@ -2212,30 +1948,33 @@ function buildComponents(tokens) {
2212
1948
  MuiPaginationItem: {
2213
1949
  styleOverrides: {
2214
1950
  root: {
2215
- borderRadius: radius6.md,
1951
+ borderRadius: radius4.md,
2216
1952
  fontSize: 14,
2217
1953
  fontWeight: 500,
2218
- color: text6.secondary,
1954
+ color: text4.secondary,
2219
1955
  "&:hover": {
2220
- backgroundColor: bg6.primaryHover
1956
+ backgroundColor: bg4.primaryHover
2221
1957
  },
2222
1958
  "&.Mui-selected": {
2223
- backgroundColor: fg6.brandPrimary,
2224
- 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,
2225
1964
  "&:hover": {
2226
- backgroundColor: buttonColors6.primary.bgHover
1965
+ backgroundColor: buttonColors4.primary.bgHover
2227
1966
  }
2228
1967
  },
2229
1968
  "&.Mui-focusVisible": {
2230
- boxShadow: focusRings6.brandShadowXs
1969
+ boxShadow: focusRings4.brandShadowXs
2231
1970
  }
2232
1971
  },
2233
1972
  outlined: {
2234
- border: `1px solid ${border6.primary}`,
1973
+ border: `1px solid ${border4.primary}`,
2235
1974
  "&.Mui-selected": {
2236
- backgroundColor: fg6.brandPrimary,
2237
- color: base2.white,
2238
- borderColor: fg6.brandPrimary
1975
+ backgroundColor: fg4.brandPrimary,
1976
+ color: buttonColors4.primary.fg,
1977
+ borderColor: fg4.brandPrimary
2239
1978
  }
2240
1979
  }
2241
1980
  }
@@ -2244,20 +1983,24 @@ function buildComponents(tokens) {
2244
1983
  MuiAvatar: {
2245
1984
  styleOverrides: {
2246
1985
  root: {
2247
- 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,
2248
1991
  fontSize: 14,
2249
1992
  fontWeight: 600,
2250
- border: `1.5px solid ${avatarColors6.contrastBorder}`
1993
+ border: `1.5px solid ${avatarColors3.contrastBorder}`
2251
1994
  },
2252
1995
  rounded: {
2253
- borderRadius: radius6.md
1996
+ borderRadius: radius4.md
2254
1997
  }
2255
1998
  }
2256
1999
  },
2257
2000
  MuiAvatarGroup: {
2258
2001
  styleOverrides: {
2259
2002
  avatar: {
2260
- border: `2px solid ${avatarColors6.profilePhotoBorder}`,
2003
+ border: `2px solid ${avatarColors3.profilePhotoBorder}`,
2261
2004
  width: 32,
2262
2005
  height: 32,
2263
2006
  fontSize: 13,
@@ -2269,17 +2012,17 @@ function buildComponents(tokens) {
2269
2012
  MuiBottomNavigation: {
2270
2013
  styleOverrides: {
2271
2014
  root: {
2272
- backgroundColor: bg6.primary,
2273
- borderTop: `1px solid ${border6.secondary}`
2015
+ backgroundColor: bg4.primary,
2016
+ borderTop: `1px solid ${border4.secondary}`
2274
2017
  }
2275
2018
  }
2276
2019
  },
2277
2020
  MuiBottomNavigationAction: {
2278
2021
  styleOverrides: {
2279
2022
  root: {
2280
- color: fg6.quaternary,
2023
+ color: fg4.quaternary,
2281
2024
  "&.Mui-selected": {
2282
- color: fg6.brandPrimary
2025
+ color: fg4.brandPrimary
2283
2026
  }
2284
2027
  },
2285
2028
  label: {
@@ -2293,35 +2036,26 @@ function buildComponents(tokens) {
2293
2036
  }
2294
2037
  },
2295
2038
  // ─── SpeedDial ──────────────────────────────────────────────────
2296
- MuiSpeedDial: {
2297
- styleOverrides: {
2298
- fab: {
2299
- backgroundColor: fg6.brandPrimary,
2300
- color: base2.white,
2301
- boxShadow: tokenShadows.md,
2302
- "&:hover": {
2303
- backgroundColor: buttonColors6.primary.bgHover
2304
- }
2305
- }
2306
- }
2307
- },
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.
2308
2042
  MuiSpeedDialAction: {
2309
2043
  styleOverrides: {
2310
2044
  fab: {
2311
- backgroundColor: bg6.primary,
2312
- color: fg6.secondary,
2045
+ backgroundColor: bg4.primary,
2046
+ color: fg4.secondary,
2313
2047
  boxShadow: tokenShadows.sm,
2314
- border: `1px solid ${border6.secondary}`,
2048
+ border: `1px solid ${border4.secondary}`,
2315
2049
  "&:hover": {
2316
- backgroundColor: bg6.primaryHover
2050
+ backgroundColor: bg4.primaryHover
2317
2051
  }
2318
2052
  },
2319
2053
  staticTooltipLabel: {
2320
- backgroundColor: bg6.primarySolid,
2321
- color: text6.white,
2054
+ backgroundColor: bg4.primarySolid,
2055
+ color: text4.white,
2322
2056
  fontSize: 12,
2323
2057
  fontWeight: 600,
2324
- borderRadius: radius6.md,
2058
+ borderRadius: radius4.md,
2325
2059
  whiteSpace: "nowrap"
2326
2060
  }
2327
2061
  }
@@ -2339,13 +2073,13 @@ function buildComponents(tokens) {
2339
2073
  label: {
2340
2074
  fontSize: 14,
2341
2075
  fontWeight: 500,
2342
- color: text6.tertiary,
2076
+ color: text4.tertiary,
2343
2077
  "&.Mui-active": {
2344
- color: text6.primary,
2078
+ color: text4.primary,
2345
2079
  fontWeight: 600
2346
2080
  },
2347
2081
  "&.Mui-completed": {
2348
- color: text6.primary,
2082
+ color: text4.primary,
2349
2083
  fontWeight: 500
2350
2084
  }
2351
2085
  }
@@ -2354,12 +2088,18 @@ function buildComponents(tokens) {
2354
2088
  MuiStepIcon: {
2355
2089
  styleOverrides: {
2356
2090
  root: {
2357
- 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).
2358
2095
  "&.Mui-active": {
2359
- color: fg6.brandPrimary
2096
+ color: buttonColors4.primary.bg,
2097
+ "& .MuiStepIcon-text": {
2098
+ fill: buttonColors4.primary.fg
2099
+ }
2360
2100
  },
2361
2101
  "&.Mui-completed": {
2362
- color: fg6.brandPrimary
2102
+ color: buttonColors4.primary.bg
2363
2103
  }
2364
2104
  },
2365
2105
  text: {
@@ -2371,7 +2111,7 @@ function buildComponents(tokens) {
2371
2111
  MuiStepConnector: {
2372
2112
  styleOverrides: {
2373
2113
  line: {
2374
- borderColor: border6.secondary
2114
+ borderColor: border4.secondary
2375
2115
  },
2376
2116
  lineHorizontal: {
2377
2117
  borderTopWidth: 2
@@ -2389,20 +2129,20 @@ function buildComponents(tokens) {
2389
2129
  padding: "8px 0"
2390
2130
  },
2391
2131
  dot: {
2392
- backgroundColor: border6.secondary,
2132
+ backgroundColor: border4.secondary,
2393
2133
  width: 8,
2394
2134
  height: 8
2395
2135
  },
2396
2136
  dotActive: {
2397
- backgroundColor: fg6.brandPrimary
2137
+ backgroundColor: fg4.brandPrimary
2398
2138
  },
2399
2139
  progress: {
2400
2140
  width: "100%",
2401
- backgroundColor: border6.secondary,
2402
- borderRadius: radius6.full,
2141
+ backgroundColor: border4.secondary,
2142
+ borderRadius: radius4.full,
2403
2143
  "& .MuiLinearProgress-bar": {
2404
- backgroundColor: fg6.brandPrimary,
2405
- borderRadius: radius6.full
2144
+ backgroundColor: fg4.brandPrimary,
2145
+ borderRadius: radius4.full
2406
2146
  }
2407
2147
  }
2408
2148
  }
@@ -2415,18 +2155,27 @@ function buildComponents(tokens) {
2415
2155
  lineHeight: "20px"
2416
2156
  },
2417
2157
  separator: {
2418
- color: breadcrumbColors6.iconFg,
2158
+ color: breadcrumbColors4.iconFg,
2419
2159
  marginLeft: 4,
2420
2160
  marginRight: 4
2421
2161
  },
2422
2162
  li: {
2163
+ fontSize: 14,
2164
+ lineHeight: "20px",
2423
2165
  "& a": {
2424
- color: breadcrumbColors6.fg,
2166
+ color: breadcrumbColors4.fg,
2425
2167
  textDecoration: "none",
2426
2168
  fontWeight: 500,
2427
2169
  "&:hover": {
2428
- color: breadcrumbColors6.fgHover
2170
+ color: breadcrumbColors4.fgHover
2429
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
2430
2179
  }
2431
2180
  }
2432
2181
  }
@@ -2434,24 +2183,35 @@ function buildComponents(tokens) {
2434
2183
  // ─── Link ───────────────────────────────────────────────────────
2435
2184
  MuiLink: {
2436
2185
  styleOverrides: {
2437
- root: {
2438
- 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],
2439
2191
  fontWeight: 500,
2440
- textDecorationColor: info3[600],
2192
+ textDecorationColor: info2[600],
2441
2193
  "&:hover": {
2442
- color: info3[700],
2443
- textDecorationColor: info3[700]
2444
- }
2445
- }
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
+ })
2446
2206
  }
2447
2207
  },
2448
2208
  // ─── Popover ────────────────────────────────────────────────────
2449
2209
  MuiPopover: {
2450
2210
  styleOverrides: {
2451
2211
  paper: {
2452
- borderRadius: radius6.lg,
2212
+ borderRadius: radius4.lg,
2453
2213
  boxShadow: tokenShadows.lg,
2454
- border: `1px solid ${border6.secondary}`
2214
+ border: `1px solid ${border4.secondary}`
2455
2215
  }
2456
2216
  }
2457
2217
  },
@@ -2462,14 +2222,74 @@ function buildComponents(tokens) {
2462
2222
  }
2463
2223
  },
2464
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.
2465
2229
  MuiCardActionArea: {
2466
2230
  styleOverrides: {
2467
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
+ },
2468
2284
  "&:hover .MuiCardActionArea-focusHighlight": {
2469
2285
  opacity: 0.04
2470
2286
  },
2471
2287
  "&.Mui-focusVisible .MuiCardActionArea-focusHighlight": {
2472
2288
  opacity: 0.08
2289
+ },
2290
+ "@media (prefers-reduced-motion: reduce)": {
2291
+ transition: "none",
2292
+ "&::before": { display: "none" }
2473
2293
  }
2474
2294
  }
2475
2295
  }
@@ -2478,16 +2298,16 @@ function buildComponents(tokens) {
2478
2298
  MuiFilledInput: {
2479
2299
  styleOverrides: {
2480
2300
  root: {
2481
- borderRadius: `${radius6.md}px ${radius6.md}px 0 0`,
2482
- backgroundColor: bg6.secondary,
2301
+ borderRadius: `${radius4.md}px ${radius4.md}px 0 0`,
2302
+ backgroundColor: bg4.secondary,
2483
2303
  "&:hover": {
2484
- backgroundColor: bg6.secondaryHover
2304
+ backgroundColor: bg4.secondaryHover
2485
2305
  },
2486
2306
  "&.Mui-focused": {
2487
- backgroundColor: bg6.secondary
2307
+ backgroundColor: bg4.secondary
2488
2308
  },
2489
2309
  "&:after": {
2490
- borderBottomColor: fg6.brandPrimary
2310
+ borderBottomColor: fg4.brandPrimary
2491
2311
  }
2492
2312
  },
2493
2313
  input: {
@@ -2502,25 +2322,25 @@ function buildComponents(tokens) {
2502
2322
  styleOverrides: {
2503
2323
  root: {
2504
2324
  fontSize: 14,
2505
- color: text6.tertiary
2325
+ color: text4.tertiary
2506
2326
  },
2507
2327
  selectLabel: {
2508
2328
  fontSize: 14,
2509
- color: text6.tertiary
2329
+ color: text4.tertiary
2510
2330
  },
2511
2331
  displayedRows: {
2512
2332
  fontSize: 14,
2513
- color: text6.tertiary
2333
+ color: text4.tertiary
2514
2334
  },
2515
2335
  select: {
2516
2336
  fontSize: 14
2517
2337
  },
2518
2338
  actions: {
2519
2339
  "& .MuiIconButton-root": {
2520
- color: fg6.quaternary,
2340
+ color: fg4.quaternary,
2521
2341
  "&:hover": {
2522
- backgroundColor: bg6.primaryHover,
2523
- color: fg6.brandPrimary
2342
+ backgroundColor: bg4.primaryHover,
2343
+ color: fg4.brandPrimary
2524
2344
  }
2525
2345
  }
2526
2346
  }
@@ -2531,12 +2351,12 @@ function buildComponents(tokens) {
2531
2351
  styleOverrides: {
2532
2352
  root: {
2533
2353
  "&:hover": {
2534
- color: fg6.secondary
2354
+ color: fg4.secondary
2535
2355
  },
2536
2356
  "&.Mui-active": {
2537
- color: fg6.secondary,
2357
+ color: fg4.secondary,
2538
2358
  "& .MuiTableSortLabel-icon": {
2539
- color: fg6.brandPrimary
2359
+ color: fg4.brandPrimary
2540
2360
  }
2541
2361
  }
2542
2362
  }
@@ -2546,9 +2366,9 @@ function buildComponents(tokens) {
2546
2366
  MuiTabScrollButton: {
2547
2367
  styleOverrides: {
2548
2368
  root: {
2549
- color: fg6.quaternary,
2369
+ color: fg4.quaternary,
2550
2370
  "&:hover": {
2551
- color: fg6.brandPrimary
2371
+ color: fg4.brandPrimary
2552
2372
  }
2553
2373
  }
2554
2374
  }
@@ -2559,21 +2379,21 @@ function buildComponents(tokens) {
2559
2379
  MuiDataGrid: {
2560
2380
  styleOverrides: {
2561
2381
  root: {
2562
- border: `1px solid ${border6.secondary}`,
2563
- borderRadius: radius6.xl,
2382
+ border: `1px solid ${border4.secondary}`,
2383
+ borderRadius: radius4.xl,
2564
2384
  fontFamily: "inherit",
2565
2385
  "& .MuiDataGrid-withBorderColor": {
2566
- borderColor: border6.secondary
2386
+ borderColor: border4.secondary
2567
2387
  }
2568
2388
  },
2569
2389
  columnHeaders: {
2570
- backgroundColor: bg6.secondary
2390
+ backgroundColor: bg4.secondary
2571
2391
  },
2572
2392
  columnHeader: {
2573
2393
  fontSize: 12,
2574
2394
  lineHeight: "18px",
2575
2395
  fontWeight: 500,
2576
- color: fg6.tertiary,
2396
+ color: fg4.tertiary,
2577
2397
  "&:focus, &:focus-within": {
2578
2398
  outline: "none"
2579
2399
  }
@@ -2586,28 +2406,28 @@ function buildComponents(tokens) {
2586
2406
  alignItems: "center",
2587
2407
  fontSize: 14,
2588
2408
  lineHeight: "20px",
2589
- color: fg6.tertiary,
2409
+ color: fg4.tertiary,
2590
2410
  "&:focus, &:focus-within": {
2591
2411
  outline: "none"
2592
2412
  }
2593
2413
  },
2594
2414
  row: {
2595
- backgroundColor: bg6.secondary,
2415
+ backgroundColor: bg4.secondary,
2596
2416
  "&:hover": {
2597
- backgroundColor: bg6.primaryHover
2417
+ backgroundColor: bg4.primaryHover
2598
2418
  },
2599
2419
  "&.Mui-selected": {
2600
- backgroundColor: bg6.brandPrimary,
2420
+ backgroundColor: bg4.brandPrimary,
2601
2421
  "&:hover": {
2602
- backgroundColor: bg6.brandPrimary
2422
+ backgroundColor: bg4.brandPrimary
2603
2423
  }
2604
2424
  }
2605
2425
  },
2606
2426
  footerContainer: {
2607
- borderTop: `1px solid ${border6.secondary}`
2427
+ borderTop: `1px solid ${border4.secondary}`
2608
2428
  },
2609
2429
  columnSeparator: {
2610
- color: border6.secondary
2430
+ color: border4.secondary
2611
2431
  }
2612
2432
  }
2613
2433
  }
@@ -2616,40 +2436,53 @@ function buildComponents(tokens) {
2616
2436
  // MUI X uses its own sub-components that are separate from MuiOutlinedInput,
2617
2437
  // so height/padding and brand colours must be set here independently.
2618
2438
  ...{
2619
- // Input field — mirrors MuiOutlinedInput sizing
2620
- 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: {
2621
2445
  styleOverrides: {
2622
2446
  root: {
2623
- "& .MuiInputBase-root": {
2624
- height: 32,
2625
- borderRadius: radius6.md,
2626
- boxShadow: tokenShadows.xs,
2627
- fontSize: 14,
2628
- lineHeight: "20px"
2629
- },
2630
- "& .MuiInputBase-input": {
2631
- padding: "6px 12px",
2632
- fontSize: 14,
2633
- lineHeight: "20px"
2634
- },
2635
- "& .MuiOutlinedInput-notchedOutline": {
2636
- borderColor: border6.primary
2637
- },
2638
- "&:hover:not(:has(.Mui-disabled)) .MuiOutlinedInput-notchedOutline": {
2639
- 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
2640
2467
  },
2641
- "& .Mui-focused .MuiOutlinedInput-notchedOutline": {
2642
- borderColor: border6.brandSolid,
2468
+ "&.Mui-focused .MuiPickersOutlinedInput-notchedOutline": {
2469
+ borderColor: border4.brandSolid,
2643
2470
  borderWidth: 1,
2644
2471
  boxShadow: "none"
2645
2472
  },
2473
+ "&.Mui-error .MuiPickersOutlinedInput-notchedOutline": {
2474
+ borderColor: border4.error
2475
+ },
2646
2476
  "& .MuiInputAdornment-root .MuiIconButton-root": {
2647
- color: fg6.quaternary,
2477
+ color: fg4.quaternary,
2648
2478
  "&:hover": {
2649
- backgroundColor: bg6.primaryHover,
2650
- color: fg6.brandPrimary
2479
+ backgroundColor: bg4.primaryHover,
2480
+ color: fg4.brandPrimary
2651
2481
  }
2652
2482
  }
2483
+ },
2484
+ notchedOutline: {
2485
+ borderColor: border4.primary
2653
2486
  }
2654
2487
  }
2655
2488
  },
@@ -2657,9 +2490,9 @@ function buildComponents(tokens) {
2657
2490
  MuiPickersPopper: {
2658
2491
  styleOverrides: {
2659
2492
  paper: {
2660
- borderRadius: radius6.xl,
2493
+ borderRadius: radius4.xl,
2661
2494
  boxShadow: tokenShadows.lg,
2662
- border: `1px solid ${border6.secondary}`,
2495
+ border: `1px solid ${border4.secondary}`,
2663
2496
  marginTop: 4
2664
2497
  }
2665
2498
  }
@@ -2684,19 +2517,19 @@ function buildComponents(tokens) {
2684
2517
  label: {
2685
2518
  fontSize: 14,
2686
2519
  fontWeight: 600,
2687
- color: text6.primary
2520
+ color: text4.primary
2688
2521
  },
2689
2522
  switchViewButton: {
2690
- color: fg6.quaternary,
2691
- "&:hover": { backgroundColor: bg6.primaryHover, color: fg6.brandPrimary }
2523
+ color: fg4.quaternary,
2524
+ "&:hover": { backgroundColor: bg4.primaryHover, color: fg4.brandPrimary }
2692
2525
  }
2693
2526
  }
2694
2527
  },
2695
2528
  MuiPickersArrowSwitcher: {
2696
2529
  styleOverrides: {
2697
2530
  button: {
2698
- color: fg6.quaternary,
2699
- "&:hover": { backgroundColor: bg6.primaryHover, color: fg6.brandPrimary }
2531
+ color: fg4.quaternary,
2532
+ "&:hover": { backgroundColor: bg4.primaryHover, color: fg4.brandPrimary }
2700
2533
  }
2701
2534
  }
2702
2535
  },
@@ -2706,7 +2539,7 @@ function buildComponents(tokens) {
2706
2539
  weekDayLabel: {
2707
2540
  fontSize: 12,
2708
2541
  fontWeight: 500,
2709
- color: text6.tertiary,
2542
+ color: text4.tertiary,
2710
2543
  width: 32,
2711
2544
  height: 32
2712
2545
  },
@@ -2726,39 +2559,39 @@ function buildComponents(tokens) {
2726
2559
  fontWeight: 400,
2727
2560
  width: 32,
2728
2561
  height: 32,
2729
- borderRadius: radius6.md,
2730
- color: text6.primary,
2562
+ borderRadius: radius4.md,
2563
+ color: text4.primary,
2731
2564
  backgroundColor: "transparent",
2732
2565
  "&:hover": {
2733
- backgroundColor: bg6.primaryHover
2566
+ backgroundColor: bg4.primaryHover
2734
2567
  },
2735
2568
  "&.Mui-selected": {
2736
- backgroundColor: info3[600],
2737
- color: base2.white,
2569
+ backgroundColor: buttonColors4.primary.bg,
2570
+ color: buttonColors4.primary.fg,
2738
2571
  fontWeight: 600,
2739
2572
  "&:hover": {
2740
- backgroundColor: info3[700]
2573
+ backgroundColor: buttonColors4.primary.bgHover
2741
2574
  },
2742
2575
  "&:focus": {
2743
- backgroundColor: info3[600]
2576
+ backgroundColor: buttonColors4.primary.bg
2744
2577
  }
2745
2578
  },
2746
2579
  "&.MuiPickersDay-today": {
2747
- border: `1px solid ${info3[600]}`,
2748
- color: info3[700],
2580
+ border: `1px solid ${fg4.brandPrimary}`,
2581
+ color: text4.brandPrimary,
2749
2582
  backgroundColor: "transparent",
2750
2583
  fontWeight: 600,
2751
2584
  "&.Mui-selected": {
2752
- backgroundColor: info3[600],
2753
- color: base2.white,
2585
+ backgroundColor: buttonColors4.primary.bg,
2586
+ color: buttonColors4.primary.fg,
2754
2587
  border: "none"
2755
2588
  }
2756
2589
  },
2757
2590
  "&.Mui-focusVisible": {
2758
- boxShadow: focusRings6.brand
2591
+ boxShadow: focusRings4.brand
2759
2592
  },
2760
2593
  "&.Mui-disabled": {
2761
- color: text6.disabled
2594
+ color: text4.disabled
2762
2595
  }
2763
2596
  }
2764
2597
  }
@@ -2768,12 +2601,12 @@ function buildComponents(tokens) {
2768
2601
  styleOverrides: {
2769
2602
  yearButton: {
2770
2603
  fontSize: 13,
2771
- borderRadius: radius6.md,
2772
- "&:hover": { backgroundColor: bg6.primaryHover },
2604
+ borderRadius: radius4.md,
2605
+ "&:hover": { backgroundColor: bg4.primaryHover },
2773
2606
  "&.Mui-selected": {
2774
- backgroundColor: fg6.brandPrimary,
2775
- color: base2.white,
2776
- "&:hover": { backgroundColor: buttonColors6.primary.bgHover }
2607
+ backgroundColor: buttonColors4.primary.bg,
2608
+ color: buttonColors4.primary.fg,
2609
+ "&:hover": { backgroundColor: buttonColors4.primary.bgHover }
2777
2610
  }
2778
2611
  }
2779
2612
  }
@@ -2783,359 +2616,446 @@ function buildComponents(tokens) {
2783
2616
  styleOverrides: {
2784
2617
  monthButton: {
2785
2618
  fontSize: 13,
2786
- borderRadius: radius6.md,
2787
- "&:hover": { backgroundColor: bg6.primaryHover },
2619
+ borderRadius: radius4.md,
2620
+ "&:hover": { backgroundColor: bg4.primaryHover },
2788
2621
  "&.Mui-selected": {
2789
- backgroundColor: fg6.brandPrimary,
2790
- color: base2.white,
2791
- "&:hover": { backgroundColor: buttonColors6.primary.bgHover }
2622
+ backgroundColor: buttonColors4.primary.bg,
2623
+ color: buttonColors4.primary.fg,
2624
+ "&:hover": { backgroundColor: buttonColors4.primary.bgHover }
2792
2625
  }
2793
2626
  }
2794
2627
  }
2795
2628
  }
2796
2629
  }
2797
2630
  };
2798
- }
2799
-
2800
- // src/theme/buildTheme.ts
2801
- 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
+ }
2802
2670
  return {
2803
- palette: buildPalette(tokens),
2804
- typography: buildTypography(tokens),
2805
- components: buildComponents(tokens),
2806
- shadows: buildShadows(tokens),
2807
- shape: {
2808
- borderRadius: tokens.radius.md
2671
+ ...shared,
2672
+ cssVariables: { colorSchemeSelector: "class" },
2673
+ colorSchemes: {
2674
+ light: { palette: buildPalette(tokens2, "light") },
2675
+ dark: { palette: buildPalette(tokensDark2, "dark") }
2809
2676
  }
2810
2677
  };
2811
2678
  }
2812
- function buildTheme(tokens) {
2813
- return createTheme(buildThemeOptions(tokens));
2679
+ function buildTheme(tokens2, tokensDark2) {
2680
+ return createTheme(buildThemeOptions(tokens2, tokensDark2));
2814
2681
  }
2815
2682
 
2816
- // src/theme/presets/forest-external.ts
2817
- var radius2 = {
2818
- ...radius,
2819
- xxs: 1,
2820
- xs: 2,
2821
- sm: 3,
2822
- md: 4,
2823
- lg: 5,
2824
- xl: 6,
2825
- "2xl": 8,
2826
- "3xl": 10,
2827
- "4xl": 12
2828
- };
2829
- var text2 = {
2830
- primary: gray[900],
2831
- secondary: gray[700],
2832
- secondaryHover: gray[800],
2833
- tertiary: gray[600],
2834
- tertiaryHover: gray[700],
2835
- quaternary: gray[500],
2836
- disabled: gray[500],
2837
- placeholder: gray[500],
2838
- placeholderSubtle: gray[300],
2839
- white: base.white,
2840
- brandPrimary: violet[900],
2841
- brandSecondary: violet[700],
2842
- brandTertiary: violet[600],
2843
- brandTertiaryAlt: violet[600],
2844
- primaryOnBrand: base.white,
2845
- secondaryOnBrand: violet[200],
2846
- tertiaryOnBrand: violet[200],
2847
- quaternaryOnBrand: violet[300],
2848
- errorPrimary: error[600],
2849
- warningPrimary: warning[600],
2850
- 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"
2851
2697
  };
2852
- var bg2 = {
2853
- primary: gray[50],
2854
- primaryAlt: gray[50],
2855
- primaryHover: gray[100],
2856
- primarySolid: gray[950],
2857
- secondary: base.white,
2858
- secondaryAlt: base.white,
2859
- secondarySubtle: gray[25],
2860
- secondaryHover: gray[50],
2861
- secondarySolid: gray[600],
2862
- tertiary: gray[100],
2863
- quaternary: gray[200],
2864
- active: gray[200],
2865
- disabled: gray[100],
2866
- disabledSubtle: gray[50],
2867
- overlay: gray[950],
2868
- brandPrimary: violet[50],
2869
- brandPrimaryAlt: violet[50],
2870
- brandSecondary: violet[100],
2871
- brandSolid: violet[400],
2872
- brandSolidHover: violet[500],
2873
- brandSection: violet[800],
2874
- brandSectionSubtle: violet[700],
2875
- errorPrimary: error[50],
2876
- errorSecondary: error[100],
2877
- errorSolid: error[600],
2878
- warningPrimary: warning[50],
2879
- warningSecondary: warning[100],
2880
- warningSolid: warning[600],
2881
- successPrimary: success[50],
2882
- successSecondary: success[100],
2883
- 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"
2884
2711
  };
2885
- var fg2 = {
2886
- primary: gray[900],
2887
- secondary: gray[700],
2888
- secondaryHover: gray[800],
2889
- tertiary: gray[600],
2890
- tertiaryHover: gray[700],
2891
- quaternary: gray[500],
2892
- quaternaryHover: gray[600],
2893
- quinary: gray[400],
2894
- quinaryHover: gray[500],
2895
- senary: gray[300],
2896
- white: base.white,
2897
- disabled: gray[400],
2898
- disabledSubtle: gray[300],
2899
- brandPrimary: violet[400],
2900
- brandPrimaryAlt: violet[400],
2901
- brandSecondary: violet[400],
2902
- errorPrimary: error[600],
2903
- errorSecondary: error[500],
2904
- warningPrimary: warning[600],
2905
- warningSecondary: warning[500],
2906
- successPrimary: success[600],
2907
- 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"
2908
2725
  };
2909
- var border2 = {
2910
- primary: gray[300],
2911
- secondary: gray[200],
2912
- tertiary: gray[100],
2913
- disabled: gray[300],
2914
- disabledSubtle: gray[200],
2915
- brand: violet[300],
2916
- brandSolid: violet[400],
2917
- brandSolidAlt: violet[400],
2918
- error: error[300],
2919
- 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"
2920
2739
  };
2921
- var buttonColors2 = {
2922
- primary: {
2923
- bg: violet[400],
2924
- bgHover: violet[500],
2925
- fg: base.white,
2926
- fgHover: base.white,
2927
- border: violet[400],
2928
- 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"
2929
2754
  },
2930
- secondary: {
2931
- bg: gray[900],
2932
- bgHover: gray[950],
2933
- fg: base.white,
2934
- fgHover: base.white,
2935
- border: gray[900],
2936
- 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"
2937
2768
  },
2938
- secondaryColor: {
2939
- bg: base.white,
2940
- bgHover: violet[50],
2941
- fg: violet[400],
2942
- fgHover: violet[500],
2943
- border: violet[300],
2944
- 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"
2945
2782
  },
2946
- tertiary: {
2947
- fg: gray[600],
2948
- fgHover: gray[700],
2949
- 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"
2950
2838
  },
2951
- tertiaryColor: {
2952
- fg: violet[400],
2953
- fgHover: violet[500],
2954
- 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"
2955
2852
  },
2956
- primaryError: {
2957
- bg: error[600],
2958
- bgHover: error[700],
2959
- fg: base.white,
2960
- fgHover: base.white,
2961
- border: error[600],
2962
- 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"
2963
2866
  },
2964
- secondaryError: {
2965
- bg: base.white,
2966
- bgHover: error[50],
2967
- fg: error[700],
2968
- fgHover: error[800],
2969
- border: error[300],
2970
- 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"
2971
2880
  },
2972
- tertiaryError: {
2973
- fg: error[700],
2974
- fgHover: error[800],
2975
- 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"
2976
2894
  }
2977
2895
  };
2978
- var avatarColors2 = {
2979
- bg: gray[100],
2980
- contrastBorder: "#00000014",
2981
- profilePhotoBorder: base.white,
2982
- focusBorder: "#a0a0a624"
2983
- // gray[400] + 14% alpha
2896
+ var base = {
2897
+ white: "#ffffff",
2898
+ black: "#000000",
2899
+ transparent: "#ffffff00"
2984
2900
  };
2985
- var breadcrumbColors2 = {
2986
- fg: gray[600],
2987
- fgHover: gray[700],
2988
- bgHover: gray[50],
2989
- brandBgHover: violet[50],
2990
- brandFgHover: violet[700],
2991
- iconFg: gray[500],
2992
- iconFgHover: gray[700],
2993
- 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"
2994
2914
  };
2995
- var iconColors2 = {
2996
- fgBrand: violet[400],
2997
- fgBrandOnBrand: violet[200],
2998
- featuredModernBorder: gray[200],
2999
- featuredLightFgBrand: violet[400],
3000
- featuredLightFgGray: gray[500],
3001
- featuredLightFgError: error[600],
3002
- featuredLightFgWarning: warning[600],
3003
- featuredLightFgSuccess: success[600],
3004
- featuredDarkFgBrand: base.white,
3005
- featuredDarkFgGray: base.white,
3006
- featuredDarkFgError: base.white,
3007
- featuredDarkFgWarning: base.white,
3008
- 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"
3009
2928
  };
3010
- var navColors2 = {
3011
- itemIconFg: gray[500],
3012
- itemIconFgActive: gray[700],
3013
- itemButtonIconFg: gray[500],
3014
- 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"
3015
2942
  };
3016
- var sliderColors2 = {
3017
- handleBorder: violet[400],
3018
- 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"
3019
2956
  };
3020
- var toggleColors2 = {
3021
- 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
3022
2975
  };
3023
- var chartColors2 = {
3024
- axisFg: gray[100],
3025
- gridlineFg: gray[100],
3026
- labelFg: gray[600],
3027
- labelFgEmphasis: gray[700],
3028
- bg: base.white,
3029
- bgAlt: gray[50],
3030
- tooltipBg: gray[950],
3031
- tooltipFg: base.white,
3032
- crosshairFg: gray[500],
3033
- legendFg: text2.tertiary,
3034
- series: [
3035
- { fg: misc.purple[500], fgHover: misc.purple[600], bg: misc.purple[100], bgHover: misc.purple[200] },
3036
- { fg: misc.orangeDark[400], fgHover: misc.orangeDark[500], bg: misc.orangeDark[100], bgHover: misc.orangeDark[200] },
3037
- { fg: misc.teal[300], fgHover: misc.teal[400], bg: misc.teal[50], bgHover: misc.teal[100] },
3038
- { fg: warning[400], fgHover: warning[500], bg: warning[100], bgHover: warning[200] },
3039
- { fg: misc.rose[400], fgHover: misc.rose[500], bg: misc.rose[100], bgHover: misc.rose[200] },
3040
- { fg: misc.blueLight[400], fgHover: misc.blueLight[500], bg: misc.blueLight[100], bgHover: misc.blueLight[200] },
3041
- { fg: misc.orange[300], fgHover: misc.orange[400], bg: misc.orange[100], bgHover: misc.orange[200] },
3042
- { fg: misc.cyan[600], fgHover: misc.cyan[700], bg: misc.cyan[100], bgHover: misc.cyan[200] },
3043
- { fg: misc.green[500], fgHover: misc.green[600], bg: misc.green[100], bgHover: misc.green[200] },
3044
- { fg: misc.pink[400], fgHover: misc.pink[500], bg: misc.pink[100], bgHover: misc.pink[200] },
3045
- { fg: misc.fuchsia[400], fgHover: misc.fuchsia[500], bg: misc.fuchsia[100], bgHover: misc.fuchsia[200] },
3046
- { fg: misc.teal[600], fgHover: misc.teal[700], bg: misc.teal[100], bgHover: misc.teal[200] }
3047
- ]
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
3048
3017
  };
3049
- var focusRings2 = {
3050
- brand: "0px 0px 0px 4px #9D5FFF3d",
3051
- brandShadowXs: "0px 1px 2px 0px #1018280d, 0px 0px 0px 4px #9D5FFF3d",
3052
- brandShadowSm: "0px 1px 3px 0px #1018281a, 0px 1px 2px 0px #1018280f, 0px 0px 0px 4px #9D5FFF3d",
3053
- gray: "0px 0px 0px 4px #a0a0a624",
3054
- grayShadowXs: "0px 1px 2px 0px #1018280d, 0px 0px 0px 4px #a0a0a624",
3055
- grayShadowSm: "0px 1px 3px 0px #1018281a, 0px 1px 2px 0px #1018280f, 0px 0px 0px 4px #a0a0a624",
3056
- error: "0px 0px 0px 4px #f044383d",
3057
- 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"
3058
3025
  };
3059
- var forestExternalPreset = {
3060
- name: "forest-external",
3061
- defaultVariant: "light",
3062
- variants: {
3063
- light: {
3064
- tokens: {
3065
- base,
3066
- error,
3067
- warning,
3068
- success,
3069
- info,
3070
- spacing,
3071
- radius: radius2,
3072
- shadows,
3073
- focusRings: focusRings2,
3074
- fontFamily: '"Aeonik", sans-serif',
3075
- fontFamilyMono: '"Aeonik Mono", monospace',
3076
- fontSize,
3077
- lineHeight,
3078
- fontWeight,
3079
- display,
3080
- container,
3081
- widths,
3082
- text: text2,
3083
- bg: bg2,
3084
- fg: fg2,
3085
- border: border2,
3086
- buttonColors: buttonColors2,
3087
- avatarColors: avatarColors2,
3088
- breadcrumbColors: breadcrumbColors2,
3089
- iconColors: iconColors2,
3090
- navColors: navColors2,
3091
- sliderColors: sliderColors2,
3092
- toggleColors: toggleColors2,
3093
- chartColors: chartColors2,
3094
- alpha
3095
- }
3096
- }
3097
- }
3026
+ var fontWeight = {
3027
+ regular: 400,
3028
+ medium: 500,
3029
+ semibold: 600,
3030
+ bold: 700
3098
3031
  };
3099
-
3100
- // src/theme/presets/forest-agency.ts
3101
- var colors = {
3102
- base,
3103
- error,
3104
- warning,
3105
- success,
3106
- info,
3107
- brand: {
3108
- 25: gray[25],
3109
- 50: gray[50],
3110
- 100: gray[100],
3111
- 200: gray[200],
3112
- 300: gray[300],
3113
- 400: gray[400],
3114
- 500: gray[500],
3115
- 600: gray[900],
3116
- // #18181b - dark brand
3117
- 700: gray[950],
3118
- // #09090b - primary brand
3119
- 800: gray[950],
3120
- 900: gray[950],
3121
- 950: gray[950]
3122
- },
3123
- accent: red,
3124
- 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" }
3125
3039
  };
3126
- var radius3 = {
3127
- ...radius,
3128
- xxs: 1,
3129
- xs: 2,
3130
- sm: 3,
3131
- md: 4,
3132
- lg: 5,
3133
- xl: 6,
3134
- "2xl": 8,
3135
- "3xl": 10,
3136
- "4xl": 12
3040
+ var container = {
3041
+ maxWidthDesktop: 1280,
3042
+ paddingDesktop: 32,
3043
+ paddingMobile: 16
3137
3044
  };
3138
- 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 = {
3139
3059
  primary: gray[900],
3140
3060
  secondary: gray[700],
3141
3061
  secondaryHover: gray[800],
@@ -3146,19 +3066,19 @@ var text3 = {
3146
3066
  placeholder: gray[500],
3147
3067
  placeholderSubtle: gray[300],
3148
3068
  white: base.white,
3149
- brandPrimary: colors.brand[900],
3150
- brandSecondary: colors.brand[700],
3151
- brandTertiary: colors.brand[600],
3152
- brandTertiaryAlt: colors.brand[600],
3069
+ brandPrimary: violet[900],
3070
+ brandSecondary: violet[700],
3071
+ brandTertiary: violet[600],
3072
+ brandTertiaryAlt: violet[600],
3153
3073
  primaryOnBrand: base.white,
3154
- secondaryOnBrand: colors.brand[200],
3155
- tertiaryOnBrand: colors.brand[200],
3156
- quaternaryOnBrand: colors.brand[300],
3074
+ secondaryOnBrand: violet[200],
3075
+ tertiaryOnBrand: violet[200],
3076
+ quaternaryOnBrand: violet[300],
3157
3077
  errorPrimary: error[600],
3158
3078
  warningPrimary: warning[600],
3159
3079
  successPrimary: success[600]
3160
3080
  };
3161
- var bg3 = {
3081
+ var bg = {
3162
3082
  primary: gray[50],
3163
3083
  primaryAlt: gray[50],
3164
3084
  primaryHover: gray[100],
@@ -3174,13 +3094,13 @@ var bg3 = {
3174
3094
  disabled: gray[100],
3175
3095
  disabledSubtle: gray[50],
3176
3096
  overlay: gray[950],
3177
- brandPrimary: colors.brand[50],
3178
- brandPrimaryAlt: colors.brand[50],
3179
- brandSecondary: colors.brand[100],
3180
- brandSolid: colors.brand[600],
3181
- brandSolidHover: colors.brand[700],
3182
- brandSection: colors.brand[800],
3183
- 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],
3184
3104
  errorPrimary: error[50],
3185
3105
  errorSecondary: error[100],
3186
3106
  errorSolid: error[600],
@@ -3191,7 +3111,7 @@ var bg3 = {
3191
3111
  successSecondary: success[100],
3192
3112
  successSolid: success[600]
3193
3113
  };
3194
- var fg3 = {
3114
+ var fg = {
3195
3115
  primary: gray[900],
3196
3116
  secondary: gray[700],
3197
3117
  secondaryHover: gray[800],
@@ -3205,9 +3125,9 @@ var fg3 = {
3205
3125
  white: base.white,
3206
3126
  disabled: gray[400],
3207
3127
  disabledSubtle: gray[300],
3208
- brandPrimary: colors.brand[600],
3209
- brandPrimaryAlt: colors.brand[600],
3210
- brandSecondary: colors.brand[500],
3128
+ brandPrimary: violet[600],
3129
+ brandPrimaryAlt: violet[600],
3130
+ brandSecondary: violet[500],
3211
3131
  errorPrimary: error[600],
3212
3132
  errorSecondary: error[500],
3213
3133
  warningPrimary: warning[600],
@@ -3215,26 +3135,26 @@ var fg3 = {
3215
3135
  successPrimary: success[600],
3216
3136
  successSecondary: success[500]
3217
3137
  };
3218
- var border3 = {
3138
+ var border = {
3219
3139
  primary: gray[300],
3220
3140
  secondary: gray[200],
3221
3141
  tertiary: gray[100],
3222
3142
  disabled: gray[300],
3223
3143
  disabledSubtle: gray[200],
3224
- brand: gray[400],
3225
- brandSolid: colors.brand[600],
3226
- brandSolidAlt: colors.brand[600],
3144
+ brand: violet[300],
3145
+ brandSolid: violet[600],
3146
+ brandSolidAlt: violet[600],
3227
3147
  error: error[300],
3228
3148
  errorSolid: error[600]
3229
3149
  };
3230
- var buttonColors3 = {
3150
+ var buttonColors = {
3231
3151
  primary: {
3232
- bg: colors.brand[700],
3233
- bgHover: colors.brand[800],
3152
+ bg: violet[600],
3153
+ bgHover: violet[700],
3234
3154
  fg: base.white,
3235
3155
  fgHover: base.white,
3236
- border: colors.brand[700],
3237
- borderHover: colors.brand[800]
3156
+ border: violet[600],
3157
+ borderHover: violet[700]
3238
3158
  },
3239
3159
  secondary: {
3240
3160
  bg: gray[900],
@@ -3246,11 +3166,11 @@ var buttonColors3 = {
3246
3166
  },
3247
3167
  secondaryColor: {
3248
3168
  bg: base.white,
3249
- bgHover: colors.brand[50],
3250
- fg: colors.brand[700],
3251
- fgHover: colors.brand[800],
3252
- border: colors.brand[300],
3253
- borderHover: colors.brand[300]
3169
+ bgHover: violet[50],
3170
+ fg: violet[700],
3171
+ fgHover: violet[800],
3172
+ border: violet[300],
3173
+ borderHover: violet[300]
3254
3174
  },
3255
3175
  tertiary: {
3256
3176
  fg: gray[600],
@@ -3258,9 +3178,9 @@ var buttonColors3 = {
3258
3178
  bgHover: gray[50]
3259
3179
  },
3260
3180
  tertiaryColor: {
3261
- fg: colors.brand[700],
3262
- fgHover: colors.brand[800],
3263
- bgHover: colors.brand[50]
3181
+ fg: violet[700],
3182
+ fgHover: violet[800],
3183
+ bgHover: violet[50]
3264
3184
  },
3265
3185
  primaryError: {
3266
3186
  bg: error[600],
@@ -3284,28 +3204,28 @@ var buttonColors3 = {
3284
3204
  bgHover: error[50]
3285
3205
  }
3286
3206
  };
3287
- var avatarColors3 = {
3207
+ var avatarColors = {
3288
3208
  bg: gray[100],
3209
+ fg: gray[600],
3289
3210
  contrastBorder: "#00000014",
3290
3211
  profilePhotoBorder: base.white,
3291
3212
  focusBorder: "#a0a0a624"
3292
- // gray[400] + 14% alpha
3293
3213
  };
3294
- var breadcrumbColors3 = {
3214
+ var breadcrumbColors = {
3295
3215
  fg: gray[600],
3296
3216
  fgHover: gray[700],
3297
3217
  bgHover: gray[50],
3298
- brandBgHover: colors.brand[50],
3299
- brandFgHover: colors.brand[700],
3218
+ brandBgHover: violet[50],
3219
+ brandFgHover: violet[700],
3300
3220
  iconFg: gray[500],
3301
3221
  iconFgHover: gray[700],
3302
- brandIconFgHover: colors.brand[700]
3222
+ brandIconFgHover: violet[700]
3303
3223
  };
3304
- var iconColors3 = {
3305
- fgBrand: colors.brand[600],
3306
- fgBrandOnBrand: colors.brand[200],
3224
+ var iconColors = {
3225
+ fgBrand: violet[600],
3226
+ fgBrandOnBrand: violet[200],
3307
3227
  featuredModernBorder: gray[200],
3308
- featuredLightFgBrand: colors.brand[600],
3228
+ featuredLightFgBrand: violet[600],
3309
3229
  featuredLightFgGray: gray[500],
3310
3230
  featuredLightFgError: error[600],
3311
3231
  featuredLightFgWarning: warning[600],
@@ -3316,20 +3236,20 @@ var iconColors3 = {
3316
3236
  featuredDarkFgWarning: base.white,
3317
3237
  featuredDarkFgSuccess: base.white
3318
3238
  };
3319
- var navColors3 = {
3239
+ var navColors = {
3320
3240
  itemIconFg: gray[500],
3321
3241
  itemIconFgActive: gray[700],
3322
3242
  itemButtonIconFg: gray[500],
3323
3243
  itemButtonIconFgActive: gray[700]
3324
3244
  };
3325
- var sliderColors3 = {
3326
- handleBorder: colors.brand[600],
3245
+ var sliderColors = {
3246
+ handleBorder: violet[600],
3327
3247
  handleBg: base.white
3328
3248
  };
3329
- var toggleColors3 = {
3249
+ var toggleColors = {
3330
3250
  buttonFgDisabled: gray[50]
3331
3251
  };
3332
- var chartColors3 = {
3252
+ var chartColors = {
3333
3253
  axisFg: gray[100],
3334
3254
  gridlineFg: gray[100],
3335
3255
  labelFg: gray[600],
@@ -3339,7 +3259,7 @@ var chartColors3 = {
3339
3259
  tooltipBg: gray[950],
3340
3260
  tooltipFg: base.white,
3341
3261
  crosshairFg: gray[500],
3342
- legendFg: text3.tertiary,
3262
+ legendFg: text.tertiary,
3343
3263
  series: [
3344
3264
  { fg: misc.purple[500], fgHover: misc.purple[600], bg: misc.purple[100], bgHover: misc.purple[200] },
3345
3265
  { fg: misc.orangeDark[400], fgHover: misc.orangeDark[500], bg: misc.orangeDark[100], bgHover: misc.orangeDark[200] },
@@ -3355,59 +3275,36 @@ var chartColors3 = {
3355
3275
  { fg: misc.teal[600], fgHover: misc.teal[700], bg: misc.teal[100], bgHover: misc.teal[200] }
3356
3276
  ]
3357
3277
  };
3358
- var focusRings3 = {
3359
- brand: "0px 0px 0px 4px #4040403d",
3360
- brandShadowXs: "0px 1px 2px 0px #1018280d, 0px 0px 0px 4px #4040403d",
3361
- brandShadowSm: "0px 1px 3px 0px #1018281a, 0px 1px 2px 0px #1018280f, 0px 0px 0px 4px #4040403d",
3362
- gray: "0px 0px 0px 4px #a0a0a624",
3363
- grayShadowXs: "0px 1px 2px 0px #1018280d, 0px 0px 0px 4px #a0a0a624",
3364
- grayShadowSm: "0px 1px 3px 0px #1018281a, 0px 1px 2px 0px #1018280f, 0px 0px 0px 4px #a0a0a624",
3365
- error: "0px 0px 0px 4px #f044383d",
3366
- errorShadowXs: "0px 1px 2px 0px #1018280d, 0px 0px 0px 4px #f044383d"
3367
- };
3368
- var forestAgencyPreset = {
3369
- name: "forest-agency",
3370
- defaultVariant: "light",
3371
- variants: {
3372
- light: {
3373
- tokens: {
3374
- base,
3375
- error,
3376
- warning,
3377
- success,
3378
- info,
3379
- spacing,
3380
- radius: radius3,
3381
- shadows,
3382
- focusRings: focusRings3,
3383
- fontFamily: '"Aeonik", sans-serif',
3384
- fontFamilyMono: '"Aeonik Mono", monospace',
3385
- fontSize,
3386
- lineHeight,
3387
- fontWeight,
3388
- display,
3389
- container,
3390
- widths,
3391
- text: text3,
3392
- bg: bg3,
3393
- fg: fg3,
3394
- border: border3,
3395
- buttonColors: buttonColors3,
3396
- avatarColors: avatarColors3,
3397
- breadcrumbColors: breadcrumbColors3,
3398
- iconColors: iconColors3,
3399
- navColors: navColors3,
3400
- sliderColors: sliderColors3,
3401
- toggleColors: toggleColors3,
3402
- chartColors: chartColors3,
3403
- alpha
3404
- }
3405
- }
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"
3406
3302
  }
3407
3303
  };
3408
3304
 
3409
- // src/theme/presets/forest-internal.ts
3410
- var radius4 = {
3305
+ // src/theme/presets/forest-alkemy-plus.dark.ts
3306
+ var highlight = magenta;
3307
+ var radius2 = {
3411
3308
  ...radius,
3412
3309
  xxs: 1,
3413
3310
  xs: 2,
@@ -3419,286 +3316,298 @@ var radius4 = {
3419
3316
  "3xl": 10,
3420
3317
  "4xl": 12
3421
3318
  };
3422
- var text4 = {
3423
- primary: gray[900],
3424
- secondary: gray[700],
3425
- secondaryHover: gray[800],
3426
- tertiary: gray[600],
3427
- 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],
3428
3325
  quaternary: gray[500],
3429
- disabled: gray[500],
3326
+ disabled: gray[600],
3430
3327
  placeholder: gray[500],
3431
- placeholderSubtle: gray[300],
3328
+ placeholderSubtle: gray[600],
3432
3329
  white: base.white,
3433
- brandPrimary: magenta[900],
3434
- brandSecondary: magenta[700],
3435
- brandTertiary: magenta[600],
3436
- brandTertiaryAlt: magenta[600],
3437
- primaryOnBrand: base.white,
3438
- secondaryOnBrand: magenta[200],
3439
- tertiaryOnBrand: magenta[200],
3440
- quaternaryOnBrand: magenta[300],
3441
- errorPrimary: error[600],
3442
- warningPrimary: warning[600],
3443
- 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]
3444
3343
  };
3445
- var bg4 = {
3446
- primary: gray[50],
3447
- primaryAlt: gray[50],
3448
- primaryHover: gray[100],
3449
- primarySolid: gray[950],
3450
- secondary: base.white,
3451
- secondaryAlt: base.white,
3452
- secondarySubtle: gray[25],
3453
- secondaryHover: gray[50],
3454
- secondarySolid: gray[600],
3455
- tertiary: gray[100],
3456
- quaternary: gray[200],
3457
- active: gray[200],
3458
- disabled: gray[100],
3459
- 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],
3460
3359
  overlay: gray[950],
3461
- brandPrimary: magenta[50],
3462
- brandPrimaryAlt: magenta[50],
3463
- brandSecondary: magenta[100],
3464
- brandSolid: magenta[400],
3465
- brandSolidHover: magenta[500],
3466
- brandSection: magenta[800],
3467
- brandSectionSubtle: magenta[700],
3468
- errorPrimary: error[50],
3469
- errorSecondary: error[100],
3470
- errorSolid: error[600],
3471
- warningPrimary: warning[50],
3472
- 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],
3473
3374
  warningSolid: warning[600],
3474
- successPrimary: success[50],
3475
- successSecondary: success[100],
3375
+ successPrimary: success[950],
3376
+ successSecondary: success[900],
3476
3377
  successSolid: success[600]
3477
3378
  };
3478
- var fg4 = {
3479
- primary: gray[900],
3480
- secondary: gray[700],
3481
- secondaryHover: gray[800],
3482
- tertiary: gray[600],
3483
- 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],
3484
3385
  quaternary: gray[500],
3485
- quaternaryHover: gray[600],
3486
- quinary: gray[400],
3487
- quinaryHover: gray[500],
3488
- senary: gray[300],
3386
+ quaternaryHover: gray[400],
3387
+ quinary: gray[500],
3388
+ quinaryHover: gray[400],
3389
+ senary: gray[600],
3489
3390
  white: base.white,
3490
- disabled: gray[400],
3491
- disabledSubtle: gray[300],
3492
- brandPrimary: magenta[400],
3493
- brandPrimaryAlt: magenta[400],
3494
- brandSecondary: magenta[400],
3495
- 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],
3496
3397
  errorSecondary: error[500],
3497
- warningPrimary: warning[600],
3398
+ warningPrimary: warning[400],
3498
3399
  warningSecondary: warning[500],
3499
- successPrimary: success[600],
3400
+ successPrimary: success[400],
3500
3401
  successSecondary: success[500]
3501
3402
  };
3502
- var border4 = {
3503
- primary: gray[300],
3504
- secondary: gray[200],
3505
- tertiary: gray[100],
3506
- disabled: gray[300],
3507
- disabledSubtle: gray[200],
3508
- brand: magenta[300],
3509
- brandSolid: magenta[400],
3510
- brandSolidAlt: magenta[400],
3511
- 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],
3512
3413
  errorSolid: error[600]
3513
3414
  };
3514
- var buttonColors4 = {
3415
+ var buttonColors2 = {
3515
3416
  primary: {
3516
- bg: magenta[400],
3517
- bgHover: magenta[500],
3518
- fg: base.white,
3519
- fgHover: base.white,
3520
- border: magenta[400],
3521
- 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]
3522
3423
  },
3523
3424
  secondary: {
3524
- bg: gray[900],
3525
- bgHover: gray[950],
3526
- fg: base.white,
3527
- fgHover: base.white,
3528
- border: gray[900],
3529
- 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
3530
3431
  },
3531
3432
  secondaryColor: {
3532
- bg: base.white,
3533
- bgHover: magenta[50],
3534
- fg: magenta[400],
3535
- fgHover: magenta[500],
3536
- border: magenta[300],
3537
- 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]
3538
3439
  },
3539
3440
  tertiary: {
3540
- fg: gray[600],
3541
- fgHover: gray[700],
3542
- bgHover: gray[50]
3441
+ fg: gray[300],
3442
+ fgHover: gray[100],
3443
+ bgHover: gray[800]
3543
3444
  },
3544
3445
  tertiaryColor: {
3545
- fg: magenta[400],
3546
- fgHover: magenta[500],
3547
- bgHover: magenta[50]
3446
+ fg: gray[100],
3447
+ fgHover: gray[50],
3448
+ bgHover: gray[800]
3548
3449
  },
3549
3450
  primaryError: {
3550
3451
  bg: error[600],
3551
- bgHover: error[700],
3452
+ bgHover: error[500],
3552
3453
  fg: base.white,
3553
3454
  fgHover: base.white,
3554
3455
  border: error[600],
3555
- borderHover: error[700]
3456
+ borderHover: error[500]
3556
3457
  },
3557
3458
  secondaryError: {
3558
- bg: base.white,
3559
- bgHover: error[50],
3560
- fg: error[700],
3561
- fgHover: error[800],
3562
- border: error[300],
3563
- 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]
3564
3465
  },
3565
3466
  tertiaryError: {
3566
- fg: error[700],
3567
- fgHover: error[800],
3568
- bgHover: error[50]
3467
+ fg: error[300],
3468
+ fgHover: error[200],
3469
+ bgHover: error[950]
3569
3470
  }
3570
3471
  };
3571
- var avatarColors4 = {
3572
- bg: gray[100],
3573
- contrastBorder: "#00000014",
3574
- profilePhotoBorder: base.white,
3575
- focusBorder: "#a0a0a624"
3576
- // gray[400] + 14% alpha
3577
- };
3578
- var breadcrumbColors4 = {
3579
- fg: gray[600],
3580
- fgHover: gray[700],
3581
- bgHover: gray[50],
3582
- brandBgHover: magenta[50],
3583
- 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],
3584
3478
  iconFg: gray[500],
3585
- iconFgHover: gray[700],
3586
- brandIconFgHover: magenta[700]
3479
+ iconFgHover: gray[300],
3480
+ brandIconFgHover: gray[100]
3587
3481
  };
3588
- var iconColors4 = {
3589
- fgBrand: magenta[400],
3590
- fgBrandOnBrand: magenta[200],
3591
- featuredModernBorder: gray[200],
3592
- featuredLightFgBrand: magenta[400],
3593
- featuredLightFgGray: gray[500],
3594
- featuredLightFgError: error[600],
3595
- featuredLightFgWarning: warning[600],
3596
- 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],
3597
3491
  featuredDarkFgBrand: base.white,
3598
3492
  featuredDarkFgGray: base.white,
3599
3493
  featuredDarkFgError: base.white,
3600
3494
  featuredDarkFgWarning: base.white,
3601
3495
  featuredDarkFgSuccess: base.white
3602
3496
  };
3603
- var navColors4 = {
3604
- itemIconFg: gray[500],
3605
- itemIconFgActive: gray[700],
3606
- itemButtonIconFg: gray[500],
3607
- itemButtonIconFgActive: gray[700]
3497
+ var sliderColors2 = {
3498
+ handleBorder: gray[100],
3499
+ handleBg: gray[50]
3608
3500
  };
3609
- var sliderColors4 = {
3610
- handleBorder: magenta[400],
3611
- handleBg: base.white
3501
+ var avatarColors2 = {
3502
+ bg: gray[800],
3503
+ fg: gray[50],
3504
+ contrastBorder: "#ffffff1f",
3505
+ profilePhotoBorder: gray[900],
3506
+ focusBorder: "#a0a0a624"
3612
3507
  };
3613
- var toggleColors4 = {
3614
- buttonFgDisabled: gray[50]
3508
+ var navColors2 = {
3509
+ itemIconFg: gray[400],
3510
+ itemIconFgActive: gray[100],
3511
+ itemButtonIconFg: gray[400],
3512
+ itemButtonIconFgActive: gray[100]
3615
3513
  };
3616
- var chartColors4 = {
3617
- axisFg: gray[100],
3618
- gridlineFg: gray[100],
3619
- labelFg: gray[600],
3620
- labelFgEmphasis: gray[700],
3621
- bg: base.white,
3622
- bgAlt: gray[50],
3623
- tooltipBg: gray[950],
3624
- 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],
3625
3526
  crosshairFg: gray[500],
3626
- legendFg: text4.tertiary,
3527
+ legendFg: text2.tertiary,
3627
3528
  series: [
3628
- { fg: misc.purple[500], fgHover: misc.purple[600], bg: misc.purple[100], bgHover: misc.purple[200] },
3629
- { fg: misc.orangeDark[400], fgHover: misc.orangeDark[500], bg: misc.orangeDark[100], bgHover: misc.orangeDark[200] },
3630
- { fg: misc.teal[300], fgHover: misc.teal[400], bg: misc.teal[50], bgHover: misc.teal[100] },
3631
- { fg: warning[400], fgHover: warning[500], bg: warning[100], bgHover: warning[200] },
3632
- { fg: misc.rose[400], fgHover: misc.rose[500], bg: misc.rose[100], bgHover: misc.rose[200] },
3633
- { fg: misc.blueLight[400], fgHover: misc.blueLight[500], bg: misc.blueLight[100], bgHover: misc.blueLight[200] },
3634
- { fg: misc.orange[300], fgHover: misc.orange[400], bg: misc.orange[100], bgHover: misc.orange[200] },
3635
- { fg: misc.cyan[600], fgHover: misc.cyan[700], bg: misc.cyan[100], bgHover: misc.cyan[200] },
3636
- { fg: misc.green[500], fgHover: misc.green[600], bg: misc.green[100], bgHover: misc.green[200] },
3637
- { fg: misc.pink[400], fgHover: misc.pink[500], bg: misc.pink[100], bgHover: misc.pink[200] },
3638
- { fg: misc.fuchsia[400], fgHover: misc.fuchsia[500], bg: misc.fuchsia[100], bgHover: misc.fuchsia[200] },
3639
- { 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] }
3640
3541
  ]
3641
3542
  };
3642
- var focusRings4 = {
3643
- brand: "0px 0px 0px 4px #FF78F33d",
3644
- brandShadowXs: "0px 1px 2px 0px #1018280d, 0px 0px 0px 4px #FF78F33d",
3645
- 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",
3646
3547
  gray: "0px 0px 0px 4px #a0a0a624",
3647
3548
  grayShadowXs: "0px 1px 2px 0px #1018280d, 0px 0px 0px 4px #a0a0a624",
3648
3549
  grayShadowSm: "0px 1px 3px 0px #1018281a, 0px 1px 2px 0px #1018280f, 0px 0px 0px 4px #a0a0a624",
3649
3550
  error: "0px 0px 0px 4px #f044383d",
3650
3551
  errorShadowXs: "0px 1px 2px 0px #1018280d, 0px 0px 0px 4px #f044383d"
3651
3552
  };
3652
- var forestInternalPreset = {
3653
- name: "forest-internal",
3654
- defaultVariant: "light",
3655
- variants: {
3656
- light: {
3657
- tokens: {
3658
- base,
3659
- error,
3660
- warning,
3661
- success,
3662
- info,
3663
- spacing,
3664
- radius: radius4,
3665
- shadows,
3666
- focusRings: focusRings4,
3667
- fontFamily: '"Aeonik", sans-serif',
3668
- fontFamilyMono: '"Aeonik Mono", monospace',
3669
- fontSize,
3670
- lineHeight,
3671
- fontWeight,
3672
- display,
3673
- container,
3674
- widths,
3675
- text: text4,
3676
- bg: bg4,
3677
- fg: fg4,
3678
- border: border4,
3679
- buttonColors: buttonColors4,
3680
- avatarColors: avatarColors4,
3681
- breadcrumbColors: breadcrumbColors4,
3682
- iconColors: iconColors4,
3683
- navColors: navColors4,
3684
- sliderColors: sliderColors4,
3685
- toggleColors: toggleColors4,
3686
- chartColors: chartColors4,
3687
- alpha
3688
- }
3689
- }
3690
- }
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
3691
3601
  };
3692
3602
 
3693
3603
  // src/theme/presets/forest-alkemy-plus.ts
3694
- var info2 = violet;
3695
- var highlight = magenta;
3696
- var colors2 = {
3604
+ var highlight2 = magenta;
3605
+ var colors = {
3697
3606
  base,
3698
3607
  error,
3699
3608
  warning,
3700
3609
  success,
3701
- info: info2,
3610
+ info,
3702
3611
  brand: {
3703
3612
  25: gray[25],
3704
3613
  50: gray[50],
@@ -3718,7 +3627,7 @@ var colors2 = {
3718
3627
  accent: red,
3719
3628
  gray
3720
3629
  };
3721
- var radius5 = {
3630
+ var radius3 = {
3722
3631
  ...radius,
3723
3632
  xxs: 1,
3724
3633
  xs: 2,
@@ -3730,7 +3639,7 @@ var radius5 = {
3730
3639
  "3xl": 10,
3731
3640
  "4xl": 12
3732
3641
  };
3733
- var text5 = {
3642
+ var text3 = {
3734
3643
  primary: gray[900],
3735
3644
  secondary: gray[700],
3736
3645
  secondaryHover: gray[800],
@@ -3741,19 +3650,19 @@ var text5 = {
3741
3650
  placeholder: gray[500],
3742
3651
  placeholderSubtle: gray[300],
3743
3652
  white: base.white,
3744
- brandPrimary: colors2.brand[900],
3745
- brandSecondary: colors2.brand[700],
3746
- brandTertiary: colors2.brand[600],
3747
- brandTertiaryAlt: colors2.brand[600],
3653
+ brandPrimary: colors.brand[900],
3654
+ brandSecondary: colors.brand[700],
3655
+ brandTertiary: colors.brand[600],
3656
+ brandTertiaryAlt: colors.brand[600],
3748
3657
  primaryOnBrand: base.white,
3749
- secondaryOnBrand: colors2.brand[200],
3750
- tertiaryOnBrand: colors2.brand[200],
3751
- quaternaryOnBrand: colors2.brand[300],
3658
+ secondaryOnBrand: colors.brand[200],
3659
+ tertiaryOnBrand: colors.brand[200],
3660
+ quaternaryOnBrand: colors.brand[300],
3752
3661
  errorPrimary: error[600],
3753
3662
  warningPrimary: warning[600],
3754
3663
  successPrimary: success[600]
3755
3664
  };
3756
- var bg5 = {
3665
+ var bg3 = {
3757
3666
  primary: gray[25],
3758
3667
  primaryAlt: gray[25],
3759
3668
  primaryHover: gray[100],
@@ -3769,13 +3678,13 @@ var bg5 = {
3769
3678
  disabled: gray[100],
3770
3679
  disabledSubtle: gray[50],
3771
3680
  overlay: gray[950],
3772
- brandPrimary: colors2.brand[50],
3773
- brandPrimaryAlt: colors2.brand[50],
3774
- brandSecondary: colors2.brand[100],
3775
- brandSolid: colors2.brand[600],
3776
- brandSolidHover: colors2.brand[700],
3777
- brandSection: colors2.brand[800],
3778
- 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],
3779
3688
  errorPrimary: error[50],
3780
3689
  errorSecondary: error[100],
3781
3690
  errorSolid: error[600],
@@ -3786,7 +3695,7 @@ var bg5 = {
3786
3695
  successSecondary: success[100],
3787
3696
  successSolid: success[600]
3788
3697
  };
3789
- var fg5 = {
3698
+ var fg3 = {
3790
3699
  primary: gray[900],
3791
3700
  secondary: gray[700],
3792
3701
  secondaryHover: gray[800],
@@ -3800,9 +3709,9 @@ var fg5 = {
3800
3709
  white: base.white,
3801
3710
  disabled: gray[400],
3802
3711
  disabledSubtle: gray[300],
3803
- brandPrimary: colors2.brand[600],
3804
- brandPrimaryAlt: colors2.brand[600],
3805
- brandSecondary: colors2.brand[500],
3712
+ brandPrimary: colors.brand[600],
3713
+ brandPrimaryAlt: colors.brand[600],
3714
+ brandSecondary: colors.brand[500],
3806
3715
  errorPrimary: error[600],
3807
3716
  errorSecondary: error[500],
3808
3717
  warningPrimary: warning[600],
@@ -3810,26 +3719,26 @@ var fg5 = {
3810
3719
  successPrimary: success[600],
3811
3720
  successSecondary: success[500]
3812
3721
  };
3813
- var border5 = {
3722
+ var border3 = {
3814
3723
  primary: gray[300],
3815
3724
  secondary: gray[200],
3816
3725
  tertiary: gray[100],
3817
3726
  disabled: gray[300],
3818
3727
  disabledSubtle: gray[200],
3819
3728
  brand: gray[400],
3820
- brandSolid: colors2.brand[600],
3821
- brandSolidAlt: colors2.brand[600],
3729
+ brandSolid: colors.brand[600],
3730
+ brandSolidAlt: colors.brand[600],
3822
3731
  error: error[300],
3823
3732
  errorSolid: error[600]
3824
3733
  };
3825
- var buttonColors5 = {
3734
+ var buttonColors3 = {
3826
3735
  primary: {
3827
- bg: colors2.brand[700],
3828
- bgHover: colors2.brand[800],
3736
+ bg: colors.brand[700],
3737
+ bgHover: colors.brand[800],
3829
3738
  fg: base.white,
3830
3739
  fgHover: base.white,
3831
- border: colors2.brand[700],
3832
- borderHover: colors2.brand[800]
3740
+ border: colors.brand[700],
3741
+ borderHover: colors.brand[800]
3833
3742
  },
3834
3743
  secondary: {
3835
3744
  bg: gray[900],
@@ -3841,11 +3750,11 @@ var buttonColors5 = {
3841
3750
  },
3842
3751
  secondaryColor: {
3843
3752
  bg: base.white,
3844
- bgHover: colors2.brand[50],
3845
- fg: colors2.brand[700],
3846
- fgHover: colors2.brand[800],
3847
- border: colors2.brand[300],
3848
- 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]
3849
3758
  },
3850
3759
  tertiary: {
3851
3760
  fg: gray[600],
@@ -3853,9 +3762,9 @@ var buttonColors5 = {
3853
3762
  bgHover: gray[50]
3854
3763
  },
3855
3764
  tertiaryColor: {
3856
- fg: colors2.brand[700],
3857
- fgHover: colors2.brand[800],
3858
- bgHover: colors2.brand[50]
3765
+ fg: colors.brand[700],
3766
+ fgHover: colors.brand[800],
3767
+ bgHover: colors.brand[50]
3859
3768
  },
3860
3769
  primaryError: {
3861
3770
  bg: error[600],
@@ -3879,28 +3788,21 @@ var buttonColors5 = {
3879
3788
  bgHover: error[50]
3880
3789
  }
3881
3790
  };
3882
- var avatarColors5 = {
3883
- bg: gray[100],
3884
- contrastBorder: "#00000014",
3885
- profilePhotoBorder: base.white,
3886
- focusBorder: "#a0a0a624"
3887
- // gray[400] + 14% alpha
3888
- };
3889
- var breadcrumbColors5 = {
3791
+ var breadcrumbColors3 = {
3890
3792
  fg: gray[600],
3891
3793
  fgHover: gray[700],
3892
3794
  bgHover: gray[50],
3893
- brandBgHover: colors2.brand[50],
3894
- brandFgHover: colors2.brand[700],
3795
+ brandBgHover: colors.brand[50],
3796
+ brandFgHover: colors.brand[700],
3895
3797
  iconFg: gray[500],
3896
3798
  iconFgHover: gray[700],
3897
- brandIconFgHover: colors2.brand[700]
3799
+ brandIconFgHover: colors.brand[700]
3898
3800
  };
3899
- var iconColors5 = {
3900
- fgBrand: colors2.brand[600],
3901
- fgBrandOnBrand: colors2.brand[200],
3801
+ var iconColors3 = {
3802
+ fgBrand: colors.brand[600],
3803
+ fgBrandOnBrand: colors.brand[200],
3902
3804
  featuredModernBorder: gray[200],
3903
- featuredLightFgBrand: colors2.brand[600],
3805
+ featuredLightFgBrand: colors.brand[600],
3904
3806
  featuredLightFgGray: gray[500],
3905
3807
  featuredLightFgError: error[600],
3906
3808
  featuredLightFgWarning: warning[600],
@@ -3911,20 +3813,36 @@ var iconColors5 = {
3911
3813
  featuredDarkFgWarning: base.white,
3912
3814
  featuredDarkFgSuccess: base.white
3913
3815
  };
3914
- var navColors5 = {
3915
- itemIconFg: gray[500],
3916
- itemIconFgActive: gray[700],
3917
- itemButtonIconFg: gray[500],
3918
- itemButtonIconFgActive: gray[700]
3919
- };
3920
- var sliderColors5 = {
3921
- handleBorder: colors2.brand[600],
3816
+ var sliderColors3 = {
3817
+ handleBorder: colors.brand[600],
3922
3818
  handleBg: base.white
3923
3819
  };
3924
- var toggleColors5 = {
3925
- 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"
3926
3844
  };
3927
- var chartColors5 = {
3845
+ var chartColors3 = {
3928
3846
  axisFg: gray[100],
3929
3847
  gridlineFg: gray[100],
3930
3848
  labelFg: gray[600],
@@ -3934,7 +3852,7 @@ var chartColors5 = {
3934
3852
  tooltipBg: gray[950],
3935
3853
  tooltipFg: base.white,
3936
3854
  crosshairFg: gray[500],
3937
- legendFg: text5.tertiary,
3855
+ legendFg: text3.tertiary,
3938
3856
  series: [
3939
3857
  // Brand accents lead — violet + magenta anchor the palette
3940
3858
  { fg: violet[500], fgHover: violet[600], bg: violet[100], bgHover: violet[200] },
@@ -3953,79 +3871,47 @@ var chartColors5 = {
3953
3871
  { fg: misc.pink[400], fgHover: misc.pink[500], bg: misc.pink[100], bgHover: misc.pink[200] }
3954
3872
  ]
3955
3873
  };
3956
- var letterSpacing = {
3957
- h1: "-0.02em",
3958
- h2: "-0.02em",
3959
- h3: "-0.02em",
3960
- h4: "-0.02em",
3961
- h5: "-0.02em",
3962
- h6: "-0.02em",
3963
- subtitle1: "0.02em",
3964
- subtitle2: "0.02em",
3965
- body1: "0.02em",
3966
- body2: "0.02em",
3967
- caption: "0.02em",
3968
- overline: "0.02em",
3969
- button: "0.02em"
3970
- };
3971
- var focusRings5 = {
3972
- brand: "0px 0px 0px 4px #4040403d",
3973
- brandShadowXs: "0px 1px 2px 0px #1018280d, 0px 0px 0px 4px #4040403d",
3974
- brandShadowSm: "0px 1px 3px 0px #1018281a, 0px 1px 2px 0px #1018280f, 0px 0px 0px 4px #4040403d",
3975
- gray: "0px 0px 0px 4px #a0a0a624",
3976
- grayShadowXs: "0px 1px 2px 0px #1018280d, 0px 0px 0px 4px #a0a0a624",
3977
- grayShadowSm: "0px 1px 3px 0px #1018281a, 0px 1px 2px 0px #1018280f, 0px 0px 0px 4px #a0a0a624",
3978
- error: "0px 0px 0px 4px #f044383d",
3979
- errorShadowXs: "0px 1px 2px 0px #1018280d, 0px 0px 0px 4px #f044383d"
3980
- };
3981
3874
  var forestAlkemyPlusPreset = {
3982
3875
  name: "forest-alkemy+",
3983
- defaultVariant: "light",
3984
- variants: {
3985
- light: {
3986
- tokens: {
3987
- base,
3988
- error,
3989
- warning,
3990
- success,
3991
- info: info2,
3992
- spacing,
3993
- radius: radius5,
3994
- shadows,
3995
- focusRings: focusRings5,
3996
- fontFamily: '"Aeonik", sans-serif',
3997
- fontFamilyMono: '"Aeonik Mono", monospace',
3998
- fontSize,
3999
- lineHeight,
4000
- fontWeight,
4001
- display,
4002
- container,
4003
- widths,
4004
- text: text5,
4005
- bg: bg5,
4006
- fg: fg5,
4007
- border: border5,
4008
- buttonColors: buttonColors5,
4009
- avatarColors: avatarColors5,
4010
- breadcrumbColors: breadcrumbColors5,
4011
- iconColors: iconColors5,
4012
- navColors: navColors5,
4013
- sliderColors: sliderColors5,
4014
- toggleColors: toggleColors5,
4015
- chartColors: chartColors5,
4016
- alpha,
4017
- letterSpacing,
4018
- highlight
4019
- }
4020
- }
4021
- }
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
4022
3911
  };
4023
3912
 
4024
3913
  // src/theme/presets/index.ts
4025
3914
  var presetRegistry = /* @__PURE__ */ new Map();
4026
- presetRegistry.set(forestExternalPreset.name, forestExternalPreset);
4027
- presetRegistry.set(forestAgencyPreset.name, forestAgencyPreset);
4028
- presetRegistry.set(forestInternalPreset.name, forestInternalPreset);
4029
3915
  presetRegistry.set(forestAlkemyPlusPreset.name, forestAlkemyPlusPreset);
4030
3916
  function getPreset(name) {
4031
3917
  return presetRegistry.get(name);
@@ -4038,11 +3924,13 @@ function getAvailablePresets() {
4038
3924
  }
4039
3925
 
4040
3926
  // src/theme/index.ts
4041
- var agencyTokens = forestAgencyPreset.variants.light.tokens;
4042
- var forestTheme = buildTheme(agencyTokens);
4043
- var forestThemeOptions = buildThemeOptions(agencyTokens);
3927
+ var { tokens, tokensDark } = forestAlkemyPlusPreset;
3928
+ var forestTheme = buildTheme(tokens, tokensDark);
3929
+ var forestThemeOptions = buildThemeOptions(tokens, tokensDark);
4044
3930
 
4045
3931
  export {
3932
+ buildThemeOptions,
3933
+ buildTheme,
4046
3934
  violet,
4047
3935
  magenta,
4048
3936
  gray,
@@ -4078,11 +3966,6 @@ export {
4078
3966
  toggleColors,
4079
3967
  chartColors,
4080
3968
  alpha,
4081
- buildThemeOptions,
4082
- buildTheme,
4083
- forestExternalPreset,
4084
- forestAgencyPreset,
4085
- forestInternalPreset,
4086
3969
  forestAlkemyPlusPreset,
4087
3970
  getPreset,
4088
3971
  registerPreset,
@@ -4090,4 +3973,4 @@ export {
4090
3973
  forestTheme,
4091
3974
  forestThemeOptions
4092
3975
  };
4093
- //# sourceMappingURL=chunk-2XQSGP7X.mjs.map
3976
+ //# sourceMappingURL=chunk-XJYBU6LC.mjs.map