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.

Conceptual Model
Duration token
motion.duration.fast → 100ms
+
Easing token
motion.easing.decelerate
↓ referenced by
State transition declaration
component.button: idle → hover
↓ resolved at Emit
CSS transition
|
Native animation

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.