componentes / navegação
Tabs
Troque de conteúdo com abas e um indicador que acompanha a seleção.
613 B gzip client componentbase ui · tabs
48 contributions this week.
tabs-default.tsx
import { Tabs, TabsList, TabsPanel, TabsTab } from "@/components/ui/tabs";
const periods = [
{ value: "day", label: "today", text: "12 contributions today." },
{ value: "week", label: "week", text: "48 contributions this week." },
{ value: "month", label: "month", text: "190 contributions this month." },
];
export default function TabsDefault() {
return (
<Tabs className="items-center" defaultValue="week">
<TabsList aria-label="Period">
{periods.map((p) => (
<TabsTab key={p.value} value={p.value}>
{p.label}
</TabsTab>
))}
</TabsList>
{periods.map((p) => (
<TabsPanel className="text-muted-foreground text-sm" key={p.value} value={p.value}>
{p.text}
</TabsPanel>
))}
</Tabs>
);
}Instalação
$ npx shadcn@latest add https://cd-ui.vercel.app/r/tabs.jsonprimeira vez? configure o components.json e o tema antes: veja instalação.
Uso
import { Tabs, TabsList, TabsPanel, TabsTab } from "@/components/ui/tabs"
<Tabs defaultValue="a">
<TabsList>
<TabsTab value="a">A</TabsTab>
<TabsTab value="b">B</TabsTab>
</TabsList>
<TabsPanel value="a">…</TabsPanel>
</Tabs>API
Tabs
Base UI · Tabs.RootRaiz.
| prop | tipo | padrão |
|---|---|---|
value · defaultValue · onValueChangeAba ativa. | any | - |
classNameClasses extras, mescladas com | string | - |
TabsList
Base UI · Tabs.ListLista com o indicador que desliza (160ms, ease-in-out forte).
| prop | tipo | padrão |
|---|---|---|
classNameClasses extras, mescladas com | string | - |
TabsTab · TabsPanel
Base UI · Tabs.Tab · Tabs.PanelAba e conteúdo, ligados pelo value.
| prop | tipo | padrão |
|---|---|---|
valueIdentificador da aba. | any | - |
classNameClasses extras, mescladas com | string | - |
Teclado
| tecla | ação |
|---|---|
| ←→ | Move entre abas. |
| HomeEnd | Primeira e última aba. |