teqo-backup/src/components/campaign/SupportStatusBadge.tsx
Francisco Ignácio Fontoura Solla cf13c441aa Remodel /campanha around predefined Praças replacing electoral nuclei.
436 seeded Praças (municipality-based; per-TSE-zone in Salvador/Camaçari) become
the operational unit; roles renamed to coordinator/advisor/leader with advisors
scoped to administered Praças. Leadership is one record per person across many
Praças/organizations; vote pledges split leader-declared vs staff-estimated
(estimates never serialized to leaders). Adds organizations, demand workflow
with staff-only cost/receipts, action-plan results with deputy presence, manual
political trend, multi-candidate comparison and the diverging red/white/blue
map mode. Migration 20260721_020109_remodel_plazas deliberately resets the
campaign vertical in production (public site untouched); test suite ported to
the new model (unit 187 / int 306 / e2e 9 green).
2026-07-21 02:28:00 -03:00

43 lines
1.3 KiB
TypeScript

import { Badge } from '@/components/ui/Badge'
import type { SupportStatus } from '@/lib/schemas/leadership'
export type { SupportStatus } from '@/lib/schemas/leadership'
const statusPresentation = {
engajado: {
label: 'Engajado',
variant: 'support-engaged',
summary: 'Participa ativamente da campanha nas suas Praças e pode ter acesso ao app.',
},
a_abordar: {
label: 'A abordar',
variant: 'support-to-approach',
summary: 'Cadastrado, mas o engajamento ainda não foi confirmado.',
},
em_disputa: {
label: 'Em disputa',
variant: 'support-disputed',
summary: 'Apoio contestado, incerto ou em negociação.',
},
negativo: {
label: 'Negativo',
variant: 'support-negative',
summary: 'Declarou não apoiar ou recusou o contato.',
},
} as const
export const supportStatusLabel = (status: SupportStatus): string =>
statusPresentation[status].label
export const supportStatusSummary = (status: SupportStatus): string =>
statusPresentation[status].summary
export const SupportStatusBadge = ({ status }: { status: SupportStatus }) => {
const presentation = statusPresentation[status]
return (
<Badge variant={presentation.variant} data-support-status={status}>
{presentation.label}
</Badge>
)
}