import { useState, useEffect } from 'react'; import { FileText, MessageSquare, Calendar, Layers, Clock, ExternalLink, Search } from 'lucide-react'; import { fetchDocuments } from '../api'; export default function DocsLibrary({ token, onSelectChat, onLogout }) { const [documents, setDocuments] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(''); const [searchTerm, setSearchTerm] = useState(''); const loadDocs = async () => { setLoading(true); try { const data = await fetchDocuments(token); setDocuments(data.documents); } catch (err) { setError('Failed to load library'); if (err.status === 401 && onLogout) { onLogout(); } } finally { setLoading(false); } }; useEffect(() => { if (token) loadDocs(); }, [token, onLogout]); const filteredDocs = documents.filter(doc => doc.filename.toLowerCase().includes(searchTerm.toLowerCase()) || doc.session_title?.toLowerCase().includes(searchTerm.toLowerCase()) ); return (
setSearchTerm(e.target.value)} />
{documents.length} Documents
{error &&
{error}
}
{loading ? (

Scanning your secure storage...

) : filteredDocs.length === 0 ? (

No documents found

Upload documents in a chat to see them here.

) : (
{filteredDocs.map((doc) => ( ))}
Document Upload Date Source Chat Scale Efficiency
{doc.filename}
{new Date(doc.date).toLocaleDateString()}
{doc.session_id ? ( ) : ( No Session )}
{doc.chunks} Chunks
{doc.embed_time}s
)}
); }