import { TrashIcon } from "@heroicons/react/24/outline"; import { useState, useRef, ChangeEvent } from "react"; interface FileUploaderProps { onFileSelected: (base64: string) => void; error?: string; defaultValue?: string; title?: string; } export default function FileUploader({ onFileSelected, error, defaultValue, title = "سند", }: FileUploaderProps) { const [selectedFile, setSelectedFile] = useState(null); const fileInputRef = useRef(null); const handleFileChange = async (e: ChangeEvent) => { const file = e.target.files?.[0]; if (!file) return; setSelectedFile(file); const base64 = await convertToBase64(file); onFileSelected(base64); }; const convertToBase64 = (file: File): Promise => { return new Promise((resolve, reject) => { const reader = new FileReader(); reader.readAsDataURL(file); reader.onload = () => resolve(reader.result as string); reader.onerror = (error) => reject(error); }); }; const handleRemoveFile = () => { setSelectedFile(null); if (fileInputRef.current) { fileInputRef.current.value = ""; } onFileSelected(""); }; const handleButtonClick = () => { fileInputRef.current?.click(); }; const formatFileSize = (size: number) => { const sizeInMB = size / (1024 * 1024); return sizeInMB.toFixed(2) + " MB"; }; const getDefaultDocumentName = () => { const name = defaultValue?.split("/")[defaultValue?.split("/")?.length - 1]; if (name) { return name; } else { return null; } }; return ( <>
{selectedFile && ( )}
{error && (

{error}

)} ); }