Skip to content

Motion — Transitions

themes specs/themes/motion/transitions.kmd

Transition pattern catalog for Koder UI — 7 canonical patterns (fade, scale, slide, container transform, shared axis, push/pop, cross-fade), per-state motion, and page-level transitions. Consumes duration + easing tokens from `easing-duration.kmd` and spring tokens from `physics.kmd`.

When this spec applies

Primary triggers

All triggers

Specification body

Spec — Motion: Transitions

Facet Visual do Koder Design. Material parity: https://m3.material.io/styles/motion/transitions/transition-patterns.

R1 — Transition pattern catalog

PatternUseTokens
FadeDisappear/appear with no spatial implicationduration: fast/medium, easing: standard
ScaleElement zooming into view (modal, FAB expanding)medium, decelerate
SlideDrawer, bottom sheet, page transitionmedium, decelerate (in), accelerate (out)
Container transformCard → detail page (shared element)slow, emphasize
Shared axisStepwise nav (onboarding, wizard)medium, standard
Push/PopStack-based nav (mobile back)medium, decelerate
Cross-fadeTab switch within same contextfast, standard

Tokens reference motion/easing-duration.kmd R1-R2. Gestural variants (drag-to-dismiss, swipe-back) MUST use spring tokens from motion/physics.kmd R4.1.

R2 — Per-state motion

State transitions per interaction/states.kmd:

State changePatternDuration
Hover (enter)Color/elevation tweenfast (100ms)
Hover (exit)Color/elevation tween reversefast
FocusFocus ring fade-ininstant (50ms)
PressScale 0.97 (touch) or color flashfast in, medium out
Drag startLift (elevation +2)medium
Drag endSettle (elevation -2)medium
SelectionBackground tint fadefast
DisabledOpacity fade to 0.38medium

R3 — Page-level transitions

FromToPattern
Same surface (tab switch)Cross-fade or shared axis (horizontal)fast
Push detail (list-detail)Slide left/pushmedium, decelerate
Pop detail (back)Slide right/popmedium, decelerate
Modal openFade + scale 0.95→1.0medium, decelerate
Modal closeReversefast, accelerate
Drawer slideSlide from edgemedium, decelerate

R4 — Pattern decision tree

What is changing on screen?
├── Single element appearing/disappearing
│   ├── No spatial change      → Fade
│   ├── Growing into place     → Scale (decelerate)
│   └── From a parent element  → Container transform (shared element)
├── Stack of screens (nav)
│   ├── Pushing forward        → Push (slide left)
│   ├── Popping back           → Pop (slide right)
│   └── Stepwise wizard        → Shared axis (horizontal)
├── Coordinated set of changes → Container transform / emphasize
└── Switching tabs in place    → Cross-fade
  • motion.kmd — index over all Motion sub-specs
  • motion/physics.kmd — spring tokens, reduced-motion contract
  • motion/easing-duration.kmd — duration + easing tokens
  • interaction/states.kmd — state-level motion details
  • navigation/back-behavior.kmd — Pop/back navigation contract

References