"use client"; import { useEffect, useState } from "react"; import { useRouter } from "next/navigation"; import { Search } from "lucide-react"; import { http } from "@/lib/api"; type Hit = { kind: string; title: string; href: string }; export function GlobalSearch() { const router = useRouter(); const [q, setQ] = useState(""); const [hits, setHits] = useState([]); const [open, setOpen] = useState(false); useEffect(() => { const query = q.trim(); if (query.length < 2) { setHits([]); return; } const t = setTimeout(() => { void http .get<{ results: Hit[] }>(`/api/search?q=${encodeURIComponent(query)}`) .then((res) => setHits(res.results ?? [])) .catch(() => setHits([])); }, 250); return () => clearTimeout(t); }, [q]); return (
{ setQ(e.target.value); setOpen(true); }} onFocus={() => setOpen(true)} placeholder="جستجو" className="h-9 w-full rounded-full border border-border bg-background/70 ps-8 pe-3 text-sm outline-none focus:border-primary" /> {open && hits.length > 0 && (
{hits.map((h) => ( ))}
)}
); }