Ravox KitDados
Tabela de dados
Você declara as colunas e ela ordena, busca (sem acento), pagina, marca linhas com ações em lote e mostra/esconde colunas. Estados de vazio, sem resultado e carregando já prontos. Sem biblioteca de tabela.
Ajustes
Estado
Por página
Densidade
Exemplos
Seleção controlada
1 pedido na próxima remessa · 6 itens
1 marcada
Atualizando sem pular
Rolagem com cabeçalho fixo
Instalação
O shadcn cria components/ui/tabela-dados.tsx no seu projeto e instala o tema junto. O arquivo é seu: edite à vontade.
npx shadcn@latest add https://ui.ravoxlabs.com/r/tabela-dados.jsonOpções
| Opção | Tipo | Padrão | O que faz |
|---|---|---|---|
| dados | T[] | — | As linhas. Ficam no cliente: para milhares de registros, pagine no servidor e passe só a página. |
| colunas | ColunaDados<T>[] | — | { chave, titulo, valor?, celula?, numerico?, ordenavel?, buscavel?, escondivel?, oculta?, largura? }. valor serve para ordenar e buscar; celula, para desenhar. |
| chaveLinha | (linha: T) => string | — | Id único de cada linha (seleção e key). |
| rotulo | string | — | Nome da tabela: vira a legenda para leitores de tela e o nome da busca e da paginação. |
| busca | boolean | true | Campo de busca nas colunas de texto (ou nas marcadas com buscavel). Esc limpa. |
| porPagina | number | 10 | Linhas por página. 0 desliga a paginação. |
| opcoesPorPagina | number[] | [10, 25, 50] | Opções do "Linhas por página". Com uma só, o seletor some. |
| selecionavel | boolean | false | Coluna de caixas. A do cabeçalho marca a página e oferece marcar todos os resultados. |
| selecionadas / aoSelecionar | string[] / (ids: string[]) => void | — | Seleção controlada (ids de chaveLinha). Sem selecionadas, ela guarda sozinha. |
| acoesEmLote | (marcadas: T[], limpar: () => void) => ReactNode | — | Botões da barra que aparece quando há linhas marcadas. |
| ordemInicial | { chave, direcao: "asc" | "desc" } | null | — | Ordem no começo. O clique no título passa por crescente, decrescente e sem ordem; aria-sort acompanha. |
| menuColunas | boolean | true | Botão "Colunas" para esconder e mostrar colunas (a última visível não some). |
| carregando | boolean | false | Sem dados: linhas-esqueleto. Com dados: segura a tela anterior esmaecida, sem pular. |
| vazio | ReactNode | — | O que aparece quando dados vem vazio. Busca sem resultado tem mensagem própria com "Limpar busca". |
| extra | ReactNode | — | Algo à direita da barra (ex.: botão "Novo cliente"). |
| densidade | "compacta" | "normal" | "folgada" | "normal" | Repassada para a Tabela. |
| alturaMaxima | number | string | — | Com ela, o corpo rola e o cabeçalho gruda no topo. |