"use client"; import { ArrowUpIcon, ArrowDownIcon, CommandIcon, FileIcon, SearchIcon, CornerDownLeftIcon } from "lucide-react"; import { Input } from "@/components/ui/input"; import { Dialog, DialogContent, DialogHeader, DialogFooter, DialogTrigger, DialogClose, DialogTitle, } from "@/components/ui/dialog"; import { useEffect, useMemo, useState } from "react"; import Anchor from "./anchor"; import { advanceSearch, cn } from "@/lib/utils"; import { ScrollArea } from "@/components/ui/scroll-area"; export default function Search() { const [searchedInput, setSearchedInput] = useState(""); const [isOpen, setIsOpen] = useState(false); useEffect(() => { const handleKeyDown = (event: KeyboardEvent) => { if ((event.ctrlKey || event.metaKey) && event.key === "k") { event.preventDefault(); setIsOpen(true); } }; window.addEventListener("keydown", handleKeyDown); return () => { window.removeEventListener("keydown", handleKeyDown); }; }, []); const filteredResults = useMemo( () => advanceSearch(searchedInput.trim()), [searchedInput] ); return (
{ if (!open) setSearchedInput(""); setIsOpen(open); }} >
K
Search setSearchedInput(e.target.value)} placeholder="Type something to search..." autoFocus className="h-14 px-6 bg-transparent border-b text-[14px] outline-none" /> {filteredResults.length == 0 && searchedInput && (

No results found for{" "} {`"${searchedInput}"`}

)}
{filteredResults.map((item) => { const level = (item.href.split("/").slice(1).length - 1) as keyof typeof paddingMap; const paddingClass = paddingMap[level]; return (
1 && "border-l pl-4" )} > {" "} {item.title}
); })}

to navigate

to select

esc

to close

); } const paddingMap = { 1: "pl-2", 2: "pl-4", 3: "pl-10", // Add more levels if needed } as const;