Centered modal — Sheet's desktop-centered sibling. Behavior is Radix Dialog; the title prop is required because a dialog must name itself.
Anatomy
┈┈ overlay (black/50 + blur) ┈┈ ┌ Title × ┐ │ description │ │ body │ │ [btn] [btn] │ ← footer, right-aligned └───────────────────────┘ rounded-sheet, shadow-overlay
Props
| Prop | Type | Default | Notes |
|---|---|---|---|
open / onOpenChange | controlled pair | — | Caller owns state. |
title | string | required | Radix Title → accessible name. |
description | string | — | Radix Description → aria-describedby. |
children | ReactNode | — | Body. |
footer | ReactNode | — | Action row (destructive actions confirm here). |
className | string | — | cn-merged onto the panel. |
Motion
fade-in-0 + zoom-in-95 presets on open, reverse on close; reduced-motion collapses via the global reset.
A11y
- · Radix Dialog: focus trap, Escape, overlay dismiss, focus restore to the opener.
- · Required
title= accessible name;descriptionwired toaria-describedby(suppressed cleanly when absent). - · Use for destructive confirmations (CLAUDE.md: destructive actions require an explicit step).