'use client'; import type { ReactNode } from 'react'; import { useEffect } from 'react'; import { copy } from '@/shared/i18n'; import { cn } from '@/shared/lib/cn'; import { useReducedMotion } from '@/shared/lib/useReducedMotion'; interface ModalProps { isOpen: boolean; title: string; description?: string; onClose: () => void; children: ReactNode; footer?: ReactNode; } export const Modal = ({ isOpen, title, description, onClose, children, footer, }: ModalProps) => { const reducedMotion = useReducedMotion(); useEffect(() => { if (!isOpen) { return; } const onKeyDown = (event: KeyboardEvent) => { if (event.key === 'Escape') { onClose(); } }; document.addEventListener('keydown', onKeyDown); return () => { document.removeEventListener('keydown', onKeyDown); }; }, [isOpen, onClose]); if (!isOpen) { return null; } return (
{description}
) : null}