"use client"; import Link from "next/link"; import { useEffect, useState } from "react"; import { api, type Symbol } from "../lib/api"; export function SearchBox({ autoFocus = false }: { autoFocus?: boolean }) { const [q, setQ] = useState(""); const [items, setItems] = useState([]); const [loading, setLoading] = useState(false); const [err, setErr] = useState(null); const [seedOnly, setSeedOnly] = useState(false); useEffect(() => { const term = q.trim(); if (!term) { setItems([]); setErr(null); return; } setLoading(true); setErr(null); const handle = setTimeout(async () => { try { const r = await api.search(term, seedOnly, 15); setItems(r.items); } catch (e) { setErr(e instanceof Error ? e.message : String(e)); setItems([]); } finally { setLoading(false); } }, 200); return () => clearTimeout(handle); }, [q, seedOnly]); return (
setQ(e.target.value)} placeholder="종목명 또는 코드 (예: 삼성, 005930)" className="w-full rounded-md border border-zinc-700 bg-zinc-900 px-4 py-3 text-base outline-none focus:border-zinc-500" />
{loading && "검색중…"} {err && 에러: {err}} {!loading && !err && q && items.length === 0 && "검색 결과 없음"}
{items.length > 0 && (
    {items.map((it) => (
  • {it.name} {it.is_seed && ( SEED )}
    {it.code} · {it.market} {it.sector ? ` · ${it.sector}` : ""}
  • ))}
)}
); }