import { useRef } from "react"; import Label from "./Label"; import Tooltip from "./Tooltip"; import { formatFileSize, getIconByFileType } from "../../utils/appUtils"; const SingleFileUploader = ({ label = "Upload Document", required = false, value, onChange, onRemove, disabled, error, accept = ".pdf,.jpg,.jpeg,.png", maxSizeMB = 25, hint = "(PDF, JPG, PNG, max 5MB)", }) => { const inputRef = useRef(null); const handleFileSelect = async (e) => { const file = e.target.files?.[0]; if (!file) return; // Validate size if (file.size > maxSizeMB * 1024 * 1024) { alert(`File size cannot exceed ${maxSizeMB}MB`); e.target.value = ""; return; } // Convert to base64 const base64Data = await new Promise((resolve, reject) => { const reader = new FileReader(); reader.readAsDataURL(file); reader.onload = () => resolve(reader.result.split(",")[1]); reader.onerror = (err) => reject(err); }); const attachmentObj = { fileName: file.name, base64Data, invoiceAttachmentTypeId: "", // set dynamically if needed contentType: file.type, fileSize: file.size, description: "", isActive: true, }; onChange(attachmentObj); e.target.value = ""; }; return (