=> { const router = useRouter() return (action) => { const currentStep = (router.route.startsWith('/onboarding/') && router.query?.id?.[0]) || 'unknown' const nextStep = machine.transition(currentStep, action).value if (nextStep !== currentStep) { void router.push(`/onboarding/${nextStep}`) } } } const machine = Machine( { key: 'onboarding', initial: 'start', states: { start: { on: { EMAIL: 'create', SSO: 'createSSO', }, }, create: { on: { NEXT: 'details', SSO: 'createSSO', }, }, createSSO: { on: { NEXT: 'details', }, }, waitlist: { type: 'final', }, details: { on: { NEXT: 'assets', }, }, assets: { on: { PREV: 'details', NEXT: 'finished', }, }, finished: { type: 'final', }, unknown: { on: { RESUME: [ { target: 'details', cond: 'onboardingDetailsIncomplete' }, { target: 'assets', cond: 'onboardingAssetsIncomplete' }, { target: 'finished' }, ], }, }, }, }, { guards: { onboardingDetailsIncomplete: (_, event) => 'onboardingDetailsComplete' in event ? !event.onboardingDetailsComplete : false, onboardingAssetsIncomplete: (_, event) => 'onboardingAssetsComplete' in event ? !event.onboardingAssetsComplete : false, }, } ) const { t } = useTranslation('offererOnboardingAssets') const transition = useOffererOnboardingTransition() return <button onClick={() => transition('NEXT')}>Next</button>