import { useEffect } from 'react'; import { createPortal } from 'react-dom'; import { useModal } from './useModal'; export const ModalRoot = () => { const { isOpen, content, closeModal } = useModal(); // Handle Escape Key useEffect(() => { const handleKeyDown = (e: KeyboardEvent) => { if (e.key === 'Escape' && isOpen) closeModal(); }; if (isOpen) window.addEventListener('keydown', handleKeyDown); return () => window.removeEventListener('keydown', handleKeyDown); }, [isOpen, closeModal]); // Prevent body scroll when modal is open useEffect(() => { if (isOpen) { document.body.style.overflow = 'hidden'; } else { document.body.style.overflow = 'unset'; } return () => { document.body.style.overflow = 'unset'; }; }, [isOpen]); if (!isOpen || !content) return null; return createPortal(