Table
Uma tabela responsiva construída sobre os elementos semânticos nativos.
Instalação
O Shadwire segue o modelo open-code do shadcn/ui: o código-fonte do componente é copiado para a sua aplicação e passa a ser seu. Instale com a CLI:
O item table
do registry instala estes arquivos:
-
app/components/ui_component.rb -
app/components/ui/table_component.rb -
app/components/ui/table/header_component.rb -
app/components/ui/table/body_component.rb -
app/components/ui/table/footer_component.rb -
app/components/ui/table/row_component.rb -
app/components/ui/table/head_component.rb -
app/components/ui/table/cell_component.rb -
app/components/ui/table/caption_component.rb -
app/helpers/ui/table_helper.rb -
vendor/shadwire/shadwire.css
Ainda não instalou a CLI?
gem install shadwire
e depois shadwire init.
Uso
Cada parte renderiza o elemento HTML correspondente
(thead,
tbody,
th, …) — use
scope: nos cabeçalhos
e ui_table_caption
para descrever a tabela.
Ou renderize os componentes diretamente:
Composição
A raiz envolve a tabela em um container com rolagem horizontal.
Exemplos
Faturas
A anatomia completa: caption, header, body e footer com células alinhadas.
| Fatura | Status | Método | Valor |
|---|---|---|---|
| INV001 | Paga | Pix | R$ 250,00 |
| INV002 | Pendente | Boleto | R$ 150,00 |
| INV003 | Paga | Cartão | R$ 350,00 |
| INV004 | Cancelada | Pix | R$ 450,00 |
| Total | R$ 1.200,00 | ||
Linha selecionada
Use data: { state: "selected" } para destacar uma linha.
| Linha padrão |
| Linha selecionada (data-state="selected") |
Referência da API
Todas as partes aceitam class /
class_name,
**attrs e bloco.
| Helper | Elemento | Notas |
|---|---|---|
ui_table |
div > table |
Container com overflow-x-auto; classes extras vão na <table>. |
ui_table_header / ui_table_body / ui_table_footer |
thead / tbody / tfoot |
Seções da tabela. |
ui_table_row |
tr |
data: { state: "selected" } destaca a linha. |
ui_table_head |
th |
Passe scope: "col" ou scope: "row". |
ui_table_cell |
td |
Aceita colspan/rowspan via attrs. |
ui_table_caption |
caption |
Descrição acessível, exibida abaixo da tabela (caption-bottom). |