"use client"; import { createContext, useContext, useState, useEffect, useCallback } from "react"; interface SearchContextType { isOpen: boolean; setIsOpen: (open: boolean) => void; toggle: () => void; } const SearchContext = createContext(undefined); export function SearchProvider({ children }: { children: React.ReactNode }) { const [isOpen, setIsOpen] = useState(false); const toggle = useCallback(() => { setIsOpen((prev) => !prev); }, []); useEffect(() => { const handleKeyDown = (event: KeyboardEvent) => { if ((event.ctrlKey || event.metaKey) && event.key === "k") { event.preventDefault(); toggle(); } }; window.addEventListener("keydown", handleKeyDown); return () => { window.removeEventListener("keydown", handleKeyDown); }; }, [toggle]); return ( {children} ); } export function useSearch() { const context = useContext(SearchContext); if (!context) { throw new Error("useSearch must be used within a SearchProvider"); } return context; }