UI

Tabs

Alterna entre painéis de conteúdo relacionados na mesma página, sem recarregar.

Maria Clara Fernandes

(19) 99876-5432 · cadastrada em 12/03/2025

Instalação

npx shadcn@latest add @lenstech/tabs

Uso

import { Tab, TabList, TabPanel, Tabs } from "@/components/ui/tabs"
<Tabs>
  <TabList aria-label="Dados do paciente">
    <Tab id="dados">Dados pessoais</Tab>
    <Tab id="consultas">Consultas</Tab>
  </TabList>
  <TabPanel id="dados">Nome, CPF e telefone.</TabPanel>
  <TabPanel id="consultas">Histórico de consultas.</TabPanel>
</Tabs>

O id liga a aba ao painel

Cada Tab e seu TabPanel precisam do mesmo id. Dê também um aria-label à TabList para descrever o grupo de abas. As setas do teclado movem entre as abas.

Exemplos

Sublinhado

variant="underline" desenha uma linha sob a aba ativa — bom para cabeçalhos de página e listas filtradas.

8 pedidos aguardando separação.

Vertical

Nome fantasia, CNPJ e logotipo da loja.

Com ícones

Nome, foto e e-mail de contato.

Aba desabilitada

Passe os ids em disabledKeys no Tabs.

R$ 18.420,00 recebidos neste mês.

Controlado

Use selectedKey + onSelectionChange para saber (ou mudar) a aba ativa a partir do seu código.

Rua Barão de Jaguara, 1200 — Centro, Campinas/SP.
Aba atual: endereco

selectedKey, não value

Diferente do shadcn (Radix), a aba ativa é controlada por selectedKey/onSelectionChange (ou defaultSelectedKey sem controle), e não por value/onValueChange.

Quando usar

  • Use para alternar conteúdos do mesmo contexto: dados do paciente, histórico e financeiro de um cliente.
  • Não use para navegar entre páginas — use Link ou Sidebar.
  • Não use para etapas sequenciais obrigatórias (checkout, cadastro em passos) — prefira um fluxo com botões "Voltar/Continuar".
  • Conteúdo longo que o usuário precisa comparar ou ler em sequência? Considere Accordion.

API

Tabs

Aceita todas as props do Tabs do React Aria, mais:

Prop

Type

TabList, Tab e TabPanel

  • TabList — props do TabList. Informe aria-label.
  • Tab — id (obrigatório), isDisabled, href (vira link) e className.
  • TabPanel — id (igual ao da Tab), shouldForceMount e className.

On this page