import React, { useState, useEffect } from 'react'; import { AppStatus, FileData, FormResponse } from './types'; import { FileUpload } from './components/FileUpload'; import { ReviewPanel } from './components/ReviewPanel'; import { processDocuments } from './services/geminiService'; import { getPdfFields, PdfFieldInfo } from './services/pdfService'; import { Bot, Sparkles, ArrowRight, FileCheck2, ScanText, Loader2, AlertTriangle, FileText, Check } from 'lucide-react'; const App: React.FC = () => { const [status, setStatus] = useState(AppStatus.IDLE); const [formFile, setFormFile] = useState(null); const [sourceFile, setSourceFile] = useState(null); const [pdfFields, setPdfFields] = useState([]); const [responseData, setResponseData] = useState(null); const [error, setError] = useState(null); useEffect(() => { const analyzePdf = async () => { if (formFile && formFile.type === 'application/pdf') { const fields = await getPdfFields(formFile.base64); setPdfFields(fields); console.log("Detected PDF fields:", fields); } else { setPdfFields([]); } }; analyzePdf(); }, [formFile]); const handleAnalyze = async () => { if (!formFile || !sourceFile) return; setStatus(AppStatus.PROCESSING); setError(null); try { const data = await processDocuments(formFile, sourceFile, pdfFields); setResponseData(data); setStatus(AppStatus.REVIEW); } catch (e: any) { setError(e.message || "Something went wrong during analysis."); setStatus(AppStatus.ERROR); } }; const reset = () => { setStatus(AppStatus.IDLE); setFormFile(null); setSourceFile(null); setResponseData(null); setError(null); setPdfFields([]); }; if (status === AppStatus.REVIEW && responseData && formFile && sourceFile) { return (
AutoForm AI
0} onReset={reset} />
); } return (
{/* Header */}

AutoForm AI

Intelligent Document Processing

1. Scan 2. Extract 3. Review
{/* Main Content */}
{status === AppStatus.IDLE || status === AppStatus.ERROR ? ( <>

Fill Forms Automatically with AI

Upload a blank PDF form and a source document. We'll extract the data and fill the PDF fields for you.

{error && (

{error}

)}
{/* Step 1: Blank Form */}
1

Target Form

{pdfFields.length > 0 && ( {pdfFields.length} fillable fields detected )}
{/* Step 2: Source Data */}
2

Source Document

) : ( /* Processing State */

Processing Documents...

AI is reading the source document and mapping data to your PDF form fields.

Parsing PDF
Extracting Data
Filling Form
)}
); }; export default App;