Pular para o conteúdo

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çãoUse
Lista de Pedidos, extrato de Créditos, Fontes (colunas conhecidas)DataGrid dentro de Widget
Células muito diferentes ou linhas de formato próprioTable
Rodapé com paginação, resumo ou carregamento incrementalTable com Table.Footer
CelularItemCard ou ListView (nunca uma tabela estreita)

Anatomia

  • Table.ScrollContainer: contêiner de rolagem horizontal.
  • Table.Content: a tabela, com aria-label, seleção e ordenação.
  • Table.Header e Table.Column: cabeçalho e colunas.
  • Table.Body, Table.Row e Table.Cell: o corpo.
  • Table.SortableColumnHeader: rótulo ordenável com indicador.
  • Table.Footer: rodapé opcional.
  • Table.ColumnResizer, Table.LoadMore e Table.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 Table do React Aria: papéis grid, row, columnheader e gridcell.
  • aria-label obrigatório em Table.Content; marque uma coluna com isRowHeader.
  • 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

Cabeçalhos curtos, estado em ícone mais texto e vazio com próximo passo.

Evite

Uma tabela de cinco colunas espremida em 390 px, ou célula só com cor para indicar estado.
  • Prefira DataGrid quando as colunas forem uniformes.
  • Dê min-w-* ao Table.Content para a rolagem horizontal funcionar.
  • Alinhe números à direita e use algarismos tabulares.

Relacionados