Pular para o conteúdo

Tabs

Alternância de conteúdo relacionado com lista de abas, gatilhos e painéis.

Em cada stack

HTML e Astro
Classes itps-* do CSS Sinapse, com todas as variantes desta página.
React e Vue
Componentes padrão do shadcn (tabs) com o tema Sinapse: cores, fonte e raio vêm do tema, e as variantes itps-* desta página existem só no HTML.
Conteúdo da visão geral.

Instalação

O comando instala o Tabs da sua stack com o tema Sinapse. Configure o registry uma vez por projeto em Comece por aqui.

terminal · React/Next

pnpm dlx shadcn@latest add @sinapse/tabs

terminal · Vue 3/Nuxt 4

pnpm dlx shadcn-vue@latest add https://dsystem.sinapse.org.br/r/vue/tabs.json

Sem shadcn, não há instalação por componente: use o CSS Sinapse e as classes da API copy-first desta página.

Uso

Em React/Next com shadcn/ui e Vue 3/Nuxt 4 com shadcn-vue, use os componentes compostos Tabs, TabsList, TabsTrigger e TabsContent. Eles carregam estado e navegação por teclado da stack.

Use itps-tabs quando precisar do contrato copy-first em HTML ou wrappers finos. Este site usa src/scripts/tabs.ts (não incluído no pacote) para inicializar [data-itps-tabs]; em produto, mantenha o mesmo contrato ou use o componente da sua stack.

Exemplos

Estrutura

PeçaReact/Next e Vue 3/Nuxt 4HTML
RaizTabs defaultValue="..."itps-tabs[data-itps-tabs]
ListaTabsListitps-tabs__list[role="tablist"]
TriggerTabsTrigger value="..."itps-tabs__trigger[role="tab"]
PainelTabsContent value="..."itps-tabs__panel[role="tabpanel"]

Com ícones

Use ícones quando eles ajudam a diferenciar seções com rótulos curtos. O ícone deve vir antes do texto e permanecer decorativo.

Resumo executivo.

Estados e teclado

EstadoReact/Next e Vue 3/Nuxt 4HTML
Ativa inicialdefaultValuearia-selected="true" + tabindex="0"
Inativavalor diferente do ativoaria-selected="false" + tabindex="-1"
Painel ocultogerenciado por TabsContenthidden no painel inativo

O teclado esperado é ArrowLeft/ArrowRight para navegar, Home/End para extremos e foco no trigger ativo.

API copy-first

Classe/atributoUso
itps-tabsWrapper visual e raiz de comportamento.
data-itps-tabsMarca a raiz inicializável pelo script.
itps-tabs__listContêiner com role="tablist".
itps-tabs__triggerBotão com role="tab".
itps-tabs__panelPainel com role="tabpanel".
aria-selectedComunica qual trigger está ativo.
aria-controlsLiga trigger ao painel.
aria-labelledbyLiga painel ao trigger.
tabindexMantém foco no trigger ativo e nos painéis focáveis.
hiddenOculta painéis inativos.
ArrowLeft / ArrowRightNavegam entre triggers.
Home / EndLevam para o primeiro ou último trigger.

Acessibilidade

Use role="tablist" no contêiner de tabs, role="tab" nos botões e role="tabpanel" nos painéis. Ligue cada tab ao painel com aria-controls; ligue cada painel à tab com aria-labelledby. Atualize aria-selected, tabindex e hidden quando a tab ativa muda.