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 (
) case 'ready': return (
) case 'error': return (
) default: return null } } const getFileIcon = (name) => { if (name.endsWith('.pdf')) { return ( ) } return ( ) } const getRelativeTime = (timestamp) => { if (!timestamp) return '' const now = new Date() const then = new Date(timestamp) const diff = Math.floor((now - then) / 1000) if (diff < 60) return 'just now' if (diff < 3600) return `${Math.floor(diff / 60)}m ago` if (diff < 86400) return `${Math.floor(diff / 3600)}h ago` if (diff < 604800) return `${Math.floor(diff / 86400)}d ago` return then.toLocaleDateString() } return ( ) } export default Sidebar