import React from 'react'; import { GlassButton } from './GlassButton'; import { FormSelect, SelectOption } from './FormSelect'; import './style.scss'; export interface SearchInputProps { /** Search query value */ query: string; /** Query change handler */ onQueryChange: (query: string) => void; /** Search handler */ onSearch: () => void; /** Model selection value */ selectedModel?: string; /** Model change handler */ onModelChange?: (model: string) => void; /** Available models for search */ models?: SelectOption[]; /** Whether search is in progress */ isSearching?: boolean; /** Whether the input is disabled */ disabled?: boolean; /** Placeholder text */ placeholder?: string; /** Show model selector */ showModelSelector?: boolean; /** Custom className */ className?: string; } export const SearchInput: React.FC = ({ query, onQueryChange, onSearch, selectedModel, onModelChange, models = [], isSearching = false, disabled = false, placeholder = 'Enter text to find similar embeddings...', showModelSelector = true, className = '' }) => { const handleKeyDown = (e: React.KeyboardEvent) => { if (e.key === 'Enter' && !disabled && !isSearching) { onSearch(); } }; return (
onQueryChange(e.target.value)} onKeyDown={handleKeyDown} disabled={disabled || isSearching} /> {showModelSelector && models.length > 0 && selectedModel && onModelChange && ( )} {isSearching ? 'Searching...' : 'Search'}
); };