import { useEffect, type ReactNode } from 'react' interface ModalProps { open: boolean title: string onClose: () => void children: ReactNode footer?: ReactNode size?: 'md' | 'lg' | 'xl' } const sizes = { md: 'max-w-lg', lg: 'max-w-2xl', xl: 'max-w-4xl', } as const export function Modal({ open, title, onClose, children, footer, size = 'md' }: ModalProps) { useEffect(() => { if (!open) return const handler = (event: KeyboardEvent) => { if (event.key === 'Escape') onClose() } window.addEventListener('keydown', handler) return () => window.removeEventListener('keydown', handler) }, [open, onClose]) if (!open) return null return (

{title}

{children}
{footer && (
{footer}
)}
) }