Ir para o conteúdo principal
WBC - GovBR-DS
Copiar página como Markdown para IA

Movimento e elevação nos Web Components

Este guia aplica as diretrizes de movimento do GovBR-DS e elevação ao pacote Web Components. Movimento é usado somente quando explica uma mudança de estado, hierarquia ou progresso; ele não é adicionado como decoração a componentes estáticos.

Política de movimento​

O pacote usa os tokens de duração e easing disponíveis no @govbr-ds/core compatível com a versão publicada. Não existe uma prop global de animação.

SituaçãoDuração de referênciaPropriedades permitidas
Feedback e indicador100 mscor, opacidade, sombra
Entrada de disclosure ou superfície300 msopacidade e ícones internos
Navegação, painel e progresso500 msopacidade, indicador e progresso contido
Carregamento contínuovelocidade configuradatraço/rotação do indicador

Entradas usam ease-out; saídas usam ease-in somente quando o elemento continua renderizado; estados reversíveis usam ease-in-out. Fechamento, foco, Escape, eventos e remoção da top layer continuam imediatos.

Famílias cobertas​

  • Superfícies e disclosures: Breadcrumb, Collapse, CookieBar, DateTimePicker, Dropdown, Footer Category, Header List/Search, List, Menu, Modal, Notification, Scrim, Select e Tooltip.
  • Navegação e progresso: Carousel, Loading, Tab e Wizard.
  • Microinterações existentes: Header sticky, Slider, Switch, Tag e Skip Link.
  • Sem novo movimento: componentes de conteúdo, formulário, tabela, ações e indicadores que não precisam de transição para comunicar estado.

Subcomponentes e aliases herdam a política da família. Uma mudança de opacidade não substitui aria-expanded, aria-selected, aria-busy, foco visível ou qualquer outro estado semântico.

Redução de movimento​

As regras ficam estáticas por padrão e são habilitadas somente em @media (prefers-reduced-motion: no-preference). Com reduce:

  • superfícies abrem sem transição e não deslocam conteúdo;
  • Loading permanece visível, porém estático; no modo progressivo, a interpolação do percentual é cancelada;
  • Carousel não inicia autoplay, pausa se a preferência mudar durante a reprodução e não reinicia sozinho quando a preferência voltar ao normal;
  • controles Play/Pause, teclado, foco e eventos continuam disponíveis.

Essa política atende à preferência do usuário documentada pela MDN e aos critérios WCAG de animação decorrente de interação e pausar, parar ou ocultar movimento.

Elevação e composição​

Sombra e empilhamento são responsabilidades diferentes:

CamadaUso
0fluxo normal e conteúdo
1Dropdown, Select, Notification e fallback de Tooltip
2navegação persistente e Header
3Menu temporário
4bloqueadores e fallbacks
top layerModal, Scrim fullscreen, CookieBar bloqueante, Menu sobreposto e Popover nativo

Máscara e painel usam subcamadas locais. Hosts, âncoras e alvos posicionados pelo Floating UI não recebem transform, z-index animado ou will-change permanente. Card e Magic Button mantêm sua sombra visual sem criar uma camada global.

Checklist do consumidor​

  • Teste no-preference e reduce em teclado e leitor de tela.
  • Confirme que o foco não fica oculto por uma superfície elevada.
  • Não use tooltip ou movimento como única comunicação de erro, instrução ou estado.
  • Ao combinar superfícies, mantenha Modal/Scrim/CookieBar bloqueantes acima de menus e tooltips.
  • Para Carousel com autoplay, mantenha um controle Play/Pause visível e acionável.
Comece aquiComponentesQuickstartsSobre o projetoRepositório GitLabVersõesDiscordGovBR-DSFAQWikiRedefinir cookies