import React, { useState } from "react"; import { Button } from "@/components/ui/button"; import { Label } from "@/components/ui/label"; import { Input } from "@/components/ui/input"; import { Card, CardContent } from "@/components/ui/card"; import { Upload, FileText, CheckCircle, X } from "lucide-react"; import { base44 } from "@/api/base44Client"; import { useToast } from "@/components/ui/use-toast"; const requiredDocuments = [ { id: 'id', name: 'Government ID', required: true, description: 'Driver\'s license or passport' }, { id: 'certification', name: 'Certifications', required: false, description: 'Food handler, TIPS, etc.' }, { id: 'background_check', name: 'Background Check', required: false, description: 'If available' }, ]; export default function DocumentUploadStep({ data, onNext, onBack }) { const [documents, setDocuments] = useState(data || []); const [uploading, setUploading] = useState({}); const { toast } = useToast(); const handleFileUpload = async (docType, file) => { if (!file) return; setUploading(prev => ({ ...prev, [docType]: true })); try { const { file_url } = await base44.integrations.Core.UploadFile({ file }); const newDoc = { type: docType, name: file.name, url: file_url, uploaded_at: new Date().toISOString(), }; setDocuments(prev => { const filtered = prev.filter(d => d.type !== docType); return [...filtered, newDoc]; }); toast({ title: "✅ Document Uploaded", description: `${file.name} uploaded successfully`, }); } catch (error) { toast({ title: "❌ Upload Failed", description: error.message, variant: "destructive", }); } finally { setUploading(prev => ({ ...prev, [docType]: false })); } }; const handleRemoveDocument = (docType) => { setDocuments(prev => prev.filter(d => d.type !== docType)); }; const handleNext = () => { const hasRequiredDocs = requiredDocuments .filter(doc => doc.required) .every(doc => documents.some(d => d.type === doc.id)); if (!hasRequiredDocs) { toast({ title: "⚠️ Missing Required Documents", description: "Please upload all required documents before continuing", variant: "destructive", }); return; } onNext({ type: 'documents', data: documents }); }; const getUploadedDoc = (docType) => documents.find(d => d.type === docType); return (

Document Upload

Upload required documents for compliance

{requiredDocuments.map(doc => { const uploadedDoc = getUploadedDoc(doc.id); const isUploading = uploading[doc.id]; return (
{uploadedDoc && ( )}

{doc.description}

{uploadedDoc && (
{uploadedDoc.name}
)}
handleFileUpload(doc.id, e.target.files[0])} disabled={isUploading} />
); })}
); }