"use client"; import { useState } from "react"; import Link from "next/link"; interface DocHit { slug: string; title: string; section: string; score: number; snippet: string; } export default function SearchPage() { const [query, setQuery] = useState(""); const [results, setResults] = useState([]); const [loading, setLoading] = useState(false); async function handleSearch(q: string) { if (!q.trim()) { setResults([]); return; } setLoading(true); try { const res = await fetch(`/api/search?q=${encodeURIComponent(q)}`); const data = await res.json(); setResults(data.results || []); } catch { setResults([]); } finally { setLoading(false); } } function handleChange(e: React.ChangeEvent) { const val = e.target.value; setQuery(val); handleSearch(val); } return (

Search

{loading &&

Searching...

} {!loading && results.length === 0 && query && (

No results for "{query}".

)} {!loading && results.length > 0 && (
    {results.map((r) => (
  • {r.title} {r.section} ยท {Math.round(r.score * 100)}% match {r.snippet && (

    {r.snippet}

    )}
  • ))}
)}
); }