@liiift-studio/sales-portal 1.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.
Files changed (52) hide show
  1. package/README.md +461 -0
  2. package/SETUP.md +230 -0
  3. package/api/getAnalytics.d.ts +38 -0
  4. package/api/getAnalytics.js +346 -0
  5. package/api/getBalanceTransactions.d.ts +29 -0
  6. package/api/getBalanceTransactions.js +125 -0
  7. package/api/getDesignerInfo.d.ts +37 -0
  8. package/api/getDesignerInfo.js +98 -0
  9. package/api/getDesigners.d.ts +28 -0
  10. package/api/getDesigners.js +63 -0
  11. package/api/getPreviousSales.d.ts +23 -0
  12. package/api/getPreviousSales.js +82 -0
  13. package/api/getSales.d.ts +29 -0
  14. package/api/getSales.js +50 -0
  15. package/api/getSalesRange.d.ts +23 -0
  16. package/api/getSalesRange.js +58 -0
  17. package/api/utils/authMiddleware.js +84 -0
  18. package/api/utils/dateUtils.js +69 -0
  19. package/api/utils/feeCalculator.js +148 -0
  20. package/api/utils/processors/invoiceProcessor.js +337 -0
  21. package/api/utils/processors/paymentProcessor.js +462 -0
  22. package/api/utils/salesDataProcessing.js +596 -0
  23. package/api/utils/salesDataProcessor.js +224 -0
  24. package/api/utils/stripeFetcher.js +248 -0
  25. package/components/DateRangeSalesTable.js +1072 -0
  26. package/components/DebugValues.js +48 -0
  27. package/components/LicenseTypeList.js +193 -0
  28. package/components/LoginForm.js +219 -0
  29. package/components/PeriodComparison.js +501 -0
  30. package/components/Sales.js +773 -0
  31. package/components/SalesChart.js +307 -0
  32. package/components/SalesPortalPage.js +147 -0
  33. package/components/SalesTable.js +677 -0
  34. package/components/SummaryCards.js +345 -0
  35. package/components/TopPerformers.js +331 -0
  36. package/components/TypefaceList.js +154 -0
  37. package/components/table-columns.js +70 -0
  38. package/components/table-row-cells.js +295 -0
  39. package/data/countryCode.json +318 -0
  40. package/hooks/useSalesDateQuery.d.ts +20 -0
  41. package/hooks/useSalesDateQuery.js +71 -0
  42. package/index.d.ts +172 -0
  43. package/index.js +33 -0
  44. package/package.json +87 -0
  45. package/styles/sales-portal.module.scss +383 -0
  46. package/styles/sales-portal.theme.d.ts +5 -0
  47. package/styles/sales-portal.theme.js +799 -0
  48. package/utils/currencyUtils.d.ts +20 -0
  49. package/utils/currencyUtils.js +79 -0
  50. package/utils/salesDataProcessing.d.ts +44 -0
  51. package/utils/salesDataProcessing.js +596 -0
  52. package/utils/useSalesDateQuery.js +71 -0
@@ -0,0 +1,799 @@
1
+ import { createTheme } from '@mui/material';
2
+
3
+ export const marginY = '64px';
4
+ export const marginX = '66px';
5
+ export const marginXMobile = '32px';
6
+ export const marginYMobile = '33px';
7
+ export const margin = marginY + ' ' + marginX;
8
+ export const marginMobile = marginYMobile + ' ' + marginXMobile;
9
+
10
+ let size = createTheme({
11
+ spacing: 4,
12
+
13
+ breakpoints: {
14
+ values: {
15
+ xs: 0,
16
+ sm: 600,
17
+ md: 960,
18
+ lg: 1200,
19
+ xl: 1920,
20
+ }
21
+ },
22
+ });
23
+
24
+ ///////////////////////////////////////////////////////////////////////////
25
+ ////TYPOGRAPHY
26
+ ///////////////////////////////////////////////////////////////////////////
27
+ let typography = createTheme({
28
+
29
+ typography: {
30
+ fontFamily: '"Ordinary", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',
31
+ h1: {
32
+ maxWidth: '95%',
33
+ fontStyle: 'normal',
34
+ lineHeight: 1.1,
35
+ fontSize: 'clamp(2.5rem, 7vw,7rem)',
36
+ fontWeight: 860,
37
+ textWrap: "balance",
38
+ '&.heroText': {
39
+ maxWidth: 'none',
40
+ width: '110%',
41
+ textAlign: 'center',
42
+ overflow: 'hidden',
43
+ lineHeight: 1,
44
+ fontWeight: 'initial',
45
+ letterSpacing: 'initial',
46
+ fontSize: '9.5625rem',
47
+ [size.breakpoints.down('md')]: {
48
+ fontSize: '2.25rem',
49
+ lineHeight: 1.33,
50
+ },
51
+ [size.breakpoints.up('xl')]: {
52
+ fontSize: '5rem',
53
+ }
54
+ },
55
+ '&.MuiTypographyAlignCenter': {
56
+ marginLeft: 'auto',
57
+ marginRight: 'auto',
58
+ },
59
+ },
60
+ h2: {
61
+ maxWidth: '95%',
62
+ fontStyle: 'normal',
63
+ fontSize: 'clamp(2rem, 7vw, 5rem)',
64
+ lineHeight: 1.1,
65
+ letterSpacing: '0.01em',
66
+ textTransform: 'uppercase',
67
+ fontWeight: 500,
68
+ textWrap: "balance",
69
+ '&.MuiTypographyAlignCenter': {
70
+ marginLeft: 'auto',
71
+ marginRight: 'auto',
72
+ },
73
+ },
74
+ h3: {
75
+ maxWidth: '95%',
76
+ fontStyle: 'normal',
77
+ fontSize: '2.25rem',
78
+ lineHeight: 1.39,
79
+ fontWeight: 700,
80
+ textWrap: "balance",
81
+ '&.thin': {
82
+ fontWeight: 300,
83
+ lineHeight: 1.17,
84
+ },
85
+ '&.regular': {
86
+ fontWeight: 500,
87
+ lineHeight: 1.17,
88
+ },
89
+ '&.MuiTypographyAlignCenter': {
90
+ marginLeft: 'auto',
91
+ marginRight: 'auto',
92
+ },
93
+ [size.breakpoints.down('md')]: {
94
+ fontSize: '1.75rem',
95
+ },
96
+ [size.breakpoints.down('sm')]: {
97
+ fontSize: '1.25rem',
98
+ },
99
+ },
100
+ h4: {
101
+ maxWidth: '95%',
102
+ fontStyle: 'normal',
103
+ fontSize: '1.6875rem',
104
+ lineHeight: 1.33,
105
+ letterSpacing: '0.06em',
106
+ textTransform: 'uppercase',
107
+ textWrap: "balance",
108
+ fontWeight: 510,
109
+ '&.light': {
110
+ fontWeight: 400,
111
+ },
112
+ '&.bold, strong': {
113
+ fontWeight: 860,
114
+ },
115
+ '&.MuiTypographyAlignCenter': {
116
+ marginLeft: 'auto',
117
+ marginRight: 'auto',
118
+ },
119
+ [size.breakpoints.down('md')]: {
120
+ fontSize: '1.375rem',
121
+ lineHeight: 1.27,
122
+ },
123
+ },
124
+ h5: {
125
+ maxWidth: '95%',
126
+ fontStyle: 'normal',
127
+ fontSize: '1.1rem',
128
+ lineHeight: 1.25,
129
+ letterSpacing: '0.05em',
130
+ textTransform: 'uppercase',
131
+ textWrap: "balance",
132
+ fontWeight: 510,
133
+ transform: 'translateY(0.1em)',
134
+ '&.medium': {
135
+ fontWeight: 640,
136
+ },
137
+ '&.bold, strong': {
138
+ fontWeight: 860,
139
+ },
140
+ '&.MuiTypographyAlignCenter': {
141
+ marginLeft: 'auto',
142
+ marginRight: 'auto',
143
+ },
144
+ [size.breakpoints.down('md')]: {
145
+ fontSize: '1rem',
146
+ },
147
+ },
148
+ h6: {
149
+ maxWidth: '95%',
150
+ fontStyle: 'normal',
151
+ fontSize: '.875rem',
152
+ lineHeight: 1.42,
153
+ fontWeight: 510,
154
+ '&.light': {
155
+ fontWeight: 400,
156
+ opacity: 0.7,
157
+ },
158
+ '&.uppercase': {
159
+ textTransform: 'uppercase',
160
+ letterSpacing: '0.05em',
161
+ },
162
+ '&.bold, strong': {
163
+ fontWeight: 860,
164
+ },
165
+ '&.MuiTypographyAlignCenter': {
166
+ marginLeft: 'auto',
167
+ marginRight: 'auto',
168
+ },
169
+ },
170
+ body1: {
171
+ '&.MuiTypography-body1': {
172
+ maxWidth: '750px',
173
+ fontStyle: 'normal',
174
+ fontSize: '1.5rem',
175
+ lineHeight: 1.33,
176
+ wordSpacing: '-0.04em',
177
+ fontWeight: 400,
178
+ '&.uppercase': {
179
+ textTransform: 'uppercase',
180
+ letterSpacing: '0.01em',
181
+ },
182
+ '&.bold, strong': {
183
+ fontWeight: 700,
184
+ },
185
+ [size.breakpoints.down('md')]: {
186
+ fontSize: '1.25rem',
187
+ lineHeight: 1.4,
188
+ },
189
+ [size.breakpoints.up('lg')]: {
190
+ maxWidth: '850px',
191
+ },
192
+ [size.breakpoints.up('xl')]: {
193
+ maxWidth: '1000px',
194
+ },
195
+ '&.MuiTypographyAlignCenter': {
196
+ marginLeft: 'auto',
197
+ marginRight: 'auto',
198
+ },
199
+ },
200
+ },
201
+ body2: {
202
+ maxWidth: '750px',
203
+ fontStyle: 'normal',
204
+ wordSpacing: '-0.04em',
205
+ fontSize: '.9375rem',
206
+ lineHeight: 1.22,
207
+ fontWeight: 500,
208
+ [size.breakpoints.down('md')]: {
209
+ fontSize: '1rem',
210
+ lineHeight: 1.25,
211
+ },
212
+ [size.breakpoints.up('lg')]: {
213
+ maxWidth: '850px',
214
+ },
215
+ [size.breakpoints.up('xl')]: {
216
+ maxWidth: '1000px',
217
+ },
218
+ '&.bold, strong, b': {
219
+ fontWeight: 700,
220
+ },
221
+ '&.MuiTypographyAlignCenter': {
222
+ marginLeft: 'auto',
223
+ marginRight: 'auto',
224
+ },
225
+ },
226
+ },
227
+ });
228
+
229
+ let overrides = createTheme({
230
+ ///////////////////////////////////
231
+ //////Overrides
232
+ ///////////////////////////////////
233
+ components: {
234
+
235
+ MuiCssBaseline: {
236
+ styleOverrides: ''
237
+ },
238
+
239
+ MuiAppBar: {
240
+ defaultProps: {
241
+ elevation: 0,
242
+ },
243
+ styleOverrides: {
244
+ root: {
245
+ zIndex: 1300,
246
+ },
247
+ },
248
+ },
249
+
250
+ MuiToolbar: {
251
+ styleOverrides: {
252
+ root: {
253
+ padding: `0 ${marginX} 0 ${marginX}`,
254
+ minHeight: marginY,
255
+ [size.breakpoints.down('md')]: {
256
+ padding: `0 0 0 ${marginXMobile}`,
257
+ },
258
+ },
259
+ },
260
+ },
261
+ MuiDrawer: {
262
+ defaultProps: {
263
+ elevation: 0,
264
+ },
265
+ styleOverrides: {
266
+ root: {
267
+ height: '100%',
268
+ zIndex: '1200',
269
+ '&#menuDrawer, &#cartDrawer': {
270
+ '& .MuiDrawer-paper': {
271
+ backgroundColor: 'var(--black)',
272
+ paddingBottom: 0,
273
+ marginTop: marginY,
274
+ marginBottom: marginY,
275
+ '@media (max-width: 600px)': {
276
+ marginTop: marginY,
277
+ marginBottom: 0,
278
+ }
279
+ },
280
+ },
281
+ '&#loginDrawer': {
282
+ zIndex: 1300,
283
+ },
284
+ '.MuiBackdrop-root': {
285
+ top: marginY,
286
+ },
287
+ '@media (max-width: 960px)': {
288
+ left: '0',
289
+ },
290
+ },
291
+ paper: {
292
+ height: '100%',
293
+ },
294
+ },
295
+ },
296
+ MuiPopover: {
297
+ styleOverrides: {
298
+ root: {
299
+ '&.menuDrawer': {
300
+ right: '0',
301
+ },
302
+ },
303
+ },
304
+ },
305
+ MuiMenu: {
306
+ defaultProps: {
307
+ transformOrigin: {
308
+ vertical: 'top',
309
+ horizontal: 'right',
310
+ },
311
+ elevation: 0,
312
+ },
313
+ },
314
+ MuiContainer: {
315
+ defaultProps: {
316
+ disableGutters: true,
317
+ maxWidth: 'false',
318
+ },
319
+ styleOverrides: {
320
+ root: {
321
+ position: 'relative',
322
+ width: 'auto',
323
+ margin: '0px' + ' ' + marginX,
324
+ [size.breakpoints.down('md')]: {
325
+ margin: '0px' + ' ' + marginXMobile,
326
+ },
327
+ '&.MuiContainer-maxWidthFalse': {
328
+ marginLeft: marginX,
329
+ marginRight: marginX,
330
+ paddingLeft: 0,
331
+ paddingRight: 0,
332
+ [size.breakpoints.down('md')]: {
333
+ marginLeft: marginXMobile,
334
+ marginRight: marginXMobile,
335
+ },
336
+ '&.noMargin': {
337
+ // overflow : 'hidden',
338
+ marginLeft: '0px',
339
+ marginRight: '0px',
340
+ [size.breakpoints.down('md')]: {
341
+ marginLeft: '0px',
342
+ marginRight: '0px',
343
+ },
344
+ },
345
+ },
346
+ '&.noRightMargin': {
347
+ marginRight: '0px',
348
+ },
349
+ '&.typefaceContainer': {
350
+ transition: 'all 0.3s ease-in-out',
351
+ },
352
+ '&.fullHeight': {
353
+ height: `calc(100vh - ${marginY}*2)`,
354
+ [size.breakpoints.down('md')]: {
355
+ height: `calc(100vh - ${marginYMobile}*2)`,
356
+ },
357
+ },
358
+ '&.designSpace': {
359
+ maxHeight: `calc(100vh - ${marginY}*2)`,
360
+ height: 'fit-content',
361
+ [size.breakpoints.down('md')]: {
362
+ maxHeight: `calc(100vh - ${marginYMobile}*2)`,
363
+ },
364
+ }
365
+ },
366
+
367
+ },
368
+ },
369
+ MuiLink: {
370
+ styleOverrides: {
371
+ root: {
372
+ height: 'inherit',
373
+ textDecoration: 'none',
374
+ display: 'flex',
375
+ alignItems: 'center',
376
+ },
377
+ },
378
+ },
379
+ MuiList: {
380
+ styleOverrides: {
381
+ root: {
382
+ display: 'flex',
383
+ flexDirection: 'column',
384
+ paddingBottom: '0px',
385
+ paddingTop: '0px',
386
+ // alignItems: 'flex-end',()
387
+ // marginRight: marginX,
388
+ },
389
+ },
390
+ },
391
+ MuiMenuItem: {
392
+ styleOverrides: {
393
+ root: {
394
+ paddingLeft: 0,
395
+ paddingRight: 0,
396
+ paddingBottom: 0,
397
+ paddingTop: 0,
398
+ },
399
+ },
400
+ },
401
+ MuiButtonBase: {
402
+ defaultProps: {
403
+ // disableElevation: true,
404
+ disableRipple: true,
405
+ },
406
+ variants: [
407
+ {
408
+ props: { variant: 'outlined' },
409
+ style: {
410
+ borderRadius: '0px',
411
+ border: `1px solid red`,
412
+ color: 'var(--white, white)',
413
+ padding: '60px, 10px',
414
+ maxHeight: '80%',
415
+ '&:hover': {
416
+ backgroundColor: 'var(--white, white)',
417
+ color: 'var(--black, black)',
418
+ borderColor: 'var(--white, white)',
419
+ },
420
+ },
421
+ },
422
+ {
423
+ props: { variant: 'contained' },
424
+ style:{
425
+ borderRadius:'var(--borderRadius)',
426
+ backgroundColor:'var(--red)',
427
+ width:'fit-content',
428
+ color:'var(--white)',
429
+ px:5,
430
+ py:3,
431
+ '&:hover':{
432
+ backgroundColor:'var(--black)',
433
+ color:'var(--green)',
434
+ }
435
+ }
436
+ }
437
+ ],
438
+ styleOverrides: {
439
+ root: {
440
+ position: 'relative',
441
+ },
442
+ },
443
+ },
444
+ MuiIconButton: {
445
+ defaultProps: {
446
+ disableRipple: true,
447
+ },
448
+ styleOverrides: {
449
+ root: {
450
+ },
451
+ },
452
+ },
453
+ MuiCard: {
454
+ defaultProps: {
455
+ elevation: 0,
456
+ },
457
+ styleOverrides: {
458
+ root: {
459
+ overflow: 'visible',
460
+ borderRadius: '0px',
461
+
462
+ },
463
+ },
464
+ },
465
+ MuiCardActionArea: {
466
+ defaultProps: {
467
+ disableRipple: true,
468
+ disableTouchRipple: true,
469
+ },
470
+ styleOverrides: {
471
+ root: {
472
+ '&:hover': {
473
+ '.MuiCardActionArea-focusHighlight': {
474
+ opacity: 0,
475
+ },
476
+ },
477
+ },
478
+ },
479
+ },
480
+ MuiFormControl: {
481
+ variants: [
482
+ {
483
+ props: { variant: 'tester' },
484
+ style: {
485
+ },
486
+ },
487
+ ],
488
+ styleOverrides: {
489
+ root: {
490
+ },
491
+ },
492
+ },
493
+ MuiSelect: {
494
+ variants: [
495
+ {
496
+ props: { variant: 'standard' },
497
+ style: {
498
+ '&:before': {
499
+ content: 'none',
500
+ },
501
+ 'svg': {
502
+ color: 'var(--black, black)',
503
+ },
504
+
505
+ }
506
+ }
507
+ ],
508
+ styleOverrides: {
509
+ root: {
510
+ border: 'none!important',
511
+ outline: 'none!important',
512
+ boxShadow: 'none!important',
513
+
514
+ 'svg': {
515
+ color: 'var(--white, white)',
516
+ },
517
+
518
+ '&:focus': {
519
+ border: 'none',
520
+ backgroundColor: 'var(--white, white)',
521
+ },
522
+ '&.white': {
523
+ border: 'none',
524
+ backgroundColor: 'var(--white, white)',
525
+ color: 'var(--black, black)',
526
+ 'svg': {
527
+ color: 'var(--black, black)',
528
+ },
529
+
530
+ },
531
+ },
532
+ },
533
+ },
534
+ MuiInputBase: {
535
+ styleOverrides: {
536
+ root: {
537
+ textOverflow: 'ellipsis',
538
+ fontStyle: 'normal',
539
+ fontWeight: '500',
540
+ fontSize: '.9375rem',
541
+ lineHeight: 1.22,
542
+ [size.breakpoints.down('md')]: {
543
+ fontSize: '1rem',
544
+ lineHeight: 1.25,
545
+ maxWidth: '75vw',
546
+
547
+ },
548
+ width: '100%',
549
+ border: 'none',
550
+ '&.globalInput': {
551
+ fontSize: '1.1rem',
552
+ lineHeight: 1.25,
553
+ letterSpacing: '0.05em',
554
+ 'input::placeholder': {
555
+ opacity: 1,
556
+ color:'var(--white)',
557
+ fontSize: '1.1rem',
558
+ lineHeight: 1.25,
559
+ letterSpacing: '0.05em',
560
+ transform: 'translateY(0)',
561
+ },
562
+ },
563
+ '.MuiNativeSelect-select': {
564
+ textOverflow: 'ellipsis',
565
+ 'option': {
566
+ color: 'var(--white, white)',
567
+ backgroundColor: 'var(--black, black)',
568
+ },
569
+ '&:not([multiple]) option': {
570
+ color: 'var(--white, white)',
571
+ backgroundColor: 'var(--black, black)',
572
+ },
573
+ '&:not([multiple]) optgroup': {
574
+ color: 'var(--white, white)',
575
+ backgroundColor: 'var(--black, black)',
576
+ }
577
+ },
578
+ '&:after': {
579
+ display: 'none',
580
+ },
581
+ '&:before': {
582
+ display: 'none'
583
+ },
584
+ }
585
+ }
586
+ },
587
+ MuiTextField: {
588
+ styleOverrides: {
589
+ root: {
590
+ '&.autoComplete': {
591
+ padding: '1rem 0',
592
+ textTransform: 'uppercase',
593
+ '& .MuiFormLabel-root ': {
594
+ display: 'none',
595
+ padding: 0,
596
+ margin: 0,
597
+ },
598
+ '& .MuiInputBase-root': {
599
+ padding: 0,
600
+ margin: 0,
601
+ '& .MuiAutocomplete-root': {
602
+ padding: 0,
603
+ '& .MuiAutocomplete-inputRoot': {
604
+ padding: 0,
605
+ '& .MuiAutocomplete-input': {
606
+ padding: 0,
607
+ },
608
+ },
609
+ },
610
+ '&::after': {
611
+ borderBottom: 'none',
612
+ },
613
+ '&::before': {
614
+ borderBottom: 'none',
615
+ },
616
+ '& .MuiInputBase-input': {
617
+ padding: 0,
618
+ margin: 0,
619
+ },
620
+ '&:hover': {
621
+ '&::after': {
622
+ borderBottom: 'none',
623
+ },
624
+ '&::before': {
625
+ borderBottom: 'none',
626
+ },
627
+ },
628
+ '& .MuiOutlinedInput-notchedOutline': {
629
+ display: 'none',
630
+ }
631
+ },
632
+ '& .MuiInputAdornment-root': {
633
+ display: 'none',
634
+ },
635
+ }
636
+ },
637
+ },
638
+ },
639
+ MuiPaper: {
640
+ defaultProps: {
641
+ square: true,
642
+ },
643
+ styleOverrides: {
644
+ root: {
645
+ '&.white': {
646
+ backgroundColor: 'var(--white, white)',
647
+ color: 'var(--black, black)',
648
+ 'ul': {
649
+ color: 'var(--black, black)',
650
+ },
651
+ },
652
+ '&.MuiAccordion-root': {
653
+ '&::before': {
654
+ content: 'none',
655
+ }
656
+ },
657
+ '& .MuiList-root': {
658
+ color: 'var(--black, black)',
659
+ borderRadius: '0px',
660
+ '& .MuiMenuItem-root': {
661
+ padding: '0 14px',
662
+ '&.Mui-selected': {
663
+ backgroundColor: 'var(--green, green)',
664
+ },
665
+ },
666
+ }
667
+ },
668
+ },
669
+ },
670
+ MuiAccordion: {
671
+ styleOverrides: {
672
+ root: {
673
+ backgroundColor: 'var(--black)',
674
+ },
675
+ },
676
+ },
677
+ MuiAccordionSummary: {
678
+ styleOverrides: {
679
+ root: {
680
+ backgroundColor: 'var(--black)',
681
+ '&.Mui-focusVisible': {
682
+ backgroundColor: 'var(--black)',
683
+ },
684
+ },
685
+ },
686
+ },
687
+ },
688
+ });
689
+
690
+
691
+
692
+
693
+ // Export enhanced sales dashboard theme
694
+ export let salesTheme = createTheme({
695
+ spacing: size.spacing,
696
+ breakpoints: size.breakpoints,
697
+ typography: typography.typography,
698
+ // Add specific palette for sales dashboard
699
+ palette: {
700
+ primary: {
701
+ main: '#000000',
702
+ contrastText: '#FFFFFF',
703
+ },
704
+ secondary: {
705
+ main: '#4CAF50', // Green for positive indicators
706
+ contrastText: '#FFFFFF',
707
+ },
708
+ error: {
709
+ main: '#F44336', // Red for negative indicators/refunds
710
+ contrastText: '#FFFFFF',
711
+ },
712
+ info: {
713
+ main: '#2196F3', // Blue for neutral information
714
+ },
715
+ warning: {
716
+ main: '#FF9800', // Orange for warnings
717
+ },
718
+ dashboard: {
719
+ card: '#F5F5F5',
720
+ cardHover: '#EEEEEE',
721
+ positive: '#4CAF50',
722
+ negative: '#F44336',
723
+ neutral: '#757575',
724
+ chart1: '#1565C0', // Primary chart line
725
+ chart2: '#757575', // Secondary chart line (comparison)
726
+ chartBar1: 'rgba(33, 150, 243, 0.7)', // Bar chart primary
727
+ chartBar2: 'rgba(156, 39, 176, 0.7)', // Bar chart secondary
728
+ },
729
+ },
730
+ components: {
731
+ ...overrides.components,
732
+ // Enhance paper component for dashboard cards
733
+ MuiPaper: {
734
+ ...overrides.components.MuiPaper,
735
+ styleOverrides: {
736
+ ...overrides.components.MuiPaper.styleOverrides,
737
+ root: {
738
+ ...overrides.components.MuiPaper.styleOverrides.root,
739
+ '&.dashboardCard': {
740
+ padding: '16px',
741
+ borderRadius: '4px',
742
+ transition: 'all 0.3s ease',
743
+ boxShadow: '0 2px 4px rgba(0,0,0,0.05)',
744
+ '&:hover': {
745
+ boxShadow: '0 4px 8px rgba(0,0,0,0.1)',
746
+ transform: 'translateY(-2px)',
747
+ },
748
+ },
749
+ },
750
+ },
751
+ },
752
+ // Enhance data grid for better table appearance
753
+ MuiDataGrid: {
754
+ styleOverrides: {
755
+ root: {
756
+ border: 'none',
757
+ '& .MuiDataGrid-columnHeaders': {
758
+ backgroundColor: 'rgba(0, 0, 0, 0.04)',
759
+ borderBottom: '1px solid rgba(0, 0, 0, 0.1)',
760
+ },
761
+ '& .MuiDataGrid-cell': {
762
+ borderBottom: '1px solid rgba(0, 0, 0, 0.05)',
763
+ },
764
+ '& .MuiDataGrid-row:hover': {
765
+ backgroundColor: 'rgba(0, 0, 0, 0.02)',
766
+ },
767
+ '& .MuiDataGrid-columnHeader--sorted': {
768
+ backgroundColor: 'rgba(25, 118, 210, 0.12)',
769
+ },
770
+ '& .MuiDataGrid-columnHeader--sorted:hover': {
771
+ backgroundColor: 'rgba(25, 118, 210, 0.18)',
772
+ },
773
+ },
774
+ },
775
+ },
776
+ // Enhance charts
777
+ MuiResponsiveContainer: {
778
+ styleOverrides: {
779
+ root: {
780
+ '& .recharts-surface': {
781
+ overflow: 'visible',
782
+ },
783
+ },
784
+ },
785
+ },
786
+ // Improve toggle buttons for view switching
787
+ MuiToggleButton: {
788
+ styleOverrides: {
789
+ root: {
790
+ textTransform: 'none',
791
+ '&.Mui-selected': {
792
+ backgroundColor: 'rgba(0, 0, 0, 0.1)',
793
+ color: 'var(--black, black)',
794
+ },
795
+ },
796
+ },
797
+ },
798
+ },
799
+ });