'use client'; import { useEffect, useRef } from 'react'; interface FormModalProps { open: boolean; onClose: () => void; title: string; description?: string; children: React.ReactNode; wide?: boolean; } export function FormModal({ open, onClose, title, description, children, wide }: FormModalProps) { const overlayRef = useRef(null); useEffect(() => { if (open) document.body.style.overflow = 'hidden'; return () => { document.body.style.overflow = ''; }; }, [open]); useEffect(() => { function handleKey(e: KeyboardEvent) { if (e.key === 'Escape' && open) onClose(); } window.addEventListener('keydown', handleKey); return () => window.removeEventListener('keydown', handleKey); }, [open, onClose]); if (!open) return null; return (
{ if (e.target === overlayRef.current) onClose(); }} >

{title}

{description &&

{description}

}
{children}
); }