import { useEffect, useState } from 'react'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { apiClient } from '@/api/client'; import type { Document, SystemConfig } from '@/types'; import { FileText, Brain, TrendingUp, Upload, MessageCircle, ChevronRight, Loader2 } from 'lucide-react'; import { useNavigate } from 'react-router-dom'; export function Dashboard() { const [documents, setDocuments] = useState([]); const [config, setConfig] = useState(null); const [isLoading, setIsLoading] = useState(true); const navigate = useNavigate(); useEffect(() => { const fetchData = async () => { try { const [docs, cfg] = await Promise.all([ apiClient.getDocuments(), apiClient.getConfig(), ]); setDocuments(docs.slice(0, 5)); // Last 5 documents setConfig(cfg); } catch (error) { console.error('Error fetching dashboard data:', error); } finally { setIsLoading(false); } }; fetchData(); }, []); if (isLoading) { return (
); } return (
{/* Header */}

Dashboard

Overview of your AgenticRAG system

{/* Stats Cards */}
Total Documents
{documents.length}

Documents in your knowledge base

Active Provider
{config?.default_llm_provider || 'N/A'}

{config?.default_llm_model || ''}

System Status
Active

All systems operational

{/* Quick Actions */}
navigate('/documents')}>
Upload Documents
Add new documents to your knowledge base
navigate('/chat')}>
Start Chat
Ask questions about your documents
{/* Recent Documents */}
Recent Documents Recently uploaded documents
{documents.length === 0 ? (

No documents yet

Upload your first document to get started

) : (
{documents.map((doc) => (

{doc.filename}

{new Date(doc.created_at).toLocaleDateString()} • {(doc.size / 1024).toFixed(1)} KB

{doc.status}
))}
)}
); }