7.4 KiB
Detalhe de entidade — título no header (sem hero espaçoso)
Status: rascunho
Atualizado em: 2026-08-02
Issue: #315
Priority: P2
Model: composer-2.5
Impeccable: B — encaixe no shell de /campanha + páginas de detalhe existentes
Appetite: ~0,5–1 dia eng; um outcome verificável em todos os detalhes de entidade
Responsável: —
Intenção
Nas páginas de detalhe de /campanha o corpo ainda abre com um bloco grande de título (nome, chips de tipo, “Voltar para…”, linha de assessoria). Isso gasta viewport e repete o que a orientação da shell já deveria carregar. Queremos compactar: a identidade do registro sobe para o header da app; o conteúdo começa direto nas abas/seções úteis.
Isto revisa a regra de detalhe do B123 (#250): lá o header ficou com o nome da seção e o h1 da entidade no corpo. Aqui o header passa a carregar a identidade do registro no detalhe.
Persona e fluxo
- Persona / contexto: staff (coordenador, candidato, assessor) abrindo dossiês no celular ou no desktop, muitas vezes em sequência.
- Job principal: saber onde está (qual registro) sem rolar um hero; ir direto ao trabalho (abas, ficha, ações).
- Fluxo desejado: abre o detalhe → header mostra título + subtítulo do registro → corpo começa nas abas/seções/chips operacionais → volta à lista pela sidebar ou pelo histórico do browser (sem “Voltar para…” no corpo).
- Anti-goals de produto: não redesenhar listas, wizards ou a sidebar; não inventar um segundo lugar para “Assessoria” só porque saiu do hero; não trocar copy de seções da lista.
Esboço de fluxo (B)
[lista / busca / link]
→ abre detalhe
→ lê identidade no header (título + subtítulo)
→ trabalha nas abas/seções (sem hero)
→ sai pela sidebar ou browser back
Objetivo e aceite
- Em todo detalhe de entidade listado abaixo, o header da shell mostra a identidade do registro (não só o nome da seção).
- O bloco espaçoso de título no corpo some:
h1da entidade, links “Voltar para…”, e o que for só eco do header (chip de tipo quando o subtítulo o substitui; linha Assessoria / última atualização no município). - Chips e meta operacionais permanecem no corpo (status, acesso ao app, celular/e-mail, “Deputado presente”, kind+data de atividade, etc.).
- Abas e seções de conteúdo ficam; edit routes (
…/editar) inalteradas (já usamEditar {nome}). - Aba do browser alinha com a identidade do registro no detalhe (não só o nome da seção).
- Listas e rotas sem entidade (perfil, giros, wizard
/acoes) fora deste item.
Dados (intenção)
- Vou apresentar dados? Não — só reorganização de chrome/orientação.
- Decisões desbloqueadas: staff reconhece o registro aberto sem gastar a primeira dobra com título duplicado.
- Forma: adiada ao plano de implementação — restrição de produto: header com título + subtítulo opcional; corpo sem hero de identidade.
Mapeamento por página (aceite)
Dois padrões:
| Padrão | Header título | Header subtítulo |
|---|---|---|
| Lugar / registro nomeado | nome do registro | contexto (território, tipo, meta) |
| Pessoa | tipo singular | nome da pessoa |
| Rota | Header título | Header subtítulo | Sai do corpo |
|---|---|---|---|
/campanha/municipios/[slug] |
nome do município | território / geografia | h1, chip Município/Zona, linha Assessoria (+ última atualização do mesmo bloco) |
/campanha/liderancas/[id] |
Liderança |
nome | “Voltar para lideranças”, h1 |
/campanha/atividades/[slug] |
título da atividade | município (+ localidade se houver) | h1 |
/campanha/demandas/[slug] |
título da demanda | tipo · município |
“Voltar…”, h1 |
/campanha/dobradinhas/[slug] |
nome do deputado | partido (se houver) | “Voltar…”, h1, chip de partido se virou subtítulo |
/campanha/organizacoes/[slug] |
nome | tipo (Sindicato, …) | “Voltar…”, h1, chip de tipo |
/campanha/apoiadores/[id] |
Apoiador |
nome | “Voltar…”, h1 |
/campanha/assessores/[id] |
Assessor |
nome | “Voltar…”, h1 |
Direção no codebase (hipótese)
- Áreas prováveis: catálogo/resolução de chrome (
campaignPageChrome+ overrides por rota de detalhe); shellCampaignPageChrome*; páginas sobsrc/app/(campaign)/campanha/(app)/*/\[…\]; componentes de detalhe emsrc/components/campaign/<domínio>/. - Precedente a olhar: B123 (#250) orientação na shell; B133 (#283) subtítulos curtos / override de lista de Municípios; edit routes que já empurram título dinâmico no header.
- Risco de acoplamento: não quebrar orientação das listas (header = seção); leader lockdown e superfícies sem detalhe de entidade ficam de fora; revisa só a regra de detalhe do B123.
Dependências
- Nenhuma dura. Soft: convive com B123/B133 já em prod (este item atualiza a política de detalhe).
Fora de escopo
- Listas e filtros salvos (subtítulo de filtro em Municípios permanece como está).
/campanha/municipios/[slug]/editar,/campanha/atividades/[slug]/editar.- Wizard
/campanha/acoes/[slug], giros, perfil, contatos (liderança). - Relocar Assessoria para um bloco novo se já existir em aba/lista — só remover do hero.
Rabbit holes de produto
- Tratar lista como detalhe. Se alguém “só completar” e colocar nome de linha no header da lista: quebra B123/B133. Corte: só rotas de detalhe de entidade.
- Esconder chips operacionais. Se alguém remover status/acesso/celular junto com o hero: perde sinal útil. Corte: só identidade duplicada e “Voltar…”.
- Segundo lugar para Assessoria. Corte: sumir do hero; não inventar UI nova neste item.
Questões em aberto (produto)
- Resolvidas no gate 2026-08-02: (1) Assessoria some só do hero; (2) demanda =
tipo · município; (3) aba do browser alinha com entidade; (4) “Voltar para…” some em todos os detalhes; (5) uma Issue única.
Referências
- Gate confirmado na conversa de plan-issue (2026-08-02)
- B123 #250 —
docs/plans/orientacao-shell-sem-titulos-secao.md(política anterior de detalhe) - B133 #283 —
docs/plans/listas-sem-subtitulo-prosa.md - Rotas:
municipios/[slug],liderancas/[id],atividades/[slug],demandas/[slug],dobradinhas/[slug],organizacoes/[slug],apoiadores/[id],assessores/[id]