import { t } from "@lingui/core/macro" import { Trans } from "@lingui/react/macro" import { getPagePath } from "@nanostores/router" import { ContainerIcon, DatabaseBackupIcon, HardDriveIcon, LogOutIcon, LogsIcon, MenuIcon, PlusIcon, SearchIcon, ServerIcon, SettingsIcon, UserIcon, UsersIcon, } from "lucide-react" import { lazy, Suspense, useState } from "react" import { Button, buttonVariants } from "@/components/ui/button" import { DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu" import { isAdmin, isReadOnlyUser, logOut, pb } from "@/lib/api" import { cn, runOnce } from "@/lib/utils" import { AddSystemDialog } from "./add-system" import { LangToggle } from "./lang-toggle" import { Logo } from "./logo" import { ModeToggle } from "./mode-toggle" import { $router, basePath, Link, navigate, prependBasePath } from "./router" import { Tooltip, TooltipContent, TooltipTrigger } from "./ui/tooltip" const CommandPalette = lazy(() => import("./command-palette")) const isMac = navigator.platform.toUpperCase().indexOf("MAC") >= 0 export default function Navbar() { const [addSystemDialogOpen, setAddSystemDialogOpen] = useState(false) const [commandPaletteOpen, setCommandPaletteOpen] = useState(false) const AdminLinks = AdminDropdownGroup() const systemTranslation = t`System` return (
import("@/components/routes/home"))} > {/* mobile menu */}
import("@/components/routes/settings/general")} className="ms-3" aria-label="Open Menu" > {pb.authStore.record?.email} navigate(getPagePath($router, "containers"))} className="flex items-center" > All Containers navigate(getPagePath($router, "smart"))} className="flex items-center"> S.M.A.R.T. navigate(getPagePath($router, "settings", { name: "general" }))} className="flex items-center" > Settings {isAdmin() && ( Admin {AdminLinks} )} { setAddSystemDialogOpen(true) }} > Add {{ foo: systemTranslation }} Log Out
{/* desktop nav */} {/** biome-ignore lint/a11y/noStaticElementInteractions: ignore */}
import("@/components/routes/settings/general")} > All Containers S.M.A.R.T. Settings {pb.authStore.record?.email} {isAdmin() && ( <> {AdminLinks} )} Log Out
) } const Kbd = ({ children }: { children: React.ReactNode }) => ( {children} ) function AdminDropdownGroup() { return ( Users Systems Logs Backups ) }