// frontend/src/pages/Dashboard.jsx import React, { useState } from "react"; import { motion } from "framer-motion"; import { Sparkles, Zap, FileText, TrendingUp, Clock, AlertCircle } from "lucide-react"; import { Button } from "@/components/ui/button"; import UploadZone from "@/components/ocr/UploadZone"; import DocumentPreview from "@/components/ocr/DocumentPreview"; import ExtractionOutput from "@/components/ocr/ExtractionOutput"; import ExportButtons from "@/components/ExportButtons"; import ProcessingStatus from "@/components/ocr/ProcessingStatus"; import { extractDocument } from "@/services/api"; export default function Dashboard() { const [selectedFile, setSelectedFile] = useState(null); const [isProcessing, setIsProcessing] = useState(false); const [isComplete, setIsComplete] = useState(false); const [extractionResult, setExtractionResult] = useState(null); const [error, setError] = useState(null); const handleFileSelect = (file) => { setSelectedFile(file); setIsComplete(false); setExtractionResult(null); setError(null); }; const handleClear = () => { setSelectedFile(null); setIsProcessing(false); setIsComplete(false); setExtractionResult(null); setError(null); }; const handleExtract = async () => { if (!selectedFile) return; setIsProcessing(true); setIsComplete(false); setError(null); setExtractionResult(null); try { const result = await extractDocument(selectedFile); setExtractionResult(result); setIsComplete(true); } catch (err) { console.error("Extraction error:", err); setError(err.message || "Failed to extract document. Please try again."); setIsComplete(false); } finally { setIsProcessing(false); } }; return (
{/* Header */}

Document Extraction

Upload any document and extract structured data with AI

{/* Stats Pills */}
247 Extracted
98.5% Accuracy
{/* Main Content */}
{/* Upload Section */} {/* Extract Button */} {selectedFile && !isProcessing && !isComplete && ( )} {/* Error Message */} {error && (

Extraction Failed

{error}

)} {/* Processing Status */} {(isProcessing || isComplete) && (
)} {/* Split View */} {selectedFile && ( )} {/* Empty State Features */} {!selectedFile && (

Powered by Advanced AI

Extract structured data from any document

{[ { icon: Zap, title: "Lightning Fast", description: "Process documents faster with our optimized AI pipeline", color: "amber", }, { icon: Sparkles, title: "98.5% Accuracy", description: "Industry-leading extraction accuracy", color: "indigo", }, { icon: Clock, title: "Any Format", description: "Support for PDF, images, spreadsheets, and scanned documents", color: "emerald", }, ].map((feature, index) => (

{feature.title}

{feature.description}

))}
{/* Supported Formats */}

Supported Formats

{["PDF", "PNG", "JPG", "TIFF", "DOCX", "XLSX"].map((format) => (
{format}
))}
)}
); }