One modal shape: a single popup surface, the footer a muted band under a rule.
Installation
Default
Header and body on the popup surface, the footer a muted band. A form wraps DialogBody and DialogFooter (className="contents"); submit sits in the footer.
Sizes
size: sm 24rem · default 28rem · lg 42rem · xl 56rem from sm up.
No footer
Without a footer the body ends the dialog.
Without close button
showCloseButton={false}: no ✕, the footer action closes it.
Scrolling body
A long body scrolls; header and footer stay.
Nested
A dialog opened from a dialog stacks on it; the one below steps back.
Opened from a menu
The menu item sets the dialog’s open; the dialog lives outside the menu.
Close on navigation
closeOverlays() on a route change closes every dialog, sheet and drawer but a sensitive one; hasSensitiveOverlay() asks first