import { Fragment, useCallback, useEffect } from 'react' import type { ReactNode } from 'react' import { Dialog, DialogPanel, Transition, TransitionChild } from '@headlessui/react' import cn from '@/utils/classnames' type DialogProps = { className?: string children: ReactNode show: boolean onClose?: () => void } const MenuDialog = ({ className, children, show, onClose, }: DialogProps) => { const close = useCallback(() => onClose?.(), [onClose]) useEffect(() => { const handleKeyDown = (event: KeyboardEvent) => { if (event.key === 'Escape') { event.preventDefault() close() } } document.addEventListener('keydown', handleKeyDown) return () => { document.removeEventListener('keydown', handleKeyDown) } }, [close]) return ( { }}>
{children}
) } export default MenuDialog