import { useEffect } from "react"; import { AnimatePresence, motion } from "framer-motion"; import { X } from "lucide-react"; const WIDTHS = { sm: "max-w-md", md: "max-w-xl", lg: "max-w-3xl", xl: "max-w-5xl", }; export default function Modal({ open, onClose, title, subtitle, icon: Icon, size = "md", children, footer }) { useEffect(() => { if (!open) return; function onKey(event) { if (event.key === "Escape") onClose(); } window.addEventListener("keydown", onKey); document.body.style.overflow = "hidden"; return () => { window.removeEventListener("keydown", onKey); document.body.style.overflow = ""; }; }, [open, onClose]); return ( {open && (
{Icon && ( )}

{title}

{subtitle &&

{subtitle}

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