import { useState, useRef } from "react"; import { uploadFiles } from "../api"; export default function UploadModal({ onClose, onUploadComplete }) { const [uploading, setUploading] = useState(false); const [progressText, setProgressText] = useState( "Processing and embedding into ChromaDB..." ); const fileInputRef = useRef(null); const handleFileSelect = async (e) => { const files = e.target.files; if (!files || files.length === 0) return; setUploading(true); setProgressText("Processing and embedding into ChromaDB..."); const formData = new FormData(); for (let i = 0; i < files.length; i++) { formData.append("files", files[i]); } try { const data = await uploadFiles(formData); setUploading(false); onClose(); onUploadComplete(data, files.length); } catch { setUploading(false); alert("Upload failed. Ensure backend server is running."); } }; const handleBackdropClick = (e) => { if (e.target === e.currentTarget) onClose(); }; return (

cloud_upload Upload to Archives

Supported formats:{" "} PDF, DOCX, XLSX, CSV, TXT, MD, HTML, JSON. Documents will be chunked into vector blocks with metadata and saved to ChromaDB.

{uploading && (
progress_activity {progressText}
)}
); }