"use client"; import { useMemo, useState } from "react"; type FilterValues = { priceMin: string; priceMax: string; brand: string; stockOnly: boolean; sort: string; }; const DEFAULTS: FilterValues = { priceMin: "", priceMax: "", brand: "", stockOnly: false, sort: "popular", }; export default function FilterCard({ title = "Filter", onApply, }: { title?: string; onApply?: (filters: FilterValues) => void; }) { const [values, setValues] = useState(DEFAULTS); const [applied, setApplied] = useState(null); const summary = useMemo(() => { if (!applied) return "No filters applied."; const parts: string[] = []; if (applied.priceMin) parts.push(`Min $${applied.priceMin}`); if (applied.priceMax) parts.push(`Max $${applied.priceMax}`); if (applied.brand) parts.push(applied.brand); if (applied.stockOnly) parts.push("In stock"); if (applied.sort) parts.push(`Sort: ${applied.sort}`); return parts.length ? parts.join(" • ") : "No filters applied."; }, [applied]); function apply() { setApplied(values); onApply?.(values); } function reset() { setValues(DEFAULTS); setApplied(null); onApply?.(DEFAULTS); } return (
{title}
setValues({ ...values, priceMin: e.target.value })} inputMode="numeric" /> setValues({ ...values, priceMax: e.target.value })} inputMode="numeric" />
setValues({ ...values, stockOnly: e.target.checked })} />
{summary}
); }