"use client"; import { zodResolver } from "@hookform/resolvers/zod"; import { authClient } from "@repo/auth/client"; import { useSession } from "@saas/auth/hooks/use-session"; import { UserAvatarUpload } from "@saas/settings/components/UserAvatarUpload"; import { Button } from "@ui/components/button"; import { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, } from "@ui/components/form"; import { Input } from "@ui/components/input"; import { ArrowRightIcon } from "lucide-react"; import { useTranslations } from "next-intl"; import { useEffect } from "react"; import type { SubmitHandler } from "react-hook-form"; import { useForm } from "react-hook-form"; import { z } from "zod"; const formSchema = z.object({ name: z.string(), }); type FormValues = z.infer; export function OnboardingStep1({ onCompleted }: { onCompleted: () => void }) { const t = useTranslations(); const { user } = useSession(); const form = useForm({ resolver: zodResolver(formSchema), defaultValues: { name: user?.name ?? "", }, }); useEffect(() => { if (user) { form.setValue("name", user.name ?? ""); } }, [user]); const onSubmit: SubmitHandler = async ({ name }) => { form.clearErrors("root"); try { await authClient.updateUser({ name, }); onCompleted(); } catch (e) { form.setError("root", { type: "server", message: t("onboarding.notifications.accountSetupFailed"), }); } }; return (
( {t("onboarding.account.name")} )} />
{t("onboarding.account.avatar")} {t("onboarding.account.avatarDescription")}
{ return; }} onError={() => { return; }} />
); }