Dialog

A modal interruption for a focused decision, confirmation, or short task — completed or dismissed before the page continues. If the user could keep working on the page, it isn't a Dialog.

Dialog · Default

Short decision or confirmation — footer actions end-aligned, dismissive before committing: ghost Cancel, then the primary (or danger) commit.

Dialog · Input

Compact modal task with one field and a committing primary action; anything longer than a field or two belongs on a page.

Dialog · Scroll

Longer read-only content scrolls in a constrained region (five size.control.md) while the title and footer never move.

Delete project?

This action cannot be undone. All project data will be permanently removed.

Invite member

Send an invitation to a teammate. They will receive access after accepting the invite.

Review changes

This release updates project permissions, notification defaults, and archive behavior. Review the changes before publishing.

Owners can now transfer projects without removing existing collaborators. Members keep their current access level unless the transfer policy is changed.

Notification defaults move from workspace settings to project settings. Existing muted projects stay muted after the release.

Archived projects remain searchable, but locked records cannot be edited until the project is restored.

Audit events are retained for compliance exports and continue to appear in project activity.

Usage notes

A dialog blocks; make the interruption earn itself.

VerdictRule
DoWrite specific, outcome-oriented titles (Delete project?, Invite member) — the title is the aria-labelledby target.
DoKeep body copy short; when content must scroll, constrain only the scroll region — the title and footer stay stable.
DoOrder the footer dismissive-before-committing — Cancel is a ghost Button, destructive confirmation a danger Button paired 1:1 with irreversible actions.
DoHonor the focus contract: trap inside while open, choose an intentional initial target, return focus to the trigger on close — native showModal() plus layer-2 behavior.
DoLet the scrim dismiss, but keep explicit Cancel and confirmation actions on destructive or data-loss dialogs.
Don’tTitle a dialog with a generic Are you sure? — name the outcome instead.
Don’tPut a long contextual task in a dialog — one field is a Dialog, extended contextual work is a Sheet, and a workflow that should own history is a page.
Don’tNest dialogs — close or replace the current one first.