@opengeoweb/theme 2.2.0 → 2.4.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/index.esm.js CHANGED
@@ -72,18 +72,30 @@ function _nonIterableRest() {
72
72
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
73
73
  }
74
74
 
75
- var buttonStyle = function buttonStyle(button) {
75
+ /* *
76
+ * Licensed under the Apache License, Version 2.0 (the "License");
77
+ * you may not use this file except in compliance with the License.
78
+ * You may obtain a copy of the License at
79
+ *
80
+ * http://www.apache.org/licenses/LICENSE-2.0
81
+ *
82
+ * Unless required by applicable law or agreed to in writing, software
83
+ * distributed under the License is distributed on an "AS IS" BASIS,
84
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
85
+ * See the License for the specific language governing permissions and
86
+ * limitations under the License.
87
+ *
88
+ * Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
89
+ * Copyright 2021 - Finnish Meteorological Institute (FMI)
90
+ * */
91
+ var gwButtonVariants = ['primary', 'secondary', 'tertiary', 'flat', 'tool', 'boxed'];
92
+
93
+ var defaultButtonStyle = function defaultButtonStyle(button) {
76
94
  return {
77
95
  // default styling
78
96
  color: button["default"].color,
79
97
  backgroundColor: button["default"].fill,
80
98
  textTransform: 'capitalize',
81
- padding: '12px 8px',
82
- height: '40px',
83
- borderStyle: 'solid',
84
- borderWidth: '1px',
85
- borderColor: button["default"].borderColor,
86
- borderRadius: '5px',
87
99
  // hover styling
88
100
  '&:hover': {
89
101
  backgroundColor: button.mouseOver.fill,
@@ -103,7 +115,17 @@ var buttonStyle = function buttonStyle(button) {
103
115
  backgroundColor: button.disabled.fill,
104
116
  color: button.disabled.color,
105
117
  borderColor: button.disabled.borderColor
106
- },
118
+ }
119
+ };
120
+ };
121
+ var buttonStyle = function buttonStyle(button) {
122
+ return Object.assign(Object.assign({}, defaultButtonStyle(button)), {
123
+ padding: '12px 8px',
124
+ height: '40px',
125
+ borderStyle: 'solid',
126
+ borderWidth: '1px',
127
+ borderColor: button["default"].borderColor,
128
+ borderRadius: '5px',
107
129
  // size styling
108
130
  '&[class*="sizeSmall"]': {
109
131
  fontSize: '12px',
@@ -117,9 +139,9 @@ var buttonStyle = function buttonStyle(button) {
117
139
  fontSize: '26px'
118
140
  }
119
141
  }
120
- };
142
+ });
121
143
  };
122
- var toggleButtonStyle = function toggleButtonStyle(buttonVariants) {
144
+ var variantsToClassName = function variantsToClassName(buttonVariants) {
123
145
  return buttonVariants.reduce(function (variants, _ref) {
124
146
  var variant = _ref.props.variant,
125
147
  style = _ref.style;
@@ -127,32 +149,14 @@ var toggleButtonStyle = function toggleButtonStyle(buttonVariants) {
127
149
  }, {});
128
150
  };
129
151
  var buttonVariants = function buttonVariants(buttons) {
130
- return [{
131
- props: {
132
- variant: 'primary'
133
- },
134
- style: buttonStyle(buttons.primary)
135
- }, {
136
- props: {
137
- variant: 'secondary'
138
- },
139
- style: buttonStyle(buttons.secondary)
140
- }, {
141
- props: {
142
- variant: 'tertiary'
143
- },
144
- style: buttonStyle(buttons.tertiary)
145
- }, {
146
- props: {
147
- variant: 'flat'
148
- },
149
- style: buttonStyle(buttons.flat)
150
- }, {
151
- props: {
152
- variant: 'tool'
153
- },
154
- style: buttonStyle(buttons.tool)
155
- }];
152
+ return gwButtonVariants.map(function (variant) {
153
+ return {
154
+ props: {
155
+ variant: variant
156
+ },
157
+ style: buttonStyle(buttons[variant])
158
+ };
159
+ });
156
160
  };
157
161
 
158
162
  var hex2rgba = function hex2rgba(hex) {
@@ -204,8 +208,24 @@ var createShadows = function createShadows(elevations) {
204
208
  });
205
209
  };
206
210
  var BORDER_RADIUS = 3;
211
+ var breakpoints = {
212
+ mobile: 0,
213
+ tablet: 768,
214
+ desktop: 1024,
215
+ dekstopHD: 1440,
216
+ dekstopHDWide: 1920
217
+ };
207
218
  var createTheme = function createTheme(paletteType, geowebColors, shadows) {
208
219
  return createTheme$1({
220
+ breakpoints: {
221
+ values: {
222
+ xs: breakpoints.mobile,
223
+ sm: breakpoints.tablet,
224
+ md: breakpoints.desktop,
225
+ lg: breakpoints.dekstopHD,
226
+ xl: breakpoints.dekstopHDWide
227
+ }
228
+ },
209
229
  palette: {
210
230
  mode: paletteType,
211
231
  secondary: {
@@ -234,7 +254,13 @@ var createTheme = function createTheme(paletteType, geowebColors, shadows) {
234
254
  },
235
255
  MuiToggleButton: {
236
256
  styleOverrides: {
237
- root: toggleButtonStyle(buttonVariants(geowebColors.buttons))
257
+ root: variantsToClassName(buttonVariants(geowebColors.buttons))
258
+ }
259
+ },
260
+ MuiIconButton: {
261
+ // TODO: https://gitlab.com/opengeoweb/opengeoweb/-/issues/1926 remove default styling and create CustomIconButton
262
+ styleOverrides: {
263
+ root: defaultButtonStyle(geowebColors.buttons.flat)
238
264
  }
239
265
  },
240
266
  MuiCssBaseline: {
@@ -243,17 +269,16 @@ var createTheme = function createTheme(paletteType, geowebColors, shadows) {
243
269
  MuiMenuItem: {
244
270
  styleOverrides: {
245
271
  root: {
272
+ minHeight: '48px!important',
246
273
  fontSize: '0.875rem',
247
274
  letterSpacing: '0.25px',
248
- ':not(:last-child)&:after': {
249
- content: '""',
250
- position: 'absolute',
251
- width: '100%',
252
- height: 1,
253
- background: geowebColors.greys.accessible,
254
- bottom: 0,
255
- left: 0,
256
- opacity: 0.5
275
+ divider: {
276
+ borderBottomColor: geowebColors.greys.accessibleLight
277
+ },
278
+ li: {
279
+ '&:hover': {
280
+ backgroundColor: geowebColors.tab.mouseOver.rgba
281
+ }
257
282
  },
258
283
  '&.Mui-selected': {
259
284
  background: 'none',
@@ -404,13 +429,23 @@ var createTheme = function createTheme(paletteType, geowebColors, shadows) {
404
429
  styleOverrides: {
405
430
  root: {
406
431
  color: geowebColors.typographyAndIcons.text,
407
- fontSize: '14px'
432
+ fontSize: '14px',
433
+ minHeight: '36px'
408
434
  },
409
435
  divider: {
410
436
  borderBottomColor: hex2rgba(geowebColors.greys.accessible, 0.2)
411
437
  }
412
438
  }
413
439
  },
440
+ MuiListItemIcon: {
441
+ styleOverrides: {
442
+ root: {
443
+ color: geowebColors.typographyAndIcons.icon,
444
+ width: '24px',
445
+ height: '24px'
446
+ }
447
+ }
448
+ },
414
449
  MuiBackdrop: {
415
450
  styleOverrides: {
416
451
  root: {
@@ -445,54 +480,82 @@ var createTheme = function createTheme(paletteType, geowebColors, shadows) {
445
480
  }
446
481
  }
447
482
  },
448
- // TODO: implement correct theming values https://gitlab.com/opengeoweb/opengeoweb/-/issues/1369
449
483
  MuiAlert: {
450
484
  styleOverrides: {
451
485
  standardError: {
452
- border: '1px solid #c00000',
486
+ border: geowebColors.functional.errorOutline.border,
453
487
  borderRadius: '0px',
454
- backgroundColor: '#fff0ea'
488
+ backgroundColor: geowebColors.functional.errorOutline.fill,
489
+ '& .MuiAlert-icon': {
490
+ color: geowebColors.functional.error,
491
+ opacity: 1
492
+ }
455
493
  },
456
494
  standardWarning: {
457
- border: '1px solid #ffa800',
495
+ border: geowebColors.functional.warningOutline.border,
458
496
  borderRadius: '0px',
459
- backgroundColor: '#fff8eb'
497
+ backgroundColor: geowebColors.functional.warningOutline.fill,
498
+ '& .MuiAlert-icon': {
499
+ color: geowebColors.functional.warning,
500
+ opacity: 1
501
+ }
460
502
  },
461
503
  standardInfo: {
462
- border: '1px solid #0062e6',
504
+ border: geowebColors.functional.notificationOutline.border,
463
505
  borderRadius: '0px',
464
- backgroundColor: '#eaf3ff'
506
+ backgroundColor: geowebColors.functional.notificationOutline.fill,
507
+ '& .MuiAlert-icon': {
508
+ color: geowebColors.functional.notification,
509
+ opacity: 1
510
+ }
465
511
  },
466
512
  standardSuccess: {
467
- border: '1px solid #72bb23',
513
+ border: geowebColors.functional.successOutline.border,
468
514
  borderRadius: '0px',
469
- backgroundColor: '#fcffeb'
515
+ backgroundColor: geowebColors.functional.successOutline.fill,
516
+ '& .MuiAlert-icon': {
517
+ color: geowebColors.functional.success,
518
+ opacity: 1
519
+ }
470
520
  },
471
521
  action: {
472
- color: '#0075a9'
522
+ color: geowebColors.buttons.tertiary["default"].color
473
523
  },
474
524
  message: {
475
525
  fontSize: '14px',
476
526
  lineHeight: 1.43,
477
527
  letterSpacing: '0.25px',
478
- color: '#051039'
528
+ color: geowebColors.typographyAndIcons.text
479
529
  }
480
530
  }
481
531
  },
532
+ MuiTextField: {
533
+ defaultProps: {
534
+ variant: 'filled'
535
+ }
536
+ },
482
537
  MuiFilledInput: {
483
538
  styleOverrides: {
484
539
  root: {
485
540
  backgroundColor: geowebColors.textInputField["default"].rgba,
486
541
  '&.Mui-focused': {
487
- backgroundColor: geowebColors.textInputField.active.rgba
542
+ backgroundColor: geowebColors.textInputField.active.rgba,
543
+ '&:after': {
544
+ borderColor: 'transparent'
545
+ }
488
546
  },
489
547
  '&.Mui-disabled': {
490
548
  backgroundColor: geowebColors.textInputField.disabled.rgba
549
+ },
550
+ '&.Mui-error': {
551
+ '&:after': {
552
+ borderColor: geowebColors.captions.captionError.color
553
+ }
491
554
  }
492
555
  },
493
556
  underline: {
494
557
  '&:after': {
495
- borderBottom: 'transparent'
558
+ borderWidth: '1px'
496
559
  },
497
560
  '&.Mui-disabled:before': {
498
561
  borderBottomStyle: 'solid'
@@ -694,23 +757,35 @@ var colors$1 = {
694
757
  borderColor: 'transparent'
695
758
  }
696
759
  },
697
- primaryMouseover: {
698
- fill: '#1047B0'
699
- },
700
- primaryActive: {
701
- fill: '#186DFF'
702
- },
703
- flatMouseover: {
704
- fill: '#E3E4E7'
760
+ boxed: {
761
+ "default": {
762
+ fill: 'transparent',
763
+ color: '#575F7A',
764
+ borderColor: '#575f7a'
765
+ },
766
+ mouseOver: {
767
+ fill: '#E3E4E7',
768
+ color: '#575F7A',
769
+ borderColor: '#575f7a'
770
+ },
771
+ active: {
772
+ fill: '#186DFF',
773
+ color: '#FFFFFF',
774
+ borderColor: 'transparent'
775
+ },
776
+ activeMouseOver: {
777
+ fill: '#1047B0',
778
+ color: '#FFFFFF',
779
+ borderColor: 'transparent'
780
+ },
781
+ disabled: {
782
+ fill: 'transparent',
783
+ color: '#707070',
784
+ borderColor: 'transparent'
785
+ }
705
786
  },
706
787
  focusDefault: {
707
788
  outline: 'solid 2px #419cfe'
708
- },
709
- disabled: {
710
- fill: '#E8E5E5'
711
- },
712
- surfaceIconDefault: {
713
- fill: '#F5F5F5'
714
789
  }
715
790
  },
716
791
  typographyAndIcons: {
@@ -743,7 +818,8 @@ var colors$1 = {
743
818
  }
744
819
  },
745
820
  greys: {
746
- accessible: '#767676'
821
+ accessible: '#767676',
822
+ accessibleLight: '#C5C5C5'
747
823
  },
748
824
  cards: {
749
825
  cardContainer: '#FFFFFF',
@@ -824,6 +900,10 @@ var colors$1 = {
824
900
  fill: '#767676',
825
901
  opacity: 0.5
826
902
  },
903
+ timelineSelectionBackground: {
904
+ fill: '#11D1C6',
905
+ opacity: 0.25
906
+ },
827
907
  // time scale
828
908
  timeScaleText: {
829
909
  fontSize: 12
@@ -863,10 +943,6 @@ var colors$1 = {
863
943
  }
864
944
  },
865
945
  layerManager: {
866
- tableRowDefaultIcon: {
867
- fill: '#051039',
868
- opacity: 0.67
869
- },
870
946
  tableRowDefaultText: {
871
947
  color: '#051039',
872
948
  opacity: 0.87,
@@ -876,13 +952,6 @@ var colors$1 = {
876
952
  fill: '#FFFFFF',
877
953
  border: '1px solid #EEEEEE'
878
954
  },
879
- tableRowMouseover: {
880
- fill: '#051039',
881
- opacity: 0.07
882
- },
883
- tableRowDisabledIcon: {
884
- fill: '#767676'
885
- },
886
955
  tableRowDisabledText: {
887
956
  color: '#767676',
888
957
  opacity: 0.87,
@@ -919,6 +988,32 @@ var colors$1 = {
919
988
  color: '#707070',
920
989
  opacity: 1
921
990
  }
991
+ },
992
+ functional: {
993
+ success: '#72BB23',
994
+ successOutline: {
995
+ fill: '#FCFFEB',
996
+ border: ' 1px solid #72BB23'
997
+ },
998
+ error: '#C00000',
999
+ errorOutline: {
1000
+ fill: '#F9E8EA',
1001
+ border: '1px solid #C00000'
1002
+ },
1003
+ warning: '#FFA800',
1004
+ warningOutline: {
1005
+ fill: '#FFF8EB',
1006
+ border: '1px solid #FFA800'
1007
+ },
1008
+ warningHighlight: {
1009
+ fill: '#FFA800',
1010
+ opacity: 0.2
1011
+ },
1012
+ notification: '#0062E6',
1013
+ notificationOutline: {
1014
+ fill: '#DFF2FD',
1015
+ border: '1px solid #0062E6'
1016
+ }
922
1017
  }
923
1018
  }; // https://app.zeplin.io/project/5ecf84a3c6ae1047a368f393/screen/609bb6a5287bd1abe0de39a7
924
1019
 
@@ -1227,6 +1322,14 @@ var GWTheme = createTheme$1({
1227
1322
  maxWidth: '1280px'
1228
1323
  }
1229
1324
  }
1325
+ },
1326
+ MuiButton: {
1327
+ variants: buttonVariants(geowebColors.buttons)
1328
+ },
1329
+ MuiToggleButton: {
1330
+ styleOverrides: {
1331
+ root: variantsToClassName(buttonVariants(geowebColors.buttons))
1332
+ }
1230
1333
  }
1231
1334
  }
1232
1335
  });
@@ -1412,23 +1515,35 @@ var colors = {
1412
1515
  borderColor: 'transparent'
1413
1516
  }
1414
1517
  },
1415
- primaryMouseover: {
1416
- fill: '#1047B0'
1417
- },
1418
- primaryActive: {
1419
- fill: '#186DFF'
1420
- },
1421
- flatMouseover: {
1422
- fill: '#494949'
1518
+ boxed: {
1519
+ "default": {
1520
+ fill: 'transparent',
1521
+ color: '#E5E5E5',
1522
+ borderColor: '#e5e5e5'
1523
+ },
1524
+ mouseOver: {
1525
+ fill: '#494949',
1526
+ color: '#E5E5E5',
1527
+ borderColor: '#e5e5e5'
1528
+ },
1529
+ active: {
1530
+ fill: '#186DFF',
1531
+ color: '#FFFFFF',
1532
+ borderColor: 'transparent'
1533
+ },
1534
+ activeMouseOver: {
1535
+ fill: '#1047B0',
1536
+ color: '#FFFFFF',
1537
+ borderColor: 'transparent'
1538
+ },
1539
+ disabled: {
1540
+ fill: 'transparent',
1541
+ color: '#B0B0B0',
1542
+ borderColor: 'transparent'
1543
+ }
1423
1544
  },
1424
1545
  focusDefault: {
1425
1546
  outline: 'solid 2px #419cfe'
1426
- },
1427
- disabled: {
1428
- fill: '#303030'
1429
- },
1430
- surfaceIconDefault: {
1431
- fill: '#2B2B2B'
1432
1547
  }
1433
1548
  },
1434
1549
  typographyAndIcons: {
@@ -1461,7 +1576,8 @@ var colors = {
1461
1576
  }
1462
1577
  },
1463
1578
  greys: {
1464
- accessible: '#A2A2A2'
1579
+ accessible: '#A2A2A2',
1580
+ accessibleLight: '#6F6F6F'
1465
1581
  },
1466
1582
  cards: {
1467
1583
  cardContainer: '#303030',
@@ -1542,6 +1658,10 @@ var colors = {
1542
1658
  fill: '#A2A2A2',
1543
1659
  opacity: 0.5
1544
1660
  },
1661
+ timelineSelectionBackground: {
1662
+ fill: '#11D1C6',
1663
+ opacity: 0.25
1664
+ },
1545
1665
  // time scale
1546
1666
  timeScaleText: {
1547
1667
  fontSize: 12
@@ -1581,10 +1701,6 @@ var colors = {
1581
1701
  }
1582
1702
  },
1583
1703
  layerManager: {
1584
- tableRowDefaultIcon: {
1585
- fill: '#C5C5C5',
1586
- opacity: 1
1587
- },
1588
1704
  tableRowDefaultText: {
1589
1705
  color: '#FFFFFF',
1590
1706
  opacity: 0.87,
@@ -1594,13 +1710,6 @@ var colors = {
1594
1710
  fill: '#303030',
1595
1711
  border: '1px solid #404040'
1596
1712
  },
1597
- tableRowMouseover: {
1598
- fill: '#000000',
1599
- opacity: 0.15
1600
- },
1601
- tableRowDisabledIcon: {
1602
- fill: '#A2A2A2'
1603
- },
1604
1713
  tableRowDisabledText: {
1605
1714
  color: '#909090',
1606
1715
  opacity: 0.87,
@@ -1637,6 +1746,32 @@ var colors = {
1637
1746
  color: '#B0B0B0',
1638
1747
  opacity: 1
1639
1748
  }
1749
+ },
1750
+ functional: {
1751
+ success: '#72BB23',
1752
+ successOutline: {
1753
+ fill: 'rgba(114, 187, 35, 0.25)',
1754
+ border: ' 1px solid #72BB23'
1755
+ },
1756
+ error: '#C00000',
1757
+ errorOutline: {
1758
+ fill: 'rgba(192, 0, 0, 0.25)',
1759
+ border: '1px solid #C00000'
1760
+ },
1761
+ warning: '#FFA800',
1762
+ warningOutline: {
1763
+ fill: 'rgba(255, 168, 0, 0.25)',
1764
+ border: '1px solid #FFA800'
1765
+ },
1766
+ warningHighlight: {
1767
+ fill: '#FFA800',
1768
+ opacity: 0.2
1769
+ },
1770
+ notification: '#186DFF',
1771
+ notificationOutline: {
1772
+ fill: 'rgba(24, 109, 255, 0.25)',
1773
+ border: '1px solid #186DFF'
1774
+ }
1640
1775
  }
1641
1776
  }; // https://app.zeplin.io/project/5ecf84a3c6ae1047a368f393/screen/6093e694124ecf3886de76d4
1642
1777
 
@@ -1715,4 +1850,4 @@ var ThemeWrapperOldTheme = function ThemeWrapperOldTheme(_a) {
1715
1850
  }, props), children);
1716
1851
  };
1717
1852
 
1718
- export { GWTheme, ThemeContext, ThemeProvider, ThemeWrapper, ThemeWrapperOldTheme, darkTheme, lightTheme, useThemeContext };
1853
+ export { GWTheme, ThemeContext, ThemeProvider, ThemeWrapper, ThemeWrapperOldTheme, darkTheme, gwButtonVariants, lightTheme, useThemeContext };
package/index.umd.js CHANGED
@@ -79,18 +79,30 @@
79
79
  return ar;
80
80
  }
81
81
 
82
- var buttonStyle = function buttonStyle(button) {
82
+ /* *
83
+ * Licensed under the Apache License, Version 2.0 (the "License");
84
+ * you may not use this file except in compliance with the License.
85
+ * You may obtain a copy of the License at
86
+ *
87
+ * http://www.apache.org/licenses/LICENSE-2.0
88
+ *
89
+ * Unless required by applicable law or agreed to in writing, software
90
+ * distributed under the License is distributed on an "AS IS" BASIS,
91
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
92
+ * See the License for the specific language governing permissions and
93
+ * limitations under the License.
94
+ *
95
+ * Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
96
+ * Copyright 2021 - Finnish Meteorological Institute (FMI)
97
+ * */
98
+ var gwButtonVariants = ['primary', 'secondary', 'tertiary', 'flat', 'tool', 'boxed'];
99
+
100
+ var defaultButtonStyle = function defaultButtonStyle(button) {
83
101
  return {
84
102
  // default styling
85
103
  color: button["default"].color,
86
104
  backgroundColor: button["default"].fill,
87
105
  textTransform: 'capitalize',
88
- padding: '12px 8px',
89
- height: '40px',
90
- borderStyle: 'solid',
91
- borderWidth: '1px',
92
- borderColor: button["default"].borderColor,
93
- borderRadius: '5px',
94
106
  // hover styling
95
107
  '&:hover': {
96
108
  backgroundColor: button.mouseOver.fill,
@@ -110,7 +122,17 @@
110
122
  backgroundColor: button.disabled.fill,
111
123
  color: button.disabled.color,
112
124
  borderColor: button.disabled.borderColor
113
- },
125
+ }
126
+ };
127
+ };
128
+ var buttonStyle = function buttonStyle(button) {
129
+ return __assign(__assign({}, defaultButtonStyle(button)), {
130
+ padding: '12px 8px',
131
+ height: '40px',
132
+ borderStyle: 'solid',
133
+ borderWidth: '1px',
134
+ borderColor: button["default"].borderColor,
135
+ borderRadius: '5px',
114
136
  // size styling
115
137
  '&[class*="sizeSmall"]': {
116
138
  fontSize: '12px',
@@ -124,9 +146,9 @@
124
146
  fontSize: '26px'
125
147
  }
126
148
  }
127
- };
149
+ });
128
150
  };
129
- var toggleButtonStyle = function toggleButtonStyle(buttonVariants) {
151
+ var variantsToClassName = function variantsToClassName(buttonVariants) {
130
152
  return buttonVariants.reduce(function (variants, _a) {
131
153
  var _b;
132
154
 
@@ -136,32 +158,14 @@
136
158
  }, {});
137
159
  };
138
160
  var buttonVariants = function buttonVariants(buttons) {
139
- return [{
140
- props: {
141
- variant: 'primary'
142
- },
143
- style: buttonStyle(buttons.primary)
144
- }, {
145
- props: {
146
- variant: 'secondary'
147
- },
148
- style: buttonStyle(buttons.secondary)
149
- }, {
150
- props: {
151
- variant: 'tertiary'
152
- },
153
- style: buttonStyle(buttons.tertiary)
154
- }, {
155
- props: {
156
- variant: 'flat'
157
- },
158
- style: buttonStyle(buttons.flat)
159
- }, {
160
- props: {
161
- variant: 'tool'
162
- },
163
- style: buttonStyle(buttons.tool)
164
- }];
161
+ return gwButtonVariants.map(function (variant) {
162
+ return {
163
+ props: {
164
+ variant: variant
165
+ },
166
+ style: buttonStyle(buttons[variant])
167
+ };
168
+ });
165
169
  };
166
170
 
167
171
  var hex2rgba = function hex2rgba(hex, alpha) {
@@ -218,8 +222,24 @@
218
222
  });
219
223
  };
220
224
  var BORDER_RADIUS = 3;
225
+ var breakpoints = {
226
+ mobile: 0,
227
+ tablet: 768,
228
+ desktop: 1024,
229
+ dekstopHD: 1440,
230
+ dekstopHDWide: 1920
231
+ };
221
232
  var createTheme = function createTheme(paletteType, geowebColors, shadows) {
222
233
  return material.createTheme({
234
+ breakpoints: {
235
+ values: {
236
+ xs: breakpoints.mobile,
237
+ sm: breakpoints.tablet,
238
+ md: breakpoints.desktop,
239
+ lg: breakpoints.dekstopHD,
240
+ xl: breakpoints.dekstopHDWide
241
+ }
242
+ },
223
243
  palette: {
224
244
  mode: paletteType,
225
245
  secondary: {
@@ -248,7 +268,13 @@
248
268
  },
249
269
  MuiToggleButton: {
250
270
  styleOverrides: {
251
- root: toggleButtonStyle(buttonVariants(geowebColors.buttons))
271
+ root: variantsToClassName(buttonVariants(geowebColors.buttons))
272
+ }
273
+ },
274
+ MuiIconButton: {
275
+ // TODO: https://gitlab.com/opengeoweb/opengeoweb/-/issues/1926 remove default styling and create CustomIconButton
276
+ styleOverrides: {
277
+ root: defaultButtonStyle(geowebColors.buttons.flat)
252
278
  }
253
279
  },
254
280
  MuiCssBaseline: {
@@ -257,17 +283,16 @@
257
283
  MuiMenuItem: {
258
284
  styleOverrides: {
259
285
  root: {
286
+ minHeight: '48px!important',
260
287
  fontSize: '0.875rem',
261
288
  letterSpacing: '0.25px',
262
- ':not(:last-child)&:after': {
263
- content: '""',
264
- position: 'absolute',
265
- width: '100%',
266
- height: 1,
267
- background: geowebColors.greys.accessible,
268
- bottom: 0,
269
- left: 0,
270
- opacity: 0.5
289
+ divider: {
290
+ borderBottomColor: geowebColors.greys.accessibleLight
291
+ },
292
+ li: {
293
+ '&:hover': {
294
+ backgroundColor: geowebColors.tab.mouseOver.rgba
295
+ }
271
296
  },
272
297
  '&.Mui-selected': {
273
298
  background: 'none',
@@ -418,13 +443,23 @@
418
443
  styleOverrides: {
419
444
  root: {
420
445
  color: geowebColors.typographyAndIcons.text,
421
- fontSize: '14px'
446
+ fontSize: '14px',
447
+ minHeight: '36px'
422
448
  },
423
449
  divider: {
424
450
  borderBottomColor: hex2rgba(geowebColors.greys.accessible, 0.2)
425
451
  }
426
452
  }
427
453
  },
454
+ MuiListItemIcon: {
455
+ styleOverrides: {
456
+ root: {
457
+ color: geowebColors.typographyAndIcons.icon,
458
+ width: '24px',
459
+ height: '24px'
460
+ }
461
+ }
462
+ },
428
463
  MuiBackdrop: {
429
464
  styleOverrides: {
430
465
  root: {
@@ -459,54 +494,82 @@
459
494
  }
460
495
  }
461
496
  },
462
- // TODO: implement correct theming values https://gitlab.com/opengeoweb/opengeoweb/-/issues/1369
463
497
  MuiAlert: {
464
498
  styleOverrides: {
465
499
  standardError: {
466
- border: '1px solid #c00000',
500
+ border: geowebColors.functional.errorOutline.border,
467
501
  borderRadius: '0px',
468
- backgroundColor: '#fff0ea'
502
+ backgroundColor: geowebColors.functional.errorOutline.fill,
503
+ '& .MuiAlert-icon': {
504
+ color: geowebColors.functional.error,
505
+ opacity: 1
506
+ }
469
507
  },
470
508
  standardWarning: {
471
- border: '1px solid #ffa800',
509
+ border: geowebColors.functional.warningOutline.border,
472
510
  borderRadius: '0px',
473
- backgroundColor: '#fff8eb'
511
+ backgroundColor: geowebColors.functional.warningOutline.fill,
512
+ '& .MuiAlert-icon': {
513
+ color: geowebColors.functional.warning,
514
+ opacity: 1
515
+ }
474
516
  },
475
517
  standardInfo: {
476
- border: '1px solid #0062e6',
518
+ border: geowebColors.functional.notificationOutline.border,
477
519
  borderRadius: '0px',
478
- backgroundColor: '#eaf3ff'
520
+ backgroundColor: geowebColors.functional.notificationOutline.fill,
521
+ '& .MuiAlert-icon': {
522
+ color: geowebColors.functional.notification,
523
+ opacity: 1
524
+ }
479
525
  },
480
526
  standardSuccess: {
481
- border: '1px solid #72bb23',
527
+ border: geowebColors.functional.successOutline.border,
482
528
  borderRadius: '0px',
483
- backgroundColor: '#fcffeb'
529
+ backgroundColor: geowebColors.functional.successOutline.fill,
530
+ '& .MuiAlert-icon': {
531
+ color: geowebColors.functional.success,
532
+ opacity: 1
533
+ }
484
534
  },
485
535
  action: {
486
- color: '#0075a9'
536
+ color: geowebColors.buttons.tertiary["default"].color
487
537
  },
488
538
  message: {
489
539
  fontSize: '14px',
490
540
  lineHeight: 1.43,
491
541
  letterSpacing: '0.25px',
492
- color: '#051039'
542
+ color: geowebColors.typographyAndIcons.text
493
543
  }
494
544
  }
495
545
  },
546
+ MuiTextField: {
547
+ defaultProps: {
548
+ variant: 'filled'
549
+ }
550
+ },
496
551
  MuiFilledInput: {
497
552
  styleOverrides: {
498
553
  root: {
499
554
  backgroundColor: geowebColors.textInputField["default"].rgba,
500
555
  '&.Mui-focused': {
501
- backgroundColor: geowebColors.textInputField.active.rgba
556
+ backgroundColor: geowebColors.textInputField.active.rgba,
557
+ '&:after': {
558
+ borderColor: 'transparent'
559
+ }
502
560
  },
503
561
  '&.Mui-disabled': {
504
562
  backgroundColor: geowebColors.textInputField.disabled.rgba
563
+ },
564
+ '&.Mui-error': {
565
+ '&:after': {
566
+ borderColor: geowebColors.captions.captionError.color
567
+ }
505
568
  }
506
569
  },
507
570
  underline: {
508
571
  '&:after': {
509
- borderBottom: 'transparent'
572
+ borderWidth: '1px'
510
573
  },
511
574
  '&.Mui-disabled:before': {
512
575
  borderBottomStyle: 'solid'
@@ -708,23 +771,35 @@
708
771
  borderColor: 'transparent'
709
772
  }
710
773
  },
711
- primaryMouseover: {
712
- fill: '#1047B0'
713
- },
714
- primaryActive: {
715
- fill: '#186DFF'
716
- },
717
- flatMouseover: {
718
- fill: '#E3E4E7'
774
+ boxed: {
775
+ "default": {
776
+ fill: 'transparent',
777
+ color: '#575F7A',
778
+ borderColor: '#575f7a'
779
+ },
780
+ mouseOver: {
781
+ fill: '#E3E4E7',
782
+ color: '#575F7A',
783
+ borderColor: '#575f7a'
784
+ },
785
+ active: {
786
+ fill: '#186DFF',
787
+ color: '#FFFFFF',
788
+ borderColor: 'transparent'
789
+ },
790
+ activeMouseOver: {
791
+ fill: '#1047B0',
792
+ color: '#FFFFFF',
793
+ borderColor: 'transparent'
794
+ },
795
+ disabled: {
796
+ fill: 'transparent',
797
+ color: '#707070',
798
+ borderColor: 'transparent'
799
+ }
719
800
  },
720
801
  focusDefault: {
721
802
  outline: 'solid 2px #419cfe'
722
- },
723
- disabled: {
724
- fill: '#E8E5E5'
725
- },
726
- surfaceIconDefault: {
727
- fill: '#F5F5F5'
728
803
  }
729
804
  },
730
805
  typographyAndIcons: {
@@ -757,7 +832,8 @@
757
832
  }
758
833
  },
759
834
  greys: {
760
- accessible: '#767676'
835
+ accessible: '#767676',
836
+ accessibleLight: '#C5C5C5'
761
837
  },
762
838
  cards: {
763
839
  cardContainer: '#FFFFFF',
@@ -838,6 +914,10 @@
838
914
  fill: '#767676',
839
915
  opacity: 0.5
840
916
  },
917
+ timelineSelectionBackground: {
918
+ fill: '#11D1C6',
919
+ opacity: 0.25
920
+ },
841
921
  // time scale
842
922
  timeScaleText: {
843
923
  fontSize: 12
@@ -877,10 +957,6 @@
877
957
  }
878
958
  },
879
959
  layerManager: {
880
- tableRowDefaultIcon: {
881
- fill: '#051039',
882
- opacity: 0.67
883
- },
884
960
  tableRowDefaultText: {
885
961
  color: '#051039',
886
962
  opacity: 0.87,
@@ -890,13 +966,6 @@
890
966
  fill: '#FFFFFF',
891
967
  border: '1px solid #EEEEEE'
892
968
  },
893
- tableRowMouseover: {
894
- fill: '#051039',
895
- opacity: 0.07
896
- },
897
- tableRowDisabledIcon: {
898
- fill: '#767676'
899
- },
900
969
  tableRowDisabledText: {
901
970
  color: '#767676',
902
971
  opacity: 0.87,
@@ -933,6 +1002,32 @@
933
1002
  color: '#707070',
934
1003
  opacity: 1
935
1004
  }
1005
+ },
1006
+ functional: {
1007
+ success: '#72BB23',
1008
+ successOutline: {
1009
+ fill: '#FCFFEB',
1010
+ border: ' 1px solid #72BB23'
1011
+ },
1012
+ error: '#C00000',
1013
+ errorOutline: {
1014
+ fill: '#F9E8EA',
1015
+ border: '1px solid #C00000'
1016
+ },
1017
+ warning: '#FFA800',
1018
+ warningOutline: {
1019
+ fill: '#FFF8EB',
1020
+ border: '1px solid #FFA800'
1021
+ },
1022
+ warningHighlight: {
1023
+ fill: '#FFA800',
1024
+ opacity: 0.2
1025
+ },
1026
+ notification: '#0062E6',
1027
+ notificationOutline: {
1028
+ fill: '#DFF2FD',
1029
+ border: '1px solid #0062E6'
1030
+ }
936
1031
  }
937
1032
  }; // https://app.zeplin.io/project/5ecf84a3c6ae1047a368f393/screen/609bb6a5287bd1abe0de39a7
938
1033
 
@@ -1225,6 +1320,14 @@
1225
1320
  maxWidth: '1280px'
1226
1321
  }
1227
1322
  }
1323
+ },
1324
+ MuiButton: {
1325
+ variants: buttonVariants(geowebColors.buttons)
1326
+ },
1327
+ MuiToggleButton: {
1328
+ styleOverrides: {
1329
+ root: variantsToClassName(buttonVariants(geowebColors.buttons))
1330
+ }
1228
1331
  }
1229
1332
  }
1230
1333
  });
@@ -1383,23 +1486,35 @@
1383
1486
  borderColor: 'transparent'
1384
1487
  }
1385
1488
  },
1386
- primaryMouseover: {
1387
- fill: '#1047B0'
1388
- },
1389
- primaryActive: {
1390
- fill: '#186DFF'
1391
- },
1392
- flatMouseover: {
1393
- fill: '#494949'
1489
+ boxed: {
1490
+ "default": {
1491
+ fill: 'transparent',
1492
+ color: '#E5E5E5',
1493
+ borderColor: '#e5e5e5'
1494
+ },
1495
+ mouseOver: {
1496
+ fill: '#494949',
1497
+ color: '#E5E5E5',
1498
+ borderColor: '#e5e5e5'
1499
+ },
1500
+ active: {
1501
+ fill: '#186DFF',
1502
+ color: '#FFFFFF',
1503
+ borderColor: 'transparent'
1504
+ },
1505
+ activeMouseOver: {
1506
+ fill: '#1047B0',
1507
+ color: '#FFFFFF',
1508
+ borderColor: 'transparent'
1509
+ },
1510
+ disabled: {
1511
+ fill: 'transparent',
1512
+ color: '#B0B0B0',
1513
+ borderColor: 'transparent'
1514
+ }
1394
1515
  },
1395
1516
  focusDefault: {
1396
1517
  outline: 'solid 2px #419cfe'
1397
- },
1398
- disabled: {
1399
- fill: '#303030'
1400
- },
1401
- surfaceIconDefault: {
1402
- fill: '#2B2B2B'
1403
1518
  }
1404
1519
  },
1405
1520
  typographyAndIcons: {
@@ -1432,7 +1547,8 @@
1432
1547
  }
1433
1548
  },
1434
1549
  greys: {
1435
- accessible: '#A2A2A2'
1550
+ accessible: '#A2A2A2',
1551
+ accessibleLight: '#6F6F6F'
1436
1552
  },
1437
1553
  cards: {
1438
1554
  cardContainer: '#303030',
@@ -1513,6 +1629,10 @@
1513
1629
  fill: '#A2A2A2',
1514
1630
  opacity: 0.5
1515
1631
  },
1632
+ timelineSelectionBackground: {
1633
+ fill: '#11D1C6',
1634
+ opacity: 0.25
1635
+ },
1516
1636
  // time scale
1517
1637
  timeScaleText: {
1518
1638
  fontSize: 12
@@ -1552,10 +1672,6 @@
1552
1672
  }
1553
1673
  },
1554
1674
  layerManager: {
1555
- tableRowDefaultIcon: {
1556
- fill: '#C5C5C5',
1557
- opacity: 1
1558
- },
1559
1675
  tableRowDefaultText: {
1560
1676
  color: '#FFFFFF',
1561
1677
  opacity: 0.87,
@@ -1565,13 +1681,6 @@
1565
1681
  fill: '#303030',
1566
1682
  border: '1px solid #404040'
1567
1683
  },
1568
- tableRowMouseover: {
1569
- fill: '#000000',
1570
- opacity: 0.15
1571
- },
1572
- tableRowDisabledIcon: {
1573
- fill: '#A2A2A2'
1574
- },
1575
1684
  tableRowDisabledText: {
1576
1685
  color: '#909090',
1577
1686
  opacity: 0.87,
@@ -1608,6 +1717,32 @@
1608
1717
  color: '#B0B0B0',
1609
1718
  opacity: 1
1610
1719
  }
1720
+ },
1721
+ functional: {
1722
+ success: '#72BB23',
1723
+ successOutline: {
1724
+ fill: 'rgba(114, 187, 35, 0.25)',
1725
+ border: ' 1px solid #72BB23'
1726
+ },
1727
+ error: '#C00000',
1728
+ errorOutline: {
1729
+ fill: 'rgba(192, 0, 0, 0.25)',
1730
+ border: '1px solid #C00000'
1731
+ },
1732
+ warning: '#FFA800',
1733
+ warningOutline: {
1734
+ fill: 'rgba(255, 168, 0, 0.25)',
1735
+ border: '1px solid #FFA800'
1736
+ },
1737
+ warningHighlight: {
1738
+ fill: '#FFA800',
1739
+ opacity: 0.2
1740
+ },
1741
+ notification: '#186DFF',
1742
+ notificationOutline: {
1743
+ fill: 'rgba(24, 109, 255, 0.25)',
1744
+ border: '1px solid #186DFF'
1745
+ }
1611
1746
  }
1612
1747
  }; // https://app.zeplin.io/project/5ecf84a3c6ae1047a368f393/screen/6093e694124ecf3886de76d4
1613
1748
 
@@ -1691,6 +1826,7 @@
1691
1826
  exports.ThemeWrapper = ThemeWrapper;
1692
1827
  exports.ThemeWrapperOldTheme = ThemeWrapperOldTheme;
1693
1828
  exports.darkTheme = darkTheme;
1829
+ exports.gwButtonVariants = gwButtonVariants;
1694
1830
  exports.lightTheme = lightTheme;
1695
1831
  exports.useThemeContext = useThemeContext;
1696
1832
 
@@ -0,0 +1,6 @@
1
+ import * as React from 'react';
2
+ interface StoryHeaderProps {
3
+ title: string;
4
+ }
5
+ export declare const StoryHeader: React.FC<StoryHeaderProps>;
6
+ export default StoryHeader;
@@ -0,0 +1 @@
1
+ export * from './StoryHeader';
@@ -1,5 +1,6 @@
1
- import { ComponentsVariants, CSSInterpolation } from '@mui/material';
1
+ import { ComponentsVariants, CSSInterpolation, CSSObject } from '@mui/material';
2
2
  import { ButtonStyles, ButtonStyle } from './types';
3
+ export declare const defaultButtonStyle: (button: ButtonStyle) => CSSObject;
3
4
  export declare const buttonStyle: (button: ButtonStyle) => CSSInterpolation;
4
- export declare const toggleButtonStyle: (buttonVariants: ComponentsVariants['MuiButton']) => CSSInterpolation;
5
+ export declare const variantsToClassName: (buttonVariants: ComponentsVariants['MuiButton']) => CSSInterpolation;
5
6
  export declare const buttonVariants: (buttons: ButtonStyles) => ComponentsVariants['MuiButton'];
@@ -2,6 +2,8 @@
2
2
  interface CSSProperties extends React.CSSProperties {
3
3
  rgba?: string;
4
4
  }
5
+ export declare const gwButtonVariants: readonly ["primary", "secondary", "tertiary", "flat", "tool", "boxed"];
6
+ export declare type ButtonVariant = typeof gwButtonVariants[number];
5
7
  export interface ButtonStyle {
6
8
  default: CSSProperties;
7
9
  mouseOver: CSSProperties;
@@ -15,12 +17,8 @@ export interface ButtonStyles {
15
17
  tertiary: ButtonStyle;
16
18
  flat: ButtonStyle;
17
19
  tool: ButtonStyle;
18
- primaryMouseover: CSSProperties;
19
- primaryActive: CSSProperties;
20
- flatMouseover: CSSProperties;
20
+ boxed: ButtonStyle;
21
21
  focusDefault: CSSProperties;
22
- disabled: CSSProperties;
23
- surfaceIconDefault: CSSProperties;
24
22
  }
25
23
  export declare type GeowebColorPalette = {
26
24
  background: {
@@ -51,6 +49,7 @@ export declare type GeowebColorPalette = {
51
49
  };
52
50
  greys: {
53
51
  accessible: CSSProperties['color'];
52
+ accessibleLight: CSSProperties['color'];
54
53
  };
55
54
  cards: {
56
55
  cardContainer: CSSProperties['color'];
@@ -77,6 +76,7 @@ export declare type GeowebColorPalette = {
77
76
  timelineNightTime: CSSProperties;
78
77
  timelineTimelineSurface: CSSProperties;
79
78
  timelineMonthChangeDash: CSSProperties;
79
+ timelineSelectionBackground: CSSProperties;
80
80
  timeScaleText: CSSProperties;
81
81
  timeScalePointer: CSSProperties;
82
82
  timeScaleHorizontalScale: CSSProperties;
@@ -100,11 +100,8 @@ export declare type GeowebColorPalette = {
100
100
  drawerOpen: CSSProperties;
101
101
  };
102
102
  layerManager: {
103
- tableRowDefaultIcon: CSSProperties;
104
103
  tableRowDefaultText: CSSProperties;
105
104
  tableRowDefaultCardContainer: CSSProperties;
106
- tableRowMouseover: CSSProperties;
107
- tableRowDisabledIcon: CSSProperties;
108
105
  tableRowDisabledText: CSSProperties;
109
106
  tableRowDisabledCardContainer: CSSProperties;
110
107
  };
@@ -118,6 +115,17 @@ export declare type GeowebColorPalette = {
118
115
  captionError: CSSProperties;
119
116
  captionDisabled: CSSProperties;
120
117
  };
118
+ functional: {
119
+ success: CSSProperties['color'];
120
+ successOutline: CSSProperties;
121
+ error: CSSProperties['color'];
122
+ errorOutline: CSSProperties;
123
+ warning: CSSProperties['color'];
124
+ warningOutline: CSSProperties;
125
+ warningHighlight: CSSProperties;
126
+ notification: CSSProperties['color'];
127
+ notificationOutline: CSSProperties;
128
+ };
121
129
  };
122
130
  export declare type Elevations = {
123
131
  [id: string]: string;
@@ -137,6 +145,7 @@ declare module '@mui/material/Button' {
137
145
  tertiary: true;
138
146
  flat: true;
139
147
  tool: true;
148
+ boxed: true;
140
149
  }
141
150
  }
142
151
  export {};
@@ -4,4 +4,11 @@ import { Elevations, GeowebColorPalette } from './types';
4
4
  export declare const hex2rgba: (hex: string, alpha?: number) => string;
5
5
  export declare const parseColors: (colors: GeowebColorPalette) => GeowebColorPalette;
6
6
  export declare const createShadows: (elevations: Elevations) => Shadows;
7
+ export declare const breakpoints: {
8
+ mobile: number;
9
+ tablet: number;
10
+ desktop: number;
11
+ dekstopHD: number;
12
+ dekstopHDWide: number;
13
+ };
7
14
  export declare const createTheme: (paletteType: PaletteMode, geowebColors: GeowebColorPalette, shadows: Shadows) => Theme;
@@ -0,0 +1,3 @@
1
+ import * as React from 'react';
2
+ export declare const BreakpointDemo: React.FC;
3
+ export declare const Breakpoints: React.FC;
@@ -0,0 +1,6 @@
1
+ import * as React from 'react';
2
+ export declare const IconButtonDemo: React.FC;
3
+ export declare const IconButtons: {
4
+ (): React.ReactElement;
5
+ storyName: string;
6
+ };
@@ -0,0 +1,3 @@
1
+ import * as React from 'react';
2
+ export declare const MenuItemDemo: React.FC;
3
+ export declare const MenuItem: () => React.ReactElement;
@@ -0,0 +1,6 @@
1
+ import * as React from 'react';
2
+ export declare const TextFieldDemo: React.FC;
3
+ export declare const TextFields: {
4
+ (): React.ReactElement;
5
+ storyName: string;
6
+ };
@@ -10,6 +10,10 @@ export { Typography, TypographyGWTheme } from './Typography.stories';
10
10
  export { Tooltips } from './Tooltip.stories';
11
11
  export { Buttons } from './Button.stories';
12
12
  export { ToggleButtons } from './ToggleButton.stories';
13
+ export { IconButtons } from './IconButton.stories';
14
+ export { MenuItem } from './MenuItem.stories';
15
+ export { TextFields } from './TextField.stories';
16
+ export { Breakpoints } from './Breakpoints';
13
17
  export { FormElementsGWTheme, FormElements } from './FormElements.stories';
14
18
  declare const _default: {
15
19
  title: string;
@@ -0,0 +1,7 @@
1
+ import * as React from 'react';
2
+ declare const _default: {
3
+ title: string;
4
+ };
5
+ export default _default;
6
+ export declare const ButtonLight: () => React.ReactElement;
7
+ export declare const ButtonDark: () => React.ReactElement;
@@ -0,0 +1,7 @@
1
+ import * as React from 'react';
2
+ declare const _default: {
3
+ title: string;
4
+ };
5
+ export default _default;
6
+ export declare const MenuItemLight: () => React.ReactElement;
7
+ export declare const MenuItemDark: () => React.ReactElement;
@@ -0,0 +1,7 @@
1
+ import * as React from 'react';
2
+ declare const _default: {
3
+ title: string;
4
+ };
5
+ export default _default;
6
+ export declare const TextFieldLight: () => React.ReactElement;
7
+ export declare const TextFieldDark: () => React.ReactElement;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeoweb/theme",
3
- "version": "2.2.0",
3
+ "version": "2.4.0",
4
4
  "description": "GeoWeb Theme library for the opengeoweb project",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -12,8 +12,8 @@
12
12
  "typings": "./index.d.ts",
13
13
  "dependencies": {},
14
14
  "peerDependencies": {
15
- "@mui/material": "^5.2.8",
16
15
  "react": "^17.0.2",
16
+ "@mui/material": "^5.2.8",
17
17
  "@mui/styles": "^5.2.3",
18
18
  "@mui/icons-material": "^5.2.5"
19
19
  }