"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
>
)
}