"use client"; import { useRouter, useSearchParams } from "next/navigation"; import { useState } from "react"; interface Props { vessels: { id: string; name: string }[]; } export function ApprovalsSearch({ vessels }: Props) { const router = useRouter(); const sp = useSearchParams(); const [q, setQ] = useState(sp.get("q") ?? ""); const [vesselId, setVesselId] = useState(sp.get("vesselId") ?? ""); const [dateFrom, setDateFrom] = useState(sp.get("dateFrom") ?? ""); const [dateTo, setDateTo] = useState(sp.get("dateTo") ?? ""); function apply() { const params = new URLSearchParams(); if (q.trim()) params.set("q", q.trim()); if (vesselId) params.set("vesselId", vesselId); if (dateFrom) params.set("dateFrom", dateFrom); if (dateTo) params.set("dateTo", dateTo); router.push(`/approvals?${params.toString()}`); } function clear() { setQ(""); setVesselId(""); setDateFrom(""); setDateTo(""); router.push("/approvals"); } const hasFilters = q || vesselId || dateFrom || dateTo; return (
setQ(e.target.value)} onKeyDown={(e) => e.key === "Enter" && apply()} placeholder="e.g. PO-0012 or John…" className="w-full rounded-lg border border-neutral-300 px-3 py-2 text-sm focus:border-primary-500 focus:outline-none focus:ring-2 focus:ring-primary-500/20" />
setDateFrom(e.target.value)} className="w-full rounded-lg border border-neutral-300 px-3 py-2 text-sm focus:border-primary-500 focus:outline-none focus:ring-2 focus:ring-primary-500/20" />
{hasFilters && ( )}
); }