import { t } from "@lingui/core/macro" import { Trans } from "@lingui/react/macro" import { getPagePath } from "@nanostores/router" import { DialogDescription } from "@radix-ui/react-dialog" import { AlertOctagonIcon, BookIcon, ContainerIcon, DatabaseBackupIcon, FingerprintIcon, LayoutDashboard, LogsIcon, MailIcon, Server, SettingsIcon, UsersIcon, } from "lucide-react" import { memo, useEffect, useMemo } from "react" import { CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, } from "@/components/ui/command" import { isAdmin } from "@/lib/api" import { $systems } from "@/lib/stores" import { getHostDisplayValue, listen } from "@/lib/utils" import { $router, basePath, navigate, prependBasePath } from "./router" export default memo(function CommandPalette({ open, setOpen }: { open: boolean; setOpen: (open: boolean) => void }) { useEffect(() => { const down = (e: KeyboardEvent) => { if (e.key === "k" && (e.metaKey || e.ctrlKey)) { e.preventDefault() setOpen(!open) } } return listen(document, "keydown", down) }, [open, setOpen]) return useMemo(() => { const systems = $systems.get() const SettingsShortcut = ( Settings ) const AdminShortcut = ( Admin ) return ( Command palette {systems.length > 0 && ( <> {systems.map((system) => ( { navigate(getPagePath($router, "system", { id: system.id })) setOpen(false) }} > {system.name} {getHostDisplayValue(system)} ))} )} { navigate(basePath) setOpen(false) }} > Dashboard Page { navigate(getPagePath($router, "containers")) setOpen(false) }} > All Containers Page { navigate(getPagePath($router, "settings", { name: "general" })) setOpen(false) }} > Settings {SettingsShortcut} { navigate(getPagePath($router, "settings", { name: "notifications" })) setOpen(false) }} > Notifications {SettingsShortcut} { navigate(getPagePath($router, "settings", { name: "tokens" })) setOpen(false) }} > Tokens & Fingerprints {SettingsShortcut} { navigate(getPagePath($router, "settings", { name: "alert-history" })) setOpen(false) }} > Alert History {SettingsShortcut} { window.location.href = "https://beszel.dev/guide/what-is-beszel" }} > Documentation beszel.dev {isAdmin() && ( <> { setOpen(false) window.open(prependBasePath("/_/"), "_blank") }} > Users {AdminShortcut} { setOpen(false) window.open(prependBasePath("/_/#/logs"), "_blank") }} > Logs {AdminShortcut} { setOpen(false) window.open(prependBasePath("/_/#/settings/backups"), "_blank") }} > Backups {AdminShortcut} { setOpen(false) window.open(prependBasePath("/_/#/settings/mail"), "_blank") }} > SMTP settings {AdminShortcut} )} No results found. ) }, [open]) })