"use client" import { zodResolver } from "@hookform/resolvers/zod" import { useFormState as useReactFormState } from "react-dom" import { FormProvider, useForm } from "react-hook-form" import { useIntl } from "react-intl" import { editProfile } from "@/actions/editProfile" import Header from "@/components/Profile/Header" import Button from "@/components/TempDesignSystem/Button" import Divider from "@/components/TempDesignSystem/Divider" import Title from "@/components/TempDesignSystem/Text/Title" import FormContent from "./FormContent" import { type EditProfileSchema, editProfileSchema } from "./schema" import styles from "./form.module.css" import type { EditFormProps, State, } from "@/types/components/myPages/myProfile/edit" const formId = "edit-profile" export default function Form({ user }: EditFormProps) { const { formatMessage } = useIntl() /** * like react, react-hook-form also exports a useFormState hook, * we want to clearly keep them separate by naming. */ const [state, formAction] = useReactFormState( editProfile, null ) const form = useForm({ defaultValues: { "address.city": user.address.city ?? "", "address.countryCode": user.address.countryCode ?? "", "address.streetAddress": user.address.streetAddress ?? "", "address.zipCode": user.address.zipCode ?? "", dateOfBirth: user.dateOfBirth, email: user.email, language: user.language, phoneNumber: user.phoneNumber, currentPassword: "", newPassword: "", retypeNewPassword: "", }, mode: "all", resolver: zodResolver(editProfileSchema), reValidateMode: "onChange", }) return (
{formatMessage({ id: "Edit" })} {user.name}
) }