'use client' import { useState, useEffect, useCallback } from 'react' import { Search, X } from 'lucide-react' interface SearchBarProps { onSearch: (query: string) => void placeholder?: string debounceMs?: number initialValue?: string } export default function SearchBar({ onSearch, placeholder = 'Search tasks...', debounceMs = 300, initialValue = '' }: SearchBarProps) { const [query, setQuery] = useState(initialValue) // Debounced search effect useEffect(() => { const timer = setTimeout(() => { onSearch(query) }, debounceMs) return () => clearTimeout(timer) }, [query, debounceMs, onSearch]) const handleClear = useCallback(() => { setQuery('') onSearch('') }, [onSearch]) return (
setQuery(e.target.value)} placeholder={placeholder} className="w-full pl-10 pr-10 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent" /> {query && ( )}
) }