"use client"
import { useCallback, useRef, useState } from "react"
import { useNavigate } from "react-router-dom"
import {
Command,
CommandEmpty,
CommandGroup,
CommandInput,
CommandItem,
CommandList,
} from "@/components/ui/command"
import {
Dialog,
DialogContent,
DialogDescription,
DialogHeader,
DialogTitle,
} from "@/components/ui/dialog"
import { Button } from "@/components/ui/button"
import { Kbd } from "@/components/ui/kbd"
import { useAskLeo } from "@/components/ask-leo-context"
import { useCommandMenuConfig } from "@/contexts/command-menu-context"
import type { CommandMenuItem } from "@/lib/command-menu-config"
function CommandMenuItemRow({
item,
onLink,
onLeo,
}: {
item: CommandMenuItem
onLink: (href: string) => void
onLeo: (prompt: string) => void
}) {
const isLeo = Boolean(item.askLeoPrompt)
const iconClass = isLeo
? "fa-duotone fa-solid fa-star-christmas w-5 shrink-0 text-center text-brand"
: `${item.icon ?? "fa-light fa-arrow-right"} w-5 shrink-0 text-center`
return (
{
if (item.askLeoPrompt) onLeo(item.askLeoPrompt)
else if (item.href) onLink(item.href)
}}
>
{item.label}
)
}
export function CommandMenuContent({
open,
onOpenChange,
}: {
open: boolean
onOpenChange: (open: boolean) => void
}) {
const config = useCommandMenuConfig()
const [inputValue, setInputValue] = useState("")
const searchInputRef = useRef(null)
const navigate = useNavigate()
const { openWithPrompt } = useAskLeo()
const close = useCallback(() => {
onOpenChange(false)
setInputValue("")
}, [onOpenChange])
const handleLink = useCallback(
(href: string) => {
close()
navigate(href)
},
[close, navigate],
)
const sendLeoSuggestion = useCallback(
(prompt: string) => {
close()
openWithPrompt(prompt)
},
[close, openWithPrompt],
)
return (
)
}