'use client'; import { Input } from '@/components/ui/input'; import { Search, Loader2 } from 'lucide-react'; import { useState, useEffect } from 'react'; import { useDebounce } from 'use-debounce'; interface SearchInputProps { onSearch: (query: string) => void; isSearching?: boolean; } export function SearchInput({ onSearch, isSearching = false }: SearchInputProps) { const [query, setQuery] = useState(''); const [debouncedQuery] = useDebounce(query, 300); // Show typing indicator when input differs from debounced value const isTyping = query !== debouncedQuery && query.length > 0; useEffect(() => { // Only trigger search when debounced value changes if (debouncedQuery.length >= 2 || debouncedQuery.length === 0) { onSearch(debouncedQuery); } }, [debouncedQuery, onSearch]); return (