import { useState, useRef } from 'react' import './Sidebar.css' function Sidebar({ isOpen, isAuthenticated, documents, conversations, activeConversationId, onUpload, onDeleteDocument, onNewChat, onSelectConversation, onDeleteConversation, onClearData }) { const [isDragging, setIsDragging] = useState(false) const [uploadProgress, setUploadProgress] = useState(null) const [showDocs, setShowDocs] = useState(false) const fileInputRef = useRef(null) if (!isAuthenticated) { return ( ) } const handleDragOver = (e) => { e.preventDefault() setIsDragging(true) } const handleDragLeave = (e) => { e.preventDefault() setIsDragging(false) } const handleDrop = async (e) => { e.preventDefault() setIsDragging(false) const files = Array.from(e.dataTransfer.files) const validFiles = files.filter(f => f.type === 'application/pdf' || f.type === 'text/plain' || f.name.endsWith('.docx') || f.type.startsWith('audio/') || ['.mp3', '.wav', '.m4a', '.ogg', '.flac'].some(ext => f.name.endsWith(ext)) ) for (const file of validFiles) { try { setUploadProgress({ name: file.name, percent: 0 }) await onUpload(file) setUploadProgress(null) } catch (err) { console.error('Upload failed:', err) setUploadProgress(null) } } } const handleFileSelect = async (e) => { const files = Array.from(e.target.files) for (const file of files) { try { setUploadProgress({ name: file.name, percent: 0 }) await onUpload(file) setUploadProgress(null) } catch (err) { console.error('Upload failed:', err) setUploadProgress(null) } } e.target.value = '' } const getStatusIcon = (status) => { switch (status) { case 'uploading': return (