Overview
Orbital Motion is the shared animation layer for enter, exit, and reorder transitions across dialogs, drawers, toasts, menus, and other UI that mounts and unmounts in place.
Motion is organized in layers you compose bottom-up: tokens define timing, atoms map to CSS keyframe classes, presets (PresenceMotion) pair enter/exit atoms, OrbitalPresence applies them to conditional children, and OrbitalPresenceGroup staggers keyed lists. Product components (dialog, drawer, toast, and others) consume these primitives internally — you rarely wire atoms directly.
- Surfaces that open and close — dialogs, drawers, popovers, toasts, and anchored panels
- Conditional content — empty states, inline alerts, expandable regions, and step transitions
- Dynamic lists — items added, removed, or filtered where enter/exit should feel connected
Reach for motion when visibility changes should feel intentional. Skip it for static layout, always-visible chrome, or high-frequency updates where animation would distract.
- Pick a preset — start with
PresenceMotion::fadeorPresenceMotion::slidefor most surfaces. - Wrap conditional children in OrbitalPresence with a
showsignal andmotionpreset. - Tune timing with
PresenceMotion::with_duration,PresenceMotion::with_curve, or theme tokens from the Motion Tokens page. - Stagger lists with OrbitalPresenceGroup and keyed
OrbitalPresenceGroupItemchildren when several elements enter or leave together. - Respect accessibility — keep
respect_reduced_motionenabled (default) soprefers-reduced-motionusers get instant transitions.
Browse the catalog sections under Motion for atoms, presence APIs, choreography, tokens, and reduced-motion behavior.
Motion stack
How tokens, atoms, presets, presence, and choreography fit together — with a live fade toggle.
Tokens
Durations and easing curves from theme `--orb-motion-duration-*` and `--orb-motion-ease-*` variables.
Atoms
CSS keyframe classes for fade, slide, scale, collapse, blur, and rotate.
Presets
`PresenceMotion` bundles matching enter/exit atoms — the API most components use.
Presence
`OrbitalPresence` mounts/unmounts children with transitions; used by dialogs, drawers, toasts, and overlays.
Choreography
`OrbitalPresenceGroup` staggers keyed lists so items enter and leave in sequence.
Try presence