MSDR Design System

Motion

Animação existe para comunicar causa, continuidade e mudança de estado. Se não comunica nada, não deveria existir.

Durações

Clique para mover os blocos e comparar. Todos usam a mesma curva.

fast — 120ms
normal — 200ms
deliberate — 320ms

Curvas

Mesma duração, curvas diferentes. Standard é o padrão; emphasized entra com mais aceleração inicial.

standard
emphasized
exit

Press

Feedback tátil de 1px, embutido no Button do preset. Comunica que o clique foi registrado.

Entrada e saída

Usa Motion for React com os tokens compartilhados. Com reduced motion, o deslocamento é removido e resta apenas o fade.

Este bloco entra e sai com transition.emphasized.

Lista — entrada e saída

Escalonamento curto de propósito: escalonamento longo vira decoração e atrasa a leitura.

  • Aurora Labs
  • Dunas Tech

Expandir e recolher

Collapsible e Tabs já animam pelo preset — nada a configurar por tela.

O indicador desliza entre as abas.

O que não animar

— Todos os cards ao carregar a página

— Texto entrando durante o scroll

— Hover que não muda estado

— Números contando até o valor final

Durações em JavaScript vivem em src/lib/motion.ts e espelham os tokens do CSS (120ms / 200ms / 320ms). Onde há deslocamento, useReducedMotion() o remove; onde há apenas transição CSS, os tokens zerados já resolvem.