All briefs
Motion / v1.0.0

Calm status transition system

A motion language for loading, success, warning, and failure that reinforces state changes without delaying repeat work.

Audience

Product teams designing operational workflows with frequent saves, uploads, and background jobs.

Job to be done

Make state changes legible, interruptible, and consistent across product surfaces.

Design direction

Use opacity, short distance, and contained scale changes. Motion should explain continuity and feedback, not decorate an idle screen.

Hierarchy

  1. 01Immediate state label
  2. 02Changed object
  3. 03Progress or outcome
  4. 04Recovery action
  5. 05Secondary detail

Required proof

  • 01Visible status text
  • 02Deterministic progress when available
  • 03Timestamp or completion detail for durable jobs

Required states

  • 01Idle
  • 02Pending
  • 03Progressing
  • 04Succeeded
  • 05Warning
  • 06Failed
  • 07Cancelled
  • 08Retrying

Responsive behavior

  • 01Keep movement distances below 16px on compact screens
  • 02Avoid viewport-wide travel for local state changes
  • 03Preserve status text when controls wrap

Constraints

  • 01Use transform and opacity for spatial motion
  • 02Do not delay user input while an exit animation runs
  • 03Keep repeated feedback shorter than first-run feedback

Accessibility

  • 01Provide a no-motion path with the same final state
  • 02Announce durable status changes through a polite live region
  • 03Never rely on motion or color alone

Verification

  • 01Interrupt each transition and confirm the UI reaches a valid state
  • 02Run with reduced motion and no animation support
  • 03Test rapid repeated actions for stale timers or duplicated announcements

Tradeoffs

  • 01Short transitions protect speed but provide less visual emphasis for rare events
  • 02A shared motion scale improves consistency but leaves less room for one-off expressive effects

Stack

ReactTailwind CSSMotion for React

Connected UI Grids assets