Overlays
Modal dialogs and drawers, built on the native <dialog> element — showModal() supplies the backdrop, Escape handling, and focus trap; a thin Stimulus controller opens and closes. These are live: click the buttons.
Modal dialogs
<div data-controller="dialog">
<button class="btn btn-secondary" data-action="dialog#open">Open</button>
<dialog class="modal" data-dialog-target="dialog"
data-action="click->dialog#backdropClose keydown.esc->dialog#close">
<div class="dialog-header">…</div>
<div class="dialog-body">…</div>
<div class="dialog-footer">
<button class="btn btn-primary" data-action="dialog#close">Save</button>
</div>
</dialog>
</div>
Drawers
<dialog class="drawer" data-dialog-target="dialog"
data-action="click->dialog#backdropClose keydown.esc->dialog#close">
<div class="drawer-layout">
<div class="dialog-header">…</div>
<div class="dialog-body">scrolls</div>
<div class="dialog-footer">pinned</div>
</div>
</dialog>