wcz-test 6.22.1 → 6.23.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 (293) hide show
  1. package/dist/_virtual/compiler-runtime.js +6 -0
  2. package/dist/_virtual/compiler-runtime.js.map +1 -0
  3. package/dist/_virtual/compiler-runtime2.js +5 -0
  4. package/dist/_virtual/compiler-runtime2.js.map +1 -0
  5. package/dist/_virtual/jsx-runtime.js +6 -0
  6. package/dist/_virtual/jsx-runtime.js.map +1 -0
  7. package/dist/_virtual/jsx-runtime2.js +5 -0
  8. package/dist/_virtual/jsx-runtime2.js.map +1 -0
  9. package/dist/_virtual/react-compiler-runtime.development.js +5 -0
  10. package/dist/_virtual/react-compiler-runtime.development.js.map +1 -0
  11. package/dist/_virtual/react-compiler-runtime.production.js +5 -0
  12. package/dist/_virtual/react-compiler-runtime.production.js.map +1 -0
  13. package/dist/_virtual/react-jsx-runtime.development.js +5 -0
  14. package/dist/_virtual/react-jsx-runtime.development.js.map +1 -0
  15. package/dist/_virtual/react-jsx-runtime.production.js +5 -0
  16. package/dist/_virtual/react-jsx-runtime.production.js.map +1 -0
  17. package/dist/client.js +4 -4
  18. package/dist/components/core/AppTitle.d.ts +2 -0
  19. package/dist/components/core/AppTitle.js +23 -0
  20. package/dist/components/core/AppTitle.js.map +1 -0
  21. package/dist/components/core/Fullscreen.d.ts +3 -0
  22. package/dist/components/core/Fullscreen.js +104 -0
  23. package/dist/components/core/Fullscreen.js.map +1 -0
  24. package/dist/components/core/Layout.d.ts +8 -0
  25. package/dist/components/core/Layout.js +215 -0
  26. package/dist/components/core/Layout.js.map +1 -0
  27. package/dist/components/core/ToolbarAccount.d.ts +2 -0
  28. package/dist/components/core/ToolbarAccount.js +602 -0
  29. package/dist/components/core/ToolbarAccount.js.map +1 -0
  30. package/dist/components/core/TypographyWithIcon.d.ts +7 -0
  31. package/dist/components/core/TypographyWithIcon.js +117 -0
  32. package/dist/components/core/TypographyWithIcon.js.map +1 -0
  33. package/dist/components/core/navigation/NavigationList.d.ts +22 -0
  34. package/dist/components/core/navigation/NavigationList.js +166 -0
  35. package/dist/components/core/navigation/NavigationList.js.map +1 -0
  36. package/dist/components/core/navigation/NavigationListItem.d.ts +16 -0
  37. package/dist/components/core/navigation/NavigationListItem.js +467 -0
  38. package/dist/components/core/navigation/NavigationListItem.js.map +1 -0
  39. package/dist/components/core/navigation/NavigationRail.d.ts +12 -0
  40. package/dist/components/core/navigation/NavigationRail.js +141 -0
  41. package/dist/components/core/navigation/NavigationRail.js.map +1 -0
  42. package/dist/components/data-grid/ChipInputCell.d.ts +9 -0
  43. package/dist/components/data-grid/ChipInputCell.js +95 -0
  44. package/dist/components/data-grid/ChipInputCell.js.map +1 -0
  45. package/dist/components/data-grid/EditableColumnHeader.d.ts +2 -0
  46. package/dist/components/data-grid/EditableColumnHeader.js +30 -0
  47. package/dist/components/data-grid/EditableColumnHeader.js.map +1 -0
  48. package/dist/components/file/Dropzone.d.ts +8 -0
  49. package/dist/components/file/Dropzone.js +151 -0
  50. package/dist/components/file/Dropzone.js.map +1 -0
  51. package/dist/components/file/FileViewer.d.ts +20 -0
  52. package/dist/components/file/FileViewer.js +127 -0
  53. package/dist/components/file/FileViewer.js.map +1 -0
  54. package/dist/components/file/fileViewer/FileViewerGrid.d.ts +17 -0
  55. package/dist/components/file/fileViewer/FileViewerGrid.js +282 -0
  56. package/dist/components/file/fileViewer/FileViewerGrid.js.map +1 -0
  57. package/dist/components/file/fileViewer/FileViewerList.d.ts +12 -0
  58. package/dist/components/file/fileViewer/FileViewerList.js +191 -0
  59. package/dist/components/file/fileViewer/FileViewerList.js.map +1 -0
  60. package/dist/components/file/fileViewer/ImageViewer.d.ts +6 -0
  61. package/dist/components/file/fileViewer/ImageViewer.js +75 -0
  62. package/dist/components/file/fileViewer/ImageViewer.js.map +1 -0
  63. package/dist/components/file/fileViewer/common/ActionsMenu.d.ts +15 -0
  64. package/dist/components/file/fileViewer/common/ActionsMenu.js +159 -0
  65. package/dist/components/file/fileViewer/common/ActionsMenu.js.map +1 -0
  66. package/dist/components/form/FormAutocomplete.d.ts +7 -0
  67. package/dist/components/form/FormAutocomplete.js +80 -0
  68. package/dist/components/form/FormAutocomplete.js.map +1 -0
  69. package/dist/components/form/FormCheckbox.d.ts +7 -0
  70. package/dist/components/form/FormCheckbox.js +81 -0
  71. package/dist/components/form/FormCheckbox.js.map +1 -0
  72. package/dist/components/form/FormDatePicker.d.ts +8 -0
  73. package/dist/components/form/FormDatePicker.js +77 -0
  74. package/dist/components/form/FormDatePicker.js.map +1 -0
  75. package/dist/components/form/FormDateRangePicker.d.ts +8 -0
  76. package/dist/components/form/FormDateRangePicker.js +77 -0
  77. package/dist/components/form/FormDateRangePicker.js.map +1 -0
  78. package/dist/components/form/FormDateTimePicker.d.ts +8 -0
  79. package/dist/components/form/FormDateTimePicker.js +77 -0
  80. package/dist/components/form/FormDateTimePicker.js.map +1 -0
  81. package/dist/components/form/FormDateTimeRangePicker.d.ts +8 -0
  82. package/dist/components/form/FormDateTimeRangePicker.js +77 -0
  83. package/dist/components/form/FormDateTimeRangePicker.js.map +1 -0
  84. package/dist/components/form/FormNumberField.d.ts +9 -0
  85. package/dist/components/form/FormNumberField.js +73 -0
  86. package/dist/components/form/FormNumberField.js.map +1 -0
  87. package/dist/components/form/FormRadioGroup.d.ts +13 -0
  88. package/dist/components/form/FormRadioGroup.js +113 -0
  89. package/dist/components/form/FormRadioGroup.js.map +1 -0
  90. package/dist/components/form/FormSlider.d.ts +7 -0
  91. package/dist/components/form/FormSlider.js +94 -0
  92. package/dist/components/form/FormSlider.js.map +1 -0
  93. package/dist/components/form/FormSubmitButton.d.ts +4 -0
  94. package/dist/components/form/FormSubmitButton.js +50 -0
  95. package/dist/components/form/FormSubmitButton.js.map +1 -0
  96. package/dist/components/form/FormSwitch.d.ts +7 -0
  97. package/dist/components/form/FormSwitch.js +81 -0
  98. package/dist/components/form/FormSwitch.js.map +1 -0
  99. package/dist/components/form/FormTextField.d.ts +7 -0
  100. package/dist/components/form/FormTextField.js +52 -0
  101. package/dist/components/form/FormTextField.js.map +1 -0
  102. package/dist/components/form/FormTimePicker.d.ts +8 -0
  103. package/dist/components/form/FormTimePicker.js +77 -0
  104. package/dist/components/form/FormTimePicker.js.map +1 -0
  105. package/dist/components/form/FormTimeRangePicker.d.ts +8 -0
  106. package/dist/components/form/FormTimeRangePicker.js +77 -0
  107. package/dist/components/form/FormTimeRangePicker.js.map +1 -0
  108. package/dist/components/router/RouterButton.d.ts +6 -0
  109. package/dist/components/router/RouterButton.js +35 -0
  110. package/dist/components/router/RouterButton.js.map +1 -0
  111. package/dist/components/router/RouterError.d.ts +7 -0
  112. package/dist/components/router/RouterError.js +62 -0
  113. package/dist/components/router/RouterError.js.map +1 -0
  114. package/dist/components/router/RouterGridActionsCellItem.d.ts +6 -0
  115. package/dist/components/router/RouterGridActionsCellItem.js +35 -0
  116. package/dist/components/router/RouterGridActionsCellItem.js.map +1 -0
  117. package/dist/components/router/RouterIconButton.d.ts +6 -0
  118. package/dist/components/router/RouterIconButton.js +35 -0
  119. package/dist/components/router/RouterIconButton.js.map +1 -0
  120. package/dist/components/router/RouterLink.d.ts +6 -0
  121. package/dist/components/router/RouterLink.js +35 -0
  122. package/dist/components/router/RouterLink.js.map +1 -0
  123. package/dist/components/router/RouterListItemButton.d.ts +6 -0
  124. package/dist/components/router/RouterListItemButton.js +35 -0
  125. package/dist/components/router/RouterListItemButton.js.map +1 -0
  126. package/dist/components/router/RouterNotFound.d.ts +1 -0
  127. package/dist/components/router/RouterNotFound.js +53 -0
  128. package/dist/components/router/RouterNotFound.js.map +1 -0
  129. package/dist/components/router/RouterTab.d.ts +6 -0
  130. package/dist/components/router/RouterTab.js +35 -0
  131. package/dist/components/router/RouterTab.js.map +1 -0
  132. package/dist/components.js +15 -429
  133. package/dist/components.js.map +1 -1
  134. package/dist/contexts/DialogsContext.d.ts +6 -0
  135. package/dist/contexts/DialogsContext.js +6 -0
  136. package/dist/contexts/DialogsContext.js.map +1 -0
  137. package/dist/contexts/FileContext.d.ts +13 -0
  138. package/dist/contexts/FileContext.js +14 -0
  139. package/dist/contexts/FileContext.js.map +1 -0
  140. package/dist/contexts/UserContext.d.ts +7 -0
  141. package/dist/contexts/UserContext.js +6 -0
  142. package/dist/contexts/UserContext.js.map +1 -0
  143. package/dist/env.d.ts +10 -0
  144. package/dist/env.js +26 -0
  145. package/dist/env.js.map +1 -0
  146. package/dist/exports/client.d.ts +4 -0
  147. package/dist/exports/components.d.ts +14 -0
  148. package/dist/exports/hooks.d.ts +5 -0
  149. package/dist/exports/index.d.ts +3 -0
  150. package/dist/exports/models.d.ts +24 -0
  151. package/dist/exports/queries.d.ts +4 -0
  152. package/dist/exports/server.d.ts +1 -0
  153. package/dist/exports/utils.d.ts +3 -0
  154. package/dist/exports/vite.d.ts +1 -0
  155. package/dist/hooks/DialogsHooks.d.ts +42 -0
  156. package/dist/hooks/DialogsHooks.js +280 -0
  157. package/dist/hooks/DialogsHooks.js.map +1 -0
  158. package/dist/hooks/FormHooks.d.ts +52 -0
  159. package/dist/hooks/FormHooks.js +55 -0
  160. package/dist/hooks/FormHooks.js.map +1 -0
  161. package/dist/hooks/UseHook.d.ts +2 -0
  162. package/dist/hooks/UseHook.js +12 -0
  163. package/dist/hooks/UseHook.js.map +1 -0
  164. package/dist/hooks.js +5 -346
  165. package/dist/hooks.js.map +1 -1
  166. package/dist/index.js +3 -750
  167. package/dist/index.js.map +1 -1
  168. package/dist/lib/auth/client.d.ts +13 -0
  169. package/dist/lib/auth/client.js +63 -0
  170. package/dist/lib/auth/client.js.map +1 -0
  171. package/dist/lib/auth/server.d.ts +9 -0
  172. package/dist/lib/utils.d.ts +52 -0
  173. package/dist/lib/utils.js +91 -0
  174. package/dist/lib/utils.js.map +1 -0
  175. package/dist/lib/vite-plugin.d.ts +2 -0
  176. package/dist/lib/vite-plugin.js +65 -0
  177. package/dist/lib/vite-plugin.js.map +1 -0
  178. package/dist/middleware/auth.d.ts +13 -0
  179. package/dist/models/Navigation.d.ts +18 -0
  180. package/dist/models/User.d.ts +11 -0
  181. package/dist/models/approval/Approval.d.ts +177 -0
  182. package/dist/models/approval/Approval.js +81 -0
  183. package/dist/models/approval/Approval.js.map +1 -0
  184. package/dist/models/approval/ApprovalEmployee.d.ts +7 -0
  185. package/dist/models/approval/ApprovalEmployee.js +10 -0
  186. package/dist/models/approval/ApprovalEmployee.js.map +1 -0
  187. package/dist/models/approval/ApprovalFlow.d.ts +49 -0
  188. package/dist/models/approval/ApprovalFlow.js +15 -0
  189. package/dist/models/approval/ApprovalFlow.js.map +1 -0
  190. package/dist/models/approval/ApprovalFlowStep.d.ts +29 -0
  191. package/dist/models/approval/ApprovalFlowStep.js +17 -0
  192. package/dist/models/approval/ApprovalFlowStep.js.map +1 -0
  193. package/dist/models/approval/ApprovalRequestType.d.ts +5 -0
  194. package/dist/models/approval/ApprovalRequestType.js +6 -0
  195. package/dist/models/approval/ApprovalRequestType.js.map +1 -0
  196. package/dist/models/approval/ApprovalStatus.d.ts +9 -0
  197. package/dist/models/approval/ApprovalStatus.js +6 -0
  198. package/dist/models/approval/ApprovalStatus.js.map +1 -0
  199. package/dist/models/approval/ApprovalStepResult.d.ts +11 -0
  200. package/dist/models/approval/ApprovalStepResult.js +6 -0
  201. package/dist/models/approval/ApprovalStepResult.js.map +1 -0
  202. package/dist/models/approval/StepApprovalOrder.d.ts +6 -0
  203. package/dist/models/approval/StepApprovalOrder.js +6 -0
  204. package/dist/models/approval/StepApprovalOrder.js.map +1 -0
  205. package/dist/models/email/Email.d.ts +13 -0
  206. package/dist/models/email/Email.js +14 -0
  207. package/dist/models/email/Email.js.map +1 -0
  208. package/dist/models/email/EmailAttachment.d.ts +6 -0
  209. package/dist/models/email/EmailAttachment.js +9 -0
  210. package/dist/models/email/EmailAttachment.js.map +1 -0
  211. package/dist/models/file/FileActions.d.ts +6 -0
  212. package/dist/models/file/FileMeta.d.ts +15 -0
  213. package/dist/{FileMeta-G1oT3mYK.js → models/file/FileMeta.js} +2 -2
  214. package/dist/models/file/FileMeta.js.map +1 -0
  215. package/dist/models/peoplesoft/Department.d.ts +58 -0
  216. package/dist/models/peoplesoft/Department.js +19 -0
  217. package/dist/models/peoplesoft/Department.js.map +1 -0
  218. package/dist/models/peoplesoft/Employee.d.ts +46 -0
  219. package/dist/models/peoplesoft/Employee.js +43 -0
  220. package/dist/models/peoplesoft/Employee.js.map +1 -0
  221. package/dist/models/peoplesoft/EmployeeCategoryGroup.d.ts +6 -0
  222. package/dist/models/peoplesoft/EmployeeCategoryGroup.js +6 -0
  223. package/dist/models/peoplesoft/EmployeeCategoryGroup.js.map +1 -0
  224. package/dist/models/peoplesoft/EmployeeStatus.d.ts +6 -0
  225. package/dist/models/peoplesoft/EmployeeStatus.js +6 -0
  226. package/dist/models/peoplesoft/EmployeeStatus.js.map +1 -0
  227. package/dist/models.js +10 -182
  228. package/dist/models.js.map +1 -1
  229. package/dist/node_modules/react/cjs/react-compiler-runtime.development.js +22 -0
  230. package/dist/node_modules/react/cjs/react-compiler-runtime.development.js.map +1 -0
  231. package/dist/node_modules/react/cjs/react-compiler-runtime.production.js +16 -0
  232. package/dist/node_modules/react/cjs/react-compiler-runtime.production.js.map +1 -0
  233. package/dist/{DialogsContext-DMZRefiY.js → node_modules/react/cjs/react-jsx-runtime.development.js} +4 -48
  234. package/dist/node_modules/react/cjs/react-jsx-runtime.development.js.map +1 -0
  235. package/dist/node_modules/react/cjs/react-jsx-runtime.production.js +33 -0
  236. package/dist/node_modules/react/cjs/react-jsx-runtime.production.js.map +1 -0
  237. package/dist/node_modules/react/compiler-runtime.js +18 -0
  238. package/dist/node_modules/react/compiler-runtime.js.map +1 -0
  239. package/dist/node_modules/react/jsx-runtime.js +18 -0
  240. package/dist/node_modules/react/jsx-runtime.js.map +1 -0
  241. package/dist/providers/DialogsProvider.d.ts +5 -0
  242. package/dist/providers/DialogsProvider.js +79 -0
  243. package/dist/providers/DialogsProvider.js.map +1 -0
  244. package/dist/providers/LayoutProvider.d.ts +11 -0
  245. package/dist/providers/LayoutProvider.js +101 -0
  246. package/dist/providers/LayoutProvider.js.map +1 -0
  247. package/dist/providers/UserProvider.d.ts +4 -0
  248. package/dist/providers/UserProvider.js +94 -0
  249. package/dist/providers/UserProvider.js.map +1 -0
  250. package/dist/queries/Approval.d.ts +585 -0
  251. package/dist/queries/Approval.js +91 -0
  252. package/dist/queries/Approval.js.map +1 -0
  253. package/dist/queries/ApprovalHooks.d.ts +315 -0
  254. package/dist/queries/ApprovalHooks.js +243 -0
  255. package/dist/queries/ApprovalHooks.js.map +1 -0
  256. package/dist/queries/FileHooks.d.ts +151 -0
  257. package/dist/queries/FileHooks.js +466 -0
  258. package/dist/queries/FileHooks.js.map +1 -0
  259. package/dist/queries/PeopleSoftHooks.d.ts +537 -0
  260. package/dist/queries/PeopleSoftHooks.js +586 -0
  261. package/dist/queries/PeopleSoftHooks.js.map +1 -0
  262. package/dist/queries/UserHooks.d.ts +11 -0
  263. package/dist/queries/UserHooks.js +157 -0
  264. package/dist/queries/UserHooks.js.map +1 -0
  265. package/dist/queries.js +13 -337
  266. package/dist/queries.js.map +1 -1
  267. package/dist/utils.js +2 -2
  268. package/dist/vite.js +1 -55
  269. package/dist/vite.js.map +1 -1
  270. package/package.json +13 -11
  271. package/dist/ApprovalStatus-C9HPyMiS.js +0 -24
  272. package/dist/ApprovalStatus-C9HPyMiS.js.map +0 -1
  273. package/dist/DialogsContext-DMZRefiY.js.map +0 -1
  274. package/dist/DialogsHooks-DBK6rBoU.js +0 -37
  275. package/dist/DialogsHooks-DBK6rBoU.js.map +0 -1
  276. package/dist/FileHooks-BM2Oyvh6.js +0 -194
  277. package/dist/FileHooks-BM2Oyvh6.js.map +0 -1
  278. package/dist/FileMeta-G1oT3mYK.js.map +0 -1
  279. package/dist/RouterListItemButton-Vj6OoqkV.js +0 -15
  280. package/dist/RouterListItemButton-Vj6OoqkV.js.map +0 -1
  281. package/dist/UseHook-DB7btKDE.js +0 -11
  282. package/dist/UseHook-DB7btKDE.js.map +0 -1
  283. package/dist/client.d.ts +0 -20
  284. package/dist/components.d.ts +0 -134
  285. package/dist/hooks.d.ts +0 -208
  286. package/dist/index.d.ts +0 -74
  287. package/dist/models.d.ts +0 -467
  288. package/dist/queries.d.ts +0 -1956
  289. package/dist/server.d.ts +0 -5
  290. package/dist/utils-CKW5pi6k.js +0 -77
  291. package/dist/utils-CKW5pi6k.js.map +0 -1
  292. package/dist/utils.d.ts +0 -11
  293. package/dist/vite.d.ts +0 -5
package/dist/index.js CHANGED
@@ -1,755 +1,8 @@
1
- import { j as jsxRuntimeExports, D as DialogsContext } from "./DialogsContext-DMZRefiY.js";
2
- import { useMsalAuthentication, useMsal, AuthenticatedTemplate, MsalProvider } from "@azure/msal-react";
3
- import { Stack, Typography, Collapse, useMediaQuery, useColorScheme, List as List$1, ListItemButton as ListItemButton$1, ListItemIcon as ListItemIcon$1, ListItemText as ListItemText$1, ListSubheader as ListSubheader$1, IconButton, Avatar as Avatar$1, Menu, Box as Box$1, ListItem as ListItem$1, InitColorSchemeScript, CssBaseline, AppBar, Toolbar, LinearProgress, ThemeProvider } from "@mui/material";
4
- import { LocalizationProvider } from "@mui/x-date-pickers";
5
- import { AdapterDayjs } from "@mui/x-date-pickers/AdapterDayjs";
6
- import { createIsomorphicFn, createServerFn } from "@tanstack/react-start";
7
- import { getCookie } from "@tanstack/react-start/server";
8
- import dayjs from "dayjs";
9
- import i18n from "i18next";
10
- import LanguageDetector from "i18next-browser-languagedetector";
11
- import { useState, useId, useRef, useEffect, Fragment, useEffectEvent } from "react";
12
- import { useTranslation, initReactI18next } from "react-i18next";
13
- import { resources } from "virtual:wcz-layout";
14
- import z__default from "zod";
15
- import useEventCallback from "@mui/utils/useEventCallback";
16
- import { PublicClientApplication, EventType, InteractionType } from "@azure/msal-browser";
17
- import { U as UserContext, u as useUser } from "./UseHook-DB7btKDE.js";
18
- import { useQuery, useIsFetching, useIsMutating } from "@tanstack/react-query";
19
- import axios from "axios";
20
- import { c as clientEnv } from "./utils-CKW5pi6k.js";
21
- import { r } from "./utils-CKW5pi6k.js";
22
- import Menu$1 from "@mui/icons-material/Menu";
23
- import MenuOpen from "@mui/icons-material/MenuOpen";
24
- import { styled, useTheme } from "@mui/material/styles";
25
- import Box from "@mui/material/Box";
26
- import Drawer from "@mui/material/Drawer";
27
- import { useNavigate, useRouterState } from "@tanstack/react-router";
28
- import Divider from "@mui/material/Divider";
29
- import List from "@mui/material/List";
30
- import ListSubheader from "@mui/material/ListSubheader";
31
- import ExpandMoreIcon from "@mui/icons-material/ExpandMore";
32
- import Avatar from "@mui/material/Avatar";
33
- import ListItem from "@mui/material/ListItem";
34
- import ListItemButton from "@mui/material/ListItemButton";
35
- import ListItemIcon from "@mui/material/ListItemIcon";
36
- import ListItemText from "@mui/material/ListItemText";
37
- import Paper from "@mui/material/Paper";
38
- import Popper from "@mui/material/Popper";
39
- import Typography$1 from "@mui/material/Typography";
40
- import { R as RouterListItemButton } from "./RouterListItemButton-Vj6OoqkV.js";
41
- import AccountCircle from "@mui/icons-material/AccountCircle";
42
- import ArrowBack from "@mui/icons-material/ArrowBack";
43
- import Brightness4 from "@mui/icons-material/Brightness4";
44
- import ChevronRight from "@mui/icons-material/ChevronRight";
45
- import DarkMode from "@mui/icons-material/DarkMode";
46
- import Done from "@mui/icons-material/Done";
47
- import LightMode from "@mui/icons-material/LightMode";
48
- import Logout from "@mui/icons-material/Logout";
49
- import SettingsBrightness from "@mui/icons-material/SettingsBrightness";
50
- import Translate from "@mui/icons-material/Translate";
51
- function DialogsProvider({ children }) {
52
- const [stack, setStack] = useState([]);
53
- const keyPrefix = useId();
54
- const nextId = useRef(0);
55
- const dialogMetadata = useRef(/* @__PURE__ */ new WeakMap());
56
- const requestDialog = useEventCallback(function open(Component, payload, options = {}) {
57
- const { onClose = async () => {
58
- } } = options;
59
- let resolve;
60
- const promise = new Promise((resolveImpl) => {
61
- resolve = resolveImpl;
62
- });
63
- const key = `${keyPrefix}-${nextId.current}`;
64
- nextId.current += 1;
65
- const newEntry = {
66
- key,
67
- open: true,
68
- promise,
69
- Component,
70
- payload,
71
- onClose,
72
- resolve
73
- };
74
- dialogMetadata.current.set(promise, newEntry);
75
- setStack((previousStack) => [...previousStack, newEntry]);
76
- return promise;
77
- });
78
- const removeDialogFromStack = (dialog) => {
79
- setStack((previousStack) => previousStack.filter((entry) => entry.promise !== dialog));
80
- dialogMetadata.current.delete(dialog);
81
- };
82
- const closeDialogUi = useEventCallback(function closeDialogUi2(dialog) {
83
- setStack(
84
- (previousStack) => previousStack.map((entry) => entry.promise === dialog ? { ...entry, open: false } : entry)
85
- );
86
- setTimeout(() => removeDialogFromStack(dialog), 1e3);
87
- });
88
- const closeDialog = useEventCallback(async function closeDialog2(dialog, result) {
89
- const entryToClose = dialogMetadata.current.get(dialog);
90
- if (!entryToClose) {
91
- throw new Error("Dialog not found in stack");
92
- }
93
- try {
94
- await entryToClose.onClose(result);
95
- } finally {
96
- entryToClose.resolve(result);
97
- closeDialogUi(dialog);
98
- }
99
- return dialog;
100
- });
101
- return /* @__PURE__ */ jsxRuntimeExports.jsxs(DialogsContext.Provider, { value: { open: requestDialog, close: closeDialog }, children: [
102
- children,
103
- stack.map(({ key, open, Component, payload, promise }) => /* @__PURE__ */ jsxRuntimeExports.jsx(
104
- Component,
105
- {
106
- payload,
107
- open,
108
- onClose: async (result) => {
109
- await closeDialog(promise, result);
110
- }
111
- },
112
- key
113
- ))
114
- ] });
115
- }
116
- const msalConfig = {
117
- auth: {
118
- clientId: clientEnv.VITE_MICROSOFT_CLIENT_ID,
119
- authority: `https://login.microsoftonline.com/${clientEnv.VITE_MICROSOFT_TENANT_ID}`
120
- }
121
- };
122
- const msalInstance = new PublicClientApplication(msalConfig);
123
- msalInstance.initialize().then(() => {
124
- if (!msalInstance.getActiveAccount() && msalInstance.getAllAccounts().length > 0) {
125
- msalInstance.setActiveAccount(msalInstance.getAllAccounts()[0]);
126
- }
127
- msalInstance.enableAccountStorageEvents();
128
- msalInstance.addEventCallback((event) => {
129
- if (event.eventType === EventType.LOGIN_SUCCESS && event.payload) {
130
- const payload = event.payload;
131
- const account = payload.account;
132
- msalInstance.setActiveAccount(account);
133
- }
134
- });
135
- });
136
- const acquireAccessToken = async () => {
137
- const account = msalInstance.getActiveAccount();
138
- if (!account) {
139
- throw new Error("No active account! Verify a user has been signed in and setActiveAccount has been called.");
140
- }
141
- const response = await msalInstance.acquireTokenSilent({
142
- scopes: ["User.Read"],
143
- account
144
- });
145
- return response.accessToken;
146
- };
147
- const QUERY_KEY = "user";
148
- const DAY = 1e3 * 60 * 60 * 24;
149
- const api = axios.create({
150
- baseURL: "https://graph.microsoft.com/v1.0/"
151
- });
152
- api.interceptors.request.use(async (config) => {
153
- config.headers.Authorization = `Bearer ${await acquireAccessToken()}`;
154
- return config;
155
- });
156
- const useGetUser = (enabled = true) => {
157
- return useQuery({
158
- queryKey: [QUERY_KEY, "me"],
159
- queryFn: ({ signal }) => api.request({
160
- method: "GET",
161
- url: "me?$select=id,displayName,jobTitle,mail,mobilePhone",
162
- signal
163
- }),
164
- select: (response) => ({
165
- id: response.data.id,
166
- name: response.data.displayName.split("/")[0],
167
- jobTitle: response.data.jobTitle,
168
- email: response.data.mail,
169
- mobilePhone: response.data.mobilePhone,
170
- photo: null,
171
- groups: []
172
- }),
173
- staleTime: DAY,
174
- gcTime: DAY,
175
- refetchOnWindowFocus: false,
176
- enabled
177
- });
178
- };
179
- const useGetUserPhoto = (enabled = true) => {
180
- return useQuery({
181
- queryKey: [QUERY_KEY, "me", "photo"],
182
- queryFn: ({ signal }) => api.request({
183
- method: "GET",
184
- url: "me/photo/$value",
185
- signal,
186
- responseType: "blob"
187
- }),
188
- select: (response) => URL.createObjectURL(response.data),
189
- staleTime: DAY,
190
- gcTime: DAY,
191
- refetchOnWindowFocus: false,
192
- enabled
193
- });
194
- };
195
- const useGetUserGroups = (enabled = true) => {
196
- return useQuery({
197
- queryKey: [QUERY_KEY, "me", "memberOf"],
198
- queryFn: ({ signal }) => api.request({
199
- method: "GET",
200
- url: "me/memberOf?$select=displayName",
201
- signal
202
- }),
203
- select: (response) => response.data.value.map((group) => group.displayName),
204
- staleTime: DAY,
205
- gcTime: DAY,
206
- refetchOnWindowFocus: false,
207
- enabled
208
- });
209
- };
210
- function UserProvider({ children }) {
211
- const { result } = useMsalAuthentication(InteractionType.Redirect);
212
- const [user, setUser] = useState({});
213
- const { data } = useGetUser(!!result);
214
- const { data: photo } = useGetUserPhoto(!!result);
215
- const { data: groups } = useGetUserGroups(!!result);
216
- useEffect(() => {
217
- if (!data) return;
218
- setUser({
219
- ...data,
220
- ...photo && { photo },
221
- ...groups && { groups }
222
- });
223
- }, [data, photo, groups]);
224
- return /* @__PURE__ */ jsxRuntimeExports.jsx(UserContext.Provider, { value: { user, setUser }, children });
225
- }
226
- const AppTitle = () => {
227
- return /* @__PURE__ */ jsxRuntimeExports.jsxs(Stack, { direction: "row", alignItems: "center", spacing: 2, flexGrow: 1, children: [
228
- /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: "/favicon-32x32.png", alt: "app-logo", loading: "lazy" }),
229
- /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { variant: "h6", children: clientEnv.VITE_APP_TITLE }),
230
- false
231
- ] });
232
- };
233
- const ICON_SIZE = 34;
234
- const StyledNavButton = styled(ListItemButton)(({ theme }) => ({
235
- borderRadius: 8,
236
- "&.Mui-selected": {
237
- "& .MuiListItemIcon-root, & .MuiTypography-root, & .MuiSvgIcon-root": {
238
- color: (theme.vars ?? theme).palette.primary.dark
239
- },
240
- "& .MuiAvatar-root": {
241
- backgroundColor: (theme.vars ?? theme).palette.primary.dark
242
- },
243
- "& .MuiTouchRipple-child": {
244
- backgroundColor: (theme.vars ?? theme).palette.primary.dark
245
- }
246
- },
247
- "& .MuiSvgIcon-root": {
248
- color: (theme.vars ?? theme).palette.action.active
249
- },
250
- "& .MuiAvatar-root": {
251
- backgroundColor: (theme.vars ?? theme).palette.action.active
252
- }
253
- }));
254
- const StyledRouterButton = styled(RouterListItemButton)(({ theme }) => ({
255
- borderRadius: 8,
256
- "&.Mui-selected": {
257
- "& .MuiListItemIcon-root, & .MuiTypography-root, & .MuiSvgIcon-root": {
258
- color: (theme.vars ?? theme).palette.primary.dark
259
- },
260
- "& .MuiAvatar-root": {
261
- backgroundColor: (theme.vars ?? theme).palette.primary.dark
262
- },
263
- "& .MuiTouchRipple-child": {
264
- backgroundColor: (theme.vars ?? theme).palette.primary.dark
265
- }
266
- },
267
- "& .MuiSvgIcon-root": {
268
- color: (theme.vars ?? theme).palette.action.active
269
- },
270
- "& .MuiAvatar-root": {
271
- backgroundColor: (theme.vars ?? theme).palette.action.active
272
- }
273
- }));
274
- const IconOrAvatar = ({ item, collapsed }) => {
275
- if (item.icon || collapsed) {
276
- return /* @__PURE__ */ jsxRuntimeExports.jsxs(Box, { sx: collapsed ? { position: "absolute", left: "50%", top: "calc(50% - 6px)", transform: "translate(-50%, -50%)" } : {}, children: [
277
- /* @__PURE__ */ jsxRuntimeExports.jsxs(ListItemIcon, { sx: { display: "flex", alignItems: "center", justifyContent: "center", minWidth: ICON_SIZE }, children: [
278
- item.icon ?? null,
279
- !item.icon && collapsed ? /* @__PURE__ */ jsxRuntimeExports.jsx(Avatar, { sx: { width: ICON_SIZE - 7, height: ICON_SIZE - 7, fontSize: 12 }, children: item.title }) : null
280
- ] }),
281
- collapsed ? /* @__PURE__ */ jsxRuntimeExports.jsx(
282
- Typography$1,
283
- {
284
- variant: "caption",
285
- sx: {
286
- position: "absolute",
287
- bottom: -18,
288
- left: "50%",
289
- transform: "translateX(-50%)",
290
- fontSize: 10,
291
- fontWeight: 500,
292
- textAlign: "center",
293
- whiteSpace: "nowrap",
294
- overflow: "hidden",
295
- textOverflow: "ellipsis",
296
- maxWidth: MINI_WIDTH - 28
297
- },
298
- children: item.title
299
- }
300
- ) : null
301
- ] });
302
- }
303
- return null;
304
- };
305
- const MiniPopover = ({ open, anchorEl, children }) => /* @__PURE__ */ jsxRuntimeExports.jsx(
306
- Popper,
307
- {
308
- open,
309
- anchorEl,
310
- placement: "right-start",
311
- modifiers: [
312
- { name: "offset", options: { offset: [6, 0] } },
313
- { name: "preventOverflow", options: { padding: 8 } },
314
- { name: "flip", options: { fallbackPlacements: ["right-end", "left-start"] } }
315
- ],
316
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(
317
- Paper,
318
- {
319
- sx: {
320
- pt: 0.5,
321
- pb: 0.5,
322
- maxHeight: "min(calc(100vh - 100px), 560px)",
323
- overflowY: "auto",
324
- overscrollBehavior: "contain"
325
- },
326
- children
327
- }
328
- )
329
- }
330
- );
331
- const NavigationListItem = ({ item, isOpen, selected, disabled, collapsed, isSidebarFullyExpanded = true, isSidebarFullyCollapsed, onClick, renderNested, onClose }) => {
332
- const [hoveredPopoverItem, setHoveredPopoverItem] = useState(null);
333
- const [anchorElement, setAnchorElement] = useState(null);
334
- const chevronSx = () => {
335
- if (collapsed && isSidebarFullyCollapsed && item.children) {
336
- return {
337
- fontSize: 18,
338
- position: "absolute",
339
- top: "41.5%",
340
- right: "2px",
341
- transform: "translateY(-50%) rotate(-90deg)"
342
- };
343
- }
344
- if (!collapsed && isSidebarFullyExpanded && item.children) {
345
- return {
346
- ml: 0.5,
347
- transform: `rotate(${isOpen ? 0 : -90}deg)`
348
- };
349
- }
350
- return { display: "none" };
351
- };
352
- const shouldJustExpand = item.children && !collapsed;
353
- const buttonProps = {
354
- selected,
355
- disabled,
356
- sx: { px: 1.4, height: collapsed ? 60 : 48 }
357
- };
358
- const buttonContent = /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
359
- /* @__PURE__ */ jsxRuntimeExports.jsx(IconOrAvatar, { item, collapsed }),
360
- !collapsed && /* @__PURE__ */ jsxRuntimeExports.jsx(
361
- ListItemText,
362
- {
363
- primary: item.title,
364
- slotProps: { primary: { noWrap: true, title: item.title } },
365
- sx: { ml: 1.2, flex: 1, minWidth: 0, "& .MuiTypography-root": { whiteSpace: "nowrap", overflow: "hidden", textOverflow: "ellipsis" } }
366
- }
367
- ),
368
- item.children ? /* @__PURE__ */ jsxRuntimeExports.jsx(ExpandMoreIcon, { sx: chevronSx }) : null
369
- ] });
370
- const listItem = /* @__PURE__ */ jsxRuntimeExports.jsxs(
371
- ListItem,
372
- {
373
- ...item.children && collapsed ? {
374
- onMouseEnter: (event) => {
375
- setAnchorElement(event.currentTarget);
376
- setHoveredPopoverItem(item.title);
377
- },
378
- onMouseLeave: () => {
379
- setHoveredPopoverItem(null);
380
- }
381
- } : {},
382
- sx: { py: 0, px: 1, overflowX: "hidden" },
383
- children: [
384
- shouldJustExpand ? /* @__PURE__ */ jsxRuntimeExports.jsx(StyledNavButton, { ...buttonProps, onClick: () => onClick?.(item), children: buttonContent }) : /* @__PURE__ */ jsxRuntimeExports.jsx(
385
- StyledRouterButton,
386
- {
387
- ...buttonProps,
388
- to: item.to,
389
- href: item.href,
390
- params: item.params,
391
- search: item.search,
392
- onClick: onClose,
393
- children: buttonContent
394
- }
395
- ),
396
- item.children && collapsed ? /* @__PURE__ */ jsxRuntimeExports.jsx(MiniPopover, { open: item.title === hoveredPopoverItem, anchorEl: anchorElement, children: renderNested?.(item.children) }) : null
397
- ]
398
- }
399
- );
400
- return /* @__PURE__ */ jsxRuntimeExports.jsxs(Fragment, { children: [
401
- listItem,
402
- item.children && !collapsed ? /* @__PURE__ */ jsxRuntimeExports.jsx(Collapse, { in: isOpen, timeout: "auto", unmountOnExit: true, children: renderNested?.(item.children) }) : null
403
- ] }, item.to);
404
- };
405
- const isPageItem = (item) => !("kind" in item);
406
- const isDivider = (item) => "kind" in item && item.kind === "divider";
407
- const isHeader = (item) => "kind" in item && item.kind === "header";
408
- const NavigationList = ({ subNavigation, depth = 0, collapsed, isPopover, isSidebarFullyExpanded = true, isSidebarFullyCollapsed, expandedWidth, renderItem, activePath, onNavigate, onClose }) => {
409
- const [openKeys, setOpenKeys] = useState([]);
410
- useEffect(() => {
411
- if (collapsed) setOpenKeys([]);
412
- }, [collapsed]);
413
- const toggleKey = (key) => setOpenKeys((previous) => previous.includes(key) ? previous.filter((k) => k !== key) : [...previous, key]);
414
- const renderNested = (children) => /* @__PURE__ */ jsxRuntimeExports.jsx(
415
- NavigationList,
416
- {
417
- subNavigation: children,
418
- depth: depth + 1,
419
- isPopover: collapsed,
420
- expandedWidth,
421
- activePath,
422
- onNavigate,
423
- onClose
424
- }
425
- );
426
- const filteredNavigation = subNavigation.filter((nav) => !nav.hidden);
427
- return /* @__PURE__ */ jsxRuntimeExports.jsx(
428
- List,
429
- {
430
- sx: {
431
- padding: 0,
432
- mt: isPopover && depth === 1 ? 0.5 : 0,
433
- mb: depth === 0 && !isPopover ? 4 : 0.5,
434
- pl: (isPopover ? 1 : 2) * (isPopover ? depth - 1 : depth),
435
- minWidth: isPopover && depth === 1 ? EXPANDED_WIDTH : "auto",
436
- width: collapsed ? MINI_WIDTH : "auto"
437
- },
438
- children: filteredNavigation.map((navItem, index) => {
439
- if (isHeader(navItem)) {
440
- return /* @__PURE__ */ jsxRuntimeExports.jsx(
441
- ListSubheader,
442
- {
443
- sx: {
444
- fontSize: 12,
445
- fontWeight: "700",
446
- height: collapsed ? 0 : 40,
447
- px: 2,
448
- minWidth: expandedWidth,
449
- overflow: "hidden",
450
- textOverflow: "ellipsis",
451
- whiteSpace: "nowrap",
452
- zIndex: 2,
453
- bgcolor: "transparent",
454
- position: "static"
455
- },
456
- children: navItem.title
457
- },
458
- `subheader-${depth}-${index}`
459
- );
460
- }
461
- if (isDivider(navItem)) {
462
- const nextItem = filteredNavigation[index + 1];
463
- return /* @__PURE__ */ jsxRuntimeExports.jsx("li", { children: /* @__PURE__ */ jsxRuntimeExports.jsx(Divider, { sx: { mx: 1, mt: 1, mb: isHeader(nextItem) && !collapsed ? 0 : 1 } }) }, `divider-${depth}-${index}`);
464
- }
465
- if (!isPageItem(navItem)) return null;
466
- const key = `item-${depth}-${index}`;
467
- const uniqueItemKey = `${depth}-${index}-${navItem.title}`;
468
- if (renderItem) return /* @__PURE__ */ jsxRuntimeExports.jsx(Fragment, { children: renderItem(navItem, { collapsed: !!collapsed }) }, key);
469
- return /* @__PURE__ */ jsxRuntimeExports.jsx(
470
- NavigationListItem,
471
- {
472
- item: navItem,
473
- isOpen: openKeys.includes(uniqueItemKey),
474
- selected: activePath === navItem.to,
475
- collapsed,
476
- isSidebarFullyExpanded,
477
- isSidebarFullyCollapsed,
478
- onClick: navItem.children && !collapsed ? () => toggleKey(uniqueItemKey) : void 0,
479
- renderNested,
480
- onClose
481
- },
482
- key
483
- );
484
- })
485
- }
486
- );
487
- };
488
- const MINI_WIDTH = 84;
489
- const EXPANDED_WIDTH = 320;
490
- const TOOLBAR_HEIGHT = 64;
491
- const NavigationRail = ({ navigation, expanded, setExpanded }) => {
492
- const navigate = useNavigate();
493
- const routerState = useRouterState();
494
- const theme = useTheme();
495
- const showPermanent = useMediaQuery(theme.breakpoints.up("sm"));
496
- const drawerContent = (collapsed) => /* @__PURE__ */ jsxRuntimeExports.jsx(
497
- Box,
498
- {
499
- component: "nav",
500
- sx: {
501
- height: "100%",
502
- display: "flex",
503
- flexDirection: "column",
504
- justifyContent: "space-between",
505
- overflow: "auto",
506
- scrollbarGutter: collapsed ? "stable" : "auto",
507
- overflowX: "hidden",
508
- pt: navigation[0] && isHeader(navigation[0]) && !collapsed ? 0 : 2
509
- },
510
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(
511
- NavigationList,
512
- {
513
- subNavigation: navigation,
514
- collapsed,
515
- isSidebarFullyExpanded: expanded,
516
- isSidebarFullyCollapsed: !expanded,
517
- expandedWidth: EXPANDED_WIDTH,
518
- activePath: routerState.location.pathname,
519
- onNavigate: navigate,
520
- onClose: !showPermanent ? () => setExpanded(false) : void 0
521
- }
522
- )
523
- }
524
- );
525
- if (showPermanent)
526
- return /* @__PURE__ */ jsxRuntimeExports.jsx(
527
- Drawer,
528
- {
529
- variant: "permanent",
530
- sx: {
531
- width: expanded ? EXPANDED_WIDTH : MINI_WIDTH,
532
- ["& .MuiDrawer-paper"]: {
533
- position: "absolute",
534
- top: `${TOOLBAR_HEIGHT}px`,
535
- height: `calc(100% - ${TOOLBAR_HEIGHT}px)`,
536
- width: expanded ? EXPANDED_WIDTH : MINI_WIDTH,
537
- borderTop: "1px solid",
538
- borderColor: "var(--mui-palette-divider)"
539
- }
540
- },
541
- children: drawerContent(!expanded)
542
- }
543
- );
544
- return /* @__PURE__ */ jsxRuntimeExports.jsx(Drawer, { open: expanded, onClose: () => setExpanded(false), children: drawerContent(!expanded) });
545
- };
546
- const capitalize = (value) => value && value.charAt(0).toUpperCase() + value.slice(1);
547
- const ToolbarAccount = () => {
548
- const [anchorElement, setAnchorElement] = useState();
549
- const [tab, setTab] = useState("settings");
550
- const open = Boolean(anchorElement);
551
- const { t, i18n: i18n2 } = useTranslation();
552
- const { mode, setMode } = useColorScheme();
553
- const { instance } = useMsal();
554
- const user = useUser();
555
- const supportedLanguages = (Array.isArray(i18n2.options.supportedLngs) ? i18n2.options.supportedLngs : []).filter((lng) => lng !== "cimode");
556
- const languageDisplayNames = new Intl.DisplayNames([i18n2.language], { type: "language" });
557
- const colorModes = [
558
- { mode: "light", icon: LightMode, label: t("Layout.Light") },
559
- { mode: "dark", icon: DarkMode, label: t("Layout.Dark") },
560
- { mode: "system", icon: SettingsBrightness, label: t("Layout.System") }
561
- ];
562
- const openMenu = (event) => setAnchorElement(event.currentTarget);
563
- const closeMenu = () => {
564
- setAnchorElement(void 0);
565
- setTimeout(() => setTab("settings"), 300);
566
- };
567
- const changeTab = (newTab) => () => setTab(newTab);
568
- const settings = /* @__PURE__ */ jsxRuntimeExports.jsxs(List$1, { component: "nav", subheader: /* @__PURE__ */ jsxRuntimeExports.jsx(ListSubheader$1, { sx: { backgroundColor: "transparent" }, children: t("Layout.Settings") }), children: [
569
- /* @__PURE__ */ jsxRuntimeExports.jsxs(ListItemButton$1, { onClick: changeTab("theme"), sx: { py: 0.3 }, children: [
570
- /* @__PURE__ */ jsxRuntimeExports.jsx(ListItemIcon$1, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(Brightness4, {}) }),
571
- /* @__PURE__ */ jsxRuntimeExports.jsx(ListItemText$1, { primary: t("Layout.Appearance"), secondary: colorModes.find((m) => m.mode === mode)?.label }),
572
- /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronRight, {})
573
- ] }),
574
- /* @__PURE__ */ jsxRuntimeExports.jsxs(ListItemButton$1, { onClick: changeTab("language"), sx: { py: 0.3 }, children: [
575
- /* @__PURE__ */ jsxRuntimeExports.jsx(ListItemIcon$1, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(Translate, {}) }),
576
- /* @__PURE__ */ jsxRuntimeExports.jsx(ListItemText$1, { primary: t("Layout.Language"), secondary: capitalize(languageDisplayNames.of(i18n2.language)) }),
577
- /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronRight, {})
578
- ] })
579
- ] });
580
- const theme = /* @__PURE__ */ jsxRuntimeExports.jsx(List$1, { subheader: /* @__PURE__ */ jsxRuntimeExports.jsxs(ListSubheader$1, { onClick: changeTab("settings"), sx: { backgroundColor: "transparent", display: "flex", alignItems: "center", px: 1, cursor: "pointer" }, children: [
581
- /* @__PURE__ */ jsxRuntimeExports.jsx(IconButton, { size: "small", sx: { mr: 0.5 }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ArrowBack, { fontSize: "small" }) }),
582
- " ",
583
- t("Layout.Appearance")
584
- ] }), children: colorModes.map(({ mode: modeValue, icon: Icon, label }) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
585
- ListItemButton$1,
586
- {
587
- onClick: () => {
588
- setMode(modeValue);
589
- closeMenu();
590
- },
591
- selected: mode === modeValue,
592
- children: [
593
- /* @__PURE__ */ jsxRuntimeExports.jsx(ListItemIcon$1, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(Icon, {}) }),
594
- /* @__PURE__ */ jsxRuntimeExports.jsx(ListItemText$1, { primary: label })
595
- ]
596
- },
597
- modeValue
598
- )) });
599
- const language = /* @__PURE__ */ jsxRuntimeExports.jsx(List$1, { subheader: /* @__PURE__ */ jsxRuntimeExports.jsxs(ListSubheader$1, { onClick: changeTab("settings"), sx: { backgroundColor: "transparent", display: "flex", alignItems: "center", px: 1, cursor: "pointer" }, children: [
600
- /* @__PURE__ */ jsxRuntimeExports.jsx(IconButton, { size: "small", sx: { mr: 0.5 }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ArrowBack, { fontSize: "small" }) }),
601
- " ",
602
- t("Layout.Language")
603
- ] }), children: supportedLanguages.map(
604
- (languageCode) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
605
- ListItemButton$1,
606
- {
607
- onClick: () => i18n2.changeLanguage(languageCode).finally(() => closeMenu()),
608
- selected: i18n2.resolvedLanguage === languageCode,
609
- children: [
610
- /* @__PURE__ */ jsxRuntimeExports.jsx(ListItemIcon$1, { children: i18n2.resolvedLanguage === languageCode && /* @__PURE__ */ jsxRuntimeExports.jsx(Done, {}) }),
611
- /* @__PURE__ */ jsxRuntimeExports.jsx(ListItemText$1, { primary: capitalize(languageDisplayNames.of(languageCode)) })
612
- ]
613
- },
614
- languageCode
615
- )
616
- ) });
617
- return /* @__PURE__ */ jsxRuntimeExports.jsxs(Fragment, { children: [
618
- /* @__PURE__ */ jsxRuntimeExports.jsx(IconButton, { size: "small", edge: "end", onClick: openMenu, children: user.photo ? /* @__PURE__ */ jsxRuntimeExports.jsx(
619
- Avatar$1,
620
- {
621
- src: user.photo,
622
- sx: { width: { xs: 32, sm: 40 }, height: { xs: 32, sm: 40 } }
623
- }
624
- ) : /* @__PURE__ */ jsxRuntimeExports.jsx(AccountCircle, { sx: { width: { xs: 32, sm: 40 }, height: { xs: 32, sm: 40 } } }) }),
625
- /* @__PURE__ */ jsxRuntimeExports.jsx(Menu, { anchorEl: anchorElement, open, onClose: closeMenu, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Box$1, { sx: { width: 240 }, children: [
626
- /* @__PURE__ */ jsxRuntimeExports.jsxs(List$1, { disablePadding: true, children: [
627
- /* @__PURE__ */ jsxRuntimeExports.jsx(ListItem$1, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(ListItemText$1, { primary: user.name, secondary: user.jobTitle }) }),
628
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
629
- ListItemButton$1,
630
- {
631
- onClick: () => instance.logoutRedirect({
632
- postLogoutRedirectUri: "/"
633
- }),
634
- children: [
635
- /* @__PURE__ */ jsxRuntimeExports.jsx(ListItemIcon$1, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(Logout, { color: "error" }) }),
636
- /* @__PURE__ */ jsxRuntimeExports.jsx(ListItemText$1, { primary: t("Layout.Logout") })
637
- ]
638
- }
639
- )
640
- ] }),
641
- tab === "settings" && settings,
642
- tab === "theme" && theme,
643
- tab === "language" && language
644
- ] }) })
645
- ] });
646
- };
647
- const YEAR_IN_SECONDS = 60 * 60 * 24 * 365;
648
- const getNavigationOpenStatus = createIsomorphicFn().server(() => {
649
- const cookie = getCookie("navigationOpen");
650
- return cookie === "true";
651
- }).client(() => {
652
- const cookie = document.cookie.split("; ").find((row) => row.startsWith("navigationOpen="));
653
- return cookie ? cookie.split("=")[1] === "true" : false;
654
- });
655
- const DrawerHeader = styled("div")(({ theme }) => ({
656
- display: "flex",
657
- alignItems: "center",
658
- justifyContent: "flex-end",
659
- padding: theme.spacing(0, 1),
660
- ...theme.mixins.toolbar
661
- }));
662
- const Layout = (props) => {
663
- const [navigationOpen, setNavigationOpen] = useState(getNavigationOpenStatus);
664
- const isFetching = !!useIsFetching();
665
- const isMutating = !!useIsMutating();
666
- return /* @__PURE__ */ jsxRuntimeExports.jsxs(Fragment, { children: [
667
- /* @__PURE__ */ jsxRuntimeExports.jsx(InitColorSchemeScript, {}),
668
- /* @__PURE__ */ jsxRuntimeExports.jsx(CssBaseline, {}),
669
- /* @__PURE__ */ jsxRuntimeExports.jsxs(Box$1, { sx: { display: "flex", height: "100dvh", maxHeight: "100dvh", overflow: "hidden", width: "100%" }, children: [
670
- /* @__PURE__ */ jsxRuntimeExports.jsx(
671
- AppBar,
672
- {
673
- color: "transparent",
674
- position: "fixed",
675
- sx: {
676
- borderBottom: "1px solid",
677
- borderColor: "var(--mui-palette-divider)",
678
- boxShadow: "none"
679
- },
680
- children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Toolbar, { children: [
681
- props.navigation && /* @__PURE__ */ jsxRuntimeExports.jsx(
682
- IconButton,
683
- {
684
- onClick: () => {
685
- setNavigationOpen((previous) => {
686
- const newValue = !previous;
687
- document.cookie = `navigationOpen=${newValue}; max-age=${YEAR_IN_SECONDS}; path=/`;
688
- return newValue;
689
- });
690
- },
691
- sx: { marginRight: 2 },
692
- children: navigationOpen ? /* @__PURE__ */ jsxRuntimeExports.jsx(MenuOpen, {}) : /* @__PURE__ */ jsxRuntimeExports.jsx(Menu$1, {})
693
- }
694
- ),
695
- /* @__PURE__ */ jsxRuntimeExports.jsx(AppTitle, {}),
696
- /* @__PURE__ */ jsxRuntimeExports.jsx(ToolbarAccount, {})
697
- ] })
698
- }
699
- ),
700
- props.navigation && /* @__PURE__ */ jsxRuntimeExports.jsx(
701
- NavigationRail,
702
- {
703
- navigation: props.navigation,
704
- expanded: navigationOpen,
705
- setExpanded: (newValue) => {
706
- setNavigationOpen(newValue);
707
- document.cookie = `navigationOpen=${newValue}; max-age=${YEAR_IN_SECONDS}; path=/`;
708
- }
709
- }
710
- ),
711
- /* @__PURE__ */ jsxRuntimeExports.jsxs(Box$1, { component: "main", sx: { flexGrow: 1, display: "flex", flexDirection: "column", minWidth: 0, height: "100%", overflow: "hidden" }, children: [
712
- /* @__PURE__ */ jsxRuntimeExports.jsx(DrawerHeader, {}),
713
- /* @__PURE__ */ jsxRuntimeExports.jsx(Box$1, { sx: { flex: 1, overflow: "auto", position: "relative" }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(AuthenticatedTemplate, { children: props.children }) })
714
- ] })
715
- ] }),
716
- (isFetching || isMutating) && /* @__PURE__ */ jsxRuntimeExports.jsx(LinearProgress, { sx: { position: "fixed", top: { xs: 56, sm: 64 }, left: 0, right: 0 } })
717
- ] });
718
- };
719
- const YEAR_IN_MINUTES = 60 * 24 * 365;
720
- i18n.use(LanguageDetector).use(initReactI18next).init({
721
- resources,
722
- fallbackLng: "en",
723
- supportedLngs: Object.keys(resources),
724
- detection: {
725
- caches: ["cookie"],
726
- cookieMinutes: YEAR_IN_MINUTES
727
- },
728
- interpolation: { escapeValue: false }
729
- });
730
- const LayoutProvider = ({ navigation, theme, children }) => {
731
- const languageChangedHandler = useEffectEvent(() => {
732
- z__default.config(z__default.core.locales[i18n.language]());
733
- dayjs.locale(i18n.language);
734
- });
735
- useEffect(() => {
736
- languageChangedHandler();
737
- i18n.on("languageChanged", languageChangedHandler);
738
- return () => {
739
- i18n.off("languageChanged", languageChangedHandler);
740
- };
741
- }, []);
742
- return /* @__PURE__ */ jsxRuntimeExports.jsx(MsalProvider, { instance: msalInstance, children: /* @__PURE__ */ jsxRuntimeExports.jsx(UserProvider, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(ThemeProvider, { theme, children: /* @__PURE__ */ jsxRuntimeExports.jsx(LocalizationProvider, { dateAdapter: AdapterDayjs, adapterLocale: i18n.language, children: /* @__PURE__ */ jsxRuntimeExports.jsx(DialogsProvider, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(Layout, { navigation, children }) }) }, i18n.language) }) }) });
743
- };
744
- const setSSRLanguage = createServerFn().handler(async () => {
745
- const language = getCookie(i18n.services.languageDetector.options.lookupCookie) || "en";
746
- z__default.config(z__default.core.locales[language]());
747
- dayjs.locale(language);
748
- await i18n.changeLanguage(language);
749
- });
1
+ import { LayoutProvider, setSSRLanguage } from "./providers/LayoutProvider.js";
2
+ import { rootRouteHead } from "./lib/utils.js";
750
3
  export {
751
4
  LayoutProvider,
752
- r as rootRouteHead,
5
+ rootRouteHead,
753
6
  setSSRLanguage
754
7
  };
755
8
  //# sourceMappingURL=index.js.map