import React, { useCallback, useId } from 'react'; import { useControllableState } from '@radix-ui/react-use-controllable-state'; import { type FCC } from '../../types'; import { DialogProvider } from './dialog.context'; export interface DialogProps { children?: React.ReactNode; dismissable?: boolean; open?: boolean; defaultOpen?: boolean; onOpenChange?(open: boolean): void; modal?: boolean; } export const Dialog: FCC = (props) => { const { children, defaultOpen, onOpenChange, open: openProp, dismissable = true } = props; const triggerRef = React.useRef(null); const contentRef = React.useRef(null); const [open = false, setOpen] = useControllableState({ prop: openProp, defaultProp: defaultOpen, onChange: onOpenChange, }); return ( setOpen((prevOpen) => !prevOpen), [setOpen]), }} > {children} ); };