codeforlife 2.10.6 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/README.md +10 -6
  2. package/dist/App-3VkR-ZEZ.js +27 -0
  3. package/dist/App-3VkR-ZEZ.js.map +1 -0
  4. package/dist/App-UfeajXtp.cjs +2 -0
  5. package/dist/App-UfeajXtp.cjs.map +1 -0
  6. package/dist/Countdown-BtUbr1J_.cjs +2 -0
  7. package/dist/{Countdown-CyJ-01oU.cjs.map → Countdown-BtUbr1J_.cjs.map} +1 -1
  8. package/dist/{Countdown-BTyB1rrK.js → Countdown-DhjAmB0u.js} +9 -9
  9. package/dist/{Countdown-BTyB1rrK.js.map → Countdown-DhjAmB0u.js.map} +1 -1
  10. package/dist/{Image-CgYjq-tA.cjs → Image-CgRVUblT.cjs} +2 -2
  11. package/dist/{Image-CgYjq-tA.cjs.map → Image-CgRVUblT.cjs.map} +1 -1
  12. package/dist/{Image-C-f2ChBh.js → Image-DTOu0h-V.js} +2 -2
  13. package/dist/{Image-C-f2ChBh.js.map → Image-DTOu0h-V.js.map} +1 -1
  14. package/dist/{LinkButton-BOPjG7_2.cjs → LinkButton-Kw2brLTK.cjs} +2 -2
  15. package/dist/{LinkButton-BOPjG7_2.cjs.map → LinkButton-Kw2brLTK.cjs.map} +1 -1
  16. package/dist/{LinkButton-Bk50AHHg.js → LinkButton-sQ5jgHnX.js} +3 -3
  17. package/dist/{LinkButton-Bk50AHHg.js.map → LinkButton-sQ5jgHnX.js.map} +1 -1
  18. package/dist/{Navigate-SL_oMjPc.js → Navigate-ClPcw87e.js} +3 -3
  19. package/dist/{Navigate-SL_oMjPc.js.map → Navigate-ClPcw87e.js.map} +1 -1
  20. package/dist/Navigate-CrMwdIBB.cjs +2 -0
  21. package/dist/{Navigate-C_sgy8Xs.cjs.map → Navigate-CrMwdIBB.cjs.map} +1 -1
  22. package/dist/_commonjsHelpers-DKOUU3wS.cjs +2 -0
  23. package/dist/_commonjsHelpers-DKOUU3wS.cjs.map +1 -0
  24. package/dist/_commonjsHelpers-DaMA6jEr.js +9 -0
  25. package/dist/_commonjsHelpers-DaMA6jEr.js.map +1 -0
  26. package/dist/api/endpoints/index.cjs.js +1 -1
  27. package/dist/api/endpoints/index.es.js +2 -2
  28. package/dist/api/index.cjs.js +3 -3
  29. package/dist/api/index.es.js +3 -3
  30. package/dist/api-9cnyvZj7.cjs +2 -0
  31. package/dist/{api-DIgp_6Vr.cjs.map → api-9cnyvZj7.cjs.map} +1 -1
  32. package/dist/{api-BvUiTeR7.js → api-BFYu8ZvQ.js} +2 -2
  33. package/dist/{api-BvUiTeR7.js.map → api-BFYu8ZvQ.js.map} +1 -1
  34. package/dist/{api-CaeeoZaI.cjs → api-CAH3GT1O.cjs} +2 -2
  35. package/dist/{api-CaeeoZaI.cjs.map → api-CAH3GT1O.cjs.map} +1 -1
  36. package/dist/{auth-CQ1InCxP.js → auth-Bb8WkZGN.js} +4 -4
  37. package/dist/{auth-CQ1InCxP.js.map → auth-Bb8WkZGN.js.map} +1 -1
  38. package/dist/auth-BwpsrTko.cjs +2 -0
  39. package/dist/{auth-B7Vdot4N.cjs.map → auth-BwpsrTko.cjs.map} +1 -1
  40. package/dist/client-BK9NlSVR.js +25208 -0
  41. package/dist/client-BK9NlSVR.js.map +1 -0
  42. package/dist/client-CmAMc2Wj.cjs +251 -0
  43. package/dist/client-CmAMc2Wj.cjs.map +1 -0
  44. package/dist/components/form/index.cjs.js +1 -1
  45. package/dist/components/form/index.es.js +1 -1
  46. package/dist/components/index.cjs.js +1 -1
  47. package/dist/components/index.cjs.js.map +1 -1
  48. package/dist/components/index.d.ts +0 -1
  49. package/dist/components/index.es.js +146 -182
  50. package/dist/components/index.es.js.map +1 -1
  51. package/dist/components/page/index.cjs.js +1 -1
  52. package/dist/components/page/index.es.js +1 -1
  53. package/dist/components/router/index.cjs.js +1 -1
  54. package/dist/components/router/index.es.js +2 -2
  55. package/dist/components/table/index.cjs.js +1 -1
  56. package/dist/components/table/index.es.js +1 -1
  57. package/dist/features/index.cjs.js +1 -1
  58. package/dist/features/index.cjs.js.map +1 -1
  59. package/dist/features/index.es.js +10 -11
  60. package/dist/features/index.es.js.map +1 -1
  61. package/dist/general-Bo6JGvKB.cjs +2 -0
  62. package/dist/{general-BPbbmkeX.cjs.map → general-Bo6JGvKB.cjs.map} +1 -1
  63. package/dist/{general-CtTJPCJn.js → general-D7Hqi3gj.js} +3 -3
  64. package/dist/{general-CtTJPCJn.js.map → general-D7Hqi3gj.js.map} +1 -1
  65. package/dist/hooks/index.cjs.js +1 -1
  66. package/dist/hooks/index.es.js +2 -2
  67. package/dist/{index-CBPn0wyX.cjs → index-5C9hpxRF.cjs} +2 -2
  68. package/dist/{index-CBPn0wyX.cjs.map → index-5C9hpxRF.cjs.map} +1 -1
  69. package/dist/{index-Dfo744Sb.js → index-B3e_XaVG.js} +2 -2
  70. package/dist/{index-Dfo744Sb.js.map → index-B3e_XaVG.js.map} +1 -1
  71. package/dist/{index-CXYppxE3.cjs → index-B89FjK7v.cjs} +2 -2
  72. package/dist/{index-CXYppxE3.cjs.map → index-B89FjK7v.cjs.map} +1 -1
  73. package/dist/{index-CI5O_yH6.js → index-BRHFlEjS.js} +37 -39
  74. package/dist/{index-CI5O_yH6.js.map → index-BRHFlEjS.js.map} +1 -1
  75. package/dist/{index-D8Gc0IWi.js → index-CHboZsxD.js} +2 -2
  76. package/dist/{index-D8Gc0IWi.js.map → index-CHboZsxD.js.map} +1 -1
  77. package/dist/index-CwC9mpb3.cjs +2 -0
  78. package/dist/{index-B6aNVvMr.cjs.map → index-CwC9mpb3.cjs.map} +1 -1
  79. package/dist/{index-DCI-3m7f.cjs → index-DuArGzQE.cjs} +3 -3
  80. package/dist/{index-DCI-3m7f.cjs.map → index-DuArGzQE.cjs.map} +1 -1
  81. package/dist/{index-DcmDxIXA.js → index-hdS8RgRc.js} +5 -5
  82. package/dist/{index-DcmDxIXA.js.map → index-hdS8RgRc.js.map} +1 -1
  83. package/dist/index.cjs.js +1 -1
  84. package/dist/index.d.ts +1 -1
  85. package/dist/index.es.js +6 -6
  86. package/dist/{jsx-runtime-Dszzpdy0.cjs → jsx-runtime-B2pbW5Fp.cjs} +3 -3
  87. package/dist/{jsx-runtime-Dszzpdy0.cjs.map → jsx-runtime-B2pbW5Fp.cjs.map} +1 -1
  88. package/dist/{jsx-runtime-C7wFtzyj.js → jsx-runtime-lzYHhGH3.js} +15 -15
  89. package/dist/{jsx-runtime-C7wFtzyj.js.map → jsx-runtime-lzYHhGH3.js.map} +1 -1
  90. package/dist/{schemas-D3tO0rys.js → schemas-BMQZbhti.js} +2 -2
  91. package/dist/{schemas-D3tO0rys.js.map → schemas-BMQZbhti.js.map} +1 -1
  92. package/dist/{schemas-CpAWhNsP.cjs → schemas-DXX4rh8i.cjs} +2 -2
  93. package/dist/{schemas-CpAWhNsP.cjs.map → schemas-DXX4rh8i.cjs.map} +1 -1
  94. package/dist/server/App.d.ts +15 -0
  95. package/dist/server/entry.cjs.js +209 -0
  96. package/dist/server/entry.cjs.js.map +1 -0
  97. package/dist/server/entry.d.ts +14 -0
  98. package/dist/server/entry.es.js +21885 -0
  99. package/dist/server/entry.es.js.map +1 -0
  100. package/dist/server/index.cjs.js +6 -0
  101. package/dist/server/index.cjs.js.map +1 -0
  102. package/dist/server/index.d.ts +6 -0
  103. package/dist/{server.es.js → server/index.es.js} +19 -17
  104. package/dist/server/index.es.js.map +1 -0
  105. package/dist/settings/index.cjs.js +1 -1
  106. package/dist/settings/index.cjs.js.map +1 -1
  107. package/dist/settings/index.d.ts +1 -2
  108. package/dist/settings/index.es.js +5 -5
  109. package/dist/settings/index.es.js.map +1 -1
  110. package/dist/theme/components/index.cjs.js +1 -1
  111. package/dist/theme/components/index.es.js +1 -1
  112. package/dist/theme/index.cjs.js +1 -1
  113. package/dist/theme/index.cjs.js.map +1 -1
  114. package/dist/theme/index.d.ts +1 -2
  115. package/dist/theme/index.es.js +5 -5
  116. package/dist/theme/index.es.js.map +1 -1
  117. package/dist/{urls-RtSTEZfW.cjs → urls-CGZI0f1w.cjs} +2 -2
  118. package/dist/{urls-RtSTEZfW.cjs.map → urls-CGZI0f1w.cjs.map} +1 -1
  119. package/dist/{urls-5m9PgoEX.js → urls-DP4a8kxP.js} +2 -2
  120. package/dist/{urls-5m9PgoEX.js.map → urls-DP4a8kxP.js.map} +1 -1
  121. package/dist/utils/api.cjs.js +1 -1
  122. package/dist/utils/api.es.js +2 -2
  123. package/dist/utils/router.cjs.js +1 -1
  124. package/dist/utils/router.es.js +2 -2
  125. package/dist/utils/test.cjs.js +1 -250
  126. package/dist/utils/test.cjs.js.map +1 -1
  127. package/dist/utils/test.es.js +20 -25223
  128. package/dist/utils/test.es.js.map +1 -1
  129. package/dist/utils/theme.cjs.js +1 -1
  130. package/dist/utils/theme.es.js +2 -2
  131. package/package.json +16 -9
  132. package/dist/Countdown-CyJ-01oU.cjs +0 -2
  133. package/dist/Navigate-C_sgy8Xs.cjs +0 -2
  134. package/dist/api-DIgp_6Vr.cjs +0 -2
  135. package/dist/auth-B7Vdot4N.cjs +0 -2
  136. package/dist/components/App.d.ts +0 -18
  137. package/dist/general-BPbbmkeX.cjs +0 -2
  138. package/dist/index-B6aNVvMr.cjs +0 -2
  139. package/dist/server.cjs.js +0 -6
  140. package/dist/server.cjs.js.map +0 -1
  141. package/dist/server.es.js.map +0 -1
  142. /package/dist/{server.d.ts → server/server.d.ts} +0 -0
@@ -0,0 +1,6 @@
1
+ "use strict";var u=Object.create;var c=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var C=Object.getPrototypeOf,k=Object.prototype.hasOwnProperty;var S=(h,s,e,t)=>{if(s&&typeof s=="object"||typeof s=="function")for(let a of v(s))!k.call(h,a)&&a!==e&&c(h,a,{get:()=>s[a],enumerable:!(t=m(s,a))||t.enumerable});return h};var o=(h,s,e)=>(e=h!=null?u(C(h)):{},S(s||!h||!h.__esModule?c(e,"default",{value:h,enumerable:!0}):e,h));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const w=require("memory-cache"),y=require("node:crypto"),f=require("express"),l=require("node:fs/promises"),g=require("node:http"),P=require("../App-UfeajXtp.cjs");class I{envIsProduction;templateHtml;hostname;mode;port;base;app;server;cache;healthCheckCacheKey;healthCheckCacheTimeout;healthCheckStatusCodes;devtoolsWorkspaceUUID;constructor({mode:s,port:e,base:t}={}){this.envIsProduction=process.env.NODE_ENV==="production",this.templateHtml="",this.hostname=this.envIsProduction?"0.0.0.0":"127.0.0.1",this.mode=s||process.env.MODE||"development",this.port=e||(process.env.PORT?Number(process.env.PORT):this.envIsProduction?8080:5173),this.base=t||process.env.BASE||"",this.app=f(),this.server=g.createServer(this.app),this.cache=new w.Cache,this.healthCheckCacheKey="health-check",this.healthCheckCacheTimeout=3e4,this.healthCheckStatusCodes={healthy:200,startingUp:503,shuttingDown:503,unhealthy:503,unknown:503},this.devtoolsWorkspaceUUID=y.randomUUID()}getHealthCheck(s){return{healthStatus:"healthy",additionalInfo:"All healthy."}}handleHealthCheck(s,e){let t=this.cache.get(this.healthCheckCacheKey);if(t===null){const a=this.getHealthCheck(s);a.healthStatus!=="healthy"&&console.warn(`health check: ${JSON.stringify(a)}`),t={appId:process.env.APP_ID||"REPLACE_ME",healthStatus:a.healthStatus,lastCheckedTimestamp:new Date().toISOString(),additionalInformation:a.additionalInfo,startupTimestamp:new Date().toISOString(),appVersion:process.env.APP_VERSION||"REPLACE_ME",details:a.details||[]},this.cache.put(this.healthCheckCacheKey,t,this.healthCheckCacheTimeout)}e.status(this.healthCheckStatusCodes[t.healthStatus]).json(t)}async handleServeHtml(s,e,{getRenderAndTemplate:t,onServeError:a}){try{const r=s.originalUrl.replace(this.base,""),[n,p]=await t(r),i=await n(r),d=p.replace("<!--app-head-->",i.head??"").replace("<!--app-html-->",i.html??"");e.status(200).set({"Content-Type":"text/html"}).send(d)}catch(r){if(r instanceof Error){console.error(r.stack);const n=a(r);e.status(500).end(n)}}}handleChromeDevTools(s,e){if(this.envIsProduction)e.status(404).json({});else{const t=process.env.LOCAL_WORKSPACE_PATH;let a,r;t?(a=200,r={workspace:{uuid:this.devtoolsWorkspaceUUID,root:t}}):(a=404,r={error:"Local workspace path not configured."}),e.status(a).json(r)}}async setUpProduction(){const s=(await import("compression")).default,e=(await import("sirv")).default;return this.templateHtml=await l.readFile("./dist/client/index.html","utf-8"),this.app.use(s()),this.app.use(this.base,e("./dist/client",{extensions:[]})),{getRenderAndTemplate:async()=>{const t=(await import("../../../dist/server/entry-server.js")).render,a=this.templateHtml;return[t,a]},onServeError:()=>{}}}async setUpDevelopment(){const{createServer:s}=await import("vite"),e=await s({configFile:"/workspace/frontend/vite.config.ts",server:{middlewareMode:!0,hmr:{server:this.server}},appType:"custom",base:this.base,mode:this.mode});return this.app.use(e.middlewares),{getRenderAndTemplate:async t=>{const a=(await e.ssrLoadModule("/src/entry-server.tsx")).render;let r=await l.readFile("./index.html","utf-8");return r=await e.transformIndexHtml(t,r),[a,r]},onServeError:t=>(e.ssrFixStacktrace(t),t.stack)}}async run(){const s=this.envIsProduction?await this.setUpProduction():await this.setUpDevelopment();this.app.get("/health-check",(e,t)=>{this.handleHealthCheck(e,t)}),this.app.get("/.well-known/appspecific/com.chrome.devtools.json",(e,t)=>{this.handleChromeDevTools(e,t)}),this.app.get("*",async(e,t)=>{await this.handleServeHtml(e,t,s)}),this.server.listen(this.port,this.hostname,()=>{let e=`Server started.
2
+ url: http://${this.hostname}:${this.port}
3
+ environment: ${process.env.NODE_ENV}
4
+ `;this.envIsProduction||(e+=`mode: ${this.mode}
5
+ `),console.log(e)})}}exports.App=P.App;exports.Server=I;
6
+ //# sourceMappingURL=index.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs.js","sources":["../../src/server/server.ts"],"sourcesContent":["/**\n * © Ocado Group\n * Created on 13/12/2024 at 12:15:05(+00:00).\n *\n * A server for an app in a live environment.\n * Based off: https://github.com/bluwy/create-vite-extra/blob/master/template-ssr-react-ts/server.js\n */\n\nimport { Cache, type CacheClass } from \"memory-cache\"\nimport { type UUID, randomUUID } from \"node:crypto\"\nimport express, { type Express, type Request, type Response } from \"express\"\nimport fs from \"node:fs/promises\"\nimport http from \"node:http\"\n\ntype Mode = \"development\" | \"staging\" | \"production\"\ntype Options = Partial<{\n mode: Mode\n port: number\n base: string\n}>\n\ntype HealthStatus =\n | \"healthy\"\n | \"startingUp\"\n | \"shuttingDown\"\n | \"unhealthy\"\n | \"unknown\"\ntype HealthCheck = {\n healthStatus: HealthStatus\n additionalInfo: string\n details?: Array<{\n name: string\n description: string\n health: HealthStatus\n }>\n}\ntype HealthCheckResponse = {\n appId: string\n healthStatus: HealthStatus\n lastCheckedTimestamp: string\n additionalInformation: string\n startupTimestamp: string\n appVersion: string\n details: Array<{\n name: string\n description: string\n health: HealthStatus\n }>\n}\n\ntype Render = (path: string) => Promise<{ head?: string; html?: string }>\ntype EntryModule = { render: Render }\ntype RenderAndTemplate = [Render, string]\ntype GetRenderAndTemplate = (path: string) => Promise<RenderAndTemplate>\ntype OnServeError = (error: Error) => string | undefined\n\ntype Setup = {\n getRenderAndTemplate: GetRenderAndTemplate\n onServeError: OnServeError\n}\n\nexport default class Server {\n envIsProduction: boolean\n templateHtml: string\n hostname: string\n mode: Mode\n port: number\n base: string\n app: Express\n server: http.Server<typeof http.IncomingMessage, typeof http.ServerResponse>\n cache: CacheClass<string, any>\n healthCheckCacheKey: string\n healthCheckCacheTimeout: number\n healthCheckStatusCodes: Record<HealthStatus, number>\n devtoolsWorkspaceUUID: UUID\n\n constructor({ mode, port, base }: Options = {}) {\n this.envIsProduction = process.env.NODE_ENV === \"production\"\n this.templateHtml = \"\"\n this.hostname = this.envIsProduction ? \"0.0.0.0\" : \"127.0.0.1\"\n\n this.mode = mode || (process.env.MODE as Mode) || \"development\"\n this.port =\n port ||\n (process.env.PORT\n ? Number(process.env.PORT)\n : this.envIsProduction\n ? 8080\n : 5173)\n this.base = base || process.env.BASE || \"\"\n\n this.app = express()\n this.server = http.createServer(this.app)\n this.cache = new Cache()\n\n this.healthCheckCacheKey = \"health-check\"\n this.healthCheckCacheTimeout = 30000\n this.healthCheckStatusCodes = {\n // The app is running normally.\n healthy: 200,\n // The app is performing app-specific initialisation which must\n // complete before it will serve normal application requests\n // (perhaps the app is warming a cache or something similar). You\n // only need to use this status if your app will be in a start-up\n // mode for a prolonged period of time.\n startingUp: 503,\n // The app is shutting down. As with startingUp, you only need to\n // use this status if your app takes a prolonged amount of time\n // to shutdown, perhaps because it waits for a long-running\n // process to complete before shutting down.\n shuttingDown: 503,\n // The app is not running normally.\n unhealthy: 503,\n // The app is not able to report its own state.\n unknown: 503,\n }\n\n this.devtoolsWorkspaceUUID = randomUUID()\n }\n\n // @ts-expect-error unused var\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getHealthCheck(request: Request): HealthCheck {\n return {\n healthStatus: \"healthy\",\n additionalInfo: \"All healthy.\",\n }\n }\n\n handleHealthCheck(request: Request, response: Response): void {\n let value: HealthCheckResponse = this.cache.get(\n this.healthCheckCacheKey,\n ) as HealthCheckResponse\n if (value === null) {\n const healthCheck = this.getHealthCheck(request)\n\n if (healthCheck.healthStatus !== \"healthy\") {\n console.warn(`health check: ${JSON.stringify(healthCheck)}`)\n }\n\n value = {\n appId: process.env.APP_ID || \"REPLACE_ME\",\n healthStatus: healthCheck.healthStatus,\n lastCheckedTimestamp: new Date().toISOString(),\n additionalInformation: healthCheck.additionalInfo,\n startupTimestamp: new Date().toISOString(),\n appVersion: process.env.APP_VERSION || \"REPLACE_ME\",\n details: healthCheck.details || [],\n }\n\n this.cache.put(\n this.healthCheckCacheKey,\n value,\n this.healthCheckCacheTimeout,\n )\n }\n\n response.status(this.healthCheckStatusCodes[value.healthStatus]).json(value)\n }\n\n async handleServeHtml(\n request: Request,\n response: Response,\n { getRenderAndTemplate, onServeError }: Setup,\n ): Promise<void> {\n try {\n const path = request.originalUrl.replace(this.base, \"\")\n\n const [render, template] = await getRenderAndTemplate(path)\n\n const rendered = await render(path)\n\n const html = template\n .replace(`<!--app-head-->`, rendered.head ?? \"\")\n .replace(`<!--app-html-->`, rendered.html ?? \"\")\n\n response.status(200).set({ \"Content-Type\": \"text/html\" }).send(html)\n } catch (error) {\n if (error instanceof Error) {\n console.error(error.stack)\n const body = onServeError(error)\n response.status(500).end(body)\n }\n }\n }\n\n // @ts-expect-error unused var\n handleChromeDevTools(request: Request, response: Response) {\n if (this.envIsProduction) {\n response.status(404).json({})\n } else {\n const localWorkspacePath = process.env.LOCAL_WORKSPACE_PATH\n\n let code: number\n let body: object\n if (localWorkspacePath) {\n code = 200\n body = {\n workspace: {\n uuid: this.devtoolsWorkspaceUUID,\n root: localWorkspacePath,\n },\n }\n } else {\n code = 404\n body = { error: \"Local workspace path not configured.\" }\n }\n\n response.status(code).json(body)\n }\n }\n\n async setUpProduction(): Promise<Setup> {\n const compression = (await import(\"compression\")).default\n const sirv = (await import(\"sirv\")).default\n\n this.templateHtml = await fs.readFile(\"./dist/client/index.html\", \"utf-8\")\n\n this.app.use(compression())\n this.app.use(this.base, sirv(\"./dist/client\", { extensions: [] }))\n\n return {\n getRenderAndTemplate: async () => {\n const render = (\n (await import(\n // @ts-expect-error only present after building installing app.\n \"../../../dist/server/entry-server.js\"\n )) as EntryModule\n ).render\n\n // Use cached template.\n const template = this.templateHtml\n\n return [render, template]\n },\n onServeError: () => undefined,\n }\n }\n\n async setUpDevelopment(): Promise<Setup> {\n const { createServer } = await import(\"vite\")\n\n const vite = await createServer({\n configFile: \"/workspace/frontend/vite.config.ts\",\n server: {\n middlewareMode: true,\n hmr: { server: this.server },\n },\n appType: \"custom\",\n base: this.base,\n mode: this.mode,\n })\n\n this.app.use(vite.middlewares)\n\n return {\n getRenderAndTemplate: async path => {\n const render = (\n (await vite.ssrLoadModule(\"/src/entry-server.tsx\")) as EntryModule\n ).render\n\n // Always read fresh template.\n let template = await fs.readFile(\"./index.html\", \"utf-8\")\n template = await vite.transformIndexHtml(path, template)\n\n return [render, template]\n },\n onServeError: error => {\n vite.ssrFixStacktrace(error)\n return error.stack\n },\n }\n }\n\n async run() {\n const setup = this.envIsProduction\n ? await this.setUpProduction()\n : await this.setUpDevelopment()\n\n this.app.get(\"/health-check\", (request, response) => {\n this.handleHealthCheck(request, response)\n })\n\n this.app.get(\n \"/.well-known/appspecific/com.chrome.devtools.json\",\n (request, response) => {\n this.handleChromeDevTools(request, response)\n },\n )\n\n this.app.get(\"*\", async (request, response) => {\n await this.handleServeHtml(request, response, setup)\n })\n\n this.server.listen(this.port, this.hostname, () => {\n let startMessage =\n \"Server started.\\n\" +\n `url: http://${this.hostname}:${this.port}\\n` +\n `environment: ${process.env.NODE_ENV}\\n`\n\n if (!this.envIsProduction) startMessage += `mode: ${this.mode}\\n`\n\n console.log(startMessage)\n })\n }\n}\n"],"names":["Server","mode","port","base","express","http","Cache","randomUUID","request","response","value","healthCheck","getRenderAndTemplate","onServeError","path","render","template","rendered","html","error","body","localWorkspacePath","code","compression","sirv","fs","createServer","vite","setup","startMessage"],"mappings":"+rBA6DA,MAAqBA,CAAO,CAC1B,gBACA,aACA,SACA,KACA,KACA,KACA,IACA,OACA,MACA,oBACA,wBACA,uBACA,sBAEA,YAAY,CAAE,KAAAC,EAAM,KAAAC,EAAM,KAAAC,CAAA,EAAkB,CAAA,EAAI,CAC9C,KAAK,gBAAkB,QAAQ,IAAI,WAAa,aAChD,KAAK,aAAe,GACpB,KAAK,SAAW,KAAK,gBAAkB,UAAY,YAEnD,KAAK,KAAOF,GAAS,QAAQ,IAAI,MAAiB,cAClD,KAAK,KACHC,IACC,QAAQ,IAAI,KACT,OAAO,QAAQ,IAAI,IAAI,EACvB,KAAK,gBACH,KACA,MACR,KAAK,KAAOC,GAAQ,QAAQ,IAAI,MAAQ,GAExC,KAAK,IAAMC,EAAA,EACX,KAAK,OAASC,EAAK,aAAa,KAAK,GAAG,EACxC,KAAK,MAAQ,IAAIC,QAEjB,KAAK,oBAAsB,eAC3B,KAAK,wBAA0B,IAC/B,KAAK,uBAAyB,CAE5B,QAAS,IAMT,WAAY,IAKZ,aAAc,IAEd,UAAW,IAEX,QAAS,GAAA,EAGX,KAAK,sBAAwBC,aAAA,CAC/B,CAIA,eAAeC,EAA+B,CAC5C,MAAO,CACL,aAAc,UACd,eAAgB,cAAA,CAEpB,CAEA,kBAAkBA,EAAkBC,EAA0B,CAC5D,IAAIC,EAA6B,KAAK,MAAM,IAC1C,KAAK,mBAAA,EAEP,GAAIA,IAAU,KAAM,CAClB,MAAMC,EAAc,KAAK,eAAeH,CAAO,EAE3CG,EAAY,eAAiB,WAC/B,QAAQ,KAAK,iBAAiB,KAAK,UAAUA,CAAW,CAAC,EAAE,EAG7DD,EAAQ,CACN,MAAO,QAAQ,IAAI,QAAU,aAC7B,aAAcC,EAAY,aAC1B,qBAAsB,IAAI,KAAA,EAAO,YAAA,EACjC,sBAAuBA,EAAY,eACnC,iBAAkB,IAAI,KAAA,EAAO,YAAA,EAC7B,WAAY,QAAQ,IAAI,aAAe,aACvC,QAASA,EAAY,SAAW,CAAA,CAAC,EAGnC,KAAK,MAAM,IACT,KAAK,oBACLD,EACA,KAAK,uBAAA,CAET,CAEAD,EAAS,OAAO,KAAK,uBAAuBC,EAAM,YAAY,CAAC,EAAE,KAAKA,CAAK,CAC7E,CAEA,MAAM,gBACJF,EACAC,EACA,CAAE,qBAAAG,EAAsB,aAAAC,GACT,CACf,GAAI,CACF,MAAMC,EAAON,EAAQ,YAAY,QAAQ,KAAK,KAAM,EAAE,EAEhD,CAACO,EAAQC,CAAQ,EAAI,MAAMJ,EAAqBE,CAAI,EAEpDG,EAAW,MAAMF,EAAOD,CAAI,EAE5BI,EAAOF,EACV,QAAQ,kBAAmBC,EAAS,MAAQ,EAAE,EAC9C,QAAQ,kBAAmBA,EAAS,MAAQ,EAAE,EAEjDR,EAAS,OAAO,GAAG,EAAE,IAAI,CAAE,eAAgB,WAAA,CAAa,EAAE,KAAKS,CAAI,CACrE,OAASC,EAAO,CACd,GAAIA,aAAiB,MAAO,CAC1B,QAAQ,MAAMA,EAAM,KAAK,EACzB,MAAMC,EAAOP,EAAaM,CAAK,EAC/BV,EAAS,OAAO,GAAG,EAAE,IAAIW,CAAI,CAC/B,CACF,CACF,CAGA,qBAAqBZ,EAAkBC,EAAoB,CACzD,GAAI,KAAK,gBACPA,EAAS,OAAO,GAAG,EAAE,KAAK,CAAA,CAAE,MACvB,CACL,MAAMY,EAAqB,QAAQ,IAAI,qBAEvC,IAAIC,EACAF,EACAC,GACFC,EAAO,IACPF,EAAO,CACL,UAAW,CACT,KAAM,KAAK,sBACX,KAAMC,CAAA,CACR,IAGFC,EAAO,IACPF,EAAO,CAAE,MAAO,sCAAA,GAGlBX,EAAS,OAAOa,CAAI,EAAE,KAAKF,CAAI,CACjC,CACF,CAEA,MAAM,iBAAkC,CACtC,MAAMG,GAAe,KAAM,QAAO,aAAa,GAAG,QAC5CC,GAAQ,KAAM,QAAO,MAAM,GAAG,QAEpC,YAAK,aAAe,MAAMC,EAAG,SAAS,2BAA4B,OAAO,EAEzE,KAAK,IAAI,IAAIF,GAAa,EAC1B,KAAK,IAAI,IAAI,KAAK,KAAMC,EAAK,gBAAiB,CAAE,WAAY,CAAA,CAAC,CAAG,CAAC,EAE1D,CACL,qBAAsB,SAAY,CAChC,MAAMT,GACH,KAAM,QAEL,sCAAA,GAEF,OAGIC,EAAW,KAAK,aAEtB,MAAO,CAACD,EAAQC,CAAQ,CAC1B,EACA,aAAc,IAAA,EAAM,CAExB,CAEA,MAAM,kBAAmC,CACvC,KAAM,CAAE,aAAAU,CAAA,EAAiB,KAAM,QAAO,MAAM,EAEtCC,EAAO,MAAMD,EAAa,CAC9B,WAAY,qCACZ,OAAQ,CACN,eAAgB,GAChB,IAAK,CAAE,OAAQ,KAAK,MAAA,CAAO,EAE7B,QAAS,SACT,KAAM,KAAK,KACX,KAAM,KAAK,IAAA,CACZ,EAED,YAAK,IAAI,IAAIC,EAAK,WAAW,EAEtB,CACL,qBAAsB,MAAMb,GAAQ,CAClC,MAAMC,GACH,MAAMY,EAAK,cAAc,uBAAuB,GACjD,OAGF,IAAIX,EAAW,MAAMS,EAAG,SAAS,eAAgB,OAAO,EACxD,OAAAT,EAAW,MAAMW,EAAK,mBAAmBb,EAAME,CAAQ,EAEhD,CAACD,EAAQC,CAAQ,CAC1B,EACA,aAAcG,IACZQ,EAAK,iBAAiBR,CAAK,EACpBA,EAAM,MACf,CAEJ,CAEA,MAAM,KAAM,CACV,MAAMS,EAAQ,KAAK,gBACf,MAAM,KAAK,gBAAA,EACX,MAAM,KAAK,iBAAA,EAEf,KAAK,IAAI,IAAI,gBAAiB,CAACpB,EAASC,IAAa,CACnD,KAAK,kBAAkBD,EAASC,CAAQ,CAC1C,CAAC,EAED,KAAK,IAAI,IACP,oDACA,CAACD,EAASC,IAAa,CACrB,KAAK,qBAAqBD,EAASC,CAAQ,CAC7C,CAAA,EAGF,KAAK,IAAI,IAAI,IAAK,MAAOD,EAASC,IAAa,CAC7C,MAAM,KAAK,gBAAgBD,EAASC,EAAUmB,CAAK,CACrD,CAAC,EAED,KAAK,OAAO,OAAO,KAAK,KAAM,KAAK,SAAU,IAAM,CACjD,IAAIC,EACF;AAAA,cACe,KAAK,QAAQ,IAAI,KAAK,IAAI;AAAA,eACzB,QAAQ,IAAI,QAAQ;AAAA,EAEjC,KAAK,kBAAiBA,GAAgB,SAAS,KAAK,IAAI;AAAA,GAE7D,QAAQ,IAAIA,CAAY,CAC1B,CAAC,CACH,CACF"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * © Ocado Group
3
+ * Created on 20/10/2025 at 15:27:12(+01:00).
4
+ */
5
+ export { default as Server } from './server';
6
+ export { default as App, type AppProps } from './App';
@@ -3,6 +3,7 @@ import { randomUUID as p } from "node:crypto";
3
3
  import d from "express";
4
4
  import i from "node:fs/promises";
5
5
  import m from "node:http";
6
+ import { A as P } from "../App-3VkR-ZEZ.js";
6
7
  class S {
7
8
  envIsProduction;
8
9
  templateHtml;
@@ -17,8 +18,8 @@ class S {
17
18
  healthCheckCacheTimeout;
18
19
  healthCheckStatusCodes;
19
20
  devtoolsWorkspaceUUID;
20
- constructor({ mode: h, port: e, base: t } = {}) {
21
- this.envIsProduction = process.env.NODE_ENV === "production", this.templateHtml = "", this.hostname = this.envIsProduction ? "0.0.0.0" : "127.0.0.1", this.mode = h || process.env.MODE || "development", this.port = e || (process.env.PORT ? Number(process.env.PORT) : this.envIsProduction ? 8080 : 5173), this.base = t || process.env.BASE || "/", this.app = d(), this.server = m.createServer(this.app), this.cache = new l(), this.healthCheckCacheKey = "health-check", this.healthCheckCacheTimeout = 3e4, this.healthCheckStatusCodes = {
21
+ constructor({ mode: o, port: e, base: t } = {}) {
22
+ this.envIsProduction = process.env.NODE_ENV === "production", this.templateHtml = "", this.hostname = this.envIsProduction ? "0.0.0.0" : "127.0.0.1", this.mode = o || process.env.MODE || "development", this.port = e || (process.env.PORT ? Number(process.env.PORT) : this.envIsProduction ? 8080 : 5173), this.base = t || process.env.BASE || "", this.app = d(), this.server = m.createServer(this.app), this.cache = new l(), this.healthCheckCacheKey = "health-check", this.healthCheckCacheTimeout = 3e4, this.healthCheckStatusCodes = {
22
23
  // The app is running normally.
23
24
  healthy: 200,
24
25
  // The app is performing app-specific initialisation which must
@@ -40,18 +41,18 @@ class S {
40
41
  }
41
42
  // @ts-expect-error unused var
42
43
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
43
- getHealthCheck(h) {
44
+ getHealthCheck(o) {
44
45
  return {
45
46
  healthStatus: "healthy",
46
47
  additionalInfo: "All healthy."
47
48
  };
48
49
  }
49
- handleHealthCheck(h, e) {
50
+ handleHealthCheck(o, e) {
50
51
  let t = this.cache.get(
51
52
  this.healthCheckCacheKey
52
53
  );
53
54
  if (t === null) {
54
- const s = this.getHealthCheck(h);
55
+ const s = this.getHealthCheck(o);
55
56
  s.healthStatus !== "healthy" && console.warn(`health check: ${JSON.stringify(s)}`), t = {
56
57
  appId: process.env.APP_ID || "REPLACE_ME",
57
58
  healthStatus: s.healthStatus,
@@ -68,20 +69,20 @@ class S {
68
69
  }
69
70
  e.status(this.healthCheckStatusCodes[t.healthStatus]).json(t);
70
71
  }
71
- async handleServeHtml(h, e, { getRenderAndTemplate: t, onServeError: s }) {
72
+ async handleServeHtml(o, e, { getRenderAndTemplate: t, onServeError: s }) {
72
73
  try {
73
- const a = h.originalUrl.replace(this.base, ""), [o, n] = await t(a), r = await o(a), c = n.replace("<!--app-head-->", r.head ?? "").replace("<!--app-html-->", r.html ?? "");
74
+ const a = o.originalUrl.replace(this.base, ""), [h, n] = await t(a), r = await h(a), c = n.replace("<!--app-head-->", r.head ?? "").replace("<!--app-html-->", r.html ?? "");
74
75
  e.status(200).set({ "Content-Type": "text/html" }).send(c);
75
76
  } catch (a) {
76
77
  if (a instanceof Error) {
77
78
  console.error(a.stack);
78
- const o = s(a);
79
- e.status(500).end(o);
79
+ const h = s(a);
80
+ e.status(500).end(h);
80
81
  }
81
82
  }
82
83
  }
83
84
  // @ts-expect-error unused var
84
- handleChromeDevTools(h, e) {
85
+ handleChromeDevTools(o, e) {
85
86
  if (this.envIsProduction)
86
87
  e.status(404).json({});
87
88
  else {
@@ -96,8 +97,8 @@ class S {
96
97
  }
97
98
  }
98
99
  async setUpProduction() {
99
- const h = (await import("compression")).default, e = (await import("sirv")).default;
100
- return this.templateHtml = await i.readFile("./dist/client/index.html", "utf-8"), this.app.use(h()), this.app.use(this.base, e("./dist/client", { extensions: [] })), {
100
+ const o = (await import("compression")).default, e = (await import("sirv")).default;
101
+ return this.templateHtml = await i.readFile("./dist/client/index.html", "utf-8"), this.app.use(o()), this.app.use(this.base, e("./dist/client", { extensions: [] })), {
101
102
  getRenderAndTemplate: async () => {
102
103
  const t = (await import(
103
104
  // @ts-expect-error only present after building installing app.
@@ -110,7 +111,7 @@ class S {
110
111
  };
111
112
  }
112
113
  async setUpDevelopment() {
113
- const { createServer: h } = await import("vite"), e = await h({
114
+ const { createServer: o } = await import("vite"), e = await o({
114
115
  configFile: "/workspace/frontend/vite.config.ts",
115
116
  server: {
116
117
  middlewareMode: !0,
@@ -130,7 +131,7 @@ class S {
130
131
  };
131
132
  }
132
133
  async run() {
133
- const h = this.envIsProduction ? await this.setUpProduction() : await this.setUpDevelopment();
134
+ const o = this.envIsProduction ? await this.setUpProduction() : await this.setUpDevelopment();
134
135
  this.app.get("/health-check", (e, t) => {
135
136
  this.handleHealthCheck(e, t);
136
137
  }), this.app.get(
@@ -139,7 +140,7 @@ class S {
139
140
  this.handleChromeDevTools(e, t);
140
141
  }
141
142
  ), this.app.get("*", async (e, t) => {
142
- await this.handleServeHtml(e, t, h);
143
+ await this.handleServeHtml(e, t, o);
143
144
  }), this.server.listen(this.port, this.hostname, () => {
144
145
  let e = `Server started.
145
146
  url: http://${this.hostname}:${this.port}
@@ -151,6 +152,7 @@ environment: ${process.env.NODE_ENV}
151
152
  }
152
153
  }
153
154
  export {
154
- S as default
155
+ P as App,
156
+ S as Server
155
157
  };
156
- //# sourceMappingURL=server.es.js.map
158
+ //# sourceMappingURL=index.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.js","sources":["../../src/server/server.ts"],"sourcesContent":["/**\n * © Ocado Group\n * Created on 13/12/2024 at 12:15:05(+00:00).\n *\n * A server for an app in a live environment.\n * Based off: https://github.com/bluwy/create-vite-extra/blob/master/template-ssr-react-ts/server.js\n */\n\nimport { Cache, type CacheClass } from \"memory-cache\"\nimport { type UUID, randomUUID } from \"node:crypto\"\nimport express, { type Express, type Request, type Response } from \"express\"\nimport fs from \"node:fs/promises\"\nimport http from \"node:http\"\n\ntype Mode = \"development\" | \"staging\" | \"production\"\ntype Options = Partial<{\n mode: Mode\n port: number\n base: string\n}>\n\ntype HealthStatus =\n | \"healthy\"\n | \"startingUp\"\n | \"shuttingDown\"\n | \"unhealthy\"\n | \"unknown\"\ntype HealthCheck = {\n healthStatus: HealthStatus\n additionalInfo: string\n details?: Array<{\n name: string\n description: string\n health: HealthStatus\n }>\n}\ntype HealthCheckResponse = {\n appId: string\n healthStatus: HealthStatus\n lastCheckedTimestamp: string\n additionalInformation: string\n startupTimestamp: string\n appVersion: string\n details: Array<{\n name: string\n description: string\n health: HealthStatus\n }>\n}\n\ntype Render = (path: string) => Promise<{ head?: string; html?: string }>\ntype EntryModule = { render: Render }\ntype RenderAndTemplate = [Render, string]\ntype GetRenderAndTemplate = (path: string) => Promise<RenderAndTemplate>\ntype OnServeError = (error: Error) => string | undefined\n\ntype Setup = {\n getRenderAndTemplate: GetRenderAndTemplate\n onServeError: OnServeError\n}\n\nexport default class Server {\n envIsProduction: boolean\n templateHtml: string\n hostname: string\n mode: Mode\n port: number\n base: string\n app: Express\n server: http.Server<typeof http.IncomingMessage, typeof http.ServerResponse>\n cache: CacheClass<string, any>\n healthCheckCacheKey: string\n healthCheckCacheTimeout: number\n healthCheckStatusCodes: Record<HealthStatus, number>\n devtoolsWorkspaceUUID: UUID\n\n constructor({ mode, port, base }: Options = {}) {\n this.envIsProduction = process.env.NODE_ENV === \"production\"\n this.templateHtml = \"\"\n this.hostname = this.envIsProduction ? \"0.0.0.0\" : \"127.0.0.1\"\n\n this.mode = mode || (process.env.MODE as Mode) || \"development\"\n this.port =\n port ||\n (process.env.PORT\n ? Number(process.env.PORT)\n : this.envIsProduction\n ? 8080\n : 5173)\n this.base = base || process.env.BASE || \"\"\n\n this.app = express()\n this.server = http.createServer(this.app)\n this.cache = new Cache()\n\n this.healthCheckCacheKey = \"health-check\"\n this.healthCheckCacheTimeout = 30000\n this.healthCheckStatusCodes = {\n // The app is running normally.\n healthy: 200,\n // The app is performing app-specific initialisation which must\n // complete before it will serve normal application requests\n // (perhaps the app is warming a cache or something similar). You\n // only need to use this status if your app will be in a start-up\n // mode for a prolonged period of time.\n startingUp: 503,\n // The app is shutting down. As with startingUp, you only need to\n // use this status if your app takes a prolonged amount of time\n // to shutdown, perhaps because it waits for a long-running\n // process to complete before shutting down.\n shuttingDown: 503,\n // The app is not running normally.\n unhealthy: 503,\n // The app is not able to report its own state.\n unknown: 503,\n }\n\n this.devtoolsWorkspaceUUID = randomUUID()\n }\n\n // @ts-expect-error unused var\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getHealthCheck(request: Request): HealthCheck {\n return {\n healthStatus: \"healthy\",\n additionalInfo: \"All healthy.\",\n }\n }\n\n handleHealthCheck(request: Request, response: Response): void {\n let value: HealthCheckResponse = this.cache.get(\n this.healthCheckCacheKey,\n ) as HealthCheckResponse\n if (value === null) {\n const healthCheck = this.getHealthCheck(request)\n\n if (healthCheck.healthStatus !== \"healthy\") {\n console.warn(`health check: ${JSON.stringify(healthCheck)}`)\n }\n\n value = {\n appId: process.env.APP_ID || \"REPLACE_ME\",\n healthStatus: healthCheck.healthStatus,\n lastCheckedTimestamp: new Date().toISOString(),\n additionalInformation: healthCheck.additionalInfo,\n startupTimestamp: new Date().toISOString(),\n appVersion: process.env.APP_VERSION || \"REPLACE_ME\",\n details: healthCheck.details || [],\n }\n\n this.cache.put(\n this.healthCheckCacheKey,\n value,\n this.healthCheckCacheTimeout,\n )\n }\n\n response.status(this.healthCheckStatusCodes[value.healthStatus]).json(value)\n }\n\n async handleServeHtml(\n request: Request,\n response: Response,\n { getRenderAndTemplate, onServeError }: Setup,\n ): Promise<void> {\n try {\n const path = request.originalUrl.replace(this.base, \"\")\n\n const [render, template] = await getRenderAndTemplate(path)\n\n const rendered = await render(path)\n\n const html = template\n .replace(`<!--app-head-->`, rendered.head ?? \"\")\n .replace(`<!--app-html-->`, rendered.html ?? \"\")\n\n response.status(200).set({ \"Content-Type\": \"text/html\" }).send(html)\n } catch (error) {\n if (error instanceof Error) {\n console.error(error.stack)\n const body = onServeError(error)\n response.status(500).end(body)\n }\n }\n }\n\n // @ts-expect-error unused var\n handleChromeDevTools(request: Request, response: Response) {\n if (this.envIsProduction) {\n response.status(404).json({})\n } else {\n const localWorkspacePath = process.env.LOCAL_WORKSPACE_PATH\n\n let code: number\n let body: object\n if (localWorkspacePath) {\n code = 200\n body = {\n workspace: {\n uuid: this.devtoolsWorkspaceUUID,\n root: localWorkspacePath,\n },\n }\n } else {\n code = 404\n body = { error: \"Local workspace path not configured.\" }\n }\n\n response.status(code).json(body)\n }\n }\n\n async setUpProduction(): Promise<Setup> {\n const compression = (await import(\"compression\")).default\n const sirv = (await import(\"sirv\")).default\n\n this.templateHtml = await fs.readFile(\"./dist/client/index.html\", \"utf-8\")\n\n this.app.use(compression())\n this.app.use(this.base, sirv(\"./dist/client\", { extensions: [] }))\n\n return {\n getRenderAndTemplate: async () => {\n const render = (\n (await import(\n // @ts-expect-error only present after building installing app.\n \"../../../dist/server/entry-server.js\"\n )) as EntryModule\n ).render\n\n // Use cached template.\n const template = this.templateHtml\n\n return [render, template]\n },\n onServeError: () => undefined,\n }\n }\n\n async setUpDevelopment(): Promise<Setup> {\n const { createServer } = await import(\"vite\")\n\n const vite = await createServer({\n configFile: \"/workspace/frontend/vite.config.ts\",\n server: {\n middlewareMode: true,\n hmr: { server: this.server },\n },\n appType: \"custom\",\n base: this.base,\n mode: this.mode,\n })\n\n this.app.use(vite.middlewares)\n\n return {\n getRenderAndTemplate: async path => {\n const render = (\n (await vite.ssrLoadModule(\"/src/entry-server.tsx\")) as EntryModule\n ).render\n\n // Always read fresh template.\n let template = await fs.readFile(\"./index.html\", \"utf-8\")\n template = await vite.transformIndexHtml(path, template)\n\n return [render, template]\n },\n onServeError: error => {\n vite.ssrFixStacktrace(error)\n return error.stack\n },\n }\n }\n\n async run() {\n const setup = this.envIsProduction\n ? await this.setUpProduction()\n : await this.setUpDevelopment()\n\n this.app.get(\"/health-check\", (request, response) => {\n this.handleHealthCheck(request, response)\n })\n\n this.app.get(\n \"/.well-known/appspecific/com.chrome.devtools.json\",\n (request, response) => {\n this.handleChromeDevTools(request, response)\n },\n )\n\n this.app.get(\"*\", async (request, response) => {\n await this.handleServeHtml(request, response, setup)\n })\n\n this.server.listen(this.port, this.hostname, () => {\n let startMessage =\n \"Server started.\\n\" +\n `url: http://${this.hostname}:${this.port}\\n` +\n `environment: ${process.env.NODE_ENV}\\n`\n\n if (!this.envIsProduction) startMessage += `mode: ${this.mode}\\n`\n\n console.log(startMessage)\n })\n }\n}\n"],"names":["Server","mode","port","base","express","http","Cache","randomUUID","request","response","value","healthCheck","getRenderAndTemplate","onServeError","path","render","template","rendered","html","error","body","localWorkspacePath","code","compression","sirv","fs","createServer","vite","setup","startMessage"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o={},E=o,t=E.VITE_SERVICE_NAME??"REPLACE_ME",O=E.VITE_SERVICE_API_URL??"http://localhost:8000",s=`${t}_csrftoken`,n=E.VITE_SESSION_COOKIE_NAME??"session_key",A=E.VITE_SESSION_METADATA_COOKIE_NAME??"session_metadata",I={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1},_=I,R=_.MODE,c=_.BASE_URL,M=_.PROD,D=_.DEV,C=_.SSR,N={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1},V=new Proxy(N,{get:(S,e)=>S[`VITE_${e}`]});exports.BASE_URL=c;exports.CSRF_COOKIE_NAME=s;exports.DEV=D;exports.MODE=R;exports.PROD=M;exports.SERVICE_API_URL=O;exports.SERVICE_NAME=t;exports.SESSION_COOKIE_NAME=n;exports.SESSION_METADATA_COOKIE_NAME=A;exports.SSR=C;exports.default=V;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o={},_=o,t=_.VITE_SERVICE_NAME??"REPLACE_ME",O=_.VITE_SERVICE_API_URL??"http://localhost:8000",s=`${t}_csrftoken`,n=_.VITE_SESSION_COOKIE_NAME??"session_key",A=_.VITE_SESSION_METADATA_COOKIE_NAME??"session_metadata",I={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1},E=I,R=E.MODE,c=E.BASE_URL,M=E.PROD,D=E.DEV,C=E.SSR,N={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1},V=new Proxy(N,{get:(S,e)=>S[`VITE_${e}`]});exports.BASE_URL=c;exports.CSRF_COOKIE_NAME=s;exports.DEV=D;exports.MODE=R;exports.PROD=M;exports.SERVICE_API_URL=O;exports.SERVICE_NAME=t;exports.SESSION_COOKIE_NAME=n;exports.SESSION_METADATA_COOKIE_NAME=A;exports.SSR=C;exports.vite=V;
2
2
  //# sourceMappingURL=index.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../../src/settings/custom.ts","../../src/settings/vite.ts","../../src/settings/index.ts"],"sourcesContent":["/**\n * This file contains all of our custom settings we define for our own purposes.\n *\n * This file is based on:\n * https://github.com/ocadotechnology/codeforlife-package-python/blob/main/codeforlife/settings/custom.py\n */\n\n// Shorthand to access environment variables.\nconst env = import.meta.env as Record<string, string | undefined>\n\n// The name of the current service.\nexport const SERVICE_NAME = env.VITE_SERVICE_NAME ?? \"REPLACE_ME\"\n\n// The api url of the current service.\nexport const SERVICE_API_URL =\n env.VITE_SERVICE_API_URL ?? \"http://localhost:8000\"\n\n// The names of cookies.\nexport const CSRF_COOKIE_NAME = `${SERVICE_NAME}_csrftoken`\nexport const SESSION_COOKIE_NAME = env.VITE_SESSION_COOKIE_NAME ?? \"session_key\"\nexport const SESSION_METADATA_COOKIE_NAME =\n env.VITE_SESSION_METADATA_COOKIE_NAME ?? \"session_metadata\"\n","/**\n * This file contains all of vite's environment variables.\n *\n * https://vite.dev/guide/env-and-mode#env-variables\n */\n\n// Shorthand to access environment variables.\nconst env = import.meta.env\n\n// The mode the app is running in.\nexport const MODE = env.MODE\n\n// The base url the app is being served from.\n// This is determined by the base config option.\nexport const BASE_URL = env.BASE_URL\n\n// Whether the app is running in production (running the dev server with\n// NODE_ENV='production' or running an app built with NODE_ENV='production').\nexport const PROD = env.PROD\n\n// Whether the app is running in development (always the opposite of\n// import.meta.env.PROD)\nexport const DEV = env.DEV\n\n// Whether the app is running in the server.\nexport const SSR = env.SSR\n","// Shorthand to access environment variables.\nexport default new Proxy(import.meta.env, {\n get: (target, name: string) => target[`VITE_${name}`] as string,\n}) as Record<string, string>\n\nexport * from \"./custom\"\nexport * from \"./vite\"\n"],"names":["env","__vite_import_meta_env__","SERVICE_NAME","SERVICE_API_URL","CSRF_COOKIE_NAME","SESSION_COOKIE_NAME","SESSION_METADATA_COOKIE_NAME","MODE","BASE_URL","PROD","DEV","SSR","index","target","name"],"mappings":"uHAQMA,EAAMC,EAGCC,EAAeF,EAAI,mBAAqB,aAGxCG,EACXH,EAAI,sBAAwB,wBAGjBI,EAAmB,GAAGF,CAAY,aAClCG,EAAsBL,EAAI,0BAA4B,cACtDM,EACXN,EAAI,mCAAqC,4ECdrCA,EAAMC,EAGCM,EAAOP,EAAI,KAIXQ,EAAWR,EAAI,SAIfS,EAAOT,EAAI,KAIXU,EAAMV,EAAI,IAGVW,EAAMX,EAAI,6DCxBvBY,EAAe,IAAI,MAAMX,EAAiB,CACxC,IAAK,CAACY,EAAQC,IAAiBD,EAAO,QAAQC,CAAI,EAAE,CACtD,CAAC"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../../src/settings/custom.ts","../../src/settings/vite.ts","../../src/settings/index.ts"],"sourcesContent":["/**\n * This file contains all of our custom settings we define for our own purposes.\n *\n * This file is based on:\n * https://github.com/ocadotechnology/codeforlife-package-python/blob/main/codeforlife/settings/custom.py\n */\n\n// Shorthand to access environment variables.\nconst env = import.meta.env as Record<string, string | undefined>\n\n// The name of the current service.\nexport const SERVICE_NAME = env.VITE_SERVICE_NAME ?? \"REPLACE_ME\"\n\n// The api url of the current service.\nexport const SERVICE_API_URL =\n env.VITE_SERVICE_API_URL ?? \"http://localhost:8000\"\n\n// The names of cookies.\nexport const CSRF_COOKIE_NAME = `${SERVICE_NAME}_csrftoken`\nexport const SESSION_COOKIE_NAME = env.VITE_SESSION_COOKIE_NAME ?? \"session_key\"\nexport const SESSION_METADATA_COOKIE_NAME =\n env.VITE_SESSION_METADATA_COOKIE_NAME ?? \"session_metadata\"\n","/**\n * This file contains all of vite's environment variables.\n *\n * https://vite.dev/guide/env-and-mode#env-variables\n */\n\n// Shorthand to access environment variables.\nconst env = import.meta.env\n\n// The mode the app is running in.\nexport const MODE = env.MODE\n\n// The base url the app is being served from.\n// This is determined by the base config option.\nexport const BASE_URL = env.BASE_URL\n\n// Whether the app is running in production (running the dev server with\n// NODE_ENV='production' or running an app built with NODE_ENV='production').\nexport const PROD = env.PROD\n\n// Whether the app is running in development (always the opposite of\n// import.meta.env.PROD)\nexport const DEV = env.DEV\n\n// Whether the app is running in the server.\nexport const SSR = env.SSR\n","// Shorthand to access environment variables.\nexport const vite = new Proxy(import.meta.env, {\n get: (target, name: string) => target[`VITE_${name}`] as string,\n}) as Record<string, string>\n\nexport * from \"./custom\"\nexport * from \"./vite\"\n"],"names":["env","__vite_import_meta_env__","SERVICE_NAME","SERVICE_API_URL","CSRF_COOKIE_NAME","SESSION_COOKIE_NAME","SESSION_METADATA_COOKIE_NAME","MODE","BASE_URL","PROD","DEV","SSR","vite","target","name"],"mappings":"2FAQMA,EAAMC,EAGCC,EAAeF,EAAI,mBAAqB,aAGxCG,EACXH,EAAI,sBAAwB,wBAGjBI,EAAmB,GAAGF,CAAY,aAClCG,EAAsBL,EAAI,0BAA4B,cACtDM,EACXN,EAAI,mCAAqC,4ECdrCA,EAAMC,EAGCM,EAAOP,EAAI,KAIXQ,EAAWR,EAAI,SAIfS,EAAOT,EAAI,KAIXU,EAAMV,EAAI,IAGVW,EAAMX,EAAI,6DCxBVY,EAAO,IAAI,MAAMX,EAAiB,CAC7C,IAAK,CAACY,EAAQC,IAAiBD,EAAO,QAAQC,CAAI,EAAE,CACtD,CAAC"}
@@ -1,4 +1,3 @@
1
- declare const _default: Record<string, string>;
2
- export default _default;
1
+ export declare const vite: Record<string, string>;
3
2
  export * from './custom';
4
3
  export * from './vite';
@@ -1,17 +1,17 @@
1
- const s = {}, E = s, S = E.VITE_SERVICE_NAME ?? "REPLACE_ME", O = E.VITE_SERVICE_API_URL ?? "http://localhost:8000", c = `${S}_csrftoken`, A = E.VITE_SESSION_COOKIE_NAME ?? "session_key", I = E.VITE_SESSION_METADATA_COOKIE_NAME ?? "session_metadata", n = { BASE_URL: "/", DEV: !1, MODE: "production", PROD: !0, SSR: !1 }, _ = n, R = _.MODE, D = _.BASE_URL, M = _.PROD, a = _.DEV, V = _.SSR, e = { BASE_URL: "/", DEV: !1, MODE: "production", PROD: !0, SSR: !1 }, i = new Proxy(e, {
1
+ const S = {}, E = S, s = E.VITE_SERVICE_NAME ?? "REPLACE_ME", O = E.VITE_SERVICE_API_URL ?? "http://localhost:8000", c = `${s}_csrftoken`, A = E.VITE_SESSION_COOKIE_NAME ?? "session_key", I = E.VITE_SESSION_METADATA_COOKIE_NAME ?? "session_metadata", n = { BASE_URL: "/", DEV: !1, MODE: "production", PROD: !0, SSR: !1 }, _ = n, R = _.MODE, D = _.BASE_URL, M = _.PROD, V = _.DEV, a = _.SSR, e = { BASE_URL: "/", DEV: !1, MODE: "production", PROD: !0, SSR: !1 }, i = new Proxy(e, {
2
2
  get: (t, o) => t[`VITE_${o}`]
3
3
  });
4
4
  export {
5
5
  D as BASE_URL,
6
6
  c as CSRF_COOKIE_NAME,
7
- a as DEV,
7
+ V as DEV,
8
8
  R as MODE,
9
9
  M as PROD,
10
10
  O as SERVICE_API_URL,
11
- S as SERVICE_NAME,
11
+ s as SERVICE_NAME,
12
12
  A as SESSION_COOKIE_NAME,
13
13
  I as SESSION_METADATA_COOKIE_NAME,
14
- V as SSR,
15
- i as default
14
+ a as SSR,
15
+ i as vite
16
16
  };
17
17
  //# sourceMappingURL=index.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../../src/settings/custom.ts","../../src/settings/vite.ts","../../src/settings/index.ts"],"sourcesContent":["/**\n * This file contains all of our custom settings we define for our own purposes.\n *\n * This file is based on:\n * https://github.com/ocadotechnology/codeforlife-package-python/blob/main/codeforlife/settings/custom.py\n */\n\n// Shorthand to access environment variables.\nconst env = import.meta.env as Record<string, string | undefined>\n\n// The name of the current service.\nexport const SERVICE_NAME = env.VITE_SERVICE_NAME ?? \"REPLACE_ME\"\n\n// The api url of the current service.\nexport const SERVICE_API_URL =\n env.VITE_SERVICE_API_URL ?? \"http://localhost:8000\"\n\n// The names of cookies.\nexport const CSRF_COOKIE_NAME = `${SERVICE_NAME}_csrftoken`\nexport const SESSION_COOKIE_NAME = env.VITE_SESSION_COOKIE_NAME ?? \"session_key\"\nexport const SESSION_METADATA_COOKIE_NAME =\n env.VITE_SESSION_METADATA_COOKIE_NAME ?? \"session_metadata\"\n","/**\n * This file contains all of vite's environment variables.\n *\n * https://vite.dev/guide/env-and-mode#env-variables\n */\n\n// Shorthand to access environment variables.\nconst env = import.meta.env\n\n// The mode the app is running in.\nexport const MODE = env.MODE\n\n// The base url the app is being served from.\n// This is determined by the base config option.\nexport const BASE_URL = env.BASE_URL\n\n// Whether the app is running in production (running the dev server with\n// NODE_ENV='production' or running an app built with NODE_ENV='production').\nexport const PROD = env.PROD\n\n// Whether the app is running in development (always the opposite of\n// import.meta.env.PROD)\nexport const DEV = env.DEV\n\n// Whether the app is running in the server.\nexport const SSR = env.SSR\n","// Shorthand to access environment variables.\nexport default new Proxy(import.meta.env, {\n get: (target, name: string) => target[`VITE_${name}`] as string,\n}) as Record<string, string>\n\nexport * from \"./custom\"\nexport * from \"./vite\"\n"],"names":["env","__vite_import_meta_env__","SERVICE_NAME","SERVICE_API_URL","CSRF_COOKIE_NAME","SESSION_COOKIE_NAME","SESSION_METADATA_COOKIE_NAME","MODE","BASE_URL","PROD","DEV","SSR","index","target","name"],"mappings":"cAQMA,IAAMC,GAGCC,IAAeF,EAAI,qBAAqB,cAGxCG,IACXH,EAAI,wBAAwB,yBAGjBI,IAAmB,GAAGF,CAAY,cAClCG,IAAsBL,EAAI,4BAA4B,eACtDM,IACXN,EAAI,qCAAqC,2FCdrCA,IAAMC,GAGCM,IAAOP,EAAI,MAIXQ,IAAWR,EAAI,UAIfS,IAAOT,EAAI,MAIXU,IAAMV,EAAI,KAGVW,IAAMX,EAAI,4ECxBvBY,IAAe,IAAI,MAAMX,GAAiB;AAAA,EACxC,KAAK,CAACY,GAAQC,MAAiBD,EAAO,QAAQC,CAAI,EAAE;AACtD,CAAC;"}
1
+ {"version":3,"file":"index.es.js","sources":["../../src/settings/custom.ts","../../src/settings/vite.ts","../../src/settings/index.ts"],"sourcesContent":["/**\n * This file contains all of our custom settings we define for our own purposes.\n *\n * This file is based on:\n * https://github.com/ocadotechnology/codeforlife-package-python/blob/main/codeforlife/settings/custom.py\n */\n\n// Shorthand to access environment variables.\nconst env = import.meta.env as Record<string, string | undefined>\n\n// The name of the current service.\nexport const SERVICE_NAME = env.VITE_SERVICE_NAME ?? \"REPLACE_ME\"\n\n// The api url of the current service.\nexport const SERVICE_API_URL =\n env.VITE_SERVICE_API_URL ?? \"http://localhost:8000\"\n\n// The names of cookies.\nexport const CSRF_COOKIE_NAME = `${SERVICE_NAME}_csrftoken`\nexport const SESSION_COOKIE_NAME = env.VITE_SESSION_COOKIE_NAME ?? \"session_key\"\nexport const SESSION_METADATA_COOKIE_NAME =\n env.VITE_SESSION_METADATA_COOKIE_NAME ?? \"session_metadata\"\n","/**\n * This file contains all of vite's environment variables.\n *\n * https://vite.dev/guide/env-and-mode#env-variables\n */\n\n// Shorthand to access environment variables.\nconst env = import.meta.env\n\n// The mode the app is running in.\nexport const MODE = env.MODE\n\n// The base url the app is being served from.\n// This is determined by the base config option.\nexport const BASE_URL = env.BASE_URL\n\n// Whether the app is running in production (running the dev server with\n// NODE_ENV='production' or running an app built with NODE_ENV='production').\nexport const PROD = env.PROD\n\n// Whether the app is running in development (always the opposite of\n// import.meta.env.PROD)\nexport const DEV = env.DEV\n\n// Whether the app is running in the server.\nexport const SSR = env.SSR\n","// Shorthand to access environment variables.\nexport const vite = new Proxy(import.meta.env, {\n get: (target, name: string) => target[`VITE_${name}`] as string,\n}) as Record<string, string>\n\nexport * from \"./custom\"\nexport * from \"./vite\"\n"],"names":["env","__vite_import_meta_env__","SERVICE_NAME","SERVICE_API_URL","CSRF_COOKIE_NAME","SESSION_COOKIE_NAME","SESSION_METADATA_COOKIE_NAME","MODE","BASE_URL","PROD","DEV","SSR","vite","target","name"],"mappings":"cAQMA,IAAMC,GAGCC,IAAeF,EAAI,qBAAqB,cAGxCG,IACXH,EAAI,wBAAwB,yBAGjBI,IAAmB,GAAGF,CAAY,cAClCG,IAAsBL,EAAI,4BAA4B,eACtDM,IACXN,EAAI,qCAAqC,2FCdrCA,IAAMC,GAGCM,IAAOP,EAAI,MAIXQ,IAAWR,EAAI,UAIfS,IAAOT,EAAI,MAIXU,IAAMV,EAAI,KAGVW,IAAMX,EAAI,4ECxBVY,IAAO,IAAI,MAAMX,GAAiB;AAAA,EAC7C,KAAK,CAACY,GAAQC,MAAiBD,EAAO,QAAQC,CAAI,EAAE;AACtD,CAAC;"}
@@ -1,2 +1,2 @@
1
- "use strict";require("@mui/material");const e=require("../../index-CXYppxE3.cjs");module.exports=e.components;
1
+ "use strict";require("@mui/material");const e=require("../../index-B89FjK7v.cjs");module.exports=e.components;
2
2
  //# sourceMappingURL=index.cjs.js.map
@@ -1,5 +1,5 @@
1
1
  import "@mui/material";
2
- import { c as a } from "../../index-D8Gc0IWi.js";
2
+ import { c as a } from "../../index-CHboZsxD.js";
3
3
  export {
4
4
  a as default
5
5
  };
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const i=require("@mui/material"),c=require("../index-CXYppxE3.cjs"),o=require("../palette-BnIdHKDE.cjs"),a=require("../jsx-runtime-Dszzpdy0.cjs"),h=require("@mui/icons-material"),j=({options:t=d,withShapes:x=!1,userType:m,bgcolor:n,children:v,sx:M,...g})=>{let l,p,r;switch(m){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"},u={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,{...u},"MuiTypography")}},MuiFormHelperText:{...t.components?.MuiFormHelperText,styleOverrides:{...t.components?.MuiFormHelperText?.styleOverrides,root:({ownerState:e})=>s(e,{...u},"MuiFormHelperText")}},MuiLink:{...t.components?.MuiLink,styleOverrides:{...t.components?.MuiLink?.styleOverrides,root:({ownerState:e})=>s(e,{...u},"MuiLink")}},MuiButton:{...t.components?.MuiButton,styleOverrides:{...t.components?.MuiButton?.styleOverrides,contained:({ownerState:e})=>s(e,{...m==="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,{...u,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.jsxRuntimeExports.jsx(i.ThemeProvider,{theme:b,children:a.jsxRuntimeExports.jsxs(i.Box,{sx:{...M,...x&&{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:[x&&a.jsxRuntimeExports.jsxs(a.jsxRuntimeExports.Fragment,{children:[a.jsxRuntimeExports.jsx(h.Circle,{color:l,sx:{...y,top:"5%",left:"0%",transform:"translate(-60%, 0%)"}}),a.jsxRuntimeExports.jsx(h.Hexagon,{color:p,sx:{...y,bottom:"5%",right:"0%",transform:"translate(60%, 0%) rotate(90deg)"}})]}),v]})})},d={palette:o.palette,components:c.components,spacing:c.spacing,typography:c.typography},C=i.responsiveFontSizes(i.createTheme(d));exports.colors=o.colors;exports.ThemedBox=j;exports.default=C;exports.themeOptions=d;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("@mui/material"),c=require("../index-B89FjK7v.cjs"),o=require("../palette-BnIdHKDE.cjs"),a=require("../jsx-runtime-B2pbW5Fp.cjs"),h=require("@mui/icons-material"),j=({options:t=x,withShapes:d=!1,userType:u,bgcolor:n,children:v,sx:M,...g})=>{let p,l,r;switch(u){case"teacher":n=n??o.primary[400],p="tertiary",l="secondary",r=o.palette.primary.contrastText;break;case"student":n=n??o.tertiary[500],p="secondary",l="primary",r=o.palette.tertiary.contrastText;break;case"independent":n=n??o.secondary[500],p="primary",l="tertiary",r=o.palette.secondary.contrastText;break}const y={display:{xs:"none",md:"block"},fontSize:"180px",position:"absolute"},m={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,{...m},"MuiTypography")}},MuiFormHelperText:{...t.components?.MuiFormHelperText,styleOverrides:{...t.components?.MuiFormHelperText?.styleOverrides,root:({ownerState:e})=>s(e,{...m},"MuiFormHelperText")}},MuiLink:{...t.components?.MuiLink,styleOverrides:{...t.components?.MuiLink?.styleOverrides,root:({ownerState:e})=>s(e,{...m},"MuiLink")}},MuiButton:{...t.components?.MuiButton,styleOverrides:{...t.components?.MuiButton?.styleOverrides,contained:({ownerState:e})=>s(e,{...u==="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,{...m,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.jsxRuntimeExports.jsx(i.ThemeProvider,{theme:b,children:a.jsxRuntimeExports.jsxs(i.Box,{sx:{...M,...d&&{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:[d&&a.jsxRuntimeExports.jsxs(a.jsxRuntimeExports.Fragment,{children:[a.jsxRuntimeExports.jsx(h.Circle,{color:p,sx:{...y,top:"5%",left:"0%",transform:"translate(-60%, 0%)"}}),a.jsxRuntimeExports.jsx(h.Hexagon,{color:l,sx:{...y,bottom:"5%",right:"0%",transform:"translate(60%, 0%) rotate(90deg)"}})]}),v]})})},x={palette:o.palette,components:c.components,spacing:c.spacing,typography:c.typography},C=i.responsiveFontSizes(i.createTheme(x));exports.colors=o.colors;exports.ThemedBox=j;exports.theme=C;exports.themeOptions=x;
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\nconst theme = responsiveFontSizes(createTheme(themeOptions))\n\nexport default theme\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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"}
@@ -4,5 +4,4 @@ export * from './palette';
4
4
  export * from './ThemedBox';
5
5
  export { default as ThemedBox } from './ThemedBox';
6
6
  export declare const themeOptions: ThemeOptions;
7
- declare const theme: Theme;
8
- export default theme;
7
+ export declare const theme: Theme;
@@ -1,8 +1,8 @@
1
1
  import { responsiveFontSizes as x, createTheme as u, buttonClasses as O, ThemeProvider as C, Box as T } from "@mui/material";
2
- import { g as S, i as j, t as B, s as F, c as I } from "../index-D8Gc0IWi.js";
2
+ import { g as S, i as j, t as B, s as F, c as I } from "../index-CHboZsxD.js";
3
3
  import { s as H, p as m, t as $, a as L } from "../palette-CYwuLBW7.js";
4
4
  import { c as G } from "../palette-CYwuLBW7.js";
5
- import { j as s } from "../jsx-runtime-C7wFtzyj.js";
5
+ import { j as s } from "../jsx-runtime-lzYHhGH3.js";
6
6
  import { Circle as w, Hexagon as z } from "@mui/icons-material";
7
7
  const R = ({
8
8
  options: r = y,
@@ -33,13 +33,13 @@ const R = ({
33
33
  color: o,
34
34
  textDecorationColor: o
35
35
  };
36
- function n(e, b, f, k = "root") {
36
+ function n(e, b, k, f = "root") {
37
37
  return {
38
38
  // Get the original styles.
39
39
  ...S(
40
40
  e,
41
- f,
42
41
  k,
42
+ f,
43
43
  r.components
44
44
  ),
45
45
  // Override styles unless the class name 'no-override' is set.
@@ -218,7 +218,7 @@ const R = ({
218
218
  export {
219
219
  R as ThemedBox,
220
220
  G as colors,
221
- Y as default,
221
+ Y as theme,
222
222
  y as themeOptions
223
223
  };
224
224
  //# sourceMappingURL=index.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.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\nconst theme = responsiveFontSizes(createTheme(themeOptions))\n\nexport default theme\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.es.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,2 +1,2 @@
1
- "use strict";const s=require("./api-CaeeoZaI.cjs"),e={user:s.modelUrls("users/","users/<id>/"),teacher:s.modelUrls("users/teachers/","users/teachers/<id>/"),student:s.modelUrls("users/students/","users/students/<id>/"),school:s.modelUrls("schools/","schools/<id>/"),class:s.modelUrls("classes/","classes/<id>/"),otpBypassToken:s.modelUrls("otp-bypass-tokens/","otp-bypass-tokens/<id>/"),authFactor:s.modelUrls("auth-factors/","auth-factors/<id>/")};exports.urls=e;
2
- //# sourceMappingURL=urls-RtSTEZfW.cjs.map
1
+ "use strict";const s=require("./api-CAH3GT1O.cjs"),e={user:s.modelUrls("users/","users/<id>/"),teacher:s.modelUrls("users/teachers/","users/teachers/<id>/"),student:s.modelUrls("users/students/","users/students/<id>/"),school:s.modelUrls("schools/","schools/<id>/"),class:s.modelUrls("classes/","classes/<id>/"),otpBypassToken:s.modelUrls("otp-bypass-tokens/","otp-bypass-tokens/<id>/"),authFactor:s.modelUrls("auth-factors/","auth-factors/<id>/")};exports.urls=e;
2
+ //# sourceMappingURL=urls-CGZI0f1w.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"urls-RtSTEZfW.cjs","sources":["../src/api/urls.ts"],"sourcesContent":["import { modelUrls } from \"../utils/api\"\n\nconst urls = {\n user: modelUrls(\"users/\", \"users/<id>/\"),\n teacher: modelUrls(\"users/teachers/\", \"users/teachers/<id>/\"),\n student: modelUrls(\"users/students/\", \"users/students/<id>/\"),\n school: modelUrls(\"schools/\", \"schools/<id>/\"),\n class: modelUrls(\"classes/\", \"classes/<id>/\"),\n otpBypassToken: modelUrls(\"otp-bypass-tokens/\", \"otp-bypass-tokens/<id>/\"),\n authFactor: modelUrls(\"auth-factors/\", \"auth-factors/<id>/\"),\n}\n\nexport default urls\n"],"names":["urls","modelUrls"],"mappings":"mDAEMA,EAAO,CACX,KAAMC,EAAAA,UAAU,SAAU,aAAa,EACvC,QAASA,EAAAA,UAAU,kBAAmB,sBAAsB,EAC5D,QAASA,EAAAA,UAAU,kBAAmB,sBAAsB,EAC5D,OAAQA,EAAAA,UAAU,WAAY,eAAe,EAC7C,MAAOA,EAAAA,UAAU,WAAY,eAAe,EAC5C,eAAgBA,EAAAA,UAAU,qBAAsB,yBAAyB,EACzE,WAAYA,EAAAA,UAAU,gBAAiB,oBAAoB,CAC7D"}
1
+ {"version":3,"file":"urls-CGZI0f1w.cjs","sources":["../src/api/urls.ts"],"sourcesContent":["import { modelUrls } from \"../utils/api\"\n\nconst urls = {\n user: modelUrls(\"users/\", \"users/<id>/\"),\n teacher: modelUrls(\"users/teachers/\", \"users/teachers/<id>/\"),\n student: modelUrls(\"users/students/\", \"users/students/<id>/\"),\n school: modelUrls(\"schools/\", \"schools/<id>/\"),\n class: modelUrls(\"classes/\", \"classes/<id>/\"),\n otpBypassToken: modelUrls(\"otp-bypass-tokens/\", \"otp-bypass-tokens/<id>/\"),\n authFactor: modelUrls(\"auth-factors/\", \"auth-factors/<id>/\"),\n}\n\nexport default urls\n"],"names":["urls","modelUrls"],"mappings":"mDAEMA,EAAO,CACX,KAAMC,EAAAA,UAAU,SAAU,aAAa,EACvC,QAASA,EAAAA,UAAU,kBAAmB,sBAAsB,EAC5D,QAASA,EAAAA,UAAU,kBAAmB,sBAAsB,EAC5D,OAAQA,EAAAA,UAAU,WAAY,eAAe,EAC7C,MAAOA,EAAAA,UAAU,WAAY,eAAe,EAC5C,eAAgBA,EAAAA,UAAU,qBAAsB,yBAAyB,EACzE,WAAYA,EAAAA,UAAU,gBAAiB,oBAAoB,CAC7D"}
@@ -1,4 +1,4 @@
1
- import { m as s } from "./api-BvUiTeR7.js";
1
+ import { m as s } from "./api-BFYu8ZvQ.js";
2
2
  const t = {
3
3
  user: s("users/", "users/<id>/"),
4
4
  teacher: s("users/teachers/", "users/teachers/<id>/"),
@@ -11,4 +11,4 @@ const t = {
11
11
  export {
12
12
  t as u
13
13
  };
14
- //# sourceMappingURL=urls-5m9PgoEX.js.map
14
+ //# sourceMappingURL=urls-DP4a8kxP.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"urls-5m9PgoEX.js","sources":["../src/api/urls.ts"],"sourcesContent":["import { modelUrls } from \"../utils/api\"\n\nconst urls = {\n user: modelUrls(\"users/\", \"users/<id>/\"),\n teacher: modelUrls(\"users/teachers/\", \"users/teachers/<id>/\"),\n student: modelUrls(\"users/students/\", \"users/students/<id>/\"),\n school: modelUrls(\"schools/\", \"schools/<id>/\"),\n class: modelUrls(\"classes/\", \"classes/<id>/\"),\n otpBypassToken: modelUrls(\"otp-bypass-tokens/\", \"otp-bypass-tokens/<id>/\"),\n authFactor: modelUrls(\"auth-factors/\", \"auth-factors/<id>/\"),\n}\n\nexport default urls\n"],"names":["urls","modelUrls"],"mappings":";AAEA,MAAMA,IAAO;AAAA,EACX,MAAMC,EAAU,UAAU,aAAa;AAAA,EACvC,SAASA,EAAU,mBAAmB,sBAAsB;AAAA,EAC5D,SAASA,EAAU,mBAAmB,sBAAsB;AAAA,EAC5D,QAAQA,EAAU,YAAY,eAAe;AAAA,EAC7C,OAAOA,EAAU,YAAY,eAAe;AAAA,EAC5C,gBAAgBA,EAAU,sBAAsB,yBAAyB;AAAA,EACzE,YAAYA,EAAU,iBAAiB,oBAAoB;AAC7D;"}
1
+ {"version":3,"file":"urls-DP4a8kxP.js","sources":["../src/api/urls.ts"],"sourcesContent":["import { modelUrls } from \"../utils/api\"\n\nconst urls = {\n user: modelUrls(\"users/\", \"users/<id>/\"),\n teacher: modelUrls(\"users/teachers/\", \"users/teachers/<id>/\"),\n student: modelUrls(\"users/students/\", \"users/students/<id>/\"),\n school: modelUrls(\"schools/\", \"schools/<id>/\"),\n class: modelUrls(\"classes/\", \"classes/<id>/\"),\n otpBypassToken: modelUrls(\"otp-bypass-tokens/\", \"otp-bypass-tokens/<id>/\"),\n authFactor: modelUrls(\"auth-factors/\", \"auth-factors/<id>/\"),\n}\n\nexport default urls\n"],"names":["urls","modelUrls"],"mappings":";AAEA,MAAMA,IAAO;AAAA,EACX,MAAMC,EAAU,UAAU,aAAa;AAAA,EACvC,SAASA,EAAU,mBAAmB,sBAAsB;AAAA,EAC5D,SAASA,EAAU,mBAAmB,sBAAsB;AAAA,EAC5D,QAAQA,EAAU,YAAY,eAAe;AAAA,EAC7C,OAAOA,EAAU,YAAY,eAAe;AAAA,EAC5C,gBAAgBA,EAAU,sBAAsB,yBAAyB;AAAA,EACzE,YAAYA,EAAU,iBAAiB,oBAAoB;AAC7D;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../jsx-runtime-Dszzpdy0.cjs");require("@mui/material");require("react");require("./general.cjs.js");require("yup");const e=require("../api-CaeeoZaI.cjs");exports.buildUrl=e.buildUrl;exports.handleResultState=e.handleResultState;exports.isModelId=e.isModelId;exports.isSafeHttpMethod=e.isSafeHttpMethod;exports.listTag=e.listTag;exports.modelUrls=e.modelUrls;exports.tagData=e.tagData;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../jsx-runtime-B2pbW5Fp.cjs");require("@mui/material");require("react");require("./general.cjs.js");require("yup");const e=require("../api-CAH3GT1O.cjs");exports.buildUrl=e.buildUrl;exports.handleResultState=e.handleResultState;exports.isModelId=e.isModelId;exports.isSafeHttpMethod=e.isSafeHttpMethod;exports.listTag=e.listTag;exports.modelUrls=e.modelUrls;exports.tagData=e.tagData;
2
2
  //# sourceMappingURL=api.cjs.js.map
@@ -1,9 +1,9 @@
1
- import "../jsx-runtime-C7wFtzyj.js";
1
+ import "../jsx-runtime-lzYHhGH3.js";
2
2
  import "@mui/material";
3
3
  import "react";
4
4
  import "./general.es.js";
5
5
  import "yup";
6
- import { b as e, h as m, a as p, i as d, l as h, m as b, t as f } from "../api-BvUiTeR7.js";
6
+ import { b as e, h as m, a as p, i as d, l as h, m as b, t as f } from "../api-BFYu8ZvQ.js";
7
7
  export {
8
8
  e as buildUrl,
9
9
  m as handleResultState,
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react-router");require("../jsx-runtime-Dszzpdy0.cjs");require("react");require("@mui/icons-material");require("@mui/material");require("../palette-BnIdHKDE.cjs");require("../auth-B7Vdot4N.cjs");function q(e,o={}){function c(r,g,t){typeof r.__=="object"&&(t=t?{...t,...r.__}:r.__);const _=typeof e=="string"&&t?l.generatePath(e,t):e;Object.entries(r).forEach(([u,i])=>{if(u!=="__")if(i=i,typeof i=="string"){if(typeof _=="string"&&(!g||u!=="_")){let n=_+i;n.endsWith("/")&&(n=n.slice(0,-1)),r[u]=n}}else c(i,!1,t)})}const f={...o,_:typeof e=="string"?e:"",__:e};return e===""?f._="/":c(f,!0),f}function s(e,o){return e.__[o]}exports.getParam=s;exports.path=q;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react-router");require("../jsx-runtime-B2pbW5Fp.cjs");require("react");require("@mui/icons-material");require("@mui/material");require("../palette-BnIdHKDE.cjs");require("../auth-BwpsrTko.cjs");function q(e,o={}){function c(r,g,t){typeof r.__=="object"&&(t=t?{...t,...r.__}:r.__);const _=typeof e=="string"&&t?l.generatePath(e,t):e;Object.entries(r).forEach(([u,i])=>{if(u!=="__")if(i=i,typeof i=="string"){if(typeof _=="string"&&(!g||u!=="_")){let n=_+i;n.endsWith("/")&&(n=n.slice(0,-1)),r[u]=n}}else c(i,!1,t)})}const f={...o,_:typeof e=="string"?e:"",__:e};return e===""?f._="/":c(f,!0),f}function s(e,o){return e.__[o]}exports.getParam=s;exports.path=q;
2
2
  //# sourceMappingURL=router.cjs.js.map
@@ -1,10 +1,10 @@
1
1
  import { generatePath as p } from "react-router";
2
- import "../jsx-runtime-C7wFtzyj.js";
2
+ import "../jsx-runtime-lzYHhGH3.js";
3
3
  import "react";
4
4
  import "@mui/icons-material";
5
5
  import "@mui/material";
6
6
  import "../palette-CYwuLBW7.js";
7
- import "../auth-CQ1InCxP.js";
7
+ import "../auth-Bb8WkZGN.js";
8
8
  function x(t, n = {}) {
9
9
  function c(i, l, e) {
10
10
  typeof i.__ == "object" && (e = e ? { ...e, ...i.__ } : i.__);