import { useState, useEffect } from 'react' import type { ReactNode } from 'react' interface MobileMenuProps { children: ReactNode 'aria-label'?: string } function HamburgerIcon({ isOpen }: { isOpen: boolean }): React.ReactElement { return ( {isOpen ? ( ) : ( )} ) } export function MobileMenu({ children, 'aria-label': ariaLabel }: MobileMenuProps): React.ReactElement { const [isOpen, setIsOpen] = useState(false) useEffect(() => { if (isOpen) { document.body.style.overflow = 'hidden' } else { document.body.style.overflow = '' } return () => { document.body.style.overflow = '' } }, [isOpen]) useEffect(() => { const handleEscape = (e: KeyboardEvent): void => { if (e.key === 'Escape' && isOpen) { setIsOpen(false) } } document.addEventListener('keydown', handleEscape) return () => document.removeEventListener('keydown', handleEscape) }, [isOpen]) return ( <> {isOpen && ( <>
setIsOpen(false)} aria-hidden="true" /> )} ) }