What it governs
Every transition and animation: how long it takes and how it accelerates. Eleven tokens — seven durations and four easings. Motion is the least-decided foundation — see Open issues for what that leaves unsettled. Treat that as the cost of change: a color token overturns an Invoca decision, a duration token overturns nothing that has been written down.Vocabulary
Durations are named by length (shortest … complex) and easings by curve shape
(ease-in, ease-out, sharp). Neither names what the value is for, so there is no
shared way to say how Titan moves — see
TITAN-GAP-16.
Durations
Entering is slower than leaving (225ms vs 195ms), and that asymmetry is deliberate.
Arrival needs to be followed; departure needs to get out of the way. A dismissal that takes
as long as an appearance feels sluggish, because the user has already moved on.
Easings
Choosing a token
Token reference
Constraints
Retired
Accessibility
Reduced motion is the whole accessibility story for this foundation, and it is not currently implemented anywhere in the token layer.- Substitute, do not delete. A drawer that slid in should now appear instantly — it should still appear. Removing the transition must never remove the state change.
- Large-area movement is the harmful case. Full-screen slides, parallax, and zoom-on-scroll trigger vestibular symptoms. A 150ms color fade on a button does not. When in doubt, keep opacity, drop transform.
- Nothing flashes more than three times per second (WCAG 2.2 Three Flashes, AA). Loading indicators are the usual risk.
- Anything that moves for more than five seconds needs a pause control (Pause, Stop, Hide, AA). Indeterminate spinners on long operations are the case to watch.
- Motion must never be the only indication that something happened. Pair it with a text or state change a screen reader can announce.
Known issues
Motion: open issues
Divergences, open decisions, and undocumented gaps for Motion.
Related
2 core components consume this foundation — derived from token usage incomponents/core/src/components, not assumed:
Card · Dropzone