'use client' import { CircleIcon, LaptopIcon, MoonIcon, SunIcon } from 'lucide-react' import { useTheme } from 'next-themes' import { useRouter } from 'next/navigation' import * as React from 'react' import { COMMAND_ITEMS } from '@/config/docs' import { cn } from '@/lib/utils' import { Button, CommandDialog, CommandEmpty_Shadcn_, CommandGroup_Shadcn_, CommandInput_Shadcn_, CommandItem_Shadcn_, CommandList_Shadcn_, CommandSeparator_Shadcn_, DialogProps, } from 'ui' export function CommandMenu({ ...props }: DialogProps) { const router = useRouter() const [open, setOpen] = React.useState(false) const { setTheme } = useTheme() React.useEffect(() => { const down = (e: KeyboardEvent) => { if ((e.key === 'k' && (e.metaKey || e.ctrlKey)) || e.key === '/') { if ( (e.target instanceof HTMLElement && e.target.isContentEditable) || e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement || e.target instanceof HTMLSelectElement ) { return } e.preventDefault() setOpen((open) => !open) } } document.addEventListener('keydown', down) return () => document.removeEventListener('keydown', down) }, []) const runCommand = React.useCallback((command: () => unknown) => { setOpen(false) command() }, []) return ( <> No results found. {COMMAND_ITEMS.map((navItem) => ( runCommand(() => router.push(navItem.href as string))} >
{navItem.label}
))}
runCommand(() => setTheme('light'))}> Light runCommand(() => setTheme('dark'))}> Dark runCommand(() => setTheme('classic-dark'))}> Classic dark runCommand(() => setTheme('system'))}> System
) }