@matteoaliano/forest-ui 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/theme.js CHANGED
@@ -198,1094 +198,1176 @@ var widths = {
198
198
  };
199
199
 
200
200
  // src/theme/palette.ts
201
- var palette = {
202
- primary: {
203
- main: colors.brand[600],
204
- light: colors.brand[400],
205
- dark: colors.brand[700],
206
- contrastText: colors.base.white
207
- },
208
- secondary: {
209
- main: colors.gray[600],
210
- light: colors.gray[400],
211
- dark: colors.gray[700],
212
- contrastText: colors.base.white
213
- },
214
- error: {
215
- main: colors.error[600],
216
- light: colors.error[300],
217
- dark: colors.error[700],
218
- contrastText: colors.base.white
219
- },
220
- warning: {
221
- main: colors.warning[600],
222
- light: colors.warning[300],
223
- dark: colors.warning[700],
224
- contrastText: colors.base.white
225
- },
226
- success: {
227
- main: colors.success[600],
228
- light: colors.success[300],
229
- dark: colors.success[700],
230
- contrastText: colors.base.white
231
- },
232
- info: {
233
- main: colors.blue[600],
234
- light: colors.blue[300],
235
- dark: colors.blue[700],
236
- contrastText: colors.base.white
237
- },
238
- background: {
239
- default: colors.base.white,
240
- paper: colors.base.white
241
- },
242
- text: {
243
- primary: colors.gray[900],
244
- secondary: colors.gray[700],
245
- disabled: colors.gray[500]
246
- },
247
- divider: colors.gray[200],
248
- action: {
249
- active: colors.gray[600],
250
- hover: colors.gray[50],
251
- selected: colors.brand[50],
252
- disabled: colors.gray[400],
253
- disabledBackground: colors.gray[100]
254
- }
255
- };
201
+ function buildPalette(tokens) {
202
+ const { colors: colors2 } = tokens;
203
+ return {
204
+ primary: {
205
+ main: colors2.brand[600],
206
+ light: colors2.brand[400],
207
+ dark: colors2.brand[700],
208
+ contrastText: colors2.base.white
209
+ },
210
+ secondary: {
211
+ main: colors2.gray[600],
212
+ light: colors2.gray[400],
213
+ dark: colors2.gray[700],
214
+ contrastText: colors2.base.white
215
+ },
216
+ error: {
217
+ main: colors2.error[600],
218
+ light: colors2.error[300],
219
+ dark: colors2.error[700],
220
+ contrastText: colors2.base.white
221
+ },
222
+ warning: {
223
+ main: colors2.warning[600],
224
+ light: colors2.warning[300],
225
+ dark: colors2.warning[700],
226
+ contrastText: colors2.base.white
227
+ },
228
+ success: {
229
+ main: colors2.success[600],
230
+ light: colors2.success[300],
231
+ dark: colors2.success[700],
232
+ contrastText: colors2.base.white
233
+ },
234
+ info: {
235
+ main: colors2.blue[600],
236
+ light: colors2.blue[300],
237
+ dark: colors2.blue[700],
238
+ contrastText: colors2.base.white
239
+ },
240
+ background: {
241
+ default: colors2.base.white,
242
+ paper: colors2.base.white
243
+ },
244
+ text: {
245
+ primary: colors2.gray[900],
246
+ secondary: colors2.gray[700],
247
+ disabled: colors2.gray[500]
248
+ },
249
+ divider: colors2.gray[200],
250
+ action: {
251
+ active: colors2.gray[600],
252
+ hover: colors2.gray[50],
253
+ selected: colors2.brand[50],
254
+ disabled: colors2.gray[400],
255
+ disabledBackground: colors2.gray[100]
256
+ }
257
+ };
258
+ }
259
+ var palette = buildPalette({
260
+ colors
261
+ });
256
262
 
257
263
  // src/theme/typography.ts
258
- var typography = {
264
+ function buildTypography(tokens) {
265
+ const { fontFamily: fontFamily2, display: display2, fontSize: fontSize2, lineHeight: lineHeight2, fontWeight: fontWeight2 } = tokens;
266
+ return {
267
+ fontFamily: fontFamily2,
268
+ fontWeightRegular: fontWeight2.regular,
269
+ fontWeightMedium: fontWeight2.medium,
270
+ fontWeightBold: fontWeight2.bold,
271
+ // Display styles → MUI headings
272
+ h1: {
273
+ fontSize: display2.xl.fontSize,
274
+ lineHeight: display2.xl.lineHeight,
275
+ letterSpacing: display2.xl.letterSpacing,
276
+ fontWeight: fontWeight2.semibold
277
+ },
278
+ h2: {
279
+ fontSize: display2.lg.fontSize,
280
+ lineHeight: display2.lg.lineHeight,
281
+ letterSpacing: display2.lg.letterSpacing,
282
+ fontWeight: fontWeight2.semibold
283
+ },
284
+ h3: {
285
+ fontSize: display2.md.fontSize,
286
+ lineHeight: display2.md.lineHeight,
287
+ letterSpacing: display2.md.letterSpacing,
288
+ fontWeight: fontWeight2.semibold
289
+ },
290
+ h4: {
291
+ fontSize: display2.sm.fontSize,
292
+ lineHeight: display2.sm.lineHeight,
293
+ fontWeight: fontWeight2.semibold
294
+ },
295
+ h5: {
296
+ fontSize: display2.xs.fontSize,
297
+ lineHeight: display2.xs.lineHeight,
298
+ fontWeight: fontWeight2.semibold
299
+ },
300
+ h6: {
301
+ fontSize: fontSize2.xl,
302
+ lineHeight: lineHeight2.xl,
303
+ fontWeight: fontWeight2.semibold
304
+ },
305
+ subtitle1: {
306
+ fontSize: fontSize2.lg,
307
+ lineHeight: lineHeight2.lg,
308
+ fontWeight: fontWeight2.medium
309
+ },
310
+ subtitle2: {
311
+ fontSize: fontSize2.md,
312
+ lineHeight: lineHeight2.md,
313
+ fontWeight: fontWeight2.medium
314
+ },
315
+ body1: {
316
+ fontSize: fontSize2.md,
317
+ lineHeight: lineHeight2.md,
318
+ fontWeight: fontWeight2.regular
319
+ },
320
+ body2: {
321
+ fontSize: fontSize2.sm,
322
+ lineHeight: lineHeight2.sm,
323
+ fontWeight: fontWeight2.regular
324
+ },
325
+ caption: {
326
+ fontSize: fontSize2.xs,
327
+ lineHeight: lineHeight2.xs,
328
+ fontWeight: fontWeight2.regular
329
+ },
330
+ overline: {
331
+ fontSize: fontSize2.xxs,
332
+ lineHeight: lineHeight2.xxs,
333
+ fontWeight: fontWeight2.medium,
334
+ textTransform: "uppercase",
335
+ letterSpacing: "0.08em"
336
+ },
337
+ button: {
338
+ fontSize: fontSize2.sm,
339
+ lineHeight: lineHeight2.sm,
340
+ fontWeight: fontWeight2.semibold,
341
+ textTransform: "none"
342
+ }
343
+ };
344
+ }
345
+ var typography = buildTypography({
259
346
  fontFamily,
260
- fontWeightRegular: fontWeight.regular,
261
- fontWeightMedium: fontWeight.medium,
262
- fontWeightBold: fontWeight.bold,
263
- // Display styles → MUI headings
264
- h1: {
265
- fontSize: display.xl.fontSize,
266
- lineHeight: display.xl.lineHeight,
267
- letterSpacing: display.xl.letterSpacing,
268
- fontWeight: fontWeight.semibold
269
- },
270
- h2: {
271
- fontSize: display.lg.fontSize,
272
- lineHeight: display.lg.lineHeight,
273
- letterSpacing: display.lg.letterSpacing,
274
- fontWeight: fontWeight.semibold
275
- },
276
- h3: {
277
- fontSize: display.md.fontSize,
278
- lineHeight: display.md.lineHeight,
279
- letterSpacing: display.md.letterSpacing,
280
- fontWeight: fontWeight.semibold
281
- },
282
- h4: {
283
- fontSize: display.sm.fontSize,
284
- lineHeight: display.sm.lineHeight,
285
- fontWeight: fontWeight.semibold
286
- },
287
- h5: {
288
- fontSize: display.xs.fontSize,
289
- lineHeight: display.xs.lineHeight,
290
- fontWeight: fontWeight.semibold
291
- },
292
- h6: {
293
- fontSize: fontSize.xl,
294
- lineHeight: lineHeight.xl,
295
- fontWeight: fontWeight.semibold
296
- },
297
- subtitle1: {
298
- fontSize: fontSize.lg,
299
- lineHeight: lineHeight.lg,
300
- fontWeight: fontWeight.medium
301
- },
302
- subtitle2: {
303
- fontSize: fontSize.md,
304
- lineHeight: lineHeight.md,
305
- fontWeight: fontWeight.medium
306
- },
307
- body1: {
308
- fontSize: fontSize.md,
309
- lineHeight: lineHeight.md,
310
- fontWeight: fontWeight.regular
311
- },
312
- body2: {
313
- fontSize: fontSize.sm,
314
- lineHeight: lineHeight.sm,
315
- fontWeight: fontWeight.regular
316
- },
317
- caption: {
318
- fontSize: fontSize.xs,
319
- lineHeight: lineHeight.xs,
320
- fontWeight: fontWeight.regular
321
- },
322
- overline: {
323
- fontSize: fontSize.xxs,
324
- lineHeight: lineHeight.xxs,
325
- fontWeight: fontWeight.medium,
326
- textTransform: "uppercase",
327
- letterSpacing: "0.08em"
328
- },
329
- button: {
330
- fontSize: fontSize.sm,
331
- lineHeight: lineHeight.sm,
332
- fontWeight: fontWeight.semibold,
333
- textTransform: "none"
334
- }
335
- };
347
+ display,
348
+ fontSize,
349
+ lineHeight,
350
+ fontWeight
351
+ });
336
352
 
337
353
  // src/theme/components.ts
338
- var components = {
339
- // ─── Button ─────────────────────────────────────────────────────
340
- MuiButton: {
341
- defaultProps: {
342
- disableElevation: true
343
- },
344
- styleOverrides: {
345
- root: {
346
- borderRadius: radius.md,
347
- fontWeight: 600,
348
- "&:focus-visible": {
349
- boxShadow: focusRings.brandShadowXs
350
- }
351
- },
352
- sizeLarge: {
353
- padding: "12px 20px",
354
- fontSize: 16,
355
- lineHeight: "24px"
356
- },
357
- sizeMedium: {
358
- padding: "10px 16px",
359
- fontSize: 14,
360
- lineHeight: "20px"
361
- },
362
- sizeSmall: {
363
- padding: "8px 14px",
364
- fontSize: 14,
365
- lineHeight: "20px"
354
+ function buildComponents(tokens) {
355
+ const { colors: colors2, radius: radius2, focusRings: focusRings2, shadows: tokenShadows } = tokens;
356
+ return {
357
+ // ─── Button ─────────────────────────────────────────────────────
358
+ MuiButton: {
359
+ defaultProps: {
360
+ disableElevation: true
366
361
  },
367
- containedPrimary: {
368
- backgroundColor: colors.brand[600],
369
- "&:hover": {
370
- backgroundColor: colors.brand[700]
371
- }
372
- },
373
- outlinedPrimary: {
374
- borderColor: colors.brand[300],
375
- color: colors.brand[700],
376
- "&:hover": {
377
- backgroundColor: colors.brand[50],
378
- borderColor: colors.brand[300]
379
- }
380
- },
381
- textPrimary: {
382
- color: colors.brand[700],
383
- "&:hover": {
384
- backgroundColor: colors.brand[50]
362
+ styleOverrides: {
363
+ root: {
364
+ borderRadius: radius2.md,
365
+ fontWeight: 600,
366
+ "&:focus-visible": {
367
+ boxShadow: focusRings2.brandShadowXs
368
+ }
369
+ },
370
+ sizeLarge: {
371
+ padding: "12px 20px",
372
+ fontSize: 16,
373
+ lineHeight: "24px"
374
+ },
375
+ sizeMedium: {
376
+ padding: "10px 16px",
377
+ fontSize: 14,
378
+ lineHeight: "20px"
379
+ },
380
+ sizeSmall: {
381
+ padding: "8px 14px",
382
+ fontSize: 14,
383
+ lineHeight: "20px"
384
+ },
385
+ containedPrimary: {
386
+ backgroundColor: colors2.brand[600],
387
+ "&:hover": {
388
+ backgroundColor: colors2.brand[700]
389
+ }
390
+ },
391
+ outlinedPrimary: {
392
+ borderColor: colors2.brand[300],
393
+ color: colors2.brand[700],
394
+ "&:hover": {
395
+ backgroundColor: colors2.brand[50],
396
+ borderColor: colors2.brand[300]
397
+ }
398
+ },
399
+ textPrimary: {
400
+ color: colors2.brand[700],
401
+ "&:hover": {
402
+ backgroundColor: colors2.brand[50]
403
+ }
385
404
  }
386
405
  }
387
- }
388
- },
389
- // ─── Button Group ───────────────────────────────────────────────
390
- MuiButtonGroup: {
391
- defaultProps: {
392
- disableElevation: true
393
- },
394
- styleOverrides: {
395
- root: {
396
- borderRadius: radius.md
406
+ },
407
+ // ─── Button Group ───────────────────────────────────────────────
408
+ MuiButtonGroup: {
409
+ defaultProps: {
410
+ disableElevation: true
397
411
  },
398
- grouped: {
399
- "&:not(:last-of-type)": {
400
- borderRight: `1px solid ${colors.brand[700]}`
412
+ styleOverrides: {
413
+ root: {
414
+ borderRadius: radius2.md
415
+ },
416
+ grouped: {
417
+ "&:not(:last-of-type)": {
418
+ borderRight: `1px solid ${colors2.brand[700]}`
419
+ }
401
420
  }
402
421
  }
403
- }
404
- },
405
- // ─── FAB ────────────────────────────────────────────────────────
406
- MuiFab: {
407
- styleOverrides: {
408
- root: {
409
- boxShadow: shadows.md,
410
- "&:hover": {
411
- boxShadow: shadows.lg
422
+ },
423
+ // ─── FAB ────────────────────────────────────────────────────────
424
+ MuiFab: {
425
+ styleOverrides: {
426
+ root: {
427
+ boxShadow: tokenShadows.md,
428
+ "&:hover": {
429
+ boxShadow: tokenShadows.lg
430
+ },
431
+ "&:focus-visible": {
432
+ boxShadow: focusRings2.brandShadowSm
433
+ }
412
434
  },
413
- "&:focus-visible": {
414
- boxShadow: focusRings.brandShadowSm
415
- }
416
- },
417
- primary: {
418
- backgroundColor: colors.brand[600],
419
- "&:hover": {
420
- backgroundColor: colors.brand[700]
435
+ primary: {
436
+ backgroundColor: colors2.brand[600],
437
+ "&:hover": {
438
+ backgroundColor: colors2.brand[700]
439
+ }
421
440
  }
422
441
  }
423
- }
424
- },
425
- // ─── TextField / Input ──────────────────────────────────────────
426
- MuiTextField: {
427
- defaultProps: {
428
- variant: "outlined",
429
- size: "small"
430
- }
431
- },
432
- MuiOutlinedInput: {
433
- styleOverrides: {
434
- root: {
435
- borderRadius: radius.md,
436
- "&:hover .MuiOutlinedInput-notchedOutline": {
437
- borderColor: colors.brand[300]
442
+ },
443
+ // ─── TextField / Input ──────────────────────────────────────────
444
+ MuiTextField: {
445
+ defaultProps: {
446
+ variant: "outlined",
447
+ size: "small"
448
+ }
449
+ },
450
+ MuiOutlinedInput: {
451
+ styleOverrides: {
452
+ root: {
453
+ borderRadius: radius2.md,
454
+ "&:hover .MuiOutlinedInput-notchedOutline": {
455
+ borderColor: colors2.brand[300]
456
+ },
457
+ "&.Mui-focused .MuiOutlinedInput-notchedOutline": {
458
+ borderColor: colors2.brand[600],
459
+ borderWidth: 1,
460
+ boxShadow: "none"
461
+ },
462
+ "&.Mui-error .MuiOutlinedInput-notchedOutline": {
463
+ borderColor: colors2.error[300]
464
+ },
465
+ "&.Mui-error.Mui-focused .MuiOutlinedInput-notchedOutline": {
466
+ borderColor: colors2.error[600],
467
+ boxShadow: "none"
468
+ }
438
469
  },
439
- "&.Mui-focused .MuiOutlinedInput-notchedOutline": {
440
- borderColor: colors.brand[600],
441
- borderWidth: 1,
442
- boxShadow: focusRings.brand
470
+ notchedOutline: {
471
+ borderColor: colors2.gray[300]
443
472
  },
444
- "&.Mui-error .MuiOutlinedInput-notchedOutline": {
445
- borderColor: colors.error[300]
473
+ input: {
474
+ padding: "10px 14px",
475
+ fontSize: 16,
476
+ lineHeight: "24px",
477
+ "&::placeholder": {
478
+ color: colors2.gray[500],
479
+ opacity: 1
480
+ }
446
481
  },
447
- "&.Mui-error.Mui-focused .MuiOutlinedInput-notchedOutline": {
448
- borderColor: colors.error[600],
449
- boxShadow: focusRings.error
450
- }
451
- },
452
- notchedOutline: {
453
- borderColor: colors.gray[300]
454
- },
455
- input: {
456
- padding: "10px 14px",
457
- fontSize: 16,
458
- lineHeight: "24px",
459
- "&::placeholder": {
460
- color: colors.gray[500],
461
- opacity: 1
482
+ inputSizeSmall: {
483
+ padding: "8px 12px",
484
+ fontSize: 14,
485
+ lineHeight: "20px"
462
486
  }
463
- },
464
- inputSizeSmall: {
465
- padding: "8px 12px",
466
- fontSize: 14,
467
- lineHeight: "20px"
468
487
  }
469
- }
470
- },
471
- MuiInputLabel: {
472
- styleOverrides: {
473
- root: {
474
- fontSize: 14,
475
- fontWeight: 500,
476
- color: colors.gray[700],
477
- "&.Mui-focused": {
478
- color: colors.gray[700]
479
- },
480
- "&.Mui-error": {
481
- color: colors.error[600]
488
+ },
489
+ MuiInputLabel: {
490
+ styleOverrides: {
491
+ root: {
492
+ fontSize: 14,
493
+ fontWeight: 500,
494
+ color: colors2.gray[700],
495
+ "&.Mui-focused": {
496
+ color: colors2.gray[700]
497
+ },
498
+ "&.Mui-error": {
499
+ color: colors2.error[600]
500
+ }
482
501
  }
483
502
  }
484
- }
485
- },
486
- MuiFormHelperText: {
487
- styleOverrides: {
488
- root: {
489
- fontSize: 14,
490
- lineHeight: "20px",
491
- marginTop: 6,
492
- marginLeft: 0,
493
- "&.Mui-error": {
494
- color: colors.error[600]
503
+ },
504
+ MuiFormHelperText: {
505
+ styleOverrides: {
506
+ root: {
507
+ fontSize: 14,
508
+ lineHeight: "20px",
509
+ marginTop: 6,
510
+ marginLeft: 0,
511
+ "&.Mui-error": {
512
+ color: colors2.error[600]
513
+ }
495
514
  }
496
515
  }
497
- }
498
- },
499
- // ─── Select ─────────────────────────────────────────────────────
500
- MuiSelect: {
501
- defaultProps: {
502
- size: "small"
503
- },
504
- styleOverrides: {
505
- icon: {
506
- color: colors.gray[500]
507
- }
508
- }
509
- },
510
- // ─── Autocomplete ───────────────────────────────────────────────
511
- MuiAutocomplete: {
512
- styleOverrides: {
513
- paper: {
514
- borderRadius: radius.md,
515
- boxShadow: shadows.lg,
516
- border: `1px solid ${colors.gray[200]}`,
517
- marginTop: 4
516
+ },
517
+ // ─── Select ─────────────────────────────────────────────────────
518
+ MuiSelect: {
519
+ defaultProps: {
520
+ size: "small"
518
521
  },
519
- option: {
520
- fontSize: 16,
521
- lineHeight: "24px",
522
- padding: "10px 14px",
523
- "&.Mui-focused": {
524
- backgroundColor: colors.gray[50]
525
- },
526
- '&[aria-selected="true"]': {
527
- backgroundColor: colors.brand[50]
522
+ styleOverrides: {
523
+ icon: {
524
+ color: colors2.gray[500]
528
525
  }
529
- },
530
- listbox: {
531
- padding: 4
532
526
  }
533
- }
534
- },
535
- // ─── Checkbox ───────────────────────────────────────────────────
536
- MuiCheckbox: {
537
- defaultProps: {
538
- disableRipple: true
539
- },
540
- styleOverrides: {
541
- root: {
542
- color: colors.gray[300],
543
- borderRadius: radius.xs,
544
- padding: 0,
545
- width: 20,
546
- height: 20,
547
- "&:hover": {
548
- backgroundColor: "transparent",
549
- color: colors.brand[600]
550
- },
551
- "&.Mui-checked": {
552
- color: colors.brand[600]
553
- },
554
- "&.Mui-checked:hover": {
555
- color: colors.brand[700]
527
+ },
528
+ // ─── Autocomplete ───────────────────────────────────────────────
529
+ MuiAutocomplete: {
530
+ styleOverrides: {
531
+ paper: {
532
+ borderRadius: radius2.md,
533
+ boxShadow: tokenShadows.lg,
534
+ border: `1px solid ${colors2.gray[200]}`,
535
+ marginTop: 4
556
536
  },
557
- "&.Mui-focusVisible": {
558
- outline: "none",
559
- boxShadow: focusRings.brand,
560
- borderRadius: radius.xs
537
+ option: {
538
+ fontSize: 16,
539
+ lineHeight: "24px",
540
+ padding: "10px 14px",
541
+ "&.Mui-focused": {
542
+ backgroundColor: colors2.gray[50]
543
+ },
544
+ '&[aria-selected="true"]': {
545
+ backgroundColor: colors2.brand[50]
546
+ }
561
547
  },
562
- "&.Mui-disabled": {
563
- color: colors.gray[300]
548
+ listbox: {
549
+ padding: 4
564
550
  }
565
551
  }
566
- }
567
- },
568
- // ─── Radio ──────────────────────────────────────────────────────
569
- MuiRadio: {
570
- defaultProps: {
571
- disableRipple: true
572
- },
573
- styleOverrides: {
574
- root: {
575
- color: colors.gray[300],
576
- padding: 0,
577
- "&:hover": {
578
- backgroundColor: "transparent",
579
- color: colors.brand[600]
580
- },
581
- "&.Mui-checked": {
582
- color: colors.brand[600]
583
- },
584
- "&.Mui-checked:hover": {
585
- color: colors.brand[700]
586
- },
587
- "&.Mui-focusVisible": {
588
- outline: "none",
589
- boxShadow: focusRings.brand,
590
- borderRadius: radius.full
591
- },
592
- "&.Mui-disabled": {
593
- color: colors.gray[300]
552
+ },
553
+ // ─── Checkbox ───────────────────────────────────────────────────
554
+ MuiCheckbox: {
555
+ defaultProps: {
556
+ disableRipple: true
557
+ },
558
+ styleOverrides: {
559
+ root: {
560
+ color: colors2.gray[300],
561
+ borderRadius: radius2.xs,
562
+ padding: 0,
563
+ width: 20,
564
+ height: 20,
565
+ "&:hover": {
566
+ backgroundColor: "transparent",
567
+ color: colors2.brand[600]
568
+ },
569
+ "&.Mui-checked": {
570
+ color: colors2.brand[600]
571
+ },
572
+ "&.Mui-checked:hover": {
573
+ color: colors2.brand[700]
574
+ },
575
+ "&.Mui-focusVisible": {
576
+ outline: "none",
577
+ boxShadow: focusRings2.brand,
578
+ borderRadius: radius2.xs
579
+ },
580
+ "&.Mui-disabled": {
581
+ color: colors2.gray[300]
582
+ }
594
583
  }
595
584
  }
596
- }
597
- },
598
- // ─── Switch ─────────────────────────────────────────────────────
599
- MuiSwitch: {
600
- defaultProps: {
601
- disableRipple: true
602
- },
603
- styleOverrides: {
604
- root: {
605
- width: 44,
606
- height: 24,
607
- padding: 0
585
+ },
586
+ // ─── Radio ──────────────────────────────────────────────────────
587
+ MuiRadio: {
588
+ defaultProps: {
589
+ disableRipple: true
608
590
  },
609
- switchBase: {
610
- padding: 2,
611
- "&.Mui-checked": {
612
- transform: "translateX(20px)",
613
- color: colors.base.white,
614
- "& + .MuiSwitch-track": {
615
- backgroundColor: colors.brand[600],
616
- opacity: 1
591
+ styleOverrides: {
592
+ root: {
593
+ color: colors2.gray[300],
594
+ padding: 0,
595
+ "&:hover": {
596
+ backgroundColor: "transparent",
597
+ color: colors2.brand[600]
598
+ },
599
+ "&.Mui-checked": {
600
+ color: colors2.brand[600]
601
+ },
602
+ "&.Mui-checked:hover": {
603
+ color: colors2.brand[700]
604
+ },
605
+ "&.Mui-focusVisible": {
606
+ outline: "none",
607
+ boxShadow: focusRings2.brand,
608
+ borderRadius: radius2.full
609
+ },
610
+ "&.Mui-disabled": {
611
+ color: colors2.gray[300]
617
612
  }
613
+ }
614
+ }
615
+ },
616
+ // ─── Switch ─────────────────────────────────────────────────────
617
+ MuiSwitch: {
618
+ defaultProps: {
619
+ disableRipple: true
620
+ },
621
+ styleOverrides: {
622
+ root: {
623
+ width: 44,
624
+ height: 24,
625
+ padding: 0
618
626
  },
619
- "&.Mui-checked:hover + .MuiSwitch-track": {
620
- backgroundColor: colors.brand[700]
621
- },
622
- "&.Mui-focusVisible .MuiSwitch-thumb": {
623
- boxShadow: focusRings.brand
627
+ switchBase: {
628
+ padding: 2,
629
+ "&.Mui-checked": {
630
+ transform: "translateX(20px)",
631
+ color: colors2.base.white,
632
+ "& + .MuiSwitch-track": {
633
+ backgroundColor: colors2.brand[600],
634
+ opacity: 1
635
+ }
636
+ },
637
+ "&.Mui-checked:hover + .MuiSwitch-track": {
638
+ backgroundColor: colors2.brand[700]
639
+ },
640
+ "&.Mui-focusVisible .MuiSwitch-thumb": {
641
+ boxShadow: focusRings2.brand
642
+ },
643
+ "&.Mui-disabled .MuiSwitch-thumb": {
644
+ color: colors2.gray[100]
645
+ },
646
+ "&.Mui-disabled + .MuiSwitch-track": {
647
+ opacity: 0.5
648
+ }
624
649
  },
625
- "&.Mui-disabled .MuiSwitch-thumb": {
626
- color: colors.gray[100]
650
+ thumb: {
651
+ width: 20,
652
+ height: 20,
653
+ boxShadow: "0px 1px 2px 0px #1018280d"
627
654
  },
628
- "&.Mui-disabled + .MuiSwitch-track": {
629
- opacity: 0.5
655
+ track: {
656
+ borderRadius: radius2.full,
657
+ backgroundColor: colors2.gray[200],
658
+ opacity: 1
630
659
  }
631
- },
632
- thumb: {
633
- width: 20,
634
- height: 20,
635
- boxShadow: "0px 1px 2px 0px #1018280d"
636
- },
637
- track: {
638
- borderRadius: radius.full,
639
- backgroundColor: colors.gray[200],
640
- opacity: 1
641
660
  }
642
- }
643
- },
644
- // ─── Toggle Button ─────────────────────────────────────────────
645
- MuiToggleButton: {
646
- styleOverrides: {
647
- root: {
648
- borderRadius: radius.md,
649
- borderColor: colors.gray[300],
650
- color: colors.gray[700],
651
- fontSize: 14,
652
- fontWeight: 600,
653
- lineHeight: "20px",
654
- padding: "8px 14px",
655
- textTransform: "none",
656
- "&:hover": {
657
- backgroundColor: colors.gray[50]
658
- },
659
- "&.Mui-selected": {
660
- backgroundColor: colors.brand[50],
661
- color: colors.brand[700],
662
- borderColor: colors.brand[300],
661
+ },
662
+ // ─── Toggle Button ─────────────────────────────────────────────
663
+ MuiToggleButton: {
664
+ styleOverrides: {
665
+ root: {
666
+ borderRadius: radius2.md,
667
+ borderColor: colors2.gray[300],
668
+ color: colors2.gray[700],
669
+ fontSize: 14,
670
+ fontWeight: 600,
671
+ lineHeight: "20px",
672
+ padding: "8px 14px",
673
+ textTransform: "none",
663
674
  "&:hover": {
664
- backgroundColor: colors.brand[100]
675
+ backgroundColor: colors2.gray[50]
676
+ },
677
+ "&.Mui-selected": {
678
+ backgroundColor: colors2.brand[50],
679
+ color: colors2.brand[700],
680
+ borderColor: colors2.brand[300],
681
+ "&:hover": {
682
+ backgroundColor: colors2.brand[100]
683
+ }
684
+ },
685
+ "&:focus-visible": {
686
+ boxShadow: focusRings2.brandShadowXs
665
687
  }
666
- },
667
- "&:focus-visible": {
668
- boxShadow: focusRings.brandShadowXs
669
688
  }
670
689
  }
671
- }
672
- },
673
- MuiToggleButtonGroup: {
674
- styleOverrides: {
675
- root: {
676
- borderRadius: radius.md
677
- },
678
- grouped: {
679
- "&:not(:first-of-type)": {
680
- borderRadius: radius.md,
681
- marginLeft: -1
690
+ },
691
+ MuiToggleButtonGroup: {
692
+ styleOverrides: {
693
+ root: {
694
+ borderRadius: radius2.md
682
695
  },
683
- "&:first-of-type": {
684
- borderRadius: radius.md
696
+ grouped: {
697
+ "&:not(:first-of-type)": {
698
+ borderRadius: radius2.md,
699
+ marginLeft: -1
700
+ },
701
+ "&:first-of-type": {
702
+ borderRadius: radius2.md
703
+ }
685
704
  }
686
705
  }
687
- }
688
- },
689
- // ─── Card ───────────────────────────────────────────────────────
690
- MuiCard: {
691
- defaultProps: {
692
- elevation: 0
693
- },
694
- styleOverrides: {
695
- root: {
696
- borderRadius: radius.xl,
697
- border: `1px solid ${colors.gray[200]}`,
698
- backgroundColor: colors.base.white,
699
- overflow: "hidden"
706
+ },
707
+ // ─── Card ───────────────────────────────────────────────────────
708
+ MuiCard: {
709
+ defaultProps: {
710
+ elevation: 0
711
+ },
712
+ styleOverrides: {
713
+ root: {
714
+ borderRadius: radius2.xl,
715
+ border: `1px solid ${colors2.gray[200]}`,
716
+ backgroundColor: colors2.base.white,
717
+ overflow: "hidden"
718
+ }
700
719
  }
701
- }
702
- },
703
- MuiCardContent: {
704
- styleOverrides: {
705
- root: {
706
- padding: "24px",
707
- "&:last-child": {
708
- paddingBottom: "24px"
720
+ },
721
+ MuiCardContent: {
722
+ styleOverrides: {
723
+ root: {
724
+ padding: "24px",
725
+ "&:last-child": {
726
+ paddingBottom: "24px"
727
+ }
709
728
  }
710
729
  }
711
- }
712
- },
713
- MuiCardHeader: {
714
- styleOverrides: {
715
- root: {
716
- padding: "24px 24px 0 24px"
717
- },
718
- title: {
719
- fontSize: 18,
720
- fontWeight: 600,
721
- lineHeight: "28px"
722
- },
723
- subheader: {
724
- fontSize: 14,
725
- lineHeight: "20px",
726
- marginTop: 4
727
- },
728
- action: {
729
- marginTop: -4,
730
- marginRight: -4
730
+ },
731
+ MuiCardHeader: {
732
+ styleOverrides: {
733
+ root: {
734
+ padding: "24px 24px 0 24px"
735
+ },
736
+ title: {
737
+ fontSize: 18,
738
+ fontWeight: 600,
739
+ lineHeight: "28px"
740
+ },
741
+ subheader: {
742
+ fontSize: 14,
743
+ lineHeight: "20px",
744
+ marginTop: 4
745
+ },
746
+ action: {
747
+ marginTop: -4,
748
+ marginRight: -4
749
+ }
731
750
  }
732
- }
733
- },
734
- // ─── Paper ──────────────────────────────────────────────────────
735
- MuiPaper: {
736
- defaultProps: {
737
- elevation: 0
738
- },
739
- styleOverrides: {
740
- root: {
741
- backgroundImage: "none"
742
- },
743
- rounded: {
744
- borderRadius: radius.lg
745
- },
746
- elevation1: {
747
- boxShadow: shadows.xs,
748
- border: `1px solid ${colors.gray[200]}`
749
- },
750
- elevation2: {
751
- boxShadow: shadows.sm,
752
- border: `1px solid ${colors.gray[200]}`
753
- },
754
- elevation3: {
755
- boxShadow: shadows.md,
756
- border: `1px solid ${colors.gray[200]}`
757
- },
758
- elevation4: {
759
- boxShadow: shadows.lg,
760
- border: `1px solid ${colors.gray[200]}`
761
- },
762
- elevation8: {
763
- boxShadow: shadows.xl,
764
- border: `1px solid ${colors.gray[200]}`
765
- },
766
- elevation16: {
767
- boxShadow: shadows["2xl"],
768
- border: `1px solid ${colors.gray[200]}`
751
+ },
752
+ // ─── Paper ──────────────────────────────────────────────────────
753
+ MuiPaper: {
754
+ defaultProps: {
755
+ elevation: 0
769
756
  },
770
- elevation24: {
771
- boxShadow: shadows["3xl"],
772
- border: `1px solid ${colors.gray[200]}`
773
- }
774
- }
775
- },
776
- // ─── Accordion ──────────────────────────────────────────────────
777
- MuiAccordion: {
778
- defaultProps: {
779
- disableGutters: true,
780
- elevation: 0
781
- },
782
- styleOverrides: {
783
- root: {
784
- border: `1px solid ${colors.gray[200]}`,
785
- borderRadius: radius.lg,
786
- "&:not(:last-child)": {
787
- marginBottom: 8
757
+ styleOverrides: {
758
+ root: {
759
+ backgroundImage: "none"
760
+ },
761
+ rounded: {
762
+ borderRadius: radius2.lg
763
+ },
764
+ elevation1: {
765
+ boxShadow: tokenShadows.xs,
766
+ border: `1px solid ${colors2.gray[200]}`
767
+ },
768
+ elevation2: {
769
+ boxShadow: tokenShadows.sm,
770
+ border: `1px solid ${colors2.gray[200]}`
788
771
  },
789
- "&:before": {
790
- display: "none"
772
+ elevation3: {
773
+ boxShadow: tokenShadows.md,
774
+ border: `1px solid ${colors2.gray[200]}`
791
775
  },
792
- "&.Mui-expanded": {
793
- margin: 0,
794
- marginBottom: 8,
795
- borderRadius: radius.lg
776
+ elevation4: {
777
+ boxShadow: tokenShadows.lg,
778
+ border: `1px solid ${colors2.gray[200]}`
779
+ },
780
+ elevation8: {
781
+ boxShadow: tokenShadows.xl,
782
+ border: `1px solid ${colors2.gray[200]}`
783
+ },
784
+ elevation16: {
785
+ boxShadow: tokenShadows["2xl"],
786
+ border: `1px solid ${colors2.gray[200]}`
787
+ },
788
+ elevation24: {
789
+ boxShadow: tokenShadows["3xl"],
790
+ border: `1px solid ${colors2.gray[200]}`
796
791
  }
797
792
  }
798
- }
799
- },
800
- MuiAccordionSummary: {
801
- styleOverrides: {
802
- root: {
803
- padding: "0 24px",
804
- minHeight: 56,
805
- "&.Mui-expanded": {
806
- minHeight: 56,
807
- borderBottom: `1px solid ${colors.gray[200]}`
808
- }
793
+ },
794
+ // ─── Accordion ──────────────────────────────────────────────────
795
+ MuiAccordion: {
796
+ defaultProps: {
797
+ disableGutters: true,
798
+ elevation: 0
809
799
  },
810
- content: {
811
- margin: "12px 0",
812
- "&.Mui-expanded": {
813
- margin: "12px 0"
800
+ styleOverrides: {
801
+ root: {
802
+ border: `1px solid ${colors2.gray[200]}`,
803
+ borderRadius: radius2.lg,
804
+ "&:not(:last-child)": {
805
+ marginBottom: 8
806
+ },
807
+ "&:before": {
808
+ display: "none"
809
+ },
810
+ "&.Mui-expanded": {
811
+ margin: 0,
812
+ marginBottom: 8,
813
+ borderRadius: radius2.lg
814
+ }
814
815
  }
815
816
  }
816
- }
817
- },
818
- MuiAccordionDetails: {
819
- styleOverrides: {
820
- root: {
821
- padding: "24px"
822
- }
823
- }
824
- },
825
- // ─── AppBar ─────────────────────────────────────────────────────
826
- MuiAppBar: {
827
- defaultProps: {
828
- elevation: 0,
829
- color: "transparent"
830
- },
831
- styleOverrides: {
832
- root: {
833
- borderBottom: `1px solid ${colors.gray[200]}`,
834
- backgroundColor: colors.base.white
817
+ },
818
+ MuiAccordionSummary: {
819
+ styleOverrides: {
820
+ root: {
821
+ padding: "0 24px",
822
+ minHeight: 56,
823
+ "&.Mui-expanded": {
824
+ minHeight: 56,
825
+ borderBottom: `1px solid ${colors2.gray[200]}`
826
+ }
827
+ },
828
+ content: {
829
+ margin: "12px 0",
830
+ "&.Mui-expanded": {
831
+ margin: "12px 0"
832
+ }
833
+ }
835
834
  }
836
- }
837
- },
838
- MuiToolbar: {
839
- styleOverrides: {
840
- root: {
841
- minHeight: 64,
842
- "@media (min-width: 600px)": {
843
- minHeight: 64
835
+ },
836
+ MuiAccordionDetails: {
837
+ styleOverrides: {
838
+ root: {
839
+ padding: "24px"
844
840
  }
841
+ }
842
+ },
843
+ // ─── AppBar ─────────────────────────────────────────────────────
844
+ MuiAppBar: {
845
+ defaultProps: {
846
+ elevation: 0,
847
+ color: "transparent"
845
848
  },
846
- dense: {
847
- minHeight: 48,
848
- "@media (min-width: 600px)": {
849
- minHeight: 48
849
+ styleOverrides: {
850
+ root: {
851
+ borderBottom: `1px solid ${colors2.gray[200]}`,
852
+ backgroundColor: colors2.base.white
850
853
  }
851
854
  }
852
- }
853
- },
854
- // ─── Chip ───────────────────────────────────────────────────────
855
- MuiChip: {
856
- styleOverrides: {
857
- root: {
858
- borderRadius: radius.md,
859
- fontWeight: 500,
860
- fontSize: 14
861
- }
862
- }
863
- },
864
- // ─── Form Control / Label ───────────────────────────────────────
865
- MuiFormControlLabel: {
866
- styleOverrides: {
867
- root: {
868
- marginLeft: 0,
869
- gap: 8
870
- },
871
- label: {
872
- fontSize: 14,
873
- lineHeight: "20px",
874
- fontWeight: 500,
875
- color: colors.gray[700]
855
+ },
856
+ MuiToolbar: {
857
+ styleOverrides: {
858
+ root: {
859
+ minHeight: 64,
860
+ "@media (min-width: 600px)": {
861
+ minHeight: 64
862
+ }
863
+ },
864
+ dense: {
865
+ minHeight: 48,
866
+ "@media (min-width: 600px)": {
867
+ minHeight: 48
868
+ }
869
+ }
876
870
  }
877
- }
878
- },
879
- // ─── Table ───────────────────────────────────────────────────────
880
- MuiTable: {
881
- styleOverrides: {
882
- root: {
883
- borderCollapse: "separate",
884
- borderSpacing: 0
871
+ },
872
+ // ─── Chip ───────────────────────────────────────────────────────
873
+ MuiChip: {
874
+ styleOverrides: {
875
+ root: {
876
+ borderRadius: radius2.md,
877
+ fontWeight: 500,
878
+ fontSize: 14
879
+ }
885
880
  }
886
- }
887
- },
888
- MuiTableCell: {
889
- styleOverrides: {
890
- root: {
891
- borderBottom: `1px solid ${colors.gray[200]}`,
892
- padding: "16px 24px",
893
- fontSize: 14,
894
- lineHeight: "20px",
895
- color: colors.gray[600]
896
- },
897
- head: {
898
- backgroundColor: colors.gray[50],
899
- color: colors.gray[600],
900
- fontWeight: 500,
901
- fontSize: 12,
902
- lineHeight: "18px"
903
- },
904
- body: {
905
- color: colors.gray[600]
881
+ },
882
+ // ─── Form Control / Label ───────────────────────────────────────
883
+ MuiFormControlLabel: {
884
+ styleOverrides: {
885
+ root: {
886
+ marginLeft: 0,
887
+ gap: 8
888
+ },
889
+ label: {
890
+ fontSize: 14,
891
+ lineHeight: "20px",
892
+ fontWeight: 500,
893
+ color: colors2.gray[700]
894
+ }
906
895
  }
907
- }
908
- },
909
- MuiTableHead: {
910
- styleOverrides: {
911
- root: {
912
- backgroundColor: colors.gray[50],
913
- borderBottom: `1px solid ${colors.gray[200]}`
896
+ },
897
+ // ─── Table ───────────────────────────────────────────────────────
898
+ MuiTable: {
899
+ styleOverrides: {
900
+ root: {
901
+ borderCollapse: "separate",
902
+ borderSpacing: 0
903
+ }
914
904
  }
915
- }
916
- },
917
- MuiTableRow: {
918
- styleOverrides: {
919
- root: {
920
- "&:last-child td, &:last-child th": {
921
- border: 0
905
+ },
906
+ MuiTableCell: {
907
+ styleOverrides: {
908
+ root: {
909
+ borderBottom: `1px solid ${colors2.gray[200]}`,
910
+ padding: "16px 24px",
911
+ fontSize: 14,
912
+ lineHeight: "20px",
913
+ color: colors2.gray[600]
922
914
  },
923
- "&:hover": {
924
- backgroundColor: colors.gray[50]
915
+ head: {
916
+ backgroundColor: colors2.gray[50],
917
+ color: colors2.gray[600],
918
+ fontWeight: 500,
919
+ fontSize: 12,
920
+ lineHeight: "18px"
925
921
  },
926
- "&.Mui-selected": {
927
- backgroundColor: colors.brand[50],
922
+ body: {
923
+ color: colors2.gray[600]
924
+ }
925
+ }
926
+ },
927
+ MuiTableHead: {
928
+ styleOverrides: {
929
+ root: {
930
+ backgroundColor: colors2.gray[50],
931
+ borderBottom: `1px solid ${colors2.gray[200]}`
932
+ }
933
+ }
934
+ },
935
+ MuiTableRow: {
936
+ styleOverrides: {
937
+ root: {
938
+ "&:last-child td, &:last-child th": {
939
+ border: 0
940
+ },
928
941
  "&:hover": {
929
- backgroundColor: colors.brand[50]
942
+ backgroundColor: colors2.gray[50]
943
+ },
944
+ "&.Mui-selected": {
945
+ backgroundColor: colors2.brand[50],
946
+ "&:hover": {
947
+ backgroundColor: colors2.brand[50]
948
+ }
930
949
  }
931
950
  }
932
951
  }
933
- }
934
- },
935
- MuiTableContainer: {
936
- styleOverrides: {
937
- root: {
938
- borderRadius: radius.xl,
939
- border: `1px solid ${colors.gray[200]}`,
940
- boxShadow: "none"
952
+ },
953
+ MuiTableContainer: {
954
+ styleOverrides: {
955
+ root: {
956
+ borderRadius: radius2.xl,
957
+ border: `1px solid ${colors2.gray[200]}`,
958
+ boxShadow: "none"
959
+ }
941
960
  }
942
- }
943
- },
944
- // ─── Badge ──────────────────────────────────────────────────────
945
- MuiBadge: {
946
- styleOverrides: {
947
- standard: {
948
- fontWeight: 500,
949
- fontSize: 12,
950
- lineHeight: "18px",
951
- minWidth: 20,
952
- height: 20,
953
- borderRadius: radius.full
954
- },
955
- colorPrimary: {
956
- backgroundColor: colors.brand[600]
957
- },
958
- colorError: {
959
- backgroundColor: colors.error[600]
960
- },
961
- colorSuccess: {
962
- backgroundColor: colors.success[600]
963
- },
964
- colorWarning: {
965
- backgroundColor: colors.warning[600]
966
- },
967
- dot: {
968
- minWidth: 8,
969
- height: 8,
970
- borderRadius: radius.full
961
+ },
962
+ // ─── Badge ──────────────────────────────────────────────────────
963
+ MuiBadge: {
964
+ styleOverrides: {
965
+ standard: {
966
+ fontWeight: 500,
967
+ fontSize: 12,
968
+ lineHeight: "18px",
969
+ minWidth: 20,
970
+ height: 20,
971
+ borderRadius: radius2.full
972
+ },
973
+ colorPrimary: {
974
+ backgroundColor: colors2.brand[600]
975
+ },
976
+ colorError: {
977
+ backgroundColor: colors2.error[600]
978
+ },
979
+ colorSuccess: {
980
+ backgroundColor: colors2.success[600]
981
+ },
982
+ colorWarning: {
983
+ backgroundColor: colors2.warning[600]
984
+ },
985
+ dot: {
986
+ minWidth: 8,
987
+ height: 8,
988
+ borderRadius: radius2.full
989
+ }
971
990
  }
972
- }
973
- },
974
- // ─── Divider ────────────────────────────────────────────────────
975
- MuiDivider: {
976
- styleOverrides: {
977
- root: {
978
- borderColor: colors.gray[200]
991
+ },
992
+ // ─── Divider ────────────────────────────────────────────────────
993
+ MuiDivider: {
994
+ styleOverrides: {
995
+ root: {
996
+ borderColor: colors2.gray[200]
997
+ }
979
998
  }
980
- }
981
- },
982
- // ─── List ───────────────────────────────────────────────────────
983
- MuiList: {
984
- styleOverrides: {
985
- root: {
986
- padding: 4
999
+ },
1000
+ // ─── List ───────────────────────────────────────────────────────
1001
+ MuiList: {
1002
+ styleOverrides: {
1003
+ root: {
1004
+ padding: 4
1005
+ }
987
1006
  }
988
- }
989
- },
990
- MuiListItemButton: {
991
- styleOverrides: {
992
- root: {
993
- borderRadius: radius.sm,
994
- padding: "8px 12px",
995
- "&:hover": {
996
- backgroundColor: colors.gray[50]
997
- },
998
- "&.Mui-selected": {
999
- backgroundColor: colors.brand[50],
1000
- color: colors.brand[700],
1007
+ },
1008
+ MuiListItemButton: {
1009
+ styleOverrides: {
1010
+ root: {
1011
+ borderRadius: radius2.sm,
1012
+ padding: "8px 12px",
1001
1013
  "&:hover": {
1002
- backgroundColor: colors.brand[100]
1014
+ backgroundColor: colors2.gray[50]
1015
+ },
1016
+ "&.Mui-selected": {
1017
+ backgroundColor: colors2.brand[50],
1018
+ color: colors2.brand[700],
1019
+ "&:hover": {
1020
+ backgroundColor: colors2.brand[100]
1021
+ }
1003
1022
  }
1004
1023
  }
1005
1024
  }
1006
- }
1007
- },
1008
- MuiListItemIcon: {
1009
- styleOverrides: {
1010
- root: {
1011
- minWidth: 36,
1012
- color: colors.gray[500]
1013
- }
1014
- }
1015
- },
1016
- MuiListItemText: {
1017
- styleOverrides: {
1018
- primary: {
1019
- fontSize: 14,
1020
- lineHeight: "20px",
1021
- fontWeight: 500,
1022
- color: colors.gray[700]
1023
- },
1024
- secondary: {
1025
- fontSize: 14,
1026
- lineHeight: "20px",
1027
- color: colors.gray[500]
1025
+ },
1026
+ MuiListItemIcon: {
1027
+ styleOverrides: {
1028
+ root: {
1029
+ minWidth: 36,
1030
+ color: colors2.gray[500]
1031
+ }
1028
1032
  }
1029
- }
1030
- },
1031
- // ─── Tooltip ────────────────────────────────────────────────────
1032
- MuiTooltip: {
1033
- styleOverrides: {
1034
- tooltip: {
1035
- backgroundColor: colors.gray[900],
1036
- color: colors.base.white,
1037
- fontSize: 12,
1038
- lineHeight: "18px",
1039
- fontWeight: 600,
1040
- padding: "8px 12px",
1041
- borderRadius: radius.md,
1042
- boxShadow: shadows.lg
1043
- },
1044
- arrow: {
1045
- color: colors.gray[900]
1033
+ },
1034
+ MuiListItemText: {
1035
+ styleOverrides: {
1036
+ primary: {
1037
+ fontSize: 14,
1038
+ lineHeight: "20px",
1039
+ fontWeight: 500,
1040
+ color: colors2.gray[700]
1041
+ },
1042
+ secondary: {
1043
+ fontSize: 14,
1044
+ lineHeight: "20px",
1045
+ color: colors2.gray[500]
1046
+ }
1046
1047
  }
1047
- }
1048
- },
1049
- // ─── Alert ──────────────────────────────────────────────────────
1050
- MuiAlert: {
1051
- defaultProps: {
1052
- variant: "standard"
1053
- },
1054
- styleOverrides: {
1055
- root: {
1056
- borderRadius: radius.xl,
1057
- fontSize: 14,
1058
- lineHeight: "20px",
1059
- padding: "12px 16px"
1060
- },
1061
- standardError: {
1062
- backgroundColor: colors.error[50],
1063
- color: colors.error[700],
1064
- border: `1px solid ${colors.error[300]}`,
1065
- "& .MuiAlert-icon": {
1066
- color: colors.error[600]
1048
+ },
1049
+ // ─── Tooltip ────────────────────────────────────────────────────
1050
+ MuiTooltip: {
1051
+ styleOverrides: {
1052
+ tooltip: {
1053
+ backgroundColor: colors2.gray[900],
1054
+ color: colors2.base.white,
1055
+ fontSize: 12,
1056
+ lineHeight: "18px",
1057
+ fontWeight: 600,
1058
+ padding: "8px 12px",
1059
+ borderRadius: radius2.md,
1060
+ boxShadow: tokenShadows.lg
1061
+ },
1062
+ arrow: {
1063
+ color: colors2.gray[900]
1067
1064
  }
1065
+ }
1066
+ },
1067
+ // ─── Alert ──────────────────────────────────────────────────────
1068
+ MuiAlert: {
1069
+ defaultProps: {
1070
+ variant: "standard"
1068
1071
  },
1069
- standardWarning: {
1070
- backgroundColor: colors.warning[50],
1071
- color: colors.warning[700],
1072
- border: `1px solid ${colors.warning[300]}`,
1073
- "& .MuiAlert-icon": {
1074
- color: colors.warning[600]
1072
+ styleOverrides: {
1073
+ root: {
1074
+ borderRadius: radius2.xl,
1075
+ fontSize: 14,
1076
+ lineHeight: "20px",
1077
+ padding: "12px 16px"
1078
+ },
1079
+ standardError: {
1080
+ backgroundColor: colors2.error[50],
1081
+ color: colors2.error[700],
1082
+ border: `1px solid ${colors2.error[300]}`,
1083
+ "& .MuiAlert-icon": {
1084
+ color: colors2.error[600]
1085
+ }
1086
+ },
1087
+ standardWarning: {
1088
+ backgroundColor: colors2.warning[50],
1089
+ color: colors2.warning[700],
1090
+ border: `1px solid ${colors2.warning[300]}`,
1091
+ "& .MuiAlert-icon": {
1092
+ color: colors2.warning[600]
1093
+ }
1094
+ },
1095
+ standardSuccess: {
1096
+ backgroundColor: colors2.success[50],
1097
+ color: colors2.success[700],
1098
+ border: `1px solid ${colors2.success[300]}`,
1099
+ "& .MuiAlert-icon": {
1100
+ color: colors2.success[600]
1101
+ }
1102
+ },
1103
+ standardInfo: {
1104
+ backgroundColor: colors2.blue[50],
1105
+ color: colors2.blue[700],
1106
+ border: `1px solid ${colors2.blue[300]}`,
1107
+ "& .MuiAlert-icon": {
1108
+ color: colors2.blue[600]
1109
+ }
1110
+ },
1111
+ icon: {
1112
+ padding: "2px 0"
1075
1113
  }
1076
- },
1077
- standardSuccess: {
1078
- backgroundColor: colors.success[50],
1079
- color: colors.success[700],
1080
- border: `1px solid ${colors.success[300]}`,
1081
- "& .MuiAlert-icon": {
1082
- color: colors.success[600]
1114
+ }
1115
+ },
1116
+ MuiAlertTitle: {
1117
+ styleOverrides: {
1118
+ root: {
1119
+ fontWeight: 600,
1120
+ fontSize: 14,
1121
+ lineHeight: "20px",
1122
+ marginBottom: 4
1083
1123
  }
1084
- },
1085
- standardInfo: {
1086
- backgroundColor: colors.blue[50],
1087
- color: colors.blue[700],
1088
- border: `1px solid ${colors.blue[300]}`,
1089
- "& .MuiAlert-icon": {
1090
- color: colors.blue[600]
1124
+ }
1125
+ },
1126
+ // ─── Backdrop ───────────────────────────────────────────────────
1127
+ MuiBackdrop: {
1128
+ styleOverrides: {
1129
+ root: {
1130
+ backgroundColor: "rgba(16, 24, 40, 0.7)"
1091
1131
  }
1092
- },
1093
- icon: {
1094
- padding: "2px 0"
1095
1132
  }
1096
- }
1097
- },
1098
- MuiAlertTitle: {
1099
- styleOverrides: {
1100
- root: {
1101
- fontWeight: 600,
1102
- fontSize: 14,
1103
- lineHeight: "20px",
1104
- marginBottom: 4
1133
+ },
1134
+ // ─── Dialog ─────────────────────────────────────────────────────
1135
+ MuiDialog: {
1136
+ styleOverrides: {
1137
+ paper: {
1138
+ borderRadius: radius2.xl,
1139
+ boxShadow: tokenShadows.xl,
1140
+ padding: 0
1141
+ }
1105
1142
  }
1106
- }
1107
- },
1108
- // ─── Backdrop ───────────────────────────────────────────────────
1109
- MuiBackdrop: {
1110
- styleOverrides: {
1111
- root: {
1112
- backgroundColor: "rgba(16, 24, 40, 0.7)"
1143
+ },
1144
+ MuiDialogTitle: {
1145
+ styleOverrides: {
1146
+ root: {
1147
+ fontSize: 18,
1148
+ lineHeight: "28px",
1149
+ fontWeight: 600,
1150
+ color: colors2.gray[900],
1151
+ padding: "24px 24px 0"
1152
+ }
1113
1153
  }
1114
- }
1115
- },
1116
- // ─── Dialog ─────────────────────────────────────────────────────
1117
- MuiDialog: {
1118
- styleOverrides: {
1119
- paper: {
1120
- borderRadius: radius.xl,
1121
- boxShadow: shadows.xl,
1122
- padding: 0
1154
+ },
1155
+ MuiDialogContent: {
1156
+ styleOverrides: {
1157
+ root: {
1158
+ padding: "20px 24px",
1159
+ fontSize: 14,
1160
+ lineHeight: "20px",
1161
+ color: colors2.gray[600]
1162
+ }
1123
1163
  }
1124
- }
1125
- },
1126
- MuiDialogTitle: {
1127
- styleOverrides: {
1128
- root: {
1129
- fontSize: 18,
1130
- lineHeight: "28px",
1131
- fontWeight: 600,
1132
- color: colors.gray[900],
1133
- padding: "24px 24px 0"
1164
+ },
1165
+ MuiDialogActions: {
1166
+ styleOverrides: {
1167
+ root: {
1168
+ padding: "0 24px 24px",
1169
+ gap: 12
1170
+ }
1134
1171
  }
1135
- }
1136
- },
1137
- MuiDialogContent: {
1138
- styleOverrides: {
1139
- root: {
1140
- padding: "20px 24px",
1141
- fontSize: 14,
1142
- lineHeight: "20px",
1143
- color: colors.gray[600]
1172
+ },
1173
+ // ─── Progress ───────────────────────────────────────────────────
1174
+ MuiLinearProgress: {
1175
+ styleOverrides: {
1176
+ root: {
1177
+ borderRadius: radius2.full,
1178
+ height: 8,
1179
+ backgroundColor: colors2.gray[200]
1180
+ },
1181
+ barColorPrimary: {
1182
+ backgroundColor: colors2.brand[600],
1183
+ borderRadius: radius2.full
1184
+ },
1185
+ barColorSecondary: {
1186
+ backgroundColor: colors2.gray[600],
1187
+ borderRadius: radius2.full
1188
+ }
1144
1189
  }
1145
- }
1146
- },
1147
- MuiDialogActions: {
1148
- styleOverrides: {
1149
- root: {
1150
- padding: "0 24px 24px",
1151
- gap: 12
1190
+ },
1191
+ MuiCircularProgress: {
1192
+ styleOverrides: {
1193
+ colorPrimary: {
1194
+ color: colors2.brand[600]
1195
+ },
1196
+ colorSecondary: {
1197
+ color: colors2.gray[600]
1198
+ }
1152
1199
  }
1153
- }
1154
- },
1155
- // ─── Progress ───────────────────────────────────────────────────
1156
- MuiLinearProgress: {
1157
- styleOverrides: {
1158
- root: {
1159
- borderRadius: radius.full,
1160
- height: 8,
1161
- backgroundColor: colors.gray[200]
1162
- },
1163
- barColorPrimary: {
1164
- backgroundColor: colors.brand[600],
1165
- borderRadius: radius.full
1200
+ },
1201
+ // ─── Skeleton ───────────────────────────────────────────────────
1202
+ MuiSkeleton: {
1203
+ defaultProps: {
1204
+ animation: "wave"
1166
1205
  },
1167
- barColorSecondary: {
1168
- backgroundColor: colors.gray[600],
1169
- borderRadius: radius.full
1206
+ styleOverrides: {
1207
+ root: {
1208
+ backgroundColor: colors2.gray[100]
1209
+ },
1210
+ rounded: {
1211
+ borderRadius: radius2.md
1212
+ },
1213
+ circular: {
1214
+ borderRadius: radius2.full
1215
+ }
1170
1216
  }
1171
- }
1172
- },
1173
- MuiCircularProgress: {
1174
- styleOverrides: {
1175
- colorPrimary: {
1176
- color: colors.brand[600]
1177
- },
1178
- colorSecondary: {
1179
- color: colors.gray[600]
1217
+ },
1218
+ // ─── Snackbar ───────────────────────────────────────────────────
1219
+ MuiSnackbarContent: {
1220
+ styleOverrides: {
1221
+ root: {
1222
+ backgroundColor: colors2.gray[900],
1223
+ color: colors2.base.white,
1224
+ borderRadius: radius2.xl,
1225
+ boxShadow: tokenShadows.lg,
1226
+ fontSize: 14,
1227
+ lineHeight: "20px",
1228
+ fontWeight: 500,
1229
+ padding: "6px 16px"
1230
+ }
1180
1231
  }
1181
- }
1182
- },
1183
- // ─── Skeleton ───────────────────────────────────────────────────
1184
- MuiSkeleton: {
1185
- defaultProps: {
1186
- animation: "wave"
1187
- },
1188
- styleOverrides: {
1189
- root: {
1190
- backgroundColor: colors.gray[100]
1191
- },
1192
- rounded: {
1193
- borderRadius: radius.md
1194
- },
1195
- circular: {
1196
- borderRadius: radius.full
1232
+ },
1233
+ // ─── Typography ─────────────────────────────────────────────────
1234
+ MuiTypography: {
1235
+ defaultProps: {
1236
+ variantMapping: {
1237
+ h1: "h1",
1238
+ h2: "h2",
1239
+ h3: "h3",
1240
+ h4: "h4",
1241
+ h5: "h5",
1242
+ h6: "h6",
1243
+ subtitle1: "p",
1244
+ subtitle2: "p",
1245
+ body1: "p",
1246
+ body2: "p",
1247
+ caption: "span",
1248
+ overline: "span"
1249
+ }
1197
1250
  }
1198
1251
  }
1199
- },
1200
- // ─── Snackbar ───────────────────────────────────────────────────
1201
- MuiSnackbarContent: {
1202
- styleOverrides: {
1203
- root: {
1204
- backgroundColor: colors.gray[900],
1205
- color: colors.base.white,
1206
- borderRadius: radius.xl,
1207
- boxShadow: shadows.lg,
1208
- fontSize: 14,
1209
- lineHeight: "20px",
1210
- fontWeight: 500,
1211
- padding: "6px 16px"
1212
- }
1252
+ };
1253
+ }
1254
+ var components = buildComponents({
1255
+ colors,
1256
+ radius,
1257
+ focusRings,
1258
+ shadows
1259
+ });
1260
+
1261
+ // src/theme/shadows.ts
1262
+ function buildShadows(tokens) {
1263
+ const tokenShadows = tokens.shadows;
1264
+ return [
1265
+ "none",
1266
+ // 0
1267
+ tokenShadows.xs,
1268
+ // 1
1269
+ tokenShadows.sm,
1270
+ // 2
1271
+ tokenShadows.sm,
1272
+ // 3
1273
+ tokenShadows.md,
1274
+ // 4
1275
+ tokenShadows.md,
1276
+ // 5
1277
+ tokenShadows.md,
1278
+ // 6
1279
+ tokenShadows.lg,
1280
+ // 7
1281
+ tokenShadows.lg,
1282
+ // 8
1283
+ tokenShadows.lg,
1284
+ // 9
1285
+ tokenShadows.xl,
1286
+ // 10
1287
+ tokenShadows.xl,
1288
+ // 11
1289
+ tokenShadows.xl,
1290
+ // 12
1291
+ tokenShadows["2xl"],
1292
+ // 13
1293
+ tokenShadows["2xl"],
1294
+ // 14
1295
+ tokenShadows["2xl"],
1296
+ // 15
1297
+ tokenShadows["3xl"],
1298
+ // 16
1299
+ tokenShadows["3xl"],
1300
+ // 17
1301
+ tokenShadows["3xl"],
1302
+ // 18
1303
+ tokenShadows["3xl"],
1304
+ // 19
1305
+ tokenShadows["3xl"],
1306
+ // 20
1307
+ tokenShadows["3xl"],
1308
+ // 21
1309
+ tokenShadows["3xl"],
1310
+ // 22
1311
+ tokenShadows["3xl"],
1312
+ // 23
1313
+ tokenShadows["3xl"]
1314
+ // 24
1315
+ ];
1316
+ }
1317
+ var shadows2 = buildShadows({
1318
+ shadows
1319
+ });
1320
+ function buildThemeOptions(tokens) {
1321
+ return {
1322
+ palette: buildPalette(tokens),
1323
+ typography: buildTypography(tokens),
1324
+ components: buildComponents(tokens),
1325
+ shadows: buildShadows(tokens),
1326
+ shape: {
1327
+ borderRadius: tokens.radius.md
1213
1328
  }
1214
- },
1215
- // ─── Typography ─────────────────────────────────────────────────
1216
- MuiTypography: {
1217
- defaultProps: {
1218
- variantMapping: {
1219
- h1: "h1",
1220
- h2: "h2",
1221
- h3: "h3",
1222
- h4: "h4",
1223
- h5: "h5",
1224
- h6: "h6",
1225
- subtitle1: "p",
1226
- subtitle2: "p",
1227
- body1: "p",
1228
- body2: "p",
1229
- caption: "span",
1230
- overline: "span"
1329
+ };
1330
+ }
1331
+ function buildTheme(tokens) {
1332
+ return styles.createTheme(buildThemeOptions(tokens));
1333
+ }
1334
+
1335
+ // src/theme/presets/forest.ts
1336
+ var forestPreset = {
1337
+ name: "forest",
1338
+ defaultVariant: "light",
1339
+ variants: {
1340
+ light: {
1341
+ tokens: {
1342
+ colors,
1343
+ spacing,
1344
+ radius,
1345
+ shadows,
1346
+ focusRings,
1347
+ fontFamily,
1348
+ fontSize,
1349
+ lineHeight,
1350
+ fontWeight,
1351
+ display,
1352
+ container,
1353
+ widths
1231
1354
  }
1232
1355
  }
1233
1356
  }
1234
1357
  };
1235
1358
 
1236
- // src/theme/shadows.ts
1237
- var shadows2 = [
1238
- "none",
1239
- // 0
1240
- shadows.xs,
1241
- // 1
1242
- shadows.sm,
1243
- // 2
1244
- shadows.sm,
1245
- // 3
1246
- shadows.md,
1247
- // 4
1248
- shadows.md,
1249
- // 5
1250
- shadows.md,
1251
- // 6
1252
- shadows.lg,
1253
- // 7
1254
- shadows.lg,
1255
- // 8
1256
- shadows.lg,
1257
- // 9
1258
- shadows.xl,
1259
- // 10
1260
- shadows.xl,
1261
- // 11
1262
- shadows.xl,
1263
- // 12
1264
- shadows["2xl"],
1265
- // 13
1266
- shadows["2xl"],
1267
- // 14
1268
- shadows["2xl"],
1269
- // 15
1270
- shadows["3xl"],
1271
- // 16
1272
- shadows["3xl"],
1273
- // 17
1274
- shadows["3xl"],
1275
- // 18
1276
- shadows["3xl"],
1277
- // 19
1278
- shadows["3xl"],
1279
- // 20
1280
- shadows["3xl"],
1281
- // 21
1282
- shadows["3xl"],
1283
- // 22
1284
- shadows["3xl"],
1285
- // 23
1286
- shadows["3xl"]
1287
- // 24
1288
- ];
1359
+ // src/theme/presets/index.ts
1360
+ var presetRegistry = /* @__PURE__ */ new Map();
1361
+ presetRegistry.set(forestPreset.name, forestPreset);
1362
+ function getPreset(name) {
1363
+ return presetRegistry.get(name);
1364
+ }
1365
+ function registerPreset(preset) {
1366
+ presetRegistry.set(preset.name, preset);
1367
+ }
1368
+ function getAvailablePresets() {
1369
+ return Array.from(presetRegistry.keys());
1370
+ }
1289
1371
 
1290
1372
  // src/theme/index.ts
1291
1373
  var forestThemeOptions = {
@@ -1299,6 +1381,8 @@ var forestThemeOptions = {
1299
1381
  };
1300
1382
  var forestTheme = styles.createTheme(forestThemeOptions);
1301
1383
 
1384
+ exports.buildTheme = buildTheme;
1385
+ exports.buildThemeOptions = buildThemeOptions;
1302
1386
  exports.colors = colors;
1303
1387
  exports.components = components;
1304
1388
  exports.container = container;
@@ -1307,11 +1391,15 @@ exports.focusRings = focusRings;
1307
1391
  exports.fontFamily = fontFamily;
1308
1392
  exports.fontSize = fontSize;
1309
1393
  exports.fontWeight = fontWeight;
1394
+ exports.forestPreset = forestPreset;
1310
1395
  exports.forestTheme = forestTheme;
1311
1396
  exports.forestThemeOptions = forestThemeOptions;
1397
+ exports.getAvailablePresets = getAvailablePresets;
1398
+ exports.getPreset = getPreset;
1312
1399
  exports.lineHeight = lineHeight;
1313
1400
  exports.palette = palette;
1314
1401
  exports.radius = radius;
1402
+ exports.registerPreset = registerPreset;
1315
1403
  exports.shadows = shadows2;
1316
1404
  exports.spacing = spacing;
1317
1405
  exports.typography = typography;