wcz-layout
Version:
1 lines • 115 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","names":["Avatar","useQuery","createServerFn","axios","FC","OFFLINE_PHOTO_KEY","withOfflineFallback","getAccessToken","User","getProfilePhoto","method","handler","Promise","accessToken","response","get","ArrayBuffer","responseType","headers","Authorization","Buffer","from","data","toString","error","isAxiosError","status","Error","initials","name","words","trim","split","filter","Boolean","last","length","at","toUpperCase","UserAvatar","user","t0","$","_c","$i","Symbol","for","t1","t2","provider","t3","queryKey","queryFn","_temp2","enabled","staleTime","Infinity","gcTime","networkMode","photoUrl","t4","t5","undefined","t6","width","xs","sm","height","fontSize","fontWeight","letterSpacing","pt","pl","backgroundColor","color","t7","t8","_temp","_c","_temp2","_temp","AccountCircle","ArrowBack","Brightness4","ChevronRight","DarkMode","Done","LightMode","Login","Logout","SettingsBrightness","Translate","Box","IconButton","List","ListItem","ListItemButton","ListItemIcon","ListItemText","ListSubheader","Popover","useColorScheme","rootRouteId","useMatch","FC","Fragment","useState","useTranslation","clearSessionSnapshot","UserAvatar","TabType","capitalize","value","charAt","toUpperCase","slice","ToolbarAccount","$","_c","$i","Symbol","for","anchorElement","setAnchorElement","tab","setTab","previousTab","setPreviousTab","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","t12","newTab","changeTab","t13","title","backgroundColor","display","alignItems","px","cursor","mr","backHeader","t14","t15","t16","t17","t18","t19","py","t20","t21","t22","find","m","t23","t24","t25","t26","t27","t28","t29","t30","t31","of","t32","t33","t34","map","t35","modeValue","Icon","languageCode","changeLanguage","finally","resolvedLanguage","width","xs","sm","height","vertical","horizontal","transition","onExited","name","employeeId","department","_temp2","_temp3","lng","location","href","returnTo","pathname","search","encodeURIComponent","_c","_temp","_temp2","_temp3","Box","Stack","Typography","FC","manifest","RouterIconButton","AppTitle","$","_c","$i","Symbol","for","t0","alignItems","flexGrow","t1","t2","display","xs","sm","t3","short_name","name","t4","_c","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","useRef","useState","MINI_WIDTH","isPageGroup","NavigationItem","NavigationPageGroup","NavigationPageItem","FC","FocusEvent","KeyboardEvent","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","disabled","isSidebarFullyExpanded","isSidebarFullyCollapsed","onClick","renderNested","sub","Array","onClose","NavigationListItem","undefined","miniOpen","setMiniOpen","groupButtonRef","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","onBlur","event","currentTarget","contains","relatedTarget","onKeyDown","event_0","key","current","focus","t12","py","overflowX","t13","params","search","exact","includeSearch","selected","t14","t15","listItem","t16","t17","word","charAt","toUpperCase","ListItemButton","_c","Avatar","_temp","ListItemIcon","Typography","Box","Paper","ListItemText","ListItem","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","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","nav","hidden","_c","_temp","List","ListSubheader","Divider","Box","NavigationList","FC","isHeader","Navigation","NavigationContentProps","navigation","collapsed","expanded","setExpanded","open","showPermanent","NavigationContent","t0","$","_c","$i","Symbol","for","t1","t2","t3","height","display","flexDirection","justifyContent","overflow","scrollbarGutter","overflowX","pt","t4","t5","undefined","t6","t7","_c","Box","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","_c","Close","Box","IconButton","useRouter","FC","useState","Trans","useTranslation","isTestEnv","TEAL","SKIN","INK","EDGE","Wisby","$","_c","$i","Symbol","for","t0","xs","sm","t1","t2","t3","t4","t5","transform","transformBox","transformOrigin","animation","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t6","t7","t8","t9","height","width","flexShrink","display","filter","t20","t21","t22","TestMascot","router","t","dismissed","setDismissed","origin","env","color","fontWeight","_temp3","fontSize","_temp2","_temp","theme","position","right","bottom","alignItems","pointerEvents","zIndex","tooltip","theme_0","mb","mr","px","py","maxWidth","borderRadius","border","borderColor","backgroundColor","palette","common","white","lineHeight","boxShadow","shadows","applyStyles","grey","content","borderRight","borderTop","theme_1","top","padding","_c","_temp3","_temp2","_temp","Menu","MenuOpen","AppBar","Box","CssBaseline","IconButton","InitColorSchemeScript","Stack","Toolbar","styled","useLocation","FC","ReactNode","Fragment","useEffect","useState","Platform","LayoutOptions","Navigation","ToolbarAccount","AppTitle","NavigationRail","TestMascot","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","t2","select","_temp2","pathname","showShell","t3","t4","t5","t6","t7","t8","height","maxHeight","overflow","width","t9","borderBottom","borderColor","boxShadow","_temp3","marginRight","appBarActions","mr","t10","newValue_0","newValue","t11","flexGrow","flexDirection","minWidth","t12","t13","flex","position","t14","t15","t16","item","hidden","location","previous","_c","_temp","_temp2","Menu","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","useEventCallback","createCache","CacheProvider","Theme","ThemeProvider","useQuery","LocalizationProvider","AdapterDayjs","dayjs","i18n","LanguageDetector","FC","ReactNode","Fragment","useEffect","I18nextProvider","initReactI18next","useTranslation","resources","z","Layout","userQueryOptions","LayoutOptions","Navigation","DialogsProvider","YEAR_IN_SECONDS","LANGUAGE_COOKIE","normalizeLocale","locale","replace","toLowerCase","zodLocales","Map","Object","entries","core","locales","map","createLocale","setLocale","language","baseLanguage","split","get","en","config","startsWith","use","init","lng","document","documentElement","lang","fallbackLng","supportedLngs","keys","detection","caches","interpolation","escapeValue","resolvedLanguage","on","cookie","ProvidersProps","options","navigation","theme","children","LayoutProvider","t0","$","_c","$i","Symbol","for","t1","key","emotionCache","activeI18n","t2","_temp","t3","_temp2","t4","t5","t6","t7","changeLanguage","navigator","serviceWorker","register","_c","createIsomorphicFn","i18n","setLanguageFromRequest","server","Promise","getCookie","getRequestHeader","accepted","split","map","part","trim","codes","filter","code","language","services","languageUtils","getBestMatchFromCodes","changeLanguage","client"],"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/TestMascot.tsx","../src/components/core/Layout.tsx","../src/providers/DialogsProvider.tsx","../src/providers/LayoutProvider.tsx","../src/lib/language.ts"],"sourcesContent":["import { Avatar } from \"@mui/material\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport { createServerFn } from \"@tanstack/react-start\";\nimport axios from \"axios\";\nimport type { FC } from \"react\";\nimport { OFFLINE_PHOTO_KEY, withOfflineFallback } from \"~/lib/auth/offline\";\nimport { getAccessToken } from \"~/lib/auth/tokens\";\nimport type { User } from \"~/models/User\";\n\nconst getProfilePhoto = createServerFn({ method: \"GET\" }).handler(async (): Promise<string> => {\n const accessToken = await getAccessToken(\"graph\");\n try {\n const response = await axios.get<ArrayBuffer>(\n \"https://graph.microsoft.com/v1.0/me/photos/240x240/$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 (error) {\n if (axios.isAxiosError(error) && error.response?.status === 404) return \"\";\n throw new Error(\"Failed to fetch profile photo\");\n }\n});\n\nconst initials = (name: string): string => {\n const words = name.trim().split(/\\s+/).filter(Boolean);\n const last = words.length > 1 ? (words.at(-1) ?? \"\") : \"\";\n return `${words[0]?.[0] ?? \"\"}${last[0] ?? \"\"}`.toUpperCase();\n};\n\nexport const UserAvatar: FC<{ user: User }> = ({ user }) => {\n const { data: photoUrl } = useQuery({\n queryKey: [\"graph\", \"me\", \"photo\"],\n queryFn: () => withOfflineFallback(OFFLINE_PHOTO_KEY, () => getProfilePhoto()),\n enabled: user.provider === \"entra\",\n staleTime: Infinity,\n gcTime: Infinity,\n networkMode: \"offlineFirst\",\n });\n\n return (\n <Avatar\n alt={user.name}\n src={photoUrl || undefined}\n sx={{\n width: { xs: 32, sm: 40 },\n height: { xs: 32, sm: 40 },\n fontSize: 16,\n fontWeight: 500,\n letterSpacing: \"0.06em\",\n pt: \"2px\",\n pl: \"0.06em\",\n backgroundColor: \"primary.main\",\n color: \"primary.contrastText\",\n }}\n >\n {initials(user.name)}\n </Avatar>\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 Popover,\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 { clearSessionSnapshot } from \"~/lib/auth/offline\";\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 [previousTab, setPreviousTab] = useState<TabType>();\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 = () => setAnchorElement(undefined);\n\n const changeTab = (newTab: TabType) => () => {\n setPreviousTab(tab);\n setTab(newTab);\n };\n\n const backHeader = (title: string) => (\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\" autoFocus>\n <ArrowBack fontSize=\"small\" />\n </IconButton>{\" \"}\n {title}\n </ListSubheader>\n );\n\n const settings = (\n <List\n subheader={\n <ListSubheader sx={{ backgroundColor: \"transparent\" }}>\n {t(\"Layout.Settings\")}\n </ListSubheader>\n }\n >\n <ListItemButton\n onClick={changeTab(\"theme\")}\n autoFocus={previousTab === \"theme\"}\n sx={{ py: 0.3 }}\n >\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\n onClick={changeTab(\"language\")}\n autoFocus={previousTab === \"language\"}\n sx={{ py: 0.3 }}\n >\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 subheader={backHeader(t(\"Layout.Appearance\"))}>\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 aria-current={mode === modeValue || undefined}\n >\n <ListItemIcon>\n <Icon />\n </ListItemIcon>\n <ListItemText primary={label} />\n {mode === modeValue && <Done fontSize=\"small\" />}\n </ListItemButton>\n ))}\n </List>\n );\n\n const language = (\n <List subheader={backHeader(t(\"Layout.Language\"))}>\n {supportedLanguages.map((languageCode) => (\n <ListItemButton\n key={languageCode}\n onClick={() => i18n.changeLanguage(languageCode).finally(() => closeMenu())}\n selected={i18n.resolvedLanguage === languageCode}\n aria-current={i18n.resolvedLanguage === languageCode || undefined}\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\n size=\"small\"\n edge=\"end\"\n onClick={openMenu}\n aria-label=\"Account\"\n aria-expanded={open}\n >\n {user ? (\n <UserAvatar user={user} />\n ) : (\n <AccountCircle sx={{ width: { xs: 32, sm: 40 }, height: { xs: 32, sm: 40 } }} />\n )}\n </IconButton>\n\n <Popover\n anchorEl={anchorElement}\n open={open}\n onClose={closeMenu}\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\n slotProps={{\n transition: {\n onExited: () => {\n setTab(\"settings\");\n setPreviousTab(undefined);\n },\n },\n }}\n >\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\n onClick={() => {\n clearSessionSnapshot();\n location.href = \"/auth/logout\";\n }}\n >\n <ListItemIcon>\n <Logout color=\"error\" />\n </ListItemIcon>\n <ListItemText primary={t(\"Layout.Logout\")} />\n </ListItemButton>\n </Fragment>\n ) : (\n <ListItemButton\n onClick={() => {\n const returnTo = location.pathname + location.search;\n location.href = `/auth/login?returnTo=${encodeURIComponent(returnTo)}`;\n }}\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 </Popover>\n </Fragment>\n );\n};\n","import { Box, Stack, Typography } from \"@mui/material\";\nimport type { FC } from \"react\";\nimport { manifest } from \"virtual:wcz-layout\";\nimport { RouterIconButton } from \"~/components/router/RouterIconButton\";\n\nexport const AppTitle: FC = () => {\n return (\n <Stack direction=\"row\" spacing={1} sx={{ alignItems: \"center\", flexGrow: 1 }}>\n <RouterIconButton to=\"/\" size=\"small\" aria-label=\"Go to home page\">\n <img src=\"/favicon-32x32.png\" alt=\"\" width={32} height={32} />\n </RouterIconButton>\n <Typography variant=\"h6\" component=\"div\">\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 </Stack>\n );\n};\n","import type { 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, useRef, useState } from \"react\";\nimport { MINI_WIDTH } from \"./NavigationRail\";\nimport { isPageGroup } from \"~/models/Navigation\";\nimport type { NavigationItem, NavigationPageGroup, NavigationPageItem } from \"~/models/Navigation\";\nimport type { FC, FocusEvent, KeyboardEvent, 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 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 disabled,\n collapsed,\n isSidebarFullyExpanded = true,\n isSidebarFullyCollapsed,\n onClick,\n renderNested,\n onClose,\n}) => {\n const [miniOpen, setMiniOpen] = useState(false);\n const groupButtonRef = useRef<HTMLDivElement>(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 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: () => setMiniOpen(true),\n onMouseLeave: () => setMiniOpen(false),\n onBlur: (event: FocusEvent<HTMLLIElement>) => {\n if (!event.currentTarget.contains(event.relatedTarget)) setMiniOpen(false);\n },\n onKeyDown: (event: KeyboardEvent<HTMLLIElement>) => {\n if (event.key !== \"Escape\" || !miniOpen) return;\n setMiniOpen(false);\n groupButtonRef.current?.focus();\n },\n }\n : {})}\n sx={{ py: 0, px: 1, overflowX: \"hidden\" }}\n >\n {groupItem ? (\n <StyledNavButton\n {...buttonProps}\n ref={groupButtonRef}\n aria-expanded={collapsed ? miniOpen : !!isOpen}\n onClick={shouldJustExpand ? () => onClick?.(item) : () => setMiniOpen(true)}\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 activeOptions={{ exact: true, includeSearch: false }}\n activeProps={{ selected: true }}\n onClick={onClose}\n sx={[buttonProps.sx, routerButtonSx]}\n >\n {buttonContent}\n </RouterListItemButton>\n )}\n\n {groupItem && collapsed ? (\n <MiniPopover open={miniOpen}>{renderNested?.(item.children)}</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 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 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 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\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 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 { 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 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 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 Close from \"@mui/icons-material/Close\";\nimport { Box, IconButton } from \"@mui/material\";\nimport { useRouter } from \"@tanstack/react-router\";\nimport type { FC } from \"react\";\nimport { useState } from \"react\";\nimport { Trans, useTranslation } from \"react-i18next\";\nimport { isTestEnv } from \"~/lib/utils\";\n\nconst TEAL = \"#1ec8d3\";\nconst SKIN = \"#fbe3d1\";\nconst INK = \"#17171a\";\nconst EDGE = \"#d3dde2\";\n\n/**\n * Wisby, drawn inline rather than loaded from `public/`: this package ships as\n * `dist` only, so a file asset would have to be copied into every consuming\n * app. Approximated from the brand artwork — swap the whole <svg> when we have\n * the official file, nothing outside this component reads its internals.\n *\n * White parts carry an explicit stroke: the AppBar is transparent over paper,\n * so an unstroked white suit disappears in light mode.\n */\nconst Wisby: FC = () => (\n <Box\n component=\"svg\"\n viewBox=\"0 0 100 116\"\n aria-hidden\n sx={{\n height: { xs: 96, sm: 140 },\n width: \"auto\",\n flexShrink: 0,\n display: \"block\",\n filter: \"drop-shadow(0 4px 10px rgba(0,0,0,.22))\",\n animation: \"wisbyBob 3.2s ease-in-out infinite\",\n \"@keyframes wisbyBob\": {\n \"0%, 100%\": { transform: \"translateY(0)\" },\n \"50%\": { transform: \"translateY(-2.5px)\" },\n },\n // One hand waves, like a person would. The pivot is his right shoulder in\n // viewBox units — under the torso, so the joint is never seen moving. The\n // swing is outward-only: rotating inward would push the fingers behind\n // the helmet glass, which is drawn after the arm and would swallow them.\n \"@keyframes wisbyWave\": {\n \"0%, 100%\": { transform: \"rotate(0deg)\" },\n \"50%\": { transform: \"rotate(-12deg)\" },\n },\n \"@keyframes wisbyBlink\": {\n \"0%, 92%, 100%\": { transform: \"scaleY(1)\" },\n \"95%\": { transform: \"scaleY(.1)\" },\n },\n \"& .wisby-wave-arm\": {\n transformBox: \"view-box\",\n transformOrigin: \"42.5px 78px\",\n animation: \"wisbyWave 1.3s ease-in-out infinite\",\n },\n \"& .wisby-eye\": {\n transformBox: \"fill-box\",\n transformOrigin: \"50% 50%\",\n animation: \"wisbyBlink 5.5s ease-in-out infinite\",\n },\n \"@media (prefers-reduced-motion: reduce)\": {\n animation: \"none\",\n \"& .wisby-wave-arm, & .wisby-eye\": { animation: \"none\" },\n },\n }}\n >\n {/* ground shadow — invisible on dark, subtle on light */}\n <ellipse cx=\"50\" cy=\"109.6\" rx=\"15.5\" ry=\"2.4\" fill=\"#000\" opacity=\".07\" />\n\n {/* leaf sprout, behind the helmet */}\n <path d=\"M62.5 16.6q6-11.8 16.8-9.6Q80.4 18.4 62.5 16.6z\" fill=\"#56a832\" />\n <path\n d=\"M64.8 15.4q6.8-3.4 12-6.8\"\n stroke=\"#3d7c22\"\n strokeWidth=\"1.1\"\n strokeLinecap=\"round\"\n fill=\"none\"\n />\n\n {/* boots */}\n <path\n d=\"M37 108.6c0-9.8 12.4-9.8 12.4 0v.6a1.4 1.4 0 0 1-1.4 1.4H38.4a1.4 1.4 0 0 1-1.4-1.4z\"\n fill=\"#fff\"\n stroke={EDGE}\n strokeWidth=\".8\"\n />\n <path\n d=\"M50.6 108.6c0-9.8 12.4-9.8 12.4 0v.6a1.4 1.4 0 0 1-1.4 1.4H52a1.4 1.4 0 0 1-1.4-1.4z\"\n fill=\"#fff\"\n stroke={EDGE}\n strokeWidth=\".8\"\n />\n <rect x=\"37\" y=\"107.2\" width=\"12.4\" height=\"3.4\" rx=\"1.5\" fill={TEAL} />\n <rect x=\"50.6\" y=\"107.2\" width=\"12.4\" height=\"3.4\" rx=\"1.5\" fill={TEAL} />\n <rect x=\"40.4\" y=\"102.4\" width=\"5.4\" height=\"1.3\" rx=\".65\" fill={TEAL} />\n <rect x=\"40.4\" y=\"104.8\" width=\"5.4\" height=\"1.3\" rx=\".65\" fill={TEAL} />\n <rect x=\"54\" y=\"102.4\" width=\"5.4\" height=\"1.3\" rx=\".65\" fill={TEAL} />\n <rect x=\"54\" y=\"104.8\" width=\"5.4\" height=\"1.3\" rx=\".65\" fill={TEAL} />\n\n {/* legs */}\n <rect x=\"43.4\" y=\"86\" width=\"3.8\" height=\"17\" rx=\"1.9\" fill={TEAL} />\n <rect x=\"52.8\" y=\"86\" width=\"3.8\" height=\"17\" rx=\"1.9\" fill={TEAL} />\n\n {/*\n His right arm (screen left) waves. Arm and glove are ONE group, so the\n wave can only ever move them together — two elements sharing an animation\n name drift apart. The arm is stroked twice (edge under white) so the suit\n reads on a light background, and ends inside the palm so the joint is\n hidden by the glove drawn on top of it. Both arms sit before the torso, so\n the torso covers each shoulder and the pivot is never seen moving.\n */}\n <g className=\"wisby-wave-arm\">\n <path\n d=\"M42.5 78c-5 1-10-1-17-5\"\n stroke={EDGE}\n strokeWidth=\"7\"\n strokeLinecap=\"round\"\n fill=\"none\"\n />\n <path\n d=\"M42.5 78c-5 1-10-1-17-5\"\n stroke=\"#fff\"\n strokeWidth=\"5.4\"\n strokeLinecap=\"round\"\n fill=\"none\"\n />\n {/* tilted toward the forearm axis — square-on it reads as a broken wrist */}\n <g transform=\"translate(24.5 72) rotate(-20) scale(1.2)\">\n <rect x=\"-4.05\" y=\"-8.6\" width=\"1.9\" height=\"6.2\" rx=\".95\" fill={TEAL} />\n <rect x=\"-2\" y=\"-9.6\" width=\"1.9\" height=\"7.2\" rx=\".95\" fill={TEAL} />\n <rect x=\".05\" y=\"-9.2\" width=\"1.9\" height=\"6.8\" rx=\".95\" fill={TEAL} />\n <rect x=\"2.1\" y=\"-8\" width=\"1.9\" height=\"5.6\" rx=\".95\" fill={TEAL} />\n <rect\n x=\"-6.4\"\n y=\"-4.6\"\n width=\"1.9\"\n height=\"5.4\"\n rx=\".95\"\n fill={TEAL}\n transform=\"rotate(-32 -5.45 -1.9)\"\n />\n <rect x=\"-4.6\" y=\"-3.4\" width=\"9.2\" height=\"7.6\" rx=\"3.2\" fill={TEAL} />\n <path\n d=\"M0 2.5c-2.7-1.9-3.4-3.1-2.7-4.1a1.65 1.65 0 0 1 2.7.2 1.65 1.65 0 0 1 2.7-.2c.7 1 0 2.2-2.7 4.1z\"\n fill=\"#fff\"\n />\n </g>\n </g>\n {/*\n His left arm hangs relaxed. The resting hand is a mitten with a thumb\n bump, not the splayed glove: five fingers pointing at the floor reads as\n jazz hands, and the palm heart would be upside down. Back of the hand\n faces out, which is what a hand at rest actually shows.\n */}\n <g>\n <path\n d=\"M57.5 78c4.5 2 8 5 10.5 12\"\n stroke={EDGE}\n strokeWidth=\"7\"\n strokeLinecap=\"round\"\n fill=\"none\"\n />\n <path\n d=\"M57.5 78c4.5 2 8 5 10.5 12\"\n stroke=\"#fff\"\n strokeWidth=\"5.4\"\n strokeLinecap=\"round\"\n fill=\"none\"\n />\n <circle cx=\"64.3\" cy=\"88\" r=\"1.9\" fill={TEAL} />\n <rect x=\"63.6\" y=\"84.7\" width=\"8.8\" height=\"11.6\" rx=\"4.4\" fill={TEAL} />\n </g>\n\n {/* torso */}\n <rect\n x=\"40.6\"\n y=\"72\"\n width=\"18.8\"\n height=\"20\"\n rx=\"7\"\n fill=\"#fff\"\n stroke={EDGE}\n strokeWidth=\".9\"\n />\n <rect x=\"46.4\" y=\"70\" width=\"7.2\" height=\"3\" rx=\"1.2\" fill=\"#7ea4ac\" />\n\n {/* chest reactor */}\n <circle cx=\"50\" cy=\"79.6\" r=\"5\" fill=\"#eaf7fa\" />\n <circle cx=\"50\" cy=\"79.6\" r=\"3.6\" fill=\"#7fdfe8\" />\n <circle cx=\"50\" cy=\"79.6\" r=\"2.4\" fill=\"#0ec6d4\" />\n\n {/* helmet glass */}\n <circle cx=\"50\" cy=\"42.4\" r=\"29.4\" fill=\"#e9f6fa\" opacity=\".6\" />\n <circle cx=\"50\" cy=\"42.4\" r=\"27.6\" fill=\"#f8fcfd\" stroke=\"#e0eff4\" strokeWidth=\"1.4\" />\n\n {/* head */}\n <circle cx=\"50\" cy=\"46\" r=\"24\" fill={SKIN} />\n <path\n d=\"M27 39a24 24 0 0 1 46 0L68.4 33.5 63.8 39 59.2 33.5 54.6 39 50 33.5 45.4 39 40.8 33.5 36.2 39 31.6 33.5z\"\n fill={TEAL}\n />\n\n {/* face */}\n <path\n d=\"M36.4 41.6q3.6-3 7.6-.6\"\n stroke={INK}\n strokeWidth=\"2.6\"\n strokeLinecap=\"round\"\n fill=\"none\"\n />\n <path d=\"M56 41q4-2.4 7.6.6\" stroke={INK} strokeWidth=\"2.6\" strokeLinecap=\"round\" fill=\"none\" />\n <ellipse className=\"wisby-eye\" cx=\"40.4\" cy=\"48.4\" rx=\"3.8\" ry=\"4.7\" fill={INK} />\n <ellipse className=\"wisby-eye\" cx=\"59.6\" cy=\"48.4\" rx=\"3.8\" ry=\"4.7\" fill={INK} />\n <circle cx=\"41.6\" cy=\"46.6\" r=\"1.3\" fill=\"#fff\" />\n <circle cx=\"60.8\" cy=\"46.6\" r=\"1.3\" fill=\"#fff\" />\n <ellipse cx=\"32.6\" cy=\"53\" rx=\"4.2\" ry=\"2.8\" fill=\"#f6b3a8\" opacity=\".9\" />\n <ellipse cx=\"67.4\" cy=\"53\" rx=\"4.2\" ry=\"2.8\" fill=\"#f6b3a8\" opacity=\".9\" />\n <path\n d=\"M44.8 57.4c3.4-1.6 7-1.6 10.4 0 0 4.8-2.4 6.6-5.2 6.6s-5.2-1.8-5.2-6.6z\"\n fill=\"#e0604c\"\n />\n\n {/* glass reflections, in front of the face */}\n <path d=\"M26.4 36q5-16.4 18.4-21.4-11.4 8.2-14.6 22.6z\" fill=\"#fff\" opacity=\".7\" />\n {/*\n Each glint lies on the helmet's tangent 28° down from the top, so it sits\n on the dome instead of reading as a flat row. Endpoints are mirrored about\n x=50: 36.6↔63.4 and 40.8↔59.2, at matching heights.\n */}\n <path\n d=\"M36.6 22.3 40.8 20M63.4 22.3 59.2 20\"\n stroke=\"#ffb020\"\n strokeWidth=\"2.6\"\n strokeLinecap=\"round\"\n />\n <circle cx=\"72\" cy=\"56\" r=\"1.2\" fill=\"#e53935\" />\n <circle cx=\"70.2\" cy=\"59.4\" r=\"1.2\" fill=\"#29b6d6\" />\n </Box>\n);\n\n/**\n * Replaces the old TEST chip. Dismissal is component state on purpose: it lasts\n * the session but a reload brings him back, so nobody permanently hides the\n * fact that they are not on production.\n */\nexport const TestMascot: FC = () => {\n const router = useRouter();\n const { t } = useTranslation();\n const [dismissed, setDismissed] = useState(false);\n\n if (dismissed || !isTestEnv(router.origin)) return null;\n\n return (\n <Box\n sx={(theme) => ({\n position: \"fixed\",\n right: { xs: 4, sm: 16 },\n bottom: 0,\n display: \"flex\",\n alignItems: \"flex-end\",\n // Never intercepts a click: the signal must not cost anyone a button.\n pointerEvents: \"none\",\n zIndex: theme.zIndex.tooltip,\n })}\n >\n <Box\n sx={(theme) => ({\n position: \"relative\",\n mb: { xs: 5, sm: 8 },\n mr: -1,\n px: 1.5,\n py: 1,\n maxWidth: 190,\n borderRadius: 2,\n border: \"1px solid\",\n // Tokens, not `theme.palette.…`: under `cssVariables` the palette\n // holds the default scheme's literal values, so scheme-aware colours\n // read here would bake in the light ones and stay dark on dark.\n // `common.white`/`grey` are the same in both schemes, so those are\n // safe to read directly — only the bubble's own fill needs a switch.\n borderColor: \"divider\",\n color: \"text.primary\",\n backgroundColor: theme.palette.common.white,\n fontSize: 13,\n fontWeight: 500,\n lineHeight: 1.35,\n boxShadow: theme.shadows[6],\n transformOrigin: \"100% 50%\",\n animation: \"wisbyTalk 5s ease-in-out infinite\",\n ...theme.applyStyles(\"dark\", { backgroundColor: theme.palette.grey[800] }),\n \"@keyframes wisbyTalk\": {\n \"0%, 86%, 100%\": { transform: \"scale(1)\" },\n \"91%\": { transform: \"scale(1.05)\" },\n \"95%\": { transform: \"scale(.985)\" },\n },\n \"@media (prefers-reduced-motion: reduce)\": { animation: \"none\" },\n // Tail: a rotated square showing two borders, so it reads as one\n // shape with the bubble instead of a triangle stuck to its side.\n \"&::after\": {\n content: '\"\"',\n position: \"absolute\",\n right: -5,\n bottom: 14,\n width: 9,\n height: 9,\n transform: \"rotate(45deg)\",\n borderRight: \"1px solid\",\n borderTop: \"1px solid\",\n borderColor: \"inherit\",\n backgroundColor: \"inherit\",\n },\n })}\n >\n <Trans\n t={t}\n i18nKey=\"Layout.TestEnvironment\"\n components={{\n env: <Box component=\"span\" sx={{ color: \"warning.main\", fontWeight: 700 }} />,\n }}\n />\n <IconButton\n size=\"small\"\n aria-label=\"Close\"\n onClick={() => setDismissed(true)}\n sx={(theme) => ({\n // Only the button takes clicks — the bubble stays see-through, so\n // it can never sit on top of a corner FAB and swallow it.\n pointerEvents: \"auto\",\n position: \"absolute\",\n top: -12,\n right: -12,\n padding: \"5px\",\n border: \"1px solid\",\n borderColor: \"divider\",\n color: \"text.primary\",\n backgroundColor: theme.palette.common.white,\n \"&:hover\": { backgroundColor: theme.palette.grey[100] },\n // Last, so its `&:hover` outranks the light one above — the other\n // way round, hovering in dark mode repainted the button with the\n // light hover colour and the whole control vanished.\n ...theme.applyStyles(\"dark\", {\n backgroundColor: theme.palette.grey[800],\n \"&:hover\": { backgroundColor: theme.palette.grey[700] },\n }),\n })}\n >\n <Close sx={{ fontSize: 14 }} />\n </IconButton>\n </Box>\n\n <Wisby />\n </Box>\n );\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 Stack,\n Toolbar,\n} from \"@mui/material\";\nimport { styled } from \"@mui/material/styles\";\nimport { useLocation } from \"@tanstack/react-router\";\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\";\nimport { TestMascot } from \"./TestMascot\";\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 pathname = useLocation({ select: (location) => location.pathname });\n const showShell = options?.showShell ?? pathname !== \"/login\";\n\n useEffect(() => {\n if (getInitialNavigationOpen()) setNavigationOpen(true);\n }, []);\n\n return (\n <Fragment>\n <InitColorSchemeScript />\n <CssBaseline />\n <TestMascot />\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=\"Navigation\"\n aria-expanded={navigationOpen}\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 {options?.appBarActions && (\n <Stack direction=\"row\" spacing={1} sx={{ alignItems: \"center\", mr: 1 }}>\n {options.appBarActions}\n </Stack>\n )}\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 createCache from \"@emotion/cache\";\nimport { CacheProvider } from \"@emotion/react\";\nimport type { Theme } from \"@mui/material\";\nimport { ThemeProvider } from \"@mui/material\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport { LocalizationProvider } from \"@mui/x-date-pickers\";\nimport { AdapterDayjs } from \"@mui/x-date-pickers/AdapterDayjs\";\nimport dayjs from \"dayjs\";\nimport i18n from \"i18next\";\nimport LanguageDetector from \"i18next-browser-languagedetector\";\nimport type { FC, ReactNode } from \"react\";\nimport { Fragment, useEffect } from \"react\";\nimport { I18nextProvider, initReactI18next, useTranslation } from \"react-i18next\";\nimport { resources } from \"virtual:wcz-layout\";\nimport z from \"zod\";\nimport { Layout } from \"~/components/core/Layout\";\nimport { userQueryOptions } from \"~/lib/auth/user\";\nimport type { LayoutOptions } from \"~/models/LayoutOptions\";\nimport type { Navigation } from \"~/models/Navigation\";\nimport { DialogsProvider } from \"./DialogsProvider\";\n\nconst YEAR_IN_SECONDS = 60 * 60 * 24 * 365;\nconst LANGUAGE_COOKIE = \"i18next\";\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]) => [\n normalizeLocale(locale),\n createLocale,\n ]),\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 keeps the previous locale when it ships no data for the language — fall back like zod.\n if (!dayjs.locale(language).startsWith(baseLanguage)) dayjs.locale(\"en\");\n};\n\ni18n\n .use(LanguageDetector)\n .use(initReactI18next)\n .init({\n resources,\n lng: (typeof document !== \"undefined\" && document.documentElement.lang) || \"en\",\n fallbackLng: \"en\",\n supportedLngs: Object.keys(resources),\n // `caches: []` on purpose: i18next persists whatever language it inits with,\n // which here is the pinned one — it would bury the user's actual choice.\n detection: { caches: [] },\n interpolation: { escapeValue: false },\n });\n\nsetLocale(i18n.resolvedLanguage ?? i18n.language);\n\ni18n.on(\"languageChanged\", (language) => {\n setLocale(language);\n if (typeof document !== \"undefined\")\n document.cookie = `${LANGUAGE_COOKIE}=${language};path=/;max-age=${YEAR_IN_SECONDS};SameSite=Lax`;\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 const { i18n: activeI18n } = useTranslation();\n\n useQuery(userQueryOptions);\n\n // Post-hydration: run the detector (cookie, then browser language) and switch.\n // No-op when it resolves to the language we already rendered.\n useEffect(() => {\n void i18n.changeLanguage();\n }, []);\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={activeI18n.language}>\n <DialogsProvider>\n <Layout navigation={navigation} options={options}>\n <Fragment key={activeI18n.language}>{children}</Fragment>\n </Layout>\n </DialogsProvider>\n </LocalizationProvider>\n </ThemeProvider>\n </I18nextProvider>\n </CacheProvider>\n );\n};\n","import { createIsomorphicFn } from \"@tanstack/react-start\";\nimport i18n from \"i18next\";\n\n/**\n * Server-renders the request's language — the `i18next` cookie the browser writes on every\n * switch, then `Accept-Language` — so `LayoutProvider`'s language-keyed page hydrates instead\n * of being rebuilt when the browser detects a language other than English. No-op in the browser,\n * where i18next detects the language itself.\n */\n// ponytail: one shared i18next instance per server (the shell, `t` and zod messages all read\n// it, so a per-request clone would not reach them): two requests in different languages at the\n// same moment can swap. The browser's post-hydration detection corrects that, with one rebuild.\nexport const setLanguageFromRequest = createIsomorphicFn()\n .server(async (): Promise<void> => {\n // Dynamic import keeps the SSR entry lazy (see `getAppSession`).\n const { getCookie, getRequestHeader } = await import(\"@tanstack/react-start/server\");\n const accepted = (getRequestHeader(\"accept-language\") ?? \"\")\n .split(\",\")\n .map((part) => part.split(\";\")[0].trim());\n const codes = [getCookie(\"i18next\"), ...accepted].filter((code): code is string => !!code);\n const language = i18n.services.languageUtils.getBestMatchFromCodes(codes) ?? \"en\";\n if (i18n.language !== language) await i18n.changeLanguage(language);\n })\n .client(async (): Promise<void> => {});\n"],"mappings":"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"}