wcz-layout 9.4.1 → 9.4.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/index.mjs CHANGED
@@ -1849,8 +1849,12 @@ const NotificationProvider = (t0) => {
1849
1849
  //#endregion
1850
1850
  //#region src/providers/LayoutProvider.tsx
1851
1851
  const YEAR_IN_MINUTES = 1440 * 365;
1852
+ const normalizeLocale = (locale) => locale.replace(/[^a-z]/gi, "").toLowerCase();
1853
+ const zodLocales = new Map(Object.entries(z.core.locales).map(([locale, createLocale]) => [normalizeLocale(locale), createLocale]));
1852
1854
  const setLocale = (language) => {
1853
- z.config(z.core.locales[language]());
1855
+ const baseLanguage = language.split(/[-_]/)[0];
1856
+ const createLocale = zodLocales.get(normalizeLocale(language)) ?? zodLocales.get(normalizeLocale(baseLanguage)) ?? z.core.locales.en;
1857
+ z.config(createLocale());
1854
1858
  dayjs.locale(language);
1855
1859
  };
1856
1860
  await i18n.use(LanguageDetector).use(initReactI18next).init({
@@ -1869,9 +1873,9 @@ i18n.on("languageChanged", (language) => {
1869
1873
  });
1870
1874
  const LayoutProvider = (t0) => {
1871
1875
  const $ = c(13);
1872
- if ($[0] !== "e30ffdab72c324bf6536c56b05c42629fedbc1862e79140a113dc584fb52dcdf") {
1876
+ if ($[0] !== "94e62a5c7e519982c88eb385a81cff365d29c836f19ddb26b4a3955b822d8acd") {
1873
1877
  for (let $i = 0; $i < 13; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1874
- $[0] = "e30ffdab72c324bf6536c56b05c42629fedbc1862e79140a113dc584fb52dcdf";
1878
+ $[0] = "94e62a5c7e519982c88eb385a81cff365d29c836f19ddb26b4a3955b822d8acd";
1875
1879
  }
1876
1880
  const { options, navigation, theme, children } = t0;
1877
1881
  let t1;
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["Avatar","useQuery","createServerFn","axios","FC","getAccessToken","getProfilePhoto","method","handler","Promise","accessToken","response","get","ArrayBuffer","responseType","headers","Authorization","Buffer","from","data","toString","UserAvatar","$","_c","$i","Symbol","for","t0","queryKey","queryFn","_temp","staleTime","Infinity","gcTime","photoUrl","t1","undefined","t2","width","xs","sm","height","t3","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","$i","Symbol","for","anchorElement","setAnchorElement","tab","setTab","open","Boolean","t","i18n","mode","setMode","t0","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","t37","map","t38","modeValue","Icon","t39","t40","t41","t42","t43","languageCode","changeLanguage","finally","resolvedLanguage","width","xs","sm","height","name","employeeId","department","_temp2","_temp3","lng","location","href","returnTo","pathname","search","encodeURIComponent","Box","Chip","Stack","Typography","useRouter","z","FC","manifest","RouterIconButton","PRODUCTION_ENV","getEnv","url","string","refine","u","split","length","transform","toUpperCase","catch","parse","AppTitle","$","_c","$i","Symbol","for","router","t0","origin","env","isProduction","t1","alignItems","flexGrow","t2","name","t3","display","xs","sm","t4","short_name","t5","t6","t7","LinkOptions","NavigationBase","hidden","NavigationBaseItem","title","icon","React","ReactNode","NavigationPageItem","Pick","kind","NavigationPageGroup","children","Array","NavigationItem","NavigationDivider","NavigationHeader","Navigation","isPageItem","item","isPageGroup","isDivider","isHeader","ExpandMoreIcon","Collapse","Grow","Avatar","Box","ListItem","ListItemButton","ListItemIcon","ListItemText","Paper","styled","Typography","Fragment","useState","MINI_WIDTH","isPageGroup","NavigationItem","NavigationPageGroup","NavigationPageItem","FC","ReactNode","SxProps","Theme","RouterListItemButton","ICON_SIZE","getSelectedColor","theme","vars","palette","primary","dark","getActionActiveColor","action","active","StyledNavButton","borderRadius","Number","shape","color","backgroundColor","routerButtonSx","IconOrAvatar","item","collapsed","t0","$","_c","$i","Symbol","for","icon","t1","position","left","top","transform","t2","display","alignItems","justifyContent","minWidth","t3","t4","title","width","height","fontSize","split","slice","map","_temp","join","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","groupItem","itemId","to","href","right","ml","transition","transitions","create","easing","sharp","duration","chevronSx","shouldJustExpand","px","sx","buttonProps","t8","noWrap","flex","t9","t10","buttonContent","t11","onMouseEnter","onMouseLeave","t12","py","overflowX","t13","params","search","t14","t15","listItem","t16","t17","word","charAt","toUpperCase","Divider","List","ListSubheader","Fragment","useEffect","useState","NavigationListItem","MINI_WIDTH","FC","ReactNode","isPageItem","isPageGroup","isDivider","isHeader","Navigation","NavigationItem","NavigationPageGroup","NavigationPageItem","NavigationListProps","subNavigation","depth","collapsed","isPopover","isSidebarFullyExpanded","isSidebarFullyCollapsed","renderItem","item","context","activePath","onClose","NavigationList","t0","$","_c","$i","Symbol","for","t1","t2","undefined","t3","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","selected","to","nav","hidden","Box","useLocation","NavigationList","FC","isHeader","Navigation","NavigationContentProps","navigation","collapsed","expanded","setExpanded","open","showPermanent","NavigationContent","t0","$","_c","$i","Symbol","for","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","$i","Symbol","for","t1","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","Menu","MenuOpen","AppBar","Box","CssBaseline","IconButton","InitColorSchemeScript","Toolbar","styled","FC","ReactNode","Fragment","useEffect","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","$i","Symbol","for","navigationOpen","setNavigationOpen","t1","some","_temp","showNavigation","showShell","t2","t3","t4","t5","t6","height","maxHeight","overflow","width","t7","borderBottom","borderColor","boxShadow","_temp2","marginRight","t8","newValue_0","newValue","t9","flexGrow","flexDirection","minWidth","t10","t11","flex","position","t12","t13","t14","item","hidden","previous","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","$i","Symbol","for","t1","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","createCache","CacheProvider","Theme","ThemeProvider","LocalizationProvider","AdapterDayjs","dayjs","i18n","LanguageDetector","FC","ReactNode","useEffect","I18nextProvider","initReactI18next","resources","z","Layout","LayoutOptions","Navigation","DialogsProvider","NotificationProvider","YEAR_IN_MINUTES","setLocale","language","config","core","locales","locale","use","init","fallbackLng","supportedLngs","Object","keys","detection","caches","cookieMinutes","interpolation","escapeValue","resolvedLanguage","on","ProvidersProps","options","navigation","theme","children","LayoutProvider","t0","$","_c","$i","Symbol","for","t1","key","emotionCache","t2","_temp","t3","snackbarOrigin","t4","t5","t6","navigator","serviceWorker","register"],"sources":["../src/components/core/account/UserAvatar.tsx","../src/components/core/account/UserMenu.tsx","../src/components/core/AppTitle.tsx","../src/models/Navigation.ts","../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/DialogsProvider.tsx","../src/providers/NotificationProvider.tsx","../src/providers/LayoutProvider.tsx"],"sourcesContent":["import { Avatar } from \"@mui/material\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport { createServerFn } from \"@tanstack/react-start\";\nimport axios from \"axios\";\nimport { FC } from \"react\";\nimport { getAccessToken } from \"~/lib/auth/user\";\n\nconst getProfilePhoto = createServerFn({ method: \"GET\" }).handler(async (): Promise<string> => {\n try {\n const accessToken = await getAccessToken(\"graph\");\n const response = await axios.get<ArrayBuffer>(\n \"https://graph.microsoft.com/v1.0/me/photo/$value\",\n {\n responseType: \"arraybuffer\",\n headers: { Authorization: `Bearer ${accessToken}` },\n },\n );\n return `data:image/jpeg;base64,${Buffer.from(response.data).toString(\"base64\")}`;\n } catch {\n return \"\";\n }\n});\n\nexport const UserAvatar: FC = () => {\n const { data: photoUrl } = useQuery({\n queryKey: [\"graph\", \"me\", \"photo\"],\n queryFn: () => getProfilePhoto(),\n staleTime: Infinity,\n gcTime: Infinity,\n });\n\n return (\n <Avatar\n alt=\"User profile photo\"\n src={photoUrl || undefined}\n sx={{ width: { xs: 32, sm: 40 }, height: { xs: 32, sm: 40 } }}\n />\n );\n};\n","import AccountCircle from \"@mui/icons-material/AccountCircle\";\nimport ArrowBack from \"@mui/icons-material/ArrowBack\";\nimport Brightness4 from \"@mui/icons-material/Brightness4\";\nimport ChevronRight from \"@mui/icons-material/ChevronRight\";\nimport DarkMode from \"@mui/icons-material/DarkMode\";\nimport Done from \"@mui/icons-material/Done\";\nimport LightMode from \"@mui/icons-material/LightMode\";\nimport Login from \"@mui/icons-material/Login\";\nimport Logout from \"@mui/icons-material/Logout\";\nimport SettingsBrightness from \"@mui/icons-material/SettingsBrightness\";\nimport Translate from \"@mui/icons-material/Translate\";\nimport {\n Box,\n IconButton,\n List,\n ListItem,\n ListItemButton,\n ListItemIcon,\n ListItemText,\n ListSubheader,\n Menu,\n useColorScheme,\n} from \"@mui/material\";\nimport { rootRouteId, useMatch } from \"@tanstack/react-router\";\nimport type { FC } from \"react\";\nimport { Fragment, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { UserAvatar } from \"./UserAvatar\";\n\ntype TabType = \"settings\" | \"theme\" | \"language\";\nconst capitalize = (value: string | undefined) =>\n value && value.charAt(0).toUpperCase() + value.slice(1);\n\nexport const ToolbarAccount: FC = () => {\n const [anchorElement, setAnchorElement] = useState<HTMLElement>();\n const [tab, setTab] = useState<TabType>(\"settings\");\n const open = Boolean(anchorElement);\n const { t, i18n } = useTranslation();\n const { mode, setMode } = useColorScheme();\n const rootMatch = useMatch({ from: rootRouteId });\n const user = rootMatch.context.user;\n\n const supportedLanguages = (\n Array.isArray(i18n.options.supportedLngs) ? i18n.options.supportedLngs : []\n ).filter((lng) => lng !== \"cimode\");\n const languageDisplayNames = new Intl.DisplayNames([i18n.language], { type: \"language\" });\n\n const colorModes: Array<{\n mode: Exclude<typeof mode, undefined>;\n icon: typeof LightMode;\n label: string;\n }> = [\n { mode: \"light\", icon: LightMode, label: t(\"Layout.Light\") },\n { mode: \"dark\", icon: DarkMode, label: t(\"Layout.Dark\") },\n { mode: \"system\", icon: SettingsBrightness, label: t(\"Layout.System\") },\n ];\n\n const openMenu = (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) =>\n setAnchorElement(event.currentTarget);\n const closeMenu = () => {\n setAnchorElement(undefined);\n setTimeout(() => setTab(\"settings\"), 300);\n };\n\n const changeTab = (newTab: TabType) => () => setTab(newTab);\n\n const settings = (\n <List\n component=\"nav\"\n subheader={\n <ListSubheader sx={{ backgroundColor: \"transparent\" }}>\n {t(\"Layout.Settings\")}\n </ListSubheader>\n }\n >\n <ListItemButton onClick={changeTab(\"theme\")} sx={{ py: 0.3 }}>\n <ListItemIcon>\n <Brightness4 />\n </ListItemIcon>\n <ListItemText\n primary={t(\"Layout.Appearance\")}\n secondary={colorModes.find((m) => m.mode === mode)?.label ?? t(\"Layout.System\")}\n />\n <ChevronRight />\n </ListItemButton>\n\n <ListItemButton onClick={changeTab(\"language\")} sx={{ py: 0.3 }}>\n <ListItemIcon>\n <Translate />\n </ListItemIcon>\n <ListItemText\n primary={t(\"Layout.Language\")}\n secondary={capitalize(languageDisplayNames.of(i18n.language))}\n />\n <ChevronRight />\n </ListItemButton>\n </List>\n );\n\n const theme = (\n <List\n subheader={\n <ListSubheader\n onClick={changeTab(\"settings\")}\n sx={{\n backgroundColor: \"transparent\",\n display: \"flex\",\n alignItems: \"center\",\n px: 1,\n cursor: \"pointer\",\n }}\n >\n <IconButton size=\"small\" sx={{ mr: 0.5 }} aria-label=\"Back\">\n <ArrowBack fontSize=\"small\" />\n </IconButton>{\" \"}\n {t(\"Layout.Appearance\")}\n </ListSubheader>\n }\n >\n {colorModes.map(({ mode: modeValue, icon: Icon, label }) => (\n <ListItemButton\n key={modeValue}\n onClick={() => {\n setMode(modeValue);\n closeMenu();\n }}\n selected={mode === modeValue}\n >\n <ListItemIcon>\n <Icon />\n </ListItemIcon>\n <ListItemText primary={label} />\n </ListItemButton>\n ))}\n </List>\n );\n\n const language = (\n <List\n subheader={\n <ListSubheader\n onClick={changeTab(\"settings\")}\n sx={{\n backgroundColor: \"transparent\",\n display: \"flex\",\n alignItems: \"center\",\n px: 1,\n cursor: \"pointer\",\n }}\n >\n <IconButton size=\"small\" sx={{ mr: 0.5 }} aria-label=\"Back\">\n <ArrowBack fontSize=\"small\" />\n </IconButton>{\" \"}\n {t(\"Layout.Language\")}\n </ListSubheader>\n }\n >\n {supportedLanguages.map((languageCode) => (\n <ListItemButton\n key={languageCode}\n onClick={() => i18n.changeLanguage(languageCode).finally(() => closeMenu())}\n selected={i18n.resolvedLanguage === languageCode}\n >\n <ListItemIcon>{i18n.resolvedLanguage === languageCode && <Done />}</ListItemIcon>\n <ListItemText primary={capitalize(languageDisplayNames.of(languageCode))} />\n </ListItemButton>\n ))}\n </List>\n );\n\n return (\n <Fragment>\n <IconButton size=\"small\" edge=\"end\" onClick={openMenu} aria-label=\"Account\">\n {user ? (\n <UserAvatar />\n ) : (\n <AccountCircle sx={{ width: { xs: 32, sm: 40 }, height: { xs: 32, sm: 40 } }} />\n )}\n </IconButton>\n\n <Menu anchorEl={anchorElement} open={open} onClose={closeMenu}>\n <Box sx={{ width: 240 }}>\n <List disablePadding>\n {user ? (\n <Fragment>\n <ListItem>\n <ListItemText\n primary={user.name}\n secondary={\n <span>\n {user.employeeId && <span>{user.employeeId}</span>}\n {user.employeeId && <br />}\n {user.department && <span>{user.department}</span>}\n </span>\n }\n />\n </ListItem>\n <ListItemButton onClick={() => {\n location.href = \"/auth/logout\";\n }}>\n <ListItemIcon>\n <Logout color=\"error\" />\n </ListItemIcon>\n <ListItemText primary={t(\"Layout.Logout\")} />\n </ListItemButton>\n </Fragment>\n ) : (\n <ListItemButton onClick={() => {\n const returnTo = location.pathname + location.search;\n location.href = `/auth/login?returnTo=${encodeURIComponent(returnTo)}`;\n }}>\n <ListItemIcon>\n <Login color=\"success\" />\n </ListItemIcon>\n <ListItemText primary={t(\"Layout.LogIn\")} />\n </ListItemButton>\n )}\n </List>\n\n {tab === \"settings\" && settings}\n {tab === \"theme\" && theme}\n {tab === \"language\" && language}\n </Box>\n </Menu>\n </Fragment>\n );\n};\n","import { Box, Chip, Stack, Typography } from \"@mui/material\";\nimport { useRouter } from \"@tanstack/react-router\";\nimport z from \"zod\";\nimport type { FC } from \"react\";\nimport { manifest } from \"virtual:wcz-layout\";\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\" spacing={1} sx={{ alignItems: \"center\", flexGrow: 1 }}>\n <RouterIconButton to=\"/\" size=\"small\">\n <img src=\"/favicon-32x32.png\" alt={manifest.name} loading=\"lazy\" />\n </RouterIconButton>\n <Typography variant=\"h6\">\n <Box component=\"span\" sx={{ display: { xs: \"inline\", sm: \"none\" } }}>\n {manifest.short_name ?? manifest.name}\n </Box>\n <Box component=\"span\" sx={{ display: { xs: \"none\", sm: \"inline\" } }}>\n {manifest.name}\n </Box>\n </Typography>\n {!isProduction && <Chip size=\"small\" label={env} color=\"primary\" />}\n </Stack>\n );\n};\n","import { LinkOptions } from \"@tanstack/react-router\";\n\ntype NavigationBase = { hidden?: boolean };\n\ntype NavigationBaseItem = NavigationBase & {\n title: string;\n icon: React.ReactNode;\n};\n\nexport type NavigationPageItem = NavigationBaseItem &\n Pick<LinkOptions, \"to\" | \"href\" | \"params\" | \"search\"> & { kind: \"item\" };\n\nexport type NavigationPageGroup = NavigationBaseItem & {\n kind: \"group\";\n children: Array<NavigationItem>;\n};\n\nexport type NavigationDivider = NavigationBase & { kind: \"divider\" };\n\nexport type NavigationHeader = NavigationBase & {\n kind: \"header\";\n title: string;\n};\n\nexport type NavigationItem =\n | NavigationPageItem\n | NavigationPageGroup\n | NavigationDivider\n | NavigationHeader;\n\nexport type Navigation = Array<NavigationItem>;\n\nexport const isPageItem = (item: NavigationItem): item is NavigationPageItem =>\n item.kind === \"item\";\nexport const isPageGroup = (item: NavigationItem): item is NavigationPageGroup =>\n item.kind === \"group\";\nexport const isDivider = (item: NavigationItem): item is NavigationDivider =>\n item.kind === \"divider\";\nexport const isHeader = (item: NavigationItem): item is NavigationHeader => item.kind === \"header\";\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 { isPageGroup } from \"~/models/Navigation\";\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: Number(theme.shape.borderRadius) * 2,\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 routerButtonSx: SxProps<Theme> = (theme: Theme) => ({\n borderRadius: 2,\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 .join(\"\")}\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 groupItem = isPageGroup(item);\n const itemId = groupItem ? `group-${item.title}` : `item-${item.to ?? item.href ?? item.title}`;\n\n const chevronSx: SxProps<Theme> = (theme: Theme) => {\n if (collapsed && isSidebarFullyCollapsed && groupItem) {\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 && groupItem) {\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 = groupItem && !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 {groupItem ? <ExpandMoreIcon sx={chevronSx} /> : null}\n </>\n );\n\n const listItem = (\n <ListItem\n {...(groupItem && 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 {groupItem ? (\n <StyledNavButton\n {...buttonProps}\n onClick={shouldJustExpand ? () => onClick?.(item) : undefined}\n >\n {buttonContent}\n </StyledNavButton>\n ) : (\n <RouterListItemButton\n {...buttonProps}\n to={item.to}\n href={item.href}\n params={item.params}\n search={item.search}\n onClick={onClose}\n sx={[buttonProps.sx, routerButtonSx]}\n >\n {buttonContent}\n </RouterListItemButton>\n )}\n\n {groupItem && collapsed ? (\n <MiniPopover open={itemId === hoveredMiniItemId}>\n {renderNested?.(item.children)}\n </MiniPopover>\n ) : null}\n </ListItem>\n );\n\n return (\n <Fragment key={itemId}>\n {listItem}\n {groupItem && !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 { isPageItem, isPageGroup, isDivider, isHeader } from \"~/models/Navigation\";\nimport type {\n Navigation,\n NavigationItem,\n NavigationPageGroup,\n NavigationPageItem,\n} from \"~/models/Navigation\";\n\ninterface NavigationListProps {\n subNavigation: Navigation;\n depth?: number;\n collapsed?: boolean;\n isPopover?: boolean;\n isSidebarFullyExpanded?: boolean;\n isSidebarFullyCollapsed?: boolean;\n renderItem?: (\n item: NavigationPageItem | NavigationPageGroup,\n context: { collapsed: boolean },\n ) => ReactNode;\n activePath?: string | null;\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 renderItem,\n activePath,\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 activePath={activePath}\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\n sx={{ mx: 1, mt: 1, mb: nextItem && isHeader(nextItem) && !collapsed ? 0 : 1 }}\n />\n </li>\n );\n }\n\n if (!isPageItem(navItem) && !isPageGroup(navItem)) return null;\n\n const key = `item-${depth}-${index}`;\n const uniqueItemKey = `${depth}-${index}-${navItem.title}`;\n const selected = isPageItem(navItem) && navItem.to === activePath;\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={selected}\n collapsed={collapsed}\n isSidebarFullyExpanded={isSidebarFullyExpanded}\n isSidebarFullyCollapsed={isSidebarFullyCollapsed}\n onClick={\n isPageGroup(navItem) && !collapsed ? () => toggleKey(uniqueItemKey) : undefined\n }\n renderNested={renderNested}\n onClose={onClose}\n />\n );\n })}\n </List>\n );\n};\n","import Box from \"@mui/material/Box\";\nimport { useLocation } from \"@tanstack/react-router\";\nimport { NavigationList } from \"./NavigationList\";\nimport type { FC } from \"react\";\nimport { isHeader } from \"~/models/Navigation\";\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 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 activePath={location.pathname}\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 Menu from \"@mui/icons-material/Menu\";\nimport MenuOpen from \"@mui/icons-material/MenuOpen\";\nimport {\n AppBar,\n Box,\n CssBaseline,\n IconButton,\n InitColorSchemeScript,\n Toolbar,\n} from \"@mui/material\";\nimport { styled } from \"@mui/material/styles\";\nimport type { FC, ReactNode } from \"react\";\nimport { Fragment, useEffect, useState } from \"react\";\nimport { Platform } from \"~/lib/utils\";\nimport type { LayoutOptions } from \"~/models/LayoutOptions\";\nimport type { Navigation } from \"~/models/Navigation\";\nimport { ToolbarAccount } from \"./account/UserMenu\";\nimport { AppTitle } from \"./AppTitle\";\nimport { NavigationRail } from \"./navigation/NavigationRail\";\n\nconst NAVIGATION_STORAGE_KEY = \"navigation-open\";\n\nconst getInitialNavigationOpen = (): boolean => {\n if (Platform.isWindows || Platform.isMacOS)\n return localStorage.getItem(NAVIGATION_STORAGE_KEY) === \"true\";\n return false;\n};\n\nconst saveNavigationState = (value: boolean): void => {\n if (Platform.isWindows || Platform.isMacOS) {\n localStorage.setItem(NAVIGATION_STORAGE_KEY, String(value));\n }\n};\n\nconst DrawerHeader = styled(\"div\")(({ theme }) => ({\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n padding: theme.spacing(0, 1),\n ...theme.mixins.toolbar,\n}));\n\ninterface LayoutProps {\n navigation: Navigation | undefined;\n options: LayoutOptions | undefined;\n children: ReactNode;\n}\n\nexport const Layout: FC<LayoutProps> = ({ navigation, options, children }) => {\n const [navigationOpen, setNavigationOpen] = useState(false);\n const showNavigation = navigation?.some((item) => item.hidden !== true);\n const showShell = options?.showShell ?? true;\n\n useEffect(() => {\n if (getInitialNavigationOpen()) setNavigationOpen(true);\n }, []);\n\n return (\n <Fragment>\n <InitColorSchemeScript />\n <CssBaseline />\n\n <Box\n sx={{\n display: \"flex\",\n height: \"100dvh\",\n maxHeight: \"100dvh\",\n overflow: \"hidden\",\n width: \"100%\",\n }}\n >\n {showShell && (\n <AppBar\n color=\"transparent\"\n position=\"fixed\"\n sx={{\n borderBottom: \"1px solid\",\n borderColor: \"var(--mui-palette-divider)\",\n boxShadow: \"none\",\n }}\n >\n <Toolbar>\n {showNavigation && (\n <IconButton\n aria-label=\"Toggle navigation\"\n onClick={() => {\n setNavigationOpen((previous) => {\n const newValue = !previous;\n saveNavigationState(newValue);\n return newValue;\n });\n }}\n sx={{ marginRight: 2 }}\n >\n {navigationOpen ? <MenuOpen /> : <Menu />}\n </IconButton>\n )}\n\n <AppTitle />\n\n <ToolbarAccount />\n </Toolbar>\n </AppBar>\n )}\n\n {showNavigation && showShell && (\n <NavigationRail\n navigation={navigation!}\n expanded={navigationOpen}\n setExpanded={(newValue) => {\n setNavigationOpen(newValue);\n saveNavigationState(newValue);\n }}\n />\n )}\n\n <Box\n component=\"main\"\n sx={{\n flexGrow: 1,\n display: \"flex\",\n flexDirection: \"column\",\n minWidth: 0,\n height: \"100%\",\n overflow: \"hidden\",\n }}\n >\n {showShell && <DrawerHeader />}\n <Box sx={{ flex: 1, overflow: \"auto\", position: \"relative\" }}>{children}</Box>\n </Box>\n </Box>\n </Fragment>\n );\n};\n","import useEventCallback from \"@mui/utils/useEventCallback\";\nimport { useId, useRef, useState } from \"react\";\nimport { DialogsContext } from \"../contexts/DialogsContext\";\nimport type { DialogComponent, OpenDialog, OpenDialogOptions } from \"../hooks/useDialogs\";\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 createCache from \"@emotion/cache\";\nimport { CacheProvider } from \"@emotion/react\";\nimport type { Theme } from \"@mui/material\";\nimport { ThemeProvider } from \"@mui/material\";\nimport { LocalizationProvider } from \"@mui/x-date-pickers-pro\";\nimport { AdapterDayjs } from \"@mui/x-date-pickers-pro/AdapterDayjs\";\nimport dayjs from \"dayjs\";\nimport i18n from \"i18next\";\nimport LanguageDetector from \"i18next-browser-languagedetector\";\nimport type { FC, ReactNode } from \"react\";\nimport { useEffect } from \"react\";\nimport { I18nextProvider, initReactI18next } from \"react-i18next\";\nimport { resources } from \"virtual:wcz-layout\";\nimport z from \"zod\";\nimport { Layout } from \"~/components/core/Layout\";\nimport type { LayoutOptions } from \"~/models/LayoutOptions\";\nimport type { Navigation } from \"~/models/Navigation\";\nimport { DialogsProvider } from \"./DialogsProvider\";\nimport { NotificationProvider } from \"./NotificationProvider\";\n\nconst YEAR_IN_MINUTES = 60 * 24 * 365;\n\nconst setLocale = (language: string) => {\n z.config(z.core.locales[language as keyof typeof z.core.locales]());\n dayjs.locale(language);\n};\n\nawait i18n\n .use(LanguageDetector)\n .use(initReactI18next)\n .init({\n resources,\n fallbackLng: \"en\",\n supportedLngs: Object.keys(resources),\n detection: {\n caches: [\"cookie\"],\n cookieMinutes: YEAR_IN_MINUTES,\n },\n interpolation: { escapeValue: false },\n });\n\nsetLocale(i18n.resolvedLanguage ?? i18n.language);\n\ni18n.on(\"languageChanged\", (language) => {\n setLocale(language);\n});\n\ninterface ProvidersProps {\n options?: LayoutOptions;\n navigation?: Navigation;\n theme: Theme;\n children: ReactNode;\n}\n\nexport const LayoutProvider: FC<ProvidersProps> = ({ options, navigation, theme, children }) => {\n const emotionCache = createCache({ key: \"css\" });\n\n useEffect(() => {\n if (\"serviceWorker\" in navigator) {\n void navigator.serviceWorker.register(\"/sw.js\");\n }\n }, []);\n\n return (\n <CacheProvider value={emotionCache}>\n <I18nextProvider i18n={i18n}>\n <ThemeProvider theme={theme}>\n <LocalizationProvider dateAdapter={AdapterDayjs} adapterLocale={i18n.language}>\n <NotificationProvider snackbarOrigin={options?.snackbarOrigin}>\n <DialogsProvider>\n <Layout navigation={navigation} options={options}>\n {children}\n </Layout>\n </DialogsProvider>\n </NotificationProvider>\n </LocalizationProvider>\n </ThemeProvider>\n </I18nextProvider>\n </CacheProvider>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,MAAMM,kBAAkBJ,eAAe,EAAEK,QAAQ,MAAM,CAAC,CAAC,CAACC,QAAQ,YAA6B;CAC7F,IAAI;EACF,MAAME,cAAc,MAAML,eAAe,OAAO;EAChD,MAAMM,WAAW,MAAMR,MAAMS,IAC3B,oDACA;GACEE,cAAc;GACdC,SAAS,EAAEC,eAAe,UAAUN,cAAc;EACpD,CACF;EACA,OAAO,0BAA0BO,OAAOC,KAAKP,SAASQ,IAAI,CAAC,CAACC,SAAS,QAAQ;CAC/E,QAAQ;EACN,OAAO;CACT;AACF,CAAC;AAED,MAAaC,mBAAiB;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAD,EAAA,OAAA,oEAAA;EAAA,KAAA,IAAAE,KAAA,GAAAA,KAAA,GAAAA,MAAA,GAAAF,EAAAE,MAAAC,OAAAC,IAAA,2BAAA;EAAAJ,EAAA,KAAA;CAAA;CAAA,IAAAK;CAAA,IAAAL,EAAA,OAAAG,OAAAC,IAAA,2BAAA,GAAA;EACQC,KAAA;GAAAC,UACxB;IAAC;IAAS;IAAM;GAAO;GAACC,SACzBC;GAAuBC,WACrBC;GAAQC,QACXD;EACV;EAACV,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CALD,MAAA,EAAAH,MAAAe,aAA2BjC,SAAS0B,EAKnC;CAKQ,MAAAQ,KAAAD,YAAAE,KAAAA;CAAqB,IAAAC;CAAA,IAAAf,EAAA,OAAAG,OAAAC,IAAA,2BAAA,GAAA;EACtBW,KAAA;GAAAC,OAAS;IAAAC,IAAM;IAAEC,IAAM;GAAG;GAACC,QAAU;IAAAF,IAAM;IAAEC,IAAM;GAAG;EAAE;EAAClB,EAAA,KAAAe;CAAA,OAAAA,KAAAf,EAAA;CAAA,IAAAoB;CAAA,IAAApB,EAAA,OAAAa,IAAA;EAH/DO,KAAA,oBAAC,QAAD;GACM,KAAA;GACC,KAAAP;GACD,IAAAE;EAAyD,CAAA;EAC7Df,EAAA,KAAAa;EAAAb,EAAA,KAAAoB;CAAA,OAAAA,KAAApB,EAAA;CAAA,OAJFoB;AAIE;AAbwB,SAAAZ,UAAA;CAAA,OAGXxB,gBAAgB;AAAC;;;ACIpC,MAAMkE,cAAcC,UAClBA,SAASA,MAAMC,OAAO,CAAC,CAAC,CAACC,YAAY,IAAIF,MAAMG,MAAM,CAAC;AAExD,MAAaC,uBAAqB;CAAA,MAAAC,IAAAC,EAAA,GAAA;CAAA,IAAAD,EAAA,OAAA,oEAAA;EAAA,KAAA,IAAAE,KAAA,GAAAA,KAAA,KAAAA,MAAA,GAAAF,EAAAE,MAAAC,OAAAC,IAAA,2BAAA;EAAAJ,EAAA,KAAA;CAAA;CAChC,MAAA,CAAAK,eAAAC,oBAA0ChB,SAAsB;CAChE,MAAA,CAAAiB,KAAAC,UAAsBlB,SAAkB,UAAU;CAClD,MAAAmB,OAAaC,QAAQL,aAAa;CAClC,MAAA,EAAAM,GAAAC,SAAoBrB,eAAe;CACnC,MAAA,EAAAsB,MAAAC,YAA0B7B,eAAe;CAAE,IAAA8B;CAAA,IAAAf,EAAA,OAAAG,OAAAC,IAAA,2BAAA,GAAA;EAChBW,KAAA,EAAAC,MAAQ9B,YAAY;EAACc,EAAA,KAAAe;CAAA,OAAAA,KAAAf,EAAA;CAChD,MAAAkB,OADkB/B,SAAS4B,EACdE,CAAS,CAAAE,QAAQD;CAAM,IAAAE;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAA1B,EAAA,OAAAY,QAAAZ,EAAA,OAAAa,QAAAb,EAAA,OAAAc,WAAAd,EAAA,OAAAW,GAAA;EAEpC,MAAAgB,sBACEC,MAAKC,QAASjB,KAAIkB,QAAQC,aAAgD,IAA9BnB,KAAIkB,QAAQC,gBAAxD,CAAA,EAAA,CAA2EC,OACpEC,OAAyB;EAClC,MAAAC,uBAA6B,IAAIC,KAAIC,aAAc,CAACxB,KAAIyB,QAAS,GAAG,EAAAC,MAAQ,WAAW,CAAC;EAAE,IAAAC;EAAA,IAAAvC,EAAA,QAAAW,GAAA;GAO7C4B,KAAA5B,EAAE,cAAc;GAACX,EAAA,MAAAW;GAAAX,EAAA,MAAAuC;EAAA,OAAAA,KAAAvC,EAAA;EAAA,IAAAwC;EAAA,IAAAxC,EAAA,QAAAuC,IAAA;GAA1DC,KAAA;IAAA3B,MAAQ;IAAO4B,MAAQtE;IAASuE,OAASH;GAAkB;GAACvC,EAAA,MAAAuC;GAAAvC,EAAA,MAAAwC;EAAA,OAAAA,KAAAxC,EAAA;EAAA,IAAA2C;EAAA,IAAA3C,EAAA,QAAAW,GAAA;GACrBgC,KAAAhC,EAAE,aAAa;GAACX,EAAA,MAAAW;GAAAX,EAAA,MAAA2C;EAAA,OAAAA,KAAA3C,EAAA;EAAA,IAAA4C;EAAA,IAAA5C,EAAA,QAAA2C,IAAA;GAAvDC,KAAA;IAAA/B,MAAQ;IAAM4B,MAAQxE;IAAQyE,OAASC;GAAiB;GAAC3C,EAAA,MAAA2C;GAAA3C,EAAA,MAAA4C;EAAA,OAAAA,KAAA5C,EAAA;EAAA,IAAA6C;EAAA,IAAA7C,EAAA,QAAAW,GAAA;GACNkC,KAAAlC,EAAE,eAAe;GAACX,EAAA,MAAAW;GAAAX,EAAA,MAAA6C;EAAA,OAAAA,KAAA7C,EAAA;EAAA,IAAA8C;EAAA,IAAA9C,EAAA,QAAA6C,IAAA;GAArEC,KAAA;IAAAjC,MAAQ;IAAQ4B,MAAQnE;IAAkBoE,OAASG;GAAmB;GAAC7C,EAAA,MAAA6C;GAAA7C,EAAA,MAAA8C;EAAA,OAAAA,KAAA9C,EAAA;EAAA,IAAA+C;EAAA,IAAA/C,EAAA,QAAAwC,MAAAxC,EAAA,QAAA4C,MAAA5C,EAAA,QAAA8C,IAAA;GAHtEC,KAAA;IACDP;IACAI;IACAE;GAAuE;GACxE9C,EAAA,MAAAwC;GAAAxC,EAAA,MAAA4C;GAAA5C,EAAA,MAAA8C;GAAA9C,EAAA,MAAA+C;EAAA,OAAAA,KAAA/C,EAAA;EARH,MAAAgD,aAIKD;EAID,IAAAE;EAAA,IAAAjD,EAAA,QAAAG,OAAAC,IAAA,2BAAA,GAAA;GAEa6C,OAAAC,UACf5C,iBAAiB4C,MAAKC,aAAc;GAACnD,EAAA,MAAAiD;EAAA,OAAAA,MAAAjD,EAAA;EADvCsB,WAAiB2B;EACuB,IAAAG;EAAA,IAAApD,EAAA,QAAAG,OAAAC,IAAA,2BAAA,GAAA;GACtBgD,YAAA;IAChB9C,iBAAiB+C,KAAAA,CAAS;IAC1BC,iBAAiB9C,OAAO,UAAU,GAAG,GAAG;GAAC;GAC1CR,EAAA,MAAAoD;EAAA,OAAAA,MAAApD,EAAA;EAHDqB,YAAkB+B;EAGhB,IAAAG;EAAA,IAAAvD,EAAA,QAAAG,OAAAC,IAAA,2BAAA,GAAA;GAEgBmD,OAAAC,iBAA2BhD,OAAOgD,MAAM;GAACxD,EAAA,MAAAuD;EAAA,OAAAA,MAAAvD,EAAA;EAA3D,MAAAyD,YAAkBF;EAA0C,IAAAG;EAAA,IAAA1D,EAAA,QAAAG,OAAAC,IAAA,2BAAA,GAAA;GAMnCsD,MAAA,EAAAC,iBAAmB,cAAc;GAAC3D,EAAA,MAAA0D;EAAA,OAAAA,MAAA1D,EAAA;EAAA,IAAA4D;EAAA,IAAA5D,EAAA,QAAAW,GAAA;GAClDiD,MAAAjD,EAAE,iBAAiB;GAACX,EAAA,MAAAW;GAAAX,EAAA,MAAA4D;EAAA,OAAAA,MAAA5D,EAAA;EAAA,IAAA6D;EAAA,IAAA7D,EAAA,QAAA4D,KAAA;GADvBC,MAAA,oBAAC,eAAD;IAAmB,IAAAH;cAChBE;GADW,CAAA;GAEE5D,EAAA,MAAA4D;GAAA5D,EAAA,MAAA6D;EAAA,OAAAA,MAAA7D,EAAA;EAAA,IAAA8D;EAAA,IAAAC;EAAA,IAAA/D,EAAA,QAAAG,OAAAC,IAAA,2BAAA,GAAA;GAGO0D,MAAAL,UAAU,OAAO;GAAOM,MAAA,EAAAC,IAAM,GAAI;GAAChE,EAAA,MAAA8D;GAAA9D,EAAA,MAAA+D;EAAA,OAAA;GAAAD,MAAA9D,EAAA;GAAA+D,MAAA/D,EAAA;EAAA;EAAA,IAAAiE;EAAA,IAAAjE,EAAA,QAAAG,OAAAC,IAAA,2BAAA,GAAA;GAC1D6D,MAAA,oBAAC,cAAD,EAAA,UACE,oBAAC,aAAD,CAAY,CAAA,EADD,CAAA;GAEEjE,EAAA,MAAAiE;EAAA,OAAAA,MAAAjE,EAAA;EAAA,IAAAkE;EAAA,IAAAlE,EAAA,QAAAW,GAAA;GAEJuD,MAAAvD,EAAE,mBAAmB;GAACX,EAAA,MAAAW;GAAAX,EAAA,MAAAkE;EAAA,OAAAA,MAAAlE,EAAA;EAAA,IAAAmE;EAAA,IAAAnE,EAAA,QAAAgD,cAAAhD,EAAA,QAAAa,QAAAb,EAAA,QAAAW,GAAA;GACpBwD,MAAAnB,WAAUoB,MAAMC,MAAOA,EAACxD,SAAUA,IAAW,CAAC,EAAA6B,SAAI/B,EAAE,eAAe;GAACX,EAAA,MAAAgD;GAAAhD,EAAA,MAAAa;GAAAb,EAAA,MAAAW;GAAAX,EAAA,MAAAmE;EAAA,OAAAA,MAAAnE,EAAA;EAAA,IAAAsE;EAAA,IAAAtE,EAAA,QAAAkE,OAAAlE,EAAA,QAAAmE,KAAA;GAFjFG,MAAA,oBAAC,cAAD;IACW,SAAAJ;IACE,WAAAC;GAAoE,CAAA;GAC/EnE,EAAA,MAAAkE;GAAAlE,EAAA,MAAAmE;GAAAnE,EAAA,MAAAsE;EAAA,OAAAA,MAAAtE,EAAA;EAAA,IAAAuE;EAAA,IAAAvE,EAAA,QAAAG,OAAAC,IAAA,2BAAA,GAAA;GACFmE,MAAA,oBAAC,cAAD,CAAa,CAAA;GAAGvE,EAAA,MAAAuE;EAAA,OAAAA,MAAAvE,EAAA;EAAA,IAAAwE;EAAA,IAAAxE,EAAA,QAAAsE,KAAA;GARlBE,MAAA,qBAAC,gBAAD;IAAyB,SAAAV;IAAwB,IAAAC;cAAjD;KACEE;KAGAK;KAIAC;IARa;;GASEvE,EAAA,MAAAsE;GAAAtE,EAAA,MAAAwE;EAAA,OAAAA,MAAAxE,EAAA;EAAA,IAAAyE;EAAA,IAAAC;EAAA,IAAA1E,EAAA,QAAAG,OAAAC,IAAA,2BAAA,GAAA;GAEQqE,MAAAhB,UAAU,UAAU;GAAOiB,MAAA,EAAAV,IAAM,GAAI;GAAChE,EAAA,MAAAyE;GAAAzE,EAAA,MAAA0E;EAAA,OAAA;GAAAD,MAAAzE,EAAA;GAAA0E,MAAA1E,EAAA;EAAA;EAAA,IAAA2E;EAAA,IAAA3E,EAAA,QAAAG,OAAAC,IAAA,2BAAA,GAAA;GAC7DuE,MAAA,oBAAC,cAAD,EAAA,UACE,oBAAC,WAAD,CAAU,CAAA,EADC,CAAA;GAEE3E,EAAA,MAAA2E;EAAA,OAAAA,MAAA3E,EAAA;EAAA,IAAA4E;EAAA,IAAA5E,EAAA,QAAAW,GAAA;GAEJiE,MAAAjE,EAAE,iBAAiB;GAACX,EAAA,MAAAW;GAAAX,EAAA,MAAA4E;EAAA,OAAAA,MAAA5E,EAAA;EAAA,IAAA6E;EAAA,IAAA7E,EAAA,QAAAG,OAAAC,IAAA,2BAAA,GAAA;GAG/ByE,MAAA,oBAAC,cAAD,CAAa,CAAA;GAAG7E,EAAA,MAAA6E;EAAA,OAAAA,MAAA7E,EAAA;EARlB,MAAA8E,MAAA,qBAAC,gBAAD;GAAyB,SAAAL;GAA2B,IAAAC;aAApD;IACEC;IAGA,oBAAC,cAAD;KACW,SAAAC;KACE,WAAAlF,WAAWwC,qBAAoB6C,GAAInE,KAAIyB,QAAS,CAAC;IAAC,CAAA;IAE/DwC;GARa;;EASE,IAAAG;EAAA,IAAAhF,EAAA,QAAA6D,OAAA7D,EAAA,QAAAwE,OAAAxE,EAAA,QAAA8E,KAAA;GA5BnBE,MAAA,qBAAC,MAAD;IACY,WAAA;IAER,WAAAnB;cAHJ,CAQEW,KAWAM,GAnBG;;GA6BE9E,EAAA,MAAA6D;GAAA7D,EAAA,MAAAwE;GAAAxE,EAAA,MAAA8E;GAAA9E,EAAA,MAAAgF;EAAA,OAAAA,MAAAhF,EAAA;EA9BTuB,WACEyD;EA8BA,IAAAC;EAAA,IAAAC;EAAA,IAAAlF,EAAA,QAAAG,OAAAC,IAAA,2BAAA,GAAA;GAMe6E,MAAAxB,UAAU,UAAU;GACzByB,MAAA;IAAAvB,iBACe;IAAawB,SACrB;IAAMC,YACH;IAAQC,IAChB;IAACC,QACG;GACV;GAACtF,EAAA,MAAAiF;GAAAjF,EAAA,MAAAkF;EAAA,OAAA;GAAAD,MAAAjF,EAAA;GAAAkF,MAAAlF,EAAA;EAAA;EAAA,IAAAuF;EAAA,IAAAvF,EAAA,QAAAG,OAAAC,IAAA,2BAAA,GAAA;GAE4BmF,MAAA,EAAAC,IAAM,GAAI;GAACxF,EAAA,MAAAuF;EAAA,OAAAA,MAAAvF,EAAA;EAAA,IAAAyF;EAAA,IAAAzF,EAAA,QAAAG,OAAAC,IAAA,2BAAA,GAAA;GAAxCqF,MAAA,oBAAC,YAAD;IAAiB,MAAA;IAAY,IAAAF;IAAwB,cAAA;cACnD,oBAAC,WAAD,EAAoB,UAAA,QAAO,CAAA;GADlB,CAAA;GAEEvF,EAAA,MAAAyF;EAAA,OAAAA,MAAAzF,EAAA;EAAA,IAAA0F;EAAA,IAAA1F,EAAA,QAAAW,GAAA;GACZ+E,MAAA/E,EAAE,mBAAmB;GAACX,EAAA,MAAAW;GAAAX,EAAA,MAAA0F;EAAA,OAAAA,MAAA1F,EAAA;EAAA,IAAA2F;EAAA,IAAA3F,EAAA,QAAA0F,KAAA;GAbzBC,MAAA,qBAAC,eAAD;IACW,SAAAV;IACL,IAAAC;cAFN;KAUEO;KAEc;KACbC;IAbW;;GAcE1F,EAAA,MAAA0F;GAAA1F,EAAA,MAAA2F;EAAA,OAAAA,MAAA3F,EAAA;EAAA,IAAA4F;EAAA,IAAA5F,EAAA,QAAAgD,cAAAhD,EAAA,QAAAa,QAAAb,EAAA,QAAAc,SAAA;GAGjB8E,MAAA5C,WAAU6C,KAAKC,QAAA;IAAC,MAAA,EAAAjF,MAAAkF,WAAAtD,MAAAuD,MAAAtD,UAAAoD;IAAsC,OACrD,qBAAC,gBAAD;KAEW,eAAA;MACPhF,QAAQiF,SAAS;MACjB1E,UAAU;KAAC;KAEH,UAAAR,SAASkF;eANrB,CAQE,oBAAC,cAAD,EAAA,UACE,oBAAC,MAAD,CAAK,CAAA,EADM,CAAA,GAGb,oBAAC,cAAD,EAAuBrD,SAAAA,MAAK,CAAA,CAXf;OACRqD,SADQ;GAYE,CAClB;GAAC/F,EAAA,MAAAgD;GAAAhD,EAAA,MAAAa;GAAAb,EAAA,MAAAc;GAAAd,EAAA,MAAA4F;EAAA,OAAAA,MAAA5F,EAAA;EAAA,IAAA8F;EAAA,IAAA9F,EAAA,QAAA2F,OAAA3F,EAAA,QAAA4F,KAAA;GAjCJE,MAAA,oBAAC,MAAD;IAEI,WAAAH;cAiBDC;GAnBE,CAAA;GAkCE5F,EAAA,MAAA2F;GAAA3F,EAAA,MAAA4F;GAAA5F,EAAA,MAAA8F;EAAA,OAAAA,MAAA9F,EAAA;EAnCT0B,QACEoE;EAsCC1E,KAAA1C;EAAI,IAAAuH;EAAA,IAAAC;EAAA,IAAAlG,EAAA,QAAAG,OAAAC,IAAA,2BAAA,GAAA;GAGU6F,MAAAxC,UAAU,UAAU;GACzByC,MAAA;IAAAvC,iBACe;IAAawB,SACrB;IAAMC,YACH;IAAQC,IAChB;IAACC,QACG;GACV;GAACtF,EAAA,MAAAiG;GAAAjG,EAAA,MAAAkG;EAAA,OAAA;GAAAD,MAAAjG,EAAA;GAAAkG,MAAAlG,EAAA;EAAA;EAAA,IAAAmG;EAAA,IAAAnG,EAAA,QAAAG,OAAAC,IAAA,2BAAA,GAAA;GAE4B+F,MAAA,EAAAX,IAAM,GAAI;GAACxF,EAAA,MAAAmG;EAAA,OAAAA,MAAAnG,EAAA;EAAA,IAAAoG;EAAA,IAAApG,EAAA,QAAAG,OAAAC,IAAA,2BAAA,GAAA;GAAxCgG,MAAA,oBAAC,YAAD;IAAiB,MAAA;IAAY,IAAAD;IAAwB,cAAA;cACnD,oBAAC,WAAD,EAAoB,UAAA,QAAO,CAAA;GADlB,CAAA;GAEEnG,EAAA,MAAAoG;EAAA,OAAAA,MAAApG,EAAA;EAAA,IAAAqG;EAAA,IAAArG,EAAA,QAAAW,GAAA;GACZ0F,MAAA1F,EAAE,iBAAiB;GAACX,EAAA,MAAAW;GAAAX,EAAA,MAAAqG;EAAA,OAAAA,MAAArG,EAAA;EAAA,IAAAA,EAAA,QAAAqG,KAAA;GAbvB7E,KAAA,qBAAC,eAAD;IACW,SAAAyE;IACL,IAAAC;cAFN;KAUEE;KAEc;KACbC;IAbW;;GAcErG,EAAA,MAAAqG;GAAArG,EAAA,MAAAwB;EAAA,OAAAA,KAAAxB,EAAA;EAGjByB,KAAAE,mBAAkBkE,KAAKS,iBACtB,qBAAC,gBAAD;GAEW,eAAM1F,KAAI2F,eAAgBD,YAAY,CAAC,CAAAE,cAAenF,UAAU,CAAC;GAChE,UAAAT,KAAI6F,qBAAsBH;aAHtC,CAKE,oBAAC,cAAD,EAAA,UAAe1F,KAAI6F,qBAAsBH,gBAAgB,oBAAC,MAAD,CAAK,CAAA,EAAjD,CAAA,GACb,oBAAC,cAAD,EAAuB,SAAA5G,WAAWwC,qBAAoB6C,GAAIuB,YAAY,CAAC,EAAC,CAAA,CAN3D;KACRA,YADQ,CAQhB;EAACtG,EAAA,KAAAY;EAAAZ,EAAA,KAAAa;EAAAb,EAAA,KAAAc;EAAAd,EAAA,KAAAW;EAAAX,EAAA,KAAAoB;EAAApB,EAAA,KAAAqB;EAAArB,EAAA,KAAAsB;EAAAtB,EAAA,KAAAuB;EAAAvB,EAAA,MAAAwB;EAAAxB,EAAA,MAAAyB;EAAAzB,EAAA,MAAA0B;CAAA,OAAA;EAAAN,KAAApB,EAAA;EAAAqB,YAAArB,EAAA;EAAAsB,WAAAtB,EAAA;EAAAuB,WAAAvB,EAAA;EAAAwB,KAAAxB,EAAA;EAAAyB,KAAAzB,EAAA;EAAA0B,QAAA1B,EAAA;CAAA;CAAA,IAAAuC;CAAA,IAAAvC,EAAA,QAAAoB,MAAApB,EAAA,QAAAwB,MAAAxB,EAAA,QAAAyB,IAAA;EA5BJc,KAAA,oBAAC,IAAD;GAEI,WAAAf;aAiBDC;EAnBE,CAAA;EA6BEzB,EAAA,MAAAoB;EAAApB,EAAA,MAAAwB;EAAAxB,EAAA,MAAAyB;EAAAzB,EAAA,MAAAuC;CAAA,OAAAA,KAAAvC,EAAA;CA9BT,MAAAqC,WACEE;CA8BA,IAAAC;CAAA,IAAAxC,EAAA,QAAAkB,MAAA;EAKKsB,KAAAtB,OACC,oBAAC,YAAD,CAAW,CAAA,IAEX,oBAAC,eAAD,EAAmB,IAAA;GAAAwF,OAAS;IAAAC,IAAM;IAAEC,IAAM;GAAG;GAACC,QAAU;IAAAF,IAAM;IAAEC,IAAM;GAAG;EAAE,EAAC,CAAA;EAC7E5G,EAAA,MAAAkB;EAAAlB,EAAA,MAAAwC;CAAA,OAAAA,KAAAxC,EAAA;CAAA,IAAA2C;CAAA,IAAA3C,EAAA,QAAAsB,YAAAtB,EAAA,QAAAwC,IAAA;EALHG,KAAA,oBAAC,YAAD;GAAiB,MAAA;GAAa,MAAA;GAAerB,SAAAA;GAAqB,cAAA;aAC/DkB;EADQ,CAAA;EAMExC,EAAA,MAAAsB;EAAAtB,EAAA,MAAAwC;EAAAxC,EAAA,MAAA2C;CAAA,OAAAA,KAAA3C,EAAA;CAAA,IAAA4C;CAAA,IAAA5C,EAAA,QAAAG,OAAAC,IAAA,2BAAA,GAAA;EAGFwC,KAAA,EAAA8D,OAAS,IAAI;EAAC1G,EAAA,MAAA4C;CAAA,OAAAA,KAAA5C,EAAA;CAAA,IAAA6C;CAAA,IAAA7C,EAAA,QAAAW,KAAAX,EAAA,QAAAkB,MAAA;EACrB2B,KAAA,oBAAC,MAAD;GAAM,gBAAA;aACH3B,OACC,qBAAC,UAAD,EAAA,UAAA,CACE,oBAAC,UAAD,EAAA,UACE,oBAAC,cAAD;IACW,SAAAA,KAAI4F;IAEX,WAAA,qBAAA,QAAA,EAAA,UAAA;KACG5F,KAAI6F,cAAe,oBAAA,QAAA,EAAA,UAAO7F,KAAI6F,WAAmB,CAAA;KACjD7F,KAAI6F,cAAe,oBAAA,MAAA,CAAM,CAAA;KACzB7F,KAAI8F,cAAe,oBAAA,QAAA,EAAA,UAAO9F,KAAI8F,WAAmB,CAAA;IAC7C,EAAA,CAAA;GAAA,CAAA,EARJ,CAAA,GAYT,qBAAC,gBAAD;IAAyB,SAAAC;cAAzB,CAGE,oBAAC,cAAD,EAAA,UACE,oBAAC,QAAD,EAAc,OAAA,QAAO,CAAA,EADV,CAAA,GAGb,oBAAC,cAAD,EAAuB,SAAAtG,EAAE,eAAe,EAAC,CAAA,CAN5B;KAbR,EAAA,CAAA,IAuBT,qBAAC,gBAAD;IAAyB,SAAAuG;cAAzB,CAIE,oBAAC,cAAD,EAAA,UACE,oBAAC,OAAD,EAAa,OAAA,UAAS,CAAA,EADX,CAAA,GAGb,oBAAC,cAAD,EAAuB,SAAAvG,EAAE,cAAc,EAAC,CAAA,CAP3B;;EAzBd,CAAA;EAmCEX,EAAA,MAAAW;EAAAX,EAAA,MAAAkB;EAAAlB,EAAA,MAAA6C;CAAA,OAAAA,KAAA7C,EAAA;CAEN,MAAA8C,KAAAvC,QAAQ,cAARgB;CACA,MAAAwB,KAAAxC,QAAQ,WAARmB;CACA,MAAAuB,MAAA1C,QAAQ,cAAR8B;CAA8B,IAAAe;CAAA,IAAApD,EAAA,QAAAiD,OAAAjD,EAAA,QAAA6C,MAAA7C,EAAA,SAAA8C,MAAA9C,EAAA,SAAA+C,IAAA;EAxCjCK,MAAA,qBAAC,KAAD;GAAS,IAAAR;aAAT;IACEC;IAqCCC;IACAC;IACAE;GAxCC;;EAyCEjD,EAAA,MAAAiD;EAAAjD,EAAA,MAAA6C;EAAA7C,EAAA,OAAA8C;EAAA9C,EAAA,OAAA+C;EAAA/C,EAAA,OAAAoD;CAAA,OAAAA,MAAApD,EAAA;CAAA,IAAAuD;CAAA,IAAAvD,EAAA,SAAAK,iBAAAL,EAAA,SAAAqB,aAAArB,EAAA,SAAAS,QAAAT,EAAA,SAAAoD,KAAA;EA1CRG,MAAA,oBAAC,MAAD;GAAgBlD,UAAAA;GAAqBI;GAAeY,SAAAA;aAClD+B;EADG,CAAA;EA2CEpD,EAAA,OAAAK;EAAAL,EAAA,OAAAqB;EAAArB,EAAA,OAAAS;EAAAT,EAAA,OAAAoD;EAAApD,EAAA,OAAAuD;CAAA,OAAAA,MAAAvD,EAAA;CAAA,IAAA0D;CAAA,IAAA1D,EAAA,SAAAuD,OAAAvD,EAAA,SAAA2C,IAAA;EApDTe,MAAA,qBAAC,UAAD,EAAA,UAAA,CACEf,IAQAY,GATO,EAAA,CAAA;EAqDEvD,EAAA,OAAAuD;EAAAvD,EAAA,OAAA2C;EAAA3C,EAAA,OAAA0D;CAAA,OAAAA,MAAA1D,EAAA;CAAA,OArDX0D;AAqDW;AA/LmB,SAAAzB,QAAAkF,KAAA;CAAA,OAWdA,QAAQ;AAAQ;AAXF,SAAAF,WAAA;CAqKhBG,SAAQC,OAAQ;AAAH;AArKG,SAAAH,SAAA;CA+KlB,MAAAI,WAAiBF,SAAQG,WAAYH,SAAQI;CAC7CJ,SAAQC,OAAQ,wBAAwBI,mBAAmBH,QAAQ;AAAtD;;;AC1M7B,MAAMa,iBAAiB;AAEvB,MAAMC,UAAUC,QACdN,EACGO,OAAO,CAAC,CACRC,QAAQC,MAAMA,EAAEC,MAAM,GAAG,CAAC,CAACC,SAAS,CAAC,CAAC,CACtCC,WAAWH,MAAMA,EAAEC,MAAM,GAAG,CAAC,CAAC,EAAE,CAACG,YAAY,CAAC,CAAC,CAC/CC,MAAM,WAAW,CAAC,CAClBC,MAAMT,GAAG;AAEd,MAAaU,iBAAe;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAD,EAAA,OAAA,oEAAA;EAAA,KAAA,IAAAE,KAAA,GAAAA,KAAA,IAAAA,MAAA,GAAAF,EAAAE,MAAAC,OAAAC,IAAA,2BAAA;EAAAJ,EAAA,KAAA;CAAA;CAC1B,MAAAK,SAAevB,UAAU;CAAE,IAAAwB;CAAA,IAAAN,EAAA,OAAAK,OAAAE,QAAA;EACfD,KAAAlB,OAAOiB,OAAME,MAAO;EAACP,EAAA,KAAAK,OAAAE;EAAAP,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAAjC,MAAAQ,MAAYF;CACZ,MAAAG,eAAqBD,QAAQrB;CAAe,IAAAuB;CAAA,IAAAV,EAAA,OAAAG,OAAAC,IAAA,2BAAA,GAAA;EAGHM,KAAA;GAAAC,YAAc;GAAQC,UAAY;EAAE;EAACZ,EAAA,KAAAU;CAAA,OAAAA,KAAAV,EAAA;CAAA,IAAAa;CAAA,IAAAb,EAAA,OAAAG,OAAAC,IAAA,2BAAA,GAAA;EAC1ES,KAAA,oBAAC,kBAAD;GAAqB,IAAA;GAAS,MAAA;aAC5B,oBAAA,OAAA;IAAS,KAAA;IAA0B,KAAA5B,SAAQ6B;IAAe,SAAA;GAAM,CAAA;EADjD,CAAA;EAEEd,EAAA,KAAAa;CAAA,OAAAA,KAAAb,EAAA;CAAA,IAAAe;CAAA,IAAAf,EAAA,OAAAG,OAAAC,IAAA,2BAAA,GAAA;EAESW,KAAA,EAAAC,SAAW;GAAAC,IAAM;GAAQC,IAAM;EAAO,EAAE;EAAClB,EAAA,KAAAe;CAAA,OAAAA,KAAAf,EAAA;CAAA,IAAAmB;CAAA,IAAAnB,EAAA,OAAAG,OAAAC,IAAA,2BAAA,GAAA;EAAnEe,KAAA,oBAAC,KAAD;GAAe,WAAA;GAAW,IAAAJ;aACvB9B,SAAQmC,cAAenC,SAAQ6B;EAD9B,CAAA;EAEEd,EAAA,KAAAmB;CAAA,OAAAA,KAAAnB,EAAA;CAAA,IAAAqB;CAAA,IAAArB,EAAA,OAAAG,OAAAC,IAAA,2BAAA,GAAA;EAHRiB,KAAA,qBAAC,YAAD;GAAoB,SAAA;aAApB,CACEF,IAGA,oBAAC,KAAD;IAAe,WAAA;IAAW,IAAA,EAAAH,SAAW;KAAAC,IAAM;KAAMC,IAAM;IAAS,EAAE;cAC/DjC,SAAQ6B;GADP,CAAA,CAJK;;EAOEd,EAAA,KAAAqB;CAAA,OAAAA,KAAArB,EAAA;CAAA,IAAAsB;CAAA,IAAAtB,EAAA,OAAAQ,OAAAR,EAAA,OAAAS,cAAA;EACZa,KAAA,CAACb,gBAAgB,oBAAC,MAAD;GAAW,MAAA;GAAeD,OAAAA;GAAW,OAAA;EAAS,CAAA;EAAGR,EAAA,KAAAQ;EAAAR,EAAA,KAAAS;EAAAT,EAAA,MAAAsB;CAAA,OAAAA,KAAAtB,EAAA;CAAA,IAAAuB;CAAA,IAAAvB,EAAA,QAAAsB,IAAA;EAZrEC,KAAA,qBAAC,OAAD;GAAiB,WAAA;GAAe,SAAA;GAAO,IAAAb;aAAvC;IACEG;IAGAQ;IAQCC;GAZG;;EAaEtB,EAAA,MAAAsB;EAAAtB,EAAA,MAAAuB;CAAA,OAAAA,KAAAvB,EAAA;CAAA,OAbRuB;AAaQ;;;ACJZ,MAAamB,cAAcC,SACzBA,KAAKT,SAAS;AAChB,MAAaU,eAAeD,SAC1BA,KAAKT,SAAS;AAChB,MAAaW,aAAaF,SACxBA,KAAKT,SAAS;AAChB,MAAaY,YAAYH,SAAmDA,KAAKT,SAAS;;;ACnB1F,MAAMqC,YAAY;AAElB,MAAMC,oBAAoBC,UACxBA,MAAMC,MAAMC,QAAQC,QAAQC,QAAQJ,MAAME,QAAQC,QAAQC;AAE5D,MAAMC,wBAAwBL,UAC5BA,MAAMC,MAAMC,QAAQI,OAAOC,UAAUP,MAAME,QAAQI,OAAOC;AAE5D,MAAMC,kBAAkBxB,OAAOJ,gBAAc,CAAC,EAAE,EAAEoB,aAAa;CAC7DS,cAAcC,OAAOV,MAAMW,MAAMF,YAAY,IAAI;CACjD,kBAAkB;EAChB,sEAAsE,EACpEG,OAAOb,iBAAiBC,KAAK,EAC/B;EACA,qBAAqB,EACnBa,iBAAiBd,iBAAiBC,KAAK,EACzC;EACA,2BAA2B,EACzBa,iBAAiBd,iBAAiBC,KAAK,EACzC;CACF;CACA,sBAAsB,EACpBY,OAAOP,qBAAqBL,KAAK,EACnC;CACA,qBAAqB,EACnBa,iBAAiBR,qBAAqBL,KAAK,EAC7C;AACF,EAAE;AAEF,MAAMc,kBAAkCd,WAAkB;CACxDS,cAAc;CACd,kBAAkB;EAChB,sEAAsE,EACpEG,OAAOb,iBAAiBC,KAAK,EAC/B;EACA,qBAAqB,EACnBa,iBAAiBd,iBAAiBC,KAAK,EACzC;EACA,2BAA2B,EACzBa,iBAAiBd,iBAAiBC,KAAK,EACzC;CACF;CACA,sBAAsB,EACpBY,OAAOP,qBAAqBL,KAAK,EACnC;CACA,qBAAqB,EACnBa,iBAAiBR,qBAAqBL,KAAK,EAC7C;AACF;AAEA,MAAMe,gBAA4FG,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAD,EAAA,OAAA,oEAAA;EAAA,KAAA,IAAAE,KAAA,GAAAA,KAAA,IAAAA,MAAA,GAAAF,EAAAE,MAAAC,OAAAC,IAAA,2BAAA;EAAAJ,EAAA,KAAA;CAAA;CAAC,MAAA,EAAAH,MAAAC,cAAAC;CAIjG,IAAIF,KAAIQ,QAAJP,WAAsB;EAAA,IAAAQ;EAAA,IAAAN,EAAA,OAAAF,WAAA;GAIlBQ,KAAAR,YAAA;IAAAS,UAEgB;IAAUC,MACd;IAAKC,KACN;IAAiBC,WACX;GAEZ,IAPL,CAOK;GAACV,EAAA,KAAAF;GAAAE,EAAA,KAAAM;EAAA,OAAAA,KAAAN,EAAA;EAAA,IAAAW;EAAA,IAAAX,EAAA,OAAAG,OAAAC,IAAA,2BAAA,GAAA;GAIFO,KAAA;IAAAC,SACO;IAAMC,YACH;IAAQC,gBACJ;IAAQC,UACdpC;GACZ;GAACqB,EAAA,KAAAW;EAAA,OAAAA,KAAAX,EAAA;EAEA,MAAAgB,KAAAnB,KAAIQ,QAAJ;EAAiB,IAAAY;EAAA,IAAAjB,EAAA,OAAAF,aAAAE,EAAA,OAAAH,KAAAQ,QAAAL,EAAA,OAAAH,KAAAqB,OAAA;GACjBD,KAAA,CAACpB,KAAIQ,QAALP,YACC,oBAAC,UAAD;IAAY,IAAA;KAAAqB,OAASxC,YAAY;KAACyC,QAAUzC,YAAY;KAAC0C,UAAY;IAAG;cACrExB,KAAIqB,MAAMI,MACF,GAAG,CAAC,CAAAC,MACJ,GAAG,CAAC,CAAC,CAAAC,IACPC,OAAsC,CAAC,CAAAC,KACtC,EAAE;GALL,CAAA,IADR;GAQO1B,EAAA,KAAAF;GAAAE,EAAA,KAAAH,KAAAQ;GAAAL,EAAA,KAAAH,KAAAqB;GAAAlB,EAAA,KAAAiB;EAAA,OAAAA,KAAAjB,EAAA;EAAA,IAAA2B;EAAA,IAAA3B,EAAA,OAAAgB,MAAAhB,EAAA,OAAAiB,IAAA;GAjBVU,KAAA,qBAAC,gBAAD;IACM,IAAAhB;cADN,CAQGK,IACAC,EATU;;GAkBEjB,EAAA,KAAAgB;GAAAhB,EAAA,KAAAiB;GAAAjB,EAAA,MAAA2B;EAAA,OAAAA,KAAA3B,EAAA;EAAA,IAAA4B;EAAA,IAAA5B,EAAA,QAAAF,aAAAE,EAAA,QAAAH,KAAAqB,OAAA;GACdU,KAAA9B,YACC,oBAAC,cAAD;IACU,SAAA;IACJ,IAAA;KAAAS,UACQ;KAAUsB,QACZ;KAAGrB,MACL;KAAKE,WACA;KAAkBW,UACnB;KAAES,YACA;KAAGC,WACJ;KAAQC,YACP;KAAQC,UACV;KAAQC,cACJ;KAAUC,UAAAA;IAE1B;cAECtC,KAAIqB;GAhBI,CAAA,IADZ;GAmBOlB,EAAA,MAAAF;GAAAE,EAAA,MAAAH,KAAAqB;GAAAlB,EAAA,MAAA4B;EAAA,OAAAA,KAAA5B,EAAA;EAAA,IAAAoC;EAAA,IAAApC,EAAA,QAAAM,MAAAN,EAAA,QAAA2B,MAAA3B,EAAA,QAAA4B,IAAA;GAlDVQ,KAAA,qBAAC,OAAD;IAEI,IAAA9B;cAFJ,CAYEqB,IAmBCC,EA/BC;;GAmDE5B,EAAA,MAAAM;GAAAN,EAAA,MAAA2B;GAAA3B,EAAA,MAAA4B;GAAA5B,EAAA,MAAAoC;EAAA,OAAAA,KAAApC,EAAA;EAAA,OAnDNoC;CAmDM;CAET,OACM;AAAI;AAQb,MAAMI,eAAoCzC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAD,EAAA,OAAA,oEAAA;EAAA,KAAA,IAAAE,KAAA,GAAAA,KAAA,GAAAA,MAAA,GAAAF,EAAAE,MAAAC,OAAAC,IAAA,2BAAA;EAAAJ,EAAA,KAAA;CAAA;CAAC,MAAA,EAAAsC,MAAAC,aAAAxC;CAAkB,IAAAO;CAAA,IAAAN,EAAA,OAAAG,OAAAC,IAAA,2BAAA,GAAA;EAGnDE,KAAA;GAAAC,UACQ;GAAOC,MAAAA;GACDiC,IACZ;GAAKC,IACL;EACN;EAAC1C,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAAA,IAAAW;CAAA,IAAAX,EAAA,OAAAG,OAAAC,IAAA,2BAAA,GAAA;EAGKO,KAAA;GAAAgC,IACE;GAAGD,IACH;GAAGhC,WACI;GAA8BkC,WAC9B;GAAiCC,WACjC;GAAMC,oBACG;EACtB;EAAC9C,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,IAAAgB;CAAA,IAAAhB,EAAA,OAAAuC,UAAA;EAhBLvB,KAAA,oBAAC,OAAD;GACM,IAAAV;aAOJ,oBAAC,OAAD;IACM,IAAAK;IASH4B;GAVG,CAAA;EARJ,CAAA;EAoBEvC,EAAA,KAAAuC;EAAAvC,EAAA,KAAAgB;CAAA,OAAAA,KAAAhB,EAAA;CAAA,IAAAiB;CAAA,IAAAjB,EAAA,OAAAsC,QAAAtC,EAAA,OAAAgB,IAAA;EArBRC,KAAA,oBAAC,MAAD;GAAUqB,IAAAA;aACRtB;EADG,CAAA;EAsBEhB,EAAA,KAAAsC;EAAAtC,EAAA,KAAAgB;EAAAhB,EAAA,KAAAiB;CAAA,OAAAA,KAAAjB,EAAA;CAAA,OAtBPiB;AAsBO;AAgBT,MAAayC,sBAAkD3D,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAD,EAAA,OAAA,oEAAA;EAAA,KAAA,IAAAE,KAAA,GAAAA,KAAA,IAAAA,MAAA,GAAAF,EAAAE,MAAAC,OAAAC,IAAA,2BAAA;EAAAJ,EAAA,KAAA;CAAA;CAAC,MAAA,EAAAH,MAAAmD,QAAAC,UAAAC,UAAApD,WAAAqD,wBAAA7C,IAAA8C,yBAAAC,SAAAC,cAAAG,YAAA1D;CAM9D,MAAAoD,yBAAA7C,OAAAqD,KAAAA,IAAA,OAAArD;CAMA,MAAA,CAAAsD,mBAAAC,wBAAkD7F,SAAwB,IAAI;CAAE,IAAA2C;CAAA,IAAAX,EAAA,OAAAH,MAAA;EAC9Dc,KAAAzC,YAAY2B,IAAI;EAACG,EAAA,KAAAH;EAAAG,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAnC,MAAA8D,YAAkBnD;CAClB,MAAAoD,SAAeD,YAAA,SAAqBjE,KAAIqB,UAAzB,QAA4CrB,KAAImE,MAAOnE,KAAIoE,QAASpE,KAAIqB;CAAS,IAAAF;CAAA,IAAAhB,EAAA,OAAAF,aAAAE,EAAA,OAAA8D,aAAA9D,EAAA,OAAAgD,UAAAhD,EAAA,OAAAoD,2BAAApD,EAAA,OAAAmD,wBAAA;EAE9DnC,MAAAnC,UAAA;GAChC,IAAIiB,aAAAsD,2BAAAU,WAAiD,OAC5C;IAAAzC,UACK;IAAEd,UACF;IAAUE,KACf;IAAOyD,OACL;IAAKxD,WACD;GACb;GAEF,IAAI,CAACZ,aAADqD,0BAAAW,WAAiD,OAC5C;IAAAK,IACD;IAAGzD,WACI,UAAUsC,SAAA,IAAA,IAAgB;IAAMoB,YAC/BvF,MAAKwF,YAAYC,OAAQ,aAAa;KAAAC,QACxC1F,MAAKwF,YAAYE,OAAOC;KAAMC,UAC5B;IACZ,CAAC;GACH;GACD,OACM,EAAA7D,SAAW,OAAO;EAAC;EAC3BZ,EAAA,KAAAF;EAAAE,EAAA,KAAA8D;EAAA9D,EAAA,KAAAgD;EAAAhD,EAAA,KAAAoD;EAAApD,EAAA,KAAAmD;EAAAnD,EAAA,KAAAgB;CAAA,OAAAA,KAAAhB,EAAA;CArBD,MAAA0E,YAAkC1D;CAuBlC,MAAA2D,mBAAyBb,aAAA,CAAchE;CAKd,MAAAmB,KAAAnB,YAAA,KAAA;CAAmB,IAAA6B;CAAA,IAAA3B,EAAA,OAAAiB,IAAA;EAAtCU,KAAA;GAAAiD,IAAM;GAAGxD,QAAUH;EAAoB;EAACjB,EAAA,KAAAiB;EAAAjB,EAAA,MAAA2B;CAAA,OAAAA,KAAA3B,EAAA;CAAA,IAAA4B;CAAA,IAAA5B,EAAA,QAAAkD,YAAAlD,EAAA,QAAAiD,YAAAjD,EAAA,QAAA2B,IAAA;EAH1BC,KAAA;GAAAqB;GAAAC;GAAA2B,IAGdlD;EACN;EAAC3B,EAAA,MAAAkD;EAAAlD,EAAA,MAAAiD;EAAAjD,EAAA,MAAA2B;EAAA3B,EAAA,MAAA4B;CAAA,OAAAA,KAAA5B,EAAA;CAJD,MAAA8E,cAAoBlD;CAIlB,IAAAQ;CAAA,IAAApC,EAAA,QAAAF,aAAAE,EAAA,QAAAH,MAAA;EAIEuC,KAAA,oBAAC,cAAD;GAAoBvC;GAAiBC;EAAS,CAAA;EAAIE,EAAA,MAAAF;EAAAE,EAAA,MAAAH;EAAAG,EAAA,MAAAoC;CAAA,OAAAA,KAAApC,EAAA;CAAA,IAAA+E;CAAA,IAAA/E,EAAA,QAAAF,aAAAE,EAAA,QAAAH,KAAAqB,OAAA;EACjD6D,KAAA,CAACjF,aACA,oBAAC,gBAAD;GACW,SAAAD,KAAIqB;GACF,WAAA,EAAAlC,SAAW;IAAAgG,QAAU;IAAI9D,OAASrB,KAAIqB;GAAO,EAAE;GACtD,IAAA;IAAAiD,IACE;IAAGc,MACD;IAAClE,UACG;IAAC,yBACc;KAAAiB,YACX;KAAQC,UACV;KAAQC,cACJ;IAChB;GACF;EAAC,CAAA;EAEJlC,EAAA,MAAAF;EAAAE,EAAA,MAAAH,KAAAqB;EAAAlB,EAAA,MAAA+E;CAAA,OAAAA,KAAA/E,EAAA;CAAA,IAAAkF;CAAA,IAAAlF,EAAA,QAAA0E,aAAA1E,EAAA,QAAA8D,WAAA;EACAoB,KAAApB,YAAY,oBAAC,gBAAD,EAAoBY,IAAAA,UAAS,CAAA,IAAzC;EAAoD1E,EAAA,MAAA0E;EAAA1E,EAAA,MAAA8D;EAAA9D,EAAA,MAAAkF;CAAA,OAAAA,KAAAlF,EAAA;CAAA,IAAAmF;CAAA,IAAAnF,EAAA,QAAAoC,MAAApC,EAAA,QAAA+E,MAAA/E,EAAA,QAAAkF,IAAA;EAlBvDC,MAAA,qBAAA,YAAA,EAAA,UAAA;GACE/C;GACC2C;GAgBAG;EAAoD,EAAA,CAAA;EACpDlF,EAAA,MAAAoC;EAAApC,EAAA,MAAA+E;EAAA/E,EAAA,MAAAkF;EAAAlF,EAAA,MAAAmF;CAAA,OAAAA,MAAAnF,EAAA;CApBL,MAAAoF,gBACED;CAoBA,IAAAE;CAAA,IAAArF,EAAA,QAAAF,aAAAE,EAAA,QAAA8D,aAAA9D,EAAA,QAAA+D,QAAA;EAIOsB,MAAAvB,aAAAhE,YAAA;GAAAwF,oBAEe;IACZzB,qBAAqBE,MAAM;GAAC;GAC7BwB,oBACa;IACZ1B,qBAAqB,IAAI;GAAC;EAG7B,IATA,CASA;EAAC7D,EAAA,MAAAF;EAAAE,EAAA,MAAA8D;EAAA9D,EAAA,MAAA+D;EAAA/D,EAAA,MAAAqF;CAAA,OAAAA,MAAArF,EAAA;CAAA,IAAAwF;CAAA,IAAAxF,EAAA,QAAAG,OAAAC,IAAA,2BAAA,GAAA;EACFoF,MAAA;GAAAC,IAAM;GAACb,IAAM;GAACc,WAAa;EAAS;EAAC1F,EAAA,MAAAwF;CAAA,OAAAA,MAAAxF,EAAA;CAAA,IAAA2F;CAAA,IAAA3F,EAAA,QAAAoF,iBAAApF,EAAA,QAAA8E,eAAA9E,EAAA,QAAA8D,aAAA9D,EAAA,QAAAH,QAAAG,EAAA,QAAAqD,WAAArD,EAAA,QAAAyD,WAAAzD,EAAA,QAAA2E,kBAAA;EAExCgB,MAAA7B,YACC,oBAAC,iBAAD;GAAgB,GACVgB;GACK,SAAAH,yBAAyBtB,UAAUxD,IAAI,IAAvC8D,KAAAA;aAERyB;EAJa,CAAA,IAOhB,oBAAC,sBAAD;GAAqB,GACfN;GACA,IAAAjF,KAAImE;GACF,MAAAnE,KAAIoE;GACF,QAAApE,KAAI+F;GACJ,QAAA/F,KAAIgG;GACHpC,SAAAA;GACL,IAAA,CAACqB,YAAWD,IAAKlF,cAAc;aAElCyF;EATkB,CAAA;EAWtBpF,EAAA,MAAAoF;EAAApF,EAAA,MAAA8E;EAAA9E,EAAA,MAAA8D;EAAA9D,EAAA,MAAAH;EAAAG,EAAA,MAAAqD;EAAArD,EAAA,MAAAyD;EAAAzD,EAAA,MAAA2E;EAAA3E,EAAA,MAAA2F;CAAA,OAAAA,MAAA3F,EAAA;CAAA,IAAA8F;CAAA,IAAA9F,EAAA,QAAAF,aAAAE,EAAA,QAAA8D,aAAA9D,EAAA,QAAA4D,qBAAA5D,EAAA,QAAAH,KAAA0C,YAAAvC,EAAA,QAAA+D,UAAA/D,EAAA,QAAAsD,cAAA;EAEAwC,MAAAhC,aAAAhE,YACC,oBAAC,aAAD;GAAmB,MAAAiE,WAAWH;aAC3BN,eAAezD,KAAI0C,QAAS;EADnB,CAAA,IADb;EAIOvC,EAAA,MAAAF;EAAAE,EAAA,MAAA8D;EAAA9D,EAAA,MAAA4D;EAAA5D,EAAA,MAAAH,KAAA0C;EAAAvC,EAAA,MAAA+D;EAAA/D,EAAA,MAAAsD;EAAAtD,EAAA,MAAA8F;CAAA,OAAAA,MAAA9F,EAAA;CAAA,IAAA+F;CAAA,IAAA/F,EAAA,QAAAqF,OAAArF,EAAA,QAAA2F,OAAA3F,EAAA,QAAA8F,KAAA;EAtCVC,MAAA,qBAAC,YAAD;GAAS,GACFV;GAUD,IAAAG;aAXN,CAaGG,KAqBAG,GAlCM;;EAuCE9F,EAAA,MAAAqF;EAAArF,EAAA,MAAA2F;EAAA3F,EAAA,MAAA8F;EAAA9F,EAAA,MAAA+F;CAAA,OAAAA,MAAA/F,EAAA;CAxCb,MAAAgG,WACED;CAwCA,IAAAE;CAAA,IAAAjG,EAAA,QAAAF,aAAAE,EAAA,QAAA8D,aAAA9D,EAAA,QAAAgD,UAAAhD,EAAA,QAAAH,KAAA0C,YAAAvC,EAAA,QAAAsD,cAAA;EAKG2C,MAAAnC,aAAA,CAAchE,YACb,oBAAC,UAAD;GAAckD,IAAAA;GAAgB,SAAA;GAAO,eAAA;aAClCM,eAAezD,KAAI0C,QAAS;EADtB,CAAA,IADV;EAIOvC,EAAA,MAAAF;EAAAE,EAAA,MAAA8D;EAAA9D,EAAA,MAAAgD;EAAAhD,EAAA,MAAAH,KAAA0C;EAAAvC,EAAA,MAAAsD;EAAAtD,EAAA,MAAAiG;CAAA,OAAAA,MAAAjG,EAAA;CAAA,IAAAkG;CAAA,IAAAlG,EAAA,QAAA+D,UAAA/D,EAAA,QAAAgG,YAAAhG,EAAA,QAAAiG,KAAA;EANVC,MAAA,qBAAC,UAAD,EAAA,UAAA,CACGF,UACAC,GAFM,EAAA,GAAMlC,MAAN;EAOE/D,EAAA,MAAA+D;EAAA/D,EAAA,MAAAgG;EAAAhG,EAAA,MAAAiG;EAAAjG,EAAA,MAAAkG;CAAA,OAAAA,MAAAlG,EAAA;CAAA,OAPXkG;AAOW;AApOmF,SAAAzE,QAAA0E,MAAA;CAAA,OAgCnEA,KAAIC,OAAQ,CAAC,CAAC,CAAAC,YAAa;AAAC;;;ACvE3D,MAAa+B,kBAA0CC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAD,EAAA,OAAA,oEAAA;EAAA,KAAA,IAAAE,KAAA,GAAAA,KAAA,IAAAA,MAAA,GAAAF,EAAAE,MAAAC,OAAAC,IAAA,2BAAA;EAAAJ,EAAA,KAAA;CAAA;CAAC,MAAA,EAAAb,eAAAC,OAAAiB,IAAAhB,WAAAC,WAAAC,wBAAAe,IAAAd,yBAAAC,YAAAG,YAAAC,YAAAE;CAEtD,MAAAX,QAAAiB,OAAAE,KAAAA,IAAA,IAAAF;CAGA,MAAAd,yBAAAe,OAAAC,KAAAA,IAAA,OAAAD;CAA6B,IAAAE;CAAA,IAAAR,EAAA,OAAAG,OAAAC,IAAA,2BAAA,GAAA;EAM2BI,KAAA,CAAA;EAAER,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAA1D,MAAA,CAAAS,UAAAC,eAAgCrC,SAAwBmC,EAAE;CAAE,IAAAG;CAAA,IAAAC;CAAA,IAAAZ,EAAA,OAAAX,WAAA;EAElDsB,WAAA;GACR,IAAItB,WAAWqB,YAAY,CAAA,CAAE;EAAE;EAC9BE,KAAA,CAACvB,SAAS;EAACW,EAAA,KAAAX;EAAAW,EAAA,KAAAW;EAAAX,EAAA,KAAAY;CAAA,OAAA;EAAAD,KAAAX,EAAA;EAAAY,KAAAZ,EAAA;CAAA;CAFd5B,UAAUuC,IAEPC,EAAW;CAAC,IAAAC;CAAA,IAAAb,EAAA,OAAAG,OAAAC,IAAA,2BAAA,GAAA;EAEGS,MAAAC,QAChBJ,aAAYK,aACVA,SAAQC,SAAUF,GAA4D,IAArDC,SAAQE,QAAQC,MAAOA,MAAMJ,GAAwB,IAA9E,CAAA,GAAiEC,UAAUD,GAAG,CAChF;EAACd,EAAA,KAAAa;CAAA,OAAAA,KAAAb,EAAA;CAHH,MAAAmB,YAAkBN;CAGd,IAAAO;CAAA,IAAApB,EAAA,OAAAJ,cAAAI,EAAA,OAAAX,aAAAW,EAAA,OAAAZ,SAAAY,EAAA,OAAAH,SAAA;EAEiBuB,MAAAC,aACnB,oBAAC,gBAAD;GACiBA,eAAAA;GACR,OAAAjC,QAAQ;GACJC,WAAAA;GACCO;GACHC;EAAO,CAAA;EAEnBG,EAAA,KAAAJ;EAAAI,EAAA,KAAAX;EAAAW,EAAA,KAAAZ;EAAAY,EAAA,KAAAH;EAAAG,EAAA,MAAAoB;CAAA,OAAAA,KAAApB,EAAA;CARD,MAAAsB,eAAqBF;CAQnB,IAAAG;CAAA,IAAAvB,EAAA,QAAAJ,cAAAI,EAAA,QAAAX,aAAAW,EAAA,QAAAZ,SAAAY,EAAA,QAAAV,aAAAU,EAAA,QAAAR,2BAAAQ,EAAA,QAAAT,0BAAAS,EAAA,QAAAH,WAAAG,EAAA,QAAAS,YAAAT,EAAA,QAAAP,cAAAO,EAAA,QAAAsB,gBAAAtB,EAAA,QAAAb,eAAA;EAEF,MAAAqC,qBAA2BrC,cAAa8B,OAAQQ,OAAoB;EAM1D,MAAAC,KAAApC,aAAaF,UAAU,IAAvB,KAAA;EACA,MAAAuC,MAAAvC,UAAU,KAAV,CAAgBE,YAAhB,IAAA;EACA,MAAAsC,OAACtC,YAAA,IAAA,MAAsBA,YAAYF,QAAQ,IAApBA;EACjB,MAAAyC,MAAAvC,aAAaF,UAAU,IAAvB,MAAA;EACH,MAAA0C,MAAAzC,YAAAA,KAAA;EAA+B,IAAA0C;EAAA,IAAA/B,EAAA,QAAA2B,OAAA3B,EAAA,QAAA4B,OAAA5B,EAAA,QAAA6B,OAAA7B,EAAA,QAAA8B,OAAA9B,EAAA,QAAA0B,IAAA;GANpCK,MAAA;IAAAC,SACO;IAACC,IACNP;IAAkCQ,IAClCP;IAAmCQ,IACnCP;IAAqDQ,UAC/CP;IAAuCQ,OAC1CP;GACT;GAAC9B,EAAA,MAAA2B;GAAA3B,EAAA,MAAA4B;GAAA5B,EAAA,MAAA6B;GAAA7B,EAAA,MAAA8B;GAAA9B,EAAA,MAAA0B;GAAA1B,EAAA,MAAA+B;EAAA,OAAAA,MAAA/B,EAAA;EARHuB,KAAA,oBAAC,QAAD;GACM,IAAAQ;aASHP,mBAAkBc,KAAKC,SAAAC,UAAA;IACtB,IAAI3D,SAAS0D,OAAO,GAAC,OAEjB,oBAAC,iBAAD;KAEM,IAAA;MAAAE,UACQ;MAAEC,YACA;MAAKC,QACTtD,YAAA,IAAA;MAAkBuD,IACtB;MAACC,UACK;MAAQC,cACJ;MAAUC,YACZ;MAAQC,QACZ;MAACC,SACA;MAAaC,UACZ;KACZ;eAECX,QAAOY;IAfI,GACP,aAAa/D,MAAK,GAAIoD,OADf;IAoBlB,IAAI5D,UAAU2D,OAAO,GAAC;KACpB,MAAAa,WAAiB5B,mBAAmBgB,QAAQ;KAAG,OAE7C,oBAAA,MAAA,EAAA,UACE,oBAAC,WAAD,EACM,IAAA;MAAAa,IAAM;MAACpB,IAAM;MAACC,IAAMkB,YAAYvE,SAASuE,QAAQ,KAA7B,CAAmC/D,YAAnC,IAAA;KAAqD,EAAC,CAAA,EAE7E,GAJI,WAAWD,MAAK,GAAIoD,OAIxB;IAAA;IAIT,IAAI,CAAC9D,WAAW6D,OAAO,KAAnB,CAAyB5D,YAAY4D,OAAO,GAAC,OAAS;IAE1D,MAAAe,QAAY,QAAQlE,MAAK,GAAIoD;IAC7B,MAAAe,gBAAsB,GAAGnE,MAAK,GAAIoD,MAAK,GAAID,QAAOY;IAClD,MAAAK,WAAiB9E,WAAW6D,OAAoC,KAAxBA,QAAOkB,OAAQ7D;IAEvD,IAAIH,YAAU,OACL,oBAAC,UAAD,EAAA,UAAqBA,WAAW8C,SAAS,EAAAlD,WAAa,CAAC,CAACA,UAAU,CAAC,EAA1D,GAAMyB,KAAN;IAAwE,OAGxF,oBAAC,oBAAD;KAEQyB,MAAAA;KACE,QAAA9B,SAAQO,SAAUuC,aAAa;KAC7BC;KACCnE;KACaE;KACCC;KAEvB,SAAAb,YAAY4D,OAAqB,KAAjC,CAAyBlD,kBAAkB8B,UAAUoC,aAAa,IAAlEhD,KAAAA;KAEYe;KACLzB;IAAO,GAXXiB,KAWW;GAChB,CAEL;EArEE,CAAA;EAsEEd,EAAA,MAAAJ;EAAAI,EAAA,MAAAX;EAAAW,EAAA,MAAAZ;EAAAY,EAAA,MAAAV;EAAAU,EAAA,MAAAR;EAAAQ,EAAA,MAAAT;EAAAS,EAAA,MAAAH;EAAAG,EAAA,MAAAS;EAAAT,EAAA,MAAAP;EAAAO,EAAA,MAAAsB;EAAAtB,EAAA,MAAAb;EAAAa,EAAA,MAAAuB;CAAA,OAAAA,KAAAvB,EAAA;CAAA,OAtEPuB;AAsEO;AAzG4C,SAAAE,QAAAiC,KAAA;CAAA,OAgCI,CAACA,IAAGC;AAAO;;;AC/CtE,MAAac,qBAAgDC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAD,EAAA,OAAA,oEAAA;EAAA,KAAA,IAAAE,KAAA,GAAAA,KAAA,IAAAA,MAAA,GAAAF,EAAAE,MAAAC,OAAAC,IAAA,2BAAA;EAAAJ,EAAA,KAAA;CAAA;CAAC,MAAA,EAAAR,YAAAC,WAAAC,UAAAC,aAAAE,kBAAAE;CAO5D,MAAAM,WAAiBnB,YAAY;CAWN,MAAAoB,KAAAb,YAAA,WAAA;CAEb,MAAAc,KAAAf,WAAU,MAAOH,SAASG,WAAU,EAAG,KAAvC,CAA6CC,YAA7C,IAAA;CAA8D,IAAAe;CAAA,IAAAR,EAAA,OAAAM,MAAAN,EAAA,OAAAO,IAAA;EARhEC,KAAA;GAAAC,QACM;GAAMC,SACL;GAAMC,eACA;GAAQC,gBACP;GAAeC,UACrB;GAAMC,iBACCR;GAA6BS,WACnC;GAAQC,IACfT;EACN;EAACP,EAAA,KAAAM;EAAAN,EAAA,KAAAO;EAAAP,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAM0B,MAAAiB,KAAA,CAACvB;CAAQ,IAAAwB;CAAA,IAAAlB,EAAA,OAAAL,eAAAK,EAAA,OAAAH,eAAA;EAEzBqB,KAAArB,gBAAAsB,KAAAA,UAAkCxB,YAAY,KAAK;EAACK,EAAA,KAAAL;EAAAK,EAAA,KAAAH;EAAAG,EAAA,KAAAkB;CAAA,OAAAA,KAAAlB,EAAA;CAAA,IAAAoB;CAAA,IAAApB,EAAA,OAAAP,aAAAO,EAAA,OAAAN,YAAAM,EAAA,OAAAK,SAAAgB,YAAArB,EAAA,QAAAR,cAAAQ,EAAA,QAAAiB,MAAAjB,EAAA,QAAAkB,IAAA;EAN/DE,KAAA,oBAAC,gBAAD;GACiB5B,eAAAA;GACJC;GACaC,wBAAAA;GACC,yBAAAuB;GACb,YAAAZ,SAAQgB;GACX,SAAAH;EAAoD,CAAA;EAC7DlB,EAAA,KAAAP;EAAAO,EAAA,KAAAN;EAAAM,EAAA,KAAAK,SAAAgB;EAAArB,EAAA,MAAAR;EAAAQ,EAAA,MAAAiB;EAAAjB,EAAA,MAAAkB;EAAAlB,EAAA,MAAAoB;CAAA,OAAAA,KAAApB,EAAA;CAAA,IAAAsB;CAAA,IAAAtB,EAAA,QAAAQ,MAAAR,EAAA,QAAAoB,IAAA;EApBJE,KAAA,oBAAC,OAAD;GACY,WAAA;GACN,IAAAd;aAWJY;EAbE,CAAA;EAqBEpB,EAAA,MAAAQ;EAAAR,EAAA,MAAAoB;EAAApB,EAAA,MAAAsB;CAAA,OAAAA,KAAAtB,EAAA;CAAA,OArBNsB;AAqBM;AC9BV,MAAac,kBAA0CC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAD,EAAA,OAAA,oEAAA;EAAA,KAAA,IAAAE,KAAA,GAAAA,KAAA,IAAAA,MAAA,GAAAF,EAAAE,MAAAC,OAAAC,IAAA,2BAAA;EAAAJ,EAAA,KAAA;CAAA;CAAC,MAAA,EAAAN,YAAAC,UAAAC,gBAAAG;CAAqC,IAAAM;CAAA,IAAAL,EAAA,OAAAG,OAAAC,IAAA,2BAAA,GAAA;EAK5EC,KAAA;GAAAC,IAAM;GAAMC,IAAM;EAAQ;EAACP,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAC7B,MAAAQ,KAAAb,WAAAA,MAAAA;CAAsC,IAAAc;CAAA,IAAAT,EAAA,OAAAL,UAAA;EACrBc,MAAAC,WAAY;GAAAC,UACxB;GAAUC,KACf;GAAqBC,QAClB;GAAkCC,OACnCnB,WAAAA,MAAAA;GAAsCoB,YACjC;GAAaC,WACd;GAAWC,aACTP,MAAKQ,MAAcC,QAAQC,WAAIV,MAAKS,QAAQC;GAAQC,WACtD;EACb;EAAErB,EAAA,KAAAL;EAAAK,EAAA,KAAAS;CAAA,OAAAA,KAAAT,EAAA;CAAA,IAAAsB;CAAA,IAAAtB,EAAA,OAAAQ,MAAAR,EAAA,OAAAS,IAAA;EAZAa,KAAA;GAAAC,SACOlB;GAA2BS,OAC7BN;GAAsC,sBACrBC;EAU1B;EAACT,EAAA,KAAAQ;EAAAR,EAAA,KAAAS;EAAAT,EAAA,KAAAsB;CAAA,OAAAA,KAAAtB,EAAA;CAIY,MAAAwB,KAAA,CAAC7B;CAAQ,IAAA8B;CAAA,IAAAzB,EAAA,OAAAL,YAAAK,EAAA,OAAAN,cAAAM,EAAA,OAAAJ,eAAAI,EAAA,QAAAwB,IAAA;EAFtBC,KAAA,oBAAC,mBAAD;GACc/B;GACD,WAAA8B;GACD7B;GACGC;GACE,eAAA;EAAI,CAAA;EACnBI,EAAA,KAAAL;EAAAK,EAAA,KAAAN;EAAAM,EAAA,KAAAJ;EAAAI,EAAA,MAAAwB;EAAAxB,EAAA,MAAAyB;CAAA,OAAAA,KAAAzB,EAAA;CAAA,IAAA0B;CAAA,IAAA1B,EAAA,QAAAsB,MAAAtB,EAAA,QAAAyB,IAAA;EAvBJC,KAAA,oBAAC,QAAD;GACU,SAAA;GACJ,IAAAJ;aAeJG;EAjBK,CAAA;EAwBEzB,EAAA,MAAAsB;EAAAtB,EAAA,MAAAyB;EAAAzB,EAAA,MAAA0B;CAAA,OAAAA,KAAA1B,EAAA;CAAA,IAAA2B;CAAA,IAAA3B,EAAA,QAAAJ,aAAA;EAIE+B,WAAM/B,YAAY,KAAK;EAACI,EAAA,MAAAJ;EAAAI,EAAA,MAAA2B;CAAA,OAAAA,KAAA3B,EAAA;CAAA,IAAA4B;CAAA,IAAA5B,EAAA,QAAAG,OAAAC,IAAA,2BAAA,GAAA;EAC7BwB,KAAA;GAAAL,SACO;IAAAjB,IAAM;IAAOC,IAAM;GAAO;GAAC,sBACd,EAAAO,OACb,iCACT;EACF;EAACd,EAAA,MAAA4B;CAAA,OAAAA,KAAA5B,EAAA;CAAA,IAAA6B;CAAA,IAAA7B,EAAA,QAAAL,YAAAK,EAAA,QAAAN,cAAAM,EAAA,QAAAJ,aAAA;EAEDiC,MAAA,oBAAC,mBAAD;GACcnC;GACD,WAAA;GACDC;GACGC;GACE,eAAA;EAAK,CAAA;EACpBI,EAAA,MAAAL;EAAAK,EAAA,MAAAN;EAAAM,EAAA,MAAAJ;EAAAI,EAAA,MAAA6B;CAAA,OAAAA,MAAA7B,EAAA;CAAA,IAAA8B;CAAA,IAAA9B,EAAA,QAAAL,YAAAK,EAAA,QAAA6B,OAAA7B,EAAA,QAAA2B,IAAA;EAhBJG,MAAA,oBAAC,QAAD;GACQnC,MAAAA;GACG,SAAAgC;GACL,IAAAC;aAOJC;EAVK,CAAA;EAiBE7B,EAAA,MAAAL;EAAAK,EAAA,MAAA6B;EAAA7B,EAAA,MAAA2B;EAAA3B,EAAA,MAAA8B;CAAA,OAAAA,MAAA9B,EAAA;CAAA,IAAA+B;CAAA,IAAA/B,EAAA,QAAA8B,OAAA9B,EAAA,QAAA0B,IAAA;EA5CXK,MAAA,qBAAC,UAAD,EAAA,UAAA,CACEL,IA0BAI,GA3BO,EAAA,CAAA;EA6CE9B,EAAA,MAAA8B;EAAA9B,EAAA,MAAA0B;EAAA1B,EAAA,MAAA+B;CAAA,OAAAA,MAAA/B,EAAA;CAAA,OA7CX+B;AA6CW;;;AC1Cb,MAAMqB,yBAAyB;AAE/B,MAAMC,iCAA0C;CAC9C,IAAIP,SAASQ,aAAaR,SAASS,SACjC,OAAOC,aAAaC,QAAQL,sBAAsB,MAAM;CAC1D,OAAO;AACT;AAEA,MAAMM,uBAAuBC,UAAyB;CACpD,IAAIb,SAASQ,aAAaR,SAASS,SACjCC,aAAaI,QAAQR,wBAAwBS,OAAOF,KAAK,CAAC;AAE9D;AAEA,MAAMG,eAAetB,OAAO,KAAK,CAAC,EAAE,EAAEuB,aAAa;CACjDC,SAAS;CACTC,YAAY;CACZC,gBAAgB;CAChBC,SAASJ,MAAMK,QAAQ,GAAG,CAAC;CAC3B,GAAGL,MAAMM,OAAOC;AAClB,EAAE;AAQF,MAAaK,UAA0BC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAD,EAAA,OAAA,oEAAA;EAAA,KAAA,IAAAE,KAAA,GAAAA,KAAA,IAAAA,MAAA,GAAAF,EAAAE,MAAAC,OAAAC,IAAA,2BAAA;EAAAJ,EAAA,KAAA;CAAA;CAAC,MAAA,EAAAL,YAAAC,SAAAC,aAAAE;CACtC,MAAA,CAAAM,gBAAAC,qBAA4CtC,SAAS,KAAK;CAAE,IAAAuC;CAAA,IAAAP,EAAA,OAAAL,YAAA;EACrCY,KAAAZ,YAAUa,KAAOC,OAA8B;EAACT,EAAA,KAAAL;EAAAK,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CAAvE,MAAAU,iBAAuBH;CACvB,MAAAI,YAAkBf,SAAOe,aAAP;CAA2B,IAAAC;CAAA,IAAAC;CAAA,IAAAb,EAAA,OAAAG,OAAAC,IAAA,2BAAA,GAAA;EAEnCQ,WAAA;GACR,IAAIpC,yBAAyB,GAAG8B,kBAAkB,IAAI;EAAE;EACvDO,KAAA,CAAA;EAAEb,EAAA,KAAAY;EAAAZ,EAAA,KAAAa;CAAA,OAAA;EAAAD,KAAAZ,EAAA;EAAAa,KAAAb,EAAA;CAAA;CAFLjC,UAAU6C,IAEPC,EAAE;CAAC,IAAAC;CAAA,IAAAC;CAAA,IAAAf,EAAA,OAAAG,OAAAC,IAAA,2BAAA,GAAA;EAIFU,KAAA,oBAAC,uBAAD,CAAsB,CAAA;EACtBC,KAAA,oBAAC,aAAD,CAAY,CAAA;EAAGf,EAAA,KAAAc;EAAAd,EAAA,KAAAe;CAAA,OAAA;EAAAD,KAAAd,EAAA;EAAAe,KAAAf,EAAA;CAAA;CAAA,IAAAgB;CAAA,IAAAhB,EAAA,OAAAG,OAAAC,IAAA,2BAAA,GAAA;EAGTY,KAAA;GAAA7B,SACO;GAAM8B,QACP;GAAQC,WACL;GAAQC,UACT;GAAQC,OACX;EACT;EAACpB,EAAA,KAAAgB;CAAA,OAAAA,KAAAhB,EAAA;CAAA,IAAAqB;CAAA,IAAArB,EAAA,OAAAK,kBAAAL,EAAA,OAAAU,kBAAAV,EAAA,QAAAW,WAAA;EAEAU,KAAAV,aACC,oBAAC,QAAD;GACQ,OAAA;GACG,UAAA;GACL,IAAA;IAAAW,cACY;IAAWC,aACZ;IAA4BC,WAC9B;GACb;aAEA,qBAAC,SAAD,EAAA,UAAA;IACGd,kBACC,oBAAC,YAAD;KACa,cAAA;KACF,eAAA;MACPJ,kBAAkBmB,MAIjB;KAAC;KAEA,IAAA,EAAAC,aAAe,EAAE;eAEpBrB,iBAAiB,oBAAC,UAAD,CAAS,CAAA,IAAM,oBAAC,QAAD,CAAK,CAAA;IAX7B,CAAA;IAeb,oBAAC,UAAD,CAAS,CAAA;IAET,oBAAC,gBAAD,CAAe,CAAA;GAnBT,EAAA,CAAA;EATH,CAAA;EA+BRL,EAAA,KAAAK;EAAAL,EAAA,KAAAU;EAAAV,EAAA,MAAAW;EAAAX,EAAA,MAAAqB;CAAA,OAAAA,KAAArB,EAAA;CAAA,IAAA2B;CAAA,IAAA3B,EAAA,QAAAL,cAAAK,EAAA,QAAAK,kBAAAL,EAAA,QAAAU,kBAAAV,EAAA,QAAAW,WAAA;EAEAgB,KAAAjB,kBAAAC,aACC,oBAAC,gBAAD;GACchB;GACFU,UAAAA;GACG,cAAAuB,eAAA;IACXtB,kBAAkBuB,UAAQ;IAC1BhD,oBAAoBgD,UAAQ;GAAC;EAC9B,CAAA;EAEJ7B,EAAA,MAAAL;EAAAK,EAAA,MAAAK;EAAAL,EAAA,MAAAU;EAAAV,EAAA,MAAAW;EAAAX,EAAA,MAAA2B;CAAA,OAAAA,KAAA3B,EAAA;CAAA,IAAA8B;CAAA,IAAA9B,EAAA,QAAAG,OAAAC,IAAA,2BAAA,GAAA;EAIK0B,KAAA;GAAAC,UACQ;GAAC5C,SACF;GAAM6C,eACA;GAAQC,UACb;GAAChB,QACH;GAAME,UACJ;EACZ;EAACnB,EAAA,MAAA8B;CAAA,OAAAA,KAAA9B,EAAA;CAAA,IAAAkC;CAAA,IAAAlC,EAAA,QAAAW,WAAA;EAEAuB,MAAAvB,aAAa,oBAAC,cAAD,CAAa,CAAA;EAAGX,EAAA,MAAAW;EAAAX,EAAA,MAAAkC;CAAA,OAAAA,MAAAlC,EAAA;CAAA,IAAAmC;CAAA,IAAAnC,EAAA,QAAAG,OAAAC,IAAA,2BAAA,GAAA;EACrB+B,MAAA;GAAAC,MAAQ;GAACjB,UAAY;GAAMkB,UAAY;EAAW;EAACrC,EAAA,MAAAmC;CAAA,OAAAA,MAAAnC,EAAA;CAAA,IAAAsC;CAAA,IAAAtC,EAAA,QAAAH,UAAA;EAA5DyC,MAAA,oBAAC,KAAD;GAAS,IAAAH;GAAsDtC;EAA3D,CAAA;EAA0EG,EAAA,MAAAH;EAAAG,EAAA,MAAAsC;CAAA,OAAAA,MAAAtC,EAAA;CAAA,IAAAuC;CAAA,IAAAvC,EAAA,QAAAkC,OAAAlC,EAAA,QAAAsC,KAAA;EAZhFC,MAAA,qBAAC,KAAD;GACY,WAAA;GACN,IAAAT;aAFN,CAWGI,KACDI,GAZE;;EAaEtC,EAAA,MAAAkC;EAAAlC,EAAA,MAAAsC;EAAAtC,EAAA,MAAAuC;CAAA,OAAAA,MAAAvC,EAAA;CAAA,IAAAwC;CAAA,IAAAxC,EAAA,QAAAuC,OAAAvC,EAAA,QAAAqB,MAAArB,EAAA,QAAA2B,IAAA;EAvEVa,MAAA,qBAAC,UAAD,EAAA,UAAA;GACE1B;GACAC;GAEA,qBAAC,KAAD;IACM,IAAAC;cADN;KASGK;KAkCAM;KAWDY;IAtDE;;EAJG,EAAA,CAAA;EAyEEvC,EAAA,MAAAuC;EAAAvC,EAAA,MAAAqB;EAAArB,EAAA,MAAA2B;EAAA3B,EAAA,MAAAwC;CAAA,OAAAA,MAAAxC,EAAA;CAAA,OAzEXwC;AAyEW;AAnFwB,SAAA/B,QAAAgC,MAAA;CAAA,OAEaA,KAAIC,WAAY;AAAI;AAFjC,SAAAjB,OAAAkB,UAAA;CAuCjB,MAAAd,WAAiB,CAACc;CAClB9D,oBAAoBgD,QAAQ;CAAC,OACtBA;AAAQ;;;ACtErC,SAASuC,gBAAgB,EAAEH,YAA2C;CACpE,MAAM,CAACK,OAAOC,YAAYxB,SAA4C,CAAA,CAAE;CACxE,MAAM0B,YAAY5B,MAAM;CACxB,MAAM6B,SAAS5B,OAAO,CAAC;CACvB,MAAM6B,iBAAiB7B,uBAAO,IAAI8B,QAAkD,CAAC;CAErF,MAAMC,gBAAgBjC,mBAA6B,SAASU,KAC1DI,WACAE,SACAkB,UAAsC,CAAC,GACvC;EACA,MAAM,EAAEjB,UAAU,YAAY,CAAC,MAAMiB;EAErC,IAAIf;EACJ,MAAMR,UAAU,IAAIC,SAAkBuB,gBAAgB;GACpDhB,UAAUgB;EACZ,CAAC;EAED,MAAM1B,MAAM,GAAGoB,UAAS,GAAIC,OAAOM;EACnCN,OAAOM,WAAW;EAElB,MAAMC,WAAgD;GACpD5B;GACAC,MAAM;GACNC;GACAG;GACAE;GACAC;GACSE;EACX;EAEAY,eAAeK,QAAQE,IAAI3B,SAAS0B,QAAQ;EAE5CV,UAAUY,kBAAkB,CAAC,GAAGA,eAAeF,QAAQ,CAAC;EAExD,OAAO1B;CACT,CAAC;CAED,MAAM6B,yBAAyBC,WAAyB;EACtDd,UAAUY,oBAAkBA,gBAAcG,QAAQC,UAAUA,MAAMhC,YAAY8B,MAAM,CAAC;EACrFV,eAAeK,QAAQQ,OAAOH,MAAM;CACtC;CAEA,MAAMI,gBAAgB7C,mBAAiB,SAAS6C,cAAuBJ,UAA0B;EAC/Fd,UAAUY,oBACRA,gBAAcO,KAAKH,YAAWA,QAAMhC,YAAY8B,WAAS;GAAE,GAAGE;GAAOjC,MAAM;EAAM,IAAIiC,OAAM,CAC7F;EAEAI,iBAAiBP,sBAAsBC,QAAM,GAAG,GAAI;CACtD,CAAC;CAED,MAAMO,cAAchD,mBAAiB,eAAegD,YAClDP,UACAvB,QACA;EACA,MAAM+B,eAAelB,eAAeK,QAAQc,IAAIT,QAAM;EACtD,IAAI,CAACQ,cACH,MAAM,IAAIE,MAAM,2BAA2B;EAG7C,IAAI;GACF,MAAMF,aAAahC,QAAQC,MAAM;EACnC,UAAU;GACR+B,aAAa9B,QAAQD,MAAM;GAC3B2B,cAAcJ,QAAM;EACtB;EAEA,OAAOA;CACT,CAAC;CAED,OACE,qBAAC,eAAe,UAAhB;EAAyB,OAAO;GAAE/B,MAAMuB;GAAemB,OAAOJ;EAAY;YAA1E,CACG3B,UACAK,MAAMoB,KAAK,EAAErC,KAAAA,OAAKC,MAAMI,WAAAA,aAAWE,SAAAA,WAASL,SAAAA,gBAC3C,oBAAC,aAAD;GAEE,SAASK;GACHN;GACN,SAAS,OAAOQ,aAAW;IACzB,MAAM8B,YAAYrC,WAASO,QAAM;GACnC;EAAE,GALGT,KAKH,CAEL,CACsB;;AAE7B;;;ACrFA,MAAM8D,iBAAiB;AAEvB,MAAaC,wBAA4DE,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAD,EAAA,OAAA,oEAAA;EAAA,KAAA,IAAAE,KAAA,GAAAA,KAAA,IAAAA,MAAA,GAAAF,EAAAE,MAAAC,OAAAC,IAAA,2BAAA;EAAAJ,EAAA,KAAA;CAAA;CAAC,MAAA,EAAAR,UAAAG,mBAAAI;CAGzE,IAAAM;CAAA,IAAAL,EAAA,OAAAG,OAAAC,IAAA,2BAAA,GAAA;EACyDC,KAAA,CAAA;EAAEL,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAA1D,MAAA,CAAAM,OAAAC,YAA0BzB,SAA8BuB,EAAE;CAC1D,MAAA,CAAAG,SAAAC,cAA8B3B,SAA8B,IAAI;CAChE,MAAA4B,OAAaC,QAAQH,OAAO;CAC5B,MAAAI,oBAA0B/B,OAA6C,IAAI;CAAE,IAAAgC;CAAA,IAAAb,EAAA,OAAAG,OAAAC,IAAA,2BAAA,GAAA;EAExDS,WAAA;GACnBN,UAASO,cAAA;IACP,IAAIA,UAASC,WAAY,GAAC,OAASD;IAEnC,MAAA,CAAAE,MAAA,GAAAC,QAAwBH;IACxBL,WAAWO,IAAI;IAAC,OACTC;GAAI,CACZ;EAAC;EACHjB,EAAA,KAAAa;CAAA,OAAAA,KAAAb,EAAA;CARD,MAAAkB,eAAqBL;CAQnB,IAAAM;CAAA,IAAAC;CAAA,IAAApB,EAAA,OAAAQ,WAAAR,EAAA,OAAAU,QAAAV,EAAA,OAAAM,MAAAS,QAAA;EAEQI,WAAA;GACR,IAAI,CAACT,QAAQJ,MAAKS,SAAU,GAC1BH,kBAAiBJ,UAAWa,WAAWH,cAAcV,UAAAZ,iBAAA,CAA4B;GAClF,aAEM;IACL,IAAIgB,kBAAiBJ,SACnBc,aAAaV,kBAAiBJ,OAAQ;GACvC;EACF;EACAY,KAAA;GAACV;GAAMJ,MAAKS;GAASP;EAAO;EAACR,EAAA,KAAAQ;EAAAR,EAAA,KAAAU;EAAAV,EAAA,KAAAM,MAAAS;EAAAf,EAAA,KAAAmB;EAAAnB,EAAA,KAAAoB;CAAA,OAAA;EAAAD,KAAAnB,EAAA;EAAAoB,KAAApB,EAAA;CAAA;CAVhCpB,UAAUuC,IAUPC,EAA6B;CAAC,IAAAG;CAAA,IAAAvB,EAAA,OAAAG,OAAAC,IAAA,2BAAA,GAAA;EAElBmB,MAAAnC,SAAAoC,YAAA;GACb,MAAAC,eAAmC;IAAArC;IAAAC,UAEvBmC,SAAOnC;IAAUC,kBACTkC,SAAOlC,oBAAP;GACpB;GAEAiB,UAASmB,SAAU,CAAA,GAAIA,MAAMD,YAAY,CAAC;EAAC;EAC5CzB,EAAA,KAAAuB;CAAA,OAAAA,KAAAvB,EAAA;CARD,MAAA2B,SAAeJ;CAQb,IAAAK;CAAA,IAAA5B,EAAA,OAAAG,OAAAC,IAAA,2BAAA,GAAA;EAG4BwB,KAAA,EAAAD,OAAS;EAAC3B,EAAA,KAAA4B;CAAA,OAAAA,KAAA5B,EAAA;CAIhB,MAAA6B,KAAArB,SAAOlB;CAAkB,IAAAwC;CAAA,IAAA9B,EAAA,QAAAG,OAAAC,IAAA,2BAAA,GAAA;EAClC0B,MAAAC,QAAAC,WAAA;GACP,IAAIA,WAAW,aAAW;GAC1BvB,WAAW,IAAI;EAAC;EACjBT,EAAA,MAAA8B;CAAA,OAAAA,KAAA9B,EAAA;CAEQ,MAAAiC,KAAAzB,SAAOpB;CAAS,IAAA8C;CAAA,IAAAlC,EAAA,QAAAQ,SAAA;EAExB0B,MAAA1B,SAAOnB,WACN,oBAAC,OAAD;GAAgB,eAAMoB,WAAW,IAAI;GAAa,UAAAD,QAAOnB;GAAmB,SAAA;aACzEmB,QAAOpB;EADJ,CAAA,IADP+C,KAAAA;EAIYnC,EAAA,MAAAQ;EAAAR,EAAA,MAAAkC;CAAA,OAAAA,MAAAlC,EAAA;CAAA,IAAAoC;CAAA,IAAApC,EAAA,QAAAU,QAAAV,EAAA,QAAAL,kBAAAK,EAAA,QAAAkC,OAAAlC,EAAA,QAAA6B,MAAA7B,EAAA,QAAAiC,IAAA;EAdfG,MAAA,oBAAC,UAAD;GACQ1B;GACY,kBAAAmB;GACT,SAAAC;GAIKnC,cAAAA;GACL,SAAAsC;aAERC;EAVM,CAAA;EAeElC,EAAA,MAAAU;EAAAV,EAAA,MAAAL;EAAAK,EAAA,MAAAkC;EAAAlC,EAAA,MAAA6B;EAAA7B,EAAA,MAAAiC;EAAAjC,EAAA,MAAAoC;CAAA,OAAAA,MAAApC,EAAA;CAAA,IAAAqC;CAAA,IAAArC,EAAA,QAAAR,YAAAQ,EAAA,QAAAoC,KAAA;EAjBbC,MAAA,qBAAC,qBAAD;GAA4B,OAAAT;aAA5B,CACGpC,UACD4C,GAFkB;;EAkBEpC,EAAA,MAAAR;EAAAQ,EAAA,MAAAoC;EAAApC,EAAA,MAAAqC;CAAA,OAAAA,MAAArC,EAAA;CAAA,OAlBtBqC;AAkBsB;;;AC7D1B,MAAMsB,kBAAkB,OAAU;AAElC,MAAMC,aAAaC,aAAqB;CACtCR,EAAES,OAAOT,EAAEU,KAAKC,QAAQH,SAAwC,CAAC,CAAC;CAClEjB,MAAMqB,OAAOJ,QAAQ;AACvB;AAEA,MAAMhB,KACHqB,IAAIpB,gBAAgB,CAAC,CACrBoB,IAAIf,gBAAgB,CAAC,CACrBgB,KAAK;CACJf;CACAgB,aAAa;CACbC,eAAeC,OAAOC,KAAKnB,SAAS;CACpCoB,WAAW;EACTC,QAAQ,CAAC,QAAQ;EACjBC,eAAef;CACjB;CACAgB,eAAe,EAAEC,aAAa,MAAM;AACtC,CAAC;AAEHhB,UAAUf,KAAKgC,oBAAoBhC,KAAKgB,QAAQ;AAEhDhB,KAAKiC,GAAG,oBAAoBjB,aAAa;CACvCD,UAAUC,QAAQ;AACpB,CAAC;AASD,MAAauB,kBAAqCC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAD,EAAA,OAAA,oEAAA;EAAA,KAAA,IAAAE,KAAA,GAAAA,KAAA,IAAAA,MAAA,GAAAF,EAAAE,MAAAC,OAAAC,IAAA,2BAAA;EAAAJ,EAAA,KAAA;CAAA;CAAC,MAAA,EAAAN,SAAAC,YAAAC,OAAAC,aAAAE;CAAwC,IAAAM;CAAA,IAAAL,EAAA,OAAAG,OAAAC,IAAA,2BAAA,GAAA;EACpEC,KAAArD,YAAY,EAAAsD,KAAO,MAAM,CAAC;EAACN,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAAhD,MAAAO,eAAqBF;CAA4B,IAAAG;CAAA,IAAAR,EAAA,OAAAG,OAAAC,IAAA,2BAAA,GAAA;EAM9CI,KAAA,CAAA;EAAER,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAJLrC,UAAU8C,OAIPD,EAAE;CAO2C,MAAAE,KAAAhB,SAAOiB;CAAgB,IAAAC;CAAA,IAAAZ,EAAA,OAAAH,YAAAG,EAAA,OAAAL,cAAAK,EAAA,OAAAN,SAAA;EAC3DkB,KAAA,oBAAC,iBAAD,EAAA,UACE,oBAAC,QAAD;GAAoBjB;GAAqBD;GACtCG;EADI,CAAA,EADO,CAAA;EAIEG,EAAA,KAAAH;EAAAG,EAAA,KAAAL;EAAAK,EAAA,KAAAN;EAAAM,EAAA,KAAAY;CAAA,OAAAA,KAAAZ,EAAA;CAAA,IAAAa;CAAA,IAAAb,EAAA,OAAAU,MAAAV,EAAA,OAAAY,IAAA;EANtBC,KAAA,oBAAC,sBAAD;GAAmCxD,aAAAA;GAA6B,eAAAE,KAAIgB;aAClE,oBAAC,sBAAD;IAAsC,gBAAAmC;cACpCE;GADmB,CAAA;EADF,CAAA;EAQEZ,EAAA,KAAAU;EAAAV,EAAA,KAAAY;EAAAZ,EAAA,KAAAa;CAAA,OAAAA,KAAAb,EAAA;CAAA,IAAAc;CAAA,IAAAd,EAAA,QAAAa,MAAAb,EAAA,QAAAJ,OAAA;EAX7BkB,KAAA,oBAAC,eAAD;GAAsBP,OAAAA;aACpB,oBAAC,iBAAD;IAAuBhD;cACrB,oBAAC,eAAD;KAAsBqC;eACpBiB;IADY,CAAA;GADA,CAAA;EADJ,CAAA;EAcEb,EAAA,MAAAa;EAAAb,EAAA,MAAAJ;EAAAI,EAAA,MAAAc;CAAA,OAAAA,KAAAd,EAAA;CAAA,OAdhBc;AAcgB;AAxB8B,SAAAL,QAAA;CAI9C,IAAI,mBAAmBM,WAChBA,UAASC,cAAcC,SAAU,QAAQ;AAC/C"}
1
+ {"version":3,"file":"index.mjs","names":["Avatar","useQuery","createServerFn","axios","FC","getAccessToken","getProfilePhoto","method","handler","Promise","accessToken","response","get","ArrayBuffer","responseType","headers","Authorization","Buffer","from","data","toString","UserAvatar","$","_c","$i","Symbol","for","t0","queryKey","queryFn","_temp","staleTime","Infinity","gcTime","photoUrl","t1","undefined","t2","width","xs","sm","height","t3","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","$i","Symbol","for","anchorElement","setAnchorElement","tab","setTab","open","Boolean","t","i18n","mode","setMode","t0","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","t37","map","t38","modeValue","Icon","t39","t40","t41","t42","t43","languageCode","changeLanguage","finally","resolvedLanguage","width","xs","sm","height","name","employeeId","department","_temp2","_temp3","lng","location","href","returnTo","pathname","search","encodeURIComponent","Box","Chip","Stack","Typography","useRouter","z","FC","manifest","RouterIconButton","PRODUCTION_ENV","getEnv","url","string","refine","u","split","length","transform","toUpperCase","catch","parse","AppTitle","$","_c","$i","Symbol","for","router","t0","origin","env","isProduction","t1","alignItems","flexGrow","t2","name","t3","display","xs","sm","t4","short_name","t5","t6","t7","LinkOptions","NavigationBase","hidden","NavigationBaseItem","title","icon","React","ReactNode","NavigationPageItem","Pick","kind","NavigationPageGroup","children","Array","NavigationItem","NavigationDivider","NavigationHeader","Navigation","isPageItem","item","isPageGroup","isDivider","isHeader","ExpandMoreIcon","Collapse","Grow","Avatar","Box","ListItem","ListItemButton","ListItemIcon","ListItemText","Paper","styled","Typography","Fragment","useState","MINI_WIDTH","isPageGroup","NavigationItem","NavigationPageGroup","NavigationPageItem","FC","ReactNode","SxProps","Theme","RouterListItemButton","ICON_SIZE","getSelectedColor","theme","vars","palette","primary","dark","getActionActiveColor","action","active","StyledNavButton","borderRadius","Number","shape","color","backgroundColor","routerButtonSx","IconOrAvatar","item","collapsed","t0","$","_c","$i","Symbol","for","icon","t1","position","left","top","transform","t2","display","alignItems","justifyContent","minWidth","t3","t4","title","width","height","fontSize","split","slice","map","_temp","join","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","groupItem","itemId","to","href","right","ml","transition","transitions","create","easing","sharp","duration","chevronSx","shouldJustExpand","px","sx","buttonProps","t8","noWrap","flex","t9","t10","buttonContent","t11","onMouseEnter","onMouseLeave","t12","py","overflowX","t13","params","search","t14","t15","listItem","t16","t17","word","charAt","toUpperCase","Divider","List","ListSubheader","Fragment","useEffect","useState","NavigationListItem","MINI_WIDTH","FC","ReactNode","isPageItem","isPageGroup","isDivider","isHeader","Navigation","NavigationItem","NavigationPageGroup","NavigationPageItem","NavigationListProps","subNavigation","depth","collapsed","isPopover","isSidebarFullyExpanded","isSidebarFullyCollapsed","renderItem","item","context","activePath","onClose","NavigationList","t0","$","_c","$i","Symbol","for","t1","t2","undefined","t3","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","selected","to","nav","hidden","Box","useLocation","NavigationList","FC","isHeader","Navigation","NavigationContentProps","navigation","collapsed","expanded","setExpanded","open","showPermanent","NavigationContent","t0","$","_c","$i","Symbol","for","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","$i","Symbol","for","t1","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","Menu","MenuOpen","AppBar","Box","CssBaseline","IconButton","InitColorSchemeScript","Toolbar","styled","FC","ReactNode","Fragment","useEffect","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","$i","Symbol","for","navigationOpen","setNavigationOpen","t1","some","_temp","showNavigation","showShell","t2","t3","t4","t5","t6","height","maxHeight","overflow","width","t7","borderBottom","borderColor","boxShadow","_temp2","marginRight","t8","newValue_0","newValue","t9","flexGrow","flexDirection","minWidth","t10","t11","flex","position","t12","t13","t14","item","hidden","previous","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","$i","Symbol","for","t1","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","createCache","CacheProvider","Theme","ThemeProvider","LocalizationProvider","AdapterDayjs","dayjs","i18n","LanguageDetector","FC","ReactNode","useEffect","I18nextProvider","initReactI18next","resources","z","Layout","LayoutOptions","Navigation","DialogsProvider","NotificationProvider","YEAR_IN_MINUTES","normalizeLocale","locale","replace","toLowerCase","zodLocales","Map","Object","entries","core","locales","map","createLocale","setLocale","language","baseLanguage","split","get","en","config","use","init","fallbackLng","supportedLngs","keys","detection","caches","cookieMinutes","interpolation","escapeValue","resolvedLanguage","on","ProvidersProps","options","navigation","theme","children","LayoutProvider","t0","$","_c","$i","Symbol","for","t1","key","emotionCache","t2","_temp","t3","snackbarOrigin","t4","t5","t6","navigator","serviceWorker","register"],"sources":["../src/components/core/account/UserAvatar.tsx","../src/components/core/account/UserMenu.tsx","../src/components/core/AppTitle.tsx","../src/models/Navigation.ts","../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/DialogsProvider.tsx","../src/providers/NotificationProvider.tsx","../src/providers/LayoutProvider.tsx"],"sourcesContent":["import { Avatar } from \"@mui/material\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport { createServerFn } from \"@tanstack/react-start\";\nimport axios from \"axios\";\nimport { FC } from \"react\";\nimport { getAccessToken } from \"~/lib/auth/user\";\n\nconst getProfilePhoto = createServerFn({ method: \"GET\" }).handler(async (): Promise<string> => {\n try {\n const accessToken = await getAccessToken(\"graph\");\n const response = await axios.get<ArrayBuffer>(\n \"https://graph.microsoft.com/v1.0/me/photo/$value\",\n {\n responseType: \"arraybuffer\",\n headers: { Authorization: `Bearer ${accessToken}` },\n },\n );\n return `data:image/jpeg;base64,${Buffer.from(response.data).toString(\"base64\")}`;\n } catch {\n return \"\";\n }\n});\n\nexport const UserAvatar: FC = () => {\n const { data: photoUrl } = useQuery({\n queryKey: [\"graph\", \"me\", \"photo\"],\n queryFn: () => getProfilePhoto(),\n staleTime: Infinity,\n gcTime: Infinity,\n });\n\n return (\n <Avatar\n alt=\"User profile photo\"\n src={photoUrl || undefined}\n sx={{ width: { xs: 32, sm: 40 }, height: { xs: 32, sm: 40 } }}\n />\n );\n};\n","import AccountCircle from \"@mui/icons-material/AccountCircle\";\nimport ArrowBack from \"@mui/icons-material/ArrowBack\";\nimport Brightness4 from \"@mui/icons-material/Brightness4\";\nimport ChevronRight from \"@mui/icons-material/ChevronRight\";\nimport DarkMode from \"@mui/icons-material/DarkMode\";\nimport Done from \"@mui/icons-material/Done\";\nimport LightMode from \"@mui/icons-material/LightMode\";\nimport Login from \"@mui/icons-material/Login\";\nimport Logout from \"@mui/icons-material/Logout\";\nimport SettingsBrightness from \"@mui/icons-material/SettingsBrightness\";\nimport Translate from \"@mui/icons-material/Translate\";\nimport {\n Box,\n IconButton,\n List,\n ListItem,\n ListItemButton,\n ListItemIcon,\n ListItemText,\n ListSubheader,\n Menu,\n useColorScheme,\n} from \"@mui/material\";\nimport { rootRouteId, useMatch } from \"@tanstack/react-router\";\nimport type { FC } from \"react\";\nimport { Fragment, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { UserAvatar } from \"./UserAvatar\";\n\ntype TabType = \"settings\" | \"theme\" | \"language\";\nconst capitalize = (value: string | undefined) =>\n value && value.charAt(0).toUpperCase() + value.slice(1);\n\nexport const ToolbarAccount: FC = () => {\n const [anchorElement, setAnchorElement] = useState<HTMLElement>();\n const [tab, setTab] = useState<TabType>(\"settings\");\n const open = Boolean(anchorElement);\n const { t, i18n } = useTranslation();\n const { mode, setMode } = useColorScheme();\n const rootMatch = useMatch({ from: rootRouteId });\n const user = rootMatch.context.user;\n\n const supportedLanguages = (\n Array.isArray(i18n.options.supportedLngs) ? i18n.options.supportedLngs : []\n ).filter((lng) => lng !== \"cimode\");\n const languageDisplayNames = new Intl.DisplayNames([i18n.language], { type: \"language\" });\n\n const colorModes: Array<{\n mode: Exclude<typeof mode, undefined>;\n icon: typeof LightMode;\n label: string;\n }> = [\n { mode: \"light\", icon: LightMode, label: t(\"Layout.Light\") },\n { mode: \"dark\", icon: DarkMode, label: t(\"Layout.Dark\") },\n { mode: \"system\", icon: SettingsBrightness, label: t(\"Layout.System\") },\n ];\n\n const openMenu = (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) =>\n setAnchorElement(event.currentTarget);\n const closeMenu = () => {\n setAnchorElement(undefined);\n setTimeout(() => setTab(\"settings\"), 300);\n };\n\n const changeTab = (newTab: TabType) => () => setTab(newTab);\n\n const settings = (\n <List\n component=\"nav\"\n subheader={\n <ListSubheader sx={{ backgroundColor: \"transparent\" }}>\n {t(\"Layout.Settings\")}\n </ListSubheader>\n }\n >\n <ListItemButton onClick={changeTab(\"theme\")} sx={{ py: 0.3 }}>\n <ListItemIcon>\n <Brightness4 />\n </ListItemIcon>\n <ListItemText\n primary={t(\"Layout.Appearance\")}\n secondary={colorModes.find((m) => m.mode === mode)?.label ?? t(\"Layout.System\")}\n />\n <ChevronRight />\n </ListItemButton>\n\n <ListItemButton onClick={changeTab(\"language\")} sx={{ py: 0.3 }}>\n <ListItemIcon>\n <Translate />\n </ListItemIcon>\n <ListItemText\n primary={t(\"Layout.Language\")}\n secondary={capitalize(languageDisplayNames.of(i18n.language))}\n />\n <ChevronRight />\n </ListItemButton>\n </List>\n );\n\n const theme = (\n <List\n subheader={\n <ListSubheader\n onClick={changeTab(\"settings\")}\n sx={{\n backgroundColor: \"transparent\",\n display: \"flex\",\n alignItems: \"center\",\n px: 1,\n cursor: \"pointer\",\n }}\n >\n <IconButton size=\"small\" sx={{ mr: 0.5 }} aria-label=\"Back\">\n <ArrowBack fontSize=\"small\" />\n </IconButton>{\" \"}\n {t(\"Layout.Appearance\")}\n </ListSubheader>\n }\n >\n {colorModes.map(({ mode: modeValue, icon: Icon, label }) => (\n <ListItemButton\n key={modeValue}\n onClick={() => {\n setMode(modeValue);\n closeMenu();\n }}\n selected={mode === modeValue}\n >\n <ListItemIcon>\n <Icon />\n </ListItemIcon>\n <ListItemText primary={label} />\n </ListItemButton>\n ))}\n </List>\n );\n\n const language = (\n <List\n subheader={\n <ListSubheader\n onClick={changeTab(\"settings\")}\n sx={{\n backgroundColor: \"transparent\",\n display: \"flex\",\n alignItems: \"center\",\n px: 1,\n cursor: \"pointer\",\n }}\n >\n <IconButton size=\"small\" sx={{ mr: 0.5 }} aria-label=\"Back\">\n <ArrowBack fontSize=\"small\" />\n </IconButton>{\" \"}\n {t(\"Layout.Language\")}\n </ListSubheader>\n }\n >\n {supportedLanguages.map((languageCode) => (\n <ListItemButton\n key={languageCode}\n onClick={() => i18n.changeLanguage(languageCode).finally(() => closeMenu())}\n selected={i18n.resolvedLanguage === languageCode}\n >\n <ListItemIcon>{i18n.resolvedLanguage === languageCode && <Done />}</ListItemIcon>\n <ListItemText primary={capitalize(languageDisplayNames.of(languageCode))} />\n </ListItemButton>\n ))}\n </List>\n );\n\n return (\n <Fragment>\n <IconButton size=\"small\" edge=\"end\" onClick={openMenu} aria-label=\"Account\">\n {user ? (\n <UserAvatar />\n ) : (\n <AccountCircle sx={{ width: { xs: 32, sm: 40 }, height: { xs: 32, sm: 40 } }} />\n )}\n </IconButton>\n\n <Menu anchorEl={anchorElement} open={open} onClose={closeMenu}>\n <Box sx={{ width: 240 }}>\n <List disablePadding>\n {user ? (\n <Fragment>\n <ListItem>\n <ListItemText\n primary={user.name}\n secondary={\n <span>\n {user.employeeId && <span>{user.employeeId}</span>}\n {user.employeeId && <br />}\n {user.department && <span>{user.department}</span>}\n </span>\n }\n />\n </ListItem>\n <ListItemButton onClick={() => {\n location.href = \"/auth/logout\";\n }}>\n <ListItemIcon>\n <Logout color=\"error\" />\n </ListItemIcon>\n <ListItemText primary={t(\"Layout.Logout\")} />\n </ListItemButton>\n </Fragment>\n ) : (\n <ListItemButton onClick={() => {\n const returnTo = location.pathname + location.search;\n location.href = `/auth/login?returnTo=${encodeURIComponent(returnTo)}`;\n }}>\n <ListItemIcon>\n <Login color=\"success\" />\n </ListItemIcon>\n <ListItemText primary={t(\"Layout.LogIn\")} />\n </ListItemButton>\n )}\n </List>\n\n {tab === \"settings\" && settings}\n {tab === \"theme\" && theme}\n {tab === \"language\" && language}\n </Box>\n </Menu>\n </Fragment>\n );\n};\n","import { Box, Chip, Stack, Typography } from \"@mui/material\";\nimport { useRouter } from \"@tanstack/react-router\";\nimport z from \"zod\";\nimport type { FC } from \"react\";\nimport { manifest } from \"virtual:wcz-layout\";\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\" spacing={1} sx={{ alignItems: \"center\", flexGrow: 1 }}>\n <RouterIconButton to=\"/\" size=\"small\">\n <img src=\"/favicon-32x32.png\" alt={manifest.name} loading=\"lazy\" />\n </RouterIconButton>\n <Typography variant=\"h6\">\n <Box component=\"span\" sx={{ display: { xs: \"inline\", sm: \"none\" } }}>\n {manifest.short_name ?? manifest.name}\n </Box>\n <Box component=\"span\" sx={{ display: { xs: \"none\", sm: \"inline\" } }}>\n {manifest.name}\n </Box>\n </Typography>\n {!isProduction && <Chip size=\"small\" label={env} color=\"primary\" />}\n </Stack>\n );\n};\n","import { LinkOptions } from \"@tanstack/react-router\";\n\ntype NavigationBase = { hidden?: boolean };\n\ntype NavigationBaseItem = NavigationBase & {\n title: string;\n icon: React.ReactNode;\n};\n\nexport type NavigationPageItem = NavigationBaseItem &\n Pick<LinkOptions, \"to\" | \"href\" | \"params\" | \"search\"> & { kind: \"item\" };\n\nexport type NavigationPageGroup = NavigationBaseItem & {\n kind: \"group\";\n children: Array<NavigationItem>;\n};\n\nexport type NavigationDivider = NavigationBase & { kind: \"divider\" };\n\nexport type NavigationHeader = NavigationBase & {\n kind: \"header\";\n title: string;\n};\n\nexport type NavigationItem =\n | NavigationPageItem\n | NavigationPageGroup\n | NavigationDivider\n | NavigationHeader;\n\nexport type Navigation = Array<NavigationItem>;\n\nexport const isPageItem = (item: NavigationItem): item is NavigationPageItem =>\n item.kind === \"item\";\nexport const isPageGroup = (item: NavigationItem): item is NavigationPageGroup =>\n item.kind === \"group\";\nexport const isDivider = (item: NavigationItem): item is NavigationDivider =>\n item.kind === \"divider\";\nexport const isHeader = (item: NavigationItem): item is NavigationHeader => item.kind === \"header\";\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 { isPageGroup } from \"~/models/Navigation\";\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: Number(theme.shape.borderRadius) * 2,\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 routerButtonSx: SxProps<Theme> = (theme: Theme) => ({\n borderRadius: 2,\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 .join(\"\")}\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 groupItem = isPageGroup(item);\n const itemId = groupItem ? `group-${item.title}` : `item-${item.to ?? item.href ?? item.title}`;\n\n const chevronSx: SxProps<Theme> = (theme: Theme) => {\n if (collapsed && isSidebarFullyCollapsed && groupItem) {\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 && groupItem) {\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 = groupItem && !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 {groupItem ? <ExpandMoreIcon sx={chevronSx} /> : null}\n </>\n );\n\n const listItem = (\n <ListItem\n {...(groupItem && 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 {groupItem ? (\n <StyledNavButton\n {...buttonProps}\n onClick={shouldJustExpand ? () => onClick?.(item) : undefined}\n >\n {buttonContent}\n </StyledNavButton>\n ) : (\n <RouterListItemButton\n {...buttonProps}\n to={item.to}\n href={item.href}\n params={item.params}\n search={item.search}\n onClick={onClose}\n sx={[buttonProps.sx, routerButtonSx]}\n >\n {buttonContent}\n </RouterListItemButton>\n )}\n\n {groupItem && collapsed ? (\n <MiniPopover open={itemId === hoveredMiniItemId}>\n {renderNested?.(item.children)}\n </MiniPopover>\n ) : null}\n </ListItem>\n );\n\n return (\n <Fragment key={itemId}>\n {listItem}\n {groupItem && !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 { isPageItem, isPageGroup, isDivider, isHeader } from \"~/models/Navigation\";\nimport type {\n Navigation,\n NavigationItem,\n NavigationPageGroup,\n NavigationPageItem,\n} from \"~/models/Navigation\";\n\ninterface NavigationListProps {\n subNavigation: Navigation;\n depth?: number;\n collapsed?: boolean;\n isPopover?: boolean;\n isSidebarFullyExpanded?: boolean;\n isSidebarFullyCollapsed?: boolean;\n renderItem?: (\n item: NavigationPageItem | NavigationPageGroup,\n context: { collapsed: boolean },\n ) => ReactNode;\n activePath?: string | null;\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 renderItem,\n activePath,\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 activePath={activePath}\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\n sx={{ mx: 1, mt: 1, mb: nextItem && isHeader(nextItem) && !collapsed ? 0 : 1 }}\n />\n </li>\n );\n }\n\n if (!isPageItem(navItem) && !isPageGroup(navItem)) return null;\n\n const key = `item-${depth}-${index}`;\n const uniqueItemKey = `${depth}-${index}-${navItem.title}`;\n const selected = isPageItem(navItem) && navItem.to === activePath;\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={selected}\n collapsed={collapsed}\n isSidebarFullyExpanded={isSidebarFullyExpanded}\n isSidebarFullyCollapsed={isSidebarFullyCollapsed}\n onClick={\n isPageGroup(navItem) && !collapsed ? () => toggleKey(uniqueItemKey) : undefined\n }\n renderNested={renderNested}\n onClose={onClose}\n />\n );\n })}\n </List>\n );\n};\n","import Box from \"@mui/material/Box\";\nimport { useLocation } from \"@tanstack/react-router\";\nimport { NavigationList } from \"./NavigationList\";\nimport type { FC } from \"react\";\nimport { isHeader } from \"~/models/Navigation\";\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 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 activePath={location.pathname}\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 Menu from \"@mui/icons-material/Menu\";\nimport MenuOpen from \"@mui/icons-material/MenuOpen\";\nimport {\n AppBar,\n Box,\n CssBaseline,\n IconButton,\n InitColorSchemeScript,\n Toolbar,\n} from \"@mui/material\";\nimport { styled } from \"@mui/material/styles\";\nimport type { FC, ReactNode } from \"react\";\nimport { Fragment, useEffect, useState } from \"react\";\nimport { Platform } from \"~/lib/utils\";\nimport type { LayoutOptions } from \"~/models/LayoutOptions\";\nimport type { Navigation } from \"~/models/Navigation\";\nimport { ToolbarAccount } from \"./account/UserMenu\";\nimport { AppTitle } from \"./AppTitle\";\nimport { NavigationRail } from \"./navigation/NavigationRail\";\n\nconst NAVIGATION_STORAGE_KEY = \"navigation-open\";\n\nconst getInitialNavigationOpen = (): boolean => {\n if (Platform.isWindows || Platform.isMacOS)\n return localStorage.getItem(NAVIGATION_STORAGE_KEY) === \"true\";\n return false;\n};\n\nconst saveNavigationState = (value: boolean): void => {\n if (Platform.isWindows || Platform.isMacOS) {\n localStorage.setItem(NAVIGATION_STORAGE_KEY, String(value));\n }\n};\n\nconst DrawerHeader = styled(\"div\")(({ theme }) => ({\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n padding: theme.spacing(0, 1),\n ...theme.mixins.toolbar,\n}));\n\ninterface LayoutProps {\n navigation: Navigation | undefined;\n options: LayoutOptions | undefined;\n children: ReactNode;\n}\n\nexport const Layout: FC<LayoutProps> = ({ navigation, options, children }) => {\n const [navigationOpen, setNavigationOpen] = useState(false);\n const showNavigation = navigation?.some((item) => item.hidden !== true);\n const showShell = options?.showShell ?? true;\n\n useEffect(() => {\n if (getInitialNavigationOpen()) setNavigationOpen(true);\n }, []);\n\n return (\n <Fragment>\n <InitColorSchemeScript />\n <CssBaseline />\n\n <Box\n sx={{\n display: \"flex\",\n height: \"100dvh\",\n maxHeight: \"100dvh\",\n overflow: \"hidden\",\n width: \"100%\",\n }}\n >\n {showShell && (\n <AppBar\n color=\"transparent\"\n position=\"fixed\"\n sx={{\n borderBottom: \"1px solid\",\n borderColor: \"var(--mui-palette-divider)\",\n boxShadow: \"none\",\n }}\n >\n <Toolbar>\n {showNavigation && (\n <IconButton\n aria-label=\"Toggle navigation\"\n onClick={() => {\n setNavigationOpen((previous) => {\n const newValue = !previous;\n saveNavigationState(newValue);\n return newValue;\n });\n }}\n sx={{ marginRight: 2 }}\n >\n {navigationOpen ? <MenuOpen /> : <Menu />}\n </IconButton>\n )}\n\n <AppTitle />\n\n <ToolbarAccount />\n </Toolbar>\n </AppBar>\n )}\n\n {showNavigation && showShell && (\n <NavigationRail\n navigation={navigation!}\n expanded={navigationOpen}\n setExpanded={(newValue) => {\n setNavigationOpen(newValue);\n saveNavigationState(newValue);\n }}\n />\n )}\n\n <Box\n component=\"main\"\n sx={{\n flexGrow: 1,\n display: \"flex\",\n flexDirection: \"column\",\n minWidth: 0,\n height: \"100%\",\n overflow: \"hidden\",\n }}\n >\n {showShell && <DrawerHeader />}\n <Box sx={{ flex: 1, overflow: \"auto\", position: \"relative\" }}>{children}</Box>\n </Box>\n </Box>\n </Fragment>\n );\n};\n","import useEventCallback from \"@mui/utils/useEventCallback\";\nimport { useId, useRef, useState } from \"react\";\nimport { DialogsContext } from \"../contexts/DialogsContext\";\nimport type { DialogComponent, OpenDialog, OpenDialogOptions } from \"../hooks/useDialogs\";\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 createCache from \"@emotion/cache\";\nimport { CacheProvider } from \"@emotion/react\";\nimport type { Theme } from \"@mui/material\";\nimport { ThemeProvider } from \"@mui/material\";\nimport { LocalizationProvider } from \"@mui/x-date-pickers-pro\";\nimport { AdapterDayjs } from \"@mui/x-date-pickers-pro/AdapterDayjs\";\nimport dayjs from \"dayjs\";\nimport i18n from \"i18next\";\nimport LanguageDetector from \"i18next-browser-languagedetector\";\nimport type { FC, ReactNode } from \"react\";\nimport { useEffect } from \"react\";\nimport { I18nextProvider, initReactI18next } from \"react-i18next\";\nimport { resources } from \"virtual:wcz-layout\";\nimport z from \"zod\";\nimport { Layout } from \"~/components/core/Layout\";\nimport type { LayoutOptions } from \"~/models/LayoutOptions\";\nimport type { Navigation } from \"~/models/Navigation\";\nimport { DialogsProvider } from \"./DialogsProvider\";\nimport { NotificationProvider } from \"./NotificationProvider\";\n\nconst YEAR_IN_MINUTES = 60 * 24 * 365;\n\nconst normalizeLocale = (locale: string) => locale.replace(/[^a-z]/gi, \"\").toLowerCase();\n\nconst zodLocales = new Map(\n Object.entries(z.core.locales).map(([locale, createLocale]) => [normalizeLocale(locale), createLocale]),\n);\n\nconst setLocale = (language: string) => {\n const baseLanguage = language.split(/[-_]/)[0];\n const createLocale =\n zodLocales.get(normalizeLocale(language)) ??\n zodLocales.get(normalizeLocale(baseLanguage)) ??\n z.core.locales.en;\n\n z.config(createLocale());\n dayjs.locale(language);\n};\n\nawait i18n\n .use(LanguageDetector)\n .use(initReactI18next)\n .init({\n resources,\n fallbackLng: \"en\",\n supportedLngs: Object.keys(resources),\n detection: {\n caches: [\"cookie\"],\n cookieMinutes: YEAR_IN_MINUTES,\n },\n interpolation: { escapeValue: false },\n });\n\nsetLocale(i18n.resolvedLanguage ?? i18n.language);\n\ni18n.on(\"languageChanged\", (language) => {\n setLocale(language);\n});\n\ninterface ProvidersProps {\n options?: LayoutOptions;\n navigation?: Navigation;\n theme: Theme;\n children: ReactNode;\n}\n\nexport const LayoutProvider: FC<ProvidersProps> = ({ options, navigation, theme, children }) => {\n const emotionCache = createCache({ key: \"css\" });\n\n useEffect(() => {\n if (\"serviceWorker\" in navigator) {\n void navigator.serviceWorker.register(\"/sw.js\");\n }\n }, []);\n\n return (\n <CacheProvider value={emotionCache}>\n <I18nextProvider i18n={i18n}>\n <ThemeProvider theme={theme}>\n <LocalizationProvider dateAdapter={AdapterDayjs} adapterLocale={i18n.language}>\n <NotificationProvider snackbarOrigin={options?.snackbarOrigin}>\n <DialogsProvider>\n <Layout navigation={navigation} options={options}>\n {children}\n </Layout>\n </DialogsProvider>\n </NotificationProvider>\n </LocalizationProvider>\n </ThemeProvider>\n </I18nextProvider>\n </CacheProvider>\n );\n};\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wcz-layout",
3
- "version": "9.4.1",
3
+ "version": "9.4.2",
4
4
  "private": false,
5
5
  "keywords": [
6
6
  "tanstack-intent"
@@ -9,7 +9,6 @@ description: "Use when: creating or modifying TanStack DB collections, live quer
9
9
  - Use `useLiveQuery` for list/grid pages and `useLiveSuspenseQuery` for detail components wrapped in suspense.
10
10
  - For mutations use `createOptimisticAction` — mirror the server mutation in `onMutate`, then call the server function and `collection.utils.refetch()` in `mutationFn`.
11
11
  - Use `meta.loadSubsetOptions` for relational subset loading.
12
- - Use Axios with auth interceptor `getAccessToken` but only for public REST APIs; use default `api` as a scope key.
13
12
 
14
13
  ## File Placement
15
14
 
@@ -18,24 +17,11 @@ src/db-collections/ — DB collections
18
17
  src/server/actions/ — server functions (select/update/insert/delete)
19
18
  src/lib/schemas/ — Zod schemas (shared between client and server)
20
19
  src/lib/auth/scopes.ts — API scope keys
21
- wcz-layout/data — queryClient instance
22
- wcz-layout/auth — getAccessToken utility function
23
20
  ```
24
21
 
25
22
  ## Examples
26
23
 
27
24
  ```ts
28
- // src/db-collections/<feature>.ts
29
- export const api = axios.create({
30
- baseURL: "/api/libraries",
31
- });
32
-
33
- api.interceptors.request.use(async (config) => {
34
- const accessToken = await getAccessToken("api");
35
- config.headers.set("Authorization", `Bearer ${accessToken}`);
36
- return config;
37
- });
38
-
39
25
  // src/db-collections/<feature>.ts
40
26
  export const librariesCollection = createCollection(
41
27
  queryCollectionOptions({
@@ -1,142 +1,142 @@
1
- ---
2
- name: data-grid
3
- description: "Use when: building or configuring MUI X DataGrid tables, editable columns, toolbar actions, row selection, or TanStack DB-backed grids."
4
- ---
5
-
6
- ## Rules
7
-
8
- - Wrap DataGrid in `Fullscreen` when it is the only content on the page.
9
- - Type columns as `Array<GridColDef<RowType>>` with the row interface.
10
- - Use translation for all `headerName` values.
11
- - Use `rows`, `columns`, `showToolbar`, `loading`, `ignoreDiacritics`, `cellSelection`, and `disableRowSelectionOnClick` on grids.
12
- - For enums use `type: "singleSelect"` with `{ value, label }` options array used from enumObject.
13
- - For editable columns, pair `editable: true` with `renderHeader: EditableColumnHeader`.
14
- - Use `EditableColumnHeader`, and router button/grid action components from `wcz-layout/components` when they fit.
15
- - Always set `valueFormatter: (value) => dayjs(value).format("L LT")` for columns type `dateTime` or `format("L")` for columns type `date`.
16
-
17
- ## File Placement
18
-
19
- ```
20
- @mui/x-data-grid-premium — GridColDef, DataGridPremium
21
- src/db-collections/ - TanStack DB collections to get data
22
- @tanstack/react-db - useLiveQuery, useLiveSuspenseQuery
23
- src/server/actions/ - server functions and enums
24
- wcz-layout/components - EditableColumnHeader, Fullscreen
25
- wcz-layout/hooks - useTranslation
26
- ```
27
-
28
- ## Examples
29
-
30
- ```tsx
31
- // src/routes/<feature>s/index.tsx
32
- const { t } = useTranslation();
33
- const { confirm, alert } = useDialogs();
34
- const navigate = useNavigate();
35
- const [cellSelectionModel, setCellSelectionModel] = useState<GridCellSelectionModel>({});
36
-
37
- const { data, isLoading } = useLiveQuery((q) =>
38
- q.from({ feature: featureCollection }).orderBy(({ feature }) => feature.name, "asc"),
39
- );
40
-
41
- const columns: Array<GridColDef<Feature>> = [
42
- {
43
- field: "name",
44
- headerName: t("Feature.Name"),
45
- width: 200,
46
- editable: true,
47
- renderHeader: EditableColumnHeader,
48
- },
49
- {
50
- field: "status",
51
- headerName: t("Feature.Status"),
52
- width: 200,
53
- type: "singleSelect",
54
- valueOptions: featureStatusEnum.enumValues.map((status) => ({
55
- value: status,
56
- label: t(`FeatureStatus.${status}`),
57
- })),
58
- },
59
- ];
60
-
61
- const handleOnDelete = createOptimisticAction<Array<string>>({
62
- onMutate: (ids) => {
63
- ids.forEach((id) => {
64
- featureCollection.delete(id);
65
- });
66
- },
67
- mutationFn: async (ids) => {
68
- deleteFeatures({ data: ids });
69
- await featureCollection.utils.refetch();
70
- },
71
- });
72
-
73
- return (
74
- <Fullscreen>
75
- <DataGridPremium
76
- rows={data}
77
- columns={columns}
78
- showToolbar
79
- loading={isLoading}
80
- ignoreDiacritics
81
- onRowDoubleClick={({ row }) => navigate({ to: "/features/$id", params: { id: row.id } })}
82
- cellSelection
83
- disableRowSelectionOnClick
84
- cellSelectionModel={cellSelectionModel}
85
- onCellSelectionModelChange={(newModel) => setCellSelectionModel(newModel)}
86
- slots={{ toolbar: DataGridToolbar }}
87
- slotProps={{
88
- toolbar: {
89
- title: t("Feature.Features"),
90
- actions: [
91
- <Tooltip key="create" title={t("Create")}>
92
- <RouterIconButton to="/features/create">
93
- <Add fontSize="small" />
94
- </RouterIconButton>
95
- </Tooltip>,
96
- Object.keys(cellSelectionModel).length === 1 && (
97
- <Tooltip key="edit" title={t("Edit")}>
98
- <RouterIconButton
99
- to="/features/edit/$id"
100
- params={{ id: Object.keys(cellSelectionModel)[0].toString() }}
101
- >
102
- <Edit fontSize="small" />
103
- </RouterIconButton>
104
- </Tooltip>
105
- ),
106
- Object.keys(cellSelectionModel).length > 0 && (
107
- <Tooltip key="delete" title={t("Delete")}>
108
- <IconButton
109
- onClick={async () => {
110
- const confirmed = await confirm(
111
- t("DeleteConfirmation", { count: Object.keys(cellSelectionModel).length }),
112
- );
113
- if (confirmed) {
114
- try {
115
- const transaction = handleOnDelete(
116
- Object.keys(cellSelectionModel).map((id) => id.toString()),
117
- );
118
- await transaction.isPersisted.promise;
119
- setCellSelectionModel({});
120
- } catch (error) {
121
- if (error instanceof Error) await alert(error.message);
122
- }
123
- }
124
- }}
125
- >
126
- <Badge
127
- badgeContent={Object.keys(cellSelectionModel).length}
128
- invisible={Object.keys(cellSelectionModel).length <= 1}
129
- color="error"
130
- >
131
- <Delete fontSize="small" />
132
- </Badge>
133
- </IconButton>
134
- </Tooltip>
135
- ),
136
- ],
137
- },
138
- }}
139
- />
140
- </Fullscreen>
141
- );
142
- ```
1
+ ---
2
+ name: data-grid
3
+ description: "Use when: building or configuring MUI X DataGrid tables, editable columns, toolbar actions, row selection, or TanStack DB-backed grids."
4
+ ---
5
+
6
+ ## Rules
7
+
8
+ - Wrap DataGrid in `Fullscreen` when it is the only content on the page.
9
+ - Type columns as `Array<GridColDef<RowType>>` with the row interface.
10
+ - Use translation for all `headerName` values.
11
+ - Use `rows`, `columns`, `showToolbar`, `loading`, `ignoreDiacritics`, `cellSelection`, and `disableRowSelectionOnClick` on grids.
12
+ - For enums use `type: "singleSelect"` with `{ value, label }` options array used from enumObject.
13
+ - For editable columns, pair `editable: true` with `renderHeader: EditableColumnHeader`.
14
+ - Use `EditableColumnHeader`, and router button/grid action components from `wcz-layout/components` when they fit.
15
+ - Always set `valueFormatter: (value) => dayjs(value).format("L LT")` for columns type `dateTime` or `format("L")` for columns type `date`.
16
+
17
+ ## File Placement
18
+
19
+ ```
20
+ @mui/x-data-grid-premium — GridColDef, DataGridPremium
21
+ src/db-collections/ - TanStack DB collections to get data
22
+ @tanstack/react-db - useLiveQuery, useLiveSuspenseQuery
23
+ src/server/actions/ - server functions and enums
24
+ wcz-layout/components - EditableColumnHeader, Fullscreen
25
+ wcz-layout/hooks - useTranslation
26
+ ```
27
+
28
+ ## Examples
29
+
30
+ ```tsx
31
+ // src/routes/<feature>s/index.tsx
32
+ const { t } = useTranslation();
33
+ const { confirm, alert } = useDialogs();
34
+ const navigate = useNavigate();
35
+ const [cellSelectionModel, setCellSelectionModel] = useState<GridCellSelectionModel>({});
36
+
37
+ const { data, isLoading } = useLiveQuery((q) =>
38
+ q.from({ feature: featureCollection }).orderBy(({ feature }) => feature.name, "asc"),
39
+ );
40
+
41
+ const columns: Array<GridColDef<Feature>> = [
42
+ {
43
+ field: "name",
44
+ headerName: t("Feature.Name"),
45
+ width: 200,
46
+ editable: true,
47
+ renderHeader: EditableColumnHeader,
48
+ },
49
+ {
50
+ field: "status",
51
+ headerName: t("Feature.Status"),
52
+ width: 200,
53
+ type: "singleSelect",
54
+ valueOptions: featureStatusEnum.enumValues.map((status) => ({
55
+ value: status,
56
+ label: t(`FeatureStatus.${status}`),
57
+ })),
58
+ },
59
+ ];
60
+
61
+ const handleOnDelete = createOptimisticAction<Array<string>>({
62
+ onMutate: (ids) => {
63
+ ids.forEach((id) => {
64
+ featureCollection.delete(id);
65
+ });
66
+ },
67
+ mutationFn: async (ids) => {
68
+ deleteFeatures({ data: ids });
69
+ await featureCollection.utils.refetch();
70
+ },
71
+ });
72
+
73
+ return (
74
+ <Fullscreen>
75
+ <DataGridPremium
76
+ rows={data}
77
+ columns={columns}
78
+ showToolbar
79
+ loading={isLoading}
80
+ ignoreDiacritics
81
+ onRowDoubleClick={({ row }) => navigate({ to: "/features/$id", params: { id: row.id } })}
82
+ cellSelection
83
+ disableRowSelectionOnClick
84
+ cellSelectionModel={cellSelectionModel}
85
+ onCellSelectionModelChange={(newModel) => setCellSelectionModel(newModel)}
86
+ slots={{ toolbar: DataGridToolbar }}
87
+ slotProps={{
88
+ toolbar: {
89
+ title: t("Feature.Features"),
90
+ actions: [
91
+ <Tooltip key="create" title={t("Create")}>
92
+ <RouterIconButton to="/features/create">
93
+ <Add fontSize="small" />
94
+ </RouterIconButton>
95
+ </Tooltip>,
96
+ Object.keys(cellSelectionModel).length === 1 && (
97
+ <Tooltip key="edit" title={t("Edit")}>
98
+ <RouterIconButton
99
+ to="/features/edit/$id"
100
+ params={{ id: Object.keys(cellSelectionModel)[0].toString() }}
101
+ >
102
+ <Edit fontSize="small" />
103
+ </RouterIconButton>
104
+ </Tooltip>
105
+ ),
106
+ Object.keys(cellSelectionModel).length > 0 && (
107
+ <Tooltip key="delete" title={t("Delete")}>
108
+ <IconButton
109
+ onClick={async () => {
110
+ const confirmed = await confirm(
111
+ t("DeleteConfirmation", { count: Object.keys(cellSelectionModel).length }),
112
+ );
113
+ if (confirmed) {
114
+ try {
115
+ const transaction = handleOnDelete(
116
+ Object.keys(cellSelectionModel).map((id) => id.toString()),
117
+ );
118
+ await transaction.isPersisted.promise;
119
+ setCellSelectionModel({});
120
+ } catch (error) {
121
+ if (error instanceof Error) await alert(error.message);
122
+ }
123
+ }
124
+ }}
125
+ >
126
+ <Badge
127
+ badgeContent={Object.keys(cellSelectionModel).length}
128
+ invisible={Object.keys(cellSelectionModel).length <= 1}
129
+ color="error"
130
+ >
131
+ <Delete fontSize="small" />
132
+ </Badge>
133
+ </IconButton>
134
+ </Tooltip>
135
+ ),
136
+ ],
137
+ },
138
+ }}
139
+ />
140
+ </Fullscreen>
141
+ );
142
+ ```
@@ -48,7 +48,7 @@ try {
48
48
  // custom dialog
49
49
  const { open } = useDialogs();
50
50
 
51
- await open(EditFeatureDialog, id);
51
+ await open(EditFeatureDialog, { id });
52
52
 
53
53
  // custom dialog component
54
54
  interface Payload {
@@ -7,8 +7,8 @@ description: "Use when: displaying success, error, warning, or informational fee
7
7
 
8
8
  - Use `useNotification()` for lightweight non-blocking user feedback.
9
9
  - Always use translation; add new keys for feature-specific messages.
10
- - Notifications are automatically queued and stacked by the provider.
11
- - Always set `autoHideDuration` between 5000 and 10000 ms to prevent stale messages.
10
+ - Notifications are automatically queued by the provider and shown one at a time.
11
+ - `autoHideDuration` defaults to 5000 ms; override it (up to 10000 ms) only for messages that need more reading time.
12
12
  - Use `severity: "success" | "info" | "warning" | "error"` consistently with the outcome.
13
13
  - Use notifications for lightweight feedback; dialogs when the user must decide or acknowledge.
14
14
 
@@ -9,7 +9,8 @@ You can read about each service in the links below. Services are categorized as
9
9
 
10
10
  - **Client exports** — Contains `queryOptions` and `mutationOptions`; use for data fetching/mutations on the client with React Query.
11
11
  - **Server exports** — Server functions; prefer calling mutations inside other server functions or database transactions.
12
- - To read a step, open the linked file in the **File** column directly.
12
+ - All mutation options take `{ queryClient }` so they can invalidate related queries.
13
+ - To read about a service, open the linked file in the **File** column directly.
13
14
 
14
15
  ## Import Paths
15
16
 
@@ -245,11 +245,12 @@ const WithdrawApprovalSchema = z.object({
245
245
  ## Examples
246
246
 
247
247
  ```ts
248
- import { approvalQueryOptions } from "wcz-layout/data/client";
248
+ import { approvalQueryOptions, approveApprovalMutationOptions } from "wcz-layout/data/client";
249
249
  import { approveApproval } from "wcz-layout/data/server";
250
250
 
251
251
  // client
252
252
  const { data: approval } = useQuery(approvalQueryOptions({ id }));
253
+ const { mutate: approve } = useMutation(approveApprovalMutationOptions({ queryClient }));
253
254
 
254
255
  // server
255
256
  await approveApproval({ data: { id, result: "Approved", emailBody } });
@@ -44,11 +44,6 @@ const FileMetaSchema = z.object({
44
44
  createdDate: z.date(),
45
45
  });
46
46
 
47
- const FileActionsSchema = z.object({
48
- download: z.boolean().optional(),
49
- delete: z.boolean().optional(),
50
- });
51
-
52
47
  const GetFileMetasSchema = z.object({
53
48
  appName: z.string().min(1).max(255),
54
49
  subId: z.uuid(),
@@ -75,9 +70,12 @@ const UploadFileMetaSchema = z.object({
75
70
  ```ts
76
71
  import { fileMetasQueryOptions, uploadFileMutationOptions } from "wcz-layout/data/client";
77
72
 
73
+ const queryClient = useQueryClient();
74
+
78
75
  const { data: files = [] } = useQuery(fileMetasQueryOptions({ appName, subId }));
79
76
 
80
- // upload (isPending drives an indeterminate loading state — no % progress)
81
- const { mutate: upload, isPending } = useMutation(uploadFileMutationOptions());
82
- upload({ appName, subId, file });
77
+ // upload
78
+ const [progress, setProgress] = useState(0);
79
+ const { mutate: upload, isPending } = useMutation(uploadFileMutationOptions({ queryClient }));
80
+ upload({ appName, subId, file, setProgress });
83
81
  ```
@@ -8,4 +8,4 @@
8
8
  2. Run `git branch --show-current`.
9
9
  - **Not `master`** → run `git branch -M master`.
10
10
  - **Already `master`** → continue.
11
- 3. Run `npx vp config` to install the Git hooks (pre-commit checks + automatic version bump). It normally runs via the `prepare` script on install — running it again is a safe no-op.
11
+ 3. Run `npx vp config` to install the Git hooks (pre-commit checks + automatic version bump). Running it again is a safe no-op.
@@ -1,5 +1,7 @@
1
1
  # Database Setup
2
2
 
3
+ > Values written to `.env.local` here are temporary when the project uses Vault: the Vault Setup step moves them into the Vault `default` secret (only `DATABASE_URL` stays in `.env.local`, for drizzle-studio).
4
+
3
5
  ## User Input
4
6
 
5
7
  Ask: **"Do you already have a Postgres database created for this project? (yes/no)"**
@@ -51,9 +51,9 @@ Wait for "continue", then proceed to Part C.
51
51
 
52
52
  ## Part C — Credentials
53
53
 
54
- Ask: **"Please provide the CLIENT_ID and CLIENT_SECRET for your Entra ID application."**
54
+ Ask: **"Please provide the CLIENT_ID for your Entra ID application."**
55
55
 
56
56
  Once received:
57
57
 
58
- 1. Update `.env.local` → set `ENTRA_CLIENT_ID=<CLIENT_ID>`.
59
- 2. **CRITICAL**: Do **not** save `CLIENT_SECRET` to any file. Memorize it in context for use in the Vault Setup step only local development loads it from Vault at dev-server start.
58
+ 1. Update `.env.local` → set `ENTRA_CLIENT_ID=<CLIENT_ID>`. (If the project uses Vault, this value moves into the Vault `default` secret during the Vault Setup step.)
59
+ 2. **CRITICAL**: Never ask for, print, or save the `CLIENT_SECRET`. The user enters it themselves in the Vault Setup step — into the Vault `default` secret, or directly into `.env.local` when not using Vault.
@@ -1,50 +1,70 @@
1
1
  # Vault Setup
2
2
 
3
- Execute parts A B C sequentially. Pause for user input at each part.
3
+ Never print user-provided secret values into chat, files, or logs reference only the env keys and where each value lives. The one value the AI generates itself is `SESSION_SECRET`: a fresh 64-char hex string via `node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"`. The template ships only `VITE_MUI_LICENSE_KEY` in `.env`; all project configuration goes into the gitignored `.env.local` created in this step.
4
4
 
5
- Never print secret values into chat, files, or logs — reference only the env keys and where each value lives.
5
+ ## User Input
6
6
 
7
- ---
7
+ Ask: **"Do you use Vault for this project? (yes/no)"**
8
8
 
9
- ## Part A Default Secrets
9
+ - **Yes** Branch A.
10
+ - **No** → Branch B.
10
11
 
11
- Output:
12
+ ---
12
13
 
13
- > 1. Navigate to the Vault UI (the `VAULT_ADDRESS` value from `.env.local`, path `/ui/`) and log in.
14
- > 2. Find your project, open the "default" secret path, click 'Edit' (toggle 'View as JSON').
15
- > 3. Fill in a JSON object with the following keys, then save. When finished, type 'done'.
14
+ ## Branch A Vault
16
15
 
17
- The user fills the values; tell them where each one comes from:
16
+ ### Part 1 Vault secrets (user fills these in the Vault UI)
18
17
 
19
- | Key | Value source |
20
- | --------------------- | ----------------------------------------------------------- |
21
- | `DATABASE_URL` | `.env.local` |
22
- | `ENTRA_CLIENT_ID` | `.env.local` |
23
- | `ENTRA_CLIENT_SECRET` | the memorized secret from the Entra ID step |
24
- | `SESSION_SECRET` | generate a fresh 64-char hex string (never reuse a default) |
18
+ Output:
19
+
20
+ > 1. Navigate to your Vault UI and log in.
21
+ > 2. In your app's root path, create a secret named exactly `harborvault`: toggle 'JSON' mode, then copy-paste the JSON values from another app's `harborvault` secret and save.
22
+ > 3. Open your app's `default` secret, click 'Edit' (toggle 'View as JSON'), fill in these keys, then save. Provide user this in JSON to copy-paste — empty string values, except `SESSION_SECRET`, which you pre-fill with a freshly generated value:
23
+ >
24
+ > | Key | Value source |
25
+ > | ----------------------- | --------------------------------------------------------------- |
26
+ > | `ENTRA_CLIENT_ID` | the Entra ID step |
27
+ > | `ENTRA_TENANT_ID` | same for all Wistron apps — copy from another project |
28
+ > | `ENTRA_CLIENT_SECRET` | your Entra ID application |
29
+ > | `SESSION_SECRET` | already pre-filled in the JSON — generated by the AI |
30
+ > | `DATABASE_SCHEMA` | the database step |
31
+ > | `DATABASE_AUTO_MIGRATE` | `true` unless you manage migrations manually |
32
+ > | `DATABASE_URL` | the database step |
33
+ >
34
+ > When finished, type 'done'.
25
35
 
26
36
  Wait for "done".
27
37
 
28
- ---
38
+ ### Part 2 — Create `.env.local`
29
39
 
30
- ## Part BHarbor Vault Secret
40
+ Rewrite `.env.local` so it contains **only** the keys below. Never fill in secret values yourself keep values empty except `DATABASE_URL`, where you keep the value if the database step already set one:
31
41
 
32
- Output:
42
+ ```dotenv
43
+ VAULT_ADDRESS=
44
+ VAULT_SECRET_PATH=
45
+ VAULT_USERNAME=
46
+ VAULT_PASSWORD=
33
47
 
34
- > Now, go to the root path of your project in Vault and click 'Create secret'.
35
- >
36
- > 1. Name it exactly: `harborvault`
37
- > 2. Toggle 'JSON' mode.
38
- > 3. Go to another existing project in your Vault, copy the JSON values from its `harborvault` secret, and paste them into this new one, then save.
39
- >
40
- > Once finished, type 'done'.
48
+ DATABASE_URL=
49
+ ```
41
50
 
42
- Wait for "done".
51
+ Then ask the user to fill in the empty values directly in `.env.local` (not in chat) and type 'done'. Wait for "done".
43
52
 
44
53
  ---
45
54
 
46
- ## Part CLocal Vault Credentials
55
+ ## Branch BNo Vault
56
+
57
+ Create `.env.local` to contain exactly these keys — keep any values already set by earlier steps, fill `SESSION_SECRET` with a freshly generated value, and leave the rest empty:
58
+
59
+ ```dotenv
60
+ ENTRA_CLIENT_ID=
61
+ ENTRA_TENANT_ID=
62
+ ENTRA_CLIENT_SECRET=
63
+ SESSION_SECRET=<generated-64-char-hex>
47
64
 
48
- Ask: **"Please provide your Vault Username and Password so I can add them to your local environment."**
65
+ DATABASE_SCHEMA=
66
+ DATABASE_AUTO_MIGRATE=
67
+ DATABASE_URL=
68
+ ```
49
69
 
50
- Once received, add the keys `VAULT_USERNAME` and `VAULT_PASSWORD` with the provided values to `.env.local`. The dev server pulls the remaining secrets from Vault at startup — `VAULT_ADDRESS` and `VAULT_SECRET_PATH` are already set in `.env`.
70
+ Then ask the user to fill in the empty values directly in `.env.local` (not in chat) and wait for "done".