Data Table
Tabelas com seleção, ordenação simples e ações por linha.
Dados e layoutcomposição
Carregando demonstração…
Código da demo
"use client";
import * as React from "react";
import { Checkbox } from "@/components/ui/checkbox";
import {
Table,
TableBody,
TableCaption,
TableCell,
TableHead,
TableHeader,
TableRow,
} from "@/components/ui/table";
const rows = [
{ id: "1", name: "Ana", role: "Design" },
{ id: "2", name: "Bruno", role: "Engenharia" },
{ id: "3", name: "Carla", role: "Produto" },
];
export function Demo() {
const [selected, setSelected] = React.useState<string[]>(["1"]);
function toggle(id: string) {
setSelected((prev) =>
prev.includes(id) ? prev.filter((x) => x !== id) : [...prev, id],
);
}
return (
<Table>
<TableCaption>Equipe (seleção local).</TableCaption>
<TableHeader>
<TableRow>
<TableHead className="w-10">
<span className="sr-only">Selecionar</span>
</TableHead>
<TableHead>Nome</TableHead>
<TableHead>Função</TableHead>
</TableRow>
</TableHeader>
<TableBody>
{rows.map((row) => (
<TableRow key={row.id} data-state={selected.includes(row.id) ? "selected" : undefined}>
<TableCell>
<Checkbox
checked={selected.includes(row.id)}
onCheckedChange={() => toggle(row.id)}
aria-label={`Selecionar ${row.name}`}
/>
</TableCell>
<TableCell>{row.name}</TableCell>
<TableCell>{row.role}</TableCell>
</TableRow>
))}
</TableBody>
</Table>
);
}- Acessibilidade
- caption; th com escopo; checkboxes com labels.
- Importar
Composição do app — não é exportada pelo pacote.
Neste repositório:
import { Table, TableHeader, TableBody, TableRow, TableCell } from "@/components/ui/table"