Pular para o conteúdo
Skillpedia
Interfaces (UI/UX)280 mil · #87

motion-foundations

Ajuda seu agente a configurar as bases para animações em interfaces. Define regras e padrões para animações funcionarem bem em diferentes dispositivos.

O que ela faz

Esta ferramenta ajuda a configurar animações em sites feitos com React ou Next.js. Ela define regras e valores básicos para que as animações funcionem bem em diferentes dispositivos e para todos os usuários, incluindo aqueles que preferem menos movimento.

Quando usar

  • ✓Ao iniciar um novo componente animado.
  • ✓Ao definir as configurações de velocidade e 'suavidade' das animações.
  • ✓Ao garantir que animações não atrapalhem usuários com preferência por menos movimento.

Exemplo do que pedir para a IA

“Configure as animações básicas para o meu site.”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/affaan-m/ECC/blob/main/pi/core/skills/motion-foundations/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/affaan-m/ECC/blob/main/pi/core/skills/motion-foundations/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Ela cria um conjunto de 'tokens' (valores pré-definidos para tempo, distância, etc.) e regras. Isso garante que as animações sejam consistentes, acessíveis e seguras para carregar em servidores.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add affaan-m/ECC --skill motion-foundations

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/pi/core/skills/motion-foundations/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Fundamentos de Movimento

A camada base do sistema de movimento. Define cada valor, restrição e regra que as habilidades downstream (motion-patterns, motion-advanced) herdam. Carregue esta habilidade antes que qualquer trabalho de animação comece.

Quando Ativar

  • Iniciando qualquer componente animado do zero
  • Configurando tokens, predefinições de mola ou valores de easing
  • Implementando suporte a prefers-reduced-motion
  • Depurando incompatibilidades de hidratação de estados iniciais de animação
  • Avaliando se uma animação deve existir

Saídas

Esta habilidade produz:

  • Um objeto motionTokens compartilhado (duração, easing, distância, escala)
  • Um mapa de predefinições springs compartilhado (5 configurações nomeadas)
  • Um portão shouldAnimate() usado por todos os componentes
  • Padrões de animação compatíveis com acessibilidade via useReducedMotion
  • Estados iniciais seguros para SSR com zero avisos de hidratação

Princípios

O movimento deve fazer pelo menos uma das seguintes coisas ou deve ser removido:

  • Guiar a atenção
  • Comunicar o estado
  • Preservar a continuidade espacial

A responsividade sempre supera a suavidade. Uma animação de 60 fps que causa atraso na entrada é pior do que nenhuma animação.

Regras

Estas são inegociáveis. Elas se aplicam a cada componente do sistema.

  1. Use apenas motion/react. Nunca importe de framer-motion. Nunca misture os dois na mesma árvore.
  2. initial deve corresponder à saída do servidor. Se o servidor renderizar opacity: 1, a prop initial também deve ser opacity: 1. Sem exceções.
  3. Movimento reduzido substitui tudo. Quando useReducedMotion() retorna true ou prefersReduced é true, todas as transformações são desabilitadas. Transições de opacidade de ≤ 0,2s são o único fallback permitido.
  4. Nunca anime propriedades de layout. width, height, top, left, margin, padding são banidos de animate. Use apenas transform e opacity.
  5. Todos os valores de token vêm de motionTokens. Durações e easings codificados em arquivos de componentes são proibidos.
  6. Todas as configurações de mola vêm do mapa springs. Valores inline de stiffness/damping são proibidos.
  7. "use client" é obrigatório em todos os arquivos que importam de motion/react.
  8. Nunca leia window ou navigator no nível do módulo. Sempre proteja com typeof window !== "undefined".

Orientação para Decisão

Escolhendo uma duração

Token Use quando
instant Exibição/ocultação de tooltip, anel de foco, atualização de badge
fast Feedback de botão, troca de ícone, alternância de chip
normal Abertura de modal, expansão de card, entrada de elemento de página
slow Entrada de herói, transição de página inteira
crawl Narrativa deliberada; use com moderação

Escolhendo uma mola

Preset Use quando
snappy UI padrão — botões, chips, itens de navegação
gentle Cards, modais, painéis chegando suavemente
bouncy Momentos lúdicos — estados vazios, onboarding
instant Tooltips, popovers, dropdowns
release Liberação de arrastar — sensação natural de física

Quando desabilitar a animação completamente

Desabilite (faça shouldAnimate() retornar false) quando:

  • prefersReduced é true
  • isLowEnd é true e a animação não é essencial
  • O elemento está fora da tela e nunca entrará na viewport
  • A animação é puramente decorativa, sem propósito de UX

Conceitos Principais

Sistema de tokens

// lib/motion-tokens.ts
export const motionTokens = {
  duration: {
    instant: 0.08,
    fast:    0.18,
    normal:  0.35,
    slow:    0.6,
    crawl:   1.0,
  },
  easing: {
    smooth: [0.22, 1, 0.36, 1],
    sharp:  [0.4, 0, 0.2, 1],
    bounce: [0.34, 1.56, 0.64, 1],
    linear: [0, 0, 1, 1],
  },
  distance: {
    xs: 4,
    sm: 8,
    md: 16,
    lg: 24,
    xl: 48,
  },
  scale: {
    subtle: 0.98,
    press:  0.95,
    pop:    1.04,
  },
}

export const springs = {
  snappy:  { type: "spring", stiffness: 300, damping: 30 },
  gentle:  { type: "spring", stiffness: 120, damping: 14 },
  bouncy:  { type: "spring", stiffness: 400, damping: 10 },
  instant: { type: "spring", stiffness: 600, damping: 35 },
  release: { type: "spring", stiffness: 200, damping: 20, restDelta: 0.001 },
}

Flags de tempo de execução

// lib/motion-config.ts
export const motionConfig = {
  isLowEnd() {
    return (
      typeof navigator !== "undefined" &&
      navigator.hardwareConcurrency <= 4
    )
  },

  prefersReduced() {
    return (
      typeof window !== "undefined" &&
      window.matchMedia("(prefers-reduced-motion: reduce)").matches
    )
  },


…
Perguntas frequentes

O que são 'tokens' de animação?

São valores pré-definidos para coisas como duração (quão rápido algo se move), distância (o quão longe se move) e suavidade (como o movimento acelera e desacelera).

Por que é importante 'prefers-reduced-motion'?

Algumas pessoas preferem que os sites tenham menos animações por motivos de acessibilidade ou para evitar distrações. Essa configuração respeita essa preferência.

O que significa 'SSR-safe'?

Significa que as animações são configuradas para carregar corretamente mesmo quando o site é processado em um servidor antes de chegar ao navegador do usuário, evitando erros visuais.

Detalhes

Descrição original do autor

Motion tokens, spring presets, performance rules, device adaptation, accessibility enforcement, and SSR safety for React / Next.js using motion/react. Foundation layer — all other motion skills depend on this. Use when setting up motion tokens, spring presets, reduced-motion handling, or SSR-safe animation in React or Next.js.

repo: affaan-m/ECC

Popularidade

Estrelas no GitHub
280 mil
Posição no ranking
#87
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas