import { Link, useLocation } from "wouter"; import { LayoutDashboard, Wrench, BarChart3, LogIn, LogOut, ShieldCheck, AlertTriangle, Search } from "lucide-react"; import { useTranslation } from "react-i18next"; import { useAuth } from "@/hooks/use-auth"; import { useGetVersion, getGetVersionQueryKey } from "@workspace/api-client-react"; import { Button } from "@/components/ui/button"; import { ThemeToggle } from "@/components/theme-toggle"; import { CommandPalette, requestOpenCommandPalette } from "@/components/command-palette"; import { LanguageSwitcher } from "@/components/language-switcher"; import { UserMenu } from "@/components/user-menu"; import { Breadcrumbs } from "@/components/breadcrumbs"; import { HeaderSearch } from "@/components/header-search"; import { SidebarProvider, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInset, SidebarMenu, SidebarMenuButton, SidebarMenuItem, SidebarRail, SidebarTrigger, } from "@/components/ui/sidebar"; export function Layout({ children }: { children: React.ReactNode }) { const [location] = useLocation(); const { t } = useTranslation(); const { isAuthenticated, isLoading, isAdmin, login, logout } = useAuth(); const { data: version } = useGetVersion({ query: { queryKey: getGetVersionQueryKey(), staleTime: Infinity, retry: false }, }); const mainLinks = [ { href: "/", label: t("nav.home"), icon: LayoutDashboard }, { href: "/tools", label: t("nav.browseTools"), icon: Wrench }, { href: "/analytics", label: t("nav.analytics"), icon: BarChart3 }, ]; const adminLinks = [ { href: "/admin", label: t("nav.admin"), icon: ShieldCheck }, { href: "/admin/redundancy", label: t("nav.redundancy"), icon: AlertTriangle }, ]; function isActive(href: string) { return location === href || (href !== "/" && location.startsWith(href)); } return ( toolr {mainLinks.map((link) => { const Icon = link.icon; return ( {link.label} ); })} {isAdmin && ( {t("nav.admin")} {adminLinks.map((link) => { const Icon = link.icon; return ( {link.label} ); })} )}
toolr {version?.commitSha ? ( {version.version && version.version !== "dev" ? version.version : `sha-${version.commitSha.slice(0, 7)}`} ) : version?.version && version.version !== "dev" ? ( {version.version} ) : null}
toolr
{!isLoading && (
{isAuthenticated ? ( ) : ( )}
)}
{children}
); }