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

Tab

Componente estável e recomendada para novos projetos.
Anatomia, uso, comportamento visual e recomendações conceituais são mantidos pelo Padrão Digital de Governo. Esta página documenta a implementação Web Components e sua API executável.

Visão Geral​

O componente br-tab é o organizador de navegação por abas do GovBR-DS, desenvolvido para permitir que a pessoa usuária alterne entre diferentes visões ou painéis de conteúdo correlacionados sem sair da mesma página.

Para que serve​

  • Segmentação de conteúdo em mesmo nível: Agrupa informações que compartilham o mesmo contexto geral (ex.: "Visão Geral", "Especificações", "Histórico", "Anexos").
  • Economia de espaço vertical: Evita rolagens excessivas na página mantendo apenas o painel selecionado visível no momento.
  • Navegação acessível WAI-ARIA Tablist: Implementa o padrão oficial de abas acessíveis: papéis semânticos tablist, tab e tabpanel, com controle total por setas do teclado e foco cíclico.

Quando utilizar​

  • Utilize quando:
    • Houver conjuntos equivalentes de informação entre os quais a pessoa usuária pode navegar livremente e em qualquer ordem.
  • Evite e prefira outro componente quando:
    • O conteúdo for sequencial com dependência de avanço ou conclusão de etapas anteriores (prefira br-step ou br-wizard).
    • As abas tiverem a função de navegar para rotas e URLs distintas da aplicação (prefira uma barra de links com br-link ou br-header).

Composição e Subcomponentes​

SubcomponentePapelRegra de uso
br-tab-itemAba e painel associado. Define simultaneamente o rótulo do botão da aba e o conteúdo do painel correspondente.Declarado no slot padrão do br-tab.
br-tabOrquestrador de abas. Constrói a barra de navegação acessível (tablist), controla a aba ativa e gerencia o teclado.Contêiner raiz obrigatório declarado no template.

Como os subcomponentes se relacionam​

O br-tab adota uma arquitetura declarativa prática:

  1. A aplicação declara os elementos br-tab-item dentro do slot padrão do br-tab.
  2. O componente pai extrai os rótulos e ícones de cada item para renderizar a barra superior de abas (role="tab").
  3. O pai controla a visibilidade dos painéis (role="tabpanel"), exibindo exclusivamente o conteúdo da aba selecionada e garantindo a correlação de IDs acessíveis (aria-controls, aria-labelledby).

Para a documentação completa de design, incluindo diretrizes de acessibilidade e especificações visuais, consulte o Design System do GovBR.

Exemplo(s)​

Desktop (100%)
Tablet - 768px
iPhone (iOS) - 390x844
Android - 360x800
Padrão
Compartilhar URL
Ativar movimento reduzido
Mudar fundo
Abrir no StackBlitz
Mais opções
Tela cheia
Carregando preview…
HTML
Controles do componente
Console: logs, eventos e erros
Angular (Somente leitura)
React (Somente leitura)
Vue (Somente leitura)
Acessibilidade
Recolher controles e código
Desfazer alteração
Refazer alteração
Comparar alterações
Formatar código
Resetar código para o estado inicial
Escolher formato para copiar

Propriedades​

activeTabId​

Atributoactive-tab-id
DescriçãoID do tab atualmente ativo
Tipostring
Valor padrão''

alignItemsTab Componente mantido por compatibilidade; prefira a alternativa indicada na documentação.​

Atributoalign-items-tab
DepreciaçãoUse alignment.
DescriçãoDefine o alinhamento horizontal dos itens da tab na barra de navegação.
Tipo"center" | "end" | "start"
Valor padrão'start'

alignment​

Atributoalignment
DescriçãoAlinhamento horizontal canônico. Quando informado, tem precedência sobre alignItemsTab; valores inválidos usam start.
Tipo"center" | "end" | "start"
Valor padrão---

colorMode​

Atributocolor-mode
DescriçãoDefine se o Tab usará um esquema de cores escuro. Valores inválidos são ignorados.
Tipo"dark"
Valor padrão---

customId​

Atributocustom-id
DescriçãoIdentificador único do componente.
Quando omitido, um valor é gerado automaticamente.

> Padrão: valor único gerado por generateUniqueId().
Tipostring
Valor padrãogenerateUniqueId()

density​

Atributodensity
DescriçãoDefine a densidade visual do componente.

- small: Alta densidade (componente menor, mais compacto e com menos espaçamento).
- medium: Densidade intermediária, padrão recomendado para a maioria dos casos.
- large: Baixa densidade (componente maior, mais espaçamento e altura).

Valores inválidos usam medium.
Tipo"large" | "medium" | "small"
Valor padrão'medium'

height​

Atributoheight
DescriçãoDefine a altura máxima da área de conteúdo, ativando o scroll interno quando o conteúdo ultrapassa essa altura.
Tipostring
Valor padrão---

label​

Atributolabel
DescriçãoLabel de acessibilidade para a navegação das tabs
Tipostring
Valor padrão'Abas de Navegação'

scrollDisabled Componente mantido por compatibilidade; prefira a alternativa indicada na documentação.​

Atributoscroll-disabled
DepreciaçãoUse scrollable.
DescriçãoDesabilita o scroll automático da área de conteúdo.
Por padrão, o scroll vertical fica apenas na região de conteúdo.
Tipoboolean
Valor padrãofalse

scrollable​

Atributoscrollable
DescriçãoControla o scroll interno. Quando informado, tem precedência sobre scrollDisabled.
Tipoboolean
Valor padrão---

Slots​

NomeDescrição
"default"Slot para inserir os itens das abas (br-tab-item)

Eventos​

EventoDescriçãoDepreciaçãoPropagação
brTabChangeEvento disparado quando um tab é ativado.---true

Métodos​

getActiveTab​

DescriçãoRetorna o identificador da aba ativa atual.
AssinaturagetActiveTab() => Promise<string | undefined>
Parâmetros---

setActiveTab​

DescriçãoAtiva programaticamente uma aba a partir do seu identificador.
AssinaturasetActiveTab(tabId: string) => Promise<void>
ParâmetrostabId: Identificador da aba (tab-item-id).

CSS Shadow Parts​

NomeDescrição
"button"Botão individual de cada aba.
"container"Contêiner principal que envolve toda a estrutura do componente (navegação e conteúdo). Expõe o elemento para customizações de fundo, bordas e espaçamentos globais.
"content"Área de conteúdo das abas.
"indicator"Indicador visual da aba ativa.
"nav"Área de navegação (tablist) onde os botões das abas estão localizados. Permite customizar o alinhamento, espaçamento e plano de fundo da barra de abas.

Acessibilidade​

O br-tab implementa o padrão APG de abas. A barra é um role="tablist" com nome acessível vindo de label. Cada botão é role="tab" com aria-selected, aria-setsize/aria-posinset e roving tabindex (tabindex="0" só na aba ativa, -1 nas demais). O painel exibido é o role="tabpanel" correlacionado por aria-labelledby/aria-controls com a aba, e é focável.

Teclado​

  • ArrowRight/ArrowLeft (e as verticais quando o layout for vertical) movem o foco entre as abas e ativam a aba focada.
  • Tab a partir da barra leva ao painel da aba ativa.
  • Apenas o painel da aba selecionada é renderizado/visível.

Estrutura​

Cada br-tab-item fornece rótulo, ícone opcional e um contador opcional (que entra no nome acessível da aba, ex.: "Mensagens (3)"). Mantenha rótulos curtos e distintos.

Movimento​

O indicador da aba ativa e a transição de conteúdo respeitam prefers-reduced-motion: reduce.

Dependências​

Subcomponentes​

Depende de​

Gráfico​

Migração de <br-tab> para a composição atual (1.x → 2.x)​

A 1.x registrava br-tab e br-tab-item como elementos Vue. Na 2.x, use a composição atual com br-tab como contêiner e br-tab-item para cada aba.

Propriedades e composição​

API 1.xAPI 2.xAção na migração
—activeTabId, alignment, scrollableUse para controlar a aba ativa e o comportamento do conjunto.
counterconteúdo/propriedade do br-tab-itemMova para o item da aba.
densitydensityMantenha.
invertedcolorModeRenomeie.
labellabelMantenha no item correspondente.

Exemplo​

1.x:

<br-tab :tabs="tabs" inverted></br-tab>

2.x:

<br-tab active-tab-id="inicio" color-mode="inverted">
<br-tab-item id="inicio" label="Início">Conteúdo</br-tab-item>
<br-tab-item id="ajuda" label="Ajuda">Conteúdo</br-tab-item>
</br-tab>
Comece aquiComponentesQuickstartsSobre o projetoRepositório GitLabVersõesDiscordGovBR-DSFAQWikiRedefinir cookies