Overview
The demo is a "New report" dialog: a title, one labeled field and a primary action, with the page behind it blocked until the user submits or closes it. Focus moves into the field on open and returns to the button that opened it on close. Motion: enter (backdrop fade, card fade + scale 0.96 to 1): 220 ms, cubic-bezier(0.2, 0.8, 0.2, 1); exit (fade + scale to 0.96): 160 ms, cubic-bezier(0.4, 0, 1, 1); button hover: 120 ms, cubic-bezier(0.2, 0.8, 0.2, 1). Every duration and easing curve lives in one tokens file, so changing a value there changes the motion everywhere. With reduced motion turned on, the component changes state without movement and stays fully usable. Built with React 19 and TypeScript, Tailwind CSS 4 and Motion, with keyboard and screen reader behavior from Base UI. Light and dark themes come from CSS variables you can edit. Included: the component source, the accessible behavior it is built on, shared motion tokens, light and dark theme variables, a runnable demo page, and setup guides for people and for AI coding agents.
Highlights
- Production-ready, documented source
- Clean, componentized architecture
- Drops into your stack with minimal setup

