'use client' import { useRouter, useSearchParams, usePathname } from 'next/navigation' import { useCallback, useState, useTransition, Suspense } from 'react' const STATUS_OPTIONS = [ { value: '', label: 'All Statuses' }, { value: 'reported', label: 'Reported' }, { value: 'triaged', label: 'Triaged' }, { value: 'investigating', label: 'Investigating' }, { value: 'capa_pending', label: 'CAPA Pending' }, { value: 'verification', label: 'Pending Verification' }, { value: 'closed', label: 'Closed' }, ] const TYPE_OPTIONS = [ { value: '', label: 'All Types' }, { value: 'injury', label: 'Injury' }, { value: 'near_miss', label: 'Near Miss' }, { value: 'hazard', label: 'Hazard' }, { value: 'asset_damage', label: 'Asset Damage' }, { value: 'environmental', label: 'Environmental' }, { value: 'security', label: 'Security' }, { value: 'fire', label: 'Fire' }, { value: 'transport', label: 'Transport' }, ] export interface SiteOption { id: string; name: string } export interface TruckOption { id: string; truck_no: string } interface FiltersProps { sites: SiteOption[] trucks: TruckOption[] } function FiltersInner({ sites, trucks }: FiltersProps) { const router = useRouter() const pathname = usePathname() const searchParams = useSearchParams() const [, startTransition] = useTransition() const [search, setSearch] = useState(searchParams.get('q') ?? '') const updateParam = useCallback((key: string, value: string) => { const params = new URLSearchParams(searchParams.toString()) if (value) { params.set(key, value) } else { params.delete(key) } params.delete('page') startTransition(() => { router.replace(`${pathname}?${params.toString()}`) }) }, [router, pathname, searchParams]) const handleSearch = useCallback((value: string) => { setSearch(value) const timer = setTimeout(() => updateParam('q', value), 300) return () => clearTimeout(timer) }, [updateParam]) const hasFilters = searchParams.get('q') || searchParams.get('status') || searchParams.get('type') || searchParams.get('site_id') || searchParams.get('truck_id') return (
handleSearch(e.target.value)} className="w-full pl-8 pr-3 py-1.5 text-sm border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500" />
{sites.length > 0 && ( )} {trucks.length > 0 && ( )} {hasFilters && ( )}
) } export function IncidentFilters({ sites, trucks }: FiltersProps) { return ( }> ) }