Replace onMount+onCleanup with createEffect watching ctx.isOpen() and ctx.modal(), so focusTrap/scrollLock/dismiss activate/deactivate reactively on every open/close — including when forceMount keeps the component mounted. Note: role="dialog" was omitted; the project's Biome rules flag it as redundant (noRedundantRoles) since <dialog> carries the implicit role.
Description
51 headless Web Components. 0 deps. ~5KB. Popover API, native Dialog, Navigation API. AI-native.
Languages
TypeScript
74.6%
CSS
17.6%
HTML
7.3%
Shell
0.5%