'use client'; import { IconXFilled } from "@tabler/icons-react"; import { useEffect, useState } from "react"; import { createPortal } from 'react-dom'; type ModalProps = { children?: React.ReactNode; headline?: string; open?: boolean; setOpen?: (open: boolean) => void; }; export default function Modal({ children, headline, open, setOpen }: ModalProps) { const [mounted, setMounted] = useState(false); useEffect(() => { setMounted(true); }, []); useEffect(() => { if (!open) return; const original = document.body.style.overflow; document.body.style.overflow = 'hidden'; return () => { document.body.style.overflow = original; }; }, [open]); useEffect(() => { if (!open) return; const onKey = (e: KeyboardEvent) => e.key === 'Escape' && handleClose(); document.addEventListener('keydown', onKey); return () => document.removeEventListener('keydown', onKey); }, [open]); const handleClose = () => { if (setOpen) setOpen(false); }; if (!mounted || !open) return null; return createPortal(