// AlignUI Modal v0.0.0 import * as React from 'react'; import * as DialogPrimitive from '@radix-ui/react-dialog'; import * as CompactButton from '@/components/ui/compact-button'; import { cn } from '@/utils/cn'; import { type LucideIcon, X } from 'lucide-react'; const ModalRoot = DialogPrimitive.Root; const ModalTrigger = DialogPrimitive.Trigger; const ModalClose = DialogPrimitive.Close; const ModalPortal = DialogPrimitive.Portal; const ModalOverlay = React.forwardRef< React.ComponentRef, React.ComponentPropsWithoutRef >(({ className, ...rest }, forwardedRef) => { return ( ); }); ModalOverlay.displayName = 'ModalOverlay'; const ModalContent = React.forwardRef< React.ComponentRef, React.ComponentPropsWithoutRef & { overlayClassName?: string; showClose?: boolean; } >( ( { className, overlayClassName, children, showClose = true, ...rest }, forwardedRef, ) => { return ( {children} {showClose && ( )} ); }, ); ModalContent.displayName = 'ModalContent'; function ModalHeader({ className, children, icon: Icon, title, description, ...rest }: React.HTMLAttributes & { icon?: LucideIcon; title?: string; description?: string; }) { return (
{children || ( <> {Icon && (
)} {(title || description) && (
{title && {title}} {description && ( {description} )}
)} )}
); } ModalHeader.displayName = 'ModalHeader'; const ModalTitle = React.forwardRef< React.ComponentRef, React.ComponentPropsWithoutRef >(({ className, ...rest }, forwardedRef) => { return ( ); }); ModalTitle.displayName = 'ModalTitle'; const ModalDescription = React.forwardRef< React.ComponentRef, React.ComponentPropsWithoutRef >(({ className, ...rest }, forwardedRef) => { return ( ); }); ModalDescription.displayName = 'ModalDescription'; function ModalBody({ className, ...rest }: React.HTMLAttributes) { return
; } ModalBody.displayName = 'ModalBody'; function ModalFooter({ className, ...rest }: React.HTMLAttributes) { return (
); } ModalFooter.displayName = 'ModalFooter'; export { ModalRoot as Root, ModalTrigger as Trigger, ModalClose as Close, ModalPortal as Portal, ModalOverlay as Overlay, ModalContent as Content, ModalHeader as Header, ModalTitle as Title, ModalDescription as Description, ModalBody as Body, ModalFooter as Footer, };