import {ReactNode, useEffect, useState} from 'react'; import {createPortal} from 'react-dom'; import {FontAwesomeIcon} from '@fortawesome/react-fontawesome'; import {faX} from "@fortawesome/free-solid-svg-icons"; interface ModalProps { title: string; children: ReactNode; size: 'small' | 'medium' | 'large'; onClose: () => void; onConfirm: () => void; confirmText?: string; cancelText?: string; enableFooter?: boolean; } export default function Modal( { title, children, size, onClose, onConfirm, confirmText = 'Confirm', cancelText = 'Cancel', enableFooter = true, }: ModalProps) { const [mounted, setMounted] = useState(false); useEffect(() => { setMounted(true); return () => setMounted(false); }, []); function getSizeClasses(size: 'small' | 'medium' | 'large'): string { switch (size) { case 'small': return 'w-1/4'; case 'medium': return 'w-1/2'; case 'large': return 'w-3/4'; default: return 'w-1/2'; } } const modalContent = (