'use client' import { useRouter } from 'next/navigation' import { useActionState, useState } from 'react' import { setMunicipalityPoliticalTrendFormAction } from '@/app/(campaign)/campanha/(app)/municipios/municipalityStaffFormActions' import { WizardTrendSkipTrailing } from '@/components/campaign/municipality/WizardTrendSkipTrailing' import { CampaignFormActionMessage } from '@/components/campaign/shared/CampaignFormActionMessage' import { CampaignWizardShell } from '@/components/campaign/shared/CampaignWizardShell' import { useCampaignFormSuccessToast } from '@/components/campaign/shared/useCampaignFormSuccessToast' import { Button } from '@/components/ui/button' import { Spinner } from '@/components/ui/Spinner' import { Textarea } from '@/components/ui/textarea' import type { CampaignWizardActionId } from '@/lib/campaignActionRoutes' import { wizardTrendHref } from '@/lib/campaignActionRoutes' import { recordLastActedMunicipality } from '@/lib/campaignLastActedMunicipality' import { wizardFlowTitleForSlug } from '@/lib/campaignWizardCopy' import { resolveWizardTrendSkip, WIZARD_TREND_CLEAR_LABEL, WIZARD_TREND_SAVE_LABEL, } from '@/lib/politicalTrendWizardUi' import type { PoliticalTrendStatusValue } from '@/lib/schemas/municipality' import { resolveWizardChainEntry, wizardChainContinueHref, wizardChainEndHref, } from '@/lib/wizardActionChain' import { politicalTrendLabels } from '@/utilities/municipality/municipalityLabels' type WizardTrendNoteStepProps = { actionSlug: string municipalityId: number municipalityName: string municipalitySlug: string trendStatus: PoliticalTrendStatusValue initialNote: string entryAction?: CampaignWizardActionId returnPath?: string } export const WizardTrendNoteStep = ({ actionSlug, municipalityId, municipalityName, municipalitySlug, trendStatus, initialNote, entryAction, returnPath, }: WizardTrendNoteStepProps) => { const router = useRouter() const [note, setNote] = useState(initialNote) const [state, submitAction, isPending] = useActionState( setMunicipalityPoliticalTrendFormAction, {}, ) const skip = resolveWizardTrendSkip(entryAction, municipalitySlug, returnPath) const stepTitle = `Mudar tendência para ${politicalTrendLabels[trendStatus]}` useCampaignFormSuccessToast(state, () => { recordLastActedMunicipality(municipalitySlug) const sessionEntry = resolveWizardChainEntry(entryAction, 'change-trend') router.replace( wizardChainContinueHref(sessionEntry, 'change-trend', municipalitySlug, returnPath), ) }) return ( : undefined} contentFocus="none" >