Sheet
Display content in a side panel that slides in from the edge of the screen.
Best Practices
When to use
- Use Sheet for persistent associated context like deployment details, log row inspection, or a member profile, where the underlying page stays useful.
- For a blocking decision, use Modal. For a mobile-only bottom sheet, use Drawer.
- Don’t use Sheet to confirm destructive actions. The default
modal=falsekeeps the page interactive, which weakens severity for a delete or revoke.
Behavior
- Sheet defaults to
modal=falseso toasts and other high-z elements stay reachable. Keep that default unless the sheet owns the screen. - Pick
sidefrom the trigger location: a row inspector slides fromright, a global filter fromleft. Don’t change sides mid-session. - Outside-click does not auto-close, so always render an explicit close affordance and honor Escape.
Content
- Title is Title Case and names the entity (
Deployment Details,Member Profile), not the page action. - Body is read-mostly: sentence case prose with Title Case sub-headings. Action buttons are optional; when present, follow
Verb + Noun. - Don’t duplicate the page header inside the sheet; the sheet is the detail layer.
Accessibility
- Trap focus inside the sheet while it’s open and return focus to the trigger row on close so keyboard users keep their place in the list.
- Provide a visible close button labeled
Close(or an icon button witharia-label="Close") since clicking outside doesn’t dismiss. - Announce the sheet with
aria-labelledbypointing at the title; pair it witharia-describedbyonly when the body is short and load-bearing.
Was this helpful?