"use client"; import { authClient } from "@repo/auth/client"; import { useRouter } from "@shared/hooks/router"; import { clearCache } from "@shared/lib/cache"; import { Progress } from "@ui/components/progress"; import { useTranslations } from "next-intl"; import { useSearchParams } from "next/navigation"; import { withQuery } from "ufo"; import { OnboardingStep1 } from "./OnboardingStep1"; export function OnboardingForm() { const t = useTranslations(); const router = useRouter(); const searchParams = useSearchParams(); const stepSearchParam = searchParams.get("step"); const redirectTo = searchParams.get("redirectTo"); const onboardingStep = stepSearchParam ? Number.parseInt(stepSearchParam, 10) : 1; const setStep = (step: number) => { router.replace( withQuery(window.location.search ?? "", { step, }), ); }; const onCompleted = async () => { await authClient.updateUser({ onboardingComplete: true, }); await clearCache(); router.replace(redirectTo ?? "/app"); }; const steps = [ { component: onCompleted()} />, }, ]; return (

{t("onboarding.title")}

{t("onboarding.message")}

{steps.length > 1 && (
{t("onboarding.step", { step: onboardingStep, total: steps.length, })}
)} {steps[onboardingStep - 1].component}
); }