"use client" import * as React from "react" import { useRouter,usePathname } from "next/navigation" import { type DialogProps } from "@radix-ui/react-dialog" import { Circle, File, Laptop, Moon, Sun } from "lucide-react" import { useTheme } from "next-themes" import { MenuSection, mainNav, additionalNav, MenuItem, mainNavVendor, additionalNavVendor } from "@/config/menuConfig"; import { cn } from "@/lib/utils" import { Button } from "@/components/ui/button" import { CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, } from "@/components/ui/command" import { DialogTitle } from "@/components/ui/dialog" 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() }, []) const pathname = usePathname(); const isPartnerRoute = pathname.includes("/partners"); const main = isPartnerRoute ? mainNavVendor : mainNav; const additional = isPartnerRoute ? additionalNavVendor : additionalNav; return ( <> Search Menu No results found. {main.map((group) => ( {group.items.map((navItem) => ( { runCommand(() => router.push(navItem.href as string)) }} >
{navItem.title}
))}
))} {additional // .filter((navitem) => !navitem.external) .map((navItem) => ( { runCommand(() => router.push(navItem.href as string)) }} > {navItem.title} ))} runCommand(() => setTheme("light"))}> Light runCommand(() => setTheme("dark"))}> Dark runCommand(() => setTheme("system"))}> System
) }