What problem does it solve?
Enforces an opinionated UI baseline to prevent AI-generated interface slop, helping teams maintain consistency and accessibility across products.
Core Features & Use Cases
- MUST use Tailwind CSS defaults unless custom values already exist or are explicitly requested
- MUST use motion/react (formerly framer-motion) when JavaScript animation is required
- SHOULD use tw-animate-css for entrance and micro-animations in Tailwind CSS
- MUST use cn utility (clsx + tailwind-merge) for class logic
- MUST use accessible component primitives for anything with keyboard or focus behavior
- MUST use the project’s existing component primitives first
- NEVER mix primitive systems within the same interaction surface
- SHOULD prefer Base UI for new primitives if compatible with the stack
- MUST add an aria-label to icon-only buttons
- NEVER rebuild keyboard or focus behavior by hand unless explicitly requested
- MUST use an AlertDialog for destructive or irreversible actions
- SHOULD use structural skeletons for loading states
- NEVER use h-screen, use h-dvh
- MUST respect safe-area-inset for fixed elements
- MUST show errors next to where the action happens
- NEVER block paste in input or textarea elements
- NEVER add animation unless explicitly requested
- MUST animate only compositor props (transform, opacity)
- NEVER animate layout properties (width, height, top, left, margin, padding)
- SHOULD avoid animating paint properties (background, color)
- SHOULD use ease-out on entrance
- NEVER exceed 200ms for interaction feedback
- MUST pause looping animations when off-screen
- SHOULD respect prefers-reduced-motion
- NEVER introduce custom easing curves unless explicitly requested
- SHOULD avoid animating large images or full-screen surfaces
- MUST use text-balance for headings and text-pretty for body
- MUST use tabular-nums for data
- SHOULD use truncate or line-clamp for dense UI
- NEVER modify letter-spacing unless explicitly requested
- MUST use a fixed z-index scale
- SHOULD use size-* for square elements instead of w-*
Quick Start
Review the current UI work and align components with the Baseline UI rules for Tailwind defaults, animations, accessibility, and primitives.