From 8c7633da4aca625ee3144166e7584b860d7ff1b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Ign=C3=A1cio=20Fontoura=20Solla?= Date: Thu, 30 Jul 2026 04:00:35 -0300 Subject: [PATCH] B63+: wire wizard signal steps to B75 chrome and DRY skip. --- .../municipality/WizardSignalBodyStep.tsx | 20 ++++----- .../municipality/WizardSignalSkipTrailing.tsx | 14 +++++++ .../municipality/WizardSignalTypeStep.tsx | 41 ++++++++----------- src/lib/municipalitySignalTypeMeta.ts | 4 ++ src/lib/wizardSignalUi.ts | 13 +++++- tests/unit/wizardSignalUi.unit.spec.ts | 17 ++++++-- 6 files changed, 67 insertions(+), 42 deletions(-) create mode 100644 src/components/campaign/municipality/WizardSignalSkipTrailing.tsx diff --git a/src/components/campaign/municipality/WizardSignalBodyStep.tsx b/src/components/campaign/municipality/WizardSignalBodyStep.tsx index ae34d8c9..553f37fa 100644 --- a/src/components/campaign/municipality/WizardSignalBodyStep.tsx +++ b/src/components/campaign/municipality/WizardSignalBodyStep.tsx @@ -1,27 +1,26 @@ 'use client' -import Link from 'next/link' import { useRouter } from 'next/navigation' import { useActionState } from 'react' import { createMunicipalityListSignalFormAction } from '@/app/(campaign)/campanha/(app)/municipios/municipalityStaffFormActions' import { CampaignFormActionMessage } from '@/components/campaign/shared/CampaignFormActionMessage' import { CampaignWizardShell } from '@/components/campaign/shared/CampaignWizardShell' +import { WizardSignalSkipTrailing } from '@/components/campaign/municipality/WizardSignalSkipTrailing' 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 { wizardSignalHref } from '@/lib/campaignActionRoutes' +import { wizardFlowTitleForSlug } from '@/lib/campaignWizardCopy' import { CAMPAIGN_HOME } from '@/lib/campaignPaths' import type { MunicipalitySignalType } from '@/lib/schemas/municipalityUpdate' import { municipalitySignalTypeLabels } from '@/lib/schemas/municipalityUpdate' import { - shouldShowWizardSignalSkip, + resolveWizardSignalSkip, WIZARD_SIGNAL_BODY_STEP_TITLE_PREFIX, WIZARD_SIGNAL_SAVE_LABEL, - WIZARD_SIGNAL_SKIP_LABEL, - wizardSignalSkipHref, } from '@/lib/wizardSignalUi' type WizardSignalBodyStepProps = { @@ -46,7 +45,7 @@ export const WizardSignalBodyStep = ({ createMunicipalityListSignalFormAction, {}, ) - const showSkip = shouldShowWizardSignalSkip(entryAction) + const skip = resolveWizardSignalSkip(entryAction) const stepTitle = `${WIZARD_SIGNAL_BODY_STEP_TITLE_PREFIX}: ${municipalitySignalTypeLabels[signalType]}` useCampaignFormSuccessToast(state, () => { @@ -55,16 +54,13 @@ export const WizardSignalBodyStep = ({ return ( - {WIZARD_SIGNAL_SKIP_LABEL} - - ) : undefined - } + skip={skip} + trailingAction={skip ? : undefined} >
( + +) diff --git a/src/components/campaign/municipality/WizardSignalTypeStep.tsx b/src/components/campaign/municipality/WizardSignalTypeStep.tsx index d54708ab..a5ff912b 100644 --- a/src/components/campaign/municipality/WizardSignalTypeStep.tsx +++ b/src/components/campaign/municipality/WizardSignalTypeStep.tsx @@ -2,10 +2,10 @@ import { Info } from 'lucide-react' import Link from 'next/link' -import { useRouter } from 'next/navigation' import { useState } from 'react' import { CampaignWizardShell } from '@/components/campaign/shared/CampaignWizardShell' +import { WizardSignalSkipTrailing } from '@/components/campaign/municipality/WizardSignalSkipTrailing' import { Button } from '@/components/ui/button' import { Drawer, @@ -18,14 +18,16 @@ import { } from '@/components/ui/Drawer' import type { CampaignWizardActionId } from '@/lib/campaignActionRoutes' import { wizardActionHref, wizardSignalHref } from '@/lib/campaignActionRoutes' -import { municipalitySignalTypeMeta } from '@/lib/municipalitySignalTypeMeta' +import { wizardFlowTitleForSlug } from '@/lib/campaignWizardCopy' +import { + municipalitySignalTypeMeta, + municipalitySignalTypeMetaByType, +} from '@/lib/municipalitySignalTypeMeta' import type { MunicipalitySignalType } from '@/lib/schemas/municipalityUpdate' import { cn } from '@/lib/utils' import { - shouldShowWizardSignalSkip, - WIZARD_SIGNAL_SKIP_LABEL, + resolveWizardSignalSkip, WIZARD_SIGNAL_TYPE_STEP_TITLE, - wizardSignalSkipHref, } from '@/lib/wizardSignalUi' type WizardSignalTypeStepProps = { @@ -41,44 +43,33 @@ export const WizardSignalTypeStep = ({ municipalitySlug, entryAction, }: WizardSignalTypeStepProps) => { - const router = useRouter() const [infoType, setInfoType] = useState(null) - const infoEntry = infoType - ? municipalitySignalTypeMeta.find((entry) => entry.type === infoType) - : null - const showSkip = shouldShowWizardSignalSkip(entryAction) + const infoEntry = infoType ? municipalitySignalTypeMetaByType[infoType] : null + const skip = resolveWizardSignalSkip(entryAction) return ( <> - {WIZARD_SIGNAL_SKIP_LABEL} - - ) : undefined - } + skip={skip} + trailingAction={skip ? : undefined} >
    {municipalitySignalTypeMeta.map((entry) => { const Icon = entry.icon return (
  • - +