wcz-layout 7.6.1 → 7.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/core/navigation/NavigationList.d.ts +4 -4
- package/dist/components/core/navigation/NavigationListItem.d.ts +3 -3
- package/dist/index.js.map +1 -1
- package/dist/models/Navigation.d.ts +23 -11
- package/package.json +8 -2
- package/skills/api-routes/SKILL.md +251 -0
- package/skills/auth/SKILL.md +268 -0
- package/skills/data-grid/SKILL.md +229 -0
- package/skills/database-schema/SKILL.md +182 -0
- package/skills/dialogs-notifications/SKILL.md +241 -0
- package/skills/forms-validation/SKILL.md +331 -0
- package/skills/forms-validation/references/field-components.md +212 -0
- package/skills/layout-navigation/SKILL.md +259 -0
- package/skills/project-initialization/SKILL.md +181 -0
- package/skills/project-structure/SKILL.md +157 -0
- package/skills/tanstack-db-collections/SKILL.md +270 -0
- package/skills/ui-pages/SKILL.md +278 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FC, ReactNode } from 'react';
|
|
2
|
-
import { Navigation, NavigationDivider, NavigationHeader, NavigationItem, NavigationPageItem } from '../../../models/Navigation';
|
|
3
|
-
export declare const isPageItem: (item: NavigationItem) => item is NavigationPageItem;
|
|
2
|
+
import { Navigation, NavigationDivider, NavigationHeader, NavigationItem, NavigationPageGroup, NavigationPageItem } from '../../../models/Navigation';
|
|
3
|
+
export declare const isPageItem: (item: NavigationItem) => item is NavigationPageItem | NavigationPageGroup;
|
|
4
4
|
export declare const isDivider: (item: NavigationItem) => item is NavigationDivider;
|
|
5
5
|
export declare const isHeader: (item: NavigationItem) => item is NavigationHeader;
|
|
6
6
|
interface NavigationListProps {
|
|
@@ -11,11 +11,11 @@ interface NavigationListProps {
|
|
|
11
11
|
isSidebarFullyExpanded?: boolean;
|
|
12
12
|
isSidebarFullyCollapsed?: boolean;
|
|
13
13
|
expandedWidth: number | string;
|
|
14
|
-
renderItem?: (item: NavigationPageItem, context: {
|
|
14
|
+
renderItem?: (item: NavigationPageItem | NavigationPageGroup, context: {
|
|
15
15
|
collapsed: boolean;
|
|
16
16
|
}) => ReactNode;
|
|
17
17
|
activePath?: string | null;
|
|
18
|
-
onNavigate: (item: NavigationPageItem) => void;
|
|
18
|
+
onNavigate: (item: NavigationPageItem | NavigationPageGroup) => void;
|
|
19
19
|
onClose?: () => void;
|
|
20
20
|
}
|
|
21
21
|
export declare const NavigationList: FC<NavigationListProps>;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { NavigationItem, NavigationPageItem } from '../../../models/Navigation';
|
|
1
|
+
import { NavigationItem, NavigationPageGroup, NavigationPageItem } from '../../../models/Navigation';
|
|
2
2
|
import { FC, ReactNode } from 'react';
|
|
3
3
|
interface NavigationListItemProps {
|
|
4
|
-
item: NavigationPageItem;
|
|
4
|
+
item: NavigationPageItem | NavigationPageGroup;
|
|
5
5
|
isOpen?: boolean;
|
|
6
6
|
selected?: boolean;
|
|
7
7
|
disabled?: boolean;
|
|
8
8
|
collapsed?: boolean;
|
|
9
9
|
isSidebarFullyExpanded?: boolean;
|
|
10
10
|
isSidebarFullyCollapsed?: boolean;
|
|
11
|
-
onClick?: (item: NavigationPageItem) => void;
|
|
11
|
+
onClick?: (item: NavigationPageItem | NavigationPageGroup) => void;
|
|
12
12
|
renderNested?: (sub: Array<NavigationItem>) => ReactNode;
|
|
13
13
|
onClose?: () => void;
|
|
14
14
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["useEventCallback","useId","useRef","useState","DialogsContext","DialogComponent","OpenDialog","OpenDialogOptions","DialogStackEntry","key","open","promise","Promise","TResult","Component","TPayload","payload","onClose","result","resolve","DialogProviderProps","children","React","ReactNode","DialogsProvider","Readonly","stack","setStack","Array","keyPrefix","nextId","dialogMetadata","WeakMap","requestDialog","options","resolveImpl","current","newEntry","set","previousStack","removeDialogFromStack","dialog","filter","entry","delete","closeDialogUi","map","setTimeout","closeDialog","entryToClose","get","Error","close","Alert","Snackbar","useEffect","useRef","useState","SnackbarOrigin","AlertColor","NotificationOptions","NotificationContext","Notification","message","severity","autoHideDuration","NotificationProviderProps","children","React","ReactNode","snackbarOrigin","STACK_INTERVAL","NotificationProvider","FC","t0","$","_c","t1","Symbol","for","queue","setQueue","current","setCurrent","open","Boolean","processingTimeout","t2","prevQueue","length","next","rest","processQueue","t3","t4","setTimeout","clearTimeout","t5","options","notification","prev","notify","t6","t7","t8","_event","reason","t9","t10","undefined","t11","t12","queryCollectionOptions","createCollection","axios","z","getAccessToken","queryClient","api","create","baseURL","interceptors","request","use","config","accessToken","headers","set","userPhotoSchema","object","id","string","photoUrl","UserPhoto","infer","fetchProfilePhoto","Promise","Array","response","get","responseType","base64","btoa","Uint8Array","data","reduce","byte","String","fromCodePoint","userPhotoCollection","queryKey","schema","queryFn","getKey","item","staleTime","Infinity","gcTime","Avatar","useLiveSuspenseQuery","FC","userPhotoCollection","UserAvatar","$","_c","data","_temp","t0","photoUrl","t1","Symbol","for","width","xs","sm","height","t2","q","from","todo","findOne","AuthenticatedTemplate","UnauthenticatedTemplate","useMsal","AccountCircle","ArrowBack","Brightness4","ChevronRight","DarkMode","Done","LightMode","Login","Logout","SettingsBrightness","Translate","Box","IconButton","List","ListItem","ListItemButton","ListItemIcon","ListItemText","ListSubheader","Menu","useColorScheme","rootRouteId","useMatch","FC","Fragment","useState","useTranslation","UserAvatar","TabType","capitalize","value","charAt","toUpperCase","slice","ToolbarAccount","$","_c","anchorElement","setAnchorElement","tab","setTab","open","Boolean","t","i18n","mode","setMode","instance","t0","Symbol","for","from","rootMatch","user","context","T0","closeMenu","openMenu","settings","t1","t2","theme","supportedLanguages","Array","isArray","options","supportedLngs","filter","_temp","languageDisplayNames","Intl","DisplayNames","language","type","t3","t4","icon","label","t5","t6","t7","t8","t9","colorModes","t10","event","currentTarget","t11","undefined","setTimeout","t12","newTab","changeTab","t13","backgroundColor","t14","t15","t16","t17","py","t18","t19","t20","find","m","t21","t22","t23","t24","t25","t26","t27","t28","t29","of","t30","t31","t32","display","alignItems","px","cursor","t33","mr","t34","t35","t36","map","t37","modeValue","Icon","t38","t39","t40","t41","languageCode","changeLanguage","finally","resolvedLanguage","width","xs","sm","height","name","employeeId","department","logoutRedirect","postLogoutRedirectUri","loginRedirect","lng","Chip","Stack","Typography","useRouter","z","FC","clientEnv","RouterIconButton","PRODUCTION_ENV","getEnv","url","string","refine","u","split","length","transform","toUpperCase","catch","parse","AppTitle","$","_c","router","t0","origin","env","isProduction","t1","t2","Symbol","for","VITE_APP_TITLE","t3","t4","ExpandMoreIcon","Collapse","Grow","Avatar","Box","ListItem","ListItemButton","ListItemIcon","ListItemText","Paper","styled","Typography","Fragment","useState","MINI_WIDTH","NavigationItem","NavigationPageItem","FC","ReactNode","SxProps","Theme","RouterListItemButton","ICON_SIZE","getSelectedColor","theme","vars","palette","primary","dark","getActionActiveColor","action","active","StyledNavButton","borderRadius","color","backgroundColor","StyledRouterButton","IconOrAvatar","item","collapsed","t0","$","_c","icon","t1","position","left","top","transform","t2","Symbol","for","display","alignItems","justifyContent","minWidth","t3","t4","title","width","height","fontSize","split","slice","map","_temp","t5","t6","bottom","fontWeight","textAlign","whiteSpace","overflow","textOverflow","maxWidth","t7","MiniPopoverProps","open","children","MiniPopover","pl","pb","pt","maxHeight","overflowY","overscrollBehavior","NavigationListItemProps","isOpen","selected","disabled","isSidebarFullyExpanded","isSidebarFullyCollapsed","onClick","renderNested","sub","Array","onClose","NavigationListItem","undefined","hoveredMiniItemId","setHoveredMiniItemId","itemId","to","right","ml","transition","transitions","create","easing","sharp","duration","chevronSx","shouldJustExpand","px","sx","buttonProps","noWrap","flex","t8","t9","buttonContent","t10","onMouseEnter","onMouseLeave","t11","py","overflowX","t12","href","params","search","t13","t14","listItem","t15","t16","word","charAt","toUpperCase","Divider","List","ListSubheader","Fragment","useEffect","useState","NavigationListItem","MINI_WIDTH","FC","ReactNode","Navigation","NavigationDivider","NavigationHeader","NavigationItem","NavigationPageItem","isPageItem","item","isDivider","kind","isHeader","NavigationListProps","subNavigation","depth","collapsed","isPopover","isSidebarFullyExpanded","isSidebarFullyCollapsed","expandedWidth","renderItem","context","activePath","onNavigate","onClose","NavigationList","t0","$","_c","t1","t2","undefined","t3","Symbol","for","openKeys","setOpenKeys","t4","t5","t6","key","previous","includes","filter","k","toggleKey","t7","children","renderNested","t8","filteredNavigation","_temp","t9","t10","t11","t12","t13","t14","padding","mt","mb","pl","minWidth","width","map","navItem","index","fontSize","fontWeight","height","px","overflow","textOverflow","whiteSpace","zIndex","bgcolor","position","title","nextItem","mx","key_0","uniqueItemKey","to","nav","hidden","Box","useLocation","useNavigate","NavigationList","isHeader","EXPANDED_WIDTH","FC","Navigation","NavigationContentProps","navigation","collapsed","expanded","setExpanded","open","showPermanent","NavigationContent","t0","$","_c","navigate","location","t1","t2","t3","height","display","flexDirection","justifyContent","overflow","scrollbarGutter","overflowX","pt","t4","t5","undefined","t6","pathname","t7","Drawer","Fragment","NavigationContent","FC","Navigation","MINI_WIDTH","EXPANDED_WIDTH","TOOLBAR_HEIGHT","NavigationRailProps","navigation","expanded","setExpanded","open","NavigationRail","t0","$","_c","t1","Symbol","for","xs","sm","t2","t3","theme","position","top","height","width","background","borderTop","borderColor","vars","palette","divider","boxShadow","t4","display","t5","t6","t7","t8","t9","t10","t11","t12","InteractionType","MsalAuthenticationTemplate","Menu","MenuOpen","AppBar","Box","CssBaseline","IconButton","InitColorSchemeScript","Toolbar","styled","useMatches","FC","ReactNode","Fragment","useState","Platform","LayoutOptions","Navigation","ToolbarAccount","AppTitle","NavigationRail","NAVIGATION_STORAGE_KEY","getInitialNavigationOpen","isWindows","isMacOS","localStorage","getItem","saveNavigationState","value","setItem","String","DrawerHeader","theme","display","alignItems","justifyContent","padding","spacing","mixins","toolbar","LayoutProps","navigation","options","children","Layout","t0","$","_c","navigationOpen","setNavigationOpen","matches","t1","publicRoutes","currentRoutePath","at","fullPath","includes","isPublicRoute","showShell","t2","t3","Symbol","for","t4","height","maxHeight","overflow","width","t5","borderBottom","borderColor","boxShadow","_temp","marginRight","t6","newValue_0","newValue","t7","flexGrow","flexDirection","minWidth","t8","t9","flex","position","t10","Redirect","t11","t12","t13","previous","EventMessage","EventType","InteractionStatus","MsalProvider","useMsal","useNavigate","useRouter","FC","ReactNode","useEffect","useRef","useState","pca","subscribeToTokenInteractionRequired","TanStackNavigationClient","MsalAuthProviderProps","children","MsalAuthEffects","$","_c","accounts","inProgress","instance","router","pendingScopes","setPendingScopes","previousInProgress","navigate","setNavigationClient","t0","t1","callbackId","addEventCallback","event","eventType","LOGIN_SUCCESS","ACQUIRE_TOKEN_SUCCESS","LOGOUT_SUCCESS","invalidate","removeEventCallback","t2","t3","wasInteracting","current","None","t4","t5","Symbol","for","t6","t7","account","getActiveAccount","acquireTokenRedirect","scopes","catch","_temp","MsalAuthProvider","ThemeProvider","LocalizationProvider","AdapterDayjs","dayjs","i18n","LanguageDetector","initReactI18next","resources","z","useEffect","DialogsProvider","NotificationProvider","FC","ReactNode","LayoutOptions","Navigation","Theme","Layout","MsalAuthProvider","YEAR_IN_MINUTES","setLocale","language","config","core","locales","locale","use","init","fallbackLng","supportedLngs","Object","keys","detection","caches","cookieMinutes","interpolation","escapeValue","showSupportNotice","resolvedLanguage","on","ProvidersProps","options","navigation","theme","children","LayoutProvider","t0","$","_c","t1","Symbol","for","_temp","t2","snackbarOrigin","t3","t4","t5","navigator","serviceWorker","register"],"sources":["../src/providers/DialogsProvider.tsx","../src/providers/NotificationProvider.tsx","../src/lib/db/collections/userCollection.ts","../src/components/core/account/UserAvatar.tsx","../src/components/core/account/UserMenu.tsx","../src/components/core/AppTitle.tsx","../src/components/core/navigation/NavigationListItem.tsx","../src/components/core/navigation/NavigationList.tsx","../src/components/core/navigation/NavigationContent.tsx","../src/components/core/navigation/NavigationRail.tsx","../src/components/core/Layout.tsx","../src/providers/MsalAuthProvider.tsx","../src/providers/LayoutProvider.tsx"],"sourcesContent":["import useEventCallback from \"@mui/utils/useEventCallback\";\nimport { useId, useRef, useState } from \"react\";\nimport { DialogsContext } from \"../contexts/DialogsContext\";\nimport type { DialogComponent, OpenDialog, OpenDialogOptions } from \"../hooks/DialogsHooks\";\n\ninterface DialogStackEntry<TPayload, TResult> {\n key: string;\n open: boolean;\n promise: Promise<TResult>;\n Component: DialogComponent<TPayload, TResult>;\n payload: TPayload;\n onClose: (result: TResult) => Promise<void>;\n resolve: (result: TResult) => void;\n}\n\nexport interface DialogProviderProps {\n children?: React.ReactNode;\n}\n\nfunction DialogsProvider({ children }: Readonly<DialogProviderProps>) {\n const [stack, setStack] = useState<Array<DialogStackEntry<any, any>>>([]);\n const keyPrefix = useId();\n const nextId = useRef(0);\n const dialogMetadata = useRef(new WeakMap<Promise<any>, DialogStackEntry<any, any>>());\n\n const requestDialog = useEventCallback<OpenDialog>(function open<TPayload, TResult>(\n Component: DialogComponent<TPayload, TResult>,\n payload: TPayload,\n options: OpenDialogOptions<TResult> = {},\n ) {\n const { onClose = async () => {} } = options;\n\n let resolve: (result: TResult) => void;\n const promise = new Promise<TResult>((resolveImpl) => {\n resolve = resolveImpl;\n });\n\n const key = `${keyPrefix}-${nextId.current}`;\n nextId.current += 1;\n\n const newEntry: DialogStackEntry<TPayload, TResult> = {\n key,\n open: true,\n promise,\n Component,\n payload,\n onClose,\n resolve: resolve!,\n };\n\n dialogMetadata.current.set(promise, newEntry);\n\n setStack((previousStack) => [...previousStack, newEntry]);\n\n return promise;\n });\n\n const removeDialogFromStack = (dialog: Promise<any>) => {\n setStack((previousStack) => previousStack.filter((entry) => entry.promise !== dialog));\n dialogMetadata.current.delete(dialog);\n };\n\n const closeDialogUi = useEventCallback(function closeDialogUi<TResult>(dialog: Promise<TResult>) {\n setStack((previousStack) =>\n previousStack.map((entry) => (entry.promise === dialog ? { ...entry, open: false } : entry)),\n );\n\n setTimeout(() => removeDialogFromStack(dialog), 1000);\n });\n\n const closeDialog = useEventCallback(async function closeDialog<TResult>(\n dialog: Promise<TResult>,\n result: TResult,\n ) {\n const entryToClose = dialogMetadata.current.get(dialog);\n if (!entryToClose) {\n throw new Error(\"Dialog not found in stack\");\n }\n\n try {\n await entryToClose.onClose(result);\n } finally {\n entryToClose.resolve(result);\n closeDialogUi(dialog);\n }\n\n return dialog;\n });\n\n return (\n <DialogsContext.Provider value={{ open: requestDialog, close: closeDialog }}>\n {children}\n {stack.map(({ key, open, Component, payload, promise }) => (\n <Component\n key={key}\n payload={payload}\n open={open}\n onClose={async (result) => {\n await closeDialog(promise, result);\n }}\n />\n ))}\n </DialogsContext.Provider>\n );\n}\n\nexport { DialogsProvider };\n","import Alert from \"@mui/material/Alert\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { useEffect, useRef, useState } from \"react\";\nimport type { SnackbarOrigin } from \"@mui/material/Snackbar\";\nimport type { AlertColor } from \"@mui/material/Alert\";\nimport type { NotificationOptions } from \"~/contexts/NotificationContext\";\nimport { NotificationContext } from \"~/contexts/NotificationContext\";\n\ninterface Notification {\n message: string;\n severity?: AlertColor;\n autoHideDuration: number;\n}\n\ninterface NotificationProviderProps {\n children: React.ReactNode;\n snackbarOrigin?: SnackbarOrigin;\n}\n\nconst STACK_INTERVAL = 1000;\n\nexport const NotificationProvider: React.FC<NotificationProviderProps> = ({\n children,\n snackbarOrigin,\n}) => {\n const [queue, setQueue] = useState<Array<Notification>>([]);\n const [current, setCurrent] = useState<Notification | null>(null);\n const open = Boolean(current);\n const processingTimeout = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const processQueue = () => {\n setQueue((prevQueue) => {\n if (prevQueue.length === 0) return prevQueue;\n\n const [next, ...rest] = prevQueue;\n setCurrent(next);\n return rest;\n });\n };\n\n useEffect(() => {\n if (!open && queue.length > 0) {\n processingTimeout.current = setTimeout(processQueue, current ? STACK_INTERVAL : 0);\n }\n\n return () => {\n if (processingTimeout.current) {\n clearTimeout(processingTimeout.current);\n }\n };\n }, [open, queue.length, current]);\n\n const notify = (message: string, options?: NotificationOptions) => {\n const notification: Notification = {\n message,\n severity: options?.severity,\n autoHideDuration: options?.autoHideDuration ?? 5000,\n };\n\n setQueue((prev) => [...prev, notification]);\n };\n\n return (\n <NotificationContext value={{ notify }}>\n {children}\n <Snackbar\n open={open}\n autoHideDuration={current?.autoHideDuration}\n onClose={(_event, reason) => {\n if (reason === \"clickaway\") return;\n setCurrent(null);\n }}\n anchorOrigin={snackbarOrigin}\n message={current?.message}\n >\n {current?.severity ? (\n <Alert onClose={() => setCurrent(null)} severity={current.severity} variant=\"filled\">\n {current.message}\n </Alert>\n ) : undefined}\n </Snackbar>\n </NotificationContext>\n );\n};\n","import { queryCollectionOptions } from \"@tanstack/query-db-collection\";\nimport { createCollection } from \"@tanstack/react-db\";\nimport axios from \"axios\";\nimport * as z from \"zod\";\nimport { getAccessToken } from \"~/lib/auth/msalClient\";\nimport { queryClient } from \"~/lib/queryClient\";\n\nexport const api = axios.create({\n baseURL: \"https://graph.microsoft.com/v1.0\",\n});\n\napi.interceptors.request.use(async (config) => {\n const accessToken = await getAccessToken(\"graph\");\n config.headers.set(\"Authorization\", `Bearer ${accessToken}`);\n return config;\n});\n\nconst userPhotoSchema = z.object({\n id: z.string(),\n photoUrl: z.string(),\n});\n\ntype UserPhoto = z.infer<typeof userPhotoSchema>;\n\nconst fetchProfilePhoto = async (): Promise<Array<UserPhoto>> => {\n const response = await api.get(\"/me/photo/$value\", {\n responseType: \"arraybuffer\",\n });\n\n const base64 = btoa(\n new Uint8Array(response.data).reduce((data, byte) => data + String.fromCodePoint(byte), \"\"),\n );\n\n return [\n {\n id: \"me\",\n photoUrl: `data:image/jpeg;base64,${base64}`,\n },\n ];\n};\n\nexport const userPhotoCollection = createCollection(\n queryCollectionOptions({\n queryKey: [\"graph\", \"me\", \"photo\"],\n schema: userPhotoSchema,\n queryFn: fetchProfilePhoto,\n getKey: (item) => item.id,\n queryClient,\n staleTime: Infinity,\n gcTime: Infinity,\n }),\n);\n","import { Avatar } from \"@mui/material\";\r\nimport { useLiveSuspenseQuery } from \"@tanstack/react-db\";\r\nimport { FC } from \"react\";\r\nimport { userPhotoCollection } from \"~/lib/db/collections/userCollection\";\r\n\r\nexport const UserAvatar: FC = () => {\r\n const { data } = useLiveSuspenseQuery((q) => q.from({ todo: userPhotoCollection }).findOne());\r\n\r\n return (\r\n <Avatar src={data?.photoUrl} sx={{ width: { xs: 32, sm: 40 }, height: { xs: 32, sm: 40 } }} />\r\n );\r\n};\r\n","import { AuthenticatedTemplate, UnauthenticatedTemplate, useMsal } from \"@azure/msal-react\";\r\nimport AccountCircle from \"@mui/icons-material/AccountCircle\";\r\nimport ArrowBack from \"@mui/icons-material/ArrowBack\";\r\nimport Brightness4 from \"@mui/icons-material/Brightness4\";\r\nimport ChevronRight from \"@mui/icons-material/ChevronRight\";\r\nimport DarkMode from \"@mui/icons-material/DarkMode\";\r\nimport Done from \"@mui/icons-material/Done\";\r\nimport LightMode from \"@mui/icons-material/LightMode\";\r\nimport Login from \"@mui/icons-material/Login\";\r\nimport Logout from \"@mui/icons-material/Logout\";\r\nimport SettingsBrightness from \"@mui/icons-material/SettingsBrightness\";\r\nimport Translate from \"@mui/icons-material/Translate\";\r\nimport {\r\n Box,\r\n IconButton,\r\n List,\r\n ListItem,\r\n ListItemButton,\r\n ListItemIcon,\r\n ListItemText,\r\n ListSubheader,\r\n Menu,\r\n useColorScheme,\r\n} from \"@mui/material\";\r\nimport { rootRouteId, useMatch } from \"@tanstack/react-router\";\r\nimport type { FC } from \"react\";\r\nimport { Fragment, useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { UserAvatar } from \"./UserAvatar\";\r\n\r\ntype TabType = \"settings\" | \"theme\" | \"language\";\r\nconst capitalize = (value: string | undefined) =>\r\n value && value.charAt(0).toUpperCase() + value.slice(1);\r\n\r\nexport const ToolbarAccount: FC = () => {\r\n const [anchorElement, setAnchorElement] = useState<HTMLElement>();\r\n const [tab, setTab] = useState<TabType>(\"settings\");\r\n const open = Boolean(anchorElement);\r\n const { t, i18n } = useTranslation();\r\n const { mode, setMode } = useColorScheme();\r\n const { instance } = useMsal();\r\n const rootMatch = useMatch({ from: rootRouteId });\r\n const user = rootMatch.context.user;\r\n\r\n const supportedLanguages = (\r\n Array.isArray(i18n.options.supportedLngs) ? i18n.options.supportedLngs : []\r\n ).filter((lng) => lng !== \"cimode\");\r\n const languageDisplayNames = new Intl.DisplayNames([i18n.language], { type: \"language\" });\r\n\r\n const colorModes: Array<{\r\n mode: Exclude<typeof mode, undefined>;\r\n icon: typeof LightMode;\r\n label: string;\r\n }> = [\r\n { mode: \"light\", icon: LightMode, label: t(\"Layout.Light\") },\r\n { mode: \"dark\", icon: DarkMode, label: t(\"Layout.Dark\") },\r\n { mode: \"system\", icon: SettingsBrightness, label: t(\"Layout.System\") },\r\n ];\r\n\r\n const openMenu = (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) =>\r\n setAnchorElement(event.currentTarget);\r\n const closeMenu = () => {\r\n setAnchorElement(undefined);\r\n setTimeout(() => setTab(\"settings\"), 300);\r\n };\r\n\r\n const changeTab = (newTab: TabType) => () => setTab(newTab);\r\n\r\n const settings = (\r\n <List\r\n component=\"nav\"\r\n subheader={\r\n <ListSubheader sx={{ backgroundColor: \"transparent\" }}>\r\n {t(\"Layout.Settings\")}\r\n </ListSubheader>\r\n }\r\n >\r\n <ListItemButton onClick={changeTab(\"theme\")} sx={{ py: 0.3 }}>\r\n <ListItemIcon>\r\n <Brightness4 />\r\n </ListItemIcon>\r\n <ListItemText\r\n primary={t(\"Layout.Appearance\")}\r\n secondary={colorModes.find((m) => m.mode === mode)?.label ?? t(\"Layout.System\")}\r\n />\r\n <ChevronRight />\r\n </ListItemButton>\r\n\r\n <ListItemButton onClick={changeTab(\"language\")} sx={{ py: 0.3 }}>\r\n <ListItemIcon>\r\n <Translate />\r\n </ListItemIcon>\r\n <ListItemText\r\n primary={t(\"Layout.Language\")}\r\n secondary={capitalize(languageDisplayNames.of(i18n.language))}\r\n />\r\n <ChevronRight />\r\n </ListItemButton>\r\n </List>\r\n );\r\n\r\n const theme = (\r\n <List\r\n subheader={\r\n <ListSubheader\r\n onClick={changeTab(\"settings\")}\r\n sx={{\r\n backgroundColor: \"transparent\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n px: 1,\r\n cursor: \"pointer\",\r\n }}\r\n >\r\n <IconButton size=\"small\" sx={{ mr: 0.5 }}>\r\n <ArrowBack fontSize=\"small\" />\r\n </IconButton>{\" \"}\r\n {t(\"Layout.Appearance\")}\r\n </ListSubheader>\r\n }\r\n >\r\n {colorModes.map(({ mode: modeValue, icon: Icon, label }) => (\r\n <ListItemButton\r\n key={modeValue}\r\n onClick={() => {\r\n setMode(modeValue);\r\n closeMenu();\r\n }}\r\n selected={mode === modeValue}\r\n >\r\n <ListItemIcon>\r\n <Icon />\r\n </ListItemIcon>\r\n <ListItemText primary={label} />\r\n </ListItemButton>\r\n ))}\r\n </List>\r\n );\r\n\r\n const language = (\r\n <List\r\n subheader={\r\n <ListSubheader\r\n onClick={changeTab(\"settings\")}\r\n sx={{\r\n backgroundColor: \"transparent\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n px: 1,\r\n cursor: \"pointer\",\r\n }}\r\n >\r\n <IconButton size=\"small\" sx={{ mr: 0.5 }}>\r\n <ArrowBack fontSize=\"small\" />\r\n </IconButton>{\" \"}\r\n {t(\"Layout.Language\")}\r\n </ListSubheader>\r\n }\r\n >\r\n {supportedLanguages.map((languageCode) => (\r\n <ListItemButton\r\n key={languageCode}\r\n onClick={() => i18n.changeLanguage(languageCode).finally(() => closeMenu())}\r\n selected={i18n.resolvedLanguage === languageCode}\r\n >\r\n <ListItemIcon>{i18n.resolvedLanguage === languageCode && <Done />}</ListItemIcon>\r\n <ListItemText primary={capitalize(languageDisplayNames.of(languageCode))} />\r\n </ListItemButton>\r\n ))}\r\n </List>\r\n );\r\n\r\n return (\r\n <Fragment>\r\n <IconButton size=\"small\" edge=\"end\" onClick={openMenu}>\r\n <AuthenticatedTemplate>\r\n <UserAvatar />\r\n </AuthenticatedTemplate>\r\n <UnauthenticatedTemplate>\r\n <AccountCircle sx={{ width: { xs: 32, sm: 40 }, height: { xs: 32, sm: 40 } }} />\r\n </UnauthenticatedTemplate>\r\n </IconButton>\r\n\r\n <Menu anchorEl={anchorElement} open={open} onClose={closeMenu}>\r\n <Box sx={{ width: 240 }}>\r\n <List disablePadding>\r\n <AuthenticatedTemplate>\r\n <ListItem>\r\n <ListItemText\r\n primary={user?.name}\r\n secondary={\r\n <span>\r\n {user?.employeeId && <span>{user.employeeId}</span>}\r\n {user?.employeeId && <br />}\r\n {user?.department && <span>{user.department}</span>}\r\n </span>\r\n }\r\n />\r\n </ListItem>\r\n <ListItemButton\r\n onClick={() => instance.logoutRedirect({ postLogoutRedirectUri: \"/\" })}\r\n >\r\n <ListItemIcon>\r\n <Logout color=\"error\" />\r\n </ListItemIcon>\r\n <ListItemText primary={t(\"Layout.Logout\")} />\r\n </ListItemButton>\r\n </AuthenticatedTemplate>\r\n\r\n <UnauthenticatedTemplate>\r\n <ListItemButton onClick={() => instance.loginRedirect()}>\r\n <ListItemIcon>\r\n <Login color=\"success\" />\r\n </ListItemIcon>\r\n <ListItemText primary={t(\"Layout.LogIn\")} />\r\n </ListItemButton>\r\n </UnauthenticatedTemplate>\r\n </List>\r\n\r\n {tab === \"settings\" && settings}\r\n {tab === \"theme\" && theme}\r\n {tab === \"language\" && language}\r\n </Box>\r\n </Menu>\r\n </Fragment>\r\n );\r\n};\r\n","import { Chip, Stack, Typography } from \"@mui/material\";\nimport { useRouter } from \"@tanstack/react-router\";\nimport z from \"zod\";\nimport type { FC } from \"react\";\nimport { clientEnv } from \"~/env\";\nimport { RouterIconButton } from \"~/components/router/RouterIconButton\";\n\nconst PRODUCTION_ENV = \"PRD\";\n\nconst getEnv = (url: string | undefined) =>\n z\n .string()\n .refine((u) => u.split(\"-\").length > 2)\n .transform((u) => u.split(\"-\")[2].toUpperCase())\n .catch(\"LOCALHOST\")\n .parse(url);\n\nexport const AppTitle: FC = () => {\n const router = useRouter();\n const env = getEnv(router.origin);\n const isProduction = env === PRODUCTION_ENV;\n\n return (\n <Stack direction=\"row\" alignItems=\"center\" spacing={1} flexGrow={1}>\n <RouterIconButton to=\"/\" size=\"small\">\n <img src=\"/favicon-32x32.png\" alt=\"app-logo\" loading=\"lazy\" />\n </RouterIconButton>\n <Typography variant=\"h6\">{clientEnv.VITE_APP_TITLE}</Typography>\n {!isProduction && <Chip size=\"small\" label={env} color=\"primary\" />}\n </Stack>\n );\n};\n","import ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\nimport { Collapse, Grow } from \"@mui/material\";\nimport Avatar from \"@mui/material/Avatar\";\nimport Box from \"@mui/material/Box\";\nimport ListItem from \"@mui/material/ListItem\";\nimport ListItemButton from \"@mui/material/ListItemButton\";\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport Paper from \"@mui/material/Paper\";\nimport { styled } from \"@mui/material/styles\";\nimport Typography from \"@mui/material/Typography\";\nimport { Fragment, useState } from \"react\";\nimport { MINI_WIDTH } from \"./NavigationRail\";\nimport type { NavigationItem, NavigationPageItem } from \"~/models/Navigation\";\nimport type { FC, ReactNode } from \"react\";\nimport type { SxProps, Theme } from \"@mui/material/styles\";\nimport { RouterListItemButton } from \"~/components/router/RouterListItemButton\";\n\nconst ICON_SIZE = 34;\n\nconst getSelectedColor = (theme: Theme) =>\n theme.vars?.palette.primary.dark ?? theme.palette.primary.dark;\n\nconst getActionActiveColor = (theme: Theme) =>\n theme.vars?.palette.action.active ?? theme.palette.action.active;\n\nconst StyledNavButton = styled(ListItemButton)(({ theme }) => ({\n borderRadius: 8,\n \"&.Mui-selected\": {\n \"& .MuiListItemIcon-root, & .MuiTypography-root, & .MuiSvgIcon-root\": {\n color: getSelectedColor(theme),\n },\n \"& .MuiAvatar-root\": {\n backgroundColor: getSelectedColor(theme),\n },\n \"& .MuiTouchRipple-child\": {\n backgroundColor: getSelectedColor(theme),\n },\n },\n \"& .MuiSvgIcon-root\": {\n color: getActionActiveColor(theme),\n },\n \"& .MuiAvatar-root\": {\n backgroundColor: getActionActiveColor(theme),\n },\n}));\n\nconst StyledRouterButton = styled(RouterListItemButton)(({ theme }) => ({\n borderRadius: 8,\n \"&.Mui-selected\": {\n \"& .MuiListItemIcon-root, & .MuiTypography-root, & .MuiSvgIcon-root\": {\n color: getSelectedColor(theme),\n },\n \"& .MuiAvatar-root\": {\n backgroundColor: getSelectedColor(theme),\n },\n \"& .MuiTouchRipple-child\": {\n backgroundColor: getSelectedColor(theme),\n },\n },\n \"& .MuiSvgIcon-root\": {\n color: getActionActiveColor(theme),\n },\n \"& .MuiAvatar-root\": {\n backgroundColor: getActionActiveColor(theme),\n },\n}));\n\nconst IconOrAvatar: FC<{ item: NavigationPageItem; collapsed?: boolean }> = ({\n item,\n collapsed,\n}) => {\n if (item.icon || collapsed) {\n return (\n <Box\n sx={\n collapsed\n ? {\n position: \"absolute\",\n left: \"50%\",\n top: \"calc(50% - 6px)\",\n transform: \"translate(-50%, -50%)\",\n }\n : {}\n }\n >\n <ListItemIcon\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n minWidth: ICON_SIZE,\n }}\n >\n {item.icon ?? null}\n {!item.icon && collapsed ? (\n <Avatar sx={{ width: ICON_SIZE - 7, height: ICON_SIZE - 7, fontSize: 12 }}>\n {item.title\n .split(\" \")\n .slice(0, 2)\n .map((word) => word.charAt(0).toUpperCase())}\n </Avatar>\n ) : null}\n </ListItemIcon>\n {collapsed ? (\n <Typography\n variant=\"caption\"\n sx={{\n position: \"absolute\",\n bottom: -18,\n left: \"50%\",\n transform: \"translateX(-50%)\",\n fontSize: 10,\n fontWeight: 500,\n textAlign: \"center\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n maxWidth: MINI_WIDTH - 28,\n }}\n >\n {item.title}\n </Typography>\n ) : null}\n </Box>\n );\n }\n return null;\n};\n\ninterface MiniPopoverProps {\n open: boolean;\n children?: ReactNode;\n}\n\nconst MiniPopover: FC<MiniPopoverProps> = ({ open, children }) => (\n <Grow in={open}>\n <Box\n sx={{\n position: \"fixed\",\n left: MINI_WIDTH,\n pl: \"2px\",\n pb: \"10px\",\n }}\n >\n <Paper\n sx={{\n pt: 0.5,\n pb: 0.5,\n transform: \"translateY(calc(50% - 30px))\",\n maxHeight: \"min(calc(100vh - 100px), 560px)\",\n overflowY: \"auto\",\n overscrollBehavior: \"contain\",\n }}\n >\n {children}\n </Paper>\n </Box>\n </Grow>\n);\n\ninterface NavigationListItemProps {\n item: NavigationPageItem;\n isOpen?: boolean;\n selected?: boolean;\n disabled?: boolean;\n collapsed?: boolean;\n isSidebarFullyExpanded?: boolean;\n isSidebarFullyCollapsed?: boolean;\n onClick?: (item: NavigationPageItem) => void;\n renderNested?: (sub: Array<NavigationItem>) => ReactNode;\n onClose?: () => void;\n}\n\nexport const NavigationListItem: FC<NavigationListItemProps> = ({\n item,\n isOpen,\n selected,\n disabled,\n collapsed,\n isSidebarFullyExpanded = true,\n isSidebarFullyCollapsed,\n onClick,\n renderNested,\n onClose,\n}) => {\n const [hoveredMiniItemId, setHoveredMiniItemId] = useState<string | null>(null);\n const itemId = `${item.to ?? item.title}`;\n\n const chevronSx: SxProps<Theme> = (theme: Theme) => {\n if (collapsed && isSidebarFullyCollapsed && item.children) {\n return {\n fontSize: 18,\n position: \"absolute\",\n top: \"41.5%\",\n right: \"2px\",\n transform: \"translateY(-50%) rotate(-90deg)\",\n };\n }\n if (!collapsed && isSidebarFullyExpanded && item.children) {\n return {\n ml: 0.5,\n transform: `rotate(${isOpen ? 0 : -90}deg)`,\n transition: theme.transitions.create(\"transform\", {\n easing: theme.transitions.easing.sharp,\n duration: 100,\n }),\n };\n }\n return { display: \"none\" };\n };\n\n const shouldJustExpand = item.children && !collapsed;\n\n const buttonProps = {\n selected,\n disabled,\n sx: { px: 1.4, height: collapsed ? 60 : 48 },\n };\n\n const buttonContent = (\n <>\n <IconOrAvatar item={item} collapsed={collapsed} />\n {!collapsed && (\n <ListItemText\n primary={item.title}\n slotProps={{ primary: { noWrap: true, title: item.title } }}\n sx={{\n ml: 1.2,\n flex: 1,\n minWidth: 0,\n \"& .MuiTypography-root\": {\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n },\n }}\n />\n )}\n {item.children ? <ExpandMoreIcon sx={chevronSx} /> : null}\n </>\n );\n\n const listItem = (\n <ListItem\n {...(item.children && collapsed\n ? {\n onMouseEnter: () => {\n setHoveredMiniItemId(itemId);\n },\n onMouseLeave: () => {\n setHoveredMiniItemId(null);\n },\n }\n : {})}\n sx={{ py: 0, px: 1, overflowX: \"hidden\" }}\n >\n {shouldJustExpand ? (\n <StyledNavButton {...buttonProps} onClick={() => onClick?.(item)}>\n {buttonContent}\n </StyledNavButton>\n ) : (\n <StyledRouterButton\n {...buttonProps}\n to={item.to}\n href={item.href}\n params={item.params as any}\n search={item.search as any}\n onClick={onClose}\n >\n {buttonContent}\n </StyledRouterButton>\n )}\n\n {item.children && collapsed ? (\n <MiniPopover open={itemId === hoveredMiniItemId}>\n {renderNested?.(item.children)}\n </MiniPopover>\n ) : null}\n </ListItem>\n );\n\n return (\n <Fragment key={item.to}>\n {listItem}\n {item.children && !collapsed ? (\n <Collapse in={isOpen} timeout=\"auto\" unmountOnExit>\n {renderNested?.(item.children)}\n </Collapse>\n ) : null}\n </Fragment>\n );\n};\n","import Divider from \"@mui/material/Divider\";\nimport List from \"@mui/material/List\";\nimport ListSubheader from \"@mui/material/ListSubheader\";\nimport { Fragment, useEffect, useState } from \"react\";\nimport { NavigationListItem } from \"./NavigationListItem\";\nimport { MINI_WIDTH } from \"./NavigationRail\";\nimport type { FC, ReactNode } from \"react\";\nimport type {\n Navigation,\n NavigationDivider,\n NavigationHeader,\n NavigationItem,\n NavigationPageItem,\n} from \"~/models/Navigation\";\n\nexport const isPageItem = (item: NavigationItem): item is NavigationPageItem => !(\"kind\" in item);\nexport const isDivider = (item: NavigationItem): item is NavigationDivider =>\n \"kind\" in item && item.kind === \"divider\";\nexport const isHeader = (item: NavigationItem): item is NavigationHeader =>\n \"kind\" in item && item.kind === \"header\";\n\ninterface NavigationListProps {\n subNavigation: Navigation;\n depth?: number;\n collapsed?: boolean;\n isPopover?: boolean;\n isSidebarFullyExpanded?: boolean;\n isSidebarFullyCollapsed?: boolean;\n expandedWidth: number | string;\n renderItem?: (item: NavigationPageItem, context: { collapsed: boolean }) => ReactNode;\n activePath?: string | null;\n onNavigate: (item: NavigationPageItem) => void;\n onClose?: () => void;\n}\n\nexport const NavigationList: FC<NavigationListProps> = ({\n subNavigation,\n depth = 0,\n collapsed,\n isPopover,\n isSidebarFullyExpanded = true,\n isSidebarFullyCollapsed,\n expandedWidth,\n renderItem,\n activePath,\n onNavigate,\n onClose,\n}) => {\n const [openKeys, setOpenKeys] = useState<Array<string>>([]);\n\n useEffect(() => {\n if (collapsed) setOpenKeys([]);\n }, [collapsed]);\n\n const toggleKey = (key: string) =>\n setOpenKeys((previous) =>\n previous.includes(key) ? previous.filter((k) => k !== key) : [...previous, key],\n );\n\n const renderNested = (children: Array<NavigationItem>) => (\n <NavigationList\n subNavigation={children}\n depth={depth + 1}\n isPopover={collapsed}\n expandedWidth={expandedWidth}\n activePath={activePath}\n onNavigate={onNavigate}\n onClose={onClose}\n />\n );\n\n const filteredNavigation = subNavigation.filter((nav) => !nav.hidden);\n\n return (\n <List\n sx={{\n padding: 0,\n mt: isPopover && depth === 1 ? 0.5 : 0,\n mb: depth === 0 && !isPopover ? 4 : 0.5,\n pl: (isPopover ? 1 : 2) * (isPopover ? depth - 1 : depth),\n minWidth: isPopover && depth === 1 ? 240 : \"auto\",\n width: collapsed ? MINI_WIDTH : \"auto\",\n }}\n >\n {filteredNavigation.map((navItem, index) => {\n if (isHeader(navItem)) {\n return (\n <ListSubheader\n key={`subheader-${depth}-${index}`}\n sx={{\n fontSize: 12,\n fontWeight: \"700\",\n height: collapsed ? 0 : 40,\n px: 2,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n zIndex: 2,\n bgcolor: \"transparent\",\n position: \"static\",\n }}\n >\n {navItem.title}\n </ListSubheader>\n );\n }\n\n if (isDivider(navItem)) {\n const nextItem = filteredNavigation[index + 1];\n return (\n <li key={`divider-${depth}-${index}`}>\n <Divider sx={{ mx: 1, mt: 1, mb: isHeader(nextItem) && !collapsed ? 0 : 1 }} />\n </li>\n );\n }\n\n if (!isPageItem(navItem)) return null;\n\n const key = `item-${depth}-${index}`;\n const uniqueItemKey = `${depth}-${index}-${navItem.title}`;\n\n if (renderItem)\n return <Fragment key={key}>{renderItem(navItem, { collapsed: !!collapsed })}</Fragment>;\n\n return (\n <NavigationListItem\n key={key}\n item={navItem}\n isOpen={openKeys.includes(uniqueItemKey)}\n selected={activePath === navItem.to}\n collapsed={collapsed}\n isSidebarFullyExpanded={isSidebarFullyExpanded}\n isSidebarFullyCollapsed={isSidebarFullyCollapsed}\n onClick={navItem.children && !collapsed ? () => toggleKey(uniqueItemKey) : undefined}\n renderNested={renderNested}\n onClose={onClose}\n />\n );\n })}\n </List>\n );\n};\n","import Box from \"@mui/material/Box\";\nimport { useLocation, useNavigate } from \"@tanstack/react-router\";\nimport { NavigationList, isHeader } from \"./NavigationList\";\nimport { EXPANDED_WIDTH } from \"./NavigationRail\";\nimport type { FC } from \"react\";\nimport type { Navigation } from \"~/models/Navigation\";\n\ninterface NavigationContentProps {\n navigation: Navigation;\n collapsed: boolean;\n expanded: boolean;\n setExpanded: (open: boolean) => void;\n showPermanent: boolean;\n}\n\nexport const NavigationContent: FC<NavigationContentProps> = ({\n navigation,\n collapsed,\n expanded,\n setExpanded,\n showPermanent,\n}) => {\n const navigate = useNavigate();\n const location = useLocation();\n\n return (\n <Box\n component=\"nav\"\n sx={{\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n overflow: \"auto\",\n scrollbarGutter: collapsed ? \"stable\" : \"auto\",\n overflowX: \"hidden\",\n pt: navigation[0] && isHeader(navigation[0]) && !collapsed ? 0 : 2,\n }}\n >\n <NavigationList\n subNavigation={navigation}\n collapsed={collapsed}\n isSidebarFullyExpanded={expanded}\n isSidebarFullyCollapsed={!expanded}\n expandedWidth={EXPANDED_WIDTH}\n activePath={location.pathname}\n onNavigate={navigate}\n onClose={showPermanent ? undefined : () => setExpanded(false)}\n />\n </Box>\n );\n};\n","import Drawer from \"@mui/material/Drawer\";\nimport { Fragment } from \"react\";\nimport { NavigationContent } from \"./NavigationContent\";\nimport type { FC } from \"react\";\nimport type { Navigation } from \"~/models/Navigation\";\n\nexport const MINI_WIDTH = 84;\nexport const EXPANDED_WIDTH = 320;\nexport const TOOLBAR_HEIGHT = 64;\n\ninterface NavigationRailProps {\n navigation: Navigation;\n expanded: boolean;\n setExpanded: (open: boolean) => void;\n}\n\nexport const NavigationRail: FC<NavigationRailProps> = ({ navigation, expanded, setExpanded }) => (\n <Fragment>\n <Drawer\n variant=\"permanent\"\n sx={{\n display: { xs: \"none\", sm: \"block\" },\n width: expanded ? EXPANDED_WIDTH : MINI_WIDTH,\n [\"& .MuiDrawer-paper\"]: (theme) => ({\n position: \"absolute\",\n top: `${TOOLBAR_HEIGHT}px`,\n height: `calc(100% - ${TOOLBAR_HEIGHT}px)`,\n width: expanded ? EXPANDED_WIDTH : MINI_WIDTH,\n background: \"transparent\",\n borderTop: \"1px solid\",\n borderColor: theme.vars?.palette.divider ?? theme.palette.divider,\n boxShadow: \"none\",\n }),\n }}\n >\n <NavigationContent\n navigation={navigation}\n collapsed={!expanded}\n expanded={expanded}\n setExpanded={setExpanded}\n showPermanent={true}\n />\n </Drawer>\n\n <Drawer\n open={expanded}\n onClose={() => setExpanded(false)}\n sx={{\n display: { xs: \"block\", sm: \"none\" },\n \"& .MuiDrawer-paper\": {\n width: \"min(280px, calc(100vw - 56px))\",\n },\n }}\n >\n <NavigationContent\n navigation={navigation}\n collapsed={false}\n expanded={expanded}\n setExpanded={setExpanded}\n showPermanent={false}\n />\n </Drawer>\n </Fragment>\n);\n","import { InteractionType } from \"@azure/msal-browser\";\r\nimport { MsalAuthenticationTemplate } from \"@azure/msal-react\";\r\nimport Menu from \"@mui/icons-material/Menu\";\r\nimport MenuOpen from \"@mui/icons-material/MenuOpen\";\r\nimport {\r\n AppBar,\r\n Box,\r\n CssBaseline,\r\n IconButton,\r\n InitColorSchemeScript,\r\n Toolbar,\r\n} from \"@mui/material\";\r\nimport { styled } from \"@mui/material/styles\";\r\nimport { useMatches } from \"@tanstack/react-router\";\r\nimport type { FC, ReactNode } from \"react\";\r\nimport { Fragment, useState } from \"react\";\r\nimport { Platform } from \"~/lib/utils\";\r\nimport type { LayoutOptions } from \"~/models/LayoutOptions\";\r\nimport type { Navigation } from \"~/models/Navigation\";\r\nimport { ToolbarAccount } from \"./account/UserMenu\";\r\nimport { AppTitle } from \"./AppTitle\";\r\nimport { NavigationRail } from \"./navigation/NavigationRail\";\r\n\r\nconst NAVIGATION_STORAGE_KEY = \"navigation-open\";\r\n\r\nconst getInitialNavigationOpen = (): boolean => {\r\n if (Platform.isWindows || Platform.isMacOS)\r\n return localStorage.getItem(NAVIGATION_STORAGE_KEY) === \"true\";\r\n return false;\r\n};\r\n\r\nconst saveNavigationState = (value: boolean): void => {\r\n if (Platform.isWindows || Platform.isMacOS) {\r\n localStorage.setItem(NAVIGATION_STORAGE_KEY, String(value));\r\n }\r\n};\r\n\r\nconst DrawerHeader = styled(\"div\")(({ theme }) => ({\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-end\",\r\n padding: theme.spacing(0, 1),\r\n ...theme.mixins.toolbar,\r\n}));\r\n\r\ninterface LayoutProps {\r\n navigation: Navigation | undefined;\r\n options: LayoutOptions | undefined;\r\n children: ReactNode;\r\n}\r\n\r\nexport const Layout: FC<LayoutProps> = ({ navigation, options, children }) => {\r\n const [navigationOpen, setNavigationOpen] = useState(getInitialNavigationOpen);\r\n const matches = useMatches();\r\n const currentRoutePath = matches.at(-1)?.fullPath;\r\n const isPublicRoute = options?.publicRoutes?.includes(currentRoutePath) ?? false;\r\n const showShell = options?.showShell ?? true;\r\n\r\n return (\r\n <Fragment>\r\n <InitColorSchemeScript />\r\n <CssBaseline />\r\n\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n height: \"100dvh\",\r\n maxHeight: \"100dvh\",\r\n overflow: \"hidden\",\r\n width: \"100%\",\r\n }}\r\n >\r\n {showShell && (\r\n <AppBar\r\n color=\"transparent\"\r\n position=\"fixed\"\r\n sx={{\r\n borderBottom: \"1px solid\",\r\n borderColor: \"var(--mui-palette-divider)\",\r\n boxShadow: \"none\",\r\n }}\r\n >\r\n <Toolbar>\r\n {navigation && (\r\n <IconButton\r\n onClick={() => {\r\n setNavigationOpen((previous) => {\r\n const newValue = !previous;\r\n saveNavigationState(newValue);\r\n return newValue;\r\n });\r\n }}\r\n sx={{ marginRight: 2 }}\r\n >\r\n {navigationOpen ? <MenuOpen /> : <Menu />}\r\n </IconButton>\r\n )}\r\n\r\n <AppTitle />\r\n\r\n <ToolbarAccount />\r\n </Toolbar>\r\n </AppBar>\r\n )}\r\n\r\n {navigation && showShell && (\r\n <NavigationRail\r\n navigation={navigation}\r\n expanded={navigationOpen}\r\n setExpanded={(newValue) => {\r\n setNavigationOpen(newValue);\r\n saveNavigationState(newValue);\r\n }}\r\n />\r\n )}\r\n\r\n <Box\r\n component=\"main\"\r\n sx={{\r\n flexGrow: 1,\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n minWidth: 0,\r\n height: \"100%\",\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n {showShell && <DrawerHeader />}\r\n <Box sx={{ flex: 1, overflow: \"auto\", position: \"relative\" }}>\r\n {isPublicRoute ? (\r\n children\r\n ) : (\r\n <MsalAuthenticationTemplate interactionType={InteractionType.Redirect}>\r\n {children}\r\n </MsalAuthenticationTemplate>\r\n )}\r\n </Box>\r\n </Box>\r\n </Box>\r\n </Fragment>\r\n );\r\n};\r\n","import type { EventMessage } from \"@azure/msal-browser\";\r\nimport { EventType, InteractionStatus } from \"@azure/msal-browser\";\r\nimport { MsalProvider, useMsal } from \"@azure/msal-react\";\r\nimport { useNavigate, useRouter } from \"@tanstack/react-router\";\r\nimport type { FC, ReactNode } from \"react\";\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport {\r\n pca,\r\n subscribeToTokenInteractionRequired,\r\n TanStackNavigationClient,\r\n} from \"~/lib/auth/msalClient\";\r\n\r\ninterface MsalAuthProviderProps {\r\n children: ReactNode;\r\n}\r\n\r\nconst MsalAuthEffects: FC = () => {\r\n const { accounts, inProgress, instance } = useMsal();\r\n const router = useRouter();\r\n const [pendingScopes, setPendingScopes] = useState<Array<string> | null>(null);\r\n const previousInProgress = useRef(inProgress);\r\n const navigate = useNavigate();\r\n pca.setNavigationClient(new TanStackNavigationClient(navigate));\r\n\r\n useEffect(() => {\r\n const callbackId = instance.addEventCallback((event: EventMessage) => {\r\n if (\r\n event.eventType === EventType.LOGIN_SUCCESS ||\r\n event.eventType === EventType.ACQUIRE_TOKEN_SUCCESS ||\r\n event.eventType === EventType.LOGOUT_SUCCESS\r\n ) {\r\n void router.invalidate();\r\n }\r\n });\r\n\r\n return () => {\r\n if (callbackId) {\r\n instance.removeEventCallback(callbackId);\r\n }\r\n };\r\n }, [instance, router]);\r\n\r\n useEffect(() => {\r\n const wasInteracting = previousInProgress.current !== InteractionStatus.None;\r\n previousInProgress.current = inProgress;\r\n\r\n if (wasInteracting && inProgress === InteractionStatus.None) {\r\n void router.invalidate();\r\n }\r\n }, [inProgress, router]);\r\n\r\n useEffect(() => subscribeToTokenInteractionRequired(setPendingScopes), []);\r\n\r\n useEffect(() => {\r\n if (!pendingScopes || inProgress !== InteractionStatus.None) {\r\n return;\r\n }\r\n\r\n const account = instance.getActiveAccount() ?? accounts[0];\r\n if (!account) {\r\n return;\r\n }\r\n\r\n setPendingScopes(null);\r\n void instance.acquireTokenRedirect({ scopes: pendingScopes, account }).catch(() => undefined);\r\n }, [accounts, inProgress, instance, pendingScopes]);\r\n\r\n return null;\r\n};\r\n\r\nexport const MsalAuthProvider: FC<MsalAuthProviderProps> = ({ children }) => (\r\n <MsalProvider instance={pca}>\r\n <MsalAuthEffects />\r\n {children}\r\n </MsalProvider>\r\n);\r\n","import { ThemeProvider } from \"@mui/material\";\r\nimport { LocalizationProvider } from \"@mui/x-date-pickers\";\r\nimport { AdapterDayjs } from \"@mui/x-date-pickers/AdapterDayjs\";\r\nimport dayjs from \"dayjs\";\r\nimport i18n from \"i18next\";\r\nimport LanguageDetector from \"i18next-browser-languagedetector\";\r\nimport { initReactI18next } from \"react-i18next\";\r\nimport { resources } from \"virtual:wcz-layout\";\r\nimport z from \"zod\";\r\nimport { useEffect } from \"react\";\r\nimport { DialogsProvider } from \"./DialogsProvider\";\r\nimport { NotificationProvider } from \"./NotificationProvider\";\r\nimport type { FC, ReactNode } from \"react\";\r\nimport type { LayoutOptions } from \"~/models/LayoutOptions\";\r\nimport type { Navigation } from \"~/models/Navigation\";\r\nimport type { Theme } from \"@mui/material\";\r\nimport { Layout } from \"~/components/core/Layout\";\r\nimport { MsalAuthProvider } from \"./MsalAuthProvider\";\r\n\r\nconst YEAR_IN_MINUTES = 60 * 24 * 365;\r\n\r\nconst setLocale = (language: string) => {\r\n z.config(z.core.locales[language as keyof typeof z.core.locales]());\r\n dayjs.locale(language);\r\n};\r\n\r\nawait i18n\r\n .use(LanguageDetector)\r\n .use(initReactI18next)\r\n .init({\r\n resources,\r\n fallbackLng: \"en\",\r\n supportedLngs: Object.keys(resources),\r\n detection: {\r\n caches: [\"cookie\"],\r\n cookieMinutes: YEAR_IN_MINUTES,\r\n },\r\n interpolation: { escapeValue: false },\r\n showSupportNotice: false,\r\n });\r\n\r\nsetLocale(i18n.resolvedLanguage ?? i18n.language);\r\n\r\ni18n.on(\"languageChanged\", (language) => {\r\n setLocale(language);\r\n});\r\n\r\ninterface ProvidersProps {\r\n options?: LayoutOptions;\r\n navigation?: Navigation;\r\n theme: Theme;\r\n children: ReactNode;\r\n}\r\n\r\nexport const LayoutProvider: FC<ProvidersProps> = ({ options, navigation, theme, children }) => {\r\n useEffect(() => {\r\n if (\"serviceWorker\" in navigator) {\r\n navigator.serviceWorker.register(\"/sw.js\");\r\n }\r\n }, []);\r\n\r\n return (\r\n <ThemeProvider theme={theme}>\r\n <LocalizationProvider\r\n key={i18n.language}\r\n dateAdapter={AdapterDayjs}\r\n adapterLocale={i18n.language}\r\n >\r\n <NotificationProvider snackbarOrigin={options?.snackbarOrigin}>\r\n <DialogsProvider>\r\n <MsalAuthProvider>\r\n <Layout navigation={navigation} options={options}>\r\n {children}\r\n </Layout>\r\n </MsalAuthProvider>\r\n </DialogsProvider>\r\n </NotificationProvider>\r\n </LocalizationProvider>\r\n </ThemeProvider>\r\n );\r\n};\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["useEventCallback","useId","useRef","useState","DialogsContext","DialogComponent","OpenDialog","OpenDialogOptions","DialogStackEntry","key","open","promise","Promise","TResult","Component","TPayload","payload","onClose","result","resolve","DialogProviderProps","children","React","ReactNode","DialogsProvider","Readonly","stack","setStack","Array","keyPrefix","nextId","dialogMetadata","WeakMap","requestDialog","options","resolveImpl","current","newEntry","set","previousStack","removeDialogFromStack","dialog","filter","entry","delete","closeDialogUi","map","setTimeout","closeDialog","entryToClose","get","Error","close","Alert","Snackbar","useEffect","useRef","useState","SnackbarOrigin","AlertColor","NotificationOptions","NotificationContext","Notification","message","severity","autoHideDuration","NotificationProviderProps","children","React","ReactNode","snackbarOrigin","STACK_INTERVAL","NotificationProvider","FC","t0","$","_c","t1","Symbol","for","queue","setQueue","current","setCurrent","open","Boolean","processingTimeout","t2","prevQueue","length","next","rest","processQueue","t3","t4","setTimeout","clearTimeout","t5","options","notification","prev","notify","t6","t7","t8","_event","reason","t9","t10","undefined","t11","t12","queryCollectionOptions","createCollection","axios","z","getAccessToken","queryClient","api","create","baseURL","interceptors","request","use","config","accessToken","headers","set","userPhotoSchema","object","id","string","photoUrl","UserPhoto","infer","fetchProfilePhoto","Promise","Array","response","get","responseType","base64","btoa","Uint8Array","data","reduce","byte","String","fromCodePoint","userPhotoCollection","queryKey","schema","queryFn","getKey","item","staleTime","Infinity","gcTime","Avatar","useLiveSuspenseQuery","FC","userPhotoCollection","UserAvatar","$","_c","data","_temp","t0","photoUrl","t1","Symbol","for","width","xs","sm","height","t2","q","from","todo","findOne","AuthenticatedTemplate","UnauthenticatedTemplate","useMsal","AccountCircle","ArrowBack","Brightness4","ChevronRight","DarkMode","Done","LightMode","Login","Logout","SettingsBrightness","Translate","Box","IconButton","List","ListItem","ListItemButton","ListItemIcon","ListItemText","ListSubheader","Menu","useColorScheme","rootRouteId","useMatch","FC","Fragment","useState","useTranslation","UserAvatar","TabType","capitalize","value","charAt","toUpperCase","slice","ToolbarAccount","$","_c","anchorElement","setAnchorElement","tab","setTab","open","Boolean","t","i18n","mode","setMode","instance","t0","Symbol","for","from","rootMatch","user","context","T0","closeMenu","openMenu","settings","t1","t2","theme","supportedLanguages","Array","isArray","options","supportedLngs","filter","_temp","languageDisplayNames","Intl","DisplayNames","language","type","t3","t4","icon","label","t5","t6","t7","t8","t9","colorModes","t10","event","currentTarget","t11","undefined","setTimeout","t12","newTab","changeTab","t13","backgroundColor","t14","t15","t16","t17","py","t18","t19","t20","find","m","t21","t22","t23","t24","t25","t26","t27","t28","t29","of","t30","t31","t32","display","alignItems","px","cursor","t33","mr","t34","t35","t36","map","t37","modeValue","Icon","t38","t39","t40","t41","languageCode","changeLanguage","finally","resolvedLanguage","width","xs","sm","height","name","employeeId","department","logoutRedirect","postLogoutRedirectUri","loginRedirect","lng","Chip","Stack","Typography","useRouter","z","FC","clientEnv","RouterIconButton","PRODUCTION_ENV","getEnv","url","string","refine","u","split","length","transform","toUpperCase","catch","parse","AppTitle","$","_c","router","t0","origin","env","isProduction","t1","t2","Symbol","for","VITE_APP_TITLE","t3","t4","ExpandMoreIcon","Collapse","Grow","Avatar","Box","ListItem","ListItemButton","ListItemIcon","ListItemText","Paper","styled","Typography","Fragment","useState","MINI_WIDTH","NavigationItem","NavigationPageGroup","NavigationPageItem","FC","ReactNode","SxProps","Theme","RouterListItemButton","ICON_SIZE","getSelectedColor","theme","vars","palette","primary","dark","getActionActiveColor","action","active","StyledNavButton","borderRadius","color","backgroundColor","StyledRouterButton","IconOrAvatar","item","collapsed","t0","$","_c","icon","t1","position","left","top","transform","t2","Symbol","for","display","alignItems","justifyContent","minWidth","t3","t4","title","width","height","fontSize","split","slice","map","_temp","t5","t6","bottom","fontWeight","textAlign","whiteSpace","overflow","textOverflow","maxWidth","t7","MiniPopoverProps","open","children","MiniPopover","pl","pb","pt","maxHeight","overflowY","overscrollBehavior","NavigationListItemProps","isOpen","selected","disabled","isSidebarFullyExpanded","isSidebarFullyCollapsed","onClick","renderNested","sub","Array","onClose","NavigationListItem","undefined","hoveredMiniItemId","setHoveredMiniItemId","itemId","to","right","ml","transition","transitions","create","easing","sharp","duration","chevronSx","shouldJustExpand","px","sx","buttonProps","noWrap","flex","t8","t9","buttonContent","t10","onMouseEnter","onMouseLeave","t11","py","overflowX","t12","href","params","search","t13","t14","listItem","t15","t16","word","charAt","toUpperCase","Divider","List","ListSubheader","Fragment","useEffect","useState","NavigationListItem","MINI_WIDTH","FC","ReactNode","Navigation","NavigationDivider","NavigationHeader","NavigationItem","NavigationPageGroup","NavigationPageItem","isPageItem","item","isDivider","kind","isHeader","NavigationListProps","subNavigation","depth","collapsed","isPopover","isSidebarFullyExpanded","isSidebarFullyCollapsed","expandedWidth","renderItem","context","activePath","onNavigate","onClose","NavigationList","t0","$","_c","t1","t2","undefined","t3","Symbol","for","openKeys","setOpenKeys","t4","t5","t6","key","previous","includes","filter","k","toggleKey","t7","children","renderNested","t8","filteredNavigation","_temp","t9","t10","t11","t12","t13","t14","padding","mt","mb","pl","minWidth","width","map","navItem","index","fontSize","fontWeight","height","px","overflow","textOverflow","whiteSpace","zIndex","bgcolor","position","title","nextItem","mx","key_0","uniqueItemKey","to","nav","hidden","Box","useLocation","useNavigate","NavigationList","isHeader","EXPANDED_WIDTH","FC","Navigation","NavigationContentProps","navigation","collapsed","expanded","setExpanded","open","showPermanent","NavigationContent","t0","$","_c","navigate","location","t1","t2","t3","height","display","flexDirection","justifyContent","overflow","scrollbarGutter","overflowX","pt","t4","t5","undefined","t6","pathname","t7","Drawer","Fragment","NavigationContent","FC","Navigation","MINI_WIDTH","EXPANDED_WIDTH","TOOLBAR_HEIGHT","NavigationRailProps","navigation","expanded","setExpanded","open","NavigationRail","t0","$","_c","t1","Symbol","for","xs","sm","t2","t3","theme","position","top","height","width","background","borderTop","borderColor","vars","palette","divider","boxShadow","t4","display","t5","t6","t7","t8","t9","t10","t11","t12","InteractionType","MsalAuthenticationTemplate","Menu","MenuOpen","AppBar","Box","CssBaseline","IconButton","InitColorSchemeScript","Toolbar","styled","useMatches","FC","ReactNode","Fragment","useState","Platform","LayoutOptions","Navigation","ToolbarAccount","AppTitle","NavigationRail","NAVIGATION_STORAGE_KEY","getInitialNavigationOpen","isWindows","isMacOS","localStorage","getItem","saveNavigationState","value","setItem","String","DrawerHeader","theme","display","alignItems","justifyContent","padding","spacing","mixins","toolbar","LayoutProps","navigation","options","children","Layout","t0","$","_c","navigationOpen","setNavigationOpen","matches","t1","publicRoutes","currentRoutePath","at","fullPath","includes","isPublicRoute","showShell","t2","t3","Symbol","for","t4","height","maxHeight","overflow","width","t5","borderBottom","borderColor","boxShadow","_temp","marginRight","t6","newValue_0","newValue","t7","flexGrow","flexDirection","minWidth","t8","t9","flex","position","t10","Redirect","t11","t12","t13","previous","EventMessage","EventType","InteractionStatus","MsalProvider","useMsal","useNavigate","useRouter","FC","ReactNode","useEffect","useRef","useState","pca","subscribeToTokenInteractionRequired","TanStackNavigationClient","MsalAuthProviderProps","children","MsalAuthEffects","$","_c","accounts","inProgress","instance","router","pendingScopes","setPendingScopes","previousInProgress","navigate","setNavigationClient","t0","t1","callbackId","addEventCallback","event","eventType","LOGIN_SUCCESS","ACQUIRE_TOKEN_SUCCESS","LOGOUT_SUCCESS","invalidate","removeEventCallback","t2","t3","wasInteracting","current","None","t4","t5","Symbol","for","t6","t7","account","getActiveAccount","acquireTokenRedirect","scopes","catch","_temp","MsalAuthProvider","ThemeProvider","LocalizationProvider","AdapterDayjs","dayjs","i18n","LanguageDetector","initReactI18next","resources","z","useEffect","DialogsProvider","NotificationProvider","FC","ReactNode","LayoutOptions","Navigation","Theme","Layout","MsalAuthProvider","YEAR_IN_MINUTES","setLocale","language","config","core","locales","locale","use","init","fallbackLng","supportedLngs","Object","keys","detection","caches","cookieMinutes","interpolation","escapeValue","showSupportNotice","resolvedLanguage","on","ProvidersProps","options","navigation","theme","children","LayoutProvider","t0","$","_c","t1","Symbol","for","_temp","t2","snackbarOrigin","t3","t4","t5","navigator","serviceWorker","register"],"sources":["../src/providers/DialogsProvider.tsx","../src/providers/NotificationProvider.tsx","../src/lib/db/collections/userCollection.ts","../src/components/core/account/UserAvatar.tsx","../src/components/core/account/UserMenu.tsx","../src/components/core/AppTitle.tsx","../src/components/core/navigation/NavigationListItem.tsx","../src/components/core/navigation/NavigationList.tsx","../src/components/core/navigation/NavigationContent.tsx","../src/components/core/navigation/NavigationRail.tsx","../src/components/core/Layout.tsx","../src/providers/MsalAuthProvider.tsx","../src/providers/LayoutProvider.tsx"],"sourcesContent":["import useEventCallback from \"@mui/utils/useEventCallback\";\nimport { useId, useRef, useState } from \"react\";\nimport { DialogsContext } from \"../contexts/DialogsContext\";\nimport type { DialogComponent, OpenDialog, OpenDialogOptions } from \"../hooks/DialogsHooks\";\n\ninterface DialogStackEntry<TPayload, TResult> {\n key: string;\n open: boolean;\n promise: Promise<TResult>;\n Component: DialogComponent<TPayload, TResult>;\n payload: TPayload;\n onClose: (result: TResult) => Promise<void>;\n resolve: (result: TResult) => void;\n}\n\nexport interface DialogProviderProps {\n children?: React.ReactNode;\n}\n\nfunction DialogsProvider({ children }: Readonly<DialogProviderProps>) {\n const [stack, setStack] = useState<Array<DialogStackEntry<any, any>>>([]);\n const keyPrefix = useId();\n const nextId = useRef(0);\n const dialogMetadata = useRef(new WeakMap<Promise<any>, DialogStackEntry<any, any>>());\n\n const requestDialog = useEventCallback<OpenDialog>(function open<TPayload, TResult>(\n Component: DialogComponent<TPayload, TResult>,\n payload: TPayload,\n options: OpenDialogOptions<TResult> = {},\n ) {\n const { onClose = async () => {} } = options;\n\n let resolve: (result: TResult) => void;\n const promise = new Promise<TResult>((resolveImpl) => {\n resolve = resolveImpl;\n });\n\n const key = `${keyPrefix}-${nextId.current}`;\n nextId.current += 1;\n\n const newEntry: DialogStackEntry<TPayload, TResult> = {\n key,\n open: true,\n promise,\n Component,\n payload,\n onClose,\n resolve: resolve!,\n };\n\n dialogMetadata.current.set(promise, newEntry);\n\n setStack((previousStack) => [...previousStack, newEntry]);\n\n return promise;\n });\n\n const removeDialogFromStack = (dialog: Promise<any>) => {\n setStack((previousStack) => previousStack.filter((entry) => entry.promise !== dialog));\n dialogMetadata.current.delete(dialog);\n };\n\n const closeDialogUi = useEventCallback(function closeDialogUi<TResult>(dialog: Promise<TResult>) {\n setStack((previousStack) =>\n previousStack.map((entry) => (entry.promise === dialog ? { ...entry, open: false } : entry)),\n );\n\n setTimeout(() => removeDialogFromStack(dialog), 1000);\n });\n\n const closeDialog = useEventCallback(async function closeDialog<TResult>(\n dialog: Promise<TResult>,\n result: TResult,\n ) {\n const entryToClose = dialogMetadata.current.get(dialog);\n if (!entryToClose) {\n throw new Error(\"Dialog not found in stack\");\n }\n\n try {\n await entryToClose.onClose(result);\n } finally {\n entryToClose.resolve(result);\n closeDialogUi(dialog);\n }\n\n return dialog;\n });\n\n return (\n <DialogsContext.Provider value={{ open: requestDialog, close: closeDialog }}>\n {children}\n {stack.map(({ key, open, Component, payload, promise }) => (\n <Component\n key={key}\n payload={payload}\n open={open}\n onClose={async (result) => {\n await closeDialog(promise, result);\n }}\n />\n ))}\n </DialogsContext.Provider>\n );\n}\n\nexport { DialogsProvider };\n","import Alert from \"@mui/material/Alert\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { useEffect, useRef, useState } from \"react\";\nimport type { SnackbarOrigin } from \"@mui/material/Snackbar\";\nimport type { AlertColor } from \"@mui/material/Alert\";\nimport type { NotificationOptions } from \"~/contexts/NotificationContext\";\nimport { NotificationContext } from \"~/contexts/NotificationContext\";\n\ninterface Notification {\n message: string;\n severity?: AlertColor;\n autoHideDuration: number;\n}\n\ninterface NotificationProviderProps {\n children: React.ReactNode;\n snackbarOrigin?: SnackbarOrigin;\n}\n\nconst STACK_INTERVAL = 1000;\n\nexport const NotificationProvider: React.FC<NotificationProviderProps> = ({\n children,\n snackbarOrigin,\n}) => {\n const [queue, setQueue] = useState<Array<Notification>>([]);\n const [current, setCurrent] = useState<Notification | null>(null);\n const open = Boolean(current);\n const processingTimeout = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const processQueue = () => {\n setQueue((prevQueue) => {\n if (prevQueue.length === 0) return prevQueue;\n\n const [next, ...rest] = prevQueue;\n setCurrent(next);\n return rest;\n });\n };\n\n useEffect(() => {\n if (!open && queue.length > 0) {\n processingTimeout.current = setTimeout(processQueue, current ? STACK_INTERVAL : 0);\n }\n\n return () => {\n if (processingTimeout.current) {\n clearTimeout(processingTimeout.current);\n }\n };\n }, [open, queue.length, current]);\n\n const notify = (message: string, options?: NotificationOptions) => {\n const notification: Notification = {\n message,\n severity: options?.severity,\n autoHideDuration: options?.autoHideDuration ?? 5000,\n };\n\n setQueue((prev) => [...prev, notification]);\n };\n\n return (\n <NotificationContext value={{ notify }}>\n {children}\n <Snackbar\n open={open}\n autoHideDuration={current?.autoHideDuration}\n onClose={(_event, reason) => {\n if (reason === \"clickaway\") return;\n setCurrent(null);\n }}\n anchorOrigin={snackbarOrigin}\n message={current?.message}\n >\n {current?.severity ? (\n <Alert onClose={() => setCurrent(null)} severity={current.severity} variant=\"filled\">\n {current.message}\n </Alert>\n ) : undefined}\n </Snackbar>\n </NotificationContext>\n );\n};\n","import { queryCollectionOptions } from \"@tanstack/query-db-collection\";\nimport { createCollection } from \"@tanstack/react-db\";\nimport axios from \"axios\";\nimport * as z from \"zod\";\nimport { getAccessToken } from \"~/lib/auth/msalClient\";\nimport { queryClient } from \"~/lib/queryClient\";\n\nexport const api = axios.create({\n baseURL: \"https://graph.microsoft.com/v1.0\",\n});\n\napi.interceptors.request.use(async (config) => {\n const accessToken = await getAccessToken(\"graph\");\n config.headers.set(\"Authorization\", `Bearer ${accessToken}`);\n return config;\n});\n\nconst userPhotoSchema = z.object({\n id: z.string(),\n photoUrl: z.string(),\n});\n\ntype UserPhoto = z.infer<typeof userPhotoSchema>;\n\nconst fetchProfilePhoto = async (): Promise<Array<UserPhoto>> => {\n const response = await api.get(\"/me/photo/$value\", {\n responseType: \"arraybuffer\",\n });\n\n const base64 = btoa(\n new Uint8Array(response.data).reduce((data, byte) => data + String.fromCodePoint(byte), \"\"),\n );\n\n return [\n {\n id: \"me\",\n photoUrl: `data:image/jpeg;base64,${base64}`,\n },\n ];\n};\n\nexport const userPhotoCollection = createCollection(\n queryCollectionOptions({\n queryKey: [\"graph\", \"me\", \"photo\"],\n schema: userPhotoSchema,\n queryFn: fetchProfilePhoto,\n getKey: (item) => item.id,\n queryClient,\n staleTime: Infinity,\n gcTime: Infinity,\n }),\n);\n","import { Avatar } from \"@mui/material\";\r\nimport { useLiveSuspenseQuery } from \"@tanstack/react-db\";\r\nimport { FC } from \"react\";\r\nimport { userPhotoCollection } from \"~/lib/db/collections/userCollection\";\r\n\r\nexport const UserAvatar: FC = () => {\r\n const { data } = useLiveSuspenseQuery((q) => q.from({ todo: userPhotoCollection }).findOne());\r\n\r\n return (\r\n <Avatar src={data?.photoUrl} sx={{ width: { xs: 32, sm: 40 }, height: { xs: 32, sm: 40 } }} />\r\n );\r\n};\r\n","import { AuthenticatedTemplate, UnauthenticatedTemplate, useMsal } from \"@azure/msal-react\";\r\nimport AccountCircle from \"@mui/icons-material/AccountCircle\";\r\nimport ArrowBack from \"@mui/icons-material/ArrowBack\";\r\nimport Brightness4 from \"@mui/icons-material/Brightness4\";\r\nimport ChevronRight from \"@mui/icons-material/ChevronRight\";\r\nimport DarkMode from \"@mui/icons-material/DarkMode\";\r\nimport Done from \"@mui/icons-material/Done\";\r\nimport LightMode from \"@mui/icons-material/LightMode\";\r\nimport Login from \"@mui/icons-material/Login\";\r\nimport Logout from \"@mui/icons-material/Logout\";\r\nimport SettingsBrightness from \"@mui/icons-material/SettingsBrightness\";\r\nimport Translate from \"@mui/icons-material/Translate\";\r\nimport {\r\n Box,\r\n IconButton,\r\n List,\r\n ListItem,\r\n ListItemButton,\r\n ListItemIcon,\r\n ListItemText,\r\n ListSubheader,\r\n Menu,\r\n useColorScheme,\r\n} from \"@mui/material\";\r\nimport { rootRouteId, useMatch } from \"@tanstack/react-router\";\r\nimport type { FC } from \"react\";\r\nimport { Fragment, useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { UserAvatar } from \"./UserAvatar\";\r\n\r\ntype TabType = \"settings\" | \"theme\" | \"language\";\r\nconst capitalize = (value: string | undefined) =>\r\n value && value.charAt(0).toUpperCase() + value.slice(1);\r\n\r\nexport const ToolbarAccount: FC = () => {\r\n const [anchorElement, setAnchorElement] = useState<HTMLElement>();\r\n const [tab, setTab] = useState<TabType>(\"settings\");\r\n const open = Boolean(anchorElement);\r\n const { t, i18n } = useTranslation();\r\n const { mode, setMode } = useColorScheme();\r\n const { instance } = useMsal();\r\n const rootMatch = useMatch({ from: rootRouteId });\r\n const user = rootMatch.context.user;\r\n\r\n const supportedLanguages = (\r\n Array.isArray(i18n.options.supportedLngs) ? i18n.options.supportedLngs : []\r\n ).filter((lng) => lng !== \"cimode\");\r\n const languageDisplayNames = new Intl.DisplayNames([i18n.language], { type: \"language\" });\r\n\r\n const colorModes: Array<{\r\n mode: Exclude<typeof mode, undefined>;\r\n icon: typeof LightMode;\r\n label: string;\r\n }> = [\r\n { mode: \"light\", icon: LightMode, label: t(\"Layout.Light\") },\r\n { mode: \"dark\", icon: DarkMode, label: t(\"Layout.Dark\") },\r\n { mode: \"system\", icon: SettingsBrightness, label: t(\"Layout.System\") },\r\n ];\r\n\r\n const openMenu = (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) =>\r\n setAnchorElement(event.currentTarget);\r\n const closeMenu = () => {\r\n setAnchorElement(undefined);\r\n setTimeout(() => setTab(\"settings\"), 300);\r\n };\r\n\r\n const changeTab = (newTab: TabType) => () => setTab(newTab);\r\n\r\n const settings = (\r\n <List\r\n component=\"nav\"\r\n subheader={\r\n <ListSubheader sx={{ backgroundColor: \"transparent\" }}>\r\n {t(\"Layout.Settings\")}\r\n </ListSubheader>\r\n }\r\n >\r\n <ListItemButton onClick={changeTab(\"theme\")} sx={{ py: 0.3 }}>\r\n <ListItemIcon>\r\n <Brightness4 />\r\n </ListItemIcon>\r\n <ListItemText\r\n primary={t(\"Layout.Appearance\")}\r\n secondary={colorModes.find((m) => m.mode === mode)?.label ?? t(\"Layout.System\")}\r\n />\r\n <ChevronRight />\r\n </ListItemButton>\r\n\r\n <ListItemButton onClick={changeTab(\"language\")} sx={{ py: 0.3 }}>\r\n <ListItemIcon>\r\n <Translate />\r\n </ListItemIcon>\r\n <ListItemText\r\n primary={t(\"Layout.Language\")}\r\n secondary={capitalize(languageDisplayNames.of(i18n.language))}\r\n />\r\n <ChevronRight />\r\n </ListItemButton>\r\n </List>\r\n );\r\n\r\n const theme = (\r\n <List\r\n subheader={\r\n <ListSubheader\r\n onClick={changeTab(\"settings\")}\r\n sx={{\r\n backgroundColor: \"transparent\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n px: 1,\r\n cursor: \"pointer\",\r\n }}\r\n >\r\n <IconButton size=\"small\" sx={{ mr: 0.5 }}>\r\n <ArrowBack fontSize=\"small\" />\r\n </IconButton>{\" \"}\r\n {t(\"Layout.Appearance\")}\r\n </ListSubheader>\r\n }\r\n >\r\n {colorModes.map(({ mode: modeValue, icon: Icon, label }) => (\r\n <ListItemButton\r\n key={modeValue}\r\n onClick={() => {\r\n setMode(modeValue);\r\n closeMenu();\r\n }}\r\n selected={mode === modeValue}\r\n >\r\n <ListItemIcon>\r\n <Icon />\r\n </ListItemIcon>\r\n <ListItemText primary={label} />\r\n </ListItemButton>\r\n ))}\r\n </List>\r\n );\r\n\r\n const language = (\r\n <List\r\n subheader={\r\n <ListSubheader\r\n onClick={changeTab(\"settings\")}\r\n sx={{\r\n backgroundColor: \"transparent\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n px: 1,\r\n cursor: \"pointer\",\r\n }}\r\n >\r\n <IconButton size=\"small\" sx={{ mr: 0.5 }}>\r\n <ArrowBack fontSize=\"small\" />\r\n </IconButton>{\" \"}\r\n {t(\"Layout.Language\")}\r\n </ListSubheader>\r\n }\r\n >\r\n {supportedLanguages.map((languageCode) => (\r\n <ListItemButton\r\n key={languageCode}\r\n onClick={() => i18n.changeLanguage(languageCode).finally(() => closeMenu())}\r\n selected={i18n.resolvedLanguage === languageCode}\r\n >\r\n <ListItemIcon>{i18n.resolvedLanguage === languageCode && <Done />}</ListItemIcon>\r\n <ListItemText primary={capitalize(languageDisplayNames.of(languageCode))} />\r\n </ListItemButton>\r\n ))}\r\n </List>\r\n );\r\n\r\n return (\r\n <Fragment>\r\n <IconButton size=\"small\" edge=\"end\" onClick={openMenu}>\r\n <AuthenticatedTemplate>\r\n <UserAvatar />\r\n </AuthenticatedTemplate>\r\n <UnauthenticatedTemplate>\r\n <AccountCircle sx={{ width: { xs: 32, sm: 40 }, height: { xs: 32, sm: 40 } }} />\r\n </UnauthenticatedTemplate>\r\n </IconButton>\r\n\r\n <Menu anchorEl={anchorElement} open={open} onClose={closeMenu}>\r\n <Box sx={{ width: 240 }}>\r\n <List disablePadding>\r\n <AuthenticatedTemplate>\r\n <ListItem>\r\n <ListItemText\r\n primary={user?.name}\r\n secondary={\r\n <span>\r\n {user?.employeeId && <span>{user.employeeId}</span>}\r\n {user?.employeeId && <br />}\r\n {user?.department && <span>{user.department}</span>}\r\n </span>\r\n }\r\n />\r\n </ListItem>\r\n <ListItemButton\r\n onClick={() => instance.logoutRedirect({ postLogoutRedirectUri: \"/\" })}\r\n >\r\n <ListItemIcon>\r\n <Logout color=\"error\" />\r\n </ListItemIcon>\r\n <ListItemText primary={t(\"Layout.Logout\")} />\r\n </ListItemButton>\r\n </AuthenticatedTemplate>\r\n\r\n <UnauthenticatedTemplate>\r\n <ListItemButton onClick={() => instance.loginRedirect()}>\r\n <ListItemIcon>\r\n <Login color=\"success\" />\r\n </ListItemIcon>\r\n <ListItemText primary={t(\"Layout.LogIn\")} />\r\n </ListItemButton>\r\n </UnauthenticatedTemplate>\r\n </List>\r\n\r\n {tab === \"settings\" && settings}\r\n {tab === \"theme\" && theme}\r\n {tab === \"language\" && language}\r\n </Box>\r\n </Menu>\r\n </Fragment>\r\n );\r\n};\r\n","import { Chip, Stack, Typography } from \"@mui/material\";\nimport { useRouter } from \"@tanstack/react-router\";\nimport z from \"zod\";\nimport type { FC } from \"react\";\nimport { clientEnv } from \"~/env\";\nimport { RouterIconButton } from \"~/components/router/RouterIconButton\";\n\nconst PRODUCTION_ENV = \"PRD\";\n\nconst getEnv = (url: string | undefined) =>\n z\n .string()\n .refine((u) => u.split(\"-\").length > 2)\n .transform((u) => u.split(\"-\")[2].toUpperCase())\n .catch(\"LOCALHOST\")\n .parse(url);\n\nexport const AppTitle: FC = () => {\n const router = useRouter();\n const env = getEnv(router.origin);\n const isProduction = env === PRODUCTION_ENV;\n\n return (\n <Stack direction=\"row\" alignItems=\"center\" spacing={1} flexGrow={1}>\n <RouterIconButton to=\"/\" size=\"small\">\n <img src=\"/favicon-32x32.png\" alt=\"app-logo\" loading=\"lazy\" />\n </RouterIconButton>\n <Typography variant=\"h6\">{clientEnv.VITE_APP_TITLE}</Typography>\n {!isProduction && <Chip size=\"small\" label={env} color=\"primary\" />}\n </Stack>\n );\n};\n","import ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\nimport { Collapse, Grow } from \"@mui/material\";\nimport Avatar from \"@mui/material/Avatar\";\nimport Box from \"@mui/material/Box\";\nimport ListItem from \"@mui/material/ListItem\";\nimport ListItemButton from \"@mui/material/ListItemButton\";\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport Paper from \"@mui/material/Paper\";\nimport { styled } from \"@mui/material/styles\";\nimport Typography from \"@mui/material/Typography\";\nimport { Fragment, useState } from \"react\";\nimport { MINI_WIDTH } from \"./NavigationRail\";\nimport type { NavigationItem, NavigationPageGroup, NavigationPageItem } from \"~/models/Navigation\";\nimport type { FC, ReactNode } from \"react\";\nimport type { SxProps, Theme } from \"@mui/material/styles\";\nimport { RouterListItemButton } from \"~/components/router/RouterListItemButton\";\n\nconst ICON_SIZE = 34;\n\nconst getSelectedColor = (theme: Theme) =>\n theme.vars?.palette.primary.dark ?? theme.palette.primary.dark;\n\nconst getActionActiveColor = (theme: Theme) =>\n theme.vars?.palette.action.active ?? theme.palette.action.active;\n\nconst StyledNavButton = styled(ListItemButton)(({ theme }) => ({\n borderRadius: 8,\n \"&.Mui-selected\": {\n \"& .MuiListItemIcon-root, & .MuiTypography-root, & .MuiSvgIcon-root\": {\n color: getSelectedColor(theme),\n },\n \"& .MuiAvatar-root\": {\n backgroundColor: getSelectedColor(theme),\n },\n \"& .MuiTouchRipple-child\": {\n backgroundColor: getSelectedColor(theme),\n },\n },\n \"& .MuiSvgIcon-root\": {\n color: getActionActiveColor(theme),\n },\n \"& .MuiAvatar-root\": {\n backgroundColor: getActionActiveColor(theme),\n },\n}));\n\nconst StyledRouterButton = styled(RouterListItemButton)(({ theme }) => ({\n borderRadius: 8,\n \"&.Mui-selected\": {\n \"& .MuiListItemIcon-root, & .MuiTypography-root, & .MuiSvgIcon-root\": {\n color: getSelectedColor(theme),\n },\n \"& .MuiAvatar-root\": {\n backgroundColor: getSelectedColor(theme),\n },\n \"& .MuiTouchRipple-child\": {\n backgroundColor: getSelectedColor(theme),\n },\n },\n \"& .MuiSvgIcon-root\": {\n color: getActionActiveColor(theme),\n },\n \"& .MuiAvatar-root\": {\n backgroundColor: getActionActiveColor(theme),\n },\n}));\n\nconst IconOrAvatar: FC<{ item: NavigationPageItem | NavigationPageGroup; collapsed?: boolean }> = ({\n item,\n collapsed,\n}) => {\n if (item.icon || collapsed) {\n return (\n <Box\n sx={\n collapsed\n ? {\n position: \"absolute\",\n left: \"50%\",\n top: \"calc(50% - 6px)\",\n transform: \"translate(-50%, -50%)\",\n }\n : {}\n }\n >\n <ListItemIcon\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n minWidth: ICON_SIZE,\n }}\n >\n {item.icon ?? null}\n {!item.icon && collapsed ? (\n <Avatar sx={{ width: ICON_SIZE - 7, height: ICON_SIZE - 7, fontSize: 12 }}>\n {item.title\n .split(\" \")\n .slice(0, 2)\n .map((word) => word.charAt(0).toUpperCase())}\n </Avatar>\n ) : null}\n </ListItemIcon>\n {collapsed ? (\n <Typography\n variant=\"caption\"\n sx={{\n position: \"absolute\",\n bottom: -18,\n left: \"50%\",\n transform: \"translateX(-50%)\",\n fontSize: 10,\n fontWeight: 500,\n textAlign: \"center\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n maxWidth: MINI_WIDTH - 28,\n }}\n >\n {item.title}\n </Typography>\n ) : null}\n </Box>\n );\n }\n return null;\n};\n\ninterface MiniPopoverProps {\n open: boolean;\n children?: ReactNode;\n}\n\nconst MiniPopover: FC<MiniPopoverProps> = ({ open, children }) => (\n <Grow in={open}>\n <Box\n sx={{\n position: \"fixed\",\n left: MINI_WIDTH,\n pl: \"2px\",\n pb: \"10px\",\n }}\n >\n <Paper\n sx={{\n pt: 0.5,\n pb: 0.5,\n transform: \"translateY(calc(50% - 30px))\",\n maxHeight: \"min(calc(100vh - 100px), 560px)\",\n overflowY: \"auto\",\n overscrollBehavior: \"contain\",\n }}\n >\n {children}\n </Paper>\n </Box>\n </Grow>\n);\n\ninterface NavigationListItemProps {\n item: NavigationPageItem | NavigationPageGroup;\n isOpen?: boolean;\n selected?: boolean;\n disabled?: boolean;\n collapsed?: boolean;\n isSidebarFullyExpanded?: boolean;\n isSidebarFullyCollapsed?: boolean;\n onClick?: (item: NavigationPageItem | NavigationPageGroup) => void;\n renderNested?: (sub: Array<NavigationItem>) => ReactNode;\n onClose?: () => void;\n}\n\nexport const NavigationListItem: FC<NavigationListItemProps> = ({\n item,\n isOpen,\n selected,\n disabled,\n collapsed,\n isSidebarFullyExpanded = true,\n isSidebarFullyCollapsed,\n onClick,\n renderNested,\n onClose,\n}) => {\n const [hoveredMiniItemId, setHoveredMiniItemId] = useState<string | null>(null);\n const itemId = `${item.to ?? item.title}`;\n\n const chevronSx: SxProps<Theme> = (theme: Theme) => {\n if (collapsed && isSidebarFullyCollapsed && item.children) {\n return {\n fontSize: 18,\n position: \"absolute\",\n top: \"41.5%\",\n right: \"2px\",\n transform: \"translateY(-50%) rotate(-90deg)\",\n };\n }\n if (!collapsed && isSidebarFullyExpanded && item.children) {\n return {\n ml: 0.5,\n transform: `rotate(${isOpen ? 0 : -90}deg)`,\n transition: theme.transitions.create(\"transform\", {\n easing: theme.transitions.easing.sharp,\n duration: 100,\n }),\n };\n }\n return { display: \"none\" };\n };\n\n const shouldJustExpand = item.children && !collapsed;\n\n const buttonProps = {\n selected,\n disabled,\n sx: { px: 1.4, height: collapsed ? 60 : 48 },\n };\n\n const buttonContent = (\n <>\n <IconOrAvatar item={item} collapsed={collapsed} />\n {!collapsed && (\n <ListItemText\n primary={item.title}\n slotProps={{ primary: { noWrap: true, title: item.title } }}\n sx={{\n ml: 1.2,\n flex: 1,\n minWidth: 0,\n \"& .MuiTypography-root\": {\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n },\n }}\n />\n )}\n {item.children ? <ExpandMoreIcon sx={chevronSx} /> : null}\n </>\n );\n\n const listItem = (\n <ListItem\n {...(item.children && collapsed\n ? {\n onMouseEnter: () => {\n setHoveredMiniItemId(itemId);\n },\n onMouseLeave: () => {\n setHoveredMiniItemId(null);\n },\n }\n : {})}\n sx={{ py: 0, px: 1, overflowX: \"hidden\" }}\n >\n {shouldJustExpand ? (\n <StyledNavButton {...buttonProps} onClick={() => onClick?.(item)}>\n {buttonContent}\n </StyledNavButton>\n ) : (\n <StyledRouterButton\n {...buttonProps}\n to={item.to}\n href={item.href}\n params={item.params as any}\n search={item.search as any}\n onClick={onClose}\n >\n {buttonContent}\n </StyledRouterButton>\n )}\n\n {item.children && collapsed ? (\n <MiniPopover open={itemId === hoveredMiniItemId}>\n {renderNested?.(item.children)}\n </MiniPopover>\n ) : null}\n </ListItem>\n );\n\n return (\n <Fragment key={item.to}>\n {listItem}\n {item.children && !collapsed ? (\n <Collapse in={isOpen} timeout=\"auto\" unmountOnExit>\n {renderNested?.(item.children)}\n </Collapse>\n ) : null}\n </Fragment>\n );\n};\n","import Divider from \"@mui/material/Divider\";\nimport List from \"@mui/material/List\";\nimport ListSubheader from \"@mui/material/ListSubheader\";\nimport { Fragment, useEffect, useState } from \"react\";\nimport { NavigationListItem } from \"./NavigationListItem\";\nimport { MINI_WIDTH } from \"./NavigationRail\";\nimport type { FC, ReactNode } from \"react\";\nimport type {\n Navigation,\n NavigationDivider,\n NavigationHeader,\n NavigationItem,\n NavigationPageGroup,\n NavigationPageItem,\n} from \"~/models/Navigation\";\n\nexport const isPageItem = (item: NavigationItem): item is NavigationPageItem | NavigationPageGroup => !(\"kind\" in item);\nexport const isDivider = (item: NavigationItem): item is NavigationDivider =>\n \"kind\" in item && item.kind === \"divider\";\nexport const isHeader = (item: NavigationItem): item is NavigationHeader =>\n \"kind\" in item && item.kind === \"header\";\n\ninterface NavigationListProps {\n subNavigation: Navigation;\n depth?: number;\n collapsed?: boolean;\n isPopover?: boolean;\n isSidebarFullyExpanded?: boolean;\n isSidebarFullyCollapsed?: boolean;\n expandedWidth: number | string;\n renderItem?: (item: NavigationPageItem | NavigationPageGroup, context: { collapsed: boolean }) => ReactNode;\n activePath?: string | null;\n onNavigate: (item: NavigationPageItem | NavigationPageGroup) => void;\n onClose?: () => void;\n}\n\nexport const NavigationList: FC<NavigationListProps> = ({\n subNavigation,\n depth = 0,\n collapsed,\n isPopover,\n isSidebarFullyExpanded = true,\n isSidebarFullyCollapsed,\n expandedWidth,\n renderItem,\n activePath,\n onNavigate,\n onClose,\n}) => {\n const [openKeys, setOpenKeys] = useState<Array<string>>([]);\n\n useEffect(() => {\n if (collapsed) setOpenKeys([]);\n }, [collapsed]);\n\n const toggleKey = (key: string) =>\n setOpenKeys((previous) =>\n previous.includes(key) ? previous.filter((k) => k !== key) : [...previous, key],\n );\n\n const renderNested = (children: Array<NavigationItem>) => (\n <NavigationList\n subNavigation={children}\n depth={depth + 1}\n isPopover={collapsed}\n expandedWidth={expandedWidth}\n activePath={activePath}\n onNavigate={onNavigate}\n onClose={onClose}\n />\n );\n\n const filteredNavigation = subNavigation.filter((nav) => !nav.hidden);\n\n return (\n <List\n sx={{\n padding: 0,\n mt: isPopover && depth === 1 ? 0.5 : 0,\n mb: depth === 0 && !isPopover ? 4 : 0.5,\n pl: (isPopover ? 1 : 2) * (isPopover ? depth - 1 : depth),\n minWidth: isPopover && depth === 1 ? 240 : \"auto\",\n width: collapsed ? MINI_WIDTH : \"auto\",\n }}\n >\n {filteredNavigation.map((navItem, index) => {\n if (isHeader(navItem)) {\n return (\n <ListSubheader\n key={`subheader-${depth}-${index}`}\n sx={{\n fontSize: 12,\n fontWeight: \"700\",\n height: collapsed ? 0 : 40,\n px: 2,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n zIndex: 2,\n bgcolor: \"transparent\",\n position: \"static\",\n }}\n >\n {navItem.title}\n </ListSubheader>\n );\n }\n\n if (isDivider(navItem)) {\n const nextItem = filteredNavigation[index + 1];\n return (\n <li key={`divider-${depth}-${index}`}>\n <Divider sx={{ mx: 1, mt: 1, mb: isHeader(nextItem) && !collapsed ? 0 : 1 }} />\n </li>\n );\n }\n\n if (!isPageItem(navItem)) return null;\n\n const key = `item-${depth}-${index}`;\n const uniqueItemKey = `${depth}-${index}-${navItem.title}`;\n\n if (renderItem)\n return <Fragment key={key}>{renderItem(navItem, { collapsed: !!collapsed })}</Fragment>;\n\n return (\n <NavigationListItem\n key={key}\n item={navItem}\n isOpen={openKeys.includes(uniqueItemKey)}\n selected={activePath === navItem.to}\n collapsed={collapsed}\n isSidebarFullyExpanded={isSidebarFullyExpanded}\n isSidebarFullyCollapsed={isSidebarFullyCollapsed}\n onClick={navItem.children && !collapsed ? () => toggleKey(uniqueItemKey) : undefined}\n renderNested={renderNested}\n onClose={onClose}\n />\n );\n })}\n </List>\n );\n};\n","import Box from \"@mui/material/Box\";\nimport { useLocation, useNavigate } from \"@tanstack/react-router\";\nimport { NavigationList, isHeader } from \"./NavigationList\";\nimport { EXPANDED_WIDTH } from \"./NavigationRail\";\nimport type { FC } from \"react\";\nimport type { Navigation } from \"~/models/Navigation\";\n\ninterface NavigationContentProps {\n navigation: Navigation;\n collapsed: boolean;\n expanded: boolean;\n setExpanded: (open: boolean) => void;\n showPermanent: boolean;\n}\n\nexport const NavigationContent: FC<NavigationContentProps> = ({\n navigation,\n collapsed,\n expanded,\n setExpanded,\n showPermanent,\n}) => {\n const navigate = useNavigate();\n const location = useLocation();\n\n return (\n <Box\n component=\"nav\"\n sx={{\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n overflow: \"auto\",\n scrollbarGutter: collapsed ? \"stable\" : \"auto\",\n overflowX: \"hidden\",\n pt: navigation[0] && isHeader(navigation[0]) && !collapsed ? 0 : 2,\n }}\n >\n <NavigationList\n subNavigation={navigation}\n collapsed={collapsed}\n isSidebarFullyExpanded={expanded}\n isSidebarFullyCollapsed={!expanded}\n expandedWidth={EXPANDED_WIDTH}\n activePath={location.pathname}\n onNavigate={navigate}\n onClose={showPermanent ? undefined : () => setExpanded(false)}\n />\n </Box>\n );\n};\n","import Drawer from \"@mui/material/Drawer\";\nimport { Fragment } from \"react\";\nimport { NavigationContent } from \"./NavigationContent\";\nimport type { FC } from \"react\";\nimport type { Navigation } from \"~/models/Navigation\";\n\nexport const MINI_WIDTH = 84;\nexport const EXPANDED_WIDTH = 320;\nexport const TOOLBAR_HEIGHT = 64;\n\ninterface NavigationRailProps {\n navigation: Navigation;\n expanded: boolean;\n setExpanded: (open: boolean) => void;\n}\n\nexport const NavigationRail: FC<NavigationRailProps> = ({ navigation, expanded, setExpanded }) => (\n <Fragment>\n <Drawer\n variant=\"permanent\"\n sx={{\n display: { xs: \"none\", sm: \"block\" },\n width: expanded ? EXPANDED_WIDTH : MINI_WIDTH,\n [\"& .MuiDrawer-paper\"]: (theme) => ({\n position: \"absolute\",\n top: `${TOOLBAR_HEIGHT}px`,\n height: `calc(100% - ${TOOLBAR_HEIGHT}px)`,\n width: expanded ? EXPANDED_WIDTH : MINI_WIDTH,\n background: \"transparent\",\n borderTop: \"1px solid\",\n borderColor: theme.vars?.palette.divider ?? theme.palette.divider,\n boxShadow: \"none\",\n }),\n }}\n >\n <NavigationContent\n navigation={navigation}\n collapsed={!expanded}\n expanded={expanded}\n setExpanded={setExpanded}\n showPermanent={true}\n />\n </Drawer>\n\n <Drawer\n open={expanded}\n onClose={() => setExpanded(false)}\n sx={{\n display: { xs: \"block\", sm: \"none\" },\n \"& .MuiDrawer-paper\": {\n width: \"min(280px, calc(100vw - 56px))\",\n },\n }}\n >\n <NavigationContent\n navigation={navigation}\n collapsed={false}\n expanded={expanded}\n setExpanded={setExpanded}\n showPermanent={false}\n />\n </Drawer>\n </Fragment>\n);\n","import { InteractionType } from \"@azure/msal-browser\";\r\nimport { MsalAuthenticationTemplate } from \"@azure/msal-react\";\r\nimport Menu from \"@mui/icons-material/Menu\";\r\nimport MenuOpen from \"@mui/icons-material/MenuOpen\";\r\nimport {\r\n AppBar,\r\n Box,\r\n CssBaseline,\r\n IconButton,\r\n InitColorSchemeScript,\r\n Toolbar,\r\n} from \"@mui/material\";\r\nimport { styled } from \"@mui/material/styles\";\r\nimport { useMatches } from \"@tanstack/react-router\";\r\nimport type { FC, ReactNode } from \"react\";\r\nimport { Fragment, useState } from \"react\";\r\nimport { Platform } from \"~/lib/utils\";\r\nimport type { LayoutOptions } from \"~/models/LayoutOptions\";\r\nimport type { Navigation } from \"~/models/Navigation\";\r\nimport { ToolbarAccount } from \"./account/UserMenu\";\r\nimport { AppTitle } from \"./AppTitle\";\r\nimport { NavigationRail } from \"./navigation/NavigationRail\";\r\n\r\nconst NAVIGATION_STORAGE_KEY = \"navigation-open\";\r\n\r\nconst getInitialNavigationOpen = (): boolean => {\r\n if (Platform.isWindows || Platform.isMacOS)\r\n return localStorage.getItem(NAVIGATION_STORAGE_KEY) === \"true\";\r\n return false;\r\n};\r\n\r\nconst saveNavigationState = (value: boolean): void => {\r\n if (Platform.isWindows || Platform.isMacOS) {\r\n localStorage.setItem(NAVIGATION_STORAGE_KEY, String(value));\r\n }\r\n};\r\n\r\nconst DrawerHeader = styled(\"div\")(({ theme }) => ({\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-end\",\r\n padding: theme.spacing(0, 1),\r\n ...theme.mixins.toolbar,\r\n}));\r\n\r\ninterface LayoutProps {\r\n navigation: Navigation | undefined;\r\n options: LayoutOptions | undefined;\r\n children: ReactNode;\r\n}\r\n\r\nexport const Layout: FC<LayoutProps> = ({ navigation, options, children }) => {\r\n const [navigationOpen, setNavigationOpen] = useState(getInitialNavigationOpen);\r\n const matches = useMatches();\r\n const currentRoutePath = matches.at(-1)?.fullPath;\r\n const isPublicRoute = options?.publicRoutes?.includes(currentRoutePath) ?? false;\r\n const showShell = options?.showShell ?? true;\r\n\r\n return (\r\n <Fragment>\r\n <InitColorSchemeScript />\r\n <CssBaseline />\r\n\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n height: \"100dvh\",\r\n maxHeight: \"100dvh\",\r\n overflow: \"hidden\",\r\n width: \"100%\",\r\n }}\r\n >\r\n {showShell && (\r\n <AppBar\r\n color=\"transparent\"\r\n position=\"fixed\"\r\n sx={{\r\n borderBottom: \"1px solid\",\r\n borderColor: \"var(--mui-palette-divider)\",\r\n boxShadow: \"none\",\r\n }}\r\n >\r\n <Toolbar>\r\n {navigation && (\r\n <IconButton\r\n onClick={() => {\r\n setNavigationOpen((previous) => {\r\n const newValue = !previous;\r\n saveNavigationState(newValue);\r\n return newValue;\r\n });\r\n }}\r\n sx={{ marginRight: 2 }}\r\n >\r\n {navigationOpen ? <MenuOpen /> : <Menu />}\r\n </IconButton>\r\n )}\r\n\r\n <AppTitle />\r\n\r\n <ToolbarAccount />\r\n </Toolbar>\r\n </AppBar>\r\n )}\r\n\r\n {navigation && showShell && (\r\n <NavigationRail\r\n navigation={navigation}\r\n expanded={navigationOpen}\r\n setExpanded={(newValue) => {\r\n setNavigationOpen(newValue);\r\n saveNavigationState(newValue);\r\n }}\r\n />\r\n )}\r\n\r\n <Box\r\n component=\"main\"\r\n sx={{\r\n flexGrow: 1,\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n minWidth: 0,\r\n height: \"100%\",\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n {showShell && <DrawerHeader />}\r\n <Box sx={{ flex: 1, overflow: \"auto\", position: \"relative\" }}>\r\n {isPublicRoute ? (\r\n children\r\n ) : (\r\n <MsalAuthenticationTemplate interactionType={InteractionType.Redirect}>\r\n {children}\r\n </MsalAuthenticationTemplate>\r\n )}\r\n </Box>\r\n </Box>\r\n </Box>\r\n </Fragment>\r\n );\r\n};\r\n","import type { EventMessage } from \"@azure/msal-browser\";\r\nimport { EventType, InteractionStatus } from \"@azure/msal-browser\";\r\nimport { MsalProvider, useMsal } from \"@azure/msal-react\";\r\nimport { useNavigate, useRouter } from \"@tanstack/react-router\";\r\nimport type { FC, ReactNode } from \"react\";\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport {\r\n pca,\r\n subscribeToTokenInteractionRequired,\r\n TanStackNavigationClient,\r\n} from \"~/lib/auth/msalClient\";\r\n\r\ninterface MsalAuthProviderProps {\r\n children: ReactNode;\r\n}\r\n\r\nconst MsalAuthEffects: FC = () => {\r\n const { accounts, inProgress, instance } = useMsal();\r\n const router = useRouter();\r\n const [pendingScopes, setPendingScopes] = useState<Array<string> | null>(null);\r\n const previousInProgress = useRef(inProgress);\r\n const navigate = useNavigate();\r\n pca.setNavigationClient(new TanStackNavigationClient(navigate));\r\n\r\n useEffect(() => {\r\n const callbackId = instance.addEventCallback((event: EventMessage) => {\r\n if (\r\n event.eventType === EventType.LOGIN_SUCCESS ||\r\n event.eventType === EventType.ACQUIRE_TOKEN_SUCCESS ||\r\n event.eventType === EventType.LOGOUT_SUCCESS\r\n ) {\r\n void router.invalidate();\r\n }\r\n });\r\n\r\n return () => {\r\n if (callbackId) {\r\n instance.removeEventCallback(callbackId);\r\n }\r\n };\r\n }, [instance, router]);\r\n\r\n useEffect(() => {\r\n const wasInteracting = previousInProgress.current !== InteractionStatus.None;\r\n previousInProgress.current = inProgress;\r\n\r\n if (wasInteracting && inProgress === InteractionStatus.None) {\r\n void router.invalidate();\r\n }\r\n }, [inProgress, router]);\r\n\r\n useEffect(() => subscribeToTokenInteractionRequired(setPendingScopes), []);\r\n\r\n useEffect(() => {\r\n if (!pendingScopes || inProgress !== InteractionStatus.None) {\r\n return;\r\n }\r\n\r\n const account = instance.getActiveAccount() ?? accounts[0];\r\n if (!account) {\r\n return;\r\n }\r\n\r\n setPendingScopes(null);\r\n void instance.acquireTokenRedirect({ scopes: pendingScopes, account }).catch(() => undefined);\r\n }, [accounts, inProgress, instance, pendingScopes]);\r\n\r\n return null;\r\n};\r\n\r\nexport const MsalAuthProvider: FC<MsalAuthProviderProps> = ({ children }) => (\r\n <MsalProvider instance={pca}>\r\n <MsalAuthEffects />\r\n {children}\r\n </MsalProvider>\r\n);\r\n","import { ThemeProvider } from \"@mui/material\";\r\nimport { LocalizationProvider } from \"@mui/x-date-pickers\";\r\nimport { AdapterDayjs } from \"@mui/x-date-pickers/AdapterDayjs\";\r\nimport dayjs from \"dayjs\";\r\nimport i18n from \"i18next\";\r\nimport LanguageDetector from \"i18next-browser-languagedetector\";\r\nimport { initReactI18next } from \"react-i18next\";\r\nimport { resources } from \"virtual:wcz-layout\";\r\nimport z from \"zod\";\r\nimport { useEffect } from \"react\";\r\nimport { DialogsProvider } from \"./DialogsProvider\";\r\nimport { NotificationProvider } from \"./NotificationProvider\";\r\nimport type { FC, ReactNode } from \"react\";\r\nimport type { LayoutOptions } from \"~/models/LayoutOptions\";\r\nimport type { Navigation } from \"~/models/Navigation\";\r\nimport type { Theme } from \"@mui/material\";\r\nimport { Layout } from \"~/components/core/Layout\";\r\nimport { MsalAuthProvider } from \"./MsalAuthProvider\";\r\n\r\nconst YEAR_IN_MINUTES = 60 * 24 * 365;\r\n\r\nconst setLocale = (language: string) => {\r\n z.config(z.core.locales[language as keyof typeof z.core.locales]());\r\n dayjs.locale(language);\r\n};\r\n\r\nawait i18n\r\n .use(LanguageDetector)\r\n .use(initReactI18next)\r\n .init({\r\n resources,\r\n fallbackLng: \"en\",\r\n supportedLngs: Object.keys(resources),\r\n detection: {\r\n caches: [\"cookie\"],\r\n cookieMinutes: YEAR_IN_MINUTES,\r\n },\r\n interpolation: { escapeValue: false },\r\n showSupportNotice: false,\r\n });\r\n\r\nsetLocale(i18n.resolvedLanguage ?? i18n.language);\r\n\r\ni18n.on(\"languageChanged\", (language) => {\r\n setLocale(language);\r\n});\r\n\r\ninterface ProvidersProps {\r\n options?: LayoutOptions;\r\n navigation?: Navigation;\r\n theme: Theme;\r\n children: ReactNode;\r\n}\r\n\r\nexport const LayoutProvider: FC<ProvidersProps> = ({ options, navigation, theme, children }) => {\r\n useEffect(() => {\r\n if (\"serviceWorker\" in navigator) {\r\n navigator.serviceWorker.register(\"/sw.js\");\r\n }\r\n }, []);\r\n\r\n return (\r\n <ThemeProvider theme={theme}>\r\n <LocalizationProvider\r\n key={i18n.language}\r\n dateAdapter={AdapterDayjs}\r\n adapterLocale={i18n.language}\r\n >\r\n <NotificationProvider snackbarOrigin={options?.snackbarOrigin}>\r\n <DialogsProvider>\r\n <MsalAuthProvider>\r\n <Layout navigation={navigation} options={options}>\r\n {children}\r\n </Layout>\r\n </MsalAuthProvider>\r\n </DialogsProvider>\r\n </NotificationProvider>\r\n </LocalizationProvider>\r\n </ThemeProvider>\r\n );\r\n};\r\n"],"mappings":"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"}
|
|
@@ -1,18 +1,30 @@
|
|
|
1
1
|
import { LinkOptions } from '@tanstack/react-router';
|
|
2
|
-
|
|
2
|
+
type NavigationLinkOptions = Pick<LinkOptions, "to" | "href" | "params" | "search">;
|
|
3
|
+
type NavigationBase = {
|
|
4
|
+
hidden?: boolean;
|
|
5
|
+
};
|
|
6
|
+
type NavigationBaseItem = NavigationBase & {
|
|
3
7
|
title: string;
|
|
4
8
|
icon: React.ReactNode;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
+
};
|
|
10
|
+
export type NavigationPageItem = NavigationBaseItem & Partial<NavigationLinkOptions> & {
|
|
11
|
+
kind?: never;
|
|
12
|
+
children?: never;
|
|
13
|
+
};
|
|
14
|
+
export type NavigationPageGroup = NavigationBaseItem & {
|
|
15
|
+
[K in keyof NavigationLinkOptions]?: never;
|
|
16
|
+
} & {
|
|
17
|
+
kind?: never;
|
|
18
|
+
children: Array<NavigationItem>;
|
|
19
|
+
};
|
|
20
|
+
export type NavigationDivider = NavigationBase & {
|
|
9
21
|
kind: "divider";
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
export
|
|
22
|
+
title?: never;
|
|
23
|
+
};
|
|
24
|
+
export type NavigationHeader = NavigationBase & {
|
|
13
25
|
kind: "header";
|
|
14
26
|
title: string;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
export type NavigationItem = NavigationPageItem | NavigationDivider | NavigationHeader;
|
|
27
|
+
};
|
|
28
|
+
export type NavigationItem = NavigationPageItem | NavigationPageGroup | NavigationDivider | NavigationHeader;
|
|
18
29
|
export type Navigation = Array<NavigationItem>;
|
|
30
|
+
export {};
|