Animation anchors
Every animation in Aura should be tested against three qualities. If motion does not reinforce at least one of these, reconsider whether it is needed.Flow
Motion should move with continuity. Elements arrive and leave with a clear sense of direction and connection — no jumps or teleporting. When an element appears, it should grow into place with a natural stagger; when it disappears, it should recede with intention. Test: Can I follow the motion with my eyes without losing my place?Calm
Because Aura handles complex, high-stakes data, motion must not compete for the user’s focus. Easings do not overshoot, staggers do not drag, and nothing bounces when it should settle. Calm does not mean slow — most motion in Aura is quiet and fast. It should serve the task and then get out of the way. Expressive motion must be earned. Test: Does this still feel good after 8 hours of use?Tactile
The interface should feel like something you can reach into. Movement should make the function of interactive elements obvious — buttons snap, panels slide from the edge they belong to, and cards lift when selected. Tactile motion builds intuition so users know what to do without reading labels. Test: Can I tell what’s interactive just by how it moves?Expressive and productive motion
Every animation in Aura serves one of two roles. Choosing the right role determines how visible, fast, and expressive the motion should be.Guidelines
- Default to productive motion for everyday UI.
- Escalate to expressive only when the moment carries narrative weight.
- Productive motion keeps the interface feeling responsive and connected without competing for focus.
- Expressive motion gives the system its character — but overuse trains users to ignore it.
What to animate
Every animation is built from a combination of basic properties. Knowing what you can change helps you make deliberate choices about how an element enters, exits, or transitions between states.Guidelines
- Combine properties intentionally — opacity plus position creates softer transitions than position alone.
- Animate only the properties that communicate the change. Do not animate everything by default.
- Use token-backed color utilities for color transitions so theming stays consistent.
Timing
Timing is about when things move and for how long. Well-timed animations feel invisible; poor timing feels sluggish or abrupt.Guidelines
- Duration scales with area. Small UI elements (a checkbox, a menu item) need very short animations. Large transitions (a full panel or page) need more time. Values are relative to each other, not absolute.
- Stagger creates rhythm. When multiple elements animate, offset their timing so they reveal in sequence rather than all at once. Stagger draws attention to certain elements first and choreographs views with many moving parts.
- Exits are often slightly faster than entrances — once the user has made a choice, the UI should clear the way quickly.
Duration tokens
Stagger tokens
Easing
Easing brings a sense of real-world momentum to digital interfaces. Nothing starts or stops instantly — movement needs time to build and slow down. Heavier elements start slower and settle with more weight; lightweight elements respond quickly with less resistance.Tokens
Pairing guide
Applied examples
Dropdown in (productive)
A dropdown panel drops down while being revealed. List items stagger in one by one as the panel opens, adding flow without slowing the interaction. Total duration: 233ms.Dropdown out (productive)
The panel closes slightly faster than it opens — the user no longer needs to read it. No stagger on list items keeps the exit clean. Button copy fades out and in to confirm the selection, with an accent wipe for tactile feedback. Total duration: 233ms.Graph entrance (expressive)
The main content animates in with a subtle scale and opacity change, arriving quickly and settling into place. Supporting elements follow with a stagger. The graph line draws on a separate, slower timeline so it does not compete with the primary entrance. Total duration: 467ms (graph line: 1333ms).Implementation
Use Tailwind utilities mapped to Aura motion tokens. Do not hardcodecubic-bezier() values or raw transition: 0.3s ease in product code.
Decision checklist
- Role — Is this productive (default) or expressive (earned)?
- Properties — Which properties communicate the change? Animate only those.
- Duration — Small element (
duration-200) or large surface (duration-500)? - Easing — Entering (
ease-entrance), exiting (ease-exit), in-view (ease-standard), or opacity/color (ease-sine)? - Stagger — Multiple elements? Offset with
stagger/tight,stagger/default, orstagger/wide. - Reduced motion — Respect
prefers-reduced-motion; disable or shorten non-essential animation.
Example
Aura primitives handle motion for most common interactions. For custom interactive elements, pair motion with the signifiers documented in Interaction states. Ensure focus and state changes remain accessible — see Accessibility.