import { useEffect } from "react"; import { NavLink, Outlet } from "react-router-dom"; import { Cat, Globe } from "lucide-react"; import { useTranslation } from "react-i18next"; import * as SelectPrimitive from "@radix-ui/react-select"; import { cn } from "@/lib/utils"; import { useTier } from "@/lib/tier"; import { visibleSections } from "@/lib/nav"; import { Select, SelectContent, SelectItem } from "@/components/ui/select"; function LangToggle() { const { i18n } = useTranslation(); return ( ); } export function AppShell() { const { isAdmin } = useTier(); const { t, i18n } = useTranslation("navigation"); // Sections are derived purely from is_admin: User-Side always, Admin/SysAdmin // only for admins. isAdmin is fail-closed (false while /me loads or on failure), // so admin sections appear only once identity is confirmed. const sections = visibleSections(isAdmin); // Sync document metadata with the active language. useEffect(() => { document.documentElement.lang = i18n.language; document.title = t("common:page_title"); }, [i18n.language, t]); return (