import { useEffect } from "react"; import { createPortal } from "react-dom"; import "./Modal.css"; /** * Shared foundation for both centered dialogs and side drawers. * variant: "dialog" | "drawer" */ export function Modal({ open, onClose, title, children, footer, variant = "dialog", width = 480, }) { useEffect(() => { if (!open) return; const onKeyDown = (e) => { if (e.key === "Escape") onClose?.(); }; window.addEventListener("keydown", onKeyDown); return () => window.removeEventListener("keydown", onKeyDown); }, [open, onClose]); if (!open) return null; return createPortal(