Tokens
Motion
The base layer animates by setting data-state and leaving the transition to CSS. Without these tokens every component picks its own number.
Duration
Distance sets duration. A tooltip travels almost nowhere and is done in 150ms; a sheet crossing the screen needs 400ms or it reads as a jump cut.
duration[70]70msHover and press color changesduration[100]100msCheckbox, switch, icon rotationduration[150]150msTooltip, badge, inline expandduration[200]200msThe default: popover, dropdown, toastduration[300]300msDialog, drawerduration[400]400msBottom sheet, page transitionEasing
Direction sets easing. Something arriving decelerates so it lands; something leaving accelerates, because nobody waits out a dismissal they asked for.
easing.standardcubic-bezier(0.2, 0, 0, 1)Moves and resizes: anything staying on screeneasing.entrancecubic-bezier(0.05, 0.7, 0.1, 1)Appearing. Decelerates so it landseasing.exitcubic-bezier(0.3, 0, 0.8, 0.15)Leaving. Accelerates, and can be quickereasing.linearlinearSpinners and progressDurations are numbers because they are measurable; easings are names because a curve is four numbers, the same argument that keeps shadows on t-shirt sizes.