Pular para o conteúdo

Tabs

Alternância de conteúdo relacionado com tablist, triggers e panels.

Conteúdo da visão geral.

Instalação

Instale o Tabs da sua stack e rode o comando individual ITpS em seguida. O comando itps add tabs é theme-only: ele valida o slug e confirma que o contrato visual vem do tema ITpS, das classes copy-first e dos snippets desta página.

terminal · React/Next

pnpm dlx shadcn@latest add tabs
pnpm dlx github:ITPS/sinapse-ui-cli add tabs

terminal · Vue3/Nuxt4

pnpm dlx shadcn-vue@latest add tabs
pnpm dlx github:ITPS/sinapse-ui-cli add tabs

O comando individual adapta só este componente; não instala o catálogo inteiro.

Uso

Em React/Next com shadcn/ui e Vue3/Nuxt4 com shadcn-vue, use os compound components 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. No site, src/scripts/tabs.ts inicializa [data-itps-tabs]; em produto, mantenha o mesmo contrato ou use o componente da sua stack.

Exemplos

Estrutura

PeçaReact/Next e Vue3/Nuxt4HTML
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 labels curtas. O ícone deve vir antes do texto e permanecer decorativo.

Resumo executivo.

Estados e teclado

EstadoReact/Next e Vue3/Nuxt4HTML
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__listContainer 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 container 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.