import { useState, useRef } from 'react'; import { Send, Upload, FileText, X, Loader2 } from 'lucide-react'; export default function QueryInput({ onQuery, onCsvUpload, loading, csvMode = false, selectedNeon = [], selectedComparison = [], comparisonProviders = [] }) { const [query, setQuery] = useState(''); const [selectedFile, setSelectedFile] = useState(null); const fileInputRef = useRef(null); const handleSubmit = (e) => { e.preventDefault(); if (csvMode && selectedFile) { onCsvUpload(selectedFile); } else if (!csvMode && query.trim()) { onQuery(query.trim()); setQuery(''); } }; const handleFileDrop = (e) => { e.preventDefault(); const file = e.dataTransfer?.files?.[0]; if (file && file.name.endsWith('.csv')) { setSelectedFile(file); } }; const handleFileSelect = (e) => { const file = e.target.files?.[0]; if (file) setSelectedFile(file); }; const handleKeyDown = (e) => { if (e.key === 'Enter' && !e.shiftKey && !csvMode) { e.preventDefault(); handleSubmit(e); } }; const neonDisplayName = (sel) => { const name = sel.model_id.split('@')[0].split('/').pop(); return `${name} - ${sel.persona_name}`; }; const comparisonDisplayName = (modelId) => { for (const provider of comparisonProviders) { const model = provider.models.find(m => m.id === modelId); if (model) return model.name; } return modelId.split('/').pop(); }; return (