import React, { useRef } from 'react'; interface FileUploadProps { onFiles: (files: File[]) => void; accept?: string; multiple?: boolean; maxSizeMB?: number; } export default function FileUpload({ onFiles, accept, multiple = false, maxSizeMB }: FileUploadProps) { const inputRef = useRef(null); const handleFileSelection = (files: FileList | null) => { if (!files) return; const fileArray = Array.from(files); const filteredFiles = fileArray.filter(file => { if (maxSizeMB && file.size > maxSizeMB * 1024 * 1024) { console.warn(`File ${file.name} exceeds size limit of ${maxSizeMB}MB`); return false; } return true; }); onFiles(filteredFiles); }; const handleDrop = (e: React.DragEvent) => { e.preventDefault(); e.stopPropagation(); handleFileSelection(e.dataTransfer.files); }; const handleDragOver = (e: React.DragEvent) => { e.preventDefault(); e.stopPropagation(); }; const handleClick = () => { inputRef.current?.click(); }; return (
handleFileSelection(e.target.files)} accept={accept} multiple={multiple} className="hidden" />

Drop files here or click to upload

{maxSizeMB && (

Max size: {maxSizeMB}MB

)}
); }