import { motion } from 'framer-motion'; import { Loader2, AlertTriangle, CloudUpload, CheckCircle2 } from 'lucide-react'; import { useState } from 'react'; export function PageHeader({ title, subtitle, icon: Icon }) { return (
{Icon && (
)}

{title}

{subtitle &&

{subtitle}

}
); } export function ResultBox({ children, className = '' }) { return ( {children} ); } export function ErrorBox({ message }) { if (!message) return null; return ( {message} ); } export function SubmitButton({ loading, children, onClick, type = 'submit' }) { return ( {loading ? ( <> Processing... ) : children} ); } export function UploadZone({ accept, name, onChange, label, sublabel }) { const [fileName, setFileName] = useState(''); const [isDragging, setIsDragging] = useState(false); const handleChange = (e) => { if (e.target.files[0]) { setFileName(e.target.files[0].name); } onChange?.(e); }; return ( ); } export function SectionLabel({ children }) { return (

{children}

); }