import * as React from 'react';
import { Dialog as DialogPrimitive } from '@base-ui/react/dialog';
import { XIcon } from 'lucide-react';
import { getPortalContainer } from '../../lib/portal';
import { classNames } from '../../lib/utils';
import { Button } from './button';
function Dialog({ ...props }: DialogPrimitive.Root.Props) {
return ;
}
const DialogTrigger = React.forwardRef<
HTMLButtonElement,
DialogPrimitive.Trigger.Props
>(function DialogTrigger({ ...props }, ref) {
return (
);
});
const DialogPortal = React.forwardRef<
HTMLDivElement,
DialogPrimitive.Portal.Props
>(function DialogPortal({ ...props }, ref) {
return (
);
});
const DialogClose = React.forwardRef<
HTMLButtonElement,
DialogPrimitive.Close.Props
>(function DialogClose({ ...props }, ref) {
return (
);
});
const DialogOverlay = React.forwardRef<
HTMLDivElement,
DialogPrimitive.Backdrop.Props
>(function DialogOverlay({ className, ...props }, ref) {
return (
);
});
const DialogContent = React.forwardRef<
HTMLDivElement,
DialogPrimitive.Popup.Props & {
showCloseButton?: boolean;
}
>(function DialogContent(
{ className, children, showCloseButton = true, ...props },
ref
) {
return (
{children}
{showCloseButton && (
}
>
Close
)}
);
});
const DialogHeader = React.forwardRef<
HTMLDivElement,
React.ComponentProps<'div'>
>(function DialogHeader({ className, ...props }, ref) {
return (
);
});
const DialogFooter = React.forwardRef<
HTMLDivElement,
React.ComponentProps<'div'> & {
showCloseButton?: boolean;
}
>(function DialogFooter(
{ className, showCloseButton = false, children, ...props },
ref
) {
return (
{children}
{showCloseButton && (
}>
Close
)}
);
});
const DialogTitle = React.forwardRef<
HTMLHeadingElement,
DialogPrimitive.Title.Props
>(function DialogTitle({ className, ...props }, ref) {
return (
);
});
const DialogDescription = React.forwardRef<
HTMLParagraphElement,
DialogPrimitive.Description.Props
>(function DialogDescription({ className, ...props }, ref) {
return (
);
});
export {
Dialog,
DialogClose,
DialogContent,
DialogDescription,
DialogFooter,
DialogHeader,
DialogOverlay,
DialogPortal,
DialogTitle,
DialogTrigger,
};