@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.
Files changed (62) hide show
  1. package/package.json +9 -5
  2. package/src/assets/illustrations/avatar-shape.jsx +6 -7
  3. package/src/assets/illustrations/booking-illustration.jsx +4 -14
  4. package/src/assets/illustrations/check-in-illustration.jsx +4 -10
  5. package/src/assets/illustrations/check-out-illustration.jsx +4 -3
  6. package/src/assets/illustrations/coming-soon-illustration.jsx +4 -17
  7. package/src/assets/illustrations/forbidden-illustration.jsx +4 -12
  8. package/src/assets/illustrations/maintenance-illustration.jsx +4 -24
  9. package/src/assets/illustrations/motivation-illustration.jsx +4 -9
  10. package/src/assets/illustrations/order-complete-illustration.jsx +4 -12
  11. package/src/assets/illustrations/page-not-found-illustration.jsx +4 -9
  12. package/src/assets/illustrations/seo-illustration.jsx +4 -16
  13. package/src/assets/illustrations/sever-error-illustration.jsx +4 -21
  14. package/src/assets/illustrations/upgrade-storage-illustration.jsx +4 -20
  15. package/src/assets/illustrations/upload-illustration.jsx +4 -81
  16. package/src/components/TopNavBar/TopNavBar.jsx +6 -2
  17. package/src/components/file-thumbnail/file-thumbnail.jsx +5 -6
  18. package/src/components/label/label.jsx +0 -4
  19. package/src/components/nav-section/horizontal/nav-section-horizontal.jsx +5 -6
  20. package/src/components/settings/drawer/layout-options.jsx +5 -4
  21. package/src/components/settings/drawer/presets-options.jsx +6 -5
  22. package/src/components/settings/drawer/settings-drawer.jsx +7 -4
  23. package/src/components/settings/drawer/stretch-options.jsx +5 -5
  24. package/src/layouts/DashboardLayout/header.jsx +5 -4
  25. package/src/layouts/DashboardLayout/nav-mini.jsx +5 -7
  26. package/src/layouts/DashboardLayout/nav-vertical.jsx +11 -11
  27. package/src/layouts/FullScreenLayout/FullScreenLayout.jsx +5 -1
  28. package/src/layouts/FullScreenLayout/nav-vertical.jsx +11 -11
  29. package/src/layouts/MainLayout/footer.jsx +7 -7
  30. package/src/layouts/MainLayout/header.jsx +3 -2
  31. package/src/layouts/MainLayout/nav/desktop/nav-list.jsx +8 -8
  32. package/src/layouts/MainLayout/nav/mobile/index.jsx +7 -6
  33. package/src/layouts/TwoSideLayout/TwoSideLayout.jsx +9 -3
  34. package/src/layouts/auth/classic.jsx +6 -6
  35. package/src/layouts/auth/modern.jsx +49 -85
  36. package/src/layouts/common/ProjectBar/index.jsx +13 -11
  37. package/src/layouts/common/header-sim.jsx +3 -2
  38. package/src/layouts/common/header-simple.jsx +6 -3
  39. package/src/layouts/common/notifications-popover/index.jsx +18 -13
  40. package/src/layouts/common/notifications-popover/notification-item.jsx +28 -16
  41. package/src/lib/APIPath/APIPath.jsx +2 -2
  42. package/src/lib/APITree/APITree.jsx +3 -1
  43. package/src/lib/AddItemWizard/AddItemWizard.jsx +21 -10
  44. package/src/lib/CustomBreadcrumbs/CustomBreadcrumbs.jsx +3 -2
  45. package/src/lib/Flow/layouts/CardLayout.jsx +4 -3
  46. package/src/lib/Flow/nodes/DefaultCard.jsx +6 -8
  47. package/src/lib/IconSelector/IconSelector.jsx +5 -1
  48. package/src/lib/ItemSummary/ItemSummary.jsx +11 -6
  49. package/src/lib/ItemSummary/ItemsSummary.jsx +38 -26
  50. package/src/lib/Label/Label.jsx +0 -4
  51. package/src/lib/ResourceMenu/ResourceMenu.jsx +3 -1
  52. package/src/lib/SparkleInput/SparkleInput.jsx +31 -28
  53. package/src/lib/TableSelectedAction/TableSelectedAction.jsx +7 -8
  54. package/src/pages/ConfigError.jsx +3 -1
  55. package/src/pages/LoginPage.jsx +72 -2
  56. package/src/theme/index.jsx +47 -48
  57. package/src/theme/overrides/components/loading-button.js +5 -5
  58. package/src/theme/overrides/default-props.jsx +17 -11
  59. package/src/widgets/Login/CognitoLogin.jsx +66 -92
  60. package/src/widgets/Login/DemoLogin.jsx +43 -93
  61. package/src/widgets/Login/styles.jsx +35 -0
  62. 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={2}>
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
- InputProps={{
66
- startAdornment: (
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
- InputProps={{
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
- sx={{
135
- mt: 1,
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 &rarr;
155
108
  </Button>
156
109
 
157
- <Box
158
- sx={{
159
- mt: 1,
160
- textAlign: "center",
161
- p: 2,
162
- borderRadius: 1.5,
163
- bgcolor: (theme) => alpha(theme.palette.info.main, 0.08),
164
- border: (theme) =>
165
- `1px dashed ${alpha(theme.palette.info.main, 0.24)}`,
166
- }}
167
- >
168
- <Typography
169
- variant="caption"
170
- color="text.secondary"
171
- sx={{ fontSize: "0.8125rem" }}
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:&nbsp;
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
- PaperProps={{
171
- style: {
172
- color: "white",
173
- minHeight: 600,
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} p={2}>
217
+ <Stack direction="column" spacing={2} sx={{
218
+ p: 2
219
+ }}>
216
220
  <Typography variant="h6">Users</Typography>
217
- <Typography variant="subtitle2" color="text.secondary">
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} p={2}>
309
+ <Stack direction="column" spacing={2} sx={{
310
+ p: 2
311
+ }}>
304
312
  <Typography variant="h6">Settings</Typography>
305
- <Typography variant="subtitle2" color="text.secondary">
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} p={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} alignItems="center">
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" fontWeight={600}>
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
- color="text.secondary"
401
- sx={{ mt: 0.5, maxWidth: 520 }}
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" color="text.secondary">
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} alignItems="center">
457
- <Typography variant="body2" color="text.secondary" sx={{ minWidth: 110 }}>
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}