import { useState, KeyboardEvent } from 'react'; import { Input } from '@/components/ui/input'; import { Button } from '@/components/ui/button'; import { Search, Loader2 } from 'lucide-react'; import { cn } from '@/lib/utils'; interface SearchInputProps { onSearch: (query: string) => void; isLoading?: boolean; initialValue?: string; autoFocus?: boolean; large?: boolean; } export function SearchInput({ onSearch, isLoading = false, initialValue = '', autoFocus = false, large = false, }: SearchInputProps) { const [query, setQuery] = useState(initialValue); const handleSubmit = () => { if (query.trim() && !isLoading) { onSearch(query.trim()); } }; const handleKeyDown = (e: KeyboardEvent) => { if (e.key === 'Enter') { handleSubmit(); } }; return (
setQuery(e.target.value)} onKeyDown={handleKeyDown} placeholder="Ask anything..." className={cn( "pl-10 pr-4 transition-all duration-200", large && "h-12 text-lg rounded-lg", "focus-visible:ring-2 focus-visible:ring-primary" )} disabled={isLoading} autoFocus={autoFocus} />
); }