@canmingir/link 1.2.26 → 1.2.30

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 (63) hide show
  1. package/package.json +9 -5
  2. package/src/Platform.jsx +1 -0
  3. package/src/assets/illustrations/avatar-shape.jsx +6 -7
  4. package/src/assets/illustrations/booking-illustration.jsx +4 -14
  5. package/src/assets/illustrations/check-in-illustration.jsx +4 -10
  6. package/src/assets/illustrations/check-out-illustration.jsx +4 -3
  7. package/src/assets/illustrations/coming-soon-illustration.jsx +4 -17
  8. package/src/assets/illustrations/forbidden-illustration.jsx +4 -12
  9. package/src/assets/illustrations/maintenance-illustration.jsx +4 -24
  10. package/src/assets/illustrations/motivation-illustration.jsx +4 -9
  11. package/src/assets/illustrations/order-complete-illustration.jsx +4 -12
  12. package/src/assets/illustrations/page-not-found-illustration.jsx +4 -9
  13. package/src/assets/illustrations/seo-illustration.jsx +4 -16
  14. package/src/assets/illustrations/sever-error-illustration.jsx +4 -21
  15. package/src/assets/illustrations/upgrade-storage-illustration.jsx +4 -20
  16. package/src/assets/illustrations/upload-illustration.jsx +4 -81
  17. package/src/components/TopNavBar/TopNavBar.jsx +6 -2
  18. package/src/components/file-thumbnail/file-thumbnail.jsx +5 -6
  19. package/src/components/label/label.jsx +0 -4
  20. package/src/components/nav-section/horizontal/nav-section-horizontal.jsx +5 -6
  21. package/src/components/settings/drawer/layout-options.jsx +5 -4
  22. package/src/components/settings/drawer/presets-options.jsx +6 -5
  23. package/src/components/settings/drawer/settings-drawer.jsx +7 -4
  24. package/src/components/settings/drawer/stretch-options.jsx +5 -5
  25. package/src/hooks/index.js +2 -1
  26. package/src/hooks/use-beta.js +8 -0
  27. package/src/layouts/DashboardLayout/header.jsx +5 -4
  28. package/src/layouts/DashboardLayout/nav-mini.jsx +5 -7
  29. package/src/layouts/DashboardLayout/nav-vertical.jsx +11 -11
  30. package/src/layouts/FullScreenLayout/FullScreenLayout.jsx +5 -1
  31. package/src/layouts/FullScreenLayout/nav-vertical.jsx +11 -11
  32. package/src/layouts/MainLayout/footer.jsx +7 -7
  33. package/src/layouts/MainLayout/header.jsx +3 -2
  34. package/src/layouts/MainLayout/nav/desktop/nav-list.jsx +8 -8
  35. package/src/layouts/MainLayout/nav/mobile/index.jsx +7 -6
  36. package/src/layouts/TwoSideLayout/TwoSideLayout.jsx +9 -3
  37. package/src/layouts/auth/classic.jsx +6 -6
  38. package/src/layouts/auth/modern.jsx +3 -4
  39. package/src/layouts/common/ProjectBar/index.jsx +13 -11
  40. package/src/layouts/common/header-sim.jsx +3 -2
  41. package/src/layouts/common/header-simple.jsx +6 -3
  42. package/src/layouts/common/notifications-popover/index.jsx +18 -13
  43. package/src/layouts/common/notifications-popover/notification-item.jsx +28 -16
  44. package/src/lib/APIPath/APIPath.jsx +2 -2
  45. package/src/lib/APITree/APITree.jsx +3 -1
  46. package/src/lib/AddItemWizard/AddItemWizard.jsx +21 -10
  47. package/src/lib/CustomBreadcrumbs/CustomBreadcrumbs.jsx +3 -2
  48. package/src/lib/Flow/layouts/CardLayout.jsx +4 -3
  49. package/src/lib/Flow/nodes/DefaultCard.jsx +6 -8
  50. package/src/lib/IconSelector/IconSelector.jsx +5 -1
  51. package/src/lib/ItemSummary/ItemSummary.jsx +11 -6
  52. package/src/lib/ItemSummary/ItemsSummary.jsx +38 -26
  53. package/src/lib/Label/Label.jsx +0 -4
  54. package/src/lib/ResourceMenu/ResourceMenu.jsx +3 -1
  55. package/src/lib/SparkleInput/SparkleInput.jsx +31 -28
  56. package/src/lib/TableSelectedAction/TableSelectedAction.jsx +7 -8
  57. package/src/pages/ConfigError.jsx +3 -1
  58. package/src/theme/index.jsx +47 -48
  59. package/src/theme/overrides/components/loading-button.js +5 -5
  60. package/src/theme/overrides/default-props.jsx +17 -11
  61. package/src/widgets/Login/CognitoLogin.jsx +61 -53
  62. package/src/widgets/Login/DemoLogin.jsx +34 -31
  63. package/src/widgets/SettingsDialog.jsx +62 -19
@@ -37,8 +37,8 @@ const APIPath = ({
37
37
  return (
38
38
  <Grid container sx={styles.root} data-cy="api-path">
39
39
  <Grid sx={styles.firstElement} />
40
- <Grid item>
41
- <Grid container item sx={styles.content}>
40
+ <Grid>
41
+ <Grid container sx={styles.content}>
42
42
  {isMethodDisabled ? (
43
43
  <Typography data-cy="method-text">{method}</Typography>
44
44
  ) : (
@@ -194,7 +194,9 @@ function APITree() {
194
194
  ? { top: contextMenu.mouseY, left: contextMenu.mouseX }
195
195
  : undefined
196
196
  }
197
- TransitionComponent={Fade}
197
+ slots={{
198
+ transition: Fade
199
+ }}
198
200
  >
199
201
  <MenuItem
200
202
  onClick={() => {
@@ -73,10 +73,11 @@ function AddItemWizard({ onSubmit, items, steps, stepExp }) {
73
73
  <Stack
74
74
  container
75
75
  direction="column"
76
- alignItems="center"
77
- justifyContent="center"
78
76
  spacing={2}
79
- >
77
+ sx={{
78
+ alignItems: "center",
79
+ justifyContent: "center"
80
+ }}>
80
81
  <SparkleInput
81
82
  prop="name"
82
83
  value={newItems[0].details.name}
@@ -94,7 +95,9 @@ function AddItemWizard({ onSubmit, items, steps, stepExp }) {
94
95
  <Typography variant="subtitle1" color={"gray"} sx={{ mb: -2 }}>
95
96
  Service Type
96
97
  </Typography>
97
- <Stack direction="row" alignItems="center">
98
+ <Stack direction="row" sx={{
99
+ alignItems: "center"
100
+ }}>
98
101
  <Typography>Single</Typography>
99
102
  <Switch
100
103
  data-cy="type-switch"
@@ -109,8 +112,14 @@ function AddItemWizard({ onSubmit, items, steps, stepExp }) {
109
112
 
110
113
  const Service = () => {
111
114
  return (
112
- <Grid container justifyContent="center" mt={1} spacing={2}>
113
- <Grid item xs={5}>
115
+ <Grid
116
+ container
117
+ spacing={2}
118
+ sx={{
119
+ justifyContent: "center",
120
+ mt: 1
121
+ }}>
122
+ <Grid size={5}>
114
123
  <Stack
115
124
  sx={{
116
125
  borderStyle: "none dotted none none",
@@ -128,9 +137,11 @@ function AddItemWizard({ onSubmit, items, steps, stepExp }) {
128
137
  <Typography
129
138
  variant="subtitle1"
130
139
  color={"gray"}
131
- textAlign={"center"}
132
- sx={{ marginTop: 2, marginBottom: 1 }}
133
- >
140
+ sx={{
141
+ textAlign: "center",
142
+ marginTop: 2,
143
+ marginBottom: 1
144
+ }}>
134
145
  Select an Icon
135
146
  </Typography>
136
147
  <SelectAvatar
@@ -142,7 +153,7 @@ function AddItemWizard({ onSubmit, items, steps, stepExp }) {
142
153
  />
143
154
  </Stack>
144
155
  </Grid>
145
- <Grid item xs={7}>
156
+ <Grid size={7}>
146
157
  <SparkleInput
147
158
  prop="description"
148
159
  value={newItems[1].details.description}
@@ -19,7 +19,9 @@ export default function CustomBreadcrumbs({
19
19
 
20
20
  return (
21
21
  <Box sx={{ ...sx }}>
22
- <Stack direction="row" alignItems="center">
22
+ <Stack direction="row" sx={{
23
+ alignItems: "center"
24
+ }}>
23
25
  <Box sx={{ flexGrow: 1 }}>
24
26
  {heading && (
25
27
  <Typography variant="h4" gutterBottom>
@@ -43,7 +45,6 @@ export default function CustomBreadcrumbs({
43
45
 
44
46
  {action && <Box sx={{ flexShrink: 0 }}> {action} </Box>}
45
47
  </Stack>
46
-
47
48
  {!!moreLink && (
48
49
  <Box sx={{ mt: 2 }}>
49
50
  {moreLink.map((href) => (
@@ -383,9 +383,10 @@ export function AvatarRoleCard({
383
383
  >
384
384
  <Stack
385
385
  direction="row"
386
- justifyContent="space-between"
387
- alignItems="flex-start"
388
- >
386
+ sx={{
387
+ justifyContent: "space-between",
388
+ alignItems: "flex-start"
389
+ }}>
389
390
  {leftContent}
390
391
  {topRightContent}
391
392
  </Stack>
@@ -70,13 +70,12 @@ const DefaultNodeCard = ({
70
70
  {subtitle && (
71
71
  <Typography
72
72
  variant="body2"
73
- color="text.secondary"
74
73
  sx={{
74
+ color: "text.secondary",
75
75
  textAlign: "center",
76
76
  fontSize: 11,
77
- mb: metaEntries.length ? 0.5 : 0,
78
- }}
79
- >
77
+ mb: metaEntries.length ? 0.5 : 0
78
+ }}>
80
79
  {subtitle}
81
80
  </Typography>
82
81
  )}
@@ -87,13 +86,12 @@ const DefaultNodeCard = ({
87
86
  <Typography
88
87
  key={key}
89
88
  variant="caption"
90
- color="text.secondary"
91
89
  sx={{
90
+ color: "text.secondary",
92
91
  textAlign: "center",
93
92
  display: "block",
94
- fontSize: 10,
95
- }}
96
- >
93
+ fontSize: 10
94
+ }}>
97
95
  {key}: {String(value)}
98
96
  </Typography>
99
97
  ))}
@@ -18,7 +18,11 @@ export default function IconSelector({
18
18
  setEmojiDialogOpen(true);
19
19
  };
20
20
  return (
21
- <Stack alignContent={"center"} justifyContent={"center"}>
21
+ <Stack
22
+ sx={{
23
+ alignContent: "center",
24
+ justifyContent: "center"
25
+ }}>
22
26
  <Stack>
23
27
  <IconButton
24
28
  data-cy="avatar-select-button"
@@ -17,15 +17,15 @@ export default function ItemSummary({ newItem }) {
17
17
  <DialogContentText sx={{ textAlign: "center", mb: 2 }}>
18
18
  Summary
19
19
  </DialogContentText>
20
- <Grid container spacing={1} mb={4}>
20
+ <Grid container spacing={1} sx={{
21
+ mb: 4
22
+ }}>
21
23
  <Grid
22
- item
23
- xs={newItem.description ? 4 : 12}
24
24
  sx={{
25
25
  justifyContent: "center",
26
26
  display: "flex",
27
27
  }}
28
- >
28
+ size={newItem.description ? 4 : 12}>
29
29
  <Card
30
30
  sx={{
31
31
  bgcolor: (theme) => theme.palette.background.paper,
@@ -37,7 +37,12 @@ export default function ItemSummary({ newItem }) {
37
37
  <CardContent
38
38
  children={
39
39
  <>
40
- <Typography variant="h6" textAlign={"center"} mb={2}>
40
+ <Typography
41
+ variant="h6"
42
+ sx={{
43
+ textAlign: "center",
44
+ mb: 2
45
+ }}>
41
46
  {newItem.name}
42
47
  </Typography>
43
48
  <Stack
@@ -63,7 +68,7 @@ export default function ItemSummary({ newItem }) {
63
68
  </Card>
64
69
  </Grid>
65
70
  {newItem.description && (
66
- <Grid item xs={8}>
71
+ <Grid size={8}>
67
72
  <Card sx={{ minHeight: "100%" }}>
68
73
  <CardHeader title="Description" />
69
74
  <CardContent>
@@ -19,15 +19,15 @@ export default function ItemsSummary({ newItems }) {
19
19
  <DialogContentText sx={{ textAlign: "center", mb: 2 }}>
20
20
  Summary
21
21
  </DialogContentText>
22
- <Grid container mb={4}>
22
+ <Grid container sx={{
23
+ mb: 4
24
+ }}>
23
25
  <Grid
24
- item
25
- xs={5}
26
26
  sx={{
27
27
  justifyContent: "center",
28
28
  display: "flex",
29
29
  }}
30
- >
30
+ size={5}>
31
31
  <Stack
32
32
  sx={{
33
33
  height: "100%",
@@ -45,27 +45,34 @@ export default function ItemsSummary({ newItems }) {
45
45
  >
46
46
  <CardHeader
47
47
  title={"Project Summary"}
48
- titleTypographyProps={{
49
- variant: "subtitle1",
50
- textAlign: "center",
51
- color: "text.secondary",
48
+ slotProps={{
49
+ title: {
50
+ variant: "subtitle1",
51
+ textAlign: "center",
52
+ color: "text.secondary",
53
+ }
52
54
  }}
53
55
  />
54
56
  <CardContent
55
57
  children={
56
58
  <>
57
- <Typography variant="h6" textAlign={"center"} mb={2}>
59
+ <Typography
60
+ variant="h6"
61
+ sx={{
62
+ textAlign: "center",
63
+ mb: 2
64
+ }}>
58
65
  {newItems[0].details.name}
59
66
  </Typography>
60
67
  <Stack
61
- padding={1}
62
68
  sx={{
69
+ padding: 1,
70
+
63
71
  "& .svg-color": {
64
72
  background: (theme) =>
65
73
  `linear-gradient(135deg, ${theme.palette.primary.light} 0%, ${theme.palette.primary.main} 100%)`,
66
- },
67
- }}
68
- >
74
+ }
75
+ }}>
69
76
  <SvgColor
70
77
  src={`https://api.iconify.design/${newItems[0].details.icon?.slice(
71
78
  1,
@@ -87,17 +94,15 @@ export default function ItemsSummary({ newItems }) {
87
94
  </Stack>
88
95
  </Grid>
89
96
  <Grid
90
- item
91
- xs={2}
92
97
  sx={{
93
98
  display: "flex",
94
99
  alignContent: "center",
95
100
  justifyContent: "center",
96
101
  }}
97
- >
102
+ size={2}>
98
103
  <Divider orientation="vertical" sx={{ borderStyle: "dashed" }} />
99
104
  </Grid>
100
- <Grid item xs={5}>
105
+ <Grid size={5}>
101
106
  <Stack
102
107
  sx={{
103
108
  height: "100%",
@@ -108,27 +113,34 @@ export default function ItemsSummary({ newItems }) {
108
113
  <Card>
109
114
  <CardHeader
110
115
  title={"Service Summary"}
111
- titleTypographyProps={{
112
- variant: "subtitle1",
113
- textAlign: "center",
114
- color: "text.secondary",
116
+ slotProps={{
117
+ title: {
118
+ variant: "subtitle1",
119
+ textAlign: "center",
120
+ color: "text.secondary",
121
+ }
115
122
  }}
116
123
  />
117
124
  <CardContent
118
125
  children={
119
126
  <>
120
- <Typography variant="h6" textAlign={"center"} mb={2}>
127
+ <Typography
128
+ variant="h6"
129
+ sx={{
130
+ textAlign: "center",
131
+ mb: 2
132
+ }}>
121
133
  {newItems[1].details.name}
122
134
  </Typography>
123
135
  <Stack
124
- padding={1}
125
136
  sx={{
137
+ padding: 1,
138
+
126
139
  "& .svg-color": {
127
140
  background: (theme) =>
128
141
  `linear-gradient(135deg, ${theme.palette.primary.light} 0%, ${theme.palette.primary.main} 100%)`,
129
- },
130
- }}
131
- >
142
+ }
143
+ }}>
132
144
  <SvgColor
133
145
  src={`https://api.iconify.design/${newItems[1].details.icon?.slice(
134
146
  1,
@@ -2,7 +2,6 @@ import Box from "@mui/material/Box";
2
2
  import React from "react";
3
3
  import { StyledLabel } from "./styles";
4
4
  import { forwardRef } from "react";
5
- import { useTheme } from "@mui/material/styles";
6
5
 
7
6
  const Label = forwardRef(
8
7
  (
@@ -17,8 +16,6 @@ const Label = forwardRef(
17
16
  },
18
17
  ref
19
18
  ) => {
20
- const theme = useTheme();
21
-
22
19
  const iconStyles = {
23
20
  width: 16,
24
21
  height: 16,
@@ -35,7 +32,6 @@ const Label = forwardRef(
35
32
  ...(endIcon && { pr: 0.75 }),
36
33
  ...sx,
37
34
  }}
38
- theme={theme}
39
35
  {...other}
40
36
  >
41
37
  {startIcon && <Box sx={{ mr: 0.75, ...iconStyles }}> {startIcon} </Box>}
@@ -125,7 +125,9 @@ const ResourceMenu = (props) => {
125
125
  top: anchor?.clientY || 0,
126
126
  left: anchor?.clientX || 0,
127
127
  }}
128
- TransitionComponent={Fade}
128
+ slots={{
129
+ transition: Fade
130
+ }}
129
131
  >
130
132
  <MenuItem onClick={addResource} data-cy="add-resource">
131
133
  <SourceIcon />
@@ -11,41 +11,44 @@ export default function SparkleInput({
11
11
  }) {
12
12
  return (
13
13
  <TextField
14
- inputProps={{
15
- "data-cy": prop,
16
- }}
17
14
  autoFocus
18
15
  margin="dense"
19
16
  label={prop}
20
17
  fullWidth={true}
21
18
  value={value || ""}
22
19
  onChange={onChange}
23
- InputLabelProps={{
24
- sx: { color: (theme) => theme.palette.text.primary },
25
- }}
26
- InputProps={{
27
- endAdornment: sparkle && (
28
- <InputAdornment position="end">
29
- <IconButton>
30
- <SvgIcon>
31
- <svg
32
- xmlns="http://www.w3.org/2000/svg"
33
- width="20"
34
- height="20"
35
- viewBox="0 0 20 20"
36
- >
37
- <path
38
- fill="white"
39
- d="M7.398 12.809a1.042 1.042 0 0 0 1.204-.003c.178-.13.313-.31.387-.518l.447-1.373a2.336 2.336 0 0 1 1.477-1.479l1.391-.45a1.045 1.045 0 0 0-.044-1.98l-1.375-.448a2.335 2.335 0 0 1-1.48-1.477l-.452-1.388a1.044 1.044 0 0 0-1.973.017l-.457 1.4a2.336 2.336 0 0 1-1.44 1.45l-1.39.447a1.045 1.045 0 0 0 .016 1.974l1.374.445a2.333 2.333 0 0 1 1.481 1.488l.452 1.391c.072.204.206.38.382.504m.085-7.415l.527-1.377l.44 1.377a3.331 3.331 0 0 0 2.117 2.114l1.406.53l-1.382.447a3.344 3.344 0 0 0-2.115 2.117l-.523 1.378l-.449-1.379a3.336 3.336 0 0 0-.8-1.31a3.373 3.373 0 0 0-1.312-.812l-1.378-.522l1.386-.45a3.358 3.358 0 0 0 1.29-.813a3.4 3.4 0 0 0 .793-1.3m6.052 11.457a.806.806 0 0 0 1.226-.398l.248-.762a1.09 1.09 0 0 1 .26-.42c.118-.12.262-.208.42-.26l.772-.252a.8.8 0 0 0-.023-1.52l-.764-.25a1.075 1.075 0 0 1-.68-.678l-.252-.773a.8.8 0 0 0-1.518.01l-.247.762a1.068 1.068 0 0 1-.665.679l-.773.252a.8.8 0 0 0 .008 1.518l.763.247c.16.054.304.143.422.261c.119.119.207.263.258.422l.253.774a.8.8 0 0 0 .292.388m-.913-2.793L12.443 14l.184-.064a2.11 2.11 0 0 0 1.3-1.317l.058-.178l.06.181a2.078 2.078 0 0 0 1.316 1.316l.195.063l-.18.06a2.076 2.076 0 0 0-1.317 1.32l-.059.181l-.058-.18a2.075 2.075 0 0 0-1.32-1.323"
40
- />
41
- </svg>
42
- </SvgIcon>
43
- </IconButton>
44
- </InputAdornment>
45
- ),
46
- }}
47
20
  sx={{ textTransform: "capitalize" }}
48
21
  {...others}
49
- />
22
+ slotProps={{
23
+ input: {
24
+ endAdornment: sparkle && (
25
+ <InputAdornment position="end">
26
+ <IconButton>
27
+ <SvgIcon>
28
+ <svg
29
+ xmlns="http://www.w3.org/2000/svg"
30
+ width="20"
31
+ height="20"
32
+ viewBox="0 0 20 20"
33
+ >
34
+ <path
35
+ fill="white"
36
+ d="M7.398 12.809a1.042 1.042 0 0 0 1.204-.003c.178-.13.313-.31.387-.518l.447-1.373a2.336 2.336 0 0 1 1.477-1.479l1.391-.45a1.045 1.045 0 0 0-.044-1.98l-1.375-.448a2.335 2.335 0 0 1-1.48-1.477l-.452-1.388a1.044 1.044 0 0 0-1.973.017l-.457 1.4a2.336 2.336 0 0 1-1.44 1.45l-1.39.447a1.045 1.045 0 0 0 .016 1.974l1.374.445a2.333 2.333 0 0 1 1.481 1.488l.452 1.391c.072.204.206.38.382.504m.085-7.415l.527-1.377l.44 1.377a3.331 3.331 0 0 0 2.117 2.114l1.406.53l-1.382.447a3.344 3.344 0 0 0-2.115 2.117l-.523 1.378l-.449-1.379a3.336 3.336 0 0 0-.8-1.31a3.373 3.373 0 0 0-1.312-.812l-1.378-.522l1.386-.45a3.358 3.358 0 0 0 1.29-.813a3.4 3.4 0 0 0 .793-1.3m6.052 11.457a.806.806 0 0 0 1.226-.398l.248-.762a1.09 1.09 0 0 1 .26-.42c.118-.12.262-.208.42-.26l.772-.252a.8.8 0 0 0-.023-1.52l-.764-.25a1.075 1.075 0 0 1-.68-.678l-.252-.773a.8.8 0 0 0-1.518.01l-.247.762a1.068 1.068 0 0 1-.665.679l-.773.252a.8.8 0 0 0 .008 1.518l.763.247c.16.054.304.143.422.261c.119.119.207.263.258.422l.253.774a.8.8 0 0 0 .292.388m-.913-2.793L12.443 14l.184-.064a2.11 2.11 0 0 0 1.3-1.317l.058-.178l.06.181a2.078 2.078 0 0 0 1.316 1.316l.195.063l-.18.06a2.076 2.076 0 0 0-1.317 1.32l-.059.181l-.058-.18a2.075 2.075 0 0 0-1.32-1.323"
37
+ />
38
+ </svg>
39
+ </SvgIcon>
40
+ </IconButton>
41
+ </InputAdornment>
42
+ ),
43
+ },
44
+
45
+ htmlInput: {
46
+ "data-cy": prop,
47
+ },
48
+
49
+ inputLabel: {
50
+ sx: { color: (theme) => theme.palette.text.primary },
51
+ }
52
+ }} />
50
53
  );
51
54
  }
@@ -19,8 +19,9 @@ export default function TableSelectedAction({
19
19
  return (
20
20
  <Stack
21
21
  direction="row"
22
- alignItems="center"
23
- sx={{
22
+ {...other}
23
+ sx={[{
24
+ alignItems: "center",
24
25
  pl: 1,
25
26
  pr: 2,
26
27
  top: 0,
@@ -30,19 +31,18 @@ export default function TableSelectedAction({
30
31
  height: 58,
31
32
  position: "absolute",
32
33
  bgcolor: "primary.lighter",
34
+
33
35
  ...(dense && {
34
36
  height: 38,
35
37
  }),
36
- ...sx,
37
- }}
38
- {...other}
39
- >
38
+
39
+ ...sx
40
+ }, ...(Array.isArray(other.sx) ? other.sx : [other.sx])]}>
40
41
  <Checkbox
41
42
  indeterminate={!!numSelected && numSelected < rowCount}
42
43
  checked={!!rowCount && numSelected === rowCount}
43
44
  onChange={(event) => onSelectAllRows(event.target.checked)}
44
45
  />
45
-
46
46
  <Typography
47
47
  variant="subtitle2"
48
48
  sx={{
@@ -56,7 +56,6 @@ export default function TableSelectedAction({
56
56
  >
57
57
  {numSelected} selected
58
58
  </Typography>
59
-
60
59
  {action && action}
61
60
  </Stack>
62
61
  );
@@ -20,7 +20,9 @@ const ConfigErrorDialog = () => {
20
20
  return (
21
21
  <Dialog fullWidth open>
22
22
  <DialogTitle>
23
- <Stack direction="row" alignItems="center">
23
+ <Stack direction="row" sx={{
24
+ alignItems: "center"
25
+ }}>
24
26
  <Box
25
27
  component="span"
26
28
  sx={{ display: "flex", alignItems: "center", mr: 1 }}
@@ -23,8 +23,9 @@ export default function ThemeProvider({ children }) {
23
23
  const contrast = createContrast(settings.themeContrast, settings.themeMode);
24
24
  const presets = createPresets(settings.themeColorPresets);
25
25
 
26
- const memoizedValue = useMemo(
27
- () => ({
26
+ const theme = useMemo(() => {
27
+ // 1. Define the base configuration
28
+ const baseOptions = {
28
29
  palette: {
29
30
  ...palette(settings.themeMode),
30
31
  ...presets.palette,
@@ -38,56 +39,54 @@ export default function ThemeProvider({ children }) {
38
39
  shadows: shadows(settings.themeMode),
39
40
  shape: { borderRadius: 8 },
40
41
  typography,
41
- }),
42
- [
43
- settings.themeMode,
44
- settings.themeDirection,
45
- presets.palette,
46
- presets.customShadows,
47
- contrast.palette,
48
- ]
49
- );
50
-
51
- const theme = createTheme(memoizedValue);
52
-
53
- theme.components = merge(componentsOverrides(theme), contrast.components, {
54
- MuiCssBaseline: {
55
- styleOverrides: {
56
- body: {
57
- scrollbarColor:
58
- theme.palette.mode === "dark"
59
- ? `${theme.palette.grey[700]} ${theme.palette.background.default}`
60
- : `${theme.palette.grey[500]} ${theme.palette.background.default}`,
61
- scrollbarWidth: "thin",
62
-
63
- "&::-webkit-scrollbar": {
64
- width: 10,
65
- height: 10,
66
- },
42
+ };
67
43
 
68
- "&::-webkit-scrollbar-track": {
69
- backgroundColor: theme.palette.background.default,
70
- },
71
-
72
- "&::-webkit-scrollbar-thumb": {
73
- backgroundColor:
74
- theme.palette.mode === "dark"
75
- ? theme.palette.grey[700]
76
- : theme.palette.grey[500],
77
- borderRadius: 8,
78
- border: `2px solid ${theme.palette.background.default}`,
79
- },
44
+ // 2. Create a temporary theme instance to generate overrides
45
+ // (Overrides often need access to the palette/spacing of the theme)
46
+ const tempTheme = createTheme(baseOptions);
80
47
 
81
- "&::-webkit-scrollbar-thumb:hover": {
82
- backgroundColor:
83
- theme.palette.mode === "dark"
84
- ? theme.palette.grey[600]
85
- : theme.palette.grey[700],
48
+ // 3. Merge components into the configuration
49
+ baseOptions.components = merge(
50
+ componentsOverrides(tempTheme),
51
+ contrast.components,
52
+ {
53
+ MuiCssBaseline: {
54
+ styleOverrides: {
55
+ body: {
56
+ scrollbarColor:
57
+ tempTheme.palette.mode === "dark"
58
+ ? `${tempTheme.palette.grey[700]} ${tempTheme.palette.background.default}`
59
+ : `${tempTheme.palette.grey[500]} ${tempTheme.palette.background.default}`,
60
+ scrollbarWidth: "thin",
61
+ "&::-webkit-scrollbar": { width: 10, height: 10 },
62
+ "&::-webkit-scrollbar-track": {
63
+ backgroundColor: tempTheme.palette.background.default,
64
+ },
65
+ "&::-webkit-scrollbar-thumb": {
66
+ backgroundColor:
67
+ tempTheme.palette.mode === "dark"
68
+ ? tempTheme.palette.grey[700]
69
+ : tempTheme.palette.grey[500],
70
+ borderRadius: 8,
71
+ border: `2px solid ${tempTheme.palette.background.default}`,
72
+ },
73
+ },
86
74
  },
87
75
  },
88
- },
89
- },
90
- });
76
+ }
77
+ );
78
+
79
+ // 4. Return the final, complete theme
80
+ return createTheme(baseOptions);
81
+ }, [
82
+ settings.themeMode,
83
+ settings.themeDirection,
84
+ settings.themeContrast, // Added this to the dependency array
85
+ presets.palette,
86
+ presets.customShadows,
87
+ contrast.palette,
88
+ contrast.components,
89
+ ]);
91
90
 
92
91
  return (
93
92
  <MuiThemeProvider theme={theme}>
@@ -1,4 +1,4 @@
1
- import { loadingButtonClasses } from "@mui/lab/LoadingButton";
1
+ import { buttonClasses } from "@mui/material/Button";
2
2
 
3
3
  // ----------------------------------------------------------------------
4
4
 
@@ -8,17 +8,17 @@ export function loadingButton(theme) {
8
8
  styleOverrides: {
9
9
  root: ({ ownerState }) => ({
10
10
  ...(ownerState.variant === "soft" && {
11
- [`& .${loadingButtonClasses.loadingIndicatorStart}`]: {
11
+ [`& .${buttonClasses.loadingIndicatorStart}`]: {
12
12
  left: 10,
13
13
  },
14
- [`& .${loadingButtonClasses.loadingIndicatorEnd}`]: {
14
+ [`& .${buttonClasses.loadingIndicatorEnd}`]: {
15
15
  right: 14,
16
16
  },
17
17
  ...(ownerState.size === "small" && {
18
- [`& .${loadingButtonClasses.loadingIndicatorStart}`]: {
18
+ [`& .${buttonClasses.loadingIndicatorStart}`]: {
19
19
  left: 10,
20
20
  },
21
- [`& .${loadingButtonClasses.loadingIndicatorEnd}`]: {
21
+ [`& .${buttonClasses.loadingIndicatorEnd}`]: {
22
22
  right: 10,
23
23
  },
24
24
  }),