@matteoaliano/forest-ui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/theme.js ADDED
@@ -0,0 +1,1320 @@
1
+ 'use strict';
2
+
3
+ var styles = require('@mui/material/styles');
4
+
5
+ // src/theme/index.ts
6
+
7
+ // src/theme/tokens.ts
8
+ var colors = {
9
+ base: {
10
+ white: "#ffffff",
11
+ black: "#000000",
12
+ transparent: "#ffffff00"
13
+ },
14
+ brand: {
15
+ 25: "#fcfaff",
16
+ 50: "#f9f5ff",
17
+ 100: "#f4ebff",
18
+ 200: "#e9d7fe",
19
+ 300: "#d6bbfb",
20
+ 400: "#b692f6",
21
+ 500: "#9e77ed",
22
+ 600: "#7f56d9",
23
+ 700: "#6941c6",
24
+ 800: "#53389e",
25
+ 900: "#42307d",
26
+ 950: "#2c1c5f"
27
+ },
28
+ gray: {
29
+ 25: "#fcfcfd",
30
+ 50: "#f9fafb",
31
+ 100: "#f2f4f7",
32
+ 200: "#eaecf0",
33
+ 300: "#d0d5dd",
34
+ 400: "#98a2b3",
35
+ 500: "#667085",
36
+ 600: "#475467",
37
+ 700: "#344054",
38
+ 800: "#182230",
39
+ 900: "#101828",
40
+ 950: "#0c111d"
41
+ },
42
+ error: {
43
+ 25: "#fffbfa",
44
+ 50: "#fef3f2",
45
+ 100: "#fee4e2",
46
+ 200: "#fecdca",
47
+ 300: "#fda29b",
48
+ 400: "#f97066",
49
+ 500: "#f04438",
50
+ 600: "#d92d20",
51
+ 700: "#b42318",
52
+ 800: "#912018",
53
+ 900: "#7a271a",
54
+ 950: "#55160c"
55
+ },
56
+ warning: {
57
+ 25: "#fffcf5",
58
+ 50: "#fffaeb",
59
+ 100: "#fef0c7",
60
+ 200: "#fedf89",
61
+ 300: "#fec84b",
62
+ 400: "#fdb022",
63
+ 500: "#f79009",
64
+ 600: "#dc6803",
65
+ 700: "#b54708",
66
+ 800: "#93370d",
67
+ 900: "#7a2e0e",
68
+ 950: "#4e1d09"
69
+ },
70
+ success: {
71
+ 25: "#f6fef9",
72
+ 50: "#ecfdf3",
73
+ 100: "#dcfae6",
74
+ 200: "#abefc6",
75
+ 300: "#75e0a7",
76
+ 400: "#47cd89",
77
+ 500: "#17b26a",
78
+ 600: "#079455",
79
+ 700: "#067647",
80
+ 800: "#085d3a",
81
+ 900: "#074d31",
82
+ 950: "#053321"
83
+ },
84
+ blue: {
85
+ 25: "#f5faff",
86
+ 50: "#eff8ff",
87
+ 100: "#d1e9ff",
88
+ 200: "#b2ddff",
89
+ 300: "#84caff",
90
+ 400: "#53b1fd",
91
+ 500: "#2e90fa",
92
+ 600: "#1570ef",
93
+ 700: "#175cd3",
94
+ 800: "#1849a9",
95
+ 900: "#194185",
96
+ 950: "#102a56"
97
+ }
98
+ };
99
+ var spacing = {
100
+ none: 0,
101
+ xxs: 2,
102
+ xs: 4,
103
+ sm: 6,
104
+ md: 8,
105
+ lg: 12,
106
+ xl: 16,
107
+ "2xl": 20,
108
+ "3xl": 24,
109
+ "4xl": 32,
110
+ "5xl": 40,
111
+ "6xl": 48,
112
+ "7xl": 64,
113
+ "8xl": 80,
114
+ "9xl": 96,
115
+ "10xl": 128,
116
+ "11xl": 160
117
+ };
118
+ var radius = {
119
+ none: 0,
120
+ xxs: 2,
121
+ xs: 4,
122
+ sm: 6,
123
+ md: 8,
124
+ lg: 10,
125
+ xl: 12,
126
+ "2xl": 16,
127
+ "3xl": 20,
128
+ "4xl": 24,
129
+ full: 9999
130
+ };
131
+ var shadows = {
132
+ xs: "0px 1px 2px 0px #1018280d",
133
+ sm: "0px 1px 3px 0px #1018281a, 0px 1px 2px 0px #1018280f",
134
+ md: "0px 4px 8px -2px #1018281a, 0px 2px 4px -2px #1018280f",
135
+ lg: "0px 12px 16px -4px #10182814, 0px 4px 6px -2px #10182808",
136
+ xl: "0px 20px 24px -4px #10182814, 0px 8px 8px -4px #10182808",
137
+ "2xl": "0px 24px 48px -12px #1018282e",
138
+ "3xl": "0px 32px 64px -12px #10182824"
139
+ };
140
+ var focusRings = {
141
+ brand: "0px 0px 0px 4px #9e77ed3d",
142
+ brandShadowXs: "0px 1px 2px 0px #1018280d, 0px 0px 0px 4px #9e77ed3d",
143
+ brandShadowSm: "0px 1px 3px 0px #1018281a, 0px 1px 2px 0px #1018280f, 0px 0px 0px 4px #9e77ed3d",
144
+ gray: "0px 0px 0px 4px #98a2b324",
145
+ grayShadowXs: "0px 1px 2px 0px #1018280d, 0px 0px 0px 4px #98a2b324",
146
+ grayShadowSm: "0px 1px 3px 0px #1018281a, 0px 1px 2px 0px #1018280f, 0px 0px 0px 4px #98a2b324",
147
+ error: "0px 0px 0px 4px #f044383d",
148
+ errorShadowXs: "0px 1px 2px 0px #1018280d, 0px 0px 0px 4px #f044383d"
149
+ };
150
+ var fontFamily = '"Poppins", sans-serif';
151
+ var fontSize = {
152
+ xxs: 11,
153
+ xs: 12,
154
+ sm: 14,
155
+ md: 16,
156
+ lg: 18,
157
+ xl: 20
158
+ };
159
+ var lineHeight = {
160
+ xxs: "16px",
161
+ xs: "18px",
162
+ sm: "20px",
163
+ md: "24px",
164
+ lg: "28px",
165
+ xl: "30px"
166
+ };
167
+ var fontWeight = {
168
+ regular: 400,
169
+ medium: 500,
170
+ semibold: 600,
171
+ bold: 700
172
+ };
173
+ var display = {
174
+ "2xl": { fontSize: 72, lineHeight: "90px", letterSpacing: "-0.02em" },
175
+ xl: { fontSize: 60, lineHeight: "72px", letterSpacing: "-0.02em" },
176
+ lg: { fontSize: 48, lineHeight: "60px", letterSpacing: "-0.02em" },
177
+ md: { fontSize: 36, lineHeight: "44px", letterSpacing: "-0.02em" },
178
+ sm: { fontSize: 30, lineHeight: "38px" },
179
+ xs: { fontSize: 24, lineHeight: "32px" }
180
+ };
181
+ var container = {
182
+ maxWidthDesktop: 1280,
183
+ paddingDesktop: 32,
184
+ paddingMobile: 16
185
+ };
186
+ var widths = {
187
+ xxs: 320,
188
+ xs: 384,
189
+ sm: 480,
190
+ md: 560,
191
+ lg: 640,
192
+ xl: 768,
193
+ "2xl": 1024,
194
+ "3xl": 1280,
195
+ "4xl": 1440,
196
+ "5xl": 1600,
197
+ "6xl": 1920
198
+ };
199
+
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
+ };
256
+
257
+ // src/theme/typography.ts
258
+ var typography = {
259
+ 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
+ };
336
+
337
+ // 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"
366
+ },
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]
385
+ }
386
+ }
387
+ }
388
+ },
389
+ // ─── Button Group ───────────────────────────────────────────────
390
+ MuiButtonGroup: {
391
+ defaultProps: {
392
+ disableElevation: true
393
+ },
394
+ styleOverrides: {
395
+ root: {
396
+ borderRadius: radius.md
397
+ },
398
+ grouped: {
399
+ "&:not(:last-of-type)": {
400
+ borderRight: `1px solid ${colors.brand[700]}`
401
+ }
402
+ }
403
+ }
404
+ },
405
+ // ─── FAB ────────────────────────────────────────────────────────
406
+ MuiFab: {
407
+ styleOverrides: {
408
+ root: {
409
+ boxShadow: shadows.md,
410
+ "&:hover": {
411
+ boxShadow: shadows.lg
412
+ },
413
+ "&:focus-visible": {
414
+ boxShadow: focusRings.brandShadowSm
415
+ }
416
+ },
417
+ primary: {
418
+ backgroundColor: colors.brand[600],
419
+ "&:hover": {
420
+ backgroundColor: colors.brand[700]
421
+ }
422
+ }
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]
438
+ },
439
+ "&.Mui-focused .MuiOutlinedInput-notchedOutline": {
440
+ borderColor: colors.brand[600],
441
+ borderWidth: 1,
442
+ boxShadow: focusRings.brand
443
+ },
444
+ "&.Mui-error .MuiOutlinedInput-notchedOutline": {
445
+ borderColor: colors.error[300]
446
+ },
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
462
+ }
463
+ },
464
+ inputSizeSmall: {
465
+ padding: "8px 12px",
466
+ fontSize: 14,
467
+ lineHeight: "20px"
468
+ }
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]
482
+ }
483
+ }
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]
495
+ }
496
+ }
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
518
+ },
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]
528
+ }
529
+ },
530
+ listbox: {
531
+ padding: 4
532
+ }
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]
556
+ },
557
+ "&.Mui-focusVisible": {
558
+ outline: "none",
559
+ boxShadow: focusRings.brand,
560
+ borderRadius: radius.xs
561
+ },
562
+ "&.Mui-disabled": {
563
+ color: colors.gray[300]
564
+ }
565
+ }
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]
594
+ }
595
+ }
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
608
+ },
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
617
+ }
618
+ },
619
+ "&.Mui-checked:hover + .MuiSwitch-track": {
620
+ backgroundColor: colors.brand[700]
621
+ },
622
+ "&.Mui-focusVisible .MuiSwitch-thumb": {
623
+ boxShadow: focusRings.brand
624
+ },
625
+ "&.Mui-disabled .MuiSwitch-thumb": {
626
+ color: colors.gray[100]
627
+ },
628
+ "&.Mui-disabled + .MuiSwitch-track": {
629
+ opacity: 0.5
630
+ }
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
+ }
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],
663
+ "&:hover": {
664
+ backgroundColor: colors.brand[100]
665
+ }
666
+ },
667
+ "&:focus-visible": {
668
+ boxShadow: focusRings.brandShadowXs
669
+ }
670
+ }
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
682
+ },
683
+ "&:first-of-type": {
684
+ borderRadius: radius.md
685
+ }
686
+ }
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"
700
+ }
701
+ }
702
+ },
703
+ MuiCardContent: {
704
+ styleOverrides: {
705
+ root: {
706
+ padding: "24px",
707
+ "&:last-child": {
708
+ paddingBottom: "24px"
709
+ }
710
+ }
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
731
+ }
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]}`
769
+ },
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
788
+ },
789
+ "&:before": {
790
+ display: "none"
791
+ },
792
+ "&.Mui-expanded": {
793
+ margin: 0,
794
+ marginBottom: 8,
795
+ borderRadius: radius.lg
796
+ }
797
+ }
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
+ }
809
+ },
810
+ content: {
811
+ margin: "12px 0",
812
+ "&.Mui-expanded": {
813
+ margin: "12px 0"
814
+ }
815
+ }
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
835
+ }
836
+ }
837
+ },
838
+ MuiToolbar: {
839
+ styleOverrides: {
840
+ root: {
841
+ minHeight: 64,
842
+ "@media (min-width: 600px)": {
843
+ minHeight: 64
844
+ }
845
+ },
846
+ dense: {
847
+ minHeight: 48,
848
+ "@media (min-width: 600px)": {
849
+ minHeight: 48
850
+ }
851
+ }
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]
876
+ }
877
+ }
878
+ },
879
+ // ─── Table ───────────────────────────────────────────────────────
880
+ MuiTable: {
881
+ styleOverrides: {
882
+ root: {
883
+ borderCollapse: "separate",
884
+ borderSpacing: 0
885
+ }
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]
906
+ }
907
+ }
908
+ },
909
+ MuiTableHead: {
910
+ styleOverrides: {
911
+ root: {
912
+ backgroundColor: colors.gray[50],
913
+ borderBottom: `1px solid ${colors.gray[200]}`
914
+ }
915
+ }
916
+ },
917
+ MuiTableRow: {
918
+ styleOverrides: {
919
+ root: {
920
+ "&:last-child td, &:last-child th": {
921
+ border: 0
922
+ },
923
+ "&:hover": {
924
+ backgroundColor: colors.gray[50]
925
+ },
926
+ "&.Mui-selected": {
927
+ backgroundColor: colors.brand[50],
928
+ "&:hover": {
929
+ backgroundColor: colors.brand[50]
930
+ }
931
+ }
932
+ }
933
+ }
934
+ },
935
+ MuiTableContainer: {
936
+ styleOverrides: {
937
+ root: {
938
+ borderRadius: radius.xl,
939
+ border: `1px solid ${colors.gray[200]}`,
940
+ boxShadow: "none"
941
+ }
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
971
+ }
972
+ }
973
+ },
974
+ // ─── Divider ────────────────────────────────────────────────────
975
+ MuiDivider: {
976
+ styleOverrides: {
977
+ root: {
978
+ borderColor: colors.gray[200]
979
+ }
980
+ }
981
+ },
982
+ // ─── List ───────────────────────────────────────────────────────
983
+ MuiList: {
984
+ styleOverrides: {
985
+ root: {
986
+ padding: 4
987
+ }
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],
1001
+ "&:hover": {
1002
+ backgroundColor: colors.brand[100]
1003
+ }
1004
+ }
1005
+ }
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]
1028
+ }
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]
1046
+ }
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]
1067
+ }
1068
+ },
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]
1075
+ }
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]
1083
+ }
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]
1091
+ }
1092
+ },
1093
+ icon: {
1094
+ padding: "2px 0"
1095
+ }
1096
+ }
1097
+ },
1098
+ MuiAlertTitle: {
1099
+ styleOverrides: {
1100
+ root: {
1101
+ fontWeight: 600,
1102
+ fontSize: 14,
1103
+ lineHeight: "20px",
1104
+ marginBottom: 4
1105
+ }
1106
+ }
1107
+ },
1108
+ // ─── Backdrop ───────────────────────────────────────────────────
1109
+ MuiBackdrop: {
1110
+ styleOverrides: {
1111
+ root: {
1112
+ backgroundColor: "rgba(16, 24, 40, 0.7)"
1113
+ }
1114
+ }
1115
+ },
1116
+ // ─── Dialog ─────────────────────────────────────────────────────
1117
+ MuiDialog: {
1118
+ styleOverrides: {
1119
+ paper: {
1120
+ borderRadius: radius.xl,
1121
+ boxShadow: shadows.xl,
1122
+ padding: 0
1123
+ }
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"
1134
+ }
1135
+ }
1136
+ },
1137
+ MuiDialogContent: {
1138
+ styleOverrides: {
1139
+ root: {
1140
+ padding: "20px 24px",
1141
+ fontSize: 14,
1142
+ lineHeight: "20px",
1143
+ color: colors.gray[600]
1144
+ }
1145
+ }
1146
+ },
1147
+ MuiDialogActions: {
1148
+ styleOverrides: {
1149
+ root: {
1150
+ padding: "0 24px 24px",
1151
+ gap: 12
1152
+ }
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
1166
+ },
1167
+ barColorSecondary: {
1168
+ backgroundColor: colors.gray[600],
1169
+ borderRadius: radius.full
1170
+ }
1171
+ }
1172
+ },
1173
+ MuiCircularProgress: {
1174
+ styleOverrides: {
1175
+ colorPrimary: {
1176
+ color: colors.brand[600]
1177
+ },
1178
+ colorSecondary: {
1179
+ color: colors.gray[600]
1180
+ }
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
1197
+ }
1198
+ }
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
+ }
1213
+ }
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"
1231
+ }
1232
+ }
1233
+ }
1234
+ };
1235
+
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
+ ];
1289
+
1290
+ // src/theme/index.ts
1291
+ var forestThemeOptions = {
1292
+ palette,
1293
+ typography,
1294
+ components,
1295
+ shadows: shadows2,
1296
+ shape: {
1297
+ borderRadius: 8
1298
+ }
1299
+ };
1300
+ var forestTheme = styles.createTheme(forestThemeOptions);
1301
+
1302
+ exports.colors = colors;
1303
+ exports.components = components;
1304
+ exports.container = container;
1305
+ exports.display = display;
1306
+ exports.focusRings = focusRings;
1307
+ exports.fontFamily = fontFamily;
1308
+ exports.fontSize = fontSize;
1309
+ exports.fontWeight = fontWeight;
1310
+ exports.forestTheme = forestTheme;
1311
+ exports.forestThemeOptions = forestThemeOptions;
1312
+ exports.lineHeight = lineHeight;
1313
+ exports.palette = palette;
1314
+ exports.radius = radius;
1315
+ exports.shadows = shadows2;
1316
+ exports.spacing = spacing;
1317
+ exports.typography = typography;
1318
+ exports.widths = widths;
1319
+ //# sourceMappingURL=theme.js.map
1320
+ //# sourceMappingURL=theme.js.map