Data Table
Tabela ordenável, pesquisável e paginada construída sobre o primitivo `Table` — com seleção de linhas, visibilidade de colunas e variante de header fixo.
Mínimo
Apenas linhas, colunas e paginação. Sem toolbar.
| Edifício Aurora #100 | Ana Souza | Ativo | R$ 2.500 | 2026-01-15 |
| Torre Estrela #101 | Bruno Pereira | Pendente | R$ 2.850 | 2026-02-15 |
| Bloco Sol #102 | Carla Oliveira | Inativo | R$ 3.200 | 2026-03-15 |
| Residencial Mar #103 | Diego Santos | Ativo | R$ 3.550 | 2026-04-15 |
| Condomínio Atlântico #104 | Eduarda Lima | Pendente | R$ 3.900 | 2026-05-15 |
<DataTableRoot items={rows} columns={columns} defaultPageSize={5}>
<DataTableContent />
<DataTablePagination />
</DataTableRoot>Com toolbar
Busca, visibilidade de colunas, headers ordenáveis e rodapé de paginação.
| Alto da Serra #113 | Nícolas Barros | Pendente | R$ 3.900 | 2026-02-15 |
| Alto da Serra #128 | Nícolas Barros | Pendente | R$ 2.850 | 2026-05-15 |
| Bloco Sol #102 | Carla Oliveira | Inativo | R$ 3.200 | 2026-03-15 |
| Bloco Sol #117 | Carla Oliveira | Inativo | R$ 5.300 | 2026-06-15 |
| Cidade Nova #112 | Mariana Mendes | Ativo | R$ 3.550 | 2026-01-15 |
| Cidade Nova #127 | Mariana Mendes | Ativo | R$ 2.500 | 2026-04-15 |
| Condomínio Atlântico #104 | Eduarda Lima | Pendente | R$ 3.900 | 2026-05-15 |
| Condomínio Atlântico #119 | Eduarda Lima | Pendente | R$ 2.850 | 2026-02-15 |
| Edifício Aurora #100 | Ana Souza | Ativo | R$ 2.500 | 2026-01-15 |
| Edifício Aurora #115 | Ana Souza | Ativo | R$ 4.600 | 2026-04-15 |
<DataTableRoot items={rows} columns={columns}>
<DataTableToolbar>
<DataTableSearch />
<DataTableViewOptions />
</DataTableToolbar>
<DataTableContent />
<DataTablePagination />
</DataTableRoot>Header fixo + seleção
Altura máxima limitada para que o header fique fixo durante o scroll vertical. Cada linha tem um checkbox de seleção; o rodapé mostra a contagem atual.
| Edifício Aurora #100 | Ana Souza | Ativo | R$ 2.500 | 2026-01-15 | ||
| Torre Estrela #101 | Bruno Pereira | Pendente | R$ 2.850 | 2026-02-15 | ||
| Bloco Sol #102 | Carla Oliveira | Inativo | R$ 3.200 | 2026-03-15 | ||
| Residencial Mar #103 | Diego Santos | Ativo | R$ 3.550 | 2026-04-15 | ||
| Condomínio Atlântico #104 | Eduarda Lima | Pendente | R$ 3.900 | 2026-05-15 | ||
| Vila Jardim #105 | Felipe Costa | Inativo | R$ 4.250 | 2026-06-15 | ||
| Mirante Ipê #106 | Gabriela Alves | Ativo | R$ 4.600 | 2026-01-15 | ||
| Mont Blanc #107 | Henrique Dias | Pendente | R$ 4.950 | 2026-02-15 | ||
| Parque das Flores #108 | Isabela Rocha | Inativo | R$ 5.300 | 2026-03-15 | ||
| Villa Bela #109 | João Almeida | Ativo | R$ 2.500 | 2026-04-15 | ||
| Recanto Verde #110 | Karine Ribeiro | Pendente | R$ 2.850 | 2026-05-15 | ||
| Solar dos Pinhais #111 | Lucas Carvalho | Inativo | R$ 3.200 | 2026-06-15 | ||
| Cidade Nova #112 | Mariana Mendes | Ativo | R$ 3.550 | 2026-01-15 | ||
| Alto da Serra #113 | Nícolas Barros | Pendente | R$ 3.900 | 2026-02-15 | ||
| Lagoa Azul #114 | Olivia Castro | Inativo | R$ 4.250 | 2026-03-15 | ||
| Edifício Aurora #115 | Ana Souza | Ativo | R$ 4.600 | 2026-04-15 | ||
| Torre Estrela #116 | Bruno Pereira | Pendente | R$ 4.950 | 2026-05-15 | ||
| Bloco Sol #117 | Carla Oliveira | Inativo | R$ 5.300 | 2026-06-15 | ||
| Residencial Mar #118 | Diego Santos | Ativo | R$ 2.500 | 2026-01-15 | ||
| Condomínio Atlântico #119 | Eduarda Lima | Pendente | R$ 2.850 | 2026-02-15 |
<DataTableRoot items={rows} columns={columns} enableSelection>
<DataTableToolbar>
<DataTableSearch />
<DataTableViewOptions />
</DataTableToolbar>
<DataTableContent stickyHeader maxHeight="24rem" />
<DataTablePagination />
</DataTableRoot>Seleção de uma única linha
Use `selectionStrategy="single"` quando no máximo uma linha pode estar selecionada — o checkbox do cabeçalho aparece desabilitado e clicar em uma linha substitui a seleção anterior.
| Edifício Aurora #100 | Ana Souza | Ativo | R$ 2.500 | 2026-01-15 | ||
| Torre Estrela #101 | Bruno Pereira | Pendente | R$ 2.850 | 2026-02-15 | ||
| Bloco Sol #102 | Carla Oliveira | Inativo | R$ 3.200 | 2026-03-15 | ||
| Residencial Mar #103 | Diego Santos | Ativo | R$ 3.550 | 2026-04-15 | ||
| Condomínio Atlântico #104 | Eduarda Lima | Pendente | R$ 3.900 | 2026-05-15 |
<DataTableRoot
items={rows}
columns={columns}
enableSelection
selectionStrategy="single"
>
<DataTableContent />
<DataTablePagination />
</DataTableRoot>Selecionar tudo entre páginas
Use `selectionStrategy="all"` para que o checkbox do cabeçalho alterne todas as linhas filtradas, e não só a página visível. Internamente alterna uma flag virtual mais um conjunto de exclusões, então funciona da mesma forma com paginação no backend.
| Edifício Aurora #100 | Ana Souza | Ativo | R$ 2.500 | 2026-01-15 | ||
| Torre Estrela #101 | Bruno Pereira | Pendente | R$ 2.850 | 2026-02-15 | ||
| Bloco Sol #102 | Carla Oliveira | Inativo | R$ 3.200 | 2026-03-15 | ||
| Residencial Mar #103 | Diego Santos | Ativo | R$ 3.550 | 2026-04-15 | ||
| Condomínio Atlântico #104 | Eduarda Lima | Pendente | R$ 3.900 | 2026-05-15 | ||
| Vila Jardim #105 | Felipe Costa | Inativo | R$ 4.250 | 2026-06-15 | ||
| Mirante Ipê #106 | Gabriela Alves | Ativo | R$ 4.600 | 2026-01-15 | ||
| Mont Blanc #107 | Henrique Dias | Pendente | R$ 4.950 | 2026-02-15 | ||
| Parque das Flores #108 | Isabela Rocha | Inativo | R$ 5.300 | 2026-03-15 | ||
| Villa Bela #109 | João Almeida | Ativo | R$ 2.500 | 2026-04-15 |
<DataTableRoot
items={rows}
columns={columns}
enableSelection
selectionStrategy="all"
onSelectAllChange={({ allSelected, excludedIds }) => {
// Gmail-style: act on the whole filtered set minus exclusions.
}}
>
<DataTableToolbar>
<DataTableSearch />
<DataTableViewOptions />
</DataTableToolbar>
<DataTableContent />
<DataTablePagination />
</DataTableRoot>Construído sobre o primitivo `Table` do design system — veja também: shadcn/ui — Data Table