DIALOGS & SHEETS

When to Use

Example: product shelf + Quick view dialog (decorative)

  • Confirming destructive or irreversible actions (e.g. delete, discard changes)
  • Collecting short-form input that must be completed before proceeding
  • Presenting supplementary content in a side panel (Sheet) without leaving the current view
  • Showing a compact product summary from a listing (Quick view) without navigating to PDP
  • Avoid dialogs for long or complex forms — use a dedicated page instead

Usage Guidelines

DO

Keep titles concise and use red confirm buttons for destructive actions. Always provide a cancel/close path

Don’t

Don't nest dialogs — use a multi-step flow instead

DO

Keep forms inside dialogs simple (≤ 3 fields)

Don’t

Don't show large amounts of content in a dialog — use a separate page. Don't use dialogs for non-urgent information — use Toast instead

DO

Always provide a way out — keep at least one exit path (close button, cancel, or Escape)

Don’t

Don't disable all closing paths — users need a way out. Don't show large amounts of content in a dialog — use a separate page

Interaction Behavior

StateDescription
OpenOverlay fades in + dialog scales up from center; focus moves to first interactive element
Content interactionFocus is trapped inside dialog (focus trap), Tab cycles within
Click overlayCloses dialog (when closable=true)
EscapeAlways available, closes dialog
CloseAnimation reverses; focus returns to trigger element; page scroll resumes

Accessibility

RequirementImplementation
Semantic rolerole="dialog" + aria-modal="true"
Title associationaria-labelledby linked to the title element ID
Content descriptionaria-describedby linked to the body
Focus trapTab cycles within the dialog; cannot escape
Focus restorationFocus returns to the trigger button on close
Scroll lockDisables <body> scroll on open (overflow: hidden)