teqo-backup/src/lib/campaignWizardCopy.ts
Cursor Agent 2fa6e7298a
B104 — Wizard: label genérica "Pular" nas ações encadeadas
Substitui as quatro labels longas de skip (votos, tendência, sinal,
liderança) por uma constante compartilhada WIZARD_CHAIN_SKIP_LABEL.
Resolvers e condições de exibição permanecem intactos (B96/B98).

Closes #131

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-01 17:57:12 +00:00

89 lines
3.2 KiB
TypeScript

import {
CAMPAIGN_WIZARD_ACTION_SLUGS,
campaignWizardActionIdForSlug,
type CampaignWizardActionId,
} from '@/lib/campaignActionRoutes'
import { wizardFlowTitleForActionId } from '@/lib/campaignHomeActions'
import { resolveWizardChainEntry, wizardChainContinueHref } from '@/lib/wizardActionChain'
export const WIZARD_MUNICIPALITY_STEP_TITLE = 'Em qual município?' as const
export const WIZARD_DISMISS_ARIA_LABEL = 'Sair da ação' as const
export const WIZARD_STEP_PENDING_MESSAGE = 'Carregando passo…' as const
export const WIZARD_APP_TOP_BAR_ARIA_LABEL = 'Campanha Jorge Solla' as const
export const wizardMunicipalityChromeAriaLabel = (municipalityLabel: string): string =>
`Município em atualização: ${municipalityLabel}`
export const wizardFlowChromeAriaLabel = (flowTitle: string): string => `Ação: ${flowTitle}`
export const wizardFlowTitleForSlug = (actionSlug: string): string => {
const actionId = campaignWizardActionIdForSlug(actionSlug)
return actionId ? wizardFlowTitleForActionId(actionId) : 'Continuar'
}
export const WIZARD_MUNICIPALITY_SEARCH_LABEL = 'Buscar município' as const
export const WIZARD_MUNICIPALITY_SEARCH_PLACEHOLDER = 'Nome do município…' as const
export const WIZARD_MUNICIPALITY_SEARCH_EMPTY = 'Nenhum município encontrado.' as const
export const WIZARD_VOTES_SAVED_MESSAGE = 'Votos estimados atualizados.' as const
export const WIZARD_CHAIN_SKIP_LABEL = 'Pular' as const
export const WIZARD_VOTES_FINAL_CTA_LABEL = 'Salvar estimativas →' as const
const WIZARD_NEXT_STEP_GENERIC_PLACEHOLDER = 'Próximo passo deste fluxo em breve.' as const
export type WizardVotesSkipAction = {
label: string
href: string
}
const shouldShowWizardVotesSkip = (entryAction: CampaignWizardActionId | undefined): boolean =>
entryAction != null && entryAction !== 'update-votes'
export const resolveWizardVotesSkip = (
entryAction: CampaignWizardActionId | undefined,
municipalitySlug: string,
): WizardVotesSkipAction | undefined =>
shouldShowWizardVotesSkip(entryAction)
? {
label: WIZARD_CHAIN_SKIP_LABEL,
href: wizardChainContinueHref(
resolveWizardChainEntry(entryAction, 'update-votes'),
'update-votes',
municipalitySlug,
),
}
: undefined
export const wizardNextStepTitle = (actionSlug: string): string => {
if (actionSlug === CAMPAIGN_WIZARD_ACTION_SLUGS['update-votes']) {
return 'Ajustar votos estimados'
}
return 'Continuar'
}
export const wizardNextStepPlaceholder = (_actionSlug: string): string =>
WIZARD_NEXT_STEP_GENERIC_PLACEHOLDER
export const WIZARD_LEADERSHIP_GRID_TITLE = 'Quem coordena por aqui?' as const
export const WIZARD_LEADERSHIP_FORM_CREATE_TITLE = 'Nova liderança' as const
export const WIZARD_LEADERSHIP_FORM_EDIT_TITLE = 'Atualizar liderança' as const
export const WIZARD_LEADERSHIP_CONTINUE_LABEL = 'Continuar' as const
export const WIZARD_LEADERSHIP_ADD_TILE_LABEL = 'Adicionar liderança' as const
export const WIZARD_LEADERSHIP_EMPTY_NOTES = 'Sem observação.' as const
export const WIZARD_LEADERSHIP_EMPTY_GRID =
'Nenhuma liderança cadastrada neste município ainda.' as const
export const WIZARD_LEADERSHIP_SAVED_TOAST = 'Liderança salva.' as const