codeforlife 2.11.5 → 2.11.7
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-CL7dyZrl.cjs +2 -0
- package/dist/{Countdown-BtUbr1J_.cjs.map → Countdown-CL7dyZrl.cjs.map} +1 -1
- package/dist/Countdown-snRYiLrs.js +28 -0
- package/dist/{Countdown-DhjAmB0u.js.map → Countdown-snRYiLrs.js.map} +1 -1
- package/dist/Image-B_6DmnVe.cjs +2 -0
- package/dist/{Image-CgRVUblT.cjs.map → Image-B_6DmnVe.cjs.map} +1 -1
- package/dist/{Image-DTOu0h-V.js → Image-mkNhOo5p.js} +3 -3
- package/dist/{Image-DTOu0h-V.js.map → Image-mkNhOo5p.js.map} +1 -1
- package/dist/LinkButton-BQMG96aQ.cjs +2 -0
- package/dist/{LinkButton-Kw2brLTK.cjs.map → LinkButton-BQMG96aQ.cjs.map} +1 -1
- package/dist/LinkButton-CRDs950E.js +12 -0
- package/dist/{LinkButton-sQ5jgHnX.js.map → LinkButton-CRDs950E.js.map} +1 -1
- package/dist/Navigate-Ch0ljYa-.cjs +2 -0
- package/dist/{Navigate-CrMwdIBB.cjs.map → Navigate-Ch0ljYa-.cjs.map} +1 -1
- package/dist/Navigate-Zt9DRJve.js +25 -0
- package/dist/{Navigate-ClPcw87e.js.map → Navigate-Zt9DRJve.js.map} +1 -1
- package/dist/api/endpoints/index.cjs.js +1 -1
- package/dist/api/endpoints/index.cjs.js.map +1 -1
- package/dist/api/endpoints/index.es.js +29 -28
- package/dist/api/endpoints/index.es.js.map +1 -1
- package/dist/api/index.cjs.js +1 -3
- package/dist/api/index.cjs.js.map +1 -1
- package/dist/api/index.es.js +33 -515
- package/dist/api/index.es.js.map +1 -1
- package/dist/api-DIgp_6Vr.cjs +2 -0
- package/dist/{api-9cnyvZj7.cjs.map → api-DIgp_6Vr.cjs.map} +1 -1
- package/dist/api-G8CV5bUa.cjs +2 -0
- package/dist/{api-CAH3GT1O.cjs.map → api-G8CV5bUa.cjs.map} +1 -1
- package/dist/{api-BFYu8ZvQ.js → api-uh8UKwsU.js} +25 -25
- package/dist/{api-BFYu8ZvQ.js.map → api-uh8UKwsU.js.map} +1 -1
- package/dist/auth-B6anBtxF.js +238 -0
- package/dist/{auth-Bb8WkZGN.js.map → auth-B6anBtxF.js.map} +1 -1
- package/dist/auth-C2OUeLmQ.cjs +2 -0
- package/dist/{auth-BwpsrTko.cjs.map → auth-C2OUeLmQ.cjs.map} +1 -1
- package/dist/components/form/index.cjs.js +1 -1
- package/dist/components/form/index.es.js +1 -1
- package/dist/components/index.cjs.js +1 -1
- package/dist/components/index.cjs.js.map +1 -1
- package/dist/components/index.es.js +118 -118
- package/dist/components/index.es.js.map +1 -1
- package/dist/components/page/index.cjs.js +1 -1
- package/dist/components/page/index.es.js +1 -1
- package/dist/components/router/index.cjs.js +1 -1
- package/dist/components/router/index.es.js +2 -2
- package/dist/components/table/index.cjs.js +1 -1
- package/dist/components/table/index.es.js +1 -1
- package/dist/features/index.cjs.js +1 -1
- package/dist/features/index.cjs.js.map +1 -1
- package/dist/features/index.es.js +24 -22
- package/dist/features/index.es.js.map +1 -1
- package/dist/general-BPbbmkeX.cjs +2 -0
- package/dist/{general-Bo6JGvKB.cjs.map → general-BPbbmkeX.cjs.map} +1 -1
- package/dist/hooks/index.cjs.js +1 -1
- package/dist/hooks/index.es.js +1 -1
- package/dist/index-B3QkMBQe.cjs +2 -0
- package/dist/{index-5C9hpxRF.cjs.map → index-B3QkMBQe.cjs.map} +1 -1
- package/dist/index-BIL7PoEV.js +622 -0
- package/dist/index-BIL7PoEV.js.map +1 -0
- package/dist/index-C08WO83n.js +237 -0
- package/dist/{index-hdS8RgRc.js.map → index-C08WO83n.js.map} +1 -1
- package/dist/{index-CHboZsxD.js → index-CDxf6gMv.js} +92 -92
- package/dist/{index-CHboZsxD.js.map → index-CDxf6gMv.js.map} +1 -1
- package/dist/index-D2B9uIE4.cjs +2 -0
- package/dist/{index-B89FjK7v.cjs.map → index-D2B9uIE4.cjs.map} +1 -1
- package/dist/index-Dadidnct.cjs +2 -0
- package/dist/index-Dadidnct.cjs.map +1 -0
- package/dist/index-IXGAdLKG.js +30 -0
- package/dist/{index-B3e_XaVG.js.map → index-IXGAdLKG.js.map} +1 -1
- package/dist/index-JY2Et3RQ.cjs +2 -0
- package/dist/{index-CwC9mpb3.cjs.map → index-JY2Et3RQ.cjs.map} +1 -1
- package/dist/{schemas-BMQZbhti.js → schemas-UIk-meAN.js} +2 -2
- package/dist/{schemas-BMQZbhti.js.map → schemas-UIk-meAN.js.map} +1 -1
- package/dist/schemas-hIW9-H6-.cjs +2 -0
- package/dist/{schemas-DXX4rh8i.cjs.map → schemas-hIW9-H6-.cjs.map} +1 -1
- package/dist/server/App.cjs.js +1 -1
- package/dist/server/App.cjs.js.map +1 -1
- package/dist/server/App.es.js +11 -11
- package/dist/server/App.es.js.map +1 -1
- package/dist/server/entry.cjs.js +1 -1
- package/dist/server/entry.cjs.js.map +1 -1
- package/dist/server/entry.es.js +17 -17
- package/dist/server/entry.es.js.map +1 -1
- package/dist/{session-D312kYKk.js → session-COyN01K0.js} +11 -10
- package/dist/{session-D312kYKk.js.map → session-COyN01K0.js.map} +1 -1
- package/dist/session-eOp0H-EC.cjs +2 -0
- package/dist/{session-CacrgFSv.cjs.map → session-eOp0H-EC.cjs.map} +1 -1
- package/dist/theme/components/index.cjs.js +1 -1
- package/dist/theme/components/index.es.js +1 -1
- package/dist/theme/index.cjs.js +1 -1
- package/dist/theme/index.cjs.js.map +1 -1
- package/dist/theme/index.es.js +49 -49
- package/dist/theme/index.es.js.map +1 -1
- package/dist/{urls-CGZI0f1w.cjs → urls-2gheISSO.cjs} +2 -2
- package/dist/{urls-CGZI0f1w.cjs.map → urls-2gheISSO.cjs.map} +1 -1
- package/dist/{urls-DP4a8kxP.js → urls-BG788CnL.js} +2 -2
- package/dist/{urls-DP4a8kxP.js.map → urls-BG788CnL.js.map} +1 -1
- package/dist/utils/api.cjs.js +1 -1
- package/dist/utils/api.es.js +2 -2
- package/dist/utils/router.cjs.js +1 -1
- package/dist/utils/router.cjs.js.map +1 -1
- package/dist/utils/router.es.js +2 -2
- package/dist/utils/store.cjs.js +1 -1
- package/dist/utils/store.cjs.js.map +1 -1
- package/dist/utils/store.es.js +6 -6
- package/dist/utils/test.cjs.js +1 -1
- package/dist/utils/test.cjs.js.map +1 -1
- package/dist/utils/test.es.js +9 -9
- package/dist/utils/test.es.js.map +1 -1
- package/dist/utils/theme.cjs.js +1 -1
- package/dist/utils/theme.es.js +2 -2
- package/package.json +1 -1
- package/dist/Countdown-BtUbr1J_.cjs +0 -2
- package/dist/Countdown-DhjAmB0u.js +0 -28
- package/dist/Image-CgRVUblT.cjs +0 -2
- package/dist/LinkButton-Kw2brLTK.cjs +0 -2
- package/dist/LinkButton-sQ5jgHnX.js +0 -12
- package/dist/Navigate-ClPcw87e.js +0 -25
- package/dist/Navigate-CrMwdIBB.cjs +0 -2
- package/dist/_commonjsHelpers-DKOUU3wS.cjs +0 -2
- package/dist/_commonjsHelpers-DKOUU3wS.cjs.map +0 -1
- package/dist/_commonjsHelpers-DaMA6jEr.js +0 -9
- package/dist/_commonjsHelpers-DaMA6jEr.js.map +0 -1
- package/dist/api-9cnyvZj7.cjs +0 -2
- package/dist/api-CAH3GT1O.cjs +0 -2
- package/dist/auth-Bb8WkZGN.js +0 -237
- package/dist/auth-BwpsrTko.cjs +0 -2
- package/dist/client-CUE3jVb4.js +0 -25227
- package/dist/client-CUE3jVb4.js.map +0 -1
- package/dist/client-C_dmBP2e.cjs +0 -251
- package/dist/client-C_dmBP2e.cjs.map +0 -1
- package/dist/emotion-server-create-instance.browser.esm-CgeoyX9a.js +0 -2122
- package/dist/emotion-server-create-instance.browser.esm-CgeoyX9a.js.map +0 -1
- package/dist/emotion-server-create-instance.browser.esm-CpbXhK4a.cjs +0 -6
- package/dist/emotion-server-create-instance.browser.esm-CpbXhK4a.cjs.map +0 -1
- package/dist/en-gb-B_rK7Jx1.js +0 -20
- package/dist/en-gb-B_rK7Jx1.js.map +0 -1
- package/dist/en-gb-CpyEkKq3.cjs +0 -2
- package/dist/en-gb-CpyEkKq3.cjs.map +0 -1
- package/dist/general-Bo6JGvKB.cjs +0 -2
- package/dist/index-5C9hpxRF.cjs +0 -2
- package/dist/index-B3e_XaVG.js +0 -30
- package/dist/index-B89FjK7v.cjs +0 -2
- package/dist/index-BRHFlEjS.js +0 -1187
- package/dist/index-BRHFlEjS.js.map +0 -1
- package/dist/index-CwC9mpb3.cjs +0 -2
- package/dist/index-DuArGzQE.cjs +0 -5
- package/dist/index-DuArGzQE.cjs.map +0 -1
- package/dist/index-hdS8RgRc.js +0 -237
- package/dist/jsx-runtime-B2pbW5Fp.cjs +0 -23
- package/dist/jsx-runtime-B2pbW5Fp.cjs.map +0 -1
- package/dist/jsx-runtime-lzYHhGH3.js +0 -285
- package/dist/jsx-runtime-lzYHhGH3.js.map +0 -1
- package/dist/rtk-query.modern-CjetfYPg.js +0 -3038
- package/dist/rtk-query.modern-CjetfYPg.js.map +0 -1
- package/dist/rtk-query.modern-PBCErCqb.cjs +0 -15
- package/dist/rtk-query.modern-PBCErCqb.cjs.map +0 -1
- package/dist/schemas-DXX4rh8i.cjs +0 -2
- package/dist/server.browser-DeLuEZOk.cjs +0 -205
- package/dist/server.browser-DeLuEZOk.cjs.map +0 -1
- package/dist/server.browser-gAvZ6xhz.js +0 -19744
- package/dist/server.browser-gAvZ6xhz.js.map +0 -1
- package/dist/session-CacrgFSv.cjs +0 -2
- package/dist/style-BgmNVuOg.cjs +0 -2
- package/dist/style-BgmNVuOg.cjs.map +0 -1
- package/dist/style-C3515J9T.js +0 -5
- package/dist/style-C3515J9T.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas-DXX4rh8i.cjs","sources":["../src/api/schemas.ts"],"sourcesContent":["import * as yup from \"yup\"\n\nimport type {\n AdminSchoolTeacher,\n AdminSchoolTeacherUser,\n AuthFactor,\n Class,\n IndependentUser,\n NonAdminSchoolTeacher,\n NonAdminSchoolTeacherUser,\n NonSchoolTeacher,\n NonSchoolTeacherUser,\n OtpBypassToken,\n School,\n SchoolTeacher,\n SchoolTeacherUser,\n Student,\n StudentUser,\n Teacher,\n TeacherUser,\n User,\n} from \"./models\"\nimport { COUNTRY_ISO_CODES, UK_COUNTIES } from \"../utils/general\"\nimport {\n lowercaseAsciiAlphanumericString,\n numericId,\n unicodeAlphanumericString,\n uppercaseAsciiAlphanumericString,\n} from \"../utils/schema\"\nimport { type Schemas } from \"../utils/api\"\n\n// NOTE: do not use .required() here.\nconst id = {\n user: numericId(),\n teacher: numericId(),\n student: numericId(),\n school: numericId(),\n klass: uppercaseAsciiAlphanumericString().length(5),\n authFactor: numericId(),\n otpBypassToken: numericId(),\n}\n\n// -----------------------------------------------------------------------------\n// User Schemas\n// -----------------------------------------------------------------------------\n\nconst _userTeacher: Omit<Schemas<Teacher>, \"user\"> = {\n id: id.teacher.required(),\n school: id.school,\n is_admin: yup.bool().required(),\n}\n\nconst _userStudent: Omit<Schemas<Student>, \"user\"> = {\n id: id.student.required(),\n school: id.school.required(),\n klass: id.klass.required(),\n auto_gen_password: yup.string().required(),\n}\n\nexport const user: Schemas<User> = {\n id: id.user.required(),\n requesting_to_join_class: id.klass,\n first_name: unicodeAlphanumericString({\n spaces: true,\n specialChars: \"-'\",\n })\n .required()\n .max(150),\n last_name: unicodeAlphanumericString({\n spaces: true,\n specialChars: \"-'\",\n }).max(150),\n last_login: yup.date(),\n email: yup.string().email(),\n password: yup.string().required(),\n is_staff: yup.bool().required(),\n is_active: yup.bool().required(),\n date_joined: yup.date().required(),\n teacher: yup.object(_userTeacher).optional(),\n student: yup.object(_userStudent).optional(),\n}\n\nexport const teacherUser: Schemas<TeacherUser> = {\n ...user,\n password: user.password\n .min(10, \"must be at least 10 characters long\")\n .matches(/[A-Z]/, \"must contain at least one uppercase letter\")\n .matches(/[a-z]/, \"must contain at least one lowercase letter\")\n .matches(/[0-9]/, \"must contain at least one digit\")\n .matches(\n /[!@#$%^&*()_+\\-=[\\]{};':\"\\\\|,.<>/?]/,\n \"must contain at least one special character\",\n ),\n email: user.email.required(),\n last_name: user.last_name.required(),\n teacher: user.teacher.required(),\n student: yup.string().oneOf([undefined]),\n}\n\nconst _userSchoolTeacher: Omit<Schemas<SchoolTeacher>, \"user\"> = {\n ..._userTeacher,\n school: _userTeacher.school.required(),\n}\n\nexport const schoolTeacherUser: Schemas<SchoolTeacherUser> = {\n ...teacherUser,\n teacher: yup.object(_userSchoolTeacher),\n}\n\nconst _userAdminSchoolTeacher: Omit<Schemas<AdminSchoolTeacher>, \"user\"> = {\n ..._userSchoolTeacher,\n is_admin: _userSchoolTeacher.is_admin.isTrue(),\n}\n\nexport const adminSchoolTeacherUser: Schemas<AdminSchoolTeacherUser> = {\n ...schoolTeacherUser,\n teacher: yup.object(_userAdminSchoolTeacher),\n}\n\nconst _userNonAdminSchoolTeacher: Omit<\n Schemas<NonAdminSchoolTeacher>,\n \"user\"\n> = {\n ..._userSchoolTeacher,\n is_admin: _userSchoolTeacher.is_admin.isFalse(),\n}\n\nexport const nonAdminSchoolTeacherUser: Schemas<NonAdminSchoolTeacherUser> = {\n ...schoolTeacherUser,\n teacher: yup.object(_userNonAdminSchoolTeacher),\n}\n\nconst _userNonSchoolTeacher: Omit<Schemas<NonSchoolTeacher>, \"user\"> = {\n ..._userTeacher,\n school: yup.string().oneOf([undefined]),\n is_admin: _userTeacher.is_admin.isFalse(),\n}\n\nexport const nonSchoolTeacherUser: Schemas<NonSchoolTeacherUser> = {\n ...teacherUser,\n teacher: yup.object(_userNonSchoolTeacher),\n}\n\nexport const studentUser: Schemas<StudentUser> = {\n ...user,\n password: user.password.min(6, \"must be at least 6 characters long\"),\n email: user.email.oneOf([undefined]),\n last_name: user.last_name.oneOf([undefined]),\n teacher: yup.string().oneOf([undefined]),\n student: user.student.required(),\n}\n\nexport const indyUser: Schemas<IndependentUser> = {\n ...user,\n password: user.password\n .min(8, \"must be at least 8 characters long\")\n .matches(/[A-Z]/, \"must contain at least one uppercase letter\")\n .matches(/[a-z]/, \"must contain at least one lowercase letter\")\n .matches(/[0-9]/, \"must contain at least one digit\"),\n email: user.email.required(),\n last_name: user.last_name.required(),\n teacher: yup.string().oneOf([undefined]),\n student: yup.string().oneOf([undefined]),\n}\n\n// -----------------------------------------------------------------------------\n// Teacher Schemas\n// -----------------------------------------------------------------------------\n\nexport const teacher: Schemas<Teacher> = {\n ..._userTeacher,\n user: id.user.required(),\n}\n\nexport const schoolTeacher: Schemas<SchoolTeacher> = {\n ..._userSchoolTeacher,\n user: id.user.required(),\n}\n\nexport const adminSchoolTeacher: Schemas<AdminSchoolTeacher> = {\n ..._userAdminSchoolTeacher,\n user: id.user.required(),\n}\n\nexport const nonAdminSchoolTeacher: Schemas<NonAdminSchoolTeacher> = {\n ..._userNonAdminSchoolTeacher,\n user: id.user.required(),\n}\n\nexport const nonSchoolTeacher: Schemas<NonSchoolTeacher> = {\n ..._userNonSchoolTeacher,\n user: id.user.required(),\n}\n\n// -----------------------------------------------------------------------------\n// Other Schemas\n// -----------------------------------------------------------------------------\n\nexport const student: Schemas<Student> = {\n ..._userStudent,\n user: id.user.required(),\n}\n\nexport const school: Schemas<School> = {\n id: id.school.required(),\n name: unicodeAlphanumericString({\n spaces: true,\n specialChars: \"'.\",\n })\n .required()\n .max(200),\n country: yup.string().oneOf(COUNTRY_ISO_CODES),\n uk_county: yup.string().oneOf(UK_COUNTIES),\n}\n\nexport const klass: Schemas<Class> = {\n id: id.klass.required(),\n teacher: id.teacher.required(),\n school: id.school.required(),\n name: unicodeAlphanumericString({\n spaces: true,\n specialChars: \"-_\",\n })\n .required()\n .max(200),\n read_classmates_data: yup.bool().required(),\n receive_requests_until: yup.date(),\n}\n\nexport const authFactor: Schemas<AuthFactor> = {\n id: id.authFactor.required(),\n user: id.user.required(),\n type: yup\n .string()\n .oneOf([\"otp\"] as const)\n .required(),\n}\n\nexport const otpBypassToken: Schemas<OtpBypassToken> = {\n id: id.otpBypassToken.required(),\n user: id.user.required(),\n token: lowercaseAsciiAlphanumericString().required().length(8),\n}\n"],"names":["id","numericId","uppercaseAsciiAlphanumericString","_userTeacher","yup","_userStudent","user","unicodeAlphanumericString","teacherUser","_userSchoolTeacher","schoolTeacherUser","_userAdminSchoolTeacher","adminSchoolTeacherUser","_userNonAdminSchoolTeacher","nonAdminSchoolTeacherUser","_userNonSchoolTeacher","nonSchoolTeacherUser","studentUser","indyUser","teacher","schoolTeacher","adminSchoolTeacher","nonAdminSchoolTeacher","nonSchoolTeacher","student","school","COUNTRY_ISO_CODES","UK_COUNTIES","klass","authFactor","otpBypassToken","lowercaseAsciiAlphanumericString"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schemas-hIW9-H6-.cjs","sources":["../src/api/schemas.ts"],"sourcesContent":["import * as yup from \"yup\"\n\nimport type {\n AdminSchoolTeacher,\n AdminSchoolTeacherUser,\n AuthFactor,\n Class,\n IndependentUser,\n NonAdminSchoolTeacher,\n NonAdminSchoolTeacherUser,\n NonSchoolTeacher,\n NonSchoolTeacherUser,\n OtpBypassToken,\n School,\n SchoolTeacher,\n SchoolTeacherUser,\n Student,\n StudentUser,\n Teacher,\n TeacherUser,\n User,\n} from \"./models\"\nimport { COUNTRY_ISO_CODES, UK_COUNTIES } from \"../utils/general\"\nimport {\n lowercaseAsciiAlphanumericString,\n numericId,\n unicodeAlphanumericString,\n uppercaseAsciiAlphanumericString,\n} from \"../utils/schema\"\nimport { type Schemas } from \"../utils/api\"\n\n// NOTE: do not use .required() here.\nconst id = {\n user: numericId(),\n teacher: numericId(),\n student: numericId(),\n school: numericId(),\n klass: uppercaseAsciiAlphanumericString().length(5),\n authFactor: numericId(),\n otpBypassToken: numericId(),\n}\n\n// -----------------------------------------------------------------------------\n// User Schemas\n// -----------------------------------------------------------------------------\n\nconst _userTeacher: Omit<Schemas<Teacher>, \"user\"> = {\n id: id.teacher.required(),\n school: id.school,\n is_admin: yup.bool().required(),\n}\n\nconst _userStudent: Omit<Schemas<Student>, \"user\"> = {\n id: id.student.required(),\n school: id.school.required(),\n klass: id.klass.required(),\n auto_gen_password: yup.string().required(),\n}\n\nexport const user: Schemas<User> = {\n id: id.user.required(),\n requesting_to_join_class: id.klass,\n first_name: unicodeAlphanumericString({\n spaces: true,\n specialChars: \"-'\",\n })\n .required()\n .max(150),\n last_name: unicodeAlphanumericString({\n spaces: true,\n specialChars: \"-'\",\n }).max(150),\n last_login: yup.date(),\n email: yup.string().email(),\n password: yup.string().required(),\n is_staff: yup.bool().required(),\n is_active: yup.bool().required(),\n date_joined: yup.date().required(),\n teacher: yup.object(_userTeacher).optional(),\n student: yup.object(_userStudent).optional(),\n}\n\nexport const teacherUser: Schemas<TeacherUser> = {\n ...user,\n password: user.password\n .min(10, \"must be at least 10 characters long\")\n .matches(/[A-Z]/, \"must contain at least one uppercase letter\")\n .matches(/[a-z]/, \"must contain at least one lowercase letter\")\n .matches(/[0-9]/, \"must contain at least one digit\")\n .matches(\n /[!@#$%^&*()_+\\-=[\\]{};':\"\\\\|,.<>/?]/,\n \"must contain at least one special character\",\n ),\n email: user.email.required(),\n last_name: user.last_name.required(),\n teacher: user.teacher.required(),\n student: yup.string().oneOf([undefined]),\n}\n\nconst _userSchoolTeacher: Omit<Schemas<SchoolTeacher>, \"user\"> = {\n ..._userTeacher,\n school: _userTeacher.school.required(),\n}\n\nexport const schoolTeacherUser: Schemas<SchoolTeacherUser> = {\n ...teacherUser,\n teacher: yup.object(_userSchoolTeacher),\n}\n\nconst _userAdminSchoolTeacher: Omit<Schemas<AdminSchoolTeacher>, \"user\"> = {\n ..._userSchoolTeacher,\n is_admin: _userSchoolTeacher.is_admin.isTrue(),\n}\n\nexport const adminSchoolTeacherUser: Schemas<AdminSchoolTeacherUser> = {\n ...schoolTeacherUser,\n teacher: yup.object(_userAdminSchoolTeacher),\n}\n\nconst _userNonAdminSchoolTeacher: Omit<\n Schemas<NonAdminSchoolTeacher>,\n \"user\"\n> = {\n ..._userSchoolTeacher,\n is_admin: _userSchoolTeacher.is_admin.isFalse(),\n}\n\nexport const nonAdminSchoolTeacherUser: Schemas<NonAdminSchoolTeacherUser> = {\n ...schoolTeacherUser,\n teacher: yup.object(_userNonAdminSchoolTeacher),\n}\n\nconst _userNonSchoolTeacher: Omit<Schemas<NonSchoolTeacher>, \"user\"> = {\n ..._userTeacher,\n school: yup.string().oneOf([undefined]),\n is_admin: _userTeacher.is_admin.isFalse(),\n}\n\nexport const nonSchoolTeacherUser: Schemas<NonSchoolTeacherUser> = {\n ...teacherUser,\n teacher: yup.object(_userNonSchoolTeacher),\n}\n\nexport const studentUser: Schemas<StudentUser> = {\n ...user,\n password: user.password.min(6, \"must be at least 6 characters long\"),\n email: user.email.oneOf([undefined]),\n last_name: user.last_name.oneOf([undefined]),\n teacher: yup.string().oneOf([undefined]),\n student: user.student.required(),\n}\n\nexport const indyUser: Schemas<IndependentUser> = {\n ...user,\n password: user.password\n .min(8, \"must be at least 8 characters long\")\n .matches(/[A-Z]/, \"must contain at least one uppercase letter\")\n .matches(/[a-z]/, \"must contain at least one lowercase letter\")\n .matches(/[0-9]/, \"must contain at least one digit\"),\n email: user.email.required(),\n last_name: user.last_name.required(),\n teacher: yup.string().oneOf([undefined]),\n student: yup.string().oneOf([undefined]),\n}\n\n// -----------------------------------------------------------------------------\n// Teacher Schemas\n// -----------------------------------------------------------------------------\n\nexport const teacher: Schemas<Teacher> = {\n ..._userTeacher,\n user: id.user.required(),\n}\n\nexport const schoolTeacher: Schemas<SchoolTeacher> = {\n ..._userSchoolTeacher,\n user: id.user.required(),\n}\n\nexport const adminSchoolTeacher: Schemas<AdminSchoolTeacher> = {\n ..._userAdminSchoolTeacher,\n user: id.user.required(),\n}\n\nexport const nonAdminSchoolTeacher: Schemas<NonAdminSchoolTeacher> = {\n ..._userNonAdminSchoolTeacher,\n user: id.user.required(),\n}\n\nexport const nonSchoolTeacher: Schemas<NonSchoolTeacher> = {\n ..._userNonSchoolTeacher,\n user: id.user.required(),\n}\n\n// -----------------------------------------------------------------------------\n// Other Schemas\n// -----------------------------------------------------------------------------\n\nexport const student: Schemas<Student> = {\n ..._userStudent,\n user: id.user.required(),\n}\n\nexport const school: Schemas<School> = {\n id: id.school.required(),\n name: unicodeAlphanumericString({\n spaces: true,\n specialChars: \"'.\",\n })\n .required()\n .max(200),\n country: yup.string().oneOf(COUNTRY_ISO_CODES),\n uk_county: yup.string().oneOf(UK_COUNTIES),\n}\n\nexport const klass: Schemas<Class> = {\n id: id.klass.required(),\n teacher: id.teacher.required(),\n school: id.school.required(),\n name: unicodeAlphanumericString({\n spaces: true,\n specialChars: \"-_\",\n })\n .required()\n .max(200),\n read_classmates_data: yup.bool().required(),\n receive_requests_until: yup.date(),\n}\n\nexport const authFactor: Schemas<AuthFactor> = {\n id: id.authFactor.required(),\n user: id.user.required(),\n type: yup\n .string()\n .oneOf([\"otp\"] as const)\n .required(),\n}\n\nexport const otpBypassToken: Schemas<OtpBypassToken> = {\n id: id.otpBypassToken.required(),\n user: id.user.required(),\n token: lowercaseAsciiAlphanumericString().required().length(8),\n}\n"],"names":["id","numericId","uppercaseAsciiAlphanumericString","_userTeacher","yup","_userStudent","user","unicodeAlphanumericString","teacherUser","_userSchoolTeacher","schoolTeacherUser","_userAdminSchoolTeacher","adminSchoolTeacherUser","_userNonAdminSchoolTeacher","nonAdminSchoolTeacherUser","_userNonSchoolTeacher","nonSchoolTeacherUser","studentUser","indyUser","teacher","schoolTeacher","adminSchoolTeacher","nonAdminSchoolTeacher","nonSchoolTeacher","student","school","COUNTRY_ISO_CODES","UK_COUNTIES","klass","authFactor","otpBypassToken","lowercaseAsciiAlphanumericString"],"mappings":"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"}
|
package/dist/server/App.cjs.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const e=require("
|
|
1
|
+
"use strict";const e=require("react/jsx-runtime"),r=require("@mui/material"),n=require("@emotion/react");require("react");const o=require("react-redux");;/* empty css */const u=({children:s,emotionCache:i,theme:t,store:c,maxIdleSeconds:a=3600,maxTotalSeconds:d=3600})=>e.jsx(n.CacheProvider,{value:i,children:e.jsxs(r.ThemeProvider,{theme:t,children:[e.jsx(r.CssBaseline,{}),e.jsx(o.Provider,{store:c,children:s})]})});module.exports=u;
|
|
2
2
|
//# sourceMappingURL=App.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.cjs.js","sources":["../../src/server/App.tsx"],"sourcesContent":["import { CssBaseline, ThemeProvider } from \"@mui/material\"\nimport {\n type EmotionCache,\n CacheProvider as EmotionCacheProvider,\n} from \"@emotion/react\"\nimport { type JSX, type ReactNode } from \"react\"\nimport {\n Provider as StoreProvider,\n type ProviderProps as StoreProviderProps,\n} from \"react-redux\"\nimport { type Action } from \"redux\"\nimport { type ThemeProviderProps } from \"@mui/material\"\n\nimport \"./App.css\"\n// import { InactiveDialog, ScreenTimeDialog } from \"../features\"\n// import { useCountdown, useEventListener } from \"../hooks\"\n// import \"../scripts\"\n// import {\n// configureFreshworksWidget,\n// toggleOneTrustInfoDisplay,\n// } from \"../utils/window\"\n\nexport interface AppProps<A extends Action = Action, S = unknown> {\n children: ReactNode\n emotionCache: EmotionCache\n theme: ThemeProviderProps[\"theme\"]\n store: StoreProviderProps<A, S>[\"store\"]\n maxIdleSeconds?: number\n maxTotalSeconds?: number\n}\n\nconst App = <A extends Action = Action, S = unknown>({\n children,\n emotionCache,\n theme,\n store,\n // @ts-expect-error TODO\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n maxIdleSeconds = 60 * 60,\n // @ts-expect-error TODO\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n maxTotalSeconds = 60 * 60,\n}: AppProps<A, S>): JSX.Element => {\n // TODO: cannot use document during SSR\n // const root = document.getElementById(\"root\") as HTMLElement\n\n // const [idleSeconds, setIdleSeconds] = useCountdown(maxIdleSeconds)\n // const [totalSeconds, setTotalSeconds] = useCountdown(maxTotalSeconds)\n // const resetIdleSeconds = useCallback(() => {\n // setIdleSeconds(maxIdleSeconds)\n // }, [setIdleSeconds, maxIdleSeconds])\n\n // const isIdle = idleSeconds === 0\n // const tooMuchScreenTime = totalSeconds === 0\n\n // useEventListener(root, \"mousemove\", resetIdleSeconds)\n // useEventListener(root, \"keypress\", resetIdleSeconds)\n\n // React.useEffect(() => {\n // configureFreshworksWidget(\"hide\")\n // }, [])\n\n // if (import.meta.env.PROD) {\n // toggleOneTrustInfoDisplay()\n // }\n\n return (\n // https://mui.com/material-ui/guides/server-rendering/\n <EmotionCacheProvider value={emotionCache}>\n <ThemeProvider theme={theme}>\n <CssBaseline />\n <StoreProvider store={store}>\n {/* <InactiveDialog open={isIdle} onClose={resetIdleSeconds} />\n <ScreenTimeDialog\n open={!isIdle && tooMuchScreenTime}\n onClose={() => {\n setTotalSeconds(maxTotalSeconds)\n }}\n /> */}\n {children}\n </StoreProvider>\n </ThemeProvider>\n </EmotionCacheProvider>\n )\n}\n\nexport default App\n\n// TODO: figure out what to do with this\n// function useOneTrustScripts(): void {\n// const oneTrustEventTypes = [\n// useExternalScript({\n// props: {\n// src: \"https://cdn-ukwest.onetrust.com/consent/5da42396-cb12-4493-8d04-5179033cfbad/OtAutoBlock.js\",\n// type: \"text/javascript\",\n// },\n// eventTypes: [\"load\", \"error\"],\n// }),\n// useExternalScript({\n// props: {\n// src: \"https://cdn-ukwest.onetrust.com/scripttemplates/otSDKStub.js\",\n// type: \"text/javascript\",\n// charset: \"UTF-8\",\n// },\n// attrs: {\n// \"data-domain-script\": \"5da42396-cb12-4493-8d04-5179033cfbad\",\n// },\n// eventTypes: [\"load\", \"error\"],\n// }),\n// useExternalScript({\n// props: {\n// src: \"https://cdn-ukwest.onetrust.com/scripttemplates/202302.1.0/otBannerSdk.js\",\n// async: true,\n// type: \"text/javascript\",\n// },\n// eventTypes: [\"load\", \"error\"],\n// }),\n// ]\n// if (oneTrustEventTypes.some(t => t === \"error\")) {\n// alert(\"OneTrust failed to load!\")\n// }\n// }\n"],"names":["App","children","emotionCache","theme","store","maxIdleSeconds","maxTotalSeconds","EmotionCacheProvider","jsxs","ThemeProvider","jsx","CssBaseline","StoreProvider"],"mappings":"
|
|
1
|
+
{"version":3,"file":"App.cjs.js","sources":["../../src/server/App.tsx"],"sourcesContent":["import { CssBaseline, ThemeProvider } from \"@mui/material\"\nimport {\n type EmotionCache,\n CacheProvider as EmotionCacheProvider,\n} from \"@emotion/react\"\nimport { type JSX, type ReactNode } from \"react\"\nimport {\n Provider as StoreProvider,\n type ProviderProps as StoreProviderProps,\n} from \"react-redux\"\nimport { type Action } from \"redux\"\nimport { type ThemeProviderProps } from \"@mui/material\"\n\nimport \"./App.css\"\n// import { InactiveDialog, ScreenTimeDialog } from \"../features\"\n// import { useCountdown, useEventListener } from \"../hooks\"\n// import \"../scripts\"\n// import {\n// configureFreshworksWidget,\n// toggleOneTrustInfoDisplay,\n// } from \"../utils/window\"\n\nexport interface AppProps<A extends Action = Action, S = unknown> {\n children: ReactNode\n emotionCache: EmotionCache\n theme: ThemeProviderProps[\"theme\"]\n store: StoreProviderProps<A, S>[\"store\"]\n maxIdleSeconds?: number\n maxTotalSeconds?: number\n}\n\nconst App = <A extends Action = Action, S = unknown>({\n children,\n emotionCache,\n theme,\n store,\n // @ts-expect-error TODO\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n maxIdleSeconds = 60 * 60,\n // @ts-expect-error TODO\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n maxTotalSeconds = 60 * 60,\n}: AppProps<A, S>): JSX.Element => {\n // TODO: cannot use document during SSR\n // const root = document.getElementById(\"root\") as HTMLElement\n\n // const [idleSeconds, setIdleSeconds] = useCountdown(maxIdleSeconds)\n // const [totalSeconds, setTotalSeconds] = useCountdown(maxTotalSeconds)\n // const resetIdleSeconds = useCallback(() => {\n // setIdleSeconds(maxIdleSeconds)\n // }, [setIdleSeconds, maxIdleSeconds])\n\n // const isIdle = idleSeconds === 0\n // const tooMuchScreenTime = totalSeconds === 0\n\n // useEventListener(root, \"mousemove\", resetIdleSeconds)\n // useEventListener(root, \"keypress\", resetIdleSeconds)\n\n // React.useEffect(() => {\n // configureFreshworksWidget(\"hide\")\n // }, [])\n\n // if (import.meta.env.PROD) {\n // toggleOneTrustInfoDisplay()\n // }\n\n return (\n // https://mui.com/material-ui/guides/server-rendering/\n <EmotionCacheProvider value={emotionCache}>\n <ThemeProvider theme={theme}>\n <CssBaseline />\n <StoreProvider store={store}>\n {/* <InactiveDialog open={isIdle} onClose={resetIdleSeconds} />\n <ScreenTimeDialog\n open={!isIdle && tooMuchScreenTime}\n onClose={() => {\n setTotalSeconds(maxTotalSeconds)\n }}\n /> */}\n {children}\n </StoreProvider>\n </ThemeProvider>\n </EmotionCacheProvider>\n )\n}\n\nexport default App\n\n// TODO: figure out what to do with this\n// function useOneTrustScripts(): void {\n// const oneTrustEventTypes = [\n// useExternalScript({\n// props: {\n// src: \"https://cdn-ukwest.onetrust.com/consent/5da42396-cb12-4493-8d04-5179033cfbad/OtAutoBlock.js\",\n// type: \"text/javascript\",\n// },\n// eventTypes: [\"load\", \"error\"],\n// }),\n// useExternalScript({\n// props: {\n// src: \"https://cdn-ukwest.onetrust.com/scripttemplates/otSDKStub.js\",\n// type: \"text/javascript\",\n// charset: \"UTF-8\",\n// },\n// attrs: {\n// \"data-domain-script\": \"5da42396-cb12-4493-8d04-5179033cfbad\",\n// },\n// eventTypes: [\"load\", \"error\"],\n// }),\n// useExternalScript({\n// props: {\n// src: \"https://cdn-ukwest.onetrust.com/scripttemplates/202302.1.0/otBannerSdk.js\",\n// async: true,\n// type: \"text/javascript\",\n// },\n// eventTypes: [\"load\", \"error\"],\n// }),\n// ]\n// if (oneTrustEventTypes.some(t => t === \"error\")) {\n// alert(\"OneTrust failed to load!\")\n// }\n// }\n"],"names":["App","children","emotionCache","theme","store","maxIdleSeconds","maxTotalSeconds","EmotionCacheProvider","jsxs","ThemeProvider","jsx","CssBaseline","StoreProvider"],"mappings":"wLA+BA,MAAMA,EAAM,CAAyC,CACnD,SAAAC,EACA,aAAAC,EACA,MAAAC,EACA,MAAAC,EAGA,eAAAC,EAAiB,KAGjB,gBAAAC,EAAkB,IACpB,UA0BKC,EAAAA,cAAA,CAAqB,MAAOL,EAC3B,SAAAM,EAAAA,KAACC,EAAAA,eAAc,MAAAN,EACb,SAAA,CAAAO,EAAAA,IAACC,EAAAA,YAAA,EAAY,EACbD,EAAAA,IAACE,EAAAA,SAAA,CAAc,MAAAR,EAQZ,SAAAH,CAAA,CACH,CAAA,CAAA,CACF,CAAA,CACF"}
|
package/dist/server/App.es.js
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ThemeProvider as
|
|
1
|
+
import { jsx as r, jsxs as t } from "react/jsx-runtime";
|
|
2
|
+
import { ThemeProvider as s, CssBaseline as d } from "@mui/material";
|
|
3
3
|
import { CacheProvider as p } from "@emotion/react";
|
|
4
4
|
import "react";
|
|
5
5
|
import { Provider as a } from "react-redux";
|
|
6
6
|
/* empty css */
|
|
7
|
-
const
|
|
7
|
+
const P = ({
|
|
8
8
|
children: o,
|
|
9
9
|
emotionCache: e,
|
|
10
|
-
theme:
|
|
11
|
-
store:
|
|
10
|
+
theme: m,
|
|
11
|
+
store: i,
|
|
12
12
|
// @ts-expect-error TODO
|
|
13
13
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
14
|
-
maxIdleSeconds:
|
|
14
|
+
maxIdleSeconds: l = 3600,
|
|
15
15
|
// @ts-expect-error TODO
|
|
16
16
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
17
|
-
maxTotalSeconds:
|
|
17
|
+
maxTotalSeconds: n = 3600
|
|
18
18
|
}) => (
|
|
19
19
|
// https://mui.com/material-ui/guides/server-rendering/
|
|
20
|
-
/* @__PURE__ */ r
|
|
21
|
-
/* @__PURE__ */ r
|
|
22
|
-
/* @__PURE__ */ r
|
|
20
|
+
/* @__PURE__ */ r(p, { value: e, children: /* @__PURE__ */ t(s, { theme: m, children: [
|
|
21
|
+
/* @__PURE__ */ r(d, {}),
|
|
22
|
+
/* @__PURE__ */ r(a, { store: i, children: o })
|
|
23
23
|
] }) })
|
|
24
24
|
);
|
|
25
25
|
export {
|
|
26
|
-
|
|
26
|
+
P as default
|
|
27
27
|
};
|
|
28
28
|
//# sourceMappingURL=App.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.es.js","sources":["../../src/server/App.tsx"],"sourcesContent":["import { CssBaseline, ThemeProvider } from \"@mui/material\"\nimport {\n type EmotionCache,\n CacheProvider as EmotionCacheProvider,\n} from \"@emotion/react\"\nimport { type JSX, type ReactNode } from \"react\"\nimport {\n Provider as StoreProvider,\n type ProviderProps as StoreProviderProps,\n} from \"react-redux\"\nimport { type Action } from \"redux\"\nimport { type ThemeProviderProps } from \"@mui/material\"\n\nimport \"./App.css\"\n// import { InactiveDialog, ScreenTimeDialog } from \"../features\"\n// import { useCountdown, useEventListener } from \"../hooks\"\n// import \"../scripts\"\n// import {\n// configureFreshworksWidget,\n// toggleOneTrustInfoDisplay,\n// } from \"../utils/window\"\n\nexport interface AppProps<A extends Action = Action, S = unknown> {\n children: ReactNode\n emotionCache: EmotionCache\n theme: ThemeProviderProps[\"theme\"]\n store: StoreProviderProps<A, S>[\"store\"]\n maxIdleSeconds?: number\n maxTotalSeconds?: number\n}\n\nconst App = <A extends Action = Action, S = unknown>({\n children,\n emotionCache,\n theme,\n store,\n // @ts-expect-error TODO\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n maxIdleSeconds = 60 * 60,\n // @ts-expect-error TODO\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n maxTotalSeconds = 60 * 60,\n}: AppProps<A, S>): JSX.Element => {\n // TODO: cannot use document during SSR\n // const root = document.getElementById(\"root\") as HTMLElement\n\n // const [idleSeconds, setIdleSeconds] = useCountdown(maxIdleSeconds)\n // const [totalSeconds, setTotalSeconds] = useCountdown(maxTotalSeconds)\n // const resetIdleSeconds = useCallback(() => {\n // setIdleSeconds(maxIdleSeconds)\n // }, [setIdleSeconds, maxIdleSeconds])\n\n // const isIdle = idleSeconds === 0\n // const tooMuchScreenTime = totalSeconds === 0\n\n // useEventListener(root, \"mousemove\", resetIdleSeconds)\n // useEventListener(root, \"keypress\", resetIdleSeconds)\n\n // React.useEffect(() => {\n // configureFreshworksWidget(\"hide\")\n // }, [])\n\n // if (import.meta.env.PROD) {\n // toggleOneTrustInfoDisplay()\n // }\n\n return (\n // https://mui.com/material-ui/guides/server-rendering/\n <EmotionCacheProvider value={emotionCache}>\n <ThemeProvider theme={theme}>\n <CssBaseline />\n <StoreProvider store={store}>\n {/* <InactiveDialog open={isIdle} onClose={resetIdleSeconds} />\n <ScreenTimeDialog\n open={!isIdle && tooMuchScreenTime}\n onClose={() => {\n setTotalSeconds(maxTotalSeconds)\n }}\n /> */}\n {children}\n </StoreProvider>\n </ThemeProvider>\n </EmotionCacheProvider>\n )\n}\n\nexport default App\n\n// TODO: figure out what to do with this\n// function useOneTrustScripts(): void {\n// const oneTrustEventTypes = [\n// useExternalScript({\n// props: {\n// src: \"https://cdn-ukwest.onetrust.com/consent/5da42396-cb12-4493-8d04-5179033cfbad/OtAutoBlock.js\",\n// type: \"text/javascript\",\n// },\n// eventTypes: [\"load\", \"error\"],\n// }),\n// useExternalScript({\n// props: {\n// src: \"https://cdn-ukwest.onetrust.com/scripttemplates/otSDKStub.js\",\n// type: \"text/javascript\",\n// charset: \"UTF-8\",\n// },\n// attrs: {\n// \"data-domain-script\": \"5da42396-cb12-4493-8d04-5179033cfbad\",\n// },\n// eventTypes: [\"load\", \"error\"],\n// }),\n// useExternalScript({\n// props: {\n// src: \"https://cdn-ukwest.onetrust.com/scripttemplates/202302.1.0/otBannerSdk.js\",\n// async: true,\n// type: \"text/javascript\",\n// },\n// eventTypes: [\"load\", \"error\"],\n// }),\n// ]\n// if (oneTrustEventTypes.some(t => t === \"error\")) {\n// alert(\"OneTrust failed to load!\")\n// }\n// }\n"],"names":["App","children","emotionCache","theme","store","maxIdleSeconds","maxTotalSeconds","EmotionCacheProvider","jsxs","ThemeProvider","jsx","CssBaseline","StoreProvider"],"mappings":";;;;;;AA+BA,MAAMA,IAAM,CAAyC;AAAA,EACnD,UAAAC;AAAA,EACA,cAAAC;AAAA,EACA,OAAAC;AAAA,EACA,OAAAC;AAAA;AAAA;AAAA,EAGA,gBAAAC,IAAiB;AAAA;AAAA;AAAA,EAGjB,iBAAAC,IAAkB;AACpB;AAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"App.es.js","sources":["../../src/server/App.tsx"],"sourcesContent":["import { CssBaseline, ThemeProvider } from \"@mui/material\"\nimport {\n type EmotionCache,\n CacheProvider as EmotionCacheProvider,\n} from \"@emotion/react\"\nimport { type JSX, type ReactNode } from \"react\"\nimport {\n Provider as StoreProvider,\n type ProviderProps as StoreProviderProps,\n} from \"react-redux\"\nimport { type Action } from \"redux\"\nimport { type ThemeProviderProps } from \"@mui/material\"\n\nimport \"./App.css\"\n// import { InactiveDialog, ScreenTimeDialog } from \"../features\"\n// import { useCountdown, useEventListener } from \"../hooks\"\n// import \"../scripts\"\n// import {\n// configureFreshworksWidget,\n// toggleOneTrustInfoDisplay,\n// } from \"../utils/window\"\n\nexport interface AppProps<A extends Action = Action, S = unknown> {\n children: ReactNode\n emotionCache: EmotionCache\n theme: ThemeProviderProps[\"theme\"]\n store: StoreProviderProps<A, S>[\"store\"]\n maxIdleSeconds?: number\n maxTotalSeconds?: number\n}\n\nconst App = <A extends Action = Action, S = unknown>({\n children,\n emotionCache,\n theme,\n store,\n // @ts-expect-error TODO\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n maxIdleSeconds = 60 * 60,\n // @ts-expect-error TODO\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n maxTotalSeconds = 60 * 60,\n}: AppProps<A, S>): JSX.Element => {\n // TODO: cannot use document during SSR\n // const root = document.getElementById(\"root\") as HTMLElement\n\n // const [idleSeconds, setIdleSeconds] = useCountdown(maxIdleSeconds)\n // const [totalSeconds, setTotalSeconds] = useCountdown(maxTotalSeconds)\n // const resetIdleSeconds = useCallback(() => {\n // setIdleSeconds(maxIdleSeconds)\n // }, [setIdleSeconds, maxIdleSeconds])\n\n // const isIdle = idleSeconds === 0\n // const tooMuchScreenTime = totalSeconds === 0\n\n // useEventListener(root, \"mousemove\", resetIdleSeconds)\n // useEventListener(root, \"keypress\", resetIdleSeconds)\n\n // React.useEffect(() => {\n // configureFreshworksWidget(\"hide\")\n // }, [])\n\n // if (import.meta.env.PROD) {\n // toggleOneTrustInfoDisplay()\n // }\n\n return (\n // https://mui.com/material-ui/guides/server-rendering/\n <EmotionCacheProvider value={emotionCache}>\n <ThemeProvider theme={theme}>\n <CssBaseline />\n <StoreProvider store={store}>\n {/* <InactiveDialog open={isIdle} onClose={resetIdleSeconds} />\n <ScreenTimeDialog\n open={!isIdle && tooMuchScreenTime}\n onClose={() => {\n setTotalSeconds(maxTotalSeconds)\n }}\n /> */}\n {children}\n </StoreProvider>\n </ThemeProvider>\n </EmotionCacheProvider>\n )\n}\n\nexport default App\n\n// TODO: figure out what to do with this\n// function useOneTrustScripts(): void {\n// const oneTrustEventTypes = [\n// useExternalScript({\n// props: {\n// src: \"https://cdn-ukwest.onetrust.com/consent/5da42396-cb12-4493-8d04-5179033cfbad/OtAutoBlock.js\",\n// type: \"text/javascript\",\n// },\n// eventTypes: [\"load\", \"error\"],\n// }),\n// useExternalScript({\n// props: {\n// src: \"https://cdn-ukwest.onetrust.com/scripttemplates/otSDKStub.js\",\n// type: \"text/javascript\",\n// charset: \"UTF-8\",\n// },\n// attrs: {\n// \"data-domain-script\": \"5da42396-cb12-4493-8d04-5179033cfbad\",\n// },\n// eventTypes: [\"load\", \"error\"],\n// }),\n// useExternalScript({\n// props: {\n// src: \"https://cdn-ukwest.onetrust.com/scripttemplates/202302.1.0/otBannerSdk.js\",\n// async: true,\n// type: \"text/javascript\",\n// },\n// eventTypes: [\"load\", \"error\"],\n// }),\n// ]\n// if (oneTrustEventTypes.some(t => t === \"error\")) {\n// alert(\"OneTrust failed to load!\")\n// }\n// }\n"],"names":["App","children","emotionCache","theme","store","maxIdleSeconds","maxTotalSeconds","EmotionCacheProvider","jsxs","ThemeProvider","jsx","CssBaseline","StoreProvider"],"mappings":";;;;;;AA+BA,MAAMA,IAAM,CAAyC;AAAA,EACnD,UAAAC;AAAA,EACA,cAAAC;AAAA,EACA,OAAAC;AAAA,EACA,OAAAC;AAAA;AAAA;AAAA,EAGA,gBAAAC,IAAiB;AAAA;AAAA;AAAA,EAGjB,iBAAAC,IAAkB;AACpB;AAAA;AAAA,oBA0BKC,GAAA,EAAqB,OAAOL,GAC3B,UAAA,gBAAAM,EAACC,KAAc,OAAAN,GACb,UAAA;AAAA,IAAA,gBAAAO,EAACC,GAAA,EAAY;AAAA,IACb,gBAAAD,EAACE,GAAA,EAAc,OAAAR,GAQZ,UAAAH,EAAA,CACH;AAAA,EAAA,EAAA,CACF,EAAA,CACF;AAAA;"}
|
package/dist/server/entry.cjs.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";var q=Object.create;var h=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var p=Object.getPrototypeOf,v=Object.prototype.hasOwnProperty;var w=(e,t,r,c)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of g(t))!v.call(e,o)&&o!==r&&h(e,o,{get:()=>t[o],enumerable:!(c=R(t,o))||c.enumerable});return e};var i=(e,t,r)=>(r=e!=null?q(p(e)):{},w(t||!e||!e.__esModule?h(r,"default",{value:e,enumerable:!0}):r,e));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),s=require("react-router"),m=require("react"),T=require("@emotion/cache");require("@mui/material");require("@emotion/react");require("react-redux");;/* empty css */function j({key:e="css",prepend:t=!0,...r}={}){return T({key:e,prepend:t,...r})}async function k({App:e,routes:t,createEmotionCacheOptions:r={},...c}){const{default:o}=await import("@emotion/server/create-instance"),{renderToString:a}=await import("react-dom/server"),{default:x}=await import("codeforlife/style.css?inline");function y(S){const u=j(r),l=o(u),d=a(n.jsx(m.StrictMode,{children:n.jsx(e,{emotionCache:u,...c,children:n.jsx(s.StaticRouter,{location:S,children:n.jsx(s.Routes,{children:t})})})})),f=l.extractCriticalToChunks(d),C=l.constructStyleTagsFromChunks(f);return{html:d,head:`${C}<style data-cfl>${x}</style>`}}return{render:y}}async function E({App:e,routes:t,createEmotionCacheOptions:r={},...c}){const{hydrateRoot:o}=await import("react-dom/client"),a=j(r);o(document.getElementById("root"),n.jsx(m.StrictMode,{children:n.jsx(e,{emotionCache:a,...c,children:n.jsx(s.BrowserRouter,{children:n.jsx(s.Routes,{children:t})})})}))}exports.client=E;exports.server=k;
|
|
2
2
|
//# sourceMappingURL=entry.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry.cjs.js","sources":["../../src/server/entry.tsx"],"sourcesContent":["/**\n * © Ocado Group\n * Created on 20/10/2025 at 17:45:17(+01:00).\n *\n * The client and server entrypoints when doing server-side rendering.\n *\n * Helpful links:\n * https://mui.com/material-ui/guides/server-rendering/\n * https://github.com/remix-run/react-router/tree/main/examples/ssr\n */\n\nimport { BrowserRouter, Routes, StaticRouter } from \"react-router\"\nimport { type FC, type ReactNode, StrictMode } from \"react\"\nimport createCache, {\n type Options as CreateEmotionCacheOptions,\n} from \"@emotion/cache\"\n\nimport { type AppProps } from \"./App\"\n\n/**\n * Creates a new Emotion cache instance.\n */\nfunction createEmotionCache(\n {\n key = \"css\", // ensures all styles are generated with this prefix\n prepend = true, // loads MUI-styles first so we can override them easily\n ...otherOptions\n } = {} as CreateEmotionCacheOptions,\n) {\n return createCache({ key, prepend, ...otherOptions })\n}\n\nexport type EntryAppProps = Pick<AppProps, \"emotionCache\" | \"children\">\n\nexport type EntryKwArgs = {\n App: FC<EntryAppProps>\n routes: ReactNode\n createEmotionCacheOptions?: CreateEmotionCacheOptions\n}\n\nexport async function server({\n App,\n routes,\n createEmotionCacheOptions = {} as CreateEmotionCacheOptions,\n ...appProps\n}: EntryKwArgs) {\n const { default: createEmotionServer } = await import(\n \"@emotion/server/create-instance\"\n )\n const { renderToString } = await import(\"react-dom/server\")\n const { default: cflStyle } = await import(\"codeforlife/style.css?inline\")\n\n function render(path: string) {\n const emotionCache = createEmotionCache(createEmotionCacheOptions)\n const emotionServer = createEmotionServer(emotionCache)\n\n const html = renderToString(\n <StrictMode>\n <App emotionCache={emotionCache} {...appProps}>\n <StaticRouter location={path}>\n <Routes>{routes}</Routes>\n </StaticRouter>\n </App>\n </StrictMode>,\n )\n\n const emotionChunks = emotionServer.extractCriticalToChunks(html)\n const emotionCss = emotionServer.constructStyleTagsFromChunks(emotionChunks)\n\n return {\n html,\n head: `${emotionCss}<style data-cfl>${cflStyle}</style>`,\n }\n }\n\n return { render }\n}\n\nexport async function client({\n App,\n routes,\n createEmotionCacheOptions = {} as CreateEmotionCacheOptions,\n ...appProps\n}: EntryKwArgs) {\n const { hydrateRoot } = await import(\"react-dom/client\")\n\n const emotionCache = createEmotionCache(createEmotionCacheOptions)\n\n hydrateRoot(\n document.getElementById(\"root\") as HTMLElement,\n <StrictMode>\n <App emotionCache={emotionCache} {...appProps}>\n <BrowserRouter>\n <Routes>{routes}</Routes>\n </BrowserRouter>\n </App>\n </StrictMode>,\n )\n}\n"],"names":["createEmotionCache","key","prepend","otherOptions","createCache","server","App","routes","createEmotionCacheOptions","appProps","createEmotionServer","renderToString","
|
|
1
|
+
{"version":3,"file":"entry.cjs.js","sources":["../../src/server/entry.tsx"],"sourcesContent":["/**\n * © Ocado Group\n * Created on 20/10/2025 at 17:45:17(+01:00).\n *\n * The client and server entrypoints when doing server-side rendering.\n *\n * Helpful links:\n * https://mui.com/material-ui/guides/server-rendering/\n * https://github.com/remix-run/react-router/tree/main/examples/ssr\n */\n\nimport { BrowserRouter, Routes, StaticRouter } from \"react-router\"\nimport { type FC, type ReactNode, StrictMode } from \"react\"\nimport createCache, {\n type Options as CreateEmotionCacheOptions,\n} from \"@emotion/cache\"\n\nimport { type AppProps } from \"./App\"\n\n/**\n * Creates a new Emotion cache instance.\n */\nfunction createEmotionCache(\n {\n key = \"css\", // ensures all styles are generated with this prefix\n prepend = true, // loads MUI-styles first so we can override them easily\n ...otherOptions\n } = {} as CreateEmotionCacheOptions,\n) {\n return createCache({ key, prepend, ...otherOptions })\n}\n\nexport type EntryAppProps = Pick<AppProps, \"emotionCache\" | \"children\">\n\nexport type EntryKwArgs = {\n App: FC<EntryAppProps>\n routes: ReactNode\n createEmotionCacheOptions?: CreateEmotionCacheOptions\n}\n\nexport async function server({\n App,\n routes,\n createEmotionCacheOptions = {} as CreateEmotionCacheOptions,\n ...appProps\n}: EntryKwArgs) {\n const { default: createEmotionServer } = await import(\n \"@emotion/server/create-instance\"\n )\n const { renderToString } = await import(\"react-dom/server\")\n const { default: cflStyle } = await import(\"codeforlife/style.css?inline\")\n\n function render(path: string) {\n const emotionCache = createEmotionCache(createEmotionCacheOptions)\n const emotionServer = createEmotionServer(emotionCache)\n\n const html = renderToString(\n <StrictMode>\n <App emotionCache={emotionCache} {...appProps}>\n <StaticRouter location={path}>\n <Routes>{routes}</Routes>\n </StaticRouter>\n </App>\n </StrictMode>,\n )\n\n const emotionChunks = emotionServer.extractCriticalToChunks(html)\n const emotionCss = emotionServer.constructStyleTagsFromChunks(emotionChunks)\n\n return {\n html,\n head: `${emotionCss}<style data-cfl>${cflStyle}</style>`,\n }\n }\n\n return { render }\n}\n\nexport async function client({\n App,\n routes,\n createEmotionCacheOptions = {} as CreateEmotionCacheOptions,\n ...appProps\n}: EntryKwArgs) {\n const { hydrateRoot } = await import(\"react-dom/client\")\n\n const emotionCache = createEmotionCache(createEmotionCacheOptions)\n\n hydrateRoot(\n document.getElementById(\"root\") as HTMLElement,\n <StrictMode>\n <App emotionCache={emotionCache} {...appProps}>\n <BrowserRouter>\n <Routes>{routes}</Routes>\n </BrowserRouter>\n </App>\n </StrictMode>,\n )\n}\n"],"names":["createEmotionCache","key","prepend","otherOptions","createCache","server","App","routes","createEmotionCacheOptions","appProps","createEmotionServer","renderToString","cflStyle","render","path","emotionCache","emotionServer","html","StrictMode","jsx","StaticRouter","Routes","emotionChunks","emotionCss","client","hydrateRoot","BrowserRouter"],"mappings":"kvBAsBA,SAASA,EACP,CACE,IAAAC,EAAM,MACN,QAAAC,EAAU,GACV,GAAGC,CACL,EAAI,GACJ,CACA,OAAOC,EAAY,CAAE,IAAAH,EAAK,QAAAC,EAAS,GAAGC,EAAc,CACtD,CAUA,eAAsBE,EAAO,CAC3B,IAAAC,EACA,OAAAC,EACA,0BAAAC,EAA4B,CAAA,EAC5B,GAAGC,CACL,EAAgB,CACd,KAAM,CAAE,QAASC,GAAwB,KAAM,QAC7C,iCACF,EACM,CAAE,eAAAC,CAAA,EAAmB,KAAM,QAAO,kBAAkB,EACpD,CAAE,QAASC,GAAa,KAAM,QAAO,8BAA8B,EAEzE,SAASC,EAAOC,EAAc,CAC5B,MAAMC,EAAef,EAAmBQ,CAAyB,EAC3DQ,EAAgBN,EAAoBK,CAAY,EAEhDE,EAAON,QACVO,EAAAA,WAAA,CACC,SAAAC,MAACb,EAAA,CAAI,aAAAS,EAA6B,GAAGN,EACnC,SAAAU,MAACC,EAAAA,aAAA,CAAa,SAAUN,EACtB,SAAAK,EAAAA,IAACE,EAAAA,OAAA,CAAQ,SAAAd,CAAA,CAAO,EAClB,EACF,CAAA,CACF,CAAA,EAGIe,EAAgBN,EAAc,wBAAwBC,CAAI,EAC1DM,EAAaP,EAAc,6BAA6BM,CAAa,EAE3E,MAAO,CACL,KAAAL,EACA,KAAM,GAAGM,CAAU,mBAAmBX,CAAQ,UAAA,CAElD,CAEA,MAAO,CAAE,OAAAC,CAAA,CACX,CAEA,eAAsBW,EAAO,CAC3B,IAAAlB,EACA,OAAAC,EACA,0BAAAC,EAA4B,CAAA,EAC5B,GAAGC,CACL,EAAgB,CACd,KAAM,CAAE,YAAAgB,CAAA,EAAgB,KAAM,QAAO,kBAAkB,EAEjDV,EAAef,EAAmBQ,CAAyB,EAEjEiB,EACE,SAAS,eAAe,MAAM,EAC9BN,MAACD,EAAAA,WAAA,CACC,SAAAC,EAAAA,IAACb,EAAA,CAAI,aAAAS,EAA6B,GAAGN,EACnC,SAAAU,EAAAA,IAACO,EAAAA,cAAA,CACC,SAAAP,EAAAA,IAACE,SAAA,CAAQ,SAAAd,CAAA,CAAO,EAClB,EACF,CAAA,CACF,CAAA,CAEJ"}
|
package/dist/server/entry.es.js
CHANGED
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { BrowserRouter as
|
|
1
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { BrowserRouter as S, Routes as l, StaticRouter as w } from "react-router";
|
|
3
3
|
import { StrictMode as d } from "react";
|
|
4
|
-
import
|
|
4
|
+
import R from "@emotion/cache";
|
|
5
5
|
import "@mui/material";
|
|
6
6
|
import "@emotion/react";
|
|
7
7
|
import "react-redux";
|
|
8
8
|
/* empty css */
|
|
9
|
-
function
|
|
9
|
+
function h({
|
|
10
10
|
key: o = "css",
|
|
11
11
|
// ensures all styles are generated with this prefix
|
|
12
12
|
prepend: e = !0,
|
|
13
13
|
// loads MUI-styles first so we can override them easily
|
|
14
14
|
...r
|
|
15
15
|
} = {}) {
|
|
16
|
-
return
|
|
16
|
+
return R({ key: o, prepend: e, ...r });
|
|
17
17
|
}
|
|
18
|
-
async function
|
|
18
|
+
async function j({
|
|
19
19
|
App: o,
|
|
20
20
|
routes: e,
|
|
21
21
|
createEmotionCacheOptions: r = {},
|
|
22
22
|
...n
|
|
23
23
|
}) {
|
|
24
|
-
const { default: c } = await import("
|
|
25
|
-
function f
|
|
26
|
-
const
|
|
27
|
-
/* @__PURE__ */ t
|
|
28
|
-
),
|
|
24
|
+
const { default: c } = await import("@emotion/server/create-instance"), { renderToString: i } = await import("react-dom/server"), { default: u } = await import("codeforlife/style.css?inline");
|
|
25
|
+
function p(f) {
|
|
26
|
+
const a = h(r), m = c(a), s = i(
|
|
27
|
+
/* @__PURE__ */ t(d, { children: /* @__PURE__ */ t(o, { emotionCache: a, ...n, children: /* @__PURE__ */ t(w, { location: f, children: /* @__PURE__ */ t(l, { children: e }) }) }) })
|
|
28
|
+
), C = m.extractCriticalToChunks(s), y = m.constructStyleTagsFromChunks(C);
|
|
29
29
|
return {
|
|
30
|
-
html:
|
|
31
|
-
head: `${
|
|
30
|
+
html: s,
|
|
31
|
+
head: `${y}<style data-cfl>${u}</style>`
|
|
32
32
|
};
|
|
33
33
|
}
|
|
34
|
-
return { render:
|
|
34
|
+
return { render: p };
|
|
35
35
|
}
|
|
36
36
|
async function F({
|
|
37
37
|
App: o,
|
|
@@ -39,14 +39,14 @@ async function F({
|
|
|
39
39
|
createEmotionCacheOptions: r = {},
|
|
40
40
|
...n
|
|
41
41
|
}) {
|
|
42
|
-
const { hydrateRoot: c } = await import("
|
|
42
|
+
const { hydrateRoot: c } = await import("react-dom/client"), i = h(r);
|
|
43
43
|
c(
|
|
44
44
|
document.getElementById("root"),
|
|
45
|
-
/* @__PURE__ */ t
|
|
45
|
+
/* @__PURE__ */ t(d, { children: /* @__PURE__ */ t(o, { emotionCache: i, ...n, children: /* @__PURE__ */ t(S, { children: /* @__PURE__ */ t(l, { children: e }) }) }) })
|
|
46
46
|
);
|
|
47
47
|
}
|
|
48
48
|
export {
|
|
49
49
|
F as client,
|
|
50
|
-
|
|
50
|
+
j as server
|
|
51
51
|
};
|
|
52
52
|
//# sourceMappingURL=entry.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry.es.js","sources":["../../src/server/entry.tsx"],"sourcesContent":["/**\n * © Ocado Group\n * Created on 20/10/2025 at 17:45:17(+01:00).\n *\n * The client and server entrypoints when doing server-side rendering.\n *\n * Helpful links:\n * https://mui.com/material-ui/guides/server-rendering/\n * https://github.com/remix-run/react-router/tree/main/examples/ssr\n */\n\nimport { BrowserRouter, Routes, StaticRouter } from \"react-router\"\nimport { type FC, type ReactNode, StrictMode } from \"react\"\nimport createCache, {\n type Options as CreateEmotionCacheOptions,\n} from \"@emotion/cache\"\n\nimport { type AppProps } from \"./App\"\n\n/**\n * Creates a new Emotion cache instance.\n */\nfunction createEmotionCache(\n {\n key = \"css\", // ensures all styles are generated with this prefix\n prepend = true, // loads MUI-styles first so we can override them easily\n ...otherOptions\n } = {} as CreateEmotionCacheOptions,\n) {\n return createCache({ key, prepend, ...otherOptions })\n}\n\nexport type EntryAppProps = Pick<AppProps, \"emotionCache\" | \"children\">\n\nexport type EntryKwArgs = {\n App: FC<EntryAppProps>\n routes: ReactNode\n createEmotionCacheOptions?: CreateEmotionCacheOptions\n}\n\nexport async function server({\n App,\n routes,\n createEmotionCacheOptions = {} as CreateEmotionCacheOptions,\n ...appProps\n}: EntryKwArgs) {\n const { default: createEmotionServer } = await import(\n \"@emotion/server/create-instance\"\n )\n const { renderToString } = await import(\"react-dom/server\")\n const { default: cflStyle } = await import(\"codeforlife/style.css?inline\")\n\n function render(path: string) {\n const emotionCache = createEmotionCache(createEmotionCacheOptions)\n const emotionServer = createEmotionServer(emotionCache)\n\n const html = renderToString(\n <StrictMode>\n <App emotionCache={emotionCache} {...appProps}>\n <StaticRouter location={path}>\n <Routes>{routes}</Routes>\n </StaticRouter>\n </App>\n </StrictMode>,\n )\n\n const emotionChunks = emotionServer.extractCriticalToChunks(html)\n const emotionCss = emotionServer.constructStyleTagsFromChunks(emotionChunks)\n\n return {\n html,\n head: `${emotionCss}<style data-cfl>${cflStyle}</style>`,\n }\n }\n\n return { render }\n}\n\nexport async function client({\n App,\n routes,\n createEmotionCacheOptions = {} as CreateEmotionCacheOptions,\n ...appProps\n}: EntryKwArgs) {\n const { hydrateRoot } = await import(\"react-dom/client\")\n\n const emotionCache = createEmotionCache(createEmotionCacheOptions)\n\n hydrateRoot(\n document.getElementById(\"root\") as HTMLElement,\n <StrictMode>\n <App emotionCache={emotionCache} {...appProps}>\n <BrowserRouter>\n <Routes>{routes}</Routes>\n </BrowserRouter>\n </App>\n </StrictMode>,\n )\n}\n"],"names":["createEmotionCache","key","prepend","otherOptions","createCache","server","App","routes","createEmotionCacheOptions","appProps","createEmotionServer","renderToString","
|
|
1
|
+
{"version":3,"file":"entry.es.js","sources":["../../src/server/entry.tsx"],"sourcesContent":["/**\n * © Ocado Group\n * Created on 20/10/2025 at 17:45:17(+01:00).\n *\n * The client and server entrypoints when doing server-side rendering.\n *\n * Helpful links:\n * https://mui.com/material-ui/guides/server-rendering/\n * https://github.com/remix-run/react-router/tree/main/examples/ssr\n */\n\nimport { BrowserRouter, Routes, StaticRouter } from \"react-router\"\nimport { type FC, type ReactNode, StrictMode } from \"react\"\nimport createCache, {\n type Options as CreateEmotionCacheOptions,\n} from \"@emotion/cache\"\n\nimport { type AppProps } from \"./App\"\n\n/**\n * Creates a new Emotion cache instance.\n */\nfunction createEmotionCache(\n {\n key = \"css\", // ensures all styles are generated with this prefix\n prepend = true, // loads MUI-styles first so we can override them easily\n ...otherOptions\n } = {} as CreateEmotionCacheOptions,\n) {\n return createCache({ key, prepend, ...otherOptions })\n}\n\nexport type EntryAppProps = Pick<AppProps, \"emotionCache\" | \"children\">\n\nexport type EntryKwArgs = {\n App: FC<EntryAppProps>\n routes: ReactNode\n createEmotionCacheOptions?: CreateEmotionCacheOptions\n}\n\nexport async function server({\n App,\n routes,\n createEmotionCacheOptions = {} as CreateEmotionCacheOptions,\n ...appProps\n}: EntryKwArgs) {\n const { default: createEmotionServer } = await import(\n \"@emotion/server/create-instance\"\n )\n const { renderToString } = await import(\"react-dom/server\")\n const { default: cflStyle } = await import(\"codeforlife/style.css?inline\")\n\n function render(path: string) {\n const emotionCache = createEmotionCache(createEmotionCacheOptions)\n const emotionServer = createEmotionServer(emotionCache)\n\n const html = renderToString(\n <StrictMode>\n <App emotionCache={emotionCache} {...appProps}>\n <StaticRouter location={path}>\n <Routes>{routes}</Routes>\n </StaticRouter>\n </App>\n </StrictMode>,\n )\n\n const emotionChunks = emotionServer.extractCriticalToChunks(html)\n const emotionCss = emotionServer.constructStyleTagsFromChunks(emotionChunks)\n\n return {\n html,\n head: `${emotionCss}<style data-cfl>${cflStyle}</style>`,\n }\n }\n\n return { render }\n}\n\nexport async function client({\n App,\n routes,\n createEmotionCacheOptions = {} as CreateEmotionCacheOptions,\n ...appProps\n}: EntryKwArgs) {\n const { hydrateRoot } = await import(\"react-dom/client\")\n\n const emotionCache = createEmotionCache(createEmotionCacheOptions)\n\n hydrateRoot(\n document.getElementById(\"root\") as HTMLElement,\n <StrictMode>\n <App emotionCache={emotionCache} {...appProps}>\n <BrowserRouter>\n <Routes>{routes}</Routes>\n </BrowserRouter>\n </App>\n </StrictMode>,\n )\n}\n"],"names":["createEmotionCache","key","prepend","otherOptions","createCache","server","App","routes","createEmotionCacheOptions","appProps","createEmotionServer","renderToString","cflStyle","render","path","emotionCache","emotionServer","html","StrictMode","jsx","StaticRouter","Routes","emotionChunks","emotionCss","client","hydrateRoot","BrowserRouter"],"mappings":";;;;;;;;AAsBA,SAASA,EACP;AAAA,EACE,KAAAC,IAAM;AAAA;AAAA,EACN,SAAAC,IAAU;AAAA;AAAA,EACV,GAAGC;AACL,IAAI,IACJ;AACA,SAAOC,EAAY,EAAE,KAAAH,GAAK,SAAAC,GAAS,GAAGC,GAAc;AACtD;AAUA,eAAsBE,EAAO;AAAA,EAC3B,KAAAC;AAAA,EACA,QAAAC;AAAA,EACA,2BAAAC,IAA4B,CAAA;AAAA,EAC5B,GAAGC;AACL,GAAgB;AACd,QAAM,EAAE,SAASC,MAAwB,MAAM,OAC7C,iCACF,GACM,EAAE,gBAAAC,EAAA,IAAmB,MAAM,OAAO,kBAAkB,GACpD,EAAE,SAASC,MAAa,MAAM,OAAO,8BAA8B;AAEzE,WAASC,EAAOC,GAAc;AAC5B,UAAMC,IAAef,EAAmBQ,CAAyB,GAC3DQ,IAAgBN,EAAoBK,CAAY,GAEhDE,IAAON;AAAA,wBACVO,GAAA,EACC,UAAA,gBAAAC,EAACb,GAAA,EAAI,cAAAS,GAA6B,GAAGN,GACnC,UAAA,gBAAAU,EAACC,GAAA,EAAa,UAAUN,GACtB,UAAA,gBAAAK,EAACE,GAAA,EAAQ,UAAAd,EAAA,CAAO,GAClB,GACF,EAAA,CACF;AAAA,IAAA,GAGIe,IAAgBN,EAAc,wBAAwBC,CAAI,GAC1DM,IAAaP,EAAc,6BAA6BM,CAAa;AAE3E,WAAO;AAAA,MACL,MAAAL;AAAA,MACA,MAAM,GAAGM,CAAU,mBAAmBX,CAAQ;AAAA,IAAA;AAAA,EAElD;AAEA,SAAO,EAAE,QAAAC,EAAA;AACX;AAEA,eAAsBW,EAAO;AAAA,EAC3B,KAAAlB;AAAA,EACA,QAAAC;AAAA,EACA,2BAAAC,IAA4B,CAAA;AAAA,EAC5B,GAAGC;AACL,GAAgB;AACd,QAAM,EAAE,aAAAgB,EAAA,IAAgB,MAAM,OAAO,kBAAkB,GAEjDV,IAAef,EAAmBQ,CAAyB;AAEjE,EAAAiB;AAAA,IACE,SAAS,eAAe,MAAM;AAAA,IAC9B,gBAAAN,EAACD,GAAA,EACC,UAAA,gBAAAC,EAACb,GAAA,EAAI,cAAAS,GAA6B,GAAGN,GACnC,UAAA,gBAAAU,EAACO,GAAA,EACC,UAAA,gBAAAP,EAACE,GAAA,EAAQ,UAAAd,EAAA,CAAO,GAClB,GACF,EAAA,CACF;AAAA,EAAA;AAEJ;"}
|
|
@@ -1,24 +1,25 @@
|
|
|
1
|
+
import "@reduxjs/toolkit/query/react";
|
|
1
2
|
import { l, a as u } from "./session-oI-Ht2C8.js";
|
|
2
|
-
function
|
|
3
|
+
function d(n, r = "session/login/") {
|
|
3
4
|
return n.mutation({
|
|
4
5
|
query: (o) => ({ url: r, method: "POST", body: o }),
|
|
5
|
-
async onQueryStarted(o, { dispatch:
|
|
6
|
+
async onQueryStarted(o, { dispatch: i, queryFulfilled: t }) {
|
|
6
7
|
try {
|
|
7
|
-
await t,
|
|
8
|
+
await t, i(u());
|
|
8
9
|
} catch (e) {
|
|
9
10
|
console.error("Failed to call login endpoint...", e);
|
|
10
11
|
}
|
|
11
12
|
}
|
|
12
13
|
});
|
|
13
14
|
}
|
|
14
|
-
function
|
|
15
|
+
function y(n, r, o = "session/logout/") {
|
|
15
16
|
return r.mutation({
|
|
16
17
|
query: () => ({ url: o, method: "POST" }),
|
|
17
|
-
async onQueryStarted(
|
|
18
|
+
async onQueryStarted(i, { dispatch: t, queryFulfilled: e }) {
|
|
18
19
|
try {
|
|
19
20
|
await e;
|
|
20
|
-
} catch (
|
|
21
|
-
console.error("Failed to call logout endpoint...",
|
|
21
|
+
} catch (a) {
|
|
22
|
+
console.error("Failed to call logout endpoint...", a);
|
|
22
23
|
} finally {
|
|
23
24
|
t(l()), t(n.util.resetApiState());
|
|
24
25
|
}
|
|
@@ -26,7 +27,7 @@ function d(n, r, o = "session/logout/") {
|
|
|
26
27
|
});
|
|
27
28
|
}
|
|
28
29
|
export {
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
d as a,
|
|
31
|
+
y as b
|
|
31
32
|
};
|
|
32
|
-
//# sourceMappingURL=session-
|
|
33
|
+
//# sourceMappingURL=session-COyN01K0.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-
|
|
1
|
+
{"version":3,"file":"session-COyN01K0.js","sources":["../src/api/endpoints/session.ts"],"sourcesContent":["import { type Api, type EndpointBuilder } from \"@reduxjs/toolkit/query/react\"\n\nimport { login, logout } from \"../../slices/session\"\n\nexport type ExchangeOAuth2CodeArg = {\n code: string\n code_verifier: string\n redirect_uri: string\n}\n\nexport function buildLoginEndpoint<ResultType, QueryArg>(\n build: EndpointBuilder<any, any, any>,\n url: string = \"session/login/\",\n) {\n return build.mutation<ResultType, QueryArg>({\n query: body => ({ url, method: \"POST\", body }),\n async onQueryStarted(_, { dispatch, queryFulfilled }) {\n try {\n await queryFulfilled\n dispatch(login())\n } catch (error) {\n console.error(\"Failed to call login endpoint...\", error)\n }\n },\n })\n}\n\nexport function buildLogoutEndpoint<ResultType, QueryArg>(\n api: Api<any, any, any, any, any>,\n build: EndpointBuilder<any, any, any>,\n url: string = \"session/logout/\",\n) {\n return build.mutation<ResultType, QueryArg>({\n query: () => ({ url, method: \"POST\" }),\n async onQueryStarted(_, { dispatch, queryFulfilled }) {\n try {\n await queryFulfilled\n } catch (error) {\n console.error(\"Failed to call logout endpoint...\", error)\n } finally {\n dispatch(logout())\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access\n dispatch(api.util.resetApiState())\n }\n },\n })\n}\n"],"names":["buildLoginEndpoint","build","url","body","_","dispatch","queryFulfilled","login","error","buildLogoutEndpoint","api","logout"],"mappings":";;AAUO,SAASA,EACdC,GACAC,IAAc,kBACd;AACA,SAAOD,EAAM,SAA+B;AAAA,IAC1C,OAAO,CAAAE,OAAS,EAAE,KAAAD,GAAK,QAAQ,QAAQ,MAAAC;IACvC,MAAM,eAAeC,GAAG,EAAE,UAAAC,GAAU,gBAAAC,KAAkB;AACpD,UAAI;AACF,cAAMA,GACND,EAASE,GAAO;AAAA,MAClB,SAASC,GAAO;AACd,gBAAQ,MAAM,oCAAoCA,CAAK;AAAA,MACzD;AAAA,IACF;AAAA,EAAA,CACD;AACH;AAEO,SAASC,EACdC,GACAT,GACAC,IAAc,mBACd;AACA,SAAOD,EAAM,SAA+B;AAAA,IAC1C,OAAO,OAAO,EAAE,KAAAC,GAAK,QAAQ,OAAA;AAAA,IAC7B,MAAM,eAAeE,GAAG,EAAE,UAAAC,GAAU,gBAAAC,KAAkB;AACpD,UAAI;AACF,cAAMA;AAAA,MACR,SAASE,GAAO;AACd,gBAAQ,MAAM,qCAAqCA,CAAK;AAAA,MAC1D,UAAA;AACE,QAAAH,EAASM,GAAQ,GAEjBN,EAASK,EAAI,KAAK,eAAe;AAAA,MACnC;AAAA,IACF;AAAA,EAAA,CACD;AACH;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";require("@reduxjs/toolkit/query/react");const u=require("./session-CE2U7oL1.cjs");function a(n,e="session/login/"){return n.mutation({query:o=>({url:e,method:"POST",body:o}),async onQueryStarted(o,{dispatch:r,queryFulfilled:t}){try{await t,r(u.login())}catch(i){console.error("Failed to call login endpoint...",i)}}})}function s(n,e,o="session/logout/"){return e.mutation({query:()=>({url:o,method:"POST"}),async onQueryStarted(r,{dispatch:t,queryFulfilled:i}){try{await i}catch(l){console.error("Failed to call logout endpoint...",l)}finally{t(u.logout()),t(n.util.resetApiState())}}})}exports.buildLoginEndpoint=a;exports.buildLogoutEndpoint=s;
|
|
2
|
+
//# sourceMappingURL=session-eOp0H-EC.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-
|
|
1
|
+
{"version":3,"file":"session-eOp0H-EC.cjs","sources":["../src/api/endpoints/session.ts"],"sourcesContent":["import { type Api, type EndpointBuilder } from \"@reduxjs/toolkit/query/react\"\n\nimport { login, logout } from \"../../slices/session\"\n\nexport type ExchangeOAuth2CodeArg = {\n code: string\n code_verifier: string\n redirect_uri: string\n}\n\nexport function buildLoginEndpoint<ResultType, QueryArg>(\n build: EndpointBuilder<any, any, any>,\n url: string = \"session/login/\",\n) {\n return build.mutation<ResultType, QueryArg>({\n query: body => ({ url, method: \"POST\", body }),\n async onQueryStarted(_, { dispatch, queryFulfilled }) {\n try {\n await queryFulfilled\n dispatch(login())\n } catch (error) {\n console.error(\"Failed to call login endpoint...\", error)\n }\n },\n })\n}\n\nexport function buildLogoutEndpoint<ResultType, QueryArg>(\n api: Api<any, any, any, any, any>,\n build: EndpointBuilder<any, any, any>,\n url: string = \"session/logout/\",\n) {\n return build.mutation<ResultType, QueryArg>({\n query: () => ({ url, method: \"POST\" }),\n async onQueryStarted(_, { dispatch, queryFulfilled }) {\n try {\n await queryFulfilled\n } catch (error) {\n console.error(\"Failed to call logout endpoint...\", error)\n } finally {\n dispatch(logout())\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access\n dispatch(api.util.resetApiState())\n }\n },\n })\n}\n"],"names":["buildLoginEndpoint","build","url","body","_","dispatch","queryFulfilled","login","error","buildLogoutEndpoint","api","logout"],"mappings":"+FAUO,SAASA,EACdC,EACAC,EAAc,iBACd,CACA,OAAOD,EAAM,SAA+B,CAC1C,MAAOE,IAAS,CAAE,IAAAD,EAAK,OAAQ,OAAQ,KAAAC,IACvC,MAAM,eAAeC,EAAG,CAAE,SAAAC,EAAU,eAAAC,GAAkB,CACpD,GAAI,CACF,MAAMA,EACND,EAASE,EAAAA,OAAO,CAClB,OAASC,EAAO,CACd,QAAQ,MAAM,mCAAoCA,CAAK,CACzD,CACF,CAAA,CACD,CACH,CAEO,SAASC,EACdC,EACAT,EACAC,EAAc,kBACd,CACA,OAAOD,EAAM,SAA+B,CAC1C,MAAO,KAAO,CAAE,IAAAC,EAAK,OAAQ,MAAA,GAC7B,MAAM,eAAeE,EAAG,CAAE,SAAAC,EAAU,eAAAC,GAAkB,CACpD,GAAI,CACF,MAAMA,CACR,OAASE,EAAO,CACd,QAAQ,MAAM,oCAAqCA,CAAK,CAC1D,QAAA,CACEH,EAASM,EAAAA,QAAQ,EAEjBN,EAASK,EAAI,KAAK,eAAe,CACnC,CACF,CAAA,CACD,CACH"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";require("@mui/material");const e=require("../../index-
|
|
1
|
+
"use strict";require("@mui/material");const e=require("../../index-D2B9uIE4.cjs");module.exports=e.components;
|
|
2
2
|
//# sourceMappingURL=index.cjs.js.map
|
package/dist/theme/index.cjs.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("@mui/material"),c=require("../index-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("@mui/material"),c=require("../index-D2B9uIE4.cjs"),o=require("../palette-BnIdHKDE.cjs"),a=require("react/jsx-runtime"),h=require("@mui/icons-material"),C=({options:t=m,withShapes:u=!1,userType:x,bgcolor:n,children:v,sx:M,...g})=>{let l,p,r;switch(x){case"teacher":n=n??o.primary[400],l="tertiary",p="secondary",r=o.palette.primary.contrastText;break;case"student":n=n??o.tertiary[500],l="secondary",p="primary",r=o.palette.tertiary.contrastText;break;case"independent":n=n??o.secondary[500],l="primary",p="tertiary",r=o.palette.secondary.contrastText;break}const y={display:{xs:"none",md:"block"},fontSize:"180px",position:"absolute"},d={color:r,textDecorationColor:r};function s(e,k,O,T="root"){return{...c.getStyleOverrides(e,O,T,t.components),...!c.includesClassNames(e,["no-override"])&&k}}const b=i.responsiveFontSizes(i.createTheme({...t,components:{...t.components,MuiTypography:{...t.components?.MuiTypography,styleOverrides:{...t.components?.MuiTypography?.styleOverrides,root:({ownerState:e})=>s(e,{...d},"MuiTypography")}},MuiFormHelperText:{...t.components?.MuiFormHelperText,styleOverrides:{...t.components?.MuiFormHelperText?.styleOverrides,root:({ownerState:e})=>s(e,{...d},"MuiFormHelperText")}},MuiLink:{...t.components?.MuiLink,styleOverrides:{...t.components?.MuiLink?.styleOverrides,root:({ownerState:e})=>s(e,{...d},"MuiLink")}},MuiButton:{...t.components?.MuiButton,styleOverrides:{...t.components?.MuiButton?.styleOverrides,contained:({ownerState:e})=>s(e,{...x==="independent"&&{backgroundColor:"white","&:hover":{backgroundColor:"#f6f5f5",boxShadow:["0px 6px 10px 0px rgba(0, 0, 0, 0.14)","0px 1px 18px 0px rgba(0, 0, 0, 0.12)","0px 3px 5px 0px rgba(0, 0, 0, 0.2);"].join()},[`&.${i.buttonClasses.disabled}`]:{backgroundColor:"white",color:r}}},"MuiButton","contained"),outlined:({ownerState:e})=>s(e,{...d,border:`2px solid ${r}`,"&:hover":{border:`2px solid ${r}`,backgroundColor:"transparent",textDecoration:"underline"}},"MuiButton","outlined")}},MuiCheckbox:{...t.components?.MuiCheckbox,styleOverrides:{...t.components?.MuiCheckbox?.styleOverrides,root:({ownerState:e})=>s(e,{color:`${r} !important`},"MuiCheckbox")}},MuiSvgIcon:{...t.components?.MuiSvgIcon,styleOverrides:{...t.components?.MuiSvgIcon?.styleOverrides,root:({ownerState:e})=>s(e,{"&.checkbox-error":{color:`${r} !important`}},"MuiSvgIcon")}}}}));return a.jsx(i.ThemeProvider,{theme:b,children:a.jsxs(i.Box,{sx:{...M,...u&&{paddingY:{xs:2,sm:3,md:5},paddingX:{xs:2,sm:5,md:10},marginX:{md:"90px"}},bgcolor:n,alignItems:"center",position:"relative"},...g,children:[u&&a.jsxs(a.Fragment,{children:[a.jsx(h.Circle,{color:l,sx:{...y,top:"5%",left:"0%",transform:"translate(-60%, 0%)"}}),a.jsx(h.Hexagon,{color:p,sx:{...y,bottom:"5%",right:"0%",transform:"translate(60%, 0%) rotate(90deg)"}})]}),v]})})},m={palette:o.palette,components:c.components,spacing:c.spacing,typography:c.typography},S=i.responsiveFontSizes(i.createTheme(m));exports.colors=o.colors;exports.ThemedBox=C;exports.theme=S;exports.themeOptions=m;
|
|
2
2
|
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../../src/theme/ThemedBox.tsx","../../src/theme/index.ts"],"sourcesContent":["import {\n Box,\n type BoxProps,\n type CSSObject,\n type PaletteColor,\n type SxProps,\n type ThemeOptions,\n ThemeProvider,\n buttonClasses,\n createTheme,\n responsiveFontSizes,\n} from \"@mui/material\"\nimport {\n Circle as CircleIcon,\n Hexagon as HexagonIcon,\n} from \"@mui/icons-material\"\nimport type { CommonProps } from \"@mui/material/OverridableComponent\"\nimport type React from \"react\"\n\nimport { getStyleOverrides, includesClassNames } from \"../utils/theme\"\nimport { primary, secondary, tertiary } from \"./colors\"\nimport type Components from \"./components/_components\"\nimport palette from \"./palette\"\nimport { themeOptions } from \".\"\n\nexport interface ThemedBoxProps extends BoxProps {\n options?: ThemeOptions\n withShapes?: boolean\n userType: \"teacher\" | \"student\" | \"independent\"\n bgcolor?: string\n}\n\nconst ThemedBox: React.FC<ThemedBoxProps> = ({\n options = themeOptions,\n withShapes = false,\n userType,\n bgcolor,\n children,\n sx,\n ...otherBoxProps\n}) => {\n let circleColor: \"primary\" | \"secondary\" | \"tertiary\"\n let hexagonColor: \"primary\" | \"secondary\" | \"tertiary\"\n let contrastText: string\n switch (userType) {\n case \"teacher\":\n bgcolor = bgcolor ?? primary[400]\n circleColor = \"tertiary\"\n hexagonColor = \"secondary\"\n contrastText = (palette.primary as PaletteColor).contrastText\n break\n case \"student\":\n bgcolor = bgcolor ?? tertiary[500]\n circleColor = \"secondary\"\n hexagonColor = \"primary\"\n contrastText = palette.tertiary.contrastText\n break\n case \"independent\":\n bgcolor = bgcolor ?? secondary[500]\n circleColor = \"primary\"\n hexagonColor = \"tertiary\"\n contrastText = (palette.secondary as PaletteColor).contrastText\n break\n }\n\n const commonIconSxProps: SxProps = {\n display: { xs: \"none\", md: \"block\" },\n fontSize: \"180px\",\n position: \"absolute\",\n }\n\n const fontStyleOverrides = {\n color: contrastText,\n textDecorationColor: contrastText,\n }\n\n function overrideStyles(\n ownerState: CommonProps,\n styleOverrides: CSSObject,\n componentKey: keyof Components,\n muiClassName: string = \"root\",\n ): CSSObject {\n return {\n // Get the original styles.\n ...getStyleOverrides(\n ownerState,\n componentKey,\n muiClassName,\n options.components,\n ),\n // Override styles unless the class name 'no-override' is set.\n ...(!includesClassNames(ownerState, [\"no-override\"]) && styleOverrides),\n }\n }\n\n const theme = responsiveFontSizes(\n createTheme({\n ...options,\n components: {\n ...options.components,\n MuiTypography: {\n ...options.components?.MuiTypography,\n styleOverrides: {\n ...options.components?.MuiTypography?.styleOverrides,\n root: ({ ownerState }) =>\n overrideStyles(\n ownerState,\n {\n ...fontStyleOverrides,\n },\n \"MuiTypography\",\n ),\n },\n },\n MuiFormHelperText: {\n ...options.components?.MuiFormHelperText,\n styleOverrides: {\n ...options.components?.MuiFormHelperText?.styleOverrides,\n root: ({ ownerState }) =>\n overrideStyles(\n ownerState,\n {\n ...fontStyleOverrides,\n },\n \"MuiFormHelperText\",\n ),\n },\n },\n MuiLink: {\n ...options.components?.MuiLink,\n styleOverrides: {\n ...options.components?.MuiLink?.styleOverrides,\n root: ({ ownerState }) =>\n overrideStyles(\n ownerState,\n {\n ...fontStyleOverrides,\n },\n \"MuiLink\",\n ),\n },\n },\n MuiButton: {\n ...options.components?.MuiButton,\n styleOverrides: {\n ...options.components?.MuiButton?.styleOverrides,\n contained: ({ ownerState }) =>\n overrideStyles(\n ownerState,\n {\n ...(userType === \"independent\" && {\n backgroundColor: \"white\",\n \"&:hover\": {\n backgroundColor: \"#f6f5f5\",\n boxShadow: [\n \"0px 6px 10px 0px rgba(0, 0, 0, 0.14)\",\n \"0px 1px 18px 0px rgba(0, 0, 0, 0.12)\",\n \"0px 3px 5px 0px rgba(0, 0, 0, 0.2);\",\n ].join(),\n },\n [`&.${buttonClasses.disabled}`]: {\n backgroundColor: \"white\",\n color: contrastText,\n },\n }),\n },\n \"MuiButton\",\n \"contained\",\n ),\n outlined: ({ ownerState }) =>\n overrideStyles(\n ownerState,\n {\n ...fontStyleOverrides,\n border: `2px solid ${contrastText}`,\n \"&:hover\": {\n border: `2px solid ${contrastText}`,\n backgroundColor: \"transparent\",\n textDecoration: \"underline\",\n },\n },\n \"MuiButton\",\n \"outlined\",\n ),\n },\n },\n MuiCheckbox: {\n ...options.components?.MuiCheckbox,\n styleOverrides: {\n ...options.components?.MuiCheckbox?.styleOverrides,\n root: ({ ownerState }) =>\n overrideStyles(\n ownerState,\n {\n color: `${contrastText} !important`,\n },\n \"MuiCheckbox\",\n ),\n },\n },\n MuiSvgIcon: {\n ...options.components?.MuiSvgIcon,\n styleOverrides: {\n ...options.components?.MuiSvgIcon?.styleOverrides,\n root: ({ ownerState }) =>\n overrideStyles(\n ownerState,\n {\n \"&.checkbox-error\": {\n color: `${contrastText} !important`,\n },\n },\n \"MuiSvgIcon\",\n ),\n },\n },\n },\n }),\n )\n\n return (\n <ThemeProvider theme={theme}>\n <Box\n sx={{\n ...sx,\n ...(withShapes && {\n paddingY: { xs: 2, sm: 3, md: 5 },\n paddingX: { xs: 2, sm: 5, md: 10 },\n marginX: { md: \"90px\" },\n }),\n bgcolor,\n alignItems: \"center\",\n position: \"relative\",\n }}\n {...otherBoxProps}\n >\n {withShapes && (\n <>\n <CircleIcon\n color={circleColor}\n sx={{\n ...commonIconSxProps,\n top: \"5%\",\n left: \"0%\",\n transform: \"translate(-60%, 0%)\",\n }}\n />\n <HexagonIcon\n color={hexagonColor}\n sx={{\n ...commonIconSxProps,\n bottom: \"5%\",\n right: \"0%\",\n transform: \"translate(60%, 0%) rotate(90deg)\",\n }}\n />\n </>\n )}\n {children}\n </Box>\n </ThemeProvider>\n )\n}\n\nexport default ThemedBox\n","import {\n type ThemeOptions,\n createTheme,\n responsiveFontSizes,\n} from \"@mui/material\"\n\nimport components from \"./components\"\nimport palette from \"./palette\"\nimport spacing from \"./spacing\"\nimport typography from \"./typography\"\n\nexport * as colors from \"./colors\"\nexport * from \"./palette\"\nexport * from \"./ThemedBox\"\nexport { default as ThemedBox } from \"./ThemedBox\"\n\nexport const themeOptions: ThemeOptions = {\n palette,\n components,\n spacing,\n typography,\n}\n\nexport const theme = responsiveFontSizes(createTheme(themeOptions))\n"],"names":["ThemedBox","options","themeOptions","withShapes","userType","bgcolor","children","sx","otherBoxProps","circleColor","hexagonColor","contrastText","primary","palette","tertiary","secondary","commonIconSxProps","fontStyleOverrides","overrideStyles","ownerState","styleOverrides","componentKey","muiClassName","getStyleOverrides","includesClassNames","theme","responsiveFontSizes","createTheme","buttonClasses","jsx","ThemeProvider","jsxs","Box","Fragment","CircleIcon","HexagonIcon","components","spacing","typography"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../../src/theme/ThemedBox.tsx","../../src/theme/index.ts"],"sourcesContent":["import {\n Box,\n type BoxProps,\n type CSSObject,\n type PaletteColor,\n type SxProps,\n type ThemeOptions,\n ThemeProvider,\n buttonClasses,\n createTheme,\n responsiveFontSizes,\n} from \"@mui/material\"\nimport {\n Circle as CircleIcon,\n Hexagon as HexagonIcon,\n} from \"@mui/icons-material\"\nimport type { CommonProps } from \"@mui/material/OverridableComponent\"\nimport type React from \"react\"\n\nimport { getStyleOverrides, includesClassNames } from \"../utils/theme\"\nimport { primary, secondary, tertiary } from \"./colors\"\nimport type Components from \"./components/_components\"\nimport palette from \"./palette\"\nimport { themeOptions } from \".\"\n\nexport interface ThemedBoxProps extends BoxProps {\n options?: ThemeOptions\n withShapes?: boolean\n userType: \"teacher\" | \"student\" | \"independent\"\n bgcolor?: string\n}\n\nconst ThemedBox: React.FC<ThemedBoxProps> = ({\n options = themeOptions,\n withShapes = false,\n userType,\n bgcolor,\n children,\n sx,\n ...otherBoxProps\n}) => {\n let circleColor: \"primary\" | \"secondary\" | \"tertiary\"\n let hexagonColor: \"primary\" | \"secondary\" | \"tertiary\"\n let contrastText: string\n switch (userType) {\n case \"teacher\":\n bgcolor = bgcolor ?? primary[400]\n circleColor = \"tertiary\"\n hexagonColor = \"secondary\"\n contrastText = (palette.primary as PaletteColor).contrastText\n break\n case \"student\":\n bgcolor = bgcolor ?? tertiary[500]\n circleColor = \"secondary\"\n hexagonColor = \"primary\"\n contrastText = palette.tertiary.contrastText\n break\n case \"independent\":\n bgcolor = bgcolor ?? secondary[500]\n circleColor = \"primary\"\n hexagonColor = \"tertiary\"\n contrastText = (palette.secondary as PaletteColor).contrastText\n break\n }\n\n const commonIconSxProps: SxProps = {\n display: { xs: \"none\", md: \"block\" },\n fontSize: \"180px\",\n position: \"absolute\",\n }\n\n const fontStyleOverrides = {\n color: contrastText,\n textDecorationColor: contrastText,\n }\n\n function overrideStyles(\n ownerState: CommonProps,\n styleOverrides: CSSObject,\n componentKey: keyof Components,\n muiClassName: string = \"root\",\n ): CSSObject {\n return {\n // Get the original styles.\n ...getStyleOverrides(\n ownerState,\n componentKey,\n muiClassName,\n options.components,\n ),\n // Override styles unless the class name 'no-override' is set.\n ...(!includesClassNames(ownerState, [\"no-override\"]) && styleOverrides),\n }\n }\n\n const theme = responsiveFontSizes(\n createTheme({\n ...options,\n components: {\n ...options.components,\n MuiTypography: {\n ...options.components?.MuiTypography,\n styleOverrides: {\n ...options.components?.MuiTypography?.styleOverrides,\n root: ({ ownerState }) =>\n overrideStyles(\n ownerState,\n {\n ...fontStyleOverrides,\n },\n \"MuiTypography\",\n ),\n },\n },\n MuiFormHelperText: {\n ...options.components?.MuiFormHelperText,\n styleOverrides: {\n ...options.components?.MuiFormHelperText?.styleOverrides,\n root: ({ ownerState }) =>\n overrideStyles(\n ownerState,\n {\n ...fontStyleOverrides,\n },\n \"MuiFormHelperText\",\n ),\n },\n },\n MuiLink: {\n ...options.components?.MuiLink,\n styleOverrides: {\n ...options.components?.MuiLink?.styleOverrides,\n root: ({ ownerState }) =>\n overrideStyles(\n ownerState,\n {\n ...fontStyleOverrides,\n },\n \"MuiLink\",\n ),\n },\n },\n MuiButton: {\n ...options.components?.MuiButton,\n styleOverrides: {\n ...options.components?.MuiButton?.styleOverrides,\n contained: ({ ownerState }) =>\n overrideStyles(\n ownerState,\n {\n ...(userType === \"independent\" && {\n backgroundColor: \"white\",\n \"&:hover\": {\n backgroundColor: \"#f6f5f5\",\n boxShadow: [\n \"0px 6px 10px 0px rgba(0, 0, 0, 0.14)\",\n \"0px 1px 18px 0px rgba(0, 0, 0, 0.12)\",\n \"0px 3px 5px 0px rgba(0, 0, 0, 0.2);\",\n ].join(),\n },\n [`&.${buttonClasses.disabled}`]: {\n backgroundColor: \"white\",\n color: contrastText,\n },\n }),\n },\n \"MuiButton\",\n \"contained\",\n ),\n outlined: ({ ownerState }) =>\n overrideStyles(\n ownerState,\n {\n ...fontStyleOverrides,\n border: `2px solid ${contrastText}`,\n \"&:hover\": {\n border: `2px solid ${contrastText}`,\n backgroundColor: \"transparent\",\n textDecoration: \"underline\",\n },\n },\n \"MuiButton\",\n \"outlined\",\n ),\n },\n },\n MuiCheckbox: {\n ...options.components?.MuiCheckbox,\n styleOverrides: {\n ...options.components?.MuiCheckbox?.styleOverrides,\n root: ({ ownerState }) =>\n overrideStyles(\n ownerState,\n {\n color: `${contrastText} !important`,\n },\n \"MuiCheckbox\",\n ),\n },\n },\n MuiSvgIcon: {\n ...options.components?.MuiSvgIcon,\n styleOverrides: {\n ...options.components?.MuiSvgIcon?.styleOverrides,\n root: ({ ownerState }) =>\n overrideStyles(\n ownerState,\n {\n \"&.checkbox-error\": {\n color: `${contrastText} !important`,\n },\n },\n \"MuiSvgIcon\",\n ),\n },\n },\n },\n }),\n )\n\n return (\n <ThemeProvider theme={theme}>\n <Box\n sx={{\n ...sx,\n ...(withShapes && {\n paddingY: { xs: 2, sm: 3, md: 5 },\n paddingX: { xs: 2, sm: 5, md: 10 },\n marginX: { md: \"90px\" },\n }),\n bgcolor,\n alignItems: \"center\",\n position: \"relative\",\n }}\n {...otherBoxProps}\n >\n {withShapes && (\n <>\n <CircleIcon\n color={circleColor}\n sx={{\n ...commonIconSxProps,\n top: \"5%\",\n left: \"0%\",\n transform: \"translate(-60%, 0%)\",\n }}\n />\n <HexagonIcon\n color={hexagonColor}\n sx={{\n ...commonIconSxProps,\n bottom: \"5%\",\n right: \"0%\",\n transform: \"translate(60%, 0%) rotate(90deg)\",\n }}\n />\n </>\n )}\n {children}\n </Box>\n </ThemeProvider>\n )\n}\n\nexport default ThemedBox\n","import {\n type ThemeOptions,\n createTheme,\n responsiveFontSizes,\n} from \"@mui/material\"\n\nimport components from \"./components\"\nimport palette from \"./palette\"\nimport spacing from \"./spacing\"\nimport typography from \"./typography\"\n\nexport * as colors from \"./colors\"\nexport * from \"./palette\"\nexport * from \"./ThemedBox\"\nexport { default as ThemedBox } from \"./ThemedBox\"\n\nexport const themeOptions: ThemeOptions = {\n palette,\n components,\n spacing,\n typography,\n}\n\nexport const theme = responsiveFontSizes(createTheme(themeOptions))\n"],"names":["ThemedBox","options","themeOptions","withShapes","userType","bgcolor","children","sx","otherBoxProps","circleColor","hexagonColor","contrastText","primary","palette","tertiary","secondary","commonIconSxProps","fontStyleOverrides","overrideStyles","ownerState","styleOverrides","componentKey","muiClassName","getStyleOverrides","includesClassNames","theme","responsiveFontSizes","createTheme","buttonClasses","jsx","ThemeProvider","jsxs","Box","Fragment","CircleIcon","HexagonIcon","components","spacing","typography"],"mappings":"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"}
|