@canmingir/link 1.2.27 → 1.2.31
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/package.json +9 -5
- package/src/assets/illustrations/avatar-shape.jsx +6 -7
- package/src/assets/illustrations/booking-illustration.jsx +4 -14
- package/src/assets/illustrations/check-in-illustration.jsx +4 -10
- package/src/assets/illustrations/check-out-illustration.jsx +4 -3
- package/src/assets/illustrations/coming-soon-illustration.jsx +4 -17
- package/src/assets/illustrations/forbidden-illustration.jsx +4 -12
- package/src/assets/illustrations/maintenance-illustration.jsx +4 -24
- package/src/assets/illustrations/motivation-illustration.jsx +4 -9
- package/src/assets/illustrations/order-complete-illustration.jsx +4 -12
- package/src/assets/illustrations/page-not-found-illustration.jsx +4 -9
- package/src/assets/illustrations/seo-illustration.jsx +4 -16
- package/src/assets/illustrations/sever-error-illustration.jsx +4 -21
- package/src/assets/illustrations/upgrade-storage-illustration.jsx +4 -20
- package/src/assets/illustrations/upload-illustration.jsx +4 -81
- package/src/components/TopNavBar/TopNavBar.jsx +6 -2
- package/src/components/file-thumbnail/file-thumbnail.jsx +5 -6
- package/src/components/label/label.jsx +0 -4
- package/src/components/nav-section/horizontal/nav-section-horizontal.jsx +5 -6
- package/src/components/settings/drawer/layout-options.jsx +5 -4
- package/src/components/settings/drawer/presets-options.jsx +6 -5
- package/src/components/settings/drawer/settings-drawer.jsx +7 -4
- package/src/components/settings/drawer/stretch-options.jsx +5 -5
- package/src/layouts/DashboardLayout/header.jsx +5 -4
- package/src/layouts/DashboardLayout/nav-mini.jsx +5 -7
- package/src/layouts/DashboardLayout/nav-vertical.jsx +11 -11
- package/src/layouts/FullScreenLayout/FullScreenLayout.jsx +5 -1
- package/src/layouts/FullScreenLayout/nav-vertical.jsx +11 -11
- package/src/layouts/MainLayout/footer.jsx +7 -7
- package/src/layouts/MainLayout/header.jsx +3 -2
- package/src/layouts/MainLayout/nav/desktop/nav-list.jsx +8 -8
- package/src/layouts/MainLayout/nav/mobile/index.jsx +7 -6
- package/src/layouts/TwoSideLayout/TwoSideLayout.jsx +9 -3
- package/src/layouts/auth/classic.jsx +6 -6
- package/src/layouts/auth/modern.jsx +49 -85
- package/src/layouts/common/ProjectBar/index.jsx +13 -11
- package/src/layouts/common/header-sim.jsx +3 -2
- package/src/layouts/common/header-simple.jsx +6 -3
- package/src/layouts/common/notifications-popover/index.jsx +18 -13
- package/src/layouts/common/notifications-popover/notification-item.jsx +28 -16
- package/src/lib/APIPath/APIPath.jsx +2 -2
- package/src/lib/APITree/APITree.jsx +3 -1
- package/src/lib/AddItemWizard/AddItemWizard.jsx +21 -10
- package/src/lib/CustomBreadcrumbs/CustomBreadcrumbs.jsx +3 -2
- package/src/lib/Flow/layouts/CardLayout.jsx +4 -3
- package/src/lib/Flow/nodes/DefaultCard.jsx +6 -8
- package/src/lib/IconSelector/IconSelector.jsx +5 -1
- package/src/lib/ItemSummary/ItemSummary.jsx +11 -6
- package/src/lib/ItemSummary/ItemsSummary.jsx +38 -26
- package/src/lib/Label/Label.jsx +0 -4
- package/src/lib/ResourceMenu/ResourceMenu.jsx +3 -1
- package/src/lib/SparkleInput/SparkleInput.jsx +31 -28
- package/src/lib/TableSelectedAction/TableSelectedAction.jsx +7 -8
- package/src/pages/ConfigError.jsx +3 -1
- package/src/pages/LoginPage.jsx +72 -2
- package/src/theme/index.jsx +47 -48
- package/src/theme/overrides/components/loading-button.js +5 -5
- package/src/theme/overrides/default-props.jsx +17 -11
- package/src/widgets/Login/CognitoLogin.jsx +66 -92
- package/src/widgets/Login/DemoLogin.jsx +43 -93
- package/src/widgets/Login/styles.jsx +35 -0
- package/src/widgets/SettingsDialog.jsx +45 -19
|
@@ -12,13 +12,9 @@ import {
|
|
|
12
12
|
Typography,
|
|
13
13
|
alpha,
|
|
14
14
|
} from "@mui/material";
|
|
15
|
-
import {
|
|
16
|
-
LockOutlined,
|
|
17
|
-
PersonOutline,
|
|
18
|
-
Visibility,
|
|
19
|
-
VisibilityOff,
|
|
20
|
-
} from "@mui/icons-material";
|
|
21
15
|
import React, { useState } from "react";
|
|
16
|
+
import { Visibility, VisibilityOff } from "@mui/icons-material";
|
|
17
|
+
import { inputSx, primaryButtonSx } from "./styles";
|
|
22
18
|
|
|
23
19
|
export default function DemoLogin() {
|
|
24
20
|
const [username, setUsername] = useState("");
|
|
@@ -56,73 +52,47 @@ export default function DemoLogin() {
|
|
|
56
52
|
|
|
57
53
|
return (
|
|
58
54
|
<Stack spacing={2.5} sx={{ mb: 2 }}>
|
|
59
|
-
<Stack spacing={
|
|
55
|
+
<Stack spacing={1.5}>
|
|
60
56
|
<TextField
|
|
57
|
+
variant="filled"
|
|
61
58
|
label="Username"
|
|
62
59
|
value={username}
|
|
63
60
|
onChange={(e) => setUsername(e.target.value)}
|
|
64
61
|
fullWidth
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
<InputAdornment position="start">
|
|
68
|
-
<PersonOutline sx={{ color: "text.secondary", fontSize: 22 }} />
|
|
69
|
-
</InputAdornment>
|
|
70
|
-
),
|
|
71
|
-
}}
|
|
72
|
-
sx={{
|
|
73
|
-
"& .MuiOutlinedInput-root": {
|
|
74
|
-
fontSize: "1rem",
|
|
75
|
-
"& input": {
|
|
76
|
-
py: 1.5,
|
|
77
|
-
},
|
|
78
|
-
"&:hover fieldset": {
|
|
79
|
-
borderColor: "primary.main",
|
|
80
|
-
},
|
|
81
|
-
},
|
|
82
|
-
}}
|
|
62
|
+
sx={inputSx}
|
|
63
|
+
slotProps={{ input: { disableUnderline: true } }}
|
|
83
64
|
/>
|
|
84
65
|
|
|
85
66
|
<TextField
|
|
67
|
+
variant="filled"
|
|
86
68
|
label="Password"
|
|
87
69
|
type={showPassword ? "text" : "password"}
|
|
88
70
|
value={password}
|
|
89
71
|
onChange={(e) => setPassword(e.target.value)}
|
|
90
72
|
fullWidth
|
|
91
|
-
|
|
92
|
-
startAdornment: (
|
|
93
|
-
<InputAdornment position="start">
|
|
94
|
-
<LockOutlined sx={{ color: "text.secondary", fontSize: 22 }} />
|
|
95
|
-
</InputAdornment>
|
|
96
|
-
),
|
|
97
|
-
endAdornment: (
|
|
98
|
-
<InputAdornment position="end">
|
|
99
|
-
<IconButton
|
|
100
|
-
onClick={() => setShowPassword(!showPassword)}
|
|
101
|
-
edge="end"
|
|
102
|
-
size="small"
|
|
103
|
-
tabIndex={-1}
|
|
104
|
-
>
|
|
105
|
-
{showPassword ? <VisibilityOff /> : <Visibility />}
|
|
106
|
-
</IconButton>
|
|
107
|
-
</InputAdornment>
|
|
108
|
-
),
|
|
109
|
-
}}
|
|
110
|
-
sx={{
|
|
111
|
-
"& .MuiOutlinedInput-root": {
|
|
112
|
-
fontSize: "1rem",
|
|
113
|
-
"& input": {
|
|
114
|
-
py: 1.5,
|
|
115
|
-
},
|
|
116
|
-
"&:hover fieldset": {
|
|
117
|
-
borderColor: "primary.main",
|
|
118
|
-
},
|
|
119
|
-
},
|
|
120
|
-
}}
|
|
73
|
+
sx={inputSx}
|
|
121
74
|
onKeyPress={(e) => {
|
|
122
75
|
if (e.key === "Enter") {
|
|
123
76
|
handleLogin();
|
|
124
77
|
}
|
|
125
78
|
}}
|
|
79
|
+
slotProps={{
|
|
80
|
+
input: {
|
|
81
|
+
disableUnderline: true,
|
|
82
|
+
endAdornment: (
|
|
83
|
+
<InputAdornment position="end">
|
|
84
|
+
<IconButton
|
|
85
|
+
onClick={() => setShowPassword(!showPassword)}
|
|
86
|
+
edge="end"
|
|
87
|
+
size="small"
|
|
88
|
+
tabIndex={-1}
|
|
89
|
+
>
|
|
90
|
+
{showPassword ? <VisibilityOff /> : <Visibility />}
|
|
91
|
+
</IconButton>
|
|
92
|
+
</InputAdornment>
|
|
93
|
+
),
|
|
94
|
+
},
|
|
95
|
+
}}
|
|
126
96
|
/>
|
|
127
97
|
</Stack>
|
|
128
98
|
|
|
@@ -131,47 +101,27 @@ export default function DemoLogin() {
|
|
|
131
101
|
onClick={handleLogin}
|
|
132
102
|
size="large"
|
|
133
103
|
fullWidth
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
py: 1.5,
|
|
137
|
-
fontSize: "1rem",
|
|
138
|
-
fontWeight: 600,
|
|
139
|
-
textTransform: "none",
|
|
140
|
-
borderRadius: 1.5,
|
|
141
|
-
boxShadow: (theme) =>
|
|
142
|
-
`0 8px 16px ${alpha(theme.palette.primary.main, 0.24)}`,
|
|
143
|
-
transition: "all 0.2s cubic-bezier(0.4, 0, 0.2, 1)",
|
|
144
|
-
"&:hover": {
|
|
145
|
-
transform: "translateY(-2px)",
|
|
146
|
-
boxShadow: (theme) =>
|
|
147
|
-
`0 12px 24px ${alpha(theme.palette.primary.main, 0.32)}`,
|
|
148
|
-
},
|
|
149
|
-
"&:active": {
|
|
150
|
-
transform: "translateY(0px)",
|
|
151
|
-
},
|
|
152
|
-
}}
|
|
104
|
+
disableElevation
|
|
105
|
+
sx={primaryButtonSx}
|
|
153
106
|
>
|
|
154
|
-
Sign in
|
|
107
|
+
Sign in →
|
|
155
108
|
</Button>
|
|
156
109
|
|
|
157
|
-
<Box
|
|
158
|
-
sx={{
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
>
|
|
173
|
-
Demo credentials:{" "}
|
|
174
|
-
<Box component="strong" sx={{ color: "text.primary" }}>
|
|
110
|
+
<Box sx={{ display: "flex", justifyContent: "center" }}>
|
|
111
|
+
<Typography variant="caption" sx={{ color: "text.disabled" }}>
|
|
112
|
+
Demo credentials:
|
|
113
|
+
<Box
|
|
114
|
+
component="span"
|
|
115
|
+
sx={{
|
|
116
|
+
color: "text.secondary",
|
|
117
|
+
fontWeight: 600,
|
|
118
|
+
fontFamily: "monospace",
|
|
119
|
+
px: 0.5,
|
|
120
|
+
py: 0.25,
|
|
121
|
+
borderRadius: 0.5,
|
|
122
|
+
bgcolor: (theme) => alpha(theme.palette.grey[500], 0.1),
|
|
123
|
+
}}
|
|
124
|
+
>
|
|
175
125
|
admin / admin
|
|
176
126
|
</Box>
|
|
177
127
|
</Typography>
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { alpha } from "@mui/material";
|
|
2
|
+
export const inputSx = {
|
|
3
|
+
"& .MuiFilledInput-root": {
|
|
4
|
+
borderRadius: 1.5,
|
|
5
|
+
fontSize: "0.9375rem",
|
|
6
|
+
bgcolor: (theme) => alpha(theme.palette.grey[500], 0.08),
|
|
7
|
+
"&:hover": {
|
|
8
|
+
bgcolor: (theme) => alpha(theme.palette.grey[500], 0.12),
|
|
9
|
+
},
|
|
10
|
+
"&.Mui-focused": {
|
|
11
|
+
bgcolor: (theme) => alpha(theme.palette.primary.main, 0.06),
|
|
12
|
+
},
|
|
13
|
+
"&:before, &:after": { display: "none" },
|
|
14
|
+
},
|
|
15
|
+
"& .MuiInputLabel-root.Mui-focused": {
|
|
16
|
+
color: "primary.main",
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export const primaryButtonSx = {
|
|
21
|
+
py: 1.5,
|
|
22
|
+
fontSize: "0.9375rem",
|
|
23
|
+
fontWeight: 700,
|
|
24
|
+
textTransform: "none",
|
|
25
|
+
borderRadius: 1.5,
|
|
26
|
+
letterSpacing: "0.01em",
|
|
27
|
+
background: (theme) =>
|
|
28
|
+
`linear-gradient(135deg, ${theme.palette.primary.dark} 0%, ${theme.palette.primary.main} 100%)`,
|
|
29
|
+
transition: "opacity 0.2s",
|
|
30
|
+
"&:hover": {
|
|
31
|
+
opacity: 0.88,
|
|
32
|
+
background: (theme) =>
|
|
33
|
+
`linear-gradient(135deg, ${theme.palette.primary.dark} 0%, ${theme.palette.primary.main} 100%)`,
|
|
34
|
+
},
|
|
35
|
+
};
|
|
@@ -167,11 +167,13 @@ function SettingsDialog({ handleClose, open }) {
|
|
|
167
167
|
maxWidth={"md"}
|
|
168
168
|
onClose={() => handleClose()}
|
|
169
169
|
sx={{ bgcolor: "custom.darkDialogBg", zIndex: 2147483647 }}
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
170
|
+
slotProps={{
|
|
171
|
+
paper: {
|
|
172
|
+
style: {
|
|
173
|
+
color: "white",
|
|
174
|
+
minHeight: 600,
|
|
175
|
+
},
|
|
176
|
+
}
|
|
175
177
|
}}
|
|
176
178
|
>
|
|
177
179
|
<DialogContent>
|
|
@@ -212,9 +214,13 @@ const Permission = () => {
|
|
|
212
214
|
}, [event, event2]);
|
|
213
215
|
|
|
214
216
|
return (
|
|
215
|
-
<Stack direction="column" spacing={2}
|
|
217
|
+
<Stack direction="column" spacing={2} sx={{
|
|
218
|
+
p: 2
|
|
219
|
+
}}>
|
|
216
220
|
<Typography variant="h6">Users</Typography>
|
|
217
|
-
<Typography variant="subtitle2"
|
|
221
|
+
<Typography variant="subtitle2" sx={{
|
|
222
|
+
color: "text.secondary"
|
|
223
|
+
}}>
|
|
218
224
|
Users with access to the project.
|
|
219
225
|
</Typography>
|
|
220
226
|
<List>
|
|
@@ -300,9 +306,13 @@ const Settings = () => {
|
|
|
300
306
|
};
|
|
301
307
|
|
|
302
308
|
return (
|
|
303
|
-
<Stack direction="column" spacing={2}
|
|
309
|
+
<Stack direction="column" spacing={2} sx={{
|
|
310
|
+
p: 2
|
|
311
|
+
}}>
|
|
304
312
|
<Typography variant="h6">Settings</Typography>
|
|
305
|
-
<Typography variant="subtitle2"
|
|
313
|
+
<Typography variant="subtitle2" sx={{
|
|
314
|
+
color: "text.secondary"
|
|
315
|
+
}}>
|
|
306
316
|
Configure your application settings.
|
|
307
317
|
</Typography>
|
|
308
318
|
<List>
|
|
@@ -363,7 +373,9 @@ const About = () => {
|
|
|
363
373
|
const description = pkg.description;
|
|
364
374
|
|
|
365
375
|
return (
|
|
366
|
-
<Stack direction="column" spacing={2}
|
|
376
|
+
<Stack direction="column" spacing={2} sx={{
|
|
377
|
+
p: 2
|
|
378
|
+
}}>
|
|
367
379
|
<Box
|
|
368
380
|
sx={{
|
|
369
381
|
p: 3,
|
|
@@ -374,7 +386,9 @@ const About = () => {
|
|
|
374
386
|
"linear-gradient(135deg, rgba(255,255,255,0.06), rgba(255,255,255,0.01))",
|
|
375
387
|
}}
|
|
376
388
|
>
|
|
377
|
-
<Stack direction="row" spacing={2.5}
|
|
389
|
+
<Stack direction="row" spacing={2.5} sx={{
|
|
390
|
+
alignItems: "center"
|
|
391
|
+
}}>
|
|
378
392
|
<Avatar
|
|
379
393
|
src={iconSrc}
|
|
380
394
|
variant="rounded"
|
|
@@ -390,16 +404,20 @@ const About = () => {
|
|
|
390
404
|
</Avatar>
|
|
391
405
|
|
|
392
406
|
<Box sx={{ flex: 1, minWidth: 0 }}>
|
|
393
|
-
<Typography variant="h5"
|
|
407
|
+
<Typography variant="h5" sx={{
|
|
408
|
+
fontWeight: 600
|
|
409
|
+
}}>
|
|
394
410
|
{appName.toUpperCase()}
|
|
395
411
|
</Typography>
|
|
396
412
|
|
|
397
413
|
{description && (
|
|
398
414
|
<Typography
|
|
399
415
|
variant="body2"
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
416
|
+
sx={{
|
|
417
|
+
color: "text.secondary",
|
|
418
|
+
mt: 0.5,
|
|
419
|
+
maxWidth: 520
|
|
420
|
+
}}>
|
|
403
421
|
{description}
|
|
404
422
|
</Typography>
|
|
405
423
|
)}
|
|
@@ -442,7 +460,9 @@ const About = () => {
|
|
|
442
460
|
textAlign: "center",
|
|
443
461
|
}}
|
|
444
462
|
>
|
|
445
|
-
<Typography variant="caption"
|
|
463
|
+
<Typography variant="caption" sx={{
|
|
464
|
+
color: "text.secondary"
|
|
465
|
+
}}>
|
|
446
466
|
© 2026 greycollar.ai. All rights reserved.
|
|
447
467
|
</Typography>
|
|
448
468
|
</Box>
|
|
@@ -453,11 +473,17 @@ const About = () => {
|
|
|
453
473
|
|
|
454
474
|
const InfoRow = ({ label, value, link }) => {
|
|
455
475
|
return (
|
|
456
|
-
<Stack direction="row" spacing={1.5}
|
|
457
|
-
|
|
476
|
+
<Stack direction="row" spacing={1.5} sx={{
|
|
477
|
+
alignItems: "center"
|
|
478
|
+
}}>
|
|
479
|
+
<Typography
|
|
480
|
+
variant="body2"
|
|
481
|
+
sx={{
|
|
482
|
+
color: "text.secondary",
|
|
483
|
+
minWidth: 110
|
|
484
|
+
}}>
|
|
458
485
|
{label}
|
|
459
486
|
</Typography>
|
|
460
|
-
|
|
461
487
|
{link ? (
|
|
462
488
|
<Link href={link} target="_blank" rel="noreferrer" underline="hover">
|
|
463
489
|
{value}
|