From 77ffc22128bdfe8e03ae02e5b5d46e8e54f00739 Mon Sep 17 00:00:00 2001 From: Francisco Solla Date: Sun, 9 Aug 2026 09:08:12 -0300 Subject: [PATCH] =?UTF-8?q?docs(plans):=20B181=20=E2=80=94=20remover=20avi?= =?UTF-8?q?so=20de=20janela=20vazia=20na=20agenda=20(plano=20de=20inten?= =?UTF-8?q?=C3=A7=C3=A3o)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/plans/agenda-remover-aviso-vazio.md | 95 ++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 docs/plans/agenda-remover-aviso-vazio.md diff --git a/docs/plans/agenda-remover-aviso-vazio.md b/docs/plans/agenda-remover-aviso-vazio.md new file mode 100644 index 00000000..bebc9dcc --- /dev/null +++ b/docs/plans/agenda-remover-aviso-vazio.md @@ -0,0 +1,95 @@ +# B181 — Agenda: remover o aviso "Nenhum compromisso nesta janela e neste filtro" + +Status: rascunho +Atualizado em: 2026-08-09 +Issue: #480 +Priority: P2 +Model: composer-2.5 / deepseek-v4-flash-high +Impeccable: B — remoção de elemento na tela da agenda (`/campanha/agenda`) +Canvas UI: /home/fsolla/.cursor/projects/home-fsolla-Code-teqo/canvases/plan-b181-ui-draft.canvas.tsx +Appetite: ~0,5 dia eng; um outcome verificável — janela vazia na agenda sem o aviso ocupando espaço +Responsável: — + +## Intenção + +Na `/campanha/agenda`, quando a janela carrega sem compromissos, a página mostra um bloco +"Nenhum compromisso nesta janela e neste filtro" com um botão "Criar atividade" logo acima do +calendário. Ele só ocupa espaço — principalmente no mobile — e é redundante: a criação já é +acessível por clique num slot do calendário (C91) e pelo FAB de ações rápidas (C94). Queremos +remover esse bloco por completo. + +## Persona e fluxo + +- **Persona / contexto:** staff (coordenador / assessor / candidato) na agenda, mobile ou + desktop, navegando por uma janela sem compromissos. +- **Job principal:** ver o calendário da janela sem ruído visual acima dele. +- **Fluxo desejado:** abre `/campanha/agenda` numa janela sem compromissos → vê o calendário + começando limpo na primeira linha → se quiser criar, clica num slot, usa o botão existente ou + o FAB — exatamente os caminhos de hoje. +- **Anti-goals de produto:** não substituir o aviso por outro elemento (callout, ilustração, + empty-state novo); não mudar nenhuma affordance de criação; não tocar em outros empty-states. + +### Esboço de fluxo (B) + +```text +[agenda com janela vazia] → [sem aviso; calendário começa no topo] → [criação pelos caminhos atuais: clique no slot / botão existente / FAB] +``` + +## Objetivo e aceite + +- Janela sem compromissos na agenda **não exibe mais** "Nenhum compromisso nesta janela e neste + filtro" nem o botão "Criar atividade" — em nenhuma largura de tela (mobile incluso). +- O espaço antes ocupado pelo bloco some: o calendário começa no topo da área, sem "buraco". +- Sem regressão: avisos de carregando e de erro permanecem; criação por clique no slot (C91), + FAB de ações rápidas (C94) e demais botões de criar atividade intactos. +- Nada novo entra na tela por causa deste item. + +## Dados (intenção) + +- **Vou apresentar dados?** Não — remoção de elemento de estado vazio; nenhuma métrica ou + série nova. +- **Decisões desbloqueadas:** N/A. + +## Direção no codebase (hipótese) + +- **Áreas prováveis:** `src/components/campaign/activity/ActivityAgenda.tsx` (bloco do aviso na + faixa ~306–313 e o que ficar órfão com ele, ex. `emptyHref`/`buildActivityCreateHref` — knip + valida); rota `src/app/(campaign)/campanha/(app)/agenda/page.tsx` (não deve mudar). +- **Precedente a olhar:** `docs/plans/agenda-criar-evento-inline.md` (C91 — criação inline no + calendário), `docs/plans/c94-agenda-filtro-combobox-header-do-app-link-acoes-no-fab.md` (C94 — + FAB de ações rápidas). +- **Risco de acoplamento:** o bloco compartilha o helper de link de criação com outros pontos; + remover o que ficar órfão junto. Não tocar no texto interno do FullCalendar (`noEventsText`, + vista "Lista") nem nos estados de loading/erro do mesmo componente. + +## Dependências + +- Nenhuma. + +## Fora de escopo + +- Texto interno do FullCalendar na vista "Lista" ("Nenhum compromisso nesta janela") — outra + superfície (ver questão em aberto). +- Qualquer outro empty-state do `/campanha` (ex. listas de municípios/apoiadores). +- Mudança nas affordances de criação (já cobertas por C91/C94). + +## Rabbit holes de produto + +- **"Já que estou aqui, melhoro o empty state".** Se alguém "só completar": substituir o aviso + por um callout/ilustração/empty-state novo, ou redesenhar o topo da agenda. **Corte neste + item:** somente remover o bloco; nada novo entra na tela. + +## Questões em aberto (produto) + +- **O texto interno do FullCalendar na vista "Lista" ("Nenhum compromisso nesta janela") também + sai?** **Opções:** A) fica — preenche a lista vazia, não é header e não rouba espaço no mobile + | B) sai junto. **Recomendação:** **A** — o pedido é o bloco acima do calendário; o texto + interno é contexto in-loco da vista lista. _(assumido — validar)_ + +## Referências + +- GitHub Issue #480 (B181 — agenda: remover o aviso de janela vazia) +- Canvas UI (gate): `/home/fsolla/.cursor/projects/home-fsolla-Code-teqo/canvases/plan-b181-ui-draft.canvas.tsx` +- `src/components/campaign/activity/ActivityAgenda.tsx` — bloco do aviso (~306–313), `noEventsText` (~343) +- `src/app/(campaign)/campanha/(app)/agenda/page.tsx` — página que monta a agenda +- `docs/plans/agenda-criar-evento-inline.md` (C91) e `docs/plans/c94-agenda-filtro-combobox-header-do-app-link-acoes-no-fab.md` (C94)