Pular para o conteúdo
UI

Tabs

Conjunto de painéis de conteúdo sobrepostos, chamados de Tab Panels, exibidos um de cada vez.

Exemplos

Standalone (fora do header)

Barra de abas com borda e cantos arredondados, ideal para cards ou seções de conteúdo. Ocupa toda a largura do container, como a variante header.

Conteúdo de Início

Header (dentro do header)

Tabs que ocupam toda a largura, ideais para a navegação principal da página.

Conteúdo de Visão geral

Com ícones

As tabs podem ter ícones para facilitar a identificação visual.

Conteúdo de Início

Com badges

As tabs podem ter badges para indicar contagens ou status.

Mensagens recebidas

Tamanhos

As tabs estão disponíveis nos tamanhos md e lg.

Tamanho: md
Tamanho: lg

Personalização

Cada elemento pode ser personalizado individualmente com classes CSS.

Conteúdo personalizado

Não responsivo

Desative o comportamento responsivo para manter um tamanho fixo em todas as telas.

Conteúdo 1

Com aba desabilitada

As tabs podem ser desabilitadas para impedir a interação do usuário.

Conteúdo das tarefas ativas

API

Estrutura das Tabs

ComponenteDescriçãoUso
TabsComponente raiz que gerencia o estado das tabsContém todos os outros componentes de tabs
TabsListContainer dos triggers das tabsAgrupa os botões de navegação das tabs
TabsTriggerBotão clicável de cada abaAtiva o painel de conteúdo correspondente
TabsContentPainel de conteúdo de cada abaExibido quando a aba correspondente está ativa

Tabs

PropriedadeTipoValores possíveisPadrãoDescrição
defaultValuestringQualquer string-Valor da aba que fica ativa por padrão.
valuestringQualquer string-Valor controlado da aba ativa.
onValueChange(value: string) => void--Função chamada quando o valor da aba muda.
variant"header" | "standalone""header", "standalone""standalone"Estilo da barra de abas. standalone: barra com borda e cantos arredondados. header: só uma linha inferior, sem fundo, com padding lateral responsivo. As duas preenchem a largura do container.
size"md" | "lg""md", "lg""md"Tamanho das tabs.
responsivebooleantrue, falsetrueAtiva o comportamento responsivo, que ajusta o tamanho no mobile/tablet.
classNamestringQualquer classe CSS-Classes CSS adicionais para personalização.

TabsList

PropriedadeTipoValores possíveisPadrãoDescrição
classNamestringQualquer classe CSS-Classes CSS adicionais para personalização.
wrapperClassNamestringQualquer classe CSS-Classes CSS adicionais para o wrapper externo (data-slot="tabs-list-wrapper").
scrollContainerClassNamestringQualquer classe CSS-Classes CSS adicionais para o container de rolagem horizontal.
innerClassNamestringQualquer classe CSS-Classes CSS adicionais para o elemento interno que envolve a lista e o indicador.
indicatorClassNamestringQualquer classe CSS-Classes CSS adicionais para o indicador deslizante da aba ativa.
leftFadeClassNamestringQualquer classe CSS-Classes CSS adicionais para o degradê de fade à esquerda, exibido quando a lista é rolada.
rightFadeClassNamestringQualquer classe CSS-Classes CSS adicionais para o degradê de fade à direita, exibido quando há mais abas escondidas.

TabsTrigger

PropriedadeTipoValores possíveisPadrãoDescrição
valuestringQualquer string-Valor único que identifica a aba.
iconReact.ReactNodeQualquer nó React-Ícone exibido antes do texto da aba.
badgeReact.ReactNodeQualquer nó React-Badge exibido depois do texto da aba.
disabledbooleantrue, falsefalseDesabilita a interação com a aba.
classNamestringQualquer classe CSS-Classes CSS adicionais para personalização.

TabsContent

PropriedadeTipoValores possíveisPadrãoDescrição
valuestringQualquer string-Valor único que liga o conteúdo à sua aba.
forceMounttruetrue-Mantém o conteúdo montado mesmo quando inativo. O tipo só aceita true: para não forçar a montagem, basta omitir a prop.
classNamestringQualquer classe CSS-Classes CSS adicionais para personalização.

Acessibilidade

O componente Tabs segue o padrão WAI-ARIA para abas:

  • Usa role="tablist", role="tab" e role="tabpanel" corretamente
  • Suporta navegação por teclado (setas, Tab, Enter, Espaço)
  • Gerencia aria-selected e aria-controls automaticamente
  • O conteúdo inativo é removido do DOM por padrão (use forceMount se precisar)