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}
);
}