diff --git a/docs/plans/detalhe-entidade-titulo-no-header-impl.md b/docs/plans/detalhe-entidade-titulo-no-header-impl.md index fb1f017f..a92d2771 100644 --- a/docs/plans/detalhe-entidade-titulo-no-header-impl.md +++ b/docs/plans/detalhe-entidade-titulo-no-header-impl.md @@ -23,6 +23,7 @@ flowchart LR ``` **Opções consideradas:** + - A) Estender `resolveCampaignPageChrome` com dados de entidade (impossível — catálogo é estático/client-safe) - B) `SetCampaignPageChrome` + `generateMetadata` por rota (precedente edit routes) - C) Novo provider server-side de chrome @@ -41,16 +42,16 @@ flowchart LR ### Mapeamento chrome por rota -| Rota | title | subtitle | -| ---- | ----- | -------- | -| municipios/[slug] | view.name | formatMunicipalityGeographyLabel(view) | -| liderancas/[id] | Liderança | leadership.name | -| atividades/[slug] | view.title | view.locationLabel ou municipality.name | -| demandas/[slug] | demand.title | `${kind} · ${municipalityName}` | -| dobradinhas/[slug] | stateDeputy.name | party (opcional) | -| organizacoes/[slug] | organization.name | organizationKindLabels[kind] | -| apoiadores/[id] | Apoiador | supporter.name | -| assessores/[id] | Assessor | advisor.name | +| Rota | title | subtitle | +| ------------------- | ----------------- | --------------------------------------- | +| municipios/[slug] | view.name | formatMunicipalityGeographyLabel(view) | +| liderancas/[id] | Liderança | leadership.name | +| atividades/[slug] | view.title | view.locationLabel ou municipality.name | +| demandas/[slug] | demand.title | `${kind} · ${municipalityName}` | +| dobradinhas/[slug] | stateDeputy.name | party (opcional) | +| organizacoes/[slug] | organization.name | organizationKindLabels[kind] | +| apoiadores/[id] | Apoiador | supporter.name | +| assessores/[id] | Assessor | advisor.name | ## Fases verificáveis diff --git a/src/app/(campaign)/campanha/(app)/apoiadores/[id]/page.tsx b/src/app/(campaign)/campanha/(app)/apoiadores/[id]/page.tsx index b248fbc6..7b6f2bac 100644 --- a/src/app/(campaign)/campanha/(app)/apoiadores/[id]/page.tsx +++ b/src/app/(campaign)/campanha/(app)/apoiadores/[id]/page.tsx @@ -6,10 +6,10 @@ import { getPayload } from 'payload' import { setSupporterVoteIntentionFormAction } from '@/app/(campaign)/campanha/(app)/apoiadores/[id]/formActions' import { ConsentText } from '@/components/campaign/shared/ConsentText' +import { SetCampaignPageChrome } from '@/components/campaign/shell/CampaignPageChromeContext' import { RemoveSupporterDataButton } from '@/components/campaign/supporter/RemoveSupporterDataButton' import { SupporterShareKit } from '@/components/campaign/supporter/SupporterShareKit' import { VoteIntentionControl } from '@/components/campaign/supporter/VoteIntentionControl' -import { SetCampaignPageChrome } from '@/components/campaign/shell/CampaignPageChromeContext' import { Badge } from '@/components/ui/Badge' import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' import { campaignPageMetadata } from '@/lib/campaignPageChrome' diff --git a/src/app/(campaign)/campanha/(app)/assessores/[id]/page.tsx b/src/app/(campaign)/campanha/(app)/assessores/[id]/page.tsx index e8e7dad9..a11b028f 100644 --- a/src/app/(campaign)/campanha/(app)/assessores/[id]/page.tsx +++ b/src/app/(campaign)/campanha/(app)/assessores/[id]/page.tsx @@ -6,8 +6,8 @@ import { getPayload } from 'payload' import { AdvisorDebouncedTextCell } from '@/components/campaign/advisor/AdvisorDebouncedTextCell' import { AdvisorPasswordResetButton } from '@/components/campaign/advisor/AdvisorPasswordResetButton' -import { CampaignPageShell } from '@/components/campaign/shell/CampaignPageShell' import { SetCampaignPageChrome } from '@/components/campaign/shell/CampaignPageChromeContext' +import { CampaignPageShell } from '@/components/campaign/shell/CampaignPageShell' import { Badge } from '@/components/ui/Badge' import { campaignPageMetadata } from '@/lib/campaignPageChrome' import { formatBrazilianPhoneInput } from '@/lib/phone' diff --git a/src/app/(campaign)/campanha/(app)/atividades/[slug]/page.tsx b/src/app/(campaign)/campanha/(app)/atividades/[slug]/page.tsx index 1908ebab..f347fe97 100644 --- a/src/app/(campaign)/campanha/(app)/atividades/[slug]/page.tsx +++ b/src/app/(campaign)/campanha/(app)/atividades/[slug]/page.tsx @@ -13,8 +13,8 @@ import { ActivityTabNav } from '@/components/campaign/activity/ActivityTabNav' import { ActivityTaskChecklist } from '@/components/campaign/activity/ActivityTaskChecklist' import { ActivityUpdateFeed } from '@/components/campaign/activity/ActivityUpdateFeed' import { ActivityUpdateForm } from '@/components/campaign/activity/ActivityUpdateForm' -import { CampaignQuickActionContextBridge } from '@/components/campaign/shell/CampaignQuickActionContextBridge' import { SetCampaignPageChrome } from '@/components/campaign/shell/CampaignPageChromeContext' +import { CampaignQuickActionContextBridge } from '@/components/campaign/shell/CampaignQuickActionContextBridge' import { Badge } from '@/components/ui/Badge' import { Button } from '@/components/ui/button' import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' @@ -50,9 +50,7 @@ export async function generateMetadata({ params }: ActivityDetailPageProps) { const context = await resolveAccessibleActivityContext(payload, user, slug, activeTab) const view = await getActivityDetailPageData(payload, user, context, activeTab, 1) const subtitle = view.locationLabel || view.municipality?.name - return campaignPageMetadata( - subtitle ? { title: view.title, subtitle } : { title: view.title }, - ) + return campaignPageMetadata(subtitle ? { title: view.title, subtitle } : { title: view.title }) } catch { return campaignPageMetadata({ title: 'Atividade' }) } @@ -100,9 +98,7 @@ export default async function ActivityDetailPage({
- {leadership.supportStatus ? ( - - ) : null} + {leadership.supportStatus ? : null} {leadership.hasAppAccess ? 'Com acesso ao app' : 'Sem acesso ao app'} diff --git a/src/app/(campaign)/campanha/(app)/municipios/[slug]/page.tsx b/src/app/(campaign)/campanha/(app)/municipios/[slug]/page.tsx index 9ce08a6f..5c311fc5 100644 --- a/src/app/(campaign)/campanha/(app)/municipios/[slug]/page.tsx +++ b/src/app/(campaign)/campanha/(app)/municipios/[slug]/page.tsx @@ -6,17 +6,15 @@ import { Suspense } from 'react' import { RecentVisitTracker } from '@/components/campaign/dashboard/RecentVisitTracker' import { MunicipalityTabNav } from '@/components/campaign/municipality/MunicipalityTabNav' -import { CampaignPageShell } from '@/components/campaign/shell/CampaignPageShell' import { SetCampaignPageChrome } from '@/components/campaign/shell/CampaignPageChromeContext' +import { CampaignPageShell } from '@/components/campaign/shell/CampaignPageShell' import { campaignPageMetadata } from '@/lib/campaignPageChrome' import { requireCampaignPageActor } from '@/utilities/campaignPageActor' import { resolveMunicipalityDetailTab, type MunicipalityDetailSearchParams, } from '@/utilities/municipality/municipalityDetailTabUi' -import { - formatMunicipalityGeographyLabel, -} from '@/utilities/municipality/municipalityLabels' +import { formatMunicipalityGeographyLabel } from '@/utilities/municipality/municipalityLabels' import { getMunicipalityDetailViewModel, MunicipalityNotFoundError, diff --git a/src/app/(campaign)/campanha/(app)/organizacoes/[slug]/page.tsx b/src/app/(campaign)/campanha/(app)/organizacoes/[slug]/page.tsx index 64bf020b..fa7d3ce8 100644 --- a/src/app/(campaign)/campanha/(app)/organizacoes/[slug]/page.tsx +++ b/src/app/(campaign)/campanha/(app)/organizacoes/[slug]/page.tsx @@ -6,8 +6,8 @@ import { getPayload } from 'payload' import { ActivityStatusBadge } from '@/components/campaign/activity/ActivityStatusBadge' import { OrganizationForm } from '@/components/campaign/organization/OrganizationForm' -import { CampaignPageShell } from '@/components/campaign/shell/CampaignPageShell' import { SetCampaignPageChrome } from '@/components/campaign/shell/CampaignPageChromeContext' +import { CampaignPageShell } from '@/components/campaign/shell/CampaignPageShell' import { Badge } from '@/components/ui/Badge' import { campaignPageMetadata } from '@/lib/campaignPageChrome' import { organizationKindLabels } from '@/lib/schemas/organization' @@ -59,9 +59,7 @@ export default async function OrganizationDetailPage({ params }: OrganizationDet }} /> {organization.municipalityNames.length ? ( -

- Atua em {organization.municipalityNames.join(', ')} -

+

Atua em {organization.municipalityNames.join(', ')}

) : null} {organization.notes ? (

{organization.notes}