@campxdev/shared 0.6.18 → 0.6.19

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 (215) hide show
  1. package/.eslintignore +3 -3
  2. package/.eslintrc.js +33 -33
  3. package/.prettierrc +10 -10
  4. package/antd.customize.less +73 -73
  5. package/exports.ts +16 -16
  6. package/package.json +93 -93
  7. package/publish.sh +1 -1
  8. package/src/assets/fonts/avenir/index.ts +2 -2
  9. package/src/assets/fonts/poppins/index.ts +7 -7
  10. package/src/assets/images/index.ts +17 -17
  11. package/src/assets/images/unauth.svg +92 -92
  12. package/src/components/ActionButton.tsx +28 -28
  13. package/src/components/Attachment.tsx +26 -26
  14. package/src/components/AutocompleteSearch/AutocompleteSearch.tsx +57 -57
  15. package/src/components/AutocompleteSearch/index.tsx +1 -1
  16. package/src/components/Breadcrumbs.tsx +72 -72
  17. package/src/components/Card.tsx +98 -98
  18. package/src/components/CardsGrid.tsx +28 -28
  19. package/src/components/ChangePassword.tsx +164 -164
  20. package/src/components/Chips.tsx +81 -81
  21. package/src/components/Detail.tsx +15 -15
  22. package/src/components/DetailsGrid.tsx +52 -52
  23. package/src/components/DividerHeading.tsx +41 -41
  24. package/src/components/DrawerWrapper/DialogWrapper.tsx +63 -63
  25. package/src/components/DrawerWrapper/DrawerTemplate.tsx +53 -53
  26. package/src/components/DrawerWrapper/DrawerWrapper.tsx +53 -53
  27. package/src/components/DropDownButton.tsx +194 -194
  28. package/src/components/ErrorBoundary/ErrorBoundary.tsx +28 -28
  29. package/src/components/ErrorBoundary/ErrorFallback.tsx +236 -236
  30. package/src/components/ErrorBoundary/GlobalNetworkLoadingIndicator.tsx +13 -13
  31. package/src/components/ErrorBoundary/index.tsx +1 -1
  32. package/src/components/ErrorBox.tsx +42 -42
  33. package/src/components/FloatingContainer.tsx +33 -33
  34. package/src/components/Form/Form.tsx +156 -156
  35. package/src/components/Form/RenderForm.tsx +188 -188
  36. package/src/components/FullCalendar/Actions.tsx +162 -162
  37. package/src/components/FullCalendar/FullCalendarWrapper.tsx +54 -54
  38. package/src/components/FullScreenLoader.tsx +19 -19
  39. package/src/components/HookForm/AutoCompleteSearch.tsx +113 -113
  40. package/src/components/HookForm/DatePicker.tsx +65 -65
  41. package/src/components/HookForm/DateTimePicker.tsx +70 -70
  42. package/src/components/HookForm/FormLabel.tsx +14 -14
  43. package/src/components/HookForm/MultiCheckbox.tsx +82 -82
  44. package/src/components/HookForm/MultiSelect.tsx +100 -100
  45. package/src/components/HookForm/RadioGroup.tsx +106 -106
  46. package/src/components/HookForm/SingleCheckbox.tsx +46 -46
  47. package/src/components/HookForm/SingleSelect.tsx +93 -93
  48. package/src/components/HookForm/TextField.tsx +74 -74
  49. package/src/components/HookForm/TimePicker.tsx +82 -82
  50. package/src/components/HookForm/index.ts +23 -23
  51. package/src/components/IconButtons/IconButtons.tsx +137 -137
  52. package/src/components/IconButtons/Icons.tsx +268 -268
  53. package/src/components/IconButtons/assets/edit.svg +4 -4
  54. package/src/components/IconButtons/assets/eye.svg +6 -6
  55. package/src/components/IconButtons/assets/trash.svg +7 -7
  56. package/src/components/IconButtons/index.tsx +8 -8
  57. package/src/components/IconLabel.tsx +37 -37
  58. package/src/components/Image/Image.tsx +43 -43
  59. package/src/components/Image/index.tsx +1 -1
  60. package/src/components/ImageUpload.tsx +98 -98
  61. package/src/components/Input/AutoCompleteSearch.tsx +113 -113
  62. package/src/components/Input/DatePicker.tsx +60 -60
  63. package/src/components/Input/DateRangePicker.tsx +131 -131
  64. package/src/components/Input/DateTimePicker.tsx +70 -70
  65. package/src/components/Input/FormLabel.tsx +14 -14
  66. package/src/components/Input/MultiCheckbox.tsx +79 -79
  67. package/src/components/Input/MultiSelect.tsx +52 -52
  68. package/src/components/Input/RadioGroup.tsx +61 -61
  69. package/src/components/Input/SingleCheckbox.tsx +23 -23
  70. package/src/components/Input/SingleSelect.tsx +124 -124
  71. package/src/components/Input/TextField.tsx +50 -50
  72. package/src/components/Input/TimePicker.tsx +82 -82
  73. package/src/components/Input/index.ts +26 -26
  74. package/src/components/JsonPreview/JsonPreview.tsx +7 -7
  75. package/src/components/JsonPreview/index.tsx +1 -1
  76. package/src/components/LabelValue/LabelValue.tsx +21 -21
  77. package/src/components/LabelValue/index.tsx +1 -1
  78. package/src/components/Layout/ChangePassword.tsx +49 -49
  79. package/src/components/Layout/Header/AppHeader.tsx +124 -124
  80. package/src/components/Layout/Header/AppsMenu.tsx +92 -92
  81. package/src/components/Layout/Header/CogWheelMenu.tsx +33 -33
  82. package/src/components/Layout/Header/FreshDeskHelpButton.tsx +19 -19
  83. package/src/components/Layout/Header/Notification.tsx +13 -13
  84. package/src/components/Layout/Header/UserBox.tsx +70 -70
  85. package/src/components/Layout/Header/applications.ts +90 -90
  86. package/src/components/Layout/Header/assets/campx.svg +29 -29
  87. package/src/components/Layout/Header/assets/index.ts +29 -32
  88. package/src/components/Layout/Header/assets/newAssets/campx_square_small.svg +9 -9
  89. package/src/components/Layout/Header/assets/newAssets/commutex.svg +14 -14
  90. package/src/components/Layout/Header/assets/newAssets/commutexSmall.svg +11 -11
  91. package/src/components/Layout/Header/assets/newAssets/enroll.svg +14 -14
  92. package/src/components/Layout/Header/assets/newAssets/enrollx.svg +14 -14
  93. package/src/components/Layout/Header/assets/newAssets/exams_small.svg +12 -12
  94. package/src/components/Layout/Header/assets/newAssets/examsx.svg +14 -14
  95. package/src/components/Layout/Header/assets/newAssets/hostel_small.svg +13 -13
  96. package/src/components/Layout/Header/assets/newAssets/hostelx.svg +13 -13
  97. package/src/components/Layout/Header/assets/newAssets/libraryx.svg +12 -12
  98. package/src/components/Layout/Header/assets/newAssets/pay_small.svg +16 -16
  99. package/src/components/Layout/Header/assets/newAssets/payx.svg +19 -19
  100. package/src/components/Layout/Header/assets/newAssets/people_small.svg +9 -9
  101. package/src/components/Layout/Header/assets/newAssets/peoplex.svg +12 -12
  102. package/src/components/Layout/Header/assets/newAssets/squarex.svg +12 -12
  103. package/src/components/Layout/Header/assets/payxHeader.svg +21 -21
  104. package/src/components/Layout/Header/assets/peoplexHeader.svg +14 -14
  105. package/src/components/Layout/Header/icons.tsx +57 -57
  106. package/src/components/Layout/Header/index.tsx +1 -1
  107. package/src/components/Layout/Header/styles.tsx +98 -98
  108. package/src/components/LayoutWrapper.tsx +25 -25
  109. package/src/components/LinearProgress.tsx +19 -19
  110. package/src/components/ListItemButton.tsx +94 -94
  111. package/src/components/LoginForm.tsx +103 -103
  112. package/src/components/MediaRow/MediaRow.tsx +69 -69
  113. package/src/components/MediaRow/index.tsx +1 -1
  114. package/src/components/MenuButton.tsx +103 -103
  115. package/src/components/ModalButtons/DialogButton.tsx +88 -88
  116. package/src/components/ModalButtons/DrawerButton.tsx +89 -89
  117. package/src/components/ModalButtons/index.tsx +4 -4
  118. package/src/components/NoDataIllustration/NoDataIllustration.tsx +32 -32
  119. package/src/components/NoDataIllustration/index.tsx +1 -1
  120. package/src/components/PageContent.tsx +17 -17
  121. package/src/components/PageHeader.tsx +52 -52
  122. package/src/components/PageNotFound.tsx +26 -26
  123. package/src/components/PopupConfirm/ConfirmContextProvider.tsx +40 -40
  124. package/src/components/PopupConfirm/PopupConfirm.tsx +34 -34
  125. package/src/components/PopupConfirm/index.tsx +1 -1
  126. package/src/components/PopupConfirm/useConfirm.ts +47 -47
  127. package/src/components/Router.tsx +7 -7
  128. package/src/components/Row/Row.tsx +24 -24
  129. package/src/components/Row/index.tsx +1 -1
  130. package/src/components/SearchBar/SearchBar.tsx +53 -53
  131. package/src/components/SearchBar/index.tsx +1 -1
  132. package/src/components/SideMenuHeader.tsx +29 -29
  133. package/src/components/SideNav.tsx +168 -168
  134. package/src/components/Spinner.tsx +18 -18
  135. package/src/components/StepsHeader/StepsHeader.tsx +115 -115
  136. package/src/components/StepsHeader/index.tsx +1 -1
  137. package/src/components/StyledTableContainer.tsx +33 -33
  138. package/src/components/SwitchButton/SwitchButton.tsx +41 -41
  139. package/src/components/SwitchButton/index.tsx +1 -1
  140. package/src/components/Table.tsx +42 -42
  141. package/src/components/TableComponent/BatchActionsHeader.tsx +58 -58
  142. package/src/components/TableComponent/Icons/index.tsx +50 -50
  143. package/src/components/TableComponent/ReactTable.tsx +293 -293
  144. package/src/components/TableComponent/RenderTableBody.tsx +64 -64
  145. package/src/components/TableComponent/TableFooter/TableFooter.tsx +102 -102
  146. package/src/components/TableComponent/TableFooter/index.tsx +1 -1
  147. package/src/components/TableComponent/TableFooter/styles.tsx +28 -28
  148. package/src/components/TableComponent/index.tsx +226 -226
  149. package/src/components/TableComponent/react-table-config.d.ts +128 -128
  150. package/src/components/TableComponent/styles.tsx +173 -173
  151. package/src/components/TableComponent/types.ts +57 -57
  152. package/src/components/Tabs/Tabs.tsx +52 -52
  153. package/src/components/Tabs/TabsContainer.tsx +50 -50
  154. package/src/components/Tabs/index.tsx +1 -1
  155. package/src/components/Tabs/styles.tsx +55 -55
  156. package/src/components/ToastContainer/ToastContainer.tsx +42 -42
  157. package/src/components/ToastContainer/index.tsx +1 -1
  158. package/src/components/UploadButton/UploadButton.tsx +126 -126
  159. package/src/components/UploadButton/index.tsx +1 -1
  160. package/src/components/UploadButton/types.ts +19 -19
  161. package/src/components/UploadDocument/UploadDocument.tsx +108 -108
  162. package/src/components/UploadDocument/index.tsx +1 -1
  163. package/src/components/UploadFileDialog/UploadFileDialog.tsx +238 -238
  164. package/src/components/UploadFileDialog/index.tsx +1 -1
  165. package/src/components/index.ts +86 -86
  166. package/src/config/axios.ts +74 -74
  167. package/src/config/axiosXTenant.ts +57 -57
  168. package/src/constants/UIConstants.ts +97 -97
  169. package/src/constants/formValidations.ts +6 -6
  170. package/src/constants/index.ts +5 -5
  171. package/src/constants/isDevelopment.ts +3 -3
  172. package/src/constants/permissions.ts +67 -67
  173. package/src/constants/validateMessages.ts +12 -12
  174. package/src/contexts/LoginFormProvider.tsx +39 -39
  175. package/src/contexts/Providers.tsx +59 -59
  176. package/src/contexts/QueryClientProvider.tsx +22 -22
  177. package/src/hooks/index.ts +3 -3
  178. package/src/hooks/useAppInit.ts +33 -33
  179. package/src/hooks/useAuth.ts +91 -91
  180. package/src/hooks/useFetch.ts +53 -53
  181. package/src/hooks/useRouter.ts +31 -31
  182. package/src/layouts/Components/DashBoardMenu.tsx +232 -232
  183. package/src/layouts/Components/icons/index.tsx +403 -403
  184. package/src/layouts/Components/styles.tsx +60 -60
  185. package/src/layouts/ComponentsLayout.tsx +3 -3
  186. package/src/permissions/PageWithPermission.tsx +18 -18
  187. package/src/permissions/PermissionDeniedPage.tsx +16 -16
  188. package/src/permissions/PermissionsStore.ts +352 -352
  189. package/src/permissions/ValidateAccess.tsx +18 -18
  190. package/src/permissions/index.ts +3 -3
  191. package/src/react-app-env.d.ts +1 -1
  192. package/src/shared-state/AssetsStore.ts +15 -15
  193. package/src/shared-state/UserStore.ts +13 -13
  194. package/src/shared-state/index.ts +3 -3
  195. package/src/theme/App.less +3 -3
  196. package/src/theme/MuiThemeProvider.tsx +13 -13
  197. package/src/theme/customCssBaseline.ts +78 -78
  198. package/src/theme/index.css +75 -75
  199. package/src/theme/muiTheme.ts +490 -490
  200. package/src/theme/theme.d.ts +75 -75
  201. package/src/utils/alphabet.ts +23 -23
  202. package/src/utils/arrayPadEnd.ts +3 -3
  203. package/src/utils/formatCurrency.ts +9 -9
  204. package/src/utils/getUrlParams.ts +5 -5
  205. package/src/utils/index.ts +8 -8
  206. package/src/utils/logout.ts +24 -24
  207. package/src/utils/ordinalSuffixOf.ts +14 -14
  208. package/src/utils/romanize.ts +40 -40
  209. package/src/utils/withLocalization.tsx +11 -11
  210. package/src/utils/withRouteWrapper.tsx +25 -25
  211. package/src/utils/withSuspense.tsx +6 -6
  212. package/styled-components.tsx +60 -60
  213. package/todo.md +20 -20
  214. package/tsconfig.json +21 -21
  215. package/src/components/Layout/Header/assets/newAssets/commuteX.png +0 -0
@@ -1,98 +1,98 @@
1
- import {
2
- alpha,
3
- AppBar,
4
- Box,
5
- IconButton,
6
- ListItemText,
7
- styled,
8
- Typography,
9
- Link,
10
- } from '@mui/material'
11
-
12
- export const StyledImageWrapper = styled('div')`
13
- width: auto;
14
- height: 24px;
15
- & img {
16
- width: 100%;
17
- height: 100%;
18
- object-fit: contain;
19
- }
20
- `
21
-
22
- export const StyledItemText = styled(ListItemText)(({ theme }) => ({
23
- color: theme.palette.text.primary,
24
- transition: '0.2s ease',
25
- }))
26
-
27
- export const StyledAppBar = styled(AppBar)(({ theme }) => ({
28
- backgroundColor: 'white',
29
- boxShadow: '0px 8px 28px rgb(136,136,136, 0.3)',
30
- }))
31
-
32
- export const StyledHeader = styled(Box)(({ theme }) => ({
33
- boxShadow: '0px 2px 10px #0000001a',
34
- backgroundColor: 'white',
35
- display: 'flex',
36
- alignItems: 'center',
37
- justifyContent: 'space-between',
38
- '& .actions': {
39
- marginRight: '10px',
40
- display: 'flex',
41
- alignItems: 'center',
42
- gap: '14px',
43
- },
44
- }))
45
-
46
- export const StyledUser = styled(Box)(({ theme }) => ({
47
- cursor: 'pointer',
48
- borderRadius: '5px',
49
- transition: 'background 0.2s ease',
50
- padding: '5px 16px',
51
- display: 'flex',
52
- alignItems: 'center',
53
- gap: '8px',
54
- '&:hover': {
55
- background: theme.palette.secondary.light,
56
- },
57
- }))
58
-
59
- export const StyledIconButton = styled(IconButton)({
60
- padding: '20px',
61
- backgroundColor: 'black',
62
- display: 'flex',
63
- alignItems: 'center',
64
- justifyContent: 'center',
65
- borderRadius: '0px',
66
- })
67
-
68
- export const StyledLink = styled(Link)({
69
- textDecoration: 'none',
70
- })
71
-
72
- export const StyledDescription = styled(Typography)(({ theme }) => ({
73
- fontSize: '12px',
74
- fontWeight: 600,
75
- color: alpha(theme?.palette?.secondary?.lighter, 0.5),
76
- }))
77
-
78
- export const StyledMenuItem = styled(Box)({
79
- height: '64px',
80
- width: '380px',
81
- padding: '40px 20px',
82
- transition: 'background ease 0.3s',
83
- '&:hover': {
84
- background: 'rgba(0, 0, 0, 0.03)',
85
- },
86
- display: 'flex',
87
- alignItems: 'center',
88
- gap: '20px',
89
- })
90
-
91
- export const StyledMenuItemContainer = styled(Box)(({ theme }) => ({
92
- cursor: 'pointer',
93
- borderBottom: `1px solid ${theme?.palette?.secondary?.lighter}`,
94
- '&:last-of-type': {
95
- border: 'none',
96
- },
97
- padding: '8px 0px',
98
- }))
1
+ import {
2
+ alpha,
3
+ AppBar,
4
+ Box,
5
+ IconButton,
6
+ ListItemText,
7
+ styled,
8
+ Typography,
9
+ Link,
10
+ } from '@mui/material'
11
+
12
+ export const StyledImageWrapper = styled('div')`
13
+ width: auto;
14
+ height: 24px;
15
+ & img {
16
+ width: 100%;
17
+ height: 100%;
18
+ object-fit: contain;
19
+ }
20
+ `
21
+
22
+ export const StyledItemText = styled(ListItemText)(({ theme }) => ({
23
+ color: theme.palette.text.primary,
24
+ transition: '0.2s ease',
25
+ }))
26
+
27
+ export const StyledAppBar = styled(AppBar)(({ theme }) => ({
28
+ backgroundColor: 'white',
29
+ boxShadow: '0px 8px 28px rgb(136,136,136, 0.3)',
30
+ }))
31
+
32
+ export const StyledHeader = styled(Box)(({ theme }) => ({
33
+ boxShadow: '0px 2px 10px #0000001a',
34
+ backgroundColor: 'white',
35
+ display: 'flex',
36
+ alignItems: 'center',
37
+ justifyContent: 'space-between',
38
+ '& .actions': {
39
+ marginRight: '10px',
40
+ display: 'flex',
41
+ alignItems: 'center',
42
+ gap: '14px',
43
+ },
44
+ }))
45
+
46
+ export const StyledUser = styled(Box)(({ theme }) => ({
47
+ cursor: 'pointer',
48
+ borderRadius: '5px',
49
+ transition: 'background 0.2s ease',
50
+ padding: '5px 16px',
51
+ display: 'flex',
52
+ alignItems: 'center',
53
+ gap: '8px',
54
+ '&:hover': {
55
+ background: theme.palette.secondary.light,
56
+ },
57
+ }))
58
+
59
+ export const StyledIconButton = styled(IconButton)({
60
+ padding: '20px',
61
+ backgroundColor: 'black',
62
+ display: 'flex',
63
+ alignItems: 'center',
64
+ justifyContent: 'center',
65
+ borderRadius: '0px',
66
+ })
67
+
68
+ export const StyledLink = styled(Link)({
69
+ textDecoration: 'none',
70
+ })
71
+
72
+ export const StyledDescription = styled(Typography)(({ theme }) => ({
73
+ fontSize: '12px',
74
+ fontWeight: 600,
75
+ color: alpha(theme?.palette?.secondary?.lighter, 0.5),
76
+ }))
77
+
78
+ export const StyledMenuItem = styled(Box)({
79
+ height: '64px',
80
+ width: '380px',
81
+ padding: '40px 20px',
82
+ transition: 'background ease 0.3s',
83
+ '&:hover': {
84
+ background: 'rgba(0, 0, 0, 0.03)',
85
+ },
86
+ display: 'flex',
87
+ alignItems: 'center',
88
+ gap: '20px',
89
+ })
90
+
91
+ export const StyledMenuItemContainer = styled(Box)(({ theme }) => ({
92
+ cursor: 'pointer',
93
+ borderBottom: `1px solid ${theme?.palette?.secondary?.lighter}`,
94
+ '&:last-of-type': {
95
+ border: 'none',
96
+ },
97
+ padding: '8px 0px',
98
+ }))
@@ -1,25 +1,25 @@
1
- import {
2
- StyledLeftNavContainer,
3
- StyledMainContentContainer,
4
- } from '../layouts/Components/styles'
5
- import SideNav from './SideNav'
6
- interface Props {
7
- children?: React.ReactNode
8
- menu: any[]
9
- sideMenuHeader?: React.ReactNode
10
- }
11
-
12
- export default function LayoutWrapper({
13
- children,
14
- menu,
15
- sideMenuHeader,
16
- }: Props) {
17
- return (
18
- <>
19
- <StyledLeftNavContainer>
20
- <SideNav menuItems={menu as any[]} header={sideMenuHeader} />
21
- </StyledLeftNavContainer>
22
- <StyledMainContentContainer>{children}</StyledMainContentContainer>
23
- </>
24
- )
25
- }
1
+ import {
2
+ StyledLeftNavContainer,
3
+ StyledMainContentContainer,
4
+ } from '../layouts/Components/styles'
5
+ import SideNav from './SideNav'
6
+ interface Props {
7
+ children?: React.ReactNode
8
+ menu: any[]
9
+ sideMenuHeader?: React.ReactNode
10
+ }
11
+
12
+ export default function LayoutWrapper({
13
+ children,
14
+ menu,
15
+ sideMenuHeader,
16
+ }: Props) {
17
+ return (
18
+ <>
19
+ <StyledLeftNavContainer>
20
+ <SideNav menuItems={menu as any[]} header={sideMenuHeader} />
21
+ </StyledLeftNavContainer>
22
+ <StyledMainContentContainer>{children}</StyledMainContentContainer>
23
+ </>
24
+ )
25
+ }
@@ -1,19 +1,19 @@
1
- import {
2
- BoxProps,
3
- styled,
4
- Box,
5
- LinearProgress as MuiLinearProgress,
6
- } from '@mui/material'
7
-
8
- export const LinearProgress = styled((props: BoxProps) => (
9
- <Box {...props}>
10
- <MuiLinearProgress color={'inherit'} sx={{ height: '4px' }} />
11
- </Box>
12
- ))(({ theme }) => ({
13
- width: '100%',
14
- position: 'fixed',
15
- top: 0,
16
- left: 0,
17
- zIndex: 400,
18
- color: theme.palette.primary.main,
19
- }))
1
+ import {
2
+ BoxProps,
3
+ styled,
4
+ Box,
5
+ LinearProgress as MuiLinearProgress,
6
+ } from '@mui/material'
7
+
8
+ export const LinearProgress = styled((props: BoxProps) => (
9
+ <Box {...props}>
10
+ <MuiLinearProgress color={'inherit'} sx={{ height: '4px' }} />
11
+ </Box>
12
+ ))(({ theme }) => ({
13
+ width: '100%',
14
+ position: 'fixed',
15
+ top: 0,
16
+ left: 0,
17
+ zIndex: 400,
18
+ color: theme.palette.primary.main,
19
+ }))
@@ -1,94 +1,94 @@
1
- import { ChevronRight } from '@mui/icons-material'
2
- import {
3
- Box,
4
- ListItemButton as MuiListItemButton,
5
- ListItemButtonProps,
6
- ListItemIcon,
7
- ListItemText,
8
- styled,
9
- } from '@mui/material'
10
- import { ReactNode } from 'react'
11
-
12
- interface Props extends ListItemButtonProps {
13
- hasChildren?: boolean
14
- isActive?: boolean
15
- label: String
16
- icon?: any
17
- }
18
-
19
- export const ListItemButton = ({
20
- isActive,
21
- hasChildren,
22
- onClick,
23
- label,
24
- icon: Icon,
25
- }: Props) => {
26
- return (
27
- <StyledListItemButton isActive={isActive} onClick={onClick}>
28
- {Icon ? (
29
- <ListItemIcon>{<Icon />}</ListItemIcon>
30
- ) : (
31
- <Box minWidth={16}></Box>
32
- )}
33
- <ListItemText primary={label} />
34
- </StyledListItemButton>
35
- )
36
- }
37
-
38
- export const StyledChevronIcon = styled(ChevronRight)<{ open: boolean }>(
39
- ({ theme, open }) => ({
40
- transform: open ? 'rotate(90deg)' : 'rotate(0deg)',
41
- transition: 'transform 0.2s ease-in-out',
42
- }),
43
- )
44
-
45
- export const StyledListItemButton = styled(MuiListItemButton)<{
46
- isActive: boolean
47
- children: ReactNode
48
- dropDown?: boolean
49
- }>(({ theme, isActive, dropDown = false }) => ({
50
- gap: '10px',
51
- fontWeight: 'bold',
52
- backgroundColor: isActive && '#1d1d1d',
53
- '&:hover': {
54
- backgroundColor: isActive && '#1d1d1d',
55
- },
56
- '&:after': {
57
- content: '""',
58
- position: 'absolute',
59
- height: '100%',
60
- left: 0,
61
- top: 0,
62
- width: isActive ? '5px' : 0,
63
- opacity: isActive ? (dropDown ? 0 : 1) : 0,
64
- transition: theme.transitions.create(['opacity', 'width']),
65
- background: theme.palette.common.yellow,
66
- borderTopRightRadius: '3px',
67
- borderBottomRightRadius: '3px',
68
- },
69
- '&.MuiButton-endIcon, &.MuiButton-startIcon': {
70
- transition: theme.transitions.create(['color']),
71
-
72
- '&.MuiSvgIcon-root': {
73
- fontSize: 'inherit',
74
- transition: 'none',
75
- },
76
- },
77
- '& .MuiSvgIcon-root': {
78
- fontSize: theme.typography.pxToRem(20),
79
- marginRight: theme.spacing(1),
80
- // color: isActive
81
- // ? theme.sidebar.menuItemColorActive
82
- // : theme.sidebar.menuItemIconColor,
83
- },
84
- '& .MuiTypography-root': {
85
- color: theme.palette.common.white,
86
- },
87
- '& svg': {
88
- color: theme.palette.common.white,
89
- },
90
- '& .MuiListItemIcon-root': {
91
- minWidth: 0,
92
- maxWidth: '1rem',
93
- },
94
- }))
1
+ import { ChevronRight } from '@mui/icons-material'
2
+ import {
3
+ Box,
4
+ ListItemButton as MuiListItemButton,
5
+ ListItemButtonProps,
6
+ ListItemIcon,
7
+ ListItemText,
8
+ styled,
9
+ } from '@mui/material'
10
+ import { ReactNode } from 'react'
11
+
12
+ interface Props extends ListItemButtonProps {
13
+ hasChildren?: boolean
14
+ isActive?: boolean
15
+ label: String
16
+ icon?: any
17
+ }
18
+
19
+ export const ListItemButton = ({
20
+ isActive,
21
+ hasChildren,
22
+ onClick,
23
+ label,
24
+ icon: Icon,
25
+ }: Props) => {
26
+ return (
27
+ <StyledListItemButton isActive={isActive} onClick={onClick}>
28
+ {Icon ? (
29
+ <ListItemIcon>{<Icon />}</ListItemIcon>
30
+ ) : (
31
+ <Box minWidth={16}></Box>
32
+ )}
33
+ <ListItemText primary={label} />
34
+ </StyledListItemButton>
35
+ )
36
+ }
37
+
38
+ export const StyledChevronIcon = styled(ChevronRight)<{ open: boolean }>(
39
+ ({ theme, open }) => ({
40
+ transform: open ? 'rotate(90deg)' : 'rotate(0deg)',
41
+ transition: 'transform 0.2s ease-in-out',
42
+ }),
43
+ )
44
+
45
+ export const StyledListItemButton = styled(MuiListItemButton)<{
46
+ isActive: boolean
47
+ children: ReactNode
48
+ dropDown?: boolean
49
+ }>(({ theme, isActive, dropDown = false }) => ({
50
+ gap: '10px',
51
+ fontWeight: 'bold',
52
+ backgroundColor: isActive && '#1d1d1d',
53
+ '&:hover': {
54
+ backgroundColor: isActive && '#1d1d1d',
55
+ },
56
+ '&:after': {
57
+ content: '""',
58
+ position: 'absolute',
59
+ height: '100%',
60
+ left: 0,
61
+ top: 0,
62
+ width: isActive ? '5px' : 0,
63
+ opacity: isActive ? (dropDown ? 0 : 1) : 0,
64
+ transition: theme.transitions.create(['opacity', 'width']),
65
+ background: theme.palette.common.yellow,
66
+ borderTopRightRadius: '3px',
67
+ borderBottomRightRadius: '3px',
68
+ },
69
+ '&.MuiButton-endIcon, &.MuiButton-startIcon': {
70
+ transition: theme.transitions.create(['color']),
71
+
72
+ '&.MuiSvgIcon-root': {
73
+ fontSize: 'inherit',
74
+ transition: 'none',
75
+ },
76
+ },
77
+ '& .MuiSvgIcon-root': {
78
+ fontSize: theme.typography.pxToRem(20),
79
+ marginRight: theme.spacing(1),
80
+ // color: isActive
81
+ // ? theme.sidebar.menuItemColorActive
82
+ // : theme.sidebar.menuItemIconColor,
83
+ },
84
+ '& .MuiTypography-root': {
85
+ color: theme.palette.common.white,
86
+ },
87
+ '& svg': {
88
+ color: theme.palette.common.white,
89
+ },
90
+ '& .MuiListItemIcon-root': {
91
+ minWidth: 0,
92
+ maxWidth: '1rem',
93
+ },
94
+ }))
@@ -1,103 +1,103 @@
1
- import { Visibility, VisibilityOff } from '@mui/icons-material'
2
- import {
3
- Alert,
4
- Box,
5
- Button,
6
- IconButton,
7
- InputAdornment,
8
- Stack,
9
- styled,
10
- } from '@mui/material'
11
- import axiosBase from 'axios'
12
- import Cookies from 'js-cookie'
13
- import { useState } from 'react'
14
- import { useForm } from 'react-hook-form'
15
- import { FormTextField } from './HookForm'
16
-
17
- const developmentOrigin = window.location.origin + '/campx_dev'
18
-
19
- export const StyledTextField = styled(FormTextField)(({ theme }) => ({
20
- '& .MuiInputBase-root': {
21
- minHeight: '60px',
22
- },
23
- '& .MuiOutlinedInput-input': {
24
- padding: '18.5px 14px',
25
- },
26
- }))
27
-
28
- export const StyledButton = styled(Button)(({ theme }) => ({
29
- borderRadius: '10px',
30
- height: '60px',
31
- fontSize: '18px',
32
- }))
33
-
34
- export function LoginForm() {
35
- const [showPassword, setShowPassword] = useState(false)
36
- const { handleSubmit, control } = useForm()
37
- const [error, setError] = useState('')
38
-
39
- const onSubmit = async (values) => {
40
- try {
41
- const res = await axiosBase({
42
- method: 'POST',
43
- url: 'https://auth-api.campx.dev/auth/login',
44
- data: values,
45
- })
46
- Cookies.set('campx_session_key', res.data.cookie)
47
- window.location.href = developmentOrigin
48
- } catch (err) {
49
- // eslint-disable-next-line no-console
50
- console.log(err)
51
- setError(err.response.data.message ?? 'Server Error')
52
- }
53
- }
54
-
55
- return (
56
- <Box sx={{ maxWidth: '500px' }} margin="0 auto" padding={'0 1rem'}>
57
- <form onSubmit={handleSubmit(onSubmit)}>
58
- <Stack gap={'40px'}>
59
- <Box>
60
- <StyledTextField
61
- size="medium"
62
- control={control}
63
- name="username"
64
- label="User ID"
65
- required
66
- />
67
- </Box>
68
- <Box>
69
- <StyledTextField
70
- control={control}
71
- name="password"
72
- label="Password"
73
- type={showPassword ? 'text' : 'password'}
74
- required
75
- InputProps={{
76
- endAdornment: (
77
- <InputAdornment position="end">
78
- <IconButton
79
- size="small"
80
- aria-label="toggle password visibility"
81
- onClick={() => setShowPassword((prev) => !prev)}
82
- edge="end"
83
- >
84
- {showPassword ? <VisibilityOff /> : <Visibility />}
85
- </IconButton>
86
- </InputAdornment>
87
- ),
88
- }}
89
- />
90
- </Box>
91
- <StyledButton type="submit">Login</StyledButton>
92
- </Stack>
93
- </form>
94
- {error && (
95
- <Alert severity="error" sx={{ marginTop: '20px' }}>
96
- {error}
97
- </Alert>
98
- )}
99
- </Box>
100
- )
101
- }
102
-
103
- export default LoginForm
1
+ import { Visibility, VisibilityOff } from '@mui/icons-material'
2
+ import {
3
+ Alert,
4
+ Box,
5
+ Button,
6
+ IconButton,
7
+ InputAdornment,
8
+ Stack,
9
+ styled,
10
+ } from '@mui/material'
11
+ import axiosBase from 'axios'
12
+ import Cookies from 'js-cookie'
13
+ import { useState } from 'react'
14
+ import { useForm } from 'react-hook-form'
15
+ import { FormTextField } from './HookForm'
16
+
17
+ const developmentOrigin = window.location.origin + '/campx_dev'
18
+
19
+ export const StyledTextField = styled(FormTextField)(({ theme }) => ({
20
+ '& .MuiInputBase-root': {
21
+ minHeight: '60px',
22
+ },
23
+ '& .MuiOutlinedInput-input': {
24
+ padding: '18.5px 14px',
25
+ },
26
+ }))
27
+
28
+ export const StyledButton = styled(Button)(({ theme }) => ({
29
+ borderRadius: '10px',
30
+ height: '60px',
31
+ fontSize: '18px',
32
+ }))
33
+
34
+ export function LoginForm() {
35
+ const [showPassword, setShowPassword] = useState(false)
36
+ const { handleSubmit, control } = useForm()
37
+ const [error, setError] = useState('')
38
+
39
+ const onSubmit = async (values) => {
40
+ try {
41
+ const res = await axiosBase({
42
+ method: 'POST',
43
+ url: 'https://auth-api.campx.dev/auth/login',
44
+ data: values,
45
+ })
46
+ Cookies.set('campx_session_key', res.data.cookie)
47
+ window.location.href = developmentOrigin
48
+ } catch (err) {
49
+ // eslint-disable-next-line no-console
50
+ console.log(err)
51
+ setError(err.response.data.message ?? 'Server Error')
52
+ }
53
+ }
54
+
55
+ return (
56
+ <Box sx={{ maxWidth: '500px' }} margin="0 auto" padding={'0 1rem'}>
57
+ <form onSubmit={handleSubmit(onSubmit)}>
58
+ <Stack gap={'40px'}>
59
+ <Box>
60
+ <StyledTextField
61
+ size="medium"
62
+ control={control}
63
+ name="username"
64
+ label="User ID"
65
+ required
66
+ />
67
+ </Box>
68
+ <Box>
69
+ <StyledTextField
70
+ control={control}
71
+ name="password"
72
+ label="Password"
73
+ type={showPassword ? 'text' : 'password'}
74
+ required
75
+ InputProps={{
76
+ endAdornment: (
77
+ <InputAdornment position="end">
78
+ <IconButton
79
+ size="small"
80
+ aria-label="toggle password visibility"
81
+ onClick={() => setShowPassword((prev) => !prev)}
82
+ edge="end"
83
+ >
84
+ {showPassword ? <VisibilityOff /> : <Visibility />}
85
+ </IconButton>
86
+ </InputAdornment>
87
+ ),
88
+ }}
89
+ />
90
+ </Box>
91
+ <StyledButton type="submit">Login</StyledButton>
92
+ </Stack>
93
+ </form>
94
+ {error && (
95
+ <Alert severity="error" sx={{ marginTop: '20px' }}>
96
+ {error}
97
+ </Alert>
98
+ )}
99
+ </Box>
100
+ )
101
+ }
102
+
103
+ export default LoginForm