Dialog
Organism
A modal dialog: a centered panel over a dimmed backdrop, which glass on the web also blurs, with a title, an optional description, a body for real content like a form, and right-aligned actions. Use it for a focused task that warrants interrupting the page; reach for the Alert Dialog for a terse yes/no confirmation.
Playground
Every control sets a real prop of DialogProps. The JSX below updates as you go.
Web
iOS
Android
JSX · DialogProps
Variants
8 examples from src/organisms/dialog/dialog.md, each rendered live from its own JSX.
Anatomy
1
Scrim
2
Panel
3
Title
4
Description
5
Body
6
Actions
7
Close
Dimmed parts appear only in some states or variants.
Props
33 props on DialogProps, grouped as they are declared in source. Required props are marked *.
Accessibility and keyboard
Keyboard
Tab
Shift+Tab
Cycles focus inside the panel
Escape
Closes when dismissible
Enter
Confirms in forms
Semantics
Roles
alertdialog
button
dialog
heading
ARIA on web
aria-describedby
aria-label
aria-labelledby
aria-modal
From the docs
A modal dialog: a centered panel over a dimmed backdrop, which glass on the web also blurs, with a title, an optional description, a body for real content like a form, and right-aligned actions. Use it for a focused task that warrants interrupting the page; reach for the Alert Dialog for a terse yes/no confirmation.
Browser Escape and iOS accessibility escape cancel the foremost open child overlay before the dialog. Cancelling the dialog calls onCancel and requests open=false, including destructive dialogs and dialogs with custom children. A controlled owner may keep it open; that request never confirms an action.
Pass dismissible to let a backdrop press follow the same cancel policy. It is off by default, so existing dialogs and destructive confirmations keep their current outside-press behavior. The scrim is excluded from keyboard navigation.
Use form overlay dismissible for the original Argus application dialog: a persistent title and optional description, a close action, and scrolling body and footer content. panelWidth bounds the form (560 pixels by default), and the viewport keeps a twenty-pixel safe-area inset. The web treatment preserves Argus’s 28-pixel content inset, 17-pixel title, rounded card, shadow, and lightly frosted dim. A form with no trigger contributes no layout wrapper to its caller. Nested menus receive Escape before the dia
Platform skins
The playground's props on each platform: same tree, native shapes, type and touch sizes.
Usage
On light glass, the description and currency prefix use the stronger foreground color. For custom body content, use the default Typography foreground for message copy over the dimmed background.
Browser Escape and iOS accessibility escape cancel the foremost open child overlay before the dialog. Cancelling the dialog calls onCancel and requests open=false, including destructive dialogs and dialogs with custom children. A controlled owner may keep it open; that request never confirms an action.
Pass dismissible to let a backdrop press follow the same cancel policy. It is off by default, so existing dialogs and destructive confirmations keep their current outside-press behavior. The scrim is excluded from keyboard navigation.
Tokens
Read from the playground render. Values follow the scheme and the ion hue.
--bf
--bg2
--bls
--bw
--f-dp
--fd
--ft
--gl
--ion
--ion-fg
--ln
--ln2
--scrim
--sf3
--sh-lg
--tx
--tx2
--tx3