"use client"; import { zodResolver } from "@hookform/resolvers/zod"; import { Button } from "@rallly/ui/button"; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@rallly/ui/form"; import { Input } from "@rallly/ui/input"; import { useForm } from "react-hook-form"; import { LanguageSelect } from "@/components/poll/language-selector"; import { TimeZoneSelect } from "@/components/time-zone-picker/time-zone-select"; import { Trans } from "@/components/trans"; import { useSafeAction } from "@/features/safe-action/client"; import { useTimezone } from "@/features/timezone"; import { useTranslation } from "@/i18n/client"; import { completeSetupAction } from "../actions"; import type { SetupFormValues } from "../schema"; import { setupSchema } from "../schema"; interface SetupFormProps { defaultValues?: Partial; } export function SetupForm({ defaultValues }: SetupFormProps) { const { timezone } = useTimezone(); const { i18n } = useTranslation(); const completeSetup = useSafeAction(completeSetupAction); const form = useForm({ resolver: zodResolver(setupSchema), defaultValues: { name: defaultValues?.name ?? "", timeZone: defaultValues?.timeZone || timezone, locale: defaultValues?.locale || i18n.language, }, }); return (
{ await completeSetup.executeAsync(data); })} >
( )} /> ( )} /> ( { field.onChange(value); i18n.changeLanguage(value); }} /> )} /> {completeSetup.result.serverError && ( {completeSetup.result.serverError} )}
); }