Modal · overlay
ESC, backdrop click, and ✕ all close it; body scroll locks while open.
Usage
import { signal } from "./index.js";
import { Modal } from "./components/modal.js";
const open = signal(false);
// ESC, backdrop, and ✕ all close it; body scroll locks and Tab is trapped inside.
Modal({
open,
title: "Subscribe",
children: html`<p>Dialog body…</p>`,
footer: html`${Button({ label: "Confirm", onClick: () => open.set(false) })}`,
})