---
fonte: 01-canonicos/seed-composicao.md
versao_da_fonte: v2.1
secao: 04
titulo: "Como um template se declara — CP13 e CP14"
sequencia: 6 de 17
bytes_do_corpo: 3033
md5_do_corpo: ba4ee09978960071f0bbbdfa9fe30ca9
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-composicao.md
---
## 4. Como um template se declara — CP13 e CP14

> **CP13 — A GRAMÁTICA DO TEMPLATE.** Um template é a instância nomeada de um arquétipo, e se
> declara com exatamente cinco campos. Um produto novo tem de conseguir montar a tela lendo
> **só** a declaração. **Slot não declarado não existe: peça fora de slot é drift.**

1. **Nome** do template.
2. **Arquétipo base** (§3) — o contrato de montagem vem dele; o template não redeclara raio,
   calha nem separação.
3. **Slots** — cada um com: nome · **tipos de bloco admitidos** (CP2) e componentes/blocos de
   dado aceitos · **obrigatório ou opcional** · **cardinalidade** · **comportamento <600px**.
4. **Exceções nomeadas** ao contrato do arquétipo — se não há, o campo diz "nenhuma".
5. **O que o template NÃO decide** — conteúdo, copy, quais registros existem: fronteira de
   produto, declarada para não virar suposição.

*Precedente interno exato:* o **DG1** do `seed-dataviz.md` — o `<figure>` de cinco partes
(título, descrição, fallback, legenda, área) com obrigatoriedade declarada (*"sem as cinco,
não é gráfico canônico"*) é a primeira declaração de slots do DS, e funciona há três
sub-blocos. O CP13 generaliza o formato. *Alternativa descartada:* template como screenshot
anotado — não é verificável por suíte nem lível por produto.

> **CP14 — O PRIMEIRO TEMPLATE DECLARADO: `hub-de-tipo`** *(adota o C18 do confronto com as
> travas que o próprio estudo exige)*.
>
> **Arquétipo base:** shell + lista/tabela. **Slots:**
>
> | Slot | Bloco/componentes admitidos | Obrig. | Card. | <600px |
> |---|---|---|---|---|
> | Título + ação primária | faixa; `h1` real + botão §1 (máx. 1 primário) | sim | 1 | empilha; botão full-width |
> | Faixa de modelos | faixa; cards §26 com ícone §45 | não | 0–1 | rolagem horizontal com fade |
> | Filtros | régua; toolbar §42 | não | 0–1 | empilha (TD1) |
> | Coleção | peça; tabela §40 **ou** cards LD2 | sim | 1 | regimes LD2 |
> | Vazio | vazio §25, tipo conforme a causa (Z1) | quando a coleção esvazia | 1 | herda §25 |
>
> **Exceções ao arquétipo:** nenhuma. **O template NÃO decide:** quais tipos ganham hub, o
> conteúdo dos modelos, as colunas da coleção.
>
> **As duas travas, obrigatórias porque o estudo mediu o custo de não tê-las:** **(a) a
> dimensão dominante do tipo é coluna obrigatória e declarada por instância** — *"um hub de
> contratos quer valor e vencimento em destaque"*; colunas idênticas para tipos diferentes
> significam que nenhum tipo tem a coluna que importa, e num ERP de engenharia quase todo tipo
> tem dimensão dominante própria. Sem a declaração, o gabarito vira camisa de força e o hub é
> **recusado** para aquele tipo. **(b) Microcópia flexionada por tipo** — o defeito medido do
> ClickUp (*"Marque um Painéis com estrela"*, *"3 pessoa sem tarefas"*) é concatenação de
> fragmento com variável não flexionada; a instância declara gênero e plural do tipo.

---

