Usage
Dialog overlays the page with a single focused task: confirm a serious action, collect required fields, or surface information the operator must not miss. It demands attention and temporarily suspends the background. The mental model is "stop, decide, continue"—and the component earns its weight only when the alternative is silent data loss or a mis-sent decision. Overuse trains users to dismiss without reading, so a dispatch console should have few modals, and each one should be consequential.
TakeoverModal or a dedicated page.
If a message must persist until the operator explicitly acknowledges it (license warnings, on-call handoffs, training debriefs), a modal is the right weight. A dismissible Snackbar or inline Banner lets the user miss it; a modal guarantees a click.
Popover or inline expansion. Forcing them into a modal interrupts the flow and trains operators to dismiss modals reflexively.
When users need to keep a data table, incident, or transcript visible while they work, use Drawer (anchored side panel) or TakeoverModal (full-screen workflow). A modal hides the context behind a backdrop; long flows feel airless inside one.
Background-sync toasts, save-succeeded confirmations, and other disposable outcomes belong in Snackbar. Modals should not announce routine events.
If the content could live inline (policy notes, read-only detail), a modal adds weight without adding clarity. Ask whether the user needs a blocking moment or just information—if it's the latter, a Banner or static section is better.
| Shape | Purpose | Emphasis |
|---|---|---|
| Standard confirm / form | Single decision or short form | One primary action, explicit cancel |
| Destructive primary | Irreversible operations | Destructive type on the primary button; body lists impacts |
| Non-dismissible | Required user choice | Rare; disable Escape and backdrop close only with product approval |
| Stacked | Secondary confirmation on top of the first | Keep depth shallow; each layer must add clarity, not noise |
formatMessage; test the longest expected translation inside the modal's width before shipping.