---
fonte: 01-canonicos/seed-componentes.md
versao_da_fonte: v1.43
secao: 42
titulo: "Toolbar de dados — `estável` (v0.45) · TD1–TD5 · Bloco 6/6C · encerra a pendência 'busca composta EUI' (B2)"
sequencia: 44 de 98
bytes_do_corpo: 3072
md5_do_corpo: b68ef429093df09eb9d570afe6447bef
gerado_por: 06-validacao/geradores/gen-camada-ia.py
nota: fatia GERADA — o corpo abaixo é byte a byte o trecho do canônico; edite o canônico, nunca esta fatia. Canônico inteiro em https://ds.seed.eng.br/01-canonicos/seed-componentes.md
---
## 42. Toolbar de dados — `estável` (v0.45) · TD1–TD5 · Bloco 6/6C · encerra a pendência "busca composta EUI" (B2)

> **Base (3 rodadas, 2026-08-06):** R1 — Carbon (toolbar da tabela: busca + settings + botão primário; pareamento de altura com as linhas) + Dynamics 365 (subpadrões inline×stacked; campos de filtro só de INPUT RESTRITO). R2 — **EUI SearchBar** (busca livre + filtros estruturados na MESMA barra; sintaxe `campo:valor` é evolução de produto, não do DS) + **EUI FilterGroup** (botão de filtro com contagem de ativos + popover selecionável) + shadcn-blocks (chips de filtro aplicado com **contagem viva "N de M"** — o sinal de que o filtro fez algo real). R3 — Innovaccer table filters (1 chip por dimensão; limpar tudo) + herança integral: busca §4, chip §22 (X 24px + hitbox 44), popover §24, paginação §37 ("filtre primeiro").

| # | Decisão | Porquê | Descartado |
|---|---|---|---|
| TD1 | **Anatomia:** busca (§4, live com debounce do produto) + botões de filtro por DIMENSÃO (`aria-expanded` + popover §24 com checkboxes §10 + **contagem de ativos no botão**) + contador **"N de M"** sempre visível + settings/ações à direita. <640px empilha (stacked) | EUI FilterGroup; shadcn-blocks (o contador é a prova do filtro); Dynamics (stacked no estreito) | Sintaxe de query no input (EUI SearchBar avançado = produto); painel lateral de filtros (peso de F6) |
| TD2 | **Filtros aplicados = CHIPS §22** numa linha própria sob a toolbar: `"Dimensão: valor"`, X remove **e desmarca a origem** (uma fonte de verdade), + "Limpar filtros" quando ≥1 | Innovaccer (1 chip/dimensão); §22 herdado integral (hitbox, remoção anunciada) | Chip que remove sem desmarcar o checkbox (estado fantasma) |
| TD3 | **Régua "filtre primeiro, pagine depois"** (herdada do §37/EUI e formalizada AQUI): filtro/busca resetam para a página 1; o contador convive com a faixa da paginação (papéis distintos: conjunto × janela) | EUI literal; PG4 já mandava voltar à página 1 | Filtro mantendo página (intervalo fantasma) |
| TD4 | **Integração SL5 executada:** mudar filtro/busca **LIMPA a seleção** (o "tudo" mudou de significado) — teste de integração TD-04 na suite | SL5 (decisão do lote 1); Carbon #7496 (selecionar através de filtro é bug documentado) | Seleção sobrevivendo ao filtro |
| TD5 | **Fronteiras:** query language, filtros salvos/visões, painel avançado, export = produto (F6); campos de filtro são sempre de input restrito (checkbox/select/data — nunca texto livre por dimensão) | Dynamics (input restrito); recorte | Filtro de texto livre por coluna |

**Pares:** todos herdados (chip §22, busca §4, contador mono ci-600 4.74). Os 7 testes: 1 herdados ✓ · 2 filtro ativo por chip+contagem (nunca só cor no botão) · 3 grayscale ok · 4 busca×filtro a 1s · 5 uma linha de chips, um contador · 6 filtros visíveis sem abrir nada (chips) · 7 360px empilhado, X do chip 44. *(Suite 6C ✓ incl. TD-04; render R10: chip pintado + "4 de 16" ✓.)*

---

