codeforlife 2.8.3 → 2.9.1
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/dist/Countdown-DFI1RljW.js +28 -0
- package/dist/Countdown-DFI1RljW.js.map +1 -0
- package/dist/Countdown-zY3nMzmi.cjs +2 -0
- package/dist/Countdown-zY3nMzmi.cjs.map +1 -0
- package/dist/Image-D5jC9UoX.js +21 -0
- package/dist/Image-D5jC9UoX.js.map +1 -0
- package/dist/Image-mgT45r_B.cjs +2 -0
- package/dist/Image-mgT45r_B.cjs.map +1 -0
- package/dist/LinkButton-BYFkvL_O.cjs +2 -0
- package/dist/LinkButton-BYFkvL_O.cjs.map +1 -0
- package/dist/LinkButton-oK0RThqn.js +12 -0
- package/dist/LinkButton-oK0RThqn.js.map +1 -0
- package/dist/Navigate-Dq47aqC8.js +25 -0
- package/dist/Navigate-Dq47aqC8.js.map +1 -0
- package/dist/Navigate-dQocLhzN.cjs +2 -0
- package/dist/Navigate-dQocLhzN.cjs.map +1 -0
- package/dist/api/createApi.d.ts +7 -0
- package/dist/api/endpoints/authFactor.d.ts +11 -0
- package/dist/api/endpoints/index.cjs.js +2 -0
- package/dist/api/endpoints/index.cjs.js.map +1 -0
- package/dist/api/endpoints/index.d.ts +9 -0
- package/dist/api/endpoints/index.es.js +78 -0
- package/dist/api/endpoints/index.es.js.map +1 -0
- package/dist/api/endpoints/klass.d.ts +26 -0
- package/dist/api/endpoints/school.d.ts +11 -0
- package/dist/api/endpoints/session.d.ts +9 -0
- package/dist/api/endpoints/user.d.ts +19 -0
- package/dist/api/index.cjs.js +4 -0
- package/dist/api/index.cjs.js.map +1 -0
- package/dist/api/index.d.ts +5 -0
- package/dist/api/index.es.js +541 -0
- package/dist/api/index.es.js.map +1 -0
- package/dist/api/models.d.ts +92 -0
- package/dist/api/schemas.d.ts +20 -0
- package/dist/api/tagTypes.d.ts +3 -0
- package/dist/api/urls.d.ts +31 -0
- package/dist/api-Cbyt3rw0.js +92 -0
- package/dist/api-Cbyt3rw0.js.map +1 -0
- package/dist/api-CnMfjRk3.cjs +2 -0
- package/dist/api-CnMfjRk3.cjs.map +1 -0
- package/dist/api-Cs4Y-WeI.js +20 -0
- package/dist/api-Cs4Y-WeI.js.map +1 -0
- package/dist/api-DIgp_6Vr.cjs +2 -0
- package/dist/api-DIgp_6Vr.cjs.map +1 -0
- package/dist/auth-BPfUPjmM.js +237 -0
- package/dist/auth-BPfUPjmM.js.map +1 -0
- package/dist/auth-Vf1MgMci.cjs +2 -0
- package/dist/auth-Vf1MgMci.cjs.map +1 -0
- package/dist/components/App.d.ts +18 -0
- package/dist/components/ClickableTooltip.d.ts +6 -0
- package/dist/components/CopyIconButton.d.ts +7 -0
- package/dist/components/CopyIconButton.test.d.ts +1 -0
- package/dist/components/Countdown.d.ts +9 -0
- package/dist/components/DownloadFileButton.d.ts +13 -0
- package/dist/components/ElevatedAppBar.d.ts +8 -0
- package/dist/components/Image.d.ts +10 -0
- package/dist/components/InputFileButton.d.ts +7 -0
- package/dist/components/ItemizedList.d.ts +11 -0
- package/dist/components/OrderedGrid.d.ts +21 -0
- package/dist/components/ScrollIntoViewLink.d.ts +8 -0
- package/dist/components/SyncError.d.ts +5 -0
- package/dist/components/TablePagination.d.ts +20 -0
- package/dist/components/YouTubeVideo.d.ts +7 -0
- package/dist/components/form/ApiAutocompleteField.d.ts +14 -0
- package/dist/components/form/AutocompleteField.d.ts +11 -0
- package/dist/components/form/CheckboxField.d.ts +11 -0
- package/dist/components/form/CountryField.d.ts +10 -0
- package/dist/components/form/DatePickerField.d.ts +10 -0
- package/dist/components/form/EmailField.d.ts +5 -0
- package/dist/components/form/FirstNameField.d.ts +5 -0
- package/dist/components/form/Form.d.ts +36 -0
- package/dist/components/form/OtpField.d.ts +5 -0
- package/dist/components/form/PasswordField.d.ts +9 -0
- package/dist/components/form/RepeatField.d.ts +9 -0
- package/dist/components/form/SubmitButton.d.ts +6 -0
- package/dist/components/form/TextField.d.ts +14 -0
- package/dist/components/form/UkCountyField.d.ts +10 -0
- package/dist/components/form/index.cjs.js +2 -0
- package/dist/components/form/index.cjs.js.map +1 -0
- package/dist/components/form/index.d.ts +14 -0
- package/dist/components/form/index.es.js +18 -0
- package/dist/components/form/index.es.js.map +1 -0
- package/dist/components/index.cjs.js +11 -0
- package/dist/components/index.cjs.js.map +1 -0
- package/dist/components/index.d.ts +18 -0
- package/dist/components/index.es.js +383 -0
- package/dist/components/index.es.js.map +1 -0
- package/dist/components/page/Banner.d.ts +13 -0
- package/dist/components/page/Notification.d.ts +10 -0
- package/dist/components/page/Page.d.ts +19 -0
- package/dist/components/page/Section.d.ts +7 -0
- package/dist/components/page/TabBar.d.ts +13 -0
- package/dist/components/page/index.cjs.js +2 -0
- package/dist/components/page/index.cjs.js.map +1 -0
- package/dist/components/page/index.d.ts +5 -0
- package/dist/components/page/index.es.js +9 -0
- package/dist/components/page/index.es.js.map +1 -0
- package/dist/components/router/Link.d.ts +9 -0
- package/dist/components/router/LinkButton.d.ts +9 -0
- package/dist/components/router/LinkIconButton.d.ts +9 -0
- package/dist/components/router/LinkListItem.d.ts +9 -0
- package/dist/components/router/LinkTab.d.ts +9 -0
- package/dist/components/router/Navigate.d.ts +15 -0
- package/dist/components/router/index.cjs.js +2 -0
- package/dist/components/router/index.cjs.js.map +1 -0
- package/dist/components/router/index.d.ts +6 -0
- package/dist/components/router/index.es.js +11 -0
- package/dist/components/router/index.es.js.map +1 -0
- package/dist/components/table/CellStack.d.ts +7 -0
- package/dist/components/table/Table.d.ts +12 -0
- package/dist/components/table/index.cjs.js +2 -0
- package/dist/components/table/index.cjs.js.map +1 -0
- package/dist/components/table/index.d.ts +3 -0
- package/dist/components/table/index.es.js +9 -0
- package/dist/components/table/index.es.js.map +1 -0
- package/dist/en-gb-B_rK7Jx1.js +20 -0
- package/dist/en-gb-B_rK7Jx1.js.map +1 -0
- package/dist/en-gb-CpyEkKq3.cjs +2 -0
- package/dist/en-gb-CpyEkKq3.cjs.map +1 -0
- package/dist/features/InactiveDialog.d.ts +7 -0
- package/dist/features/ScreenTimeDialog.d.ts +7 -0
- package/dist/features/index.cjs.js +2 -0
- package/dist/features/index.cjs.js.map +1 -0
- package/dist/features/index.d.ts +4 -0
- package/dist/features/index.es.js +47 -0
- package/dist/features/index.es.js.map +1 -0
- package/dist/general-BPbbmkeX.cjs +2 -0
- package/dist/general-BPbbmkeX.cjs.map +1 -0
- package/dist/general-CtTJPCJn.js +58 -0
- package/dist/general-CtTJPCJn.js.map +1 -0
- package/dist/hooks/api.d.ts +15 -0
- package/dist/hooks/auth.d.ts +46 -0
- package/{src/hooks/form.tsx → dist/hooks/form.d.ts} +2 -5
- package/dist/hooks/general.d.ts +13 -0
- package/dist/hooks/index.cjs.js +2 -0
- package/dist/hooks/index.cjs.js.map +1 -0
- package/dist/hooks/index.d.ts +5 -0
- package/dist/hooks/index.es.js +25 -0
- package/dist/hooks/index.es.js.map +1 -0
- package/dist/hooks/router.d.ts +29 -0
- package/dist/index-2W--_sNE.js +30 -0
- package/dist/index-2W--_sNE.js.map +1 -0
- package/dist/index-BUMdUVBH.cjs +5 -0
- package/dist/index-BUMdUVBH.cjs.map +1 -0
- package/dist/index-B_Zy_zwA.cjs +2 -0
- package/dist/index-B_Zy_zwA.cjs.map +1 -0
- package/dist/index-BgsynEGX.cjs +2 -0
- package/dist/index-BgsynEGX.cjs.map +1 -0
- package/dist/index-CA-ugBSa.cjs +2 -0
- package/dist/index-CA-ugBSa.cjs.map +1 -0
- package/dist/index-CNtOlJ49.js +572 -0
- package/dist/index-CNtOlJ49.js.map +1 -0
- package/dist/index-DkM_cG3a.js +237 -0
- package/dist/index-DkM_cG3a.js.map +1 -0
- package/dist/index-Dqp7dpn3.js +1111 -0
- package/dist/index-Dqp7dpn3.js.map +1 -0
- package/dist/index.cjs.js +2 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.es.js +7 -0
- package/dist/index.es.js.map +1 -0
- package/dist/jsx-runtime-CeSfJrVB.cjs +31 -0
- package/dist/jsx-runtime-CeSfJrVB.cjs.map +1 -0
- package/dist/jsx-runtime-Dpn_P65e.js +634 -0
- package/dist/jsx-runtime-Dpn_P65e.js.map +1 -0
- package/dist/middlewares/index.cjs.js +2 -0
- package/dist/middlewares/index.cjs.js.map +1 -0
- package/dist/middlewares/index.d.ts +1 -0
- package/dist/middlewares/index.es.js +10 -0
- package/dist/middlewares/index.es.js.map +1 -0
- package/dist/middlewares/session.d.ts +2 -0
- package/dist/palette-CE2mKYse.cjs +2 -0
- package/dist/palette-CE2mKYse.cjs.map +1 -0
- package/dist/palette-C_L0akN_.js +43 -0
- package/dist/palette-C_L0akN_.js.map +1 -0
- package/dist/rtk-query.modern-CjetfYPg.js +3038 -0
- package/dist/rtk-query.modern-CjetfYPg.js.map +1 -0
- package/dist/rtk-query.modern-PBCErCqb.cjs +15 -0
- package/dist/rtk-query.modern-PBCErCqb.cjs.map +1 -0
- package/dist/schemas-BZbJpkD5.cjs +2 -0
- package/dist/schemas-BZbJpkD5.cjs.map +1 -0
- package/dist/schemas-DlOtf2vf.js +162 -0
- package/dist/schemas-DlOtf2vf.js.map +1 -0
- package/dist/scripts/index.d.ts +0 -0
- package/dist/server.cjs.js +6 -0
- package/dist/server.cjs.js.map +1 -0
- package/dist/server.d.ts +44 -0
- package/dist/server.es.js +127 -0
- package/dist/server.es.js.map +1 -0
- package/dist/session-CE2U7oL1.cjs +2 -0
- package/dist/session-CE2U7oL1.cjs.map +1 -0
- package/dist/session-CacrgFSv.cjs +2 -0
- package/dist/session-CacrgFSv.cjs.map +1 -0
- package/dist/session-D312kYKk.js +32 -0
- package/dist/session-D312kYKk.js.map +1 -0
- package/dist/session-oI-Ht2C8.js +30 -0
- package/dist/session-oI-Ht2C8.js.map +1 -0
- package/dist/settings/custom.d.ts +11 -0
- package/dist/settings/index.cjs.js +2 -0
- package/dist/settings/index.cjs.js.map +1 -0
- package/dist/settings/index.d.ts +4 -0
- package/dist/settings/index.es.js +17 -0
- package/dist/settings/index.es.js.map +1 -0
- package/dist/settings/vite.d.ts +10 -0
- package/dist/setupTests.d.ts +0 -0
- package/dist/slices/createSlice.d.ts +3 -0
- package/dist/slices/index.cjs.js +2 -0
- package/dist/slices/index.cjs.js.map +1 -0
- package/dist/slices/index.d.ts +2 -0
- package/dist/slices/index.es.js +6 -0
- package/dist/slices/index.es.js.map +1 -0
- package/dist/slices/session.d.ts +28 -0
- package/dist/style.css +1 -0
- package/dist/theme/ThemedBox.d.ts +10 -0
- package/dist/theme/colors.d.ts +18 -0
- package/dist/theme/components/MuiAccordion.d.ts +3 -0
- package/dist/theme/components/MuiAutocomplete.d.ts +3 -0
- package/dist/theme/components/MuiButton.d.ts +3 -0
- package/dist/theme/components/MuiCardActions.d.ts +3 -0
- package/dist/theme/components/MuiCheckbox.d.ts +3 -0
- package/dist/theme/components/MuiContainer.d.ts +3 -0
- package/dist/theme/components/MuiDialog.d.ts +3 -0
- package/dist/theme/components/MuiFormControlLabel.d.ts +3 -0
- package/dist/theme/components/MuiFormHelperText.d.ts +3 -0
- package/dist/theme/components/MuiGrid2.d.ts +3 -0
- package/dist/theme/components/MuiInputBase.d.ts +3 -0
- package/dist/theme/components/MuiLink.d.ts +3 -0
- package/dist/theme/components/MuiList.d.ts +3 -0
- package/dist/theme/components/MuiListItemText.d.ts +3 -0
- package/dist/theme/components/MuiMenu.d.ts +3 -0
- package/dist/theme/components/MuiMenuItem.d.ts +3 -0
- package/dist/theme/components/MuiSelect.d.ts +3 -0
- package/dist/theme/components/MuiTab.d.ts +3 -0
- package/dist/theme/components/MuiTable.d.ts +3 -0
- package/dist/theme/components/MuiTableBody.d.ts +3 -0
- package/dist/theme/components/MuiTableHead.d.ts +3 -0
- package/dist/theme/components/MuiTabs.d.ts +3 -0
- package/dist/theme/components/MuiTextField.d.ts +3 -0
- package/dist/theme/components/MuiToolbar.d.ts +3 -0
- package/dist/theme/components/MuiTypography.d.ts +3 -0
- package/dist/theme/components/_components.d.ts +11 -0
- package/dist/theme/components/index.cjs.js +2 -0
- package/dist/theme/components/index.cjs.js.map +1 -0
- package/dist/theme/components/index.d.ts +3 -0
- package/dist/theme/components/index.es.js +6 -0
- package/dist/theme/components/index.es.js.map +1 -0
- package/dist/theme/index.cjs.js +2 -0
- package/dist/theme/index.cjs.js.map +1 -0
- package/dist/theme/index.d.ts +7 -0
- package/dist/theme/index.es.js +222 -0
- package/dist/theme/index.es.js.map +1 -0
- package/dist/theme/palette.d.ts +79 -0
- package/dist/theme/spacing.d.ts +1 -0
- package/dist/theme/typography.d.ts +4 -0
- package/dist/urls-DtHr1d3H.js +14 -0
- package/dist/urls-DtHr1d3H.js.map +1 -0
- package/dist/urls-MaVXL_C2.cjs +2 -0
- package/dist/urls-MaVXL_C2.cjs.map +1 -0
- package/dist/utils/api.cjs.js +2 -0
- package/dist/utils/api.cjs.js.map +1 -0
- package/dist/utils/api.d.ts +72 -0
- package/dist/utils/api.es.js +16 -0
- package/dist/utils/api.es.js.map +1 -0
- package/dist/utils/api.test.d.ts +1 -0
- package/dist/utils/auth.cjs.js +2 -0
- package/dist/utils/auth.cjs.js.map +1 -0
- package/dist/utils/auth.d.ts +28 -0
- package/dist/utils/auth.es.js +117 -0
- package/dist/utils/auth.es.js.map +1 -0
- package/dist/utils/form.cjs.js +2 -0
- package/dist/utils/form.cjs.js.map +1 -0
- package/dist/utils/form.d.ts +25 -0
- package/dist/utils/form.es.js +76 -0
- package/dist/utils/form.es.js.map +1 -0
- package/dist/utils/form.test.d.ts +1 -0
- package/dist/utils/general.cjs.js +2 -0
- package/dist/utils/general.cjs.js.map +1 -0
- package/dist/utils/general.d.ts +30 -0
- package/{src/utils/general.ts → dist/utils/general.es.js} +87 -165
- package/dist/utils/general.es.js.map +1 -0
- package/dist/utils/general.test.d.ts +1 -0
- package/dist/utils/router.cjs.js +2 -0
- package/dist/utils/router.cjs.js.map +1 -0
- package/dist/utils/router.d.ts +19 -0
- package/dist/utils/router.es.js +33 -0
- package/dist/utils/router.es.js.map +1 -0
- package/dist/utils/router.test.d.ts +1 -0
- package/dist/utils/schema.cjs.js +2 -0
- package/dist/utils/schema.cjs.js.map +1 -0
- package/dist/utils/schema.d.ts +43 -0
- package/dist/utils/schema.es.js +123 -0
- package/dist/utils/schema.es.js.map +1 -0
- package/dist/utils/store.cjs.js +2 -0
- package/dist/utils/store.cjs.js.map +1 -0
- package/dist/utils/store.d.ts +10 -0
- package/dist/utils/store.es.js +20 -0
- package/dist/utils/store.es.js.map +1 -0
- package/dist/utils/test.cjs.js +2 -0
- package/dist/utils/test.cjs.js.map +1 -0
- package/dist/utils/test.d.ts +53 -0
- package/dist/utils/test.es.js +60 -0
- package/dist/utils/test.es.js.map +1 -0
- package/dist/utils/theme.cjs.js +2 -0
- package/dist/utils/theme.cjs.js.map +1 -0
- package/dist/utils/theme.d.ts +11 -0
- package/dist/utils/theme.es.js +12 -0
- package/dist/utils/theme.es.js.map +1 -0
- package/dist/utils/window.cjs.js +2 -0
- package/dist/utils/window.cjs.js.map +1 -0
- package/dist/utils/window.d.ts +2 -0
- package/dist/utils/window.es.js +11 -0
- package/dist/utils/window.es.js.map +1 -0
- package/package.json +142 -37
- package/.github/workflows/main.yml +0 -55
- package/.prettierignore +0 -1
- package/CHANGELOG.md +0 -2027
- package/CONTRIBUTING.md +0 -3
- package/eslint.config.js +0 -17
- package/src/api/createApi.ts +0 -91
- package/src/api/endpoints/authFactor.ts +0 -31
- package/src/api/endpoints/index.ts +0 -9
- package/src/api/endpoints/klass.ts +0 -87
- package/src/api/endpoints/school.ts +0 -34
- package/src/api/endpoints/session.ts +0 -47
- package/src/api/endpoints/user.ts +0 -70
- package/src/api/index.ts +0 -5
- package/src/api/models.ts +0 -145
- package/src/api/schemas.ts +0 -243
- package/src/api/tagTypes.ts +0 -12
- package/src/api/urls.ts +0 -13
- package/src/components/App.css +0 -38
- package/src/components/App.tsx +0 -152
- package/src/components/ClickableTooltip.tsx +0 -43
- package/src/components/CopyIconButton.test.tsx +0 -16
- package/src/components/CopyIconButton.tsx +0 -27
- package/src/components/Countdown.tsx +0 -42
- package/src/components/DownloadFileButton.tsx +0 -55
- package/src/components/ElevatedAppBar.tsx +0 -41
- package/src/components/Image.tsx +0 -41
- package/src/components/InputFileButton.tsx +0 -27
- package/src/components/ItemizedList.tsx +0 -63
- package/src/components/OrderedGrid.tsx +0 -92
- package/src/components/ScrollIntoViewLink.tsx +0 -22
- package/src/components/SyncError.tsx +0 -14
- package/src/components/TablePagination.tsx +0 -142
- package/src/components/YouTubeVideo.tsx +0 -26
- package/src/components/form/ApiAutocompleteField.tsx +0 -187
- package/src/components/form/AutocompleteField.tsx +0 -135
- package/src/components/form/CheckboxField.tsx +0 -86
- package/src/components/form/CountryField.tsx +0 -75
- package/src/components/form/DatePickerField.tsx +0 -126
- package/src/components/form/EmailField.tsx +0 -38
- package/src/components/form/FirstNameField.tsx +0 -40
- package/src/components/form/Form.tsx +0 -165
- package/src/components/form/OtpField.tsx +0 -28
- package/src/components/form/PasswordField.tsx +0 -71
- package/src/components/form/RepeatField.tsx +0 -123
- package/src/components/form/SubmitButton.tsx +0 -57
- package/src/components/form/TextField.tsx +0 -150
- package/src/components/form/UkCountyField.tsx +0 -68
- package/src/components/form/index.tsx +0 -35
- package/src/components/index.ts +0 -28
- package/src/components/page/Banner.tsx +0 -95
- package/src/components/page/Notification.tsx +0 -71
- package/src/components/page/Page.tsx +0 -73
- package/src/components/page/Section.tsx +0 -21
- package/src/components/page/TabBar.tsx +0 -131
- package/src/components/page/index.ts +0 -10
- package/src/components/router/Link.tsx +0 -23
- package/src/components/router/LinkButton.tsx +0 -22
- package/src/components/router/LinkIconButton.tsx +0 -22
- package/src/components/router/LinkListItem.tsx +0 -22
- package/src/components/router/LinkTab.tsx +0 -22
- package/src/components/router/Navigate.tsx +0 -33
- package/src/components/router/index.tsx +0 -9
- package/src/components/table/CellStack.tsx +0 -19
- package/src/components/table/Table.tsx +0 -55
- package/src/components/table/index.tsx +0 -8
- package/src/features/InactiveDialog.tsx +0 -40
- package/src/features/ScreenTimeDialog.tsx +0 -30
- package/src/features/index.ts +0 -4
- package/src/fonts/ttf/Inter-VariableFont_slnt,wght.ttf +0 -0
- package/src/fonts/ttf/SpaceGrotesk-VariableFont_wght.ttf +0 -0
- package/src/hooks/api.tsx +0 -39
- package/src/hooks/auth.tsx +0 -397
- package/src/hooks/general.tsx +0 -110
- package/src/hooks/index.ts +0 -5
- package/src/hooks/router.tsx +0 -168
- package/src/images/svg/brain.svg +0 -1
- package/src/index.ts +0 -2
- package/src/middlewares/index.ts +0 -1
- package/src/middlewares/session.ts +0 -21
- package/src/scripts/freshDesk.js +0 -473
- package/src/scripts/index.ts +0 -1
- package/src/server.js +0 -187
- package/src/settings/custom.ts +0 -22
- package/src/settings/index.ts +0 -7
- package/src/settings/vite.ts +0 -26
- package/src/setupTests.ts +0 -2
- package/src/slices/createSlice.ts +0 -8
- package/src/slices/index.ts +0 -2
- package/src/slices/session.ts +0 -32
- package/src/theme/ThemedBox.tsx +0 -265
- package/src/theme/colors.ts +0 -57
- package/src/theme/components/MuiAccordion.tsx +0 -13
- package/src/theme/components/MuiAutocomplete.tsx +0 -11
- package/src/theme/components/MuiButton.ts +0 -70
- package/src/theme/components/MuiCardActions.tsx +0 -12
- package/src/theme/components/MuiCheckbox.ts +0 -12
- package/src/theme/components/MuiContainer.ts +0 -19
- package/src/theme/components/MuiDialog.tsx +0 -16
- package/src/theme/components/MuiFormControlLabel.ts +0 -18
- package/src/theme/components/MuiFormHelperText.ts +0 -12
- package/src/theme/components/MuiGrid2.ts +0 -16
- package/src/theme/components/MuiInputBase.ts +0 -14
- package/src/theme/components/MuiLink.ts +0 -41
- package/src/theme/components/MuiList.ts +0 -12
- package/src/theme/components/MuiListItemText.ts +0 -18
- package/src/theme/components/MuiMenu.ts +0 -14
- package/src/theme/components/MuiMenuItem.ts +0 -15
- package/src/theme/components/MuiSelect.ts +0 -16
- package/src/theme/components/MuiTab.ts +0 -29
- package/src/theme/components/MuiTable.ts +0 -29
- package/src/theme/components/MuiTableBody.ts +0 -15
- package/src/theme/components/MuiTableHead.ts +0 -26
- package/src/theme/components/MuiTabs.ts +0 -26
- package/src/theme/components/MuiTextField.ts +0 -86
- package/src/theme/components/MuiToolbar.ts +0 -11
- package/src/theme/components/MuiTypography.ts +0 -12
- package/src/theme/components/_components.ts +0 -95
- package/src/theme/components/index.ts +0 -57
- package/src/theme/index.ts +0 -25
- package/src/theme/palette.ts +0 -98
- package/src/theme/spacing.ts +0 -8
- package/src/theme/typography.ts +0 -101
- package/src/utils/api.test.ts +0 -19
- package/src/utils/api.tsx +0 -339
- package/src/utils/auth.ts +0 -78
- package/src/utils/form.test.ts +0 -50
- package/src/utils/form.ts +0 -193
- package/src/utils/general.test.ts +0 -55
- package/src/utils/router.test.ts +0 -156
- package/src/utils/router.ts +0 -67
- package/src/utils/schema.ts +0 -290
- package/src/utils/store.ts +0 -31
- package/src/utils/test.tsx +0 -82
- package/src/utils/theme.tsx +0 -83
- package/src/utils/window.ts +0 -11
- package/src/vite-env.d.ts +0 -1
- package/tsconfig.app.json +0 -4
- package/tsconfig.json +0 -7
- package/tsconfig.node.json +0 -4
- package/types/fixes.d.ts +0 -18
- package/vite.config.ts +0 -23
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { Children, type JSX, useEffect } from "react"
|
|
2
|
-
import { type Location, useLocation } from "react-router-dom"
|
|
3
|
-
|
|
4
|
-
import Notification, { type NotificationProps } from "./Notification"
|
|
5
|
-
import {
|
|
6
|
-
type SessionMetadata,
|
|
7
|
-
type UseSessionChildren,
|
|
8
|
-
type UseSessionChildrenFunction,
|
|
9
|
-
type UseSessionOptions,
|
|
10
|
-
useSession,
|
|
11
|
-
} from "../../hooks/auth"
|
|
12
|
-
|
|
13
|
-
export type PageState = {
|
|
14
|
-
notifications: Array<{
|
|
15
|
-
index?: number
|
|
16
|
-
props: NotificationProps
|
|
17
|
-
}>
|
|
18
|
-
scroll: { x: number; y: number }
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export interface PageProps<
|
|
22
|
-
SessionUserType extends SessionMetadata["user_type"] | undefined,
|
|
23
|
-
> {
|
|
24
|
-
children: UseSessionChildren<SessionUserType>
|
|
25
|
-
session?: UseSessionOptions<SessionUserType>
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
const Page = <
|
|
29
|
-
SessionUserType extends SessionMetadata["user_type"] | undefined = undefined,
|
|
30
|
-
>({
|
|
31
|
-
children,
|
|
32
|
-
session,
|
|
33
|
-
}: PageProps<SessionUserType>): JSX.Element => {
|
|
34
|
-
const { state } = useLocation() as Location<null | Partial<PageState>>
|
|
35
|
-
|
|
36
|
-
let { scroll, notifications } = state || {}
|
|
37
|
-
scroll = scroll || { x: 0, y: 0 }
|
|
38
|
-
notifications = notifications || []
|
|
39
|
-
|
|
40
|
-
useEffect(() => {
|
|
41
|
-
window.scroll(scroll.x, scroll.y)
|
|
42
|
-
}, [scroll.x, scroll.y])
|
|
43
|
-
|
|
44
|
-
return (
|
|
45
|
-
<>
|
|
46
|
-
{useSession((metadata?: SessionMetadata) => {
|
|
47
|
-
if (typeof children === "function") {
|
|
48
|
-
children = metadata
|
|
49
|
-
? (children as UseSessionChildrenFunction<true>)(metadata)
|
|
50
|
-
: (children as UseSessionChildrenFunction<false>)(metadata)
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
if (notifications.length) {
|
|
54
|
-
const childrenArray = Children.toArray(children)
|
|
55
|
-
|
|
56
|
-
notifications.forEach((notification, index) => {
|
|
57
|
-
void childrenArray.splice(
|
|
58
|
-
notification.index ?? index,
|
|
59
|
-
0,
|
|
60
|
-
<Notification {...notification.props} />,
|
|
61
|
-
)
|
|
62
|
-
})
|
|
63
|
-
|
|
64
|
-
return childrenArray
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
return children
|
|
68
|
-
}, session)}
|
|
69
|
-
</>
|
|
70
|
-
)
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
export default Page
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Box,
|
|
3
|
-
type BoxProps,
|
|
4
|
-
Container,
|
|
5
|
-
type ContainerProps,
|
|
6
|
-
} from "@mui/material"
|
|
7
|
-
import type { FC } from "react"
|
|
8
|
-
|
|
9
|
-
export interface SectionProps extends ContainerProps {
|
|
10
|
-
boxProps?: Omit<BoxProps, "children">
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
const Section: FC<SectionProps> = ({ boxProps, ...containerProps }) => {
|
|
14
|
-
return (
|
|
15
|
-
<Box {...boxProps}>
|
|
16
|
-
<Container {...containerProps} />
|
|
17
|
-
</Box>
|
|
18
|
-
)
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export default Section
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ChevronLeft as ChevronLeftIcon,
|
|
3
|
-
ChevronRight as ChevronRightIcon,
|
|
4
|
-
} from "@mui/icons-material"
|
|
5
|
-
import { type FC, type ReactNode, useEffect, useState } from "react"
|
|
6
|
-
import {
|
|
7
|
-
IconButton,
|
|
8
|
-
Tab,
|
|
9
|
-
type TabScrollButtonProps,
|
|
10
|
-
Tabs,
|
|
11
|
-
Typography,
|
|
12
|
-
} from "@mui/material"
|
|
13
|
-
import { object as YupObject, string as YupString } from "yup"
|
|
14
|
-
import { generatePath, useNavigate, useParams } from "react-router-dom"
|
|
15
|
-
|
|
16
|
-
import Section from "./Section"
|
|
17
|
-
import { primary } from "../../theme/colors"
|
|
18
|
-
import { tryValidateSync } from "../../utils/schema"
|
|
19
|
-
|
|
20
|
-
export interface TabBarProps {
|
|
21
|
-
header: string
|
|
22
|
-
tabs: Array<{
|
|
23
|
-
label: string
|
|
24
|
-
children: ReactNode
|
|
25
|
-
path: string
|
|
26
|
-
}>
|
|
27
|
-
originalPath: string
|
|
28
|
-
value?: number
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
const TabBar: FC<TabBarProps> = ({ header, tabs, originalPath, value = 0 }) => {
|
|
32
|
-
const params = useParams()
|
|
33
|
-
const navigate = useNavigate()
|
|
34
|
-
const [_value, _setValue] = useState(
|
|
35
|
-
value < 0 ? 0 : value >= tabs.length ? tabs.length - 1 : value,
|
|
36
|
-
)
|
|
37
|
-
|
|
38
|
-
const labels = tabs.map(tab => tab.label)
|
|
39
|
-
const children = tabs.map(tab => tab.children)
|
|
40
|
-
const paths = tabs.map(tab => tab.path)
|
|
41
|
-
|
|
42
|
-
useEffect(() => {
|
|
43
|
-
_setValue(value)
|
|
44
|
-
}, [value])
|
|
45
|
-
|
|
46
|
-
useEffect(() => {
|
|
47
|
-
const tab = tryValidateSync(
|
|
48
|
-
params,
|
|
49
|
-
YupObject({
|
|
50
|
-
tab: YupString().oneOf(paths).required(),
|
|
51
|
-
}),
|
|
52
|
-
)?.tab
|
|
53
|
-
|
|
54
|
-
if (tab !== undefined) {
|
|
55
|
-
_setValue(paths.indexOf(tab))
|
|
56
|
-
}
|
|
57
|
-
}, [params, paths])
|
|
58
|
-
|
|
59
|
-
return (
|
|
60
|
-
<>
|
|
61
|
-
<Section
|
|
62
|
-
boxProps={{ bgcolor: primary[500] }}
|
|
63
|
-
sx={{ paddingY: "100px" }}
|
|
64
|
-
className="flex-center"
|
|
65
|
-
>
|
|
66
|
-
<Typography
|
|
67
|
-
textAlign="center"
|
|
68
|
-
variant="h2"
|
|
69
|
-
style={{ color: "white" }}
|
|
70
|
-
mb={0}
|
|
71
|
-
>
|
|
72
|
-
{header}
|
|
73
|
-
</Typography>
|
|
74
|
-
</Section>
|
|
75
|
-
<Section
|
|
76
|
-
boxProps={{ bgcolor: primary[300] }}
|
|
77
|
-
sx={{ paddingY: "6px" }}
|
|
78
|
-
className="flex-center"
|
|
79
|
-
>
|
|
80
|
-
<Tabs
|
|
81
|
-
value={_value}
|
|
82
|
-
onChange={(_, value: number) => {
|
|
83
|
-
navigate(
|
|
84
|
-
generatePath(originalPath, {
|
|
85
|
-
tab: paths[value],
|
|
86
|
-
}),
|
|
87
|
-
)
|
|
88
|
-
}}
|
|
89
|
-
ScrollButtonComponent={({
|
|
90
|
-
disabled,
|
|
91
|
-
onClick,
|
|
92
|
-
direction,
|
|
93
|
-
}: TabScrollButtonProps) => {
|
|
94
|
-
return (
|
|
95
|
-
<>
|
|
96
|
-
{disabled === false && (
|
|
97
|
-
<IconButton
|
|
98
|
-
onClick={onClick}
|
|
99
|
-
style={{
|
|
100
|
-
padding: 0,
|
|
101
|
-
[direction === "left" ? "marginRight" : "marginLeft"]:
|
|
102
|
-
"15px",
|
|
103
|
-
color: "white",
|
|
104
|
-
}}
|
|
105
|
-
>
|
|
106
|
-
{direction === "left" ? (
|
|
107
|
-
<>
|
|
108
|
-
<ChevronLeftIcon />
|
|
109
|
-
</>
|
|
110
|
-
) : (
|
|
111
|
-
<>
|
|
112
|
-
<ChevronRightIcon />
|
|
113
|
-
</>
|
|
114
|
-
)}
|
|
115
|
-
</IconButton>
|
|
116
|
-
)}
|
|
117
|
-
</>
|
|
118
|
-
)
|
|
119
|
-
}}
|
|
120
|
-
>
|
|
121
|
-
{labels.map(label => (
|
|
122
|
-
<Tab disableRipple key={label} label={label} />
|
|
123
|
-
))}
|
|
124
|
-
</Tabs>
|
|
125
|
-
</Section>
|
|
126
|
-
{children[_value]}
|
|
127
|
-
</>
|
|
128
|
-
)
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
export default TabBar
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export * from "./Banner"
|
|
2
|
-
export { default as Banner } from "./Banner"
|
|
3
|
-
export * from "./Notification"
|
|
4
|
-
export { default as Notification } from "./Notification"
|
|
5
|
-
export * from "./Page"
|
|
6
|
-
export { default as Page } from "./Page"
|
|
7
|
-
export * from "./Section"
|
|
8
|
-
export { default as Section } from "./Section"
|
|
9
|
-
export * from "./TabBar"
|
|
10
|
-
export { default as TabBar } from "./TabBar"
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { Link as MuiLink, type LinkProps as MuiLinkProps } from "@mui/material"
|
|
2
|
-
import { type JSX } from "react"
|
|
3
|
-
import { Link as RouterLink } from "react-router-dom"
|
|
4
|
-
|
|
5
|
-
import { type LinkProps as RouterLinkProps } from "../../utils/router"
|
|
6
|
-
|
|
7
|
-
export type LinkProps<
|
|
8
|
-
Override extends "delta" | "to",
|
|
9
|
-
State extends Record<string, any> = Record<string, any>,
|
|
10
|
-
> = Omit<MuiLinkProps, "component"> & RouterLinkProps<Override, State>
|
|
11
|
-
|
|
12
|
-
// https://mui.com/material-ui/integrations/routing/#link
|
|
13
|
-
const Link: {
|
|
14
|
-
(props: LinkProps<"delta">): JSX.Element
|
|
15
|
-
<State extends Record<string, any> = Record<string, any>>(
|
|
16
|
-
props: LinkProps<"to", State>,
|
|
17
|
-
): JSX.Element
|
|
18
|
-
} = (props: LinkProps<"delta"> | LinkProps<"to">) => {
|
|
19
|
-
// @ts-expect-error props are assignable
|
|
20
|
-
return <MuiLink component={RouterLink} {...props} />
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export default Link
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { Button, type ButtonProps } from "@mui/material"
|
|
2
|
-
import { type JSX } from "react"
|
|
3
|
-
import { Link } from "react-router-dom"
|
|
4
|
-
|
|
5
|
-
import { type LinkProps } from "../../utils/router"
|
|
6
|
-
|
|
7
|
-
export type LinkButtonProps<
|
|
8
|
-
Override extends "delta" | "to",
|
|
9
|
-
State extends Record<string, any> = Record<string, any>,
|
|
10
|
-
> = Omit<ButtonProps, "component"> & LinkProps<Override, State>
|
|
11
|
-
|
|
12
|
-
// https://mui.com/material-ui/integrations/routing/#button
|
|
13
|
-
const LinkButton: {
|
|
14
|
-
(props: LinkButtonProps<"delta">): JSX.Element
|
|
15
|
-
<State extends Record<string, any> = Record<string, any>>(
|
|
16
|
-
props: LinkButtonProps<"to", State>,
|
|
17
|
-
): JSX.Element
|
|
18
|
-
} = (props: LinkButtonProps<"delta"> | LinkButtonProps<"to">) => {
|
|
19
|
-
return <Button {...{ ...props, component: Link }} />
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export default LinkButton
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { IconButton, type IconButtonProps } from "@mui/material"
|
|
2
|
-
import { type JSX } from "react"
|
|
3
|
-
import { Link } from "react-router-dom"
|
|
4
|
-
|
|
5
|
-
import { type LinkProps } from "../../utils/router"
|
|
6
|
-
|
|
7
|
-
export type LinkIconButtonProps<
|
|
8
|
-
Override extends "delta" | "to",
|
|
9
|
-
State extends Record<string, any> = Record<string, any>,
|
|
10
|
-
> = Omit<IconButtonProps, "component"> & LinkProps<Override, State>
|
|
11
|
-
|
|
12
|
-
// https://mui.com/material-ui/integrations/routing/#button
|
|
13
|
-
const LinkIconButton: {
|
|
14
|
-
(props: LinkIconButtonProps<"delta">): JSX.Element
|
|
15
|
-
<State extends Record<string, any> = Record<string, any>>(
|
|
16
|
-
props: LinkIconButtonProps<"to", State>,
|
|
17
|
-
): JSX.Element
|
|
18
|
-
} = (props: LinkIconButtonProps<"delta"> | LinkIconButtonProps<"to">) => {
|
|
19
|
-
return <IconButton {...{ ...props, component: Link }} />
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export default LinkIconButton
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { ListItem, type ListItemProps } from "@mui/material"
|
|
2
|
-
import { type JSX } from "react"
|
|
3
|
-
import { Link } from "react-router-dom"
|
|
4
|
-
|
|
5
|
-
import { type LinkProps } from "../../utils/router"
|
|
6
|
-
|
|
7
|
-
export type LinkListItemProps<
|
|
8
|
-
Override extends "delta" | "to",
|
|
9
|
-
State extends Record<string, any> = Record<string, any>,
|
|
10
|
-
> = Omit<ListItemProps, "component"> & LinkProps<Override, State>
|
|
11
|
-
|
|
12
|
-
// https://mui.com/material-ui/integrations/routing/#list
|
|
13
|
-
const LinkListItem: {
|
|
14
|
-
(props: LinkListItemProps<"delta">): JSX.Element
|
|
15
|
-
<State extends Record<string, any> = Record<string, any>>(
|
|
16
|
-
props: LinkListItemProps<"to", State>,
|
|
17
|
-
): JSX.Element
|
|
18
|
-
} = (props: LinkListItemProps<"delta"> | LinkListItemProps<"to">) => {
|
|
19
|
-
return <ListItem {...{ ...props, component: Link }} />
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export default LinkListItem
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { Tab, type TabProps } from "@mui/material"
|
|
2
|
-
import { type JSX } from "react"
|
|
3
|
-
import { Link } from "react-router-dom"
|
|
4
|
-
|
|
5
|
-
import { type LinkProps } from "../../utils/router"
|
|
6
|
-
|
|
7
|
-
export type LinkTabProps<
|
|
8
|
-
Override extends "delta" | "to",
|
|
9
|
-
State extends Record<string, any> = Record<string, any>,
|
|
10
|
-
> = Omit<TabProps, "component"> & LinkProps<Override, State>
|
|
11
|
-
|
|
12
|
-
// https://mui.com/material-ui/integrations/routing/#tabs
|
|
13
|
-
const LinkTab: {
|
|
14
|
-
(props: LinkTabProps<"delta">): JSX.Element
|
|
15
|
-
<State extends Record<string, any> = Record<string, any>>(
|
|
16
|
-
props: LinkTabProps<"to", State>,
|
|
17
|
-
): JSX.Element
|
|
18
|
-
} = (props: LinkTabProps<"delta"> | LinkTabProps<"to">) => {
|
|
19
|
-
return <Tab {...{ ...props, component: Link }} />
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export default LinkTab
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { type JSX, useEffect } from "react"
|
|
2
|
-
import { type To } from "react-router-dom"
|
|
3
|
-
|
|
4
|
-
import { type NavigateOptions, useNavigate } from "../../hooks"
|
|
5
|
-
|
|
6
|
-
export type NavigateProps<
|
|
7
|
-
Override extends "delta" | "to",
|
|
8
|
-
State extends Record<string, any> = Record<string, any>,
|
|
9
|
-
> = Override extends "delta"
|
|
10
|
-
? { delta: number; to?: undefined }
|
|
11
|
-
: { delta?: undefined; to: To } & NavigateOptions<State>
|
|
12
|
-
|
|
13
|
-
const Navigate: {
|
|
14
|
-
(props: NavigateProps<"delta">): JSX.Element
|
|
15
|
-
<State extends Record<string, any> = Record<string, any>>(
|
|
16
|
-
props: NavigateProps<"to", State>,
|
|
17
|
-
): JSX.Element
|
|
18
|
-
} = ({
|
|
19
|
-
delta,
|
|
20
|
-
to,
|
|
21
|
-
...options
|
|
22
|
-
}: NavigateProps<"delta"> | NavigateProps<"to">) => {
|
|
23
|
-
const navigate = useNavigate()
|
|
24
|
-
|
|
25
|
-
useEffect(() => {
|
|
26
|
-
if (typeof delta === "number") navigate(delta)
|
|
27
|
-
else navigate(to, options)
|
|
28
|
-
}, [navigate, delta, to, options])
|
|
29
|
-
|
|
30
|
-
return <></>
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export default Navigate
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export { default as Link, type LinkProps } from "./Link"
|
|
2
|
-
export { default as LinkButton, type LinkButtonProps } from "./LinkButton"
|
|
3
|
-
export {
|
|
4
|
-
default as LinkIconButton,
|
|
5
|
-
type LinkIconButtonProps,
|
|
6
|
-
} from "./LinkIconButton"
|
|
7
|
-
export { default as LinkListItem, type LinkListItemProps } from "./LinkListItem"
|
|
8
|
-
export { default as LinkTab, type LinkTabProps } from "./LinkTab"
|
|
9
|
-
export { default as Navigate, type NavigateProps } from "./Navigate"
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Stack,
|
|
3
|
-
type StackProps,
|
|
4
|
-
TableCell,
|
|
5
|
-
type TableCellProps,
|
|
6
|
-
} from "@mui/material"
|
|
7
|
-
import { type FC } from "react"
|
|
8
|
-
|
|
9
|
-
export interface CellStackProps extends StackProps {
|
|
10
|
-
cellProps?: TableCellProps
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
const CellStack: FC<CellStackProps> = ({ cellProps, ...stackProps }) => (
|
|
14
|
-
<TableCell {...cellProps}>
|
|
15
|
-
<Stack {...stackProps} />
|
|
16
|
-
</TableCell>
|
|
17
|
-
)
|
|
18
|
-
|
|
19
|
-
export default CellStack
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { type FC, type ReactNode, isValidElement } from "react"
|
|
2
|
-
import {
|
|
3
|
-
Table as MuiTable,
|
|
4
|
-
type TableProps as MuiTableProps,
|
|
5
|
-
TableBody,
|
|
6
|
-
type TableBodyProps,
|
|
7
|
-
TableCell,
|
|
8
|
-
type TableCellProps,
|
|
9
|
-
TableContainer,
|
|
10
|
-
type TableContainerProps,
|
|
11
|
-
TableHead,
|
|
12
|
-
type TableHeadProps,
|
|
13
|
-
TableRow,
|
|
14
|
-
type TableRowProps,
|
|
15
|
-
} from "@mui/material"
|
|
16
|
-
|
|
17
|
-
export interface TableProps extends MuiTableProps {
|
|
18
|
-
headers: Array<ReactNode | TableCellProps>
|
|
19
|
-
children: ReactNode
|
|
20
|
-
containerProps?: TableContainerProps
|
|
21
|
-
headProps?: TableHeadProps
|
|
22
|
-
headRowProps?: TableRowProps
|
|
23
|
-
bodyProps?: TableBodyProps
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
const Table: FC<TableProps> = ({
|
|
27
|
-
headers,
|
|
28
|
-
children,
|
|
29
|
-
containerProps,
|
|
30
|
-
headProps,
|
|
31
|
-
headRowProps,
|
|
32
|
-
bodyProps,
|
|
33
|
-
...tableProps
|
|
34
|
-
}) => (
|
|
35
|
-
<TableContainer {...containerProps}>
|
|
36
|
-
<MuiTable {...tableProps}>
|
|
37
|
-
<TableHead {...headProps}>
|
|
38
|
-
<TableRow {...headRowProps}>
|
|
39
|
-
{headers.map((header, index) => {
|
|
40
|
-
const key = `table-head-cell-${index}`
|
|
41
|
-
|
|
42
|
-
return typeof header === "string" || isValidElement(header) ? (
|
|
43
|
-
<TableCell key={key}>{header}</TableCell>
|
|
44
|
-
) : (
|
|
45
|
-
<TableCell key={key} {...(header as TableCellProps)} />
|
|
46
|
-
)
|
|
47
|
-
})}
|
|
48
|
-
</TableRow>
|
|
49
|
-
</TableHead>
|
|
50
|
-
<TableBody {...bodyProps}>{children}</TableBody>
|
|
51
|
-
</MuiTable>
|
|
52
|
-
</TableContainer>
|
|
53
|
-
)
|
|
54
|
-
|
|
55
|
-
export default Table
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export { default as Table, type TableProps } from "./Table"
|
|
2
|
-
export { default as CellStack, type CellStackProps } from "./CellStack"
|
|
3
|
-
export {
|
|
4
|
-
TableCell as Cell,
|
|
5
|
-
type TableCellProps as CellProps,
|
|
6
|
-
TableRow as BodyRow,
|
|
7
|
-
type TableRowProps as BodyRowProps,
|
|
8
|
-
} from "@mui/material"
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { Button, Dialog, Typography } from "@mui/material"
|
|
2
|
-
import { type FC } from "react"
|
|
3
|
-
|
|
4
|
-
import { Countdown } from "../components"
|
|
5
|
-
|
|
6
|
-
export interface InactiveDialogProps {
|
|
7
|
-
open: boolean
|
|
8
|
-
onClose: () => void
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
const InactiveDialog: FC<InactiveDialogProps> = ({ open, onClose }) => {
|
|
12
|
-
return (
|
|
13
|
-
<Dialog open={open} onClose={onClose}>
|
|
14
|
-
<Typography variant="h5" textAlign="center">
|
|
15
|
-
Where did you go? 👀
|
|
16
|
-
</Typography>
|
|
17
|
-
<Typography textAlign="center">
|
|
18
|
-
We noticed that you have been inactive for a while. Are you still there?
|
|
19
|
-
For your online safety we will log you out in:
|
|
20
|
-
</Typography>
|
|
21
|
-
<Countdown
|
|
22
|
-
textAlign="center"
|
|
23
|
-
variant="h5"
|
|
24
|
-
seconds={60 * 2}
|
|
25
|
-
onEnd={() => {
|
|
26
|
-
onClose()
|
|
27
|
-
alert("TODO: call logout endpoint")
|
|
28
|
-
}}
|
|
29
|
-
/>
|
|
30
|
-
<Typography textAlign="center">
|
|
31
|
-
You may lose progress unless you continue or save.
|
|
32
|
-
</Typography>
|
|
33
|
-
<Button onClick={onClose} autoFocus>
|
|
34
|
-
Wait, I'm still here!
|
|
35
|
-
</Button>
|
|
36
|
-
</Dialog>
|
|
37
|
-
)
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export default InactiveDialog
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { Button, Dialog, Typography } from "@mui/material"
|
|
2
|
-
import { type FC } from "react"
|
|
3
|
-
|
|
4
|
-
import BrainImage from "../images/svg/brain.svg"
|
|
5
|
-
import { Image } from "../components"
|
|
6
|
-
|
|
7
|
-
export interface ScreenTimeDialogProps {
|
|
8
|
-
open: boolean
|
|
9
|
-
onClose: () => void
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
const ScreenTimeDialog: FC<ScreenTimeDialogProps> = ({ open, onClose }) => {
|
|
13
|
-
return (
|
|
14
|
-
<Dialog open={open} onClose={onClose} maxWidth="sm">
|
|
15
|
-
<Image src={BrainImage} alt="brain" maxWidth={100} marginY={3} />
|
|
16
|
-
<Typography variant="h5" textAlign="center">
|
|
17
|
-
Time for a break?
|
|
18
|
-
</Typography>
|
|
19
|
-
<Typography textAlign="center">
|
|
20
|
-
You have been using the Code for Life website for a while. Remember to
|
|
21
|
-
take regular screen breaks to recharge those brain cells!
|
|
22
|
-
</Typography>
|
|
23
|
-
<Button onClick={onClose} autoFocus>
|
|
24
|
-
Continue
|
|
25
|
-
</Button>
|
|
26
|
-
</Dialog>
|
|
27
|
-
)
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export default ScreenTimeDialog
|
package/src/features/index.ts
DELETED
|
Binary file
|
|
Binary file
|
package/src/hooks/api.tsx
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { type Dispatch, type SetStateAction, useState } from "react"
|
|
2
|
-
|
|
3
|
-
export type Pagination = { page: number; limit: number; offset: number }
|
|
4
|
-
export type SetPagination = Dispatch<
|
|
5
|
-
SetStateAction<{ page: number; limit: number }>
|
|
6
|
-
>
|
|
7
|
-
export type UsePaginationOptions = Partial<{
|
|
8
|
-
page: number
|
|
9
|
-
limit: number
|
|
10
|
-
}>
|
|
11
|
-
|
|
12
|
-
export function usePagination(
|
|
13
|
-
options?: UsePaginationOptions,
|
|
14
|
-
): [Pagination, SetPagination] {
|
|
15
|
-
const { page = 0, limit = 150 } = options || {}
|
|
16
|
-
|
|
17
|
-
const [pagination, _setPagination] = useState<Pagination>({
|
|
18
|
-
page,
|
|
19
|
-
limit,
|
|
20
|
-
offset: page * limit,
|
|
21
|
-
})
|
|
22
|
-
|
|
23
|
-
const setPagination: SetPagination = value => {
|
|
24
|
-
_setPagination(({ page: previousPage, limit: previousLimit }) => {
|
|
25
|
-
const pagination =
|
|
26
|
-
typeof value === "function"
|
|
27
|
-
? value({ page: previousPage, limit: previousLimit })
|
|
28
|
-
: value
|
|
29
|
-
let page = pagination.page
|
|
30
|
-
const limit = pagination.limit
|
|
31
|
-
|
|
32
|
-
if (limit !== previousLimit) page = 0
|
|
33
|
-
|
|
34
|
-
return { page, limit, offset: page * limit }
|
|
35
|
-
})
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
return [pagination, setPagination]
|
|
39
|
-
}
|