UNPKG

wcz-layout

Version:

1 lines 75.9 kB
{"version":3,"file":"index.mjs","names":["modeValue","label","languageCode","openMenu","anchorElement","open","closeMenu","env","children","open","key","navigation","collapsed","expanded","navigation","expanded","setExpanded","navigation","navigationOpen","newValue","children","previousStack","dialog","entry","key","Component","payload","promise","result","open","snackbarOrigin","children","children","navigation","options","AdapterDayjs","emotionCache","i18n","theme"],"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 type { FC } from \"react\";\nimport { OFFLINE_PHOTO_KEY, withOfflineFallback } from \"~/lib/auth/offline\";\nimport { getAccessToken } from \"~/lib/auth/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\nexport const UserAvatar: FC = () => {\n  const { data: photoUrl } = useQuery({\n    queryKey: [\"graph\", \"me\", \"photo\"],\n    queryFn: () => withOfflineFallback(OFFLINE_PHOTO_KEY, () => getProfilePhoto()),\n    staleTime: Infinity,\n    gcTime: Infinity,\n    networkMode: \"offlineFirst\",\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 { 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 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\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      </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 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, 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  Stack,\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              {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 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 { useQuery } from \"@tanstack/react-query\";\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 { 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\";\nimport { NotificationProvider } from \"./NotificationProvider\";\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: \"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            <NotificationProvider snackbarOrigin={options?.snackbarOrigin}>\n              <DialogsProvider>\n                <Layout navigation={navigation} options={options}>\n                  <Fragment key={activeI18n.language}>{children}</Fragment>\n                </Layout>\n              </DialogsProvider>\n            </NotificationProvider>\n          </LocalizationProvider>\n        </ThemeProvider>\n      </I18nextProvider>\n    </CacheProvider>\n  );\n};\n"],"mappings":"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"}