"use client" import { Home, Languages, Moon, Sun, SunMoon } from "lucide-react" import { useServerData } from "@/app/context/server-data-context" import { CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, } from "@/components/ui/command" import { localeItems } from "@/i18n-metadata" import { setUserLocale } from "@/i18n/locale" import { useTranslations } from "next-intl" import { useTheme } from "next-themes" import { useRouter } from "next/navigation" import { useEffect, useState } from "react" export function DashCommand() { const [open, setOpen] = useState(false) const [search, setSearch] = useState("") const { data } = useServerData() const router = useRouter() const { setTheme } = useTheme() const t = useTranslations("DashCommand") useEffect(() => { const down = (e: KeyboardEvent) => { if (e.key === "k" && (e.metaKey || e.ctrlKey)) { e.preventDefault() setOpen((open) => !open) } } document.addEventListener("keydown", down) return () => document.removeEventListener("keydown", down) }, []) if (!data?.result) return null const sortedServers = data.result.sort((a, b) => { const displayIndexDiff = (b.display_index || 0) - (a.display_index || 0) if (displayIndexDiff !== 0) return displayIndexDiff return a.id - b.id }) // 添加语言切换快捷方式 const languageShortcuts = localeItems.map((item) => ({ keywords: ["language", "locale", item.code.toLowerCase()], icon: , label: item.name, action: () => setUserLocale(item.code), value: `language ${item.name.toLowerCase()} ${item.code}`, })) // 将语言快捷方式添加到现有的shortcuts数组中 const shortcuts = [ { keywords: ["home", "homepage"], icon: , label: t("Home"), action: () => router.push("/"), }, { keywords: ["light", "theme", "lightmode"], icon: , label: t("ToggleLightMode"), action: () => setTheme("light"), }, { keywords: ["dark", "theme", "darkmode"], icon: , label: t("ToggleDarkMode"), action: () => setTheme("dark"), }, { keywords: ["system", "theme", "systemmode"], icon: , label: t("ToggleSystemMode"), action: () => setTheme("system"), }, ...languageShortcuts, ].map((item) => ({ ...item, value: `${item.keywords.join(" ")} ${item.label}`, })) return ( <> {t("NoResults")} {sortedServers.map((server) => ( { router.push(`/server/${server.id}`) setOpen(false) }} > {server.online_status ? ( ) : ( )} {server.name} ))} {shortcuts.map((item) => ( { item.action() setOpen(false) }} > {item.icon} {item.label} ))} ) }