Table
Tabela semântica do HeroUI, composta célula a célula, para quando você controla cada linha.
A Table (OSS) é a tabela composta peça por peça: você escreve Table.Header, Table.Column, Table.Row e Table.Cell. No Admin, a regra é preferir o DataGrid, que recebe columns e data e cuida de ordenação, seleção e células; use Table quando precisar de células muito diferentes entre si, linhas fora do padrão, rodapé com paginação ou controle total do markup.
import { Table } from "@rastreio-x/ui";
Padrão
A tabela vive em Table.ScrollContainer (rolagem horizontal dentro dela), com Table.Content recebendo o aria-label. A coluna com isRowHeader nomeia a linha.
Variante secundária
primary (padrão) tem fundo cinza no contêiner; secondary é plana, para usar dentro de Widget, Card e Sheet.
Ordenação
allowsSorting na coluna, sortDescriptor e onSortChange em Table.Content. Você ordena os dados; Table.SortableColumnHeader desenha o indicador de direção.
Seleção
selectionMode em Table.Content, mais um Checkbox com slot="selection" no cabeçalho (selecionar todos) e em cada linha.
Sem dados
renderEmptyState em Table.Body diz o que fazer quando não há linhas.
Rodapé com paginação
Table.Footer recebe a Pagination ou o "Carregar Mais".
Table ou DataGrid
| Situação | Use |
|---|---|
| Lista de Pedidos, extrato de Créditos, Fontes (colunas conhecidas) | DataGrid dentro de Widget |
| Células muito diferentes ou linhas de formato próprio | Table |
| Rodapé com paginação, resumo ou carregamento incremental | Table com Table.Footer |
| Celular | ItemCard ou ListView (nunca uma tabela estreita) |
Anatomia
Table.ScrollContainer: contêiner de rolagem horizontal.Table.Content: a tabela, comaria-label, seleção e ordenação.Table.HeadereTable.Column: cabeçalho e colunas.Table.Body,Table.RoweTable.Cell: o corpo.Table.SortableColumnHeader: rótulo ordenável com indicador.Table.Footer: rodapé opcional.Table.ColumnResizer,Table.LoadMoreeTable.Collection: redimensionar, carregar mais e coleções dinâmicas.
Propriedades
Table:
Table.Content:
Table.Column:
Table.Body:
Animações
A Table não anima: só hover e foco de linha mudam de cor, e o indicador de ordenação troca de direção. Com prefers-reduced-motion, a folha global da fachada reduz qualquer transição a 0,01 ms.
Acessibilidade
- Baseada em
Tabledo React Aria: papéisgrid,row,columnheaderegridcell. aria-labelobrigatório emTable.Content; marque uma coluna comisRowHeader.- Teclado: setas navegam entre células, Espaço seleciona a linha, Enter em um cabeçalho ordenável alterna a direção; a ordenação é anunciada.
- Checkboxes de seleção precisam de
aria-label("Selecionar ped-8"). - Em telas estreitas, a rolagem fica dentro do
ScrollContainer, nunca na página.
Boas práticas
Faça
Evite
- Prefira
DataGridquando as colunas forem uniformes. - Dê
min-w-*aoTable.Contentpara a rolagem horizontal funcionar. - Alinhe números à direita e use algarismos tabulares.
Relacionados
- DataGrid a tabela orientada a dados, preferida no Admin.
- Pagination para o rodapé.
- EmptyState para o vazio.
- ListView e ItemCard para o celular.