codeforlife 2.8.3 → 2.9.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.
- 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/endpoints/index.cjs.js +2 -0
- package/dist/api/endpoints/index.cjs.js.map +1 -0
- package/dist/api/endpoints/index.d.ts +81 -0
- package/dist/api/endpoints/index.es.js +78 -0
- package/dist/api/endpoints/index.es.js.map +1 -0
- package/dist/api/index.cjs.js +4 -0
- package/dist/api/index.cjs.js.map +1 -0
- package/dist/api/index.d.ts +77 -0
- package/dist/api/index.es.js +541 -0
- package/dist/api/index.es.js.map +1 -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/api.d.ts +123 -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/auth.d.ts +40 -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 +86 -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 +90 -0
- package/dist/components/index.es.js +383 -0
- package/dist/components/index.es.js.map +1 -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 +77 -0
- package/dist/components/page/index.es.js +9 -0
- package/dist/components/page/index.es.js.map +1 -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 +78 -0
- package/dist/components/router/index.es.js +11 -0
- package/dist/components/router/index.es.js.map +1 -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 +75 -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/index.cjs.js +2 -0
- package/dist/features/index.cjs.js.map +1 -0
- package/dist/features/index.d.ts +76 -0
- package/dist/features/index.es.js +47 -0
- package/dist/features/index.es.js.map +1 -0
- package/dist/form.d.ts +40 -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/general.d.ts +53 -0
- package/dist/hooks/index.cjs.js +2 -0
- package/dist/hooks/index.cjs.js.map +1 -0
- package/dist/hooks/index.d.ts +77 -0
- package/dist/hooks/index.es.js +25 -0
- package/dist/hooks/index.es.js.map +1 -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 +78 -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 +73 -0
- package/dist/middlewares/index.es.js +10 -0
- package/dist/middlewares/index.es.js.map +1 -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/router.d.ts +48 -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/schema.d.ts +89 -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/server.cjs.js +6 -0
- package/dist/server.cjs.js.map +1 -0
- package/dist/server.d.ts +129 -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/index.cjs.js +2 -0
- package/dist/settings/index.cjs.js.map +1 -0
- package/dist/settings/index.d.ts +76 -0
- package/dist/settings/index.es.js +17 -0
- package/dist/settings/index.es.js.map +1 -0
- package/dist/slices/index.cjs.js +2 -0
- package/dist/slices/index.cjs.js.map +1 -0
- package/dist/slices/index.d.ts +74 -0
- package/dist/slices/index.es.js +6 -0
- package/dist/slices/index.es.js.map +1 -0
- package/dist/store.d.ts +17 -0
- package/dist/style.css +1 -0
- package/dist/test.d.ts +75 -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 +75 -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 +79 -0
- package/dist/theme/index.es.js +222 -0
- package/dist/theme/index.es.js.map +1 -0
- package/dist/theme.d.ts +19 -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 +144 -0
- package/dist/utils/api.es.js +16 -0
- package/dist/utils/api.es.js.map +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 +100 -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 +97 -0
- package/dist/utils/form.es.js +76 -0
- package/dist/utils/form.es.js.map +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 +102 -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/router.cjs.js +2 -0
- package/dist/utils/router.cjs.js.map +1 -0
- package/dist/utils/router.d.ts +91 -0
- package/dist/utils/router.es.js +33 -0
- package/dist/utils/router.es.js.map +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 +115 -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 +82 -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 +125 -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 +83 -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 +74 -0
- package/dist/utils/window.es.js +11 -0
- package/dist/utils/window.es.js.map +1 -0
- package/dist/window.d.ts +5 -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/form.tsx +0 -11
- 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
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import { j as r } from "./jsx-runtime-Dpn_P65e.js";
|
|
2
|
+
import { Box as _, Container as O, Stack as m, Typography as p, IconButton as v, Tabs as w, Tab as B } from "@mui/material";
|
|
3
|
+
import { I as L } from "./Image-D5jC9UoX.js";
|
|
4
|
+
import { useState as b, useEffect as f, Children as F } from "react";
|
|
5
|
+
import { useLocation as I, useParams as N, useNavigate as k, generatePath as E } from "react-router-dom";
|
|
6
|
+
import { ErrorOutline as P, InfoOutlined as R, CloseOutlined as Y, ChevronLeft as A, ChevronRight as V } from "@mui/icons-material";
|
|
7
|
+
import { p as C, t as q, s as z, a as g } from "./palette-C_L0akN_.js";
|
|
8
|
+
import { a as M } from "./auth-BPfUPjmM.js";
|
|
9
|
+
import { L as u } from "./LinkButton-oK0RThqn.js";
|
|
10
|
+
import { object as W, string as D } from "yup";
|
|
11
|
+
import { tryValidateSync as G } from "./utils/schema.es.js";
|
|
12
|
+
const x = ({ boxProps: e, ...o }) => /* @__PURE__ */ r.jsx(_, { ...e, children: /* @__PURE__ */ r.jsx(O, { ...o }) }), T = ({
|
|
13
|
+
open: e = !0,
|
|
14
|
+
error: o = !1,
|
|
15
|
+
onClose: l,
|
|
16
|
+
children: t,
|
|
17
|
+
bgcolor: n = "secondary"
|
|
18
|
+
}) => {
|
|
19
|
+
const [c, a] = b(e);
|
|
20
|
+
if (f(() => {
|
|
21
|
+
a(e);
|
|
22
|
+
}, [e]), !c) return /* @__PURE__ */ r.jsx(r.Fragment, {});
|
|
23
|
+
const i = C[n].contrastText;
|
|
24
|
+
return /* @__PURE__ */ r.jsx(
|
|
25
|
+
x,
|
|
26
|
+
{
|
|
27
|
+
boxProps: {
|
|
28
|
+
bgcolor: {
|
|
29
|
+
secondary: "#ffd23b",
|
|
30
|
+
tertiary: "#08bafc"
|
|
31
|
+
}[n]
|
|
32
|
+
},
|
|
33
|
+
sx: { paddingY: "5px" },
|
|
34
|
+
children: /* @__PURE__ */ r.jsxs(m, { direction: "row", alignItems: "center", gap: 2, children: [
|
|
35
|
+
o ? /* @__PURE__ */ r.jsx(P, { htmlColor: i }) : /* @__PURE__ */ r.jsx(R, { htmlColor: i }),
|
|
36
|
+
/* @__PURE__ */ r.jsx(p, { variant: "body2", color: i, mb: 0, children: t }),
|
|
37
|
+
/* @__PURE__ */ r.jsx(
|
|
38
|
+
v,
|
|
39
|
+
{
|
|
40
|
+
style: { marginLeft: "auto" },
|
|
41
|
+
onClick: () => {
|
|
42
|
+
a(!1), l !== void 0 && l();
|
|
43
|
+
},
|
|
44
|
+
children: /* @__PURE__ */ r.jsx(Y, { htmlColor: i })
|
|
45
|
+
}
|
|
46
|
+
)
|
|
47
|
+
] })
|
|
48
|
+
}
|
|
49
|
+
);
|
|
50
|
+
}, H = ({
|
|
51
|
+
children: e,
|
|
52
|
+
session: o
|
|
53
|
+
}) => {
|
|
54
|
+
const { state: l } = I();
|
|
55
|
+
let { scroll: t, notifications: n } = l || {};
|
|
56
|
+
return t = t || { x: 0, y: 0 }, n = n || [], f(() => {
|
|
57
|
+
window.scroll(t.x, t.y);
|
|
58
|
+
}, [t.x, t.y]), /* @__PURE__ */ r.jsx(r.Fragment, { children: M((c) => {
|
|
59
|
+
if (typeof e == "function" && (e = e(c)), n.length) {
|
|
60
|
+
const a = F.toArray(e);
|
|
61
|
+
return n.forEach((i, h) => {
|
|
62
|
+
a.splice(
|
|
63
|
+
i.index ?? h,
|
|
64
|
+
0,
|
|
65
|
+
/* @__PURE__ */ r.jsx(T, { ...i.props })
|
|
66
|
+
);
|
|
67
|
+
}), a;
|
|
68
|
+
}
|
|
69
|
+
return e;
|
|
70
|
+
}, o) });
|
|
71
|
+
}, J = ({
|
|
72
|
+
header: e,
|
|
73
|
+
subheader: o,
|
|
74
|
+
textAlign: l = "start",
|
|
75
|
+
imageProps: t,
|
|
76
|
+
button1Props: n,
|
|
77
|
+
button2Props: c,
|
|
78
|
+
bgcolor: a = "primary"
|
|
79
|
+
}) => {
|
|
80
|
+
const i = C[a].contrastText;
|
|
81
|
+
return /* @__PURE__ */ r.jsx(
|
|
82
|
+
x,
|
|
83
|
+
{
|
|
84
|
+
boxProps: {
|
|
85
|
+
bgcolor: {
|
|
86
|
+
primary: g[500],
|
|
87
|
+
secondary: z[500],
|
|
88
|
+
tertiary: q[500]
|
|
89
|
+
}[a]
|
|
90
|
+
},
|
|
91
|
+
sx: { paddingY: 0 },
|
|
92
|
+
children: /* @__PURE__ */ r.jsxs(
|
|
93
|
+
m,
|
|
94
|
+
{
|
|
95
|
+
direction: "row",
|
|
96
|
+
alignItems: "center",
|
|
97
|
+
justifyContent: l,
|
|
98
|
+
gap: 2,
|
|
99
|
+
children: [
|
|
100
|
+
/* @__PURE__ */ r.jsxs(
|
|
101
|
+
m,
|
|
102
|
+
{
|
|
103
|
+
py: {
|
|
104
|
+
xs: "80px",
|
|
105
|
+
md: t !== void 0 ? 0 : "100px"
|
|
106
|
+
},
|
|
107
|
+
textAlign: l,
|
|
108
|
+
children: [
|
|
109
|
+
/* @__PURE__ */ r.jsx(
|
|
110
|
+
p,
|
|
111
|
+
{
|
|
112
|
+
variant: "h2",
|
|
113
|
+
color: i,
|
|
114
|
+
mb: o !== void 0 ? void 0 : 0,
|
|
115
|
+
children: e
|
|
116
|
+
}
|
|
117
|
+
),
|
|
118
|
+
o !== void 0 && /* @__PURE__ */ r.jsx(
|
|
119
|
+
p,
|
|
120
|
+
{
|
|
121
|
+
color: i,
|
|
122
|
+
variant: "h4",
|
|
123
|
+
mb: n !== void 0 ? void 0 : 0,
|
|
124
|
+
children: o
|
|
125
|
+
}
|
|
126
|
+
),
|
|
127
|
+
/* @__PURE__ */ r.jsxs(m, { direction: "row", gap: 2, children: [
|
|
128
|
+
n !== void 0 && /* @__PURE__ */ r.jsx(u, { ...n }),
|
|
129
|
+
c !== void 0 && /* @__PURE__ */ r.jsx(u, { ...c })
|
|
130
|
+
] })
|
|
131
|
+
]
|
|
132
|
+
}
|
|
133
|
+
),
|
|
134
|
+
t !== void 0 && /* @__PURE__ */ r.jsx(
|
|
135
|
+
L,
|
|
136
|
+
{
|
|
137
|
+
...t,
|
|
138
|
+
display: { xs: "none", md: "block" },
|
|
139
|
+
maxWidth: "320px",
|
|
140
|
+
marginLeft: "auto"
|
|
141
|
+
}
|
|
142
|
+
)
|
|
143
|
+
]
|
|
144
|
+
}
|
|
145
|
+
)
|
|
146
|
+
}
|
|
147
|
+
);
|
|
148
|
+
}, K = ({ header: e, tabs: o, originalPath: l, value: t = 0 }) => {
|
|
149
|
+
const n = N(), c = k(), [a, i] = b(
|
|
150
|
+
t < 0 ? 0 : t >= o.length ? o.length - 1 : t
|
|
151
|
+
), h = o.map((s) => s.label), S = o.map((s) => s.children), d = o.map((s) => s.path);
|
|
152
|
+
return f(() => {
|
|
153
|
+
i(t);
|
|
154
|
+
}, [t]), f(() => {
|
|
155
|
+
const s = G(
|
|
156
|
+
n,
|
|
157
|
+
W({
|
|
158
|
+
tab: D().oneOf(d).required()
|
|
159
|
+
})
|
|
160
|
+
)?.tab;
|
|
161
|
+
s !== void 0 && i(d.indexOf(s));
|
|
162
|
+
}, [n, d]), /* @__PURE__ */ r.jsxs(r.Fragment, { children: [
|
|
163
|
+
/* @__PURE__ */ r.jsx(
|
|
164
|
+
x,
|
|
165
|
+
{
|
|
166
|
+
boxProps: { bgcolor: g[500] },
|
|
167
|
+
sx: { paddingY: "100px" },
|
|
168
|
+
className: "flex-center",
|
|
169
|
+
children: /* @__PURE__ */ r.jsx(
|
|
170
|
+
p,
|
|
171
|
+
{
|
|
172
|
+
textAlign: "center",
|
|
173
|
+
variant: "h2",
|
|
174
|
+
style: { color: "white" },
|
|
175
|
+
mb: 0,
|
|
176
|
+
children: e
|
|
177
|
+
}
|
|
178
|
+
)
|
|
179
|
+
}
|
|
180
|
+
),
|
|
181
|
+
/* @__PURE__ */ r.jsx(
|
|
182
|
+
x,
|
|
183
|
+
{
|
|
184
|
+
boxProps: { bgcolor: g[300] },
|
|
185
|
+
sx: { paddingY: "6px" },
|
|
186
|
+
className: "flex-center",
|
|
187
|
+
children: /* @__PURE__ */ r.jsx(
|
|
188
|
+
w,
|
|
189
|
+
{
|
|
190
|
+
value: a,
|
|
191
|
+
onChange: (s, j) => {
|
|
192
|
+
c(
|
|
193
|
+
E(l, {
|
|
194
|
+
tab: d[j]
|
|
195
|
+
})
|
|
196
|
+
);
|
|
197
|
+
},
|
|
198
|
+
ScrollButtonComponent: ({
|
|
199
|
+
disabled: s,
|
|
200
|
+
onClick: j,
|
|
201
|
+
direction: y
|
|
202
|
+
}) => /* @__PURE__ */ r.jsx(r.Fragment, { children: s === !1 && /* @__PURE__ */ r.jsx(
|
|
203
|
+
v,
|
|
204
|
+
{
|
|
205
|
+
onClick: j,
|
|
206
|
+
style: {
|
|
207
|
+
padding: 0,
|
|
208
|
+
[y === "left" ? "marginRight" : "marginLeft"]: "15px",
|
|
209
|
+
color: "white"
|
|
210
|
+
},
|
|
211
|
+
children: y === "left" ? /* @__PURE__ */ r.jsx(r.Fragment, { children: /* @__PURE__ */ r.jsx(A, {}) }) : /* @__PURE__ */ r.jsx(r.Fragment, { children: /* @__PURE__ */ r.jsx(V, {}) })
|
|
212
|
+
}
|
|
213
|
+
) }),
|
|
214
|
+
children: h.map((s) => /* @__PURE__ */ r.jsx(B, { disableRipple: !0, label: s }, s))
|
|
215
|
+
}
|
|
216
|
+
)
|
|
217
|
+
}
|
|
218
|
+
),
|
|
219
|
+
S[a]
|
|
220
|
+
] });
|
|
221
|
+
}, ir = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
222
|
+
__proto__: null,
|
|
223
|
+
Banner: J,
|
|
224
|
+
Notification: T,
|
|
225
|
+
Page: H,
|
|
226
|
+
Section: x,
|
|
227
|
+
TabBar: K
|
|
228
|
+
}, Symbol.toStringTag, { value: "Module" }));
|
|
229
|
+
export {
|
|
230
|
+
J as B,
|
|
231
|
+
T as N,
|
|
232
|
+
H as P,
|
|
233
|
+
x as S,
|
|
234
|
+
K as T,
|
|
235
|
+
ir as i
|
|
236
|
+
};
|
|
237
|
+
//# sourceMappingURL=index-DkM_cG3a.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-DkM_cG3a.js","sources":["../src/components/page/Section.tsx","../src/components/page/Notification.tsx","../src/components/page/Page.tsx","../src/components/page/Banner.tsx","../src/components/page/TabBar.tsx"],"sourcesContent":["import {\n Box,\n type BoxProps,\n Container,\n type ContainerProps,\n} from \"@mui/material\"\nimport type { FC } from \"react\"\n\nexport interface SectionProps extends ContainerProps {\n boxProps?: Omit<BoxProps, \"children\">\n}\n\nconst Section: FC<SectionProps> = ({ boxProps, ...containerProps }) => {\n return (\n <Box {...boxProps}>\n <Container {...containerProps} />\n </Box>\n )\n}\n\nexport default Section\n","import {\n CloseOutlined as CloseOutlinedIcon,\n ErrorOutline as ErrorOutlineIcon,\n InfoOutlined as InfoOutlinedIcon,\n} from \"@mui/icons-material\"\nimport { type FC, type ReactNode, useEffect, useState } from \"react\"\nimport { IconButton, Stack, Typography } from \"@mui/material\"\n\nimport Section from \"./Section\"\nimport palette from \"../../theme/palette\"\n\nexport interface NotificationProps {\n open?: boolean\n error?: boolean\n onClose?: () => void\n children: ReactNode\n bgcolor?: \"secondary\" | \"tertiary\"\n}\n\nconst Notification: FC<NotificationProps> = ({\n open = true,\n error = false,\n onClose,\n children,\n bgcolor = \"secondary\",\n}) => {\n const [_open, _setOpen] = useState(open)\n\n useEffect(() => {\n _setOpen(open)\n }, [open])\n\n if (!_open) return <></>\n\n // @ts-expect-error guaranteed to be in palette\n const contrastText = palette[bgcolor].contrastText as string\n\n return (\n <Section\n boxProps={{\n bgcolor: {\n secondary: \"#ffd23b\",\n tertiary: \"#08bafc\",\n }[bgcolor],\n }}\n sx={{ paddingY: \"5px\" }}\n >\n <Stack direction=\"row\" alignItems=\"center\" gap={2}>\n {error ? (\n <ErrorOutlineIcon htmlColor={contrastText} />\n ) : (\n <InfoOutlinedIcon htmlColor={contrastText} />\n )}\n <Typography variant=\"body2\" color={contrastText} mb={0}>\n {children}\n </Typography>\n <IconButton\n style={{ marginLeft: \"auto\" }}\n onClick={() => {\n _setOpen(false)\n if (onClose !== undefined) onClose()\n }}\n >\n <CloseOutlinedIcon htmlColor={contrastText} />\n </IconButton>\n </Stack>\n </Section>\n )\n}\n\nexport default Notification\n","import { Children, type JSX, useEffect } from \"react\"\nimport { type Location, useLocation } from \"react-router-dom\"\n\nimport Notification, { type NotificationProps } from \"./Notification\"\nimport {\n type SessionMetadata,\n type UseSessionChildren,\n type UseSessionChildrenFunction,\n type UseSessionOptions,\n useSession,\n} from \"../../hooks/auth\"\n\nexport type PageState = {\n notifications: Array<{\n index?: number\n props: NotificationProps\n }>\n scroll: { x: number; y: number }\n}\n\nexport interface PageProps<\n SessionUserType extends SessionMetadata[\"user_type\"] | undefined,\n> {\n children: UseSessionChildren<SessionUserType>\n session?: UseSessionOptions<SessionUserType>\n}\n\nconst Page = <\n SessionUserType extends SessionMetadata[\"user_type\"] | undefined = undefined,\n>({\n children,\n session,\n}: PageProps<SessionUserType>): JSX.Element => {\n const { state } = useLocation() as Location<null | Partial<PageState>>\n\n let { scroll, notifications } = state || {}\n scroll = scroll || { x: 0, y: 0 }\n notifications = notifications || []\n\n useEffect(() => {\n window.scroll(scroll.x, scroll.y)\n }, [scroll.x, scroll.y])\n\n return (\n <>\n {useSession((metadata?: SessionMetadata) => {\n if (typeof children === \"function\") {\n children = metadata\n ? (children as UseSessionChildrenFunction<true>)(metadata)\n : (children as UseSessionChildrenFunction<false>)(metadata)\n }\n\n if (notifications.length) {\n const childrenArray = Children.toArray(children)\n\n notifications.forEach((notification, index) => {\n void childrenArray.splice(\n notification.index ?? index,\n 0,\n <Notification {...notification.props} />,\n )\n })\n\n return childrenArray\n }\n\n return children\n }, session)}\n </>\n )\n}\n\nexport default Page\n","import { Stack, Typography } from \"@mui/material\"\n\nimport Image, { type ImageProps } from \"../Image\"\nimport { LinkButton, type LinkButtonProps } from \"../router\"\nimport { primary, secondary, tertiary } from \"../../theme/colors\"\nimport Section from \"./Section\"\nimport palette from \"../../theme/palette\"\n\nexport interface BannerProps<\n Button1State extends Record<string, any> = Record<string, any>,\n Button2State extends Record<string, any> = Record<string, any>,\n> {\n header: string\n subheader?: string\n textAlign?: \"start\" | \"center\"\n imageProps?: ImageProps\n button1Props?: LinkButtonProps<\"to\", Button1State>\n button2Props?: LinkButtonProps<\"to\", Button2State>\n bgcolor?: \"primary\" | \"secondary\" | \"tertiary\"\n}\n\nconst Banner = <\n Button1State extends Record<string, any> = Record<string, any>,\n Button2State extends Record<string, any> = Record<string, any>,\n>({\n header,\n subheader,\n textAlign = \"start\",\n imageProps,\n button1Props,\n button2Props,\n bgcolor = \"primary\",\n}: BannerProps<Button1State, Button2State>) => {\n // @ts-expect-error guaranteed to be in palette\n const contrastText = palette[bgcolor].contrastText as string\n\n return (\n <Section\n boxProps={{\n bgcolor: {\n primary: primary[500],\n secondary: secondary[500],\n tertiary: tertiary[500],\n }[bgcolor],\n }}\n sx={{ paddingY: 0 }}\n >\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent={textAlign}\n gap={2}\n >\n <Stack\n py={{\n xs: \"80px\",\n md: imageProps !== undefined ? 0 : \"100px\",\n }}\n textAlign={textAlign}\n >\n <Typography\n variant=\"h2\"\n color={contrastText}\n mb={subheader !== undefined ? undefined : 0}\n >\n {header}\n </Typography>\n {subheader !== undefined && (\n <Typography\n color={contrastText}\n variant=\"h4\"\n mb={button1Props !== undefined ? undefined : 0}\n >\n {subheader}\n </Typography>\n )}\n <Stack direction=\"row\" gap={2}>\n {button1Props !== undefined && <LinkButton {...button1Props} />}\n {button2Props !== undefined && <LinkButton {...button2Props} />}\n </Stack>\n </Stack>\n {imageProps !== undefined && (\n <Image\n {...imageProps}\n display={{ xs: \"none\", md: \"block\" }}\n maxWidth=\"320px\"\n marginLeft=\"auto\"\n />\n )}\n </Stack>\n </Section>\n )\n}\n\nexport default Banner\n","import {\n ChevronLeft as ChevronLeftIcon,\n ChevronRight as ChevronRightIcon,\n} from \"@mui/icons-material\"\nimport { type FC, type ReactNode, useEffect, useState } from \"react\"\nimport {\n IconButton,\n Tab,\n type TabScrollButtonProps,\n Tabs,\n Typography,\n} from \"@mui/material\"\nimport { object as YupObject, string as YupString } from \"yup\"\nimport { generatePath, useNavigate, useParams } from \"react-router-dom\"\n\nimport Section from \"./Section\"\nimport { primary } from \"../../theme/colors\"\nimport { tryValidateSync } from \"../../utils/schema\"\n\nexport interface TabBarProps {\n header: string\n tabs: Array<{\n label: string\n children: ReactNode\n path: string\n }>\n originalPath: string\n value?: number\n}\n\nconst TabBar: FC<TabBarProps> = ({ header, tabs, originalPath, value = 0 }) => {\n const params = useParams()\n const navigate = useNavigate()\n const [_value, _setValue] = useState(\n value < 0 ? 0 : value >= tabs.length ? tabs.length - 1 : value,\n )\n\n const labels = tabs.map(tab => tab.label)\n const children = tabs.map(tab => tab.children)\n const paths = tabs.map(tab => tab.path)\n\n useEffect(() => {\n _setValue(value)\n }, [value])\n\n useEffect(() => {\n const tab = tryValidateSync(\n params,\n YupObject({\n tab: YupString().oneOf(paths).required(),\n }),\n )?.tab\n\n if (tab !== undefined) {\n _setValue(paths.indexOf(tab))\n }\n }, [params, paths])\n\n return (\n <>\n <Section\n boxProps={{ bgcolor: primary[500] }}\n sx={{ paddingY: \"100px\" }}\n className=\"flex-center\"\n >\n <Typography\n textAlign=\"center\"\n variant=\"h2\"\n style={{ color: \"white\" }}\n mb={0}\n >\n {header}\n </Typography>\n </Section>\n <Section\n boxProps={{ bgcolor: primary[300] }}\n sx={{ paddingY: \"6px\" }}\n className=\"flex-center\"\n >\n <Tabs\n value={_value}\n onChange={(_, value: number) => {\n navigate(\n generatePath(originalPath, {\n tab: paths[value],\n }),\n )\n }}\n ScrollButtonComponent={({\n disabled,\n onClick,\n direction,\n }: TabScrollButtonProps) => {\n return (\n <>\n {disabled === false && (\n <IconButton\n onClick={onClick}\n style={{\n padding: 0,\n [direction === \"left\" ? \"marginRight\" : \"marginLeft\"]:\n \"15px\",\n color: \"white\",\n }}\n >\n {direction === \"left\" ? (\n <>\n <ChevronLeftIcon />\n </>\n ) : (\n <>\n <ChevronRightIcon />\n </>\n )}\n </IconButton>\n )}\n </>\n )\n }}\n >\n {labels.map(label => (\n <Tab disableRipple key={label} label={label} />\n ))}\n </Tabs>\n </Section>\n {children[_value]}\n </>\n )\n}\n\nexport default TabBar\n"],"names":["Section","boxProps","containerProps","jsx","Box","Container","Notification","open","error","onClose","children","bgcolor","_open","_setOpen","useState","useEffect","Fragment","contrastText","palette","Stack","ErrorOutlineIcon","InfoOutlinedIcon","Typography","IconButton","CloseOutlinedIcon","Page","session","state","useLocation","scroll","notifications","useSession","metadata","childrenArray","Children","notification","index","Banner","header","subheader","textAlign","imageProps","button1Props","button2Props","primary","secondary","tertiary","jsxs","LinkButton","Image","TabBar","tabs","originalPath","value","params","useParams","navigate","useNavigate","_value","_setValue","labels","tab","paths","tryValidateSync","YupObject","YupString","Tabs","_","generatePath","disabled","onClick","direction","ChevronLeftIcon","ChevronRightIcon","label","Tab"],"mappings":";;;;;;;;;;;AAYA,MAAMA,IAA4B,CAAC,EAAE,UAAAC,GAAU,GAAGC,QAE9CC,gBAAAA,MAACC,KAAK,GAAGH,GACP,gCAACI,GAAA,EAAW,GAAGH,GAAgB,EAAA,CACjC,GCGEI,IAAsC,CAAC;AAAA,EAC3C,MAAAC,IAAO;AAAA,EACP,OAAAC,IAAQ;AAAA,EACR,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAAC,IAAU;AACZ,MAAM;AACJ,QAAM,CAACC,GAAOC,CAAQ,IAAIC,EAASP,CAAI;AAMvC,MAJAQ,EAAU,MAAM;AACd,IAAAF,EAASN,CAAI;AAAA,EACf,GAAG,CAACA,CAAI,CAAC,GAEL,CAACK,EAAO,QAAOT,gBAAAA,MAAAa,EAAAA,UAAA,CAAA,CAAE;AAGrB,QAAMC,IAAeC,EAAQP,CAAO,EAAE;AAEtC,SACER,gBAAAA,EAAAA;AAAAA,IAACH;AAAA,IAAA;AAAA,MACC,UAAU;AAAA,QACR,SAAS;AAAA,UACP,WAAW;AAAA,UACX,UAAU;AAAA,QAAA,EACVW,CAAO;AAAA,MAAA;AAAA,MAEX,IAAI,EAAE,UAAU,MAAA;AAAA,MAEhB,iCAACQ,GAAA,EAAM,WAAU,OAAM,YAAW,UAAS,KAAK,GAC7C,UAAA;AAAA,QAAAX,IACCL,gBAAAA,EAAAA,IAACiB,KAAiB,WAAWH,EAAA,CAAc,IAE3Cd,gBAAAA,EAAAA,IAACkB,GAAA,EAAiB,WAAWJ,EAAA,CAAc;AAAA,QAE7Cd,gBAAAA,MAACmB,KAAW,SAAQ,SAAQ,OAAOL,GAAc,IAAI,GAClD,UAAAP,GACH;AAAA,QACAP,gBAAAA,EAAAA;AAAAA,UAACoB;AAAA,UAAA;AAAA,YACC,OAAO,EAAE,YAAY,OAAA;AAAA,YACrB,SAAS,MAAM;AACb,cAAAV,EAAS,EAAK,GACVJ,MAAY,UAAWA,EAAA;AAAA,YAC7B;AAAA,YAEA,UAAAN,gBAAAA,EAAAA,IAACqB,GAAA,EAAkB,WAAWP,EAAA,CAAc;AAAA,UAAA;AAAA,QAAA;AAAA,MAC9C,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAGN,GCzCMQ,IAAO,CAEX;AAAA,EACA,UAAAf;AAAA,EACA,SAAAgB;AACF,MAA+C;AAC7C,QAAM,EAAE,OAAAC,EAAA,IAAUC,EAAA;AAElB,MAAI,EAAE,QAAAC,GAAQ,eAAAC,EAAA,IAAkBH,KAAS,CAAA;AACzC,SAAAE,IAASA,KAAU,EAAE,GAAG,GAAG,GAAG,EAAA,GAC9BC,IAAgBA,KAAiB,CAAA,GAEjCf,EAAU,MAAM;AACd,WAAO,OAAOc,EAAO,GAAGA,EAAO,CAAC;AAAA,EAClC,GAAG,CAACA,EAAO,GAAGA,EAAO,CAAC,CAAC,GAGrB1B,gBAAAA,EAAAA,IAAAa,EAAAA,UAAA,EACG,UAAAe,EAAW,CAACC,MAA+B;AAO1C,QANI,OAAOtB,KAAa,eACtBA,IACKA,EAA8CsB,CAAQ,IAIzDF,EAAc,QAAQ;AACxB,YAAMG,IAAgBC,EAAS,QAAQxB,CAAQ;AAE/C,aAAAoB,EAAc,QAAQ,CAACK,GAAcC,MAAU;AAC7C,QAAKH,EAAc;AAAA,UACjBE,EAAa,SAASC;AAAA,UACtB;AAAA,UACAjC,gBAAAA,EAAAA,IAACG,GAAA,EAAc,GAAG6B,EAAa,MAAA,CAAO;AAAA,QAAA;AAAA,MAE1C,CAAC,GAEMF;AAAA,IACT;AAEA,WAAOvB;AAAA,EACT,GAAGgB,CAAO,GACZ;AAEJ,GCjDMW,IAAS,CAGb;AAAA,EACA,QAAAC;AAAA,EACA,WAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,YAAAC;AAAA,EACA,cAAAC;AAAA,EACA,cAAAC;AAAA,EACA,SAAAhC,IAAU;AACZ,MAA+C;AAE7C,QAAMM,IAAeC,EAAQP,CAAO,EAAE;AAEtC,SACER,gBAAAA,EAAAA;AAAAA,IAACH;AAAA,IAAA;AAAA,MACC,UAAU;AAAA,QACR,SAAS;AAAA,UACP,SAAS4C,EAAQ,GAAG;AAAA,UACpB,WAAWC,EAAU,GAAG;AAAA,UACxB,UAAUC,EAAS,GAAG;AAAA,QAAA,EACtBnC,CAAO;AAAA,MAAA;AAAA,MAEX,IAAI,EAAE,UAAU,EAAA;AAAA,MAEhB,UAAAoC,gBAAAA,EAAAA;AAAAA,QAAC5B;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,YAAW;AAAA,UACX,gBAAgBqB;AAAA,UAChB,KAAK;AAAA,UAEL,UAAA;AAAA,YAAAO,gBAAAA,EAAAA;AAAAA,cAAC5B;AAAA,cAAA;AAAA,gBACC,IAAI;AAAA,kBACF,IAAI;AAAA,kBACJ,IAAIsB,MAAe,SAAY,IAAI;AAAA,gBAAA;AAAA,gBAErC,WAAAD;AAAA,gBAEA,UAAA;AAAA,kBAAArC,gBAAAA,EAAAA;AAAAA,oBAACmB;AAAA,oBAAA;AAAA,sBACC,SAAQ;AAAA,sBACR,OAAOL;AAAA,sBACP,IAAIsB,MAAc,SAAY,SAAY;AAAA,sBAEzC,UAAAD;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAEFC,MAAc,UACbpC,gBAAAA,EAAAA;AAAAA,oBAACmB;AAAA,oBAAA;AAAA,sBACC,OAAOL;AAAA,sBACP,SAAQ;AAAA,sBACR,IAAIyB,MAAiB,SAAY,SAAY;AAAA,sBAE5C,UAAAH;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAGLQ,gBAAAA,EAAAA,KAAC5B,GAAA,EAAM,WAAU,OAAM,KAAK,GACzB,UAAA;AAAA,oBAAAuB,MAAiB,UAAavC,gBAAAA,EAAAA,IAAC6C,GAAA,EAAY,GAAGN,EAAA,CAAc;AAAA,oBAC5DC,MAAiB,UAAaxC,gBAAAA,EAAAA,IAAC6C,GAAA,EAAY,GAAGL,EAAA,CAAc;AAAA,kBAAA,EAAA,CAC/D;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,YAEDF,MAAe,UACdtC,gBAAAA,EAAAA;AAAAA,cAAC8C;AAAA,cAAA;AAAA,gBACE,GAAGR;AAAA,gBACJ,SAAS,EAAE,IAAI,QAAQ,IAAI,QAAA;AAAA,gBAC3B,UAAS;AAAA,gBACT,YAAW;AAAA,cAAA;AAAA,YAAA;AAAA,UACb;AAAA,QAAA;AAAA,MAAA;AAAA,IAEJ;AAAA,EAAA;AAGN,GC9DMS,IAA0B,CAAC,EAAE,QAAAZ,GAAQ,MAAAa,GAAM,cAAAC,GAAc,OAAAC,IAAQ,QAAQ;AAC7E,QAAMC,IAASC,EAAA,GACTC,IAAWC,EAAA,GACX,CAACC,GAAQC,CAAS,IAAI7C;AAAA,IAC1BuC,IAAQ,IAAI,IAAIA,KAASF,EAAK,SAASA,EAAK,SAAS,IAAIE;AAAA,EAAA,GAGrDO,IAAST,EAAK,IAAI,CAAAU,MAAOA,EAAI,KAAK,GAClCnD,IAAWyC,EAAK,IAAI,CAAAU,MAAOA,EAAI,QAAQ,GACvCC,IAAQX,EAAK,IAAI,CAAAU,MAAOA,EAAI,IAAI;AAEtC,SAAA9C,EAAU,MAAM;AACd,IAAA4C,EAAUN,CAAK;AAAA,EACjB,GAAG,CAACA,CAAK,CAAC,GAEVtC,EAAU,MAAM;AACd,UAAM8C,IAAME;AAAA,MACVT;AAAA,MACAU,EAAU;AAAA,QACR,KAAKC,EAAA,EAAY,MAAMH,CAAK,EAAE,SAAA;AAAA,MAAS,CACxC;AAAA,IAAA,GACA;AAEH,IAAID,MAAQ,UACVF,EAAUG,EAAM,QAAQD,CAAG,CAAC;AAAA,EAEhC,GAAG,CAACP,GAAQQ,CAAK,CAAC,GAGhBf,gBAAAA,EAAAA,KAAA/B,YAAA,EACE,UAAA;AAAA,IAAAb,gBAAAA,EAAAA;AAAAA,MAACH;AAAA,MAAA;AAAA,QACC,UAAU,EAAE,SAAS4C,EAAQ,GAAG,EAAA;AAAA,QAChC,IAAI,EAAE,UAAU,QAAA;AAAA,QAChB,WAAU;AAAA,QAEV,UAAAzC,gBAAAA,EAAAA;AAAAA,UAACmB;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,SAAQ;AAAA,YACR,OAAO,EAAE,OAAO,QAAA;AAAA,YAChB,IAAI;AAAA,YAEH,UAAAgB;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,IAEFnC,gBAAAA,EAAAA;AAAAA,MAACH;AAAA,MAAA;AAAA,QACC,UAAU,EAAE,SAAS4C,EAAQ,GAAG,EAAA;AAAA,QAChC,IAAI,EAAE,UAAU,MAAA;AAAA,QAChB,WAAU;AAAA,QAEV,UAAAzC,gBAAAA,EAAAA;AAAAA,UAAC+D;AAAA,UAAA;AAAA,YACC,OAAOR;AAAA,YACP,UAAU,CAACS,GAAGd,MAAkB;AAC9B,cAAAG;AAAA,gBACEY,EAAahB,GAAc;AAAA,kBACzB,KAAKU,EAAMT,CAAK;AAAA,gBAAA,CACjB;AAAA,cAAA;AAAA,YAEL;AAAA,YACA,uBAAuB,CAAC;AAAA,cACtB,UAAAgB;AAAA,cACA,SAAAC;AAAA,cACA,WAAAC;AAAA,YAAA,MAGEpE,gBAAAA,EAAAA,IAAAa,EAAAA,UAAA,EACG,gBAAa,MACZb,gBAAAA,EAAAA;AAAAA,cAACoB;AAAA,cAAA;AAAA,gBACC,SAAA+C;AAAA,gBACA,OAAO;AAAA,kBACL,SAAS;AAAA,kBACT,CAACC,MAAc,SAAS,gBAAgB,YAAY,GAClD;AAAA,kBACF,OAAO;AAAA,gBAAA;AAAA,gBAGR,UAAAA,MAAc,SACbpE,gBAAAA,EAAAA,IAAAa,EAAAA,UAAA,EACE,UAAAb,gBAAAA,EAAAA,IAACqE,GAAA,CAAA,CAAgB,GACnB,IAEArE,gBAAAA,EAAAA,IAAAa,YAAA,EACE,UAAAb,gBAAAA,MAACsE,GAAA,CAAA,CAAiB,EAAA,CACpB;AAAA,cAAA;AAAA,YAAA,GAIR;AAAA,YAIH,UAAAb,EAAO,IAAI,CAAAc,MACVvE,gBAAAA,EAAAA,IAACwE,KAAI,eAAa,IAAa,OAAAD,EAAA,GAAPA,CAAqB,CAC9C;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,IAEDhE,EAASgD,CAAM;AAAA,EAAA,GAClB;AAEJ;;;;;;;;"}
|