import React, { useEffect, useState } from "react"; import { useFormContext } from "react-hook-form"; const toBase64 = (file) => new Promise((resolve, reject) => { const reader = new FileReader(); reader.onload = () => resolve(reader.result); reader.onerror = reject; reader.readAsDataURL(file); }); export const LogoUpload = ({ preview, setPreview, fileName, setFileName }) => { const { register, setValue, watch, formState: { errors } } = useFormContext(); const logoImage = watch("logoImage"); // Sync preview when the form value changes useEffect(() => { if (logoImage && !preview) { setPreview(logoImage); // Use base64 as preview } }, [logoImage, preview, setPreview]); const handleUpload = async (e) => { const file = e.target.files?.[0]; if (!file) return; if (file.size > 5 * 1024 * 1024) { alert("File exceeds 5MB limit"); return; } const base64 = await toBase64(file); setValue("logoImage", base64, { shouldValidate: true }); setFileName(file.name); setPreview(URL.createObjectURL(file)); e.target.value = ""; }; const handleClear = () => { setValue("logoImage", "", { shouldValidate: true }); setPreview(null); setFileName(""); }; return (