Drawer and tray anatomy

Rendered anatomy and behavior contracts for native drawers and store-backed trays

Chirp UI ships two slide-out panel contracts:

  • drawer(...) and drawer_trigger(...) from chirpui/drawer.html
  • tray(...) and tray_trigger(...) from chirpui/tray.html

Native drawers render<dialog> and open through chirpuiDialogTarget(). Trays render a div-based dialog controlled throughAlpine.store("trays"), withx-trap.inert.noscroll on the panel and a chirpui:tray-closedevent.

The full rendered contract, ARIA roles, focus and close behavior, event payloads, and proof locations live in the canonical source guide: docs/DRAWER-TRAY-ANATOMY.md.