import React, { createContext, useContext, useState } from 'react'; import { Modal } from './Modal'; import { Slot } from './Slot'; type DialogContextType = { open: boolean; setOpen: (open: boolean) => void; }; const DialogContext = createContext(undefined); export const DialogRoot = ({ open, onOpenChange, children, defaultOpen }: { open?: boolean, onOpenChange?: (open: boolean) => void, children: React.ReactNode, defaultOpen?: boolean }) => { const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen || false); const isControlled = open !== undefined; const currentOpen = isControlled ? open : uncontrolledOpen; const handleOpenChange = (newOpen: boolean) => { if (!isControlled) setUncontrolledOpen(newOpen); if (onOpenChange) onOpenChange(newOpen); }; return ( {children} ); }; export const DialogTrigger = React.forwardRef(({ asChild, onClick, ...props }, ref) => { const context = useContext(DialogContext); const Comp = asChild ? Slot : "button"; return { context?.setOpen(true); onClick?.(e); }} {...props} />; }); export const DialogContent = React.forwardRef(({ children, className, ...props }, ref) => { const context = useContext(DialogContext); return ( context?.setOpen(false)}>
{children}
); }); export const DialogHeader = ({ className = '', ...props }: any) =>
; export const DialogFooter = ({ className = '', ...props }: any) =>
; export const DialogTitle = React.forwardRef(({ className = '', ...props }, ref) =>

); export const DialogDescription = React.forwardRef(({ className = '', ...props }, ref) =>

); export const DialogClose = React.forwardRef(({ asChild, onClick, ...props }, ref) => { const context = useContext(DialogContext); const Comp = asChild ? Slot : "button"; return { context?.setOpen(false); onClick?.(e); }} {...props} />; }); // We also provide a dummy Portal and Overlay because standard Shadcn uses them in wrappers export const DialogPortal = ({ children }: any) => <>{children}; export const DialogOverlay = React.forwardRef(({ className, ...props }, ref) =>

);