"use client"; import { Icon } from "@iconify/react"; import { useRouter } from "next/navigation"; import { useEffect, useMemo, useState } from "react"; import { CommandPalette, CommandPaletteContent, CommandPaletteEmpty, CommandPaletteFooter, CommandPaletteGroup, CommandPaletteInput, CommandPaletteItem, CommandPaletteList, CommandPaletteSeparator, CommandPaletteTrigger, } from "poyraz-ui/molecules"; import { COMMAND_PALETTE_GROUPS, type CommandPaletteItem as PaletteItem, } from "@/lib/command-palette-links"; export function SearchCommand() { const [open, setOpen] = useState(false); const router = useRouter(); const shortcut = useMemo(() => { if (typeof window === "undefined") return "Ctrl K"; const isMac = /(Mac|iPhone|iPad)/i.test(window.navigator.platform); return isMac ? "Cmd K" : "Ctrl K"; }, []); useEffect(() => { const onKeyDown = (event: KeyboardEvent) => { const isShortcut = (event.metaKey || event.ctrlKey) && event.key.toLowerCase() === "k"; if (!isShortcut) return; event.preventDefault(); setOpen((prev) => !prev); }; window.addEventListener("keydown", onKeyDown); return () => window.removeEventListener("keydown", onKeyDown); }, []); const handleCommandSelect = (item: PaletteItem) => { setOpen(false); if (item.external) { window.open(item.href, "_blank", "noopener,noreferrer"); return; } router.push(item.href); }; return ( No results found. {COMMAND_PALETTE_GROUPS.map((group, index) => (
{index > 0 && } {group.items.map((item) => ( } onClick={() => handleCommandSelect(item)} className="cursor-pointer" > {item.label} ))}
))}
Press {shortcut} to open quickly
); }