import * as React from 'react' import { Modal, Box, Text, Group } from '@mantine/core' interface DialogProps { open?: boolean onOpenChange?: (open: boolean) => void children: React.ReactNode } const DialogContext = React.createContext<{ open: boolean setOpen: (open: boolean) => void }>({ open: false, setOpen: () => {} }) function Dialog({ open: controlledOpen, onOpenChange, children }: DialogProps) { const [internalOpen, setInternalOpen] = React.useState(false) const open = controlledOpen ?? internalOpen const setOpen = React.useCallback( (v: boolean) => { onOpenChange?.(v) if (controlledOpen === undefined) setInternalOpen(v) }, [controlledOpen, onOpenChange], ) return ( {children} ) } function DialogTrigger({ children, ...props }: React.ComponentProps<'button'>) { const { setOpen } = React.useContext(DialogContext) return ( ) } function DialogPortal({ children }: { children: React.ReactNode }) { return <>{children} } function DialogClose({ children, ...props }: React.ComponentProps<'button'>) { const { setOpen } = React.useContext(DialogContext) return ( ) } function DialogOverlay() { return null } function DialogContent({ children, showCloseButton = true, className, ...props }: React.ComponentProps<'div'> & { showCloseButton?: boolean }) { const { open, setOpen } = React.useContext(DialogContext) return ( setOpen(false)} withCloseButton={showCloseButton} radius="md" padding="md" size="sm" centered data-slot="dialog-content" className={className} {...props} > {children} ) } function DialogHeader({ className, ...props }: React.ComponentProps<'div'>) { return } function DialogFooter({ className, children, ...props }: React.ComponentProps<'div'>) { return ( {children} ) } function DialogTitle({ className, children, ...props }: React.ComponentProps<'div'>) { return ( {children} ) } function DialogDescription({ className, children, ...props }: React.ComponentProps<'div'>) { return ( {children} ) } export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger }