06 — Motion System
Motion Principles
Section Overview
What This Is
The Motion System specifies duration values, easing functions, and choreography models permitted in IDL. Motion is governed as a token-referenced subsystem.
Why It Exists
Unconstrained motion produces platform-inconsistent timing, easing drift, and accessibility regressions. Named tokens and declared choreography ensure reproducible, verifiable animation.
How It Works
Duration and easing tokens are referenced by name in state transition declarations. Absolute values are Transform errors. Choreography declares sequencing against slot graphs.
motion.duration.fast → 100ms
motion.easing.decelerate
component.button: idle → hover
All motion parameters resolve through named token references. Absolute timing values are compile-time errors.
Motion in IDL serves three purposes: orientation (communicating spatial relationships and object identity across transitions), feedback (confirming user actions and system state changes), and continuity (maintaining context during content changes and layout shifts). Decorative motion — animation that serves neither orientation, feedback, nor continuity — is outside the specification and MUST NOT be declared in IDL source.
Motion as a Constraint Domain
Motion is treated as a first-class constraint domain in IDL, not as a stylistic layer applied to components after the fact. Every animation in an IDL-governed system is declared in component state transition specifications, references named duration and easing tokens, and is subject to the same compiler validation as any other component property.
Accessibility Requirement
All IDL motion declarations MUST be suppressible in response to a prefers-reduced-motion system signal. Emitters MUST implement motion suppression for their target platform. Motion that cannot be suppressed without loss of essential function MUST be declared with a reduced-motion-fallback annotation that specifies the reduced behavior. This is a normative requirement, not a recommendation.
Motion and State Machines
Motion is declared at the state transition level, not at the component level. A transition from state A to state B carries an optional motion declaration that specifies the duration token, easing token, and choreography model for that specific transition. Motion is thus always tied to a semantic event, never to arbitrary timing.