Modal dialog component with consistent styling and animations. Based on Radix UI Dialog.
512px max width
{ size: "sm" }640px max width
{ size: "default" }768px max width
{ size: "lg" }Simple yes/no confirmation
{ size: "sm" }Dialog with form inputs
{}Dialog with long scrollable content
{ size: "lg" }Dialog that prevents closing by clicking outside
{ preventOutsideClose: true }Programmatically control dialog state
{ open: "controlled", onOpenChange: "setControlled" }sm (512px), default (640px), lg (768px)DesignDialogBody for scrollable content areaspreventOutsideClose for critical actionsDesignDialogFootersize="large" for footer buttons (40px height)variant="primary" for the main action (e.g., Confirm, Submit, Save)variant="tertiary" for secondary actions (e.g., Cancel, Back)Import and Usage:
import {
DesignDialog,
DesignDialogContent,
DesignDialogHeader,
DesignDialogTitle,
DesignDialogDescription,
DesignDialogBody,
DesignDialogFooter,
DesignDialogTrigger,
DesignDialogClose,
} from "@/components/ui/design-dialog"
import { DesignButton } from "@/components/ui/design-button"
<DesignDialog>
<DesignDialogTrigger asChild>
<DesignButton variant="primary">Open Dialog</DesignButton>
</DesignDialogTrigger>
<DesignDialogContent>
<DesignDialogHeader>
<DesignDialogTitle>Dialog Title</DesignDialogTitle>
<DesignDialogDescription>
Dialog description
</DesignDialogDescription>
</DesignDialogHeader>
<DesignDialogBody>
{/* Content */}
</DesignDialogBody>
<DesignDialogFooter>
<DesignDialogClose asChild>
<DesignButton variant="tertiary" size="large">Cancel</DesignButton>
</DesignDialogClose>
<DesignDialogClose asChild>
<DesignButton variant="primary" size="large">Confirm</DesignButton>
</DesignDialogClose>
</DesignDialogFooter>
</DesignDialogContent>
</DesignDialog>