'use client'; import { Search, X } from 'lucide-react'; import { useCallback, useState, useEffect } from 'react'; interface TaxonomySearchProps { value: string; onChange: (value: string) => void; resultCount?: number; } export default function TaxonomySearch({ value, onChange, resultCount }: TaxonomySearchProps) { const [localValue, setLocalValue] = useState(value); // Debounce the search useEffect(() => { const timer = setTimeout(() => { onChange(localValue); }, 200); return () => clearTimeout(timer); }, [localValue, onChange]); // Sync external changes useEffect(() => { setLocalValue(value); }, [value]); const handleClear = useCallback(() => { setLocalValue(''); onChange(''); }, [onChange]); return (
setLocalValue(e.target.value)} placeholder="Search codes..." className="w-full bg-gray-800 border border-gray-700 rounded-lg pl-9 pr-9 py-2 text-sm text-gray-200 placeholder-gray-500 focus:outline-none focus:ring-2 focus:ring-blue-500/50 focus:border-blue-500" /> {localValue && ( )}
{value && resultCount !== undefined && (
{resultCount} {resultCount === 1 ? 'match' : 'matches'}
)}
); }