import { FloatingFocusManager, FloatingOverlay, FloatingPortal, useDismiss, useFloating, useInteractions, useRole, useTransitionStyles } from '@floating-ui/react'; import { Icon } from '../../icons'; import { type FC, type ReactNode, type RefObject, useId } from 'react'; import styles from './Dialog.module.css'; import { TableOfContentContext } from '../TableOfContent/TableOfContent'; export interface DialogProps { children: ReactNode, title: ReactNode, open?: boolean, onClose: () => void, initialFocus?: number | RefObject, } export const Dialog: FC = ({ children, title, open = true, onClose, initialFocus }) => { const { refs, context } = useFloating({ open, onOpenChange: onClose, }); const { getFloatingProps } = useInteractions([ useDismiss(context, { outsidePress: false, outsidePressEvent: 'mousedown', }), useRole(context), ]); const labelId = useId(); const { isMounted, styles: transitionStyles } = useTransitionStyles(context); return isMounted ? (
{title}
{children}
) : null; };