import * as React from 'react'; import {cn} from '@/lib/utils'; import {X} from 'lucide-react'; interface DialogContextValue { open: boolean; onOpenChange: (open: boolean) => void; } const DialogContext = React.createContext(undefined); const useDialog = () => { const context = React.useContext(DialogContext); if (!context) { throw new Error('useDialog must be used within a Dialog'); } return context; }; interface DialogProps { children: React.ReactNode; open?: boolean; onOpenChange?: (open: boolean) => void; } const Dialog = ({children, open: controlledOpen, onOpenChange}: DialogProps) => { const [uncontrolledOpen, setUncontrolledOpen] = React.useState(false); const open = controlledOpen !== undefined ? controlledOpen : uncontrolledOpen; const setOpen = onOpenChange || setUncontrolledOpen; return {children}; }; const DialogTrigger = React.forwardRef>(({className, onClick, ...props}, ref) => { const {onOpenChange} = useDialog(); return ( ); }); DialogContent.displayName = 'DialogContent'; const DialogHeader = ({className, ...props}: React.HTMLAttributes) => (
); DialogHeader.displayName = 'DialogHeader'; const DialogFooter = ({className, ...props}: React.HTMLAttributes) => (
); DialogFooter.displayName = 'DialogFooter'; const DialogTitle = React.forwardRef>(({className, ...props}, ref) => (

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

)); DialogDescription.displayName = 'DialogDescription'; export {Dialog, DialogTrigger, DialogContent, DialogHeader, DialogFooter, DialogTitle, DialogDescription};