@campxdev/shared 1.0.5 → 1.1.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.
Files changed (220) 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 +17 -17
  6. package/package.json +82 -82
  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 +67 -67
  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 +94 -94
  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 +126 -126
  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/HelpWidget/HelpWidget.tsx +298 -298
  83. package/src/components/Layout/Header/HelpWidget/styles.tsx +94 -94
  84. package/src/components/Layout/Header/Notification.tsx +13 -13
  85. package/src/components/Layout/Header/UserBox.tsx +90 -90
  86. package/src/components/Layout/Header/applications.ts +90 -90
  87. package/src/components/Layout/Header/assets/campx_square_small.svg +9 -9
  88. package/src/components/Layout/Header/assets/commutex.svg +14 -14
  89. package/src/components/Layout/Header/assets/commutexSmall.svg +11 -11
  90. package/src/components/Layout/Header/assets/enroll.svg +14 -14
  91. package/src/components/Layout/Header/assets/enrollx.svg +14 -14
  92. package/src/components/Layout/Header/assets/exams_small.svg +12 -12
  93. package/src/components/Layout/Header/assets/examsx.svg +14 -14
  94. package/src/components/Layout/Header/assets/hostel_small.svg +13 -13
  95. package/src/components/Layout/Header/assets/hostelx.svg +13 -13
  96. package/src/components/Layout/Header/assets/index.ts +33 -33
  97. package/src/components/Layout/Header/assets/libraryx.svg +12 -12
  98. package/src/components/Layout/Header/assets/pay_small.svg +16 -16
  99. package/src/components/Layout/Header/assets/payx.svg +19 -19
  100. package/src/components/Layout/Header/assets/people_small.svg +9 -9
  101. package/src/components/Layout/Header/assets/peoplex.svg +12 -12
  102. package/src/components/Layout/Header/assets/squarex.svg +12 -12
  103. package/src/components/Layout/Header/icons.tsx +57 -57
  104. package/src/components/Layout/Header/index.tsx +1 -1
  105. package/src/components/Layout/Header/styles.tsx +98 -98
  106. package/src/components/Layout/Tickets/MyTickets.tsx +74 -74
  107. package/src/components/Layout/Tickets/Services.tsx +6 -6
  108. package/src/components/Layout/Tickets/TicketDetails.tsx +66 -66
  109. package/src/components/Layout/Tickets/TimeLine.tsx +64 -64
  110. package/src/components/Layout/Tickets/index.tsx +1 -1
  111. package/src/components/Layout/Tickets/styles.tsx +136 -136
  112. package/src/components/LayoutWrapper.tsx +25 -25
  113. package/src/components/LinearProgress.tsx +19 -19
  114. package/src/components/ListItemButton.tsx +95 -95
  115. package/src/components/LoginForm.tsx +105 -103
  116. package/src/components/MediaRow/MediaRow.tsx +69 -69
  117. package/src/components/MediaRow/index.tsx +1 -1
  118. package/src/components/MenuButton.tsx +103 -103
  119. package/src/components/ModalButtons/DialogButton.tsx +88 -88
  120. package/src/components/ModalButtons/DrawerButton.tsx +89 -89
  121. package/src/components/ModalButtons/index.tsx +4 -4
  122. package/src/components/NoDataIllustration/NoDataIllustration.tsx +32 -32
  123. package/src/components/NoDataIllustration/index.tsx +1 -1
  124. package/src/components/PageContent.tsx +17 -17
  125. package/src/components/PageHeader.tsx +52 -52
  126. package/src/components/PageNotFound.tsx +26 -26
  127. package/src/components/PopupConfirm/ConfirmContextProvider.tsx +40 -40
  128. package/src/components/PopupConfirm/PopupConfirm.tsx +34 -34
  129. package/src/components/PopupConfirm/index.tsx +1 -1
  130. package/src/components/PopupConfirm/useConfirm.ts +47 -47
  131. package/src/components/Router.tsx +7 -7
  132. package/src/components/Row/Row.tsx +24 -24
  133. package/src/components/Row/index.tsx +1 -1
  134. package/src/components/SearchBar/SearchBar.tsx +53 -53
  135. package/src/components/SearchBar/index.tsx +1 -1
  136. package/src/components/SideMenuHeader.tsx +29 -29
  137. package/src/components/SideNav.tsx +168 -168
  138. package/src/components/Spinner.tsx +18 -18
  139. package/src/components/StepsHeader/StepsHeader.tsx +115 -115
  140. package/src/components/StepsHeader/index.tsx +1 -1
  141. package/src/components/StyledTableContainer.tsx +33 -33
  142. package/src/components/SwitchButton/SwitchButton.tsx +41 -41
  143. package/src/components/SwitchButton/index.tsx +1 -1
  144. package/src/components/Table.tsx +42 -42
  145. package/src/components/TableComponent/BatchActionsHeader.tsx +58 -58
  146. package/src/components/TableComponent/Icons/index.tsx +50 -50
  147. package/src/components/TableComponent/ReactTable.tsx +293 -293
  148. package/src/components/TableComponent/RenderTableBody.tsx +64 -64
  149. package/src/components/TableComponent/TableFooter/TableFooter.tsx +102 -102
  150. package/src/components/TableComponent/TableFooter/index.tsx +1 -1
  151. package/src/components/TableComponent/TableFooter/styles.tsx +28 -28
  152. package/src/components/TableComponent/index.tsx +226 -226
  153. package/src/components/TableComponent/react-table-config.d.ts +128 -128
  154. package/src/components/TableComponent/styles.tsx +173 -173
  155. package/src/components/TableComponent/types.ts +57 -57
  156. package/src/components/Tabs/Tabs.tsx +52 -52
  157. package/src/components/Tabs/TabsContainer.tsx +50 -50
  158. package/src/components/Tabs/index.tsx +1 -1
  159. package/src/components/Tabs/styles.tsx +55 -55
  160. package/src/components/ToastContainer/ToastContainer.tsx +42 -42
  161. package/src/components/ToastContainer/index.tsx +1 -1
  162. package/src/components/UploadButton/UploadButton.tsx +126 -126
  163. package/src/components/UploadButton/index.tsx +1 -1
  164. package/src/components/UploadButton/types.ts +19 -19
  165. package/src/components/UploadDocument/UploadDocument.tsx +108 -108
  166. package/src/components/UploadDocument/index.tsx +1 -1
  167. package/src/components/UploadFileDialog/UploadFileDialog.tsx +238 -238
  168. package/src/components/UploadFileDialog/index.tsx +1 -1
  169. package/src/components/index.ts +86 -86
  170. package/src/config/axios.ts +74 -74
  171. package/src/config/axiosXTenant.ts +57 -57
  172. package/src/constants/UIConstants.ts +97 -97
  173. package/src/constants/formValidations.ts +6 -6
  174. package/src/constants/index.ts +5 -5
  175. package/src/constants/isDevelopment.ts +3 -3
  176. package/src/constants/permissions.ts +67 -67
  177. package/src/constants/validateMessages.ts +12 -12
  178. package/src/contexts/LoginFormProvider.tsx +39 -39
  179. package/src/contexts/Providers.tsx +60 -59
  180. package/src/contexts/PublicProviders.tsx +30 -30
  181. package/src/contexts/QueryClientProvider.tsx +22 -22
  182. package/src/hooks/index.ts +3 -3
  183. package/src/hooks/useAppInit.ts +33 -33
  184. package/src/hooks/useAuth.ts +96 -92
  185. package/src/hooks/useFetch.ts +53 -53
  186. package/src/hooks/useRouter.ts +31 -31
  187. package/src/layouts/Components/DashBoardMenu.tsx +232 -232
  188. package/src/layouts/Components/icons/index.tsx +403 -403
  189. package/src/layouts/Components/styles.tsx +60 -60
  190. package/src/layouts/ComponentsLayout.tsx +3 -3
  191. package/src/permissions/PageWithPermission.tsx +18 -18
  192. package/src/permissions/PermissionDeniedPage.tsx +16 -16
  193. package/src/permissions/ValidateAccess.tsx +18 -18
  194. package/src/permissions/index.ts +2 -3
  195. package/src/react-app-env.d.ts +1 -1
  196. package/src/shared-state/AssetsStore.ts +15 -15
  197. package/src/{permissions → shared-state}/PermissionsStore.ts +352 -352
  198. package/src/shared-state/UserStore.ts +13 -13
  199. package/src/shared-state/index.ts +4 -3
  200. package/src/theme/App.less +3 -3
  201. package/src/theme/MuiThemeProvider.tsx +13 -13
  202. package/src/theme/customCssBaseline.ts +78 -78
  203. package/src/theme/index.css +75 -75
  204. package/src/theme/muiTheme.ts +490 -490
  205. package/src/theme/theme.d.ts +75 -75
  206. package/src/utils/alphabet.ts +23 -23
  207. package/src/utils/arrayPadEnd.ts +3 -3
  208. package/src/utils/formatCurrency.ts +9 -9
  209. package/src/utils/getUrlParams.ts +5 -5
  210. package/src/utils/index.ts +8 -8
  211. package/src/utils/logout.ts +24 -24
  212. package/src/utils/ordinalSuffixOf.ts +14 -14
  213. package/src/utils/romanize.ts +40 -40
  214. package/src/utils/withLocalization.tsx +11 -11
  215. package/src/utils/withRouteWrapper.tsx +25 -25
  216. package/src/utils/withSuspense.tsx +6 -6
  217. package/styled-components.tsx +60 -60
  218. package/todo.md +20 -20
  219. package/tsconfig.json +21 -21
  220. package/src/components/Layout/Header/assets/commuteX.png +0 -0
@@ -1,40 +1,40 @@
1
- import { createContext, ReactNode, useState } from 'react'
2
- import PopupConfirm from './PopupConfirm'
3
-
4
- interface ConfirmContextProps {
5
- confirm: {
6
- prompt: ReactNode
7
- isOpen: boolean
8
- proceed: () => void
9
- cancel: () => void
10
- }
11
- setConfirm: any
12
- }
13
-
14
- export const ConfirmContext = createContext<ConfirmContextProps>({
15
- confirm: {
16
- cancel: () => {},
17
- proceed: () => {},
18
- prompt: 'Are you sure?',
19
- isOpen: false,
20
- },
21
- setConfirm: () => {},
22
- })
23
-
24
- const ConfirmContextProvider = ({ children }) => {
25
- const [confirm, setConfirm] = useState({
26
- prompt: '',
27
- isOpen: false,
28
- proceed: null,
29
- cancel: null,
30
- })
31
-
32
- return (
33
- <ConfirmContext.Provider value={{ confirm, setConfirm }}>
34
- {children}
35
- <PopupConfirm />
36
- </ConfirmContext.Provider>
37
- )
38
- }
39
-
40
- export default ConfirmContextProvider
1
+ import { createContext, ReactNode, useState } from 'react'
2
+ import PopupConfirm from './PopupConfirm'
3
+
4
+ interface ConfirmContextProps {
5
+ confirm: {
6
+ prompt: ReactNode
7
+ isOpen: boolean
8
+ proceed: () => void
9
+ cancel: () => void
10
+ }
11
+ setConfirm: any
12
+ }
13
+
14
+ export const ConfirmContext = createContext<ConfirmContextProps>({
15
+ confirm: {
16
+ cancel: () => {},
17
+ proceed: () => {},
18
+ prompt: 'Are you sure?',
19
+ isOpen: false,
20
+ },
21
+ setConfirm: () => {},
22
+ })
23
+
24
+ const ConfirmContextProvider = ({ children }) => {
25
+ const [confirm, setConfirm] = useState({
26
+ prompt: '',
27
+ isOpen: false,
28
+ proceed: null,
29
+ cancel: null,
30
+ })
31
+
32
+ return (
33
+ <ConfirmContext.Provider value={{ confirm, setConfirm }}>
34
+ {children}
35
+ <PopupConfirm />
36
+ </ConfirmContext.Provider>
37
+ )
38
+ }
39
+
40
+ export default ConfirmContextProvider
@@ -1,34 +1,34 @@
1
- import {
2
- Button,
3
- Dialog,
4
- DialogActions,
5
- DialogContent,
6
- DialogTitle,
7
- } from '@mui/material'
8
- import useConfirm from './useConfirm'
9
-
10
- const PopupConfirm = () => {
11
- const { prompt = '', isOpen = false, proceed, cancel } = useConfirm()
12
- return (
13
- <Dialog
14
- sx={{ zIndex: 1600 }}
15
- keepMounted
16
- maxWidth="sm"
17
- fullWidth
18
- open={isOpen}
19
- transitionDuration={150}
20
- >
21
- <DialogTitle>Confirm</DialogTitle>
22
- <DialogContent sx={{ minHeight: '40px' }}>{prompt}</DialogContent>
23
- <DialogActions>
24
- <Button variant="contained" color="primary" onClick={proceed}>
25
- Ok
26
- </Button>
27
- <Button color="secondary" variant="outlined" onClick={cancel}>
28
- Cancel
29
- </Button>
30
- </DialogActions>
31
- </Dialog>
32
- )
33
- }
34
- export default PopupConfirm
1
+ import {
2
+ Button,
3
+ Dialog,
4
+ DialogActions,
5
+ DialogContent,
6
+ DialogTitle,
7
+ } from '@mui/material'
8
+ import useConfirm from './useConfirm'
9
+
10
+ const PopupConfirm = () => {
11
+ const { prompt = '', isOpen = false, proceed, cancel } = useConfirm()
12
+ return (
13
+ <Dialog
14
+ sx={{ zIndex: 1600 }}
15
+ keepMounted
16
+ maxWidth="sm"
17
+ fullWidth
18
+ open={isOpen}
19
+ transitionDuration={150}
20
+ >
21
+ <DialogTitle>Confirm</DialogTitle>
22
+ <DialogContent sx={{ minHeight: '40px' }}>{prompt}</DialogContent>
23
+ <DialogActions>
24
+ <Button variant="contained" color="primary" onClick={proceed}>
25
+ Ok
26
+ </Button>
27
+ <Button color="secondary" variant="outlined" onClick={cancel}>
28
+ Cancel
29
+ </Button>
30
+ </DialogActions>
31
+ </Dialog>
32
+ )
33
+ }
34
+ export default PopupConfirm
@@ -1 +1 @@
1
- export { default } from './PopupConfirm'
1
+ export { default } from './PopupConfirm'
@@ -1,47 +1,47 @@
1
- import { ReactNode, useContext, useEffect, useState } from 'react'
2
- import { ConfirmContext } from './ConfirmContextProvider'
3
-
4
- export default function useConfirm(): {
5
- isConfirmed: (prompt?: string) => Promise<boolean>
6
- prompt?: ReactNode
7
- isOpen?: boolean
8
- proceed?: () => void
9
- cancel?: () => void
10
- } {
11
- const { confirm, setConfirm } = useContext(ConfirmContext)
12
- const [needsCleanup, setNeedsCleanup] = useState(false)
13
-
14
- const isConfirmed = (prompt) => {
15
- setNeedsCleanup(true)
16
- const promise = new Promise((resolve, reject) => {
17
- setConfirm({
18
- prompt,
19
- isOpen: true,
20
- proceed: resolve,
21
- cancel: reject,
22
- })
23
- })
24
- return promise.then(
25
- () => {
26
- setConfirm({ ...confirm, isOpen: false })
27
- return true
28
- },
29
- () => {
30
- setConfirm({ ...confirm, isOpen: false })
31
- return false
32
- },
33
- )
34
- }
35
-
36
- useEffect(() => {
37
- return () => {
38
- if (confirm.cancel && needsCleanup) {
39
- confirm.cancel()
40
- }
41
- }
42
- }, [confirm, needsCleanup])
43
- return {
44
- ...confirm,
45
- isConfirmed,
46
- }
47
- }
1
+ import { ReactNode, useContext, useEffect, useState } from 'react'
2
+ import { ConfirmContext } from './ConfirmContextProvider'
3
+
4
+ export default function useConfirm(): {
5
+ isConfirmed: (prompt?: string) => Promise<boolean>
6
+ prompt?: ReactNode
7
+ isOpen?: boolean
8
+ proceed?: () => void
9
+ cancel?: () => void
10
+ } {
11
+ const { confirm, setConfirm } = useContext(ConfirmContext)
12
+ const [needsCleanup, setNeedsCleanup] = useState(false)
13
+
14
+ const isConfirmed = (prompt) => {
15
+ setNeedsCleanup(true)
16
+ const promise = new Promise((resolve, reject) => {
17
+ setConfirm({
18
+ prompt,
19
+ isOpen: true,
20
+ proceed: resolve,
21
+ cancel: reject,
22
+ })
23
+ })
24
+ return promise.then(
25
+ () => {
26
+ setConfirm({ ...confirm, isOpen: false })
27
+ return true
28
+ },
29
+ () => {
30
+ setConfirm({ ...confirm, isOpen: false })
31
+ return false
32
+ },
33
+ )
34
+ }
35
+
36
+ useEffect(() => {
37
+ return () => {
38
+ if (confirm.cancel && needsCleanup) {
39
+ confirm.cancel()
40
+ }
41
+ }
42
+ }, [confirm, needsCleanup])
43
+ return {
44
+ ...confirm,
45
+ isConfirmed,
46
+ }
47
+ }
@@ -1,7 +1,7 @@
1
- import React from 'react'
2
-
3
- function Router() {
4
- return <div>Router</div>
5
- }
6
-
7
- export default Router
1
+ import React from 'react'
2
+
3
+ function Router() {
4
+ return <div>Router</div>
5
+ }
6
+
7
+ export default Router
@@ -1,24 +1,24 @@
1
- import { Box, SxProps } from '@mui/material'
2
- import { ReactNode } from 'react'
3
-
4
- export default function Row({
5
- gap,
6
- children,
7
- sx,
8
- }: {
9
- gap: number
10
- children: ReactNode
11
- sx?: SxProps
12
- }) {
13
- return (
14
- <Box
15
- sx={{
16
- display: 'flex',
17
- gap: `${gap}px`,
18
- ...sx,
19
- }}
20
- >
21
- {children}
22
- </Box>
23
- )
24
- }
1
+ import { Box, SxProps } from '@mui/material'
2
+ import { ReactNode } from 'react'
3
+
4
+ export default function Row({
5
+ gap,
6
+ children,
7
+ sx,
8
+ }: {
9
+ gap: number
10
+ children: ReactNode
11
+ sx?: SxProps
12
+ }) {
13
+ return (
14
+ <Box
15
+ sx={{
16
+ display: 'flex',
17
+ gap: `${gap}px`,
18
+ ...sx,
19
+ }}
20
+ >
21
+ {children}
22
+ </Box>
23
+ )
24
+ }
@@ -1 +1 @@
1
- export { default } from './Row'
1
+ export { default } from './Row'
@@ -1,53 +1,53 @@
1
- import { Search, Tune } from '@mui/icons-material'
2
- import { Box, InputAdornment, styled, TextField } from '@mui/material'
3
- import { useState } from 'react'
4
-
5
- interface SearchBarProps {
6
- onSearch: (v: string) => void
7
- filters?: {
8
- onClick: () => void
9
- }
10
- }
11
-
12
- export default function SearchBar({ onSearch, filters }: SearchBarProps) {
13
- const [search, setSearch] = useState('')
14
- return (
15
- <Box sx={{ display: 'flex', gap: '20px' }}>
16
- <TextField
17
- sx={{ maxWidth: '600px' }}
18
- label="Search"
19
- value={search}
20
- onChange={(e) => {
21
- setSearch(e.target.value)
22
- onSearch(e.target.value)
23
- }}
24
- InputProps={{
25
- endAdornment: (
26
- <InputAdornment position="end">
27
- <Search />
28
- </InputAdornment>
29
- ),
30
- }}
31
- />
32
- {filters && (
33
- <StyledButtonWrapper onClick={filters?.onClick}>
34
- <Tune />
35
- </StyledButtonWrapper>
36
- )}
37
- </Box>
38
- )
39
- }
40
-
41
- const StyledButtonWrapper = styled(Box)(({ theme }) => ({
42
- width: '52px',
43
- border: theme.borders.grayLight,
44
- display: 'flex',
45
- alignItems: 'center',
46
- justifyContent: 'center',
47
- borderRadius: '10px',
48
- cursor: 'pointer',
49
- '&:active': {
50
- border: `1px solid ${theme.palette.primary.main}`,
51
- },
52
- transition: 'border 0.1s ease-in-out',
53
- }))
1
+ import { Search, Tune } from '@mui/icons-material'
2
+ import { Box, InputAdornment, styled, TextField } from '@mui/material'
3
+ import { useState } from 'react'
4
+
5
+ interface SearchBarProps {
6
+ onSearch: (v: string) => void
7
+ filters?: {
8
+ onClick: () => void
9
+ }
10
+ }
11
+
12
+ export default function SearchBar({ onSearch, filters }: SearchBarProps) {
13
+ const [search, setSearch] = useState('')
14
+ return (
15
+ <Box sx={{ display: 'flex', gap: '20px' }}>
16
+ <TextField
17
+ sx={{ maxWidth: '600px' }}
18
+ label="Search"
19
+ value={search}
20
+ onChange={(e) => {
21
+ setSearch(e.target.value)
22
+ onSearch(e.target.value)
23
+ }}
24
+ InputProps={{
25
+ endAdornment: (
26
+ <InputAdornment position="end">
27
+ <Search />
28
+ </InputAdornment>
29
+ ),
30
+ }}
31
+ />
32
+ {filters && (
33
+ <StyledButtonWrapper onClick={filters?.onClick}>
34
+ <Tune />
35
+ </StyledButtonWrapper>
36
+ )}
37
+ </Box>
38
+ )
39
+ }
40
+
41
+ const StyledButtonWrapper = styled(Box)(({ theme }) => ({
42
+ width: '52px',
43
+ border: theme.borders.grayLight,
44
+ display: 'flex',
45
+ alignItems: 'center',
46
+ justifyContent: 'center',
47
+ borderRadius: '10px',
48
+ cursor: 'pointer',
49
+ '&:active': {
50
+ border: `1px solid ${theme.palette.primary.main}`,
51
+ },
52
+ transition: 'border 0.1s ease-in-out',
53
+ }))
@@ -1 +1 @@
1
- export { default as SearchBar } from './SearchBar'
1
+ export { default as SearchBar } from './SearchBar'
@@ -1,29 +1,29 @@
1
- import { KeyboardBackspace } from '@mui/icons-material'
2
- import { Box, styled as styledMui, Typography } from '@mui/material'
3
- import { useNavigate } from 'react-router-dom'
4
-
5
- const StyledSideMenuHeader = styledMui(Box)(({ theme }) => ({
6
- height: '60px',
7
- display: 'flex',
8
- gap: '8px',
9
- alignItems: 'center',
10
- cursor: 'pointer',
11
- background: '#1d1d1d',
12
- }))
13
-
14
- export const SideMenuHeader = ({ title, path }) => {
15
- const navigate = useNavigate()
16
-
17
- return (
18
- <StyledSideMenuHeader
19
- onClick={() => {
20
- navigate(path)
21
- }}
22
- >
23
- <KeyboardBackspace />
24
- <Typography variant="h3" color={'white'}>
25
- {title}
26
- </Typography>
27
- </StyledSideMenuHeader>
28
- )
29
- }
1
+ import { KeyboardBackspace } from '@mui/icons-material'
2
+ import { Box, styled as styledMui, Typography } from '@mui/material'
3
+ import { useNavigate } from 'react-router-dom'
4
+
5
+ const StyledSideMenuHeader = styledMui(Box)(({ theme }) => ({
6
+ height: '60px',
7
+ display: 'flex',
8
+ gap: '8px',
9
+ alignItems: 'center',
10
+ cursor: 'pointer',
11
+ background: '#1d1d1d',
12
+ }))
13
+
14
+ export const SideMenuHeader = ({ title, path }) => {
15
+ const navigate = useNavigate()
16
+
17
+ return (
18
+ <StyledSideMenuHeader
19
+ onClick={() => {
20
+ navigate(path)
21
+ }}
22
+ >
23
+ <KeyboardBackspace />
24
+ <Typography variant="h3" color={'white'}>
25
+ {title}
26
+ </Typography>
27
+ </StyledSideMenuHeader>
28
+ )
29
+ }