mirror of
https://github.com/fsolla/teqo.git
synced 2026-11-14 08:53:11 +00:00
54 lines
2.2 KiB
TypeScript
54 lines
2.2 KiB
TypeScript
import { Minus, ThumbsDown, ThumbsUp, type LucideIcon } from 'lucide-react'
|
|
|
|
import { politicalTrendStatuses, type PoliticalTrendStatusValue } from '@/lib/schemas/municipality'
|
|
|
|
const politicalTrendDisplayLabels: Record<PoliticalTrendStatusValue, string> = {
|
|
favoravel: 'Favorável',
|
|
neutra: 'Neutra',
|
|
desfavoravel: 'Desfavorável',
|
|
}
|
|
|
|
export type PoliticalTrendWizardMetaEntry = {
|
|
status: PoliticalTrendStatusValue
|
|
label: string
|
|
changeDescription: string
|
|
infoContent: string
|
|
icon: LucideIcon
|
|
tileClassName: string
|
|
}
|
|
|
|
const trendIcons: Record<PoliticalTrendStatusValue, LucideIcon> = {
|
|
favoravel: ThumbsUp,
|
|
neutra: Minus,
|
|
desfavoravel: ThumbsDown,
|
|
}
|
|
|
|
const trendTileClassNames: Record<PoliticalTrendStatusValue, string> = {
|
|
favoravel: 'border-estimate-confirmed-foreground text-estimate-confirmed-foreground',
|
|
neutra: 'border-border text-foreground',
|
|
desfavoravel: 'border-destructive text-destructive',
|
|
}
|
|
|
|
const trendInfoContent: Record<PoliticalTrendStatusValue, string> = {
|
|
favoravel:
|
|
'A leitura local favorece a campanha: aliados ativos, rede respondendo, espaço político aberto ou apoio consolidado. Use quando a equipe tem confiança de que o município está a nosso favor — não só por um evento isolado.',
|
|
neutra:
|
|
'Sem leitura clara de favor ou desfavor: disputa aberta, rede morna ou informação insuficiente para classificar. Use quando não há sinal forte para favorável ou desfavorável.',
|
|
desfavoravel:
|
|
'A leitura local pressiona a campanha: adversário ganhando espaço, rede esfriando ou apoio em risco. Use quando a equipe precisa registrar que o município está desfavorável — com o porquê na justificativa.',
|
|
}
|
|
|
|
export const politicalTrendWizardMeta: PoliticalTrendWizardMetaEntry[] = politicalTrendStatuses.map(
|
|
(status) => ({
|
|
status,
|
|
label: politicalTrendDisplayLabels[status],
|
|
changeDescription: `Mudar tendência para ${politicalTrendDisplayLabels[status]}`,
|
|
infoContent: trendInfoContent[status],
|
|
icon: trendIcons[status],
|
|
tileClassName: trendTileClassNames[status],
|
|
}),
|
|
)
|
|
|
|
export const politicalTrendWizardMetaByStatus = Object.fromEntries(
|
|
politicalTrendWizardMeta.map((entry) => [entry.status, entry]),
|
|
) as Record<PoliticalTrendStatusValue, PoliticalTrendWizardMetaEntry>
|