import { useState } from "react"; import FileUpload from "./FileUpload"; import { deleteDocument } from "../api"; function NewWorkspaceInput({ onCreated }) { const [name, setName] = useState(""); const [open, setOpen] = useState(false); function handleCreate(e) { e.preventDefault(); const slug = name .trim() .toLowerCase() .replace(/\s+/g, "-") .replace(/[^a-z0-9-]/g, ""); if (!slug) return; onCreated(slug); setName(""); setOpen(false); } if (!open) { return ( ); } return (
setName(e.target.value)} placeholder="workspace-name" className="flex-1 text-xs border border-gray-200 rounded-lg px-2 py-1.5 focus:outline-none focus:ring-1 focus:ring-indigo-500" />
); } export default function Sidebar({ documents, setDocuments, onNewConversation, evalLog, onBriefing, briefing, onSuggestedQuestion, currentWorkspace, workspaces, onWorkspaceChange, onWorkspacesUpdate, filterDocs = [], onFilterChange, onFilterClear, }) { const [deletingDoc, setDeletingDoc] = useState(null); async function handleDelete(docName) { if (!window.confirm(`Remove "${docName}" from the index?`)) return; setDeletingDoc(docName); try { const result = await deleteDocument(docName, currentWorkspace); setDocuments(result.documents); if (filterDocs.includes(docName)) onFilterChange?.(docName); } catch (e) { alert(`Delete failed: ${e?.response?.data?.detail || e.message}`); } finally { setDeletingDoc(null); } } return ( ); }