'use client'; import React, { useCallback, useState } from 'react'; import { useDropzone } from 'react-dropzone'; import { motion, AnimatePresence } from 'framer-motion'; import { CloudUploadIcon, FileText, CheckCircle2 } from 'lucide-react'; interface ImageDropzoneProps { onFilesAccepted: (files: File[]) => void; loading?: boolean; } export const ImageDropzone: React.FC = ({ onFilesAccepted, loading = false, }) => { const [uploadedFiles, setUploadedFiles] = useState([]); const onDrop = useCallback( (acceptedFiles: File[]) => { setUploadedFiles(acceptedFiles); onFilesAccepted(acceptedFiles); }, [onFilesAccepted] ); const { getRootProps, getInputProps, isDragActive } = useDropzone({ onDrop, accept: { 'image/*': ['.jpeg', '.jpg', '.png', '.gif'], 'application/pdf': ['.pdf'], }, disabled: loading, }); return (

{isDragActive ? 'Release to upload' : 'Sync Medical Data'}

Drag images or browse file-system

{uploadedFiles.length > 0 && ( {uploadedFiles.map((file, idx) => (
{file.name}
))}
)}
); }; export default ImageDropzone;