06 — Motion System
Easing Functions
Three easing categories are defined in IDL: linear, decelerate, and accelerate. Each is expressed as a cubic-bezier tuple that is the normative representation. Platform implementations MUST reproduce the specified bezier values within a tolerance of ±0.01. Custom easing functions require RFC approval; ad-hoc cubic-bezier values in component declarations are Transform errors.
Easing Reference
| Category | Token | Bezier | Use Case |
|---|---|---|---|
| Linear | motion.easing.linear | cubic-bezier(0, 0, 1, 1) | Continuous, uniform animations — progress bars, loaders. |
| Decelerate | motion.easing.decelerate | cubic-bezier(0, 0, 0.2, 1) | Objects entering the screen — elements arriving from outside the viewport. |
| Accelerate | motion.easing.accelerate | cubic-bezier(0.4, 0, 1, 1) | Objects leaving the screen — elements departing from the viewport. |
Easing and Perceptual Physics
The three easing categories map to physical motion archetypes. Decelerating easing gives arriving objects the quality of something that had velocity and came to rest — consistent with spatial metaphors for modal entry, panel expansion, and content loading. Accelerating easing gives departing objects the quality of something that built velocity to leave — consistent with modal dismissal and panel collapse. Linear easing is reserved for non-spatial, process-oriented animations.