Open from anywhere
A button in one place opens a dialog defined elsewhere in the treeRecord anatomy
Identity glyph, action over human-readable name, identifier inline as a copy buttonCompound title
Title, subtitle, and identifier stand alone, no icon and no toolbarModal title toolbar
The title's toolbar slot holds secondary actions before the close buttonList-row keyed modals
Same elementId per row, distinguished by a unique modalKey plus typed argsAC Delco Q3
Brake & Chassis
Lighting SKUs
Filters (May)
Data table inside a modal
DataTable's own search box narrows the rows without leaving the dialogTabbed modal
Three panels of one record switch without changing routeContent list
ListItem rows for a flush file list, meta and actions holding their own lanesNew teammate form
Footer's next button stays disabled until the form validatesConfirmModal: delete preset
Destructive styling, trash icon, 'Yes, delete' defaultConfirmModal: beforeClose abort
A guard keeps the modal open until a condition is metReactive body
message as a render function re-renders with caller state: no snapshot stalenessMarkdown article
markdown-lite carries a full article's worth of bold, code, and linksStore selectors
The registry's read surface, for consumers that render outside useModal's owner componentselectedModalId · selectedModalKey · selectedModalArgsJotai atoms behind useModal: which element id is open, under which key, with which args. Subscribe to them directly when a distant component, a shell chrome badge, an analytics probe, needs the open-modal state without owning the modal.
Header and footer borders
ModalTitle and ModalFooter hideBorder toggle independentlyChrome
Toggle each border independently, then open the modalStyling slots
Every className the component exposes, and what it reachesModal
- className
- the modal-box, the panel itself
- dialogClassName
- the native dialog element behind it
ModalTitle
- className
- the header row
- titleClassName
- the title text
ModalFooter
- className
- the sticky footer row
ConfirmModal
- className
- the confirm box
- titleClassName
- the confirm title
- messageClassName
- the message body