import { useEffect, type ReactNode, type Ref } from 'react' import { createPortal } from 'react-dom' type Props = { open: boolean onClose: () => void title: ReactNode children: ReactNode closeLabel?: string headerExtra?: ReactNode footer?: ReactNode id?: string role?: string ariaLabel?: string contentClassName?: string panelClassName?: string panelRef?: Ref testId?: string } export function MobileBottomSheet({ open, onClose, title, children, closeLabel = 'Close', headerExtra, footer, id, role = 'dialog', ariaLabel, contentClassName = '', panelClassName = '', panelRef, testId, }: Props) { useEffect(() => { if (!open) return const handleKeyDown = (event: KeyboardEvent) => { if (event.key === 'Escape') onClose() } document.addEventListener('keydown', handleKeyDown) return () => document.removeEventListener('keydown', handleKeyDown) }, [open, onClose]) if (!open) return null return createPortal(
event.stopPropagation()} >
{title}
{headerExtra && (
{headerExtra}
)}
{children}
{footer && (
{footer}
)}
, document.body, ) }