Motion
Motion no Pulso é funcional: confirma estado, orienta transição e reduz incerteza. Não use animação decorativa em superfícies de crise.
Durações
| Token | Valor | Uso |
|---|---|---|
--motion-duration-fast | 120ms | Hover, pressed, micro feedback |
--motion-duration-default | 200ms | Transições padrão |
--motion-duration-slow | 320ms | Dialogs, sheets, mudanças amplas |
--motion-haptic-light | 8ms | Feedback háptico leve em mobile |
Easing
| Token | Valor | Uso |
|---|---|---|
--motion-easing | cubic-bezier(0.2, 0.9, 0.3, 1) | UI geral |
--motion-easing-emphasized | cubic-bezier(0.22, 1, 0.36, 1) | Mudanças mais perceptíveis |
Padrões
<button className="transition-colors duration-[var(--motion-duration-fast)] ease-[var(--motion-easing)]">
Reconhecer alerta
</button><div className="animate-in fade-in duration-[var(--motion-duration-default)]">
Briefing atualizado
</div>Mobile v3
Gestos canônicos usam feedback previsível:
| Gesto | Feedback |
|---|---|
| Swipe-to-ack | haptic light ao soltar |
| Pull-to-refresh | haptic médio ao soltar |
| Long-press | haptic light aos 300ms |
| Drag bottom-sheet | haptic light ao trocar detent |
| Two-finger select | haptic light por item |
Redução de movimento
globals.css já reduz animações para 0.01ms quando prefers-reduced-motion: reduce está ativo. Não dependa de movimento como único sinal de estado.
Regras
- Transições de UI devem ficar até 320ms.
- Sem bounce em fluxo crítico.
- Loading só quando comunica espera real.
- Estado precisa estar legível mesmo com movimento reduzido.
Last updated on