- Mapa das Praças
+ Mapa dos Municípios
{comparisonActive && comparison
@@ -277,7 +277,7 @@ export const MunicipalityMapPanel = ({
{/* zone breakdown below */}
{bundle.zoneBreakdown.length > 0 && !comparisonActive ? (
-
Praças por zona eleitoral
+
Municípios por zona eleitoral
Zonas não têm polígono oficial — Salvador e Camaçari aparecem agregadas no mapa e
detalhadas aqui.
diff --git a/src/components/campaign/municipality/MunicipalityAdvisorsForm.tsx b/src/components/campaign/municipality/MunicipalityAdvisorsForm.tsx
index f3740a1e..876c8b24 100644
--- a/src/components/campaign/municipality/MunicipalityAdvisorsForm.tsx
+++ b/src/components/campaign/municipality/MunicipalityAdvisorsForm.tsx
@@ -35,9 +35,9 @@ export const MunicipalityAdvisorsForm = ({
return (
@@ -90,7 +90,7 @@ export const MunicipalityLeadershipsPanel = ({
) : (
- Nenhuma liderança vinculada a esta Praça ainda.
+ Nenhuma liderança vinculada a este município ainda.
)}
diff --git a/src/components/campaign/municipality/MunicipalityPledgesPanel.tsx b/src/components/campaign/municipality/MunicipalityPledgesPanel.tsx
index 1da932e5..14475f62 100644
--- a/src/components/campaign/municipality/MunicipalityPledgesPanel.tsx
+++ b/src/components/campaign/municipality/MunicipalityPledgesPanel.tsx
@@ -104,7 +104,7 @@ export const MunicipalityPledgesPanel = ({
>
) : (
- Nenhuma liderança declarou votos nesta Praça ainda.
+ Nenhuma liderança declarou votos neste município ainda.
)}
diff --git a/src/components/campaign/municipality/MunicipalityTabNav.tsx b/src/components/campaign/municipality/MunicipalityTabNav.tsx
index 39e869f0..b8d7d795 100644
--- a/src/components/campaign/municipality/MunicipalityTabNav.tsx
+++ b/src/components/campaign/municipality/MunicipalityTabNav.tsx
@@ -27,7 +27,7 @@ export const MunicipalityTabNav = ({
searchParams: MunicipalityDetailSearchParams
}) => (
- Bairros desta Praça
+ Bairros deste município
{neighborhoods.length}{' '}
diff --git a/src/components/campaign/organization/OrganizationForm.tsx b/src/components/campaign/organization/OrganizationForm.tsx
index e017466a..6b72b7a7 100644
--- a/src/components/campaign/organization/OrganizationForm.tsx
+++ b/src/components/campaign/organization/OrganizationForm.tsx
@@ -80,11 +80,11 @@ export const OrganizationForm = ({
diff --git a/src/components/campaign/supporter/SupporterFilters.tsx b/src/components/campaign/supporter/SupporterFilters.tsx
index 89ef55eb..286712b0 100644
--- a/src/components/campaign/supporter/SupporterFilters.tsx
+++ b/src/components/campaign/supporter/SupporterFilters.tsx
@@ -71,7 +71,7 @@ const FilterFields = ({
- Município
+ Cidade
- Praça
+ Município
- Praça{requireMunicipality ? ' *' : ''}
+ Município{requireMunicipality ? ' *' : ''}
- {!requireMunicipality ? Sem Praça : null}
+ {!requireMunicipality ? Sem município : null}
{municipalityOptions.map((municipality) => (
{municipality.name}
diff --git a/src/components/campaign/supporter/SupporterList.tsx b/src/components/campaign/supporter/SupporterList.tsx
index d2f34800..1f920594 100644
--- a/src/components/campaign/supporter/SupporterList.tsx
+++ b/src/components/campaign/supporter/SupporterList.tsx
@@ -52,7 +52,7 @@ const SupporterCard = ({ supporter }: { supporter: SupporterListItemViewModel })
)}
- {supporter.city ?? 'Município não informado'}
+ {supporter.city ?? 'Cidade não informada'}
@@ -65,7 +65,7 @@ const SupporterCard = ({ supporter }: { supporter: SupporterListItemViewModel })
{supporter.municipalityName}
) : (
- Sem Praça vinculada
+ Sem município vinculado
)}
{supporter.phone ? (
@@ -99,12 +99,12 @@ const supporterColumns: Array> =
},
{
id: 'city',
- head: Município ,
+ head: Cidade ,
cell: (supporter) => supporter.city ?? '—',
},
{
id: 'municipality',
- head: Praça ,
+ head: Município ,
cellClassName: 'max-w-48 whitespace-normal',
cell: (supporter) =>
supporter.municipalityName ? (
@@ -115,7 +115,7 @@ const supporterColumns: Array> =
{supporter.municipalityName}
) : (
- Sem Praça vinculada
+ Sem município vinculado
),
},
{
diff --git a/src/lib/campaignAuthCopy.ts b/src/lib/campaignAuthCopy.ts
index 266fc482..e6e36381 100644
--- a/src/lib/campaignAuthCopy.ts
+++ b/src/lib/campaignAuthCopy.ts
@@ -7,7 +7,7 @@ export const CAMPAIGN_LEADERSHIP_LOGIN_RECOVERY_HINT =
'Conta só com celular? Peça um novo convite ao coordenador — a recuperação por e-mail não funciona sem e-mail cadastrado.'
export const CAMPAIGN_FIRST_ACCESS_HINT =
- 'Peça um convite no WhatsApp ao assessor da sua Praça.'
+ 'Peça um convite no WhatsApp ao assessor do seu município.'
export const CAMPAIGN_LOGIN_SUBTITLE = 'Use o e-mail ou o celular cadastrado na sua conta.'
diff --git a/src/lib/municipalityCatalog.ts b/src/lib/municipalityCatalog.ts
index f5c70b0e..b4bc15e9 100644
--- a/src/lib/municipalityCatalog.ts
+++ b/src/lib/municipalityCatalog.ts
@@ -33,7 +33,7 @@ export interface MunicipalityCatalogEntry {
/** Display name, e.g. "Feira de Santana" or "Salvador — ZE 3". */
readonly name: string
readonly kind: MunicipalityKind
- /** Canonical municipality name (every Praça is single-municipality). */
+ /** Canonical municipality name (every catalog unit is single-municipality). */
readonly city: string
/** Official Bahia identity territory (TI) of the municipality. */
readonly region: BahiaIdentityTerritory
diff --git a/src/lib/schemas/leadership.ts b/src/lib/schemas/leadership.ts
index 9f9b4c57..19820fe3 100644
--- a/src/lib/schemas/leadership.ts
+++ b/src/lib/schemas/leadership.ts
@@ -41,7 +41,7 @@ export const MAX_LEADERSHIP_STATE_DEPUTIES = 20
const municipalitiesArraySchema = z
.array(positiveRelationshipId)
- .min(1, 'Vincule a liderança a pelo menos uma Praça.')
+ .min(1, 'Vincule a liderança a pelo menos um município.')
.max(MAX_LEADERSHIP_MUNICIPALITIES)
.transform((ids) => [...new Set(ids)])
diff --git a/src/payload-types.ts b/src/payload-types.ts
index ddecc403..78d3bb9a 100644
--- a/src/payload-types.ts
+++ b/src/payload-types.ts
@@ -683,7 +683,7 @@ export interface ActionPlan {
}[]
| null;
/**
- * O que aconteceu, público, aprendizados. Vira base para futuras atividades na mesma Praça.
+ * O que aconteceu, público, aprendizados. Vira base para futuras atividades no mesmo município.
*/
resultSummary?: string | null;
resultMedia?: (number | Media)[] | null;
diff --git a/src/utilities/access/municipalities.ts b/src/utilities/access/municipalities.ts
index e72fd905..fad1e9f1 100644
--- a/src/utilities/access/municipalities.ts
+++ b/src/utilities/access/municipalities.ts
@@ -1,5 +1,5 @@
// ---------------------------------------------------------------------------
-// Municipalities (Praças)
+// Municipalities (Municípios)
// ---------------------------------------------------------------------------
import type { Access, FieldAccess, Payload, PayloadRequest } from 'payload'
diff --git a/src/utilities/actionPlanViewModels.ts b/src/utilities/actionPlanViewModels.ts
index ebe93f31..e4c832b7 100644
--- a/src/utilities/actionPlanViewModels.ts
+++ b/src/utilities/actionPlanViewModels.ts
@@ -16,7 +16,7 @@ export const actionPlanMunicipalitySummary = (
? { id: municipality.id, name: municipality.name, slug: municipality.slug }
: null
-/** Short "where" line, e.g. "Praça de Itabuna · Feira do Malhado". */
+/** Short "where" line, e.g. "Itabuna · Feira do Malhado". */
export const formatActionPlanLocationLabel = ({
municipalityName,
locality,
diff --git a/src/utilities/campaignDashboardData.ts b/src/utilities/campaignDashboardData.ts
index ee1ee620..32c4c8ec 100644
--- a/src/utilities/campaignDashboardData.ts
+++ b/src/utilities/campaignDashboardData.ts
@@ -165,7 +165,7 @@ export const getCampaignDashboardData = async (
: 'Contato'
return {
pledgeID: pledge.id,
- municipalityName: municipality?.name ?? 'Praça',
+ municipalityName: municipality?.name ?? 'Município',
municipalitySlug: municipality?.slug ?? '',
contactName,
declaredVotes: pledge.declaredVotes,
@@ -180,7 +180,7 @@ export const getCampaignDashboardData = async (
const author = authorsById.get(relationshipId(update.author) ?? -1)
return {
id: update.id,
- municipalityName: municipality?.name ?? 'Praça',
+ municipalityName: municipality?.name ?? 'Município',
municipalitySlug: municipality?.slug ?? '',
authorName: String(author?.name ?? 'Usuário'),
createdAt: update.createdAt,
diff --git a/src/utilities/campaignDemandData.ts b/src/utilities/campaignDemandData.ts
index 1bbc923f..2ab0a5d8 100644
--- a/src/utilities/campaignDemandData.ts
+++ b/src/utilities/campaignDemandData.ts
@@ -141,7 +141,7 @@ const toDemandRow = (
slug: demand.slug,
kind: demand.kind as CampaignDemandKind,
status: demand.status as CampaignDemandStatus,
- municipalityName: municipality?.name ?? 'Praça',
+ municipalityName: municipality?.name ?? 'Município',
municipalitySlug: municipality?.slug ?? '',
requesterName: leadershipID ? (requesterBy.get(leadershipID) ?? null) : null,
createdAt: demand.createdAt,
diff --git a/src/utilities/leadershipData.ts b/src/utilities/leadershipData.ts
index 39820b31..4ad68dc0 100644
--- a/src/utilities/leadershipData.ts
+++ b/src/utilities/leadershipData.ts
@@ -106,7 +106,7 @@ const toLeadershipRows = async (
municipalityNames: (doc.municipalities ?? [])
.map(relationshipId)
.filter((id): id is number => id !== null)
- .map((id) => municipalityNames.get(id) ?? 'Praça'),
+ .map((id) => municipalityNames.get(id) ?? 'Município'),
organizationNames: (doc.organizations ?? [])
.map(relationshipId)
.filter((id): id is number => id !== null)
diff --git a/src/utilities/municipalityCandidateComparison.ts b/src/utilities/municipalityCandidateComparison.ts
index 1e65b5a0..5c8d15b6 100644
--- a/src/utilities/municipalityCandidateComparison.ts
+++ b/src/utilities/municipalityCandidateComparison.ts
@@ -31,7 +31,7 @@ export type CandidateComparisonRow = {
/**
* Vote comparison between Jorge Solla and selected federal-deputy candidates
* inside one municipality geography, across the TSE series years. This is the
- * coordination's core analysis tool ("com quem comparar nesta Praça?").
+ * coordination's core analysis tool ("com quem comparar neste município?").
*/
/** Cross-request cached core — immutable TSE series, busted with `election-tse`. */
const loadMunicipalityCandidateComparisonCached = unstable_cache(
diff --git a/src/utilities/municipalityElectionGeography.ts b/src/utilities/municipalityElectionGeography.ts
index 8acbc09a..6c4bd587 100644
--- a/src/utilities/municipalityElectionGeography.ts
+++ b/src/utilities/municipalityElectionGeography.ts
@@ -3,9 +3,9 @@ import type { Where } from 'payload'
import { getMunicipalityCatalogEntry, type MunicipalityCatalogEntry } from '@/lib/municipalityCatalog'
/**
- * Election-data geography of a Praça: exactly one municipality (TSE cityCode)
- * and either all of its official zones (municipality Praça) or the single
- * zone (zone Praça). Election collections are keyed by cityCode × zoneNumber,
+ * Election-data geography of a Município: exactly one municipality (TSE cityCode)
+ * and either all of its official zones (whole-municipality unit) or the single
+ * zone (zona unit). Election collections are keyed by cityCode × zoneNumber,
* so the cut at the municipal boundary is exact.
*/
export type MunicipalityElectionGeography = {
diff --git a/src/utilities/municipalityElectoralBaseline.ts b/src/utilities/municipalityElectoralBaseline.ts
index 372a3c89..01ffe8e5 100644
--- a/src/utilities/municipalityElectoralBaseline.ts
+++ b/src/utilities/municipalityElectoralBaseline.ts
@@ -190,7 +190,7 @@ export type CandidateVotesByCity = Map
/**
* Statewide nominal votes of one federal-deputy candidate in one year, grouped
- * by TSE cityCode. Used by the Praças map (choropleth per municipality).
+ * by TSE cityCode. Used by the municipalities map (choropleth per municipality).
*/
export const loadCandidateVotesByCity = async (
payload: Payload,
diff --git a/src/utilities/municipalityMapData.ts b/src/utilities/municipalityMapData.ts
index 80c506f1..ca131fa0 100644
--- a/src/utilities/municipalityMapData.ts
+++ b/src/utilities/municipalityMapData.ts
@@ -222,7 +222,7 @@ export const buildMunicipalityMapBundleFromMunicipalities = async (
}
/**
- * Map data for the Praças overview: municipalities matching the list URL filters (and
+ * Map data for the municipalities overview: municipalities matching the list URL filters (and
* role access) contribute their geography's votes (or 2026 pledge estimates)
* to municipality polygons. When `state.compare` is set, TSE years also carry
* a red↔white↔blue diff (Solla − other candidate).
diff --git a/src/utilities/organizationData.ts b/src/utilities/organizationData.ts
index 2a5d2bda..a20c1973 100644
--- a/src/utilities/organizationData.ts
+++ b/src/utilities/organizationData.ts
@@ -136,7 +136,7 @@ export const loadOrganizationListPageData = async (
municipalityNames: (doc.municipalities ?? [])
.map(relationshipId)
.filter((id): id is number => id !== null)
- .map((id) => municipalityNames.get(id) ?? 'Praça'),
+ .map((id) => municipalityNames.get(id) ?? 'Município'),
leadershipCount: leadershipCounts.get(doc.id) ?? 0,
})),
totalDocs: result.totalDocs,
@@ -221,7 +221,7 @@ export const loadOrganizationDetail = async (
kind: organization.kind as OrganizationKind,
notes: organization.notes ?? null,
municipalityIDs,
- municipalityNames: municipalityIDs.map((id) => municipalityNames.get(id) ?? 'Praça'),
+ municipalityNames: municipalityIDs.map((id) => municipalityNames.get(id) ?? 'Município'),
leaderships: leaderships.docs.map((leadership) => {
const contact = leadership.contact
return {
diff --git a/src/utilities/supporterUi.ts b/src/utilities/supporterUi.ts
index 9679eb3b..9ca58436 100644
--- a/src/utilities/supporterUi.ts
+++ b/src/utilities/supporterUi.ts
@@ -119,7 +119,7 @@ export const resolveSupporterListUrl = (
})
export const getSupporterScopeLabel = (total: number): string =>
- `${total} ${total === 1 ? 'apoiador nas suas Praças' : 'apoiadores nas suas Praças'}`
+ `${total} ${total === 1 ? 'apoiador nos seus municípios' : 'apoiadores nos seus municípios'}`
/** Staff roles with supporter-area access — matches collection-level supporter access. */
export const canAccessSupporterArea = (role: CampaignUser['role']): boolean =>
diff --git a/tests/e2e/campaignActionPlan.e2e.spec.ts b/tests/e2e/campaignActionPlan.e2e.spec.ts
index fa7098bf..da50cf03 100644
--- a/tests/e2e/campaignActionPlan.e2e.spec.ts
+++ b/tests/e2e/campaignActionPlan.e2e.spec.ts
@@ -30,7 +30,7 @@ test.describe('Planos de ação — registro-fundação', () => {
await page.getByLabel('Título *').fill(planTitle)
await page.getByLabel('Tipo de ação *').selectOption('caminhada')
await page.getByLabel('Origem da ação').selectOption('obrigacao_politica')
- await page.getByLabel('Praça *').selectOption(String(municipality.id))
+ await page.getByLabel('Município *').selectOption(String(municipality.id))
await page.getByRole('button', { name: 'Adicionar demanda' }).click()
await page.getByLabel('Título da demanda 1').fill(transportDemand)