import { ReactNode, useEffect } from "react"; export function Modal({ open, onClose, onSubmit, title, children, footer, wide, }: { open: boolean; onClose: () => void; onSubmit?: () => void; title: string; children: ReactNode; footer?: ReactNode; wide?: boolean; }) { useEffect(() => { if (!open) return; const onKey = (e: KeyboardEvent) => { if (e.key === "Escape") onClose(); if (e.key === "Enter" && (e.ctrlKey || e.metaKey) && onSubmit) onSubmit(); }; window.addEventListener("keydown", onKey); document.body.style.overflow = "hidden"; return () => { window.removeEventListener("keydown", onKey); document.body.style.overflow = ""; }; }, [open, onClose, onSubmit]); if (!open) return null; return (

{title}

{children}
{footer &&
{footer}
}
); }