Dialog.
A modal that interrupts the flow for one decision — confirm, edit, or warn. It traps focus, dims the page behind a scrim, and returns focus to the trigger when it closes.
Overview
Title, body, and a footer where the primary action sits on the right.
Anatomy
Title, body, and a footer where the primary action sits on the right.
Variants
Four fixed widths, from a single confirmation to a full-width workspace review.
When to use
Confirmed in Material, Carbon, and Polaris — every one of them gives this its own standalone block, before any comparison to other components.
Choosing the right component
Picking the right component matters more than getting the dialog itself pixel-perfect. Use the table below to route to the right one.
Behaviour
How a dialog opens, closes, and responds while it's on screen.
Content
Dialog-specific writing rules. For general voice, grammar, and tone, see Voice & content.
Accessibility
A dialog that doesn't trap focus is a trap of a different kind.
Usage guidelines
What separates a dialog that respects the user's flow from one that fights it — shown, not just described.
Footer actions
Title phrasing
Right-sizing
Specifications
Title, body, and a footer where the primary action sits on the right.
var(--radius-4)Auto300–1140px100pxTitle/Small SemiboldBody/Medium RegularSmall2x-largevar(--space-m)var(--space-m)var(--space-m)var(--space-m)var(--space-xs)var(--shadow-overlay)rgba(0, 0, 0, 0.15)Props (React)
type DialogProps = {
open: boolean;
onClose: () => void; // Esc, scrim click, or close button
title: string; // wired to aria-labelledby
children: ReactNode; // body content
footer?: ReactNode; // actions — primary on the right
size?: 'small' | 'medium' | 'large' | 'x-large'; // default 'medium'
dismissible?: boolean; // default true; false for destructive confirms
};