'use client'; import useGlobalStore from '@/config/use-global'; import { zodResolver } from '@hookform/resolvers/zod'; import { AiroButton } from '@workspace/airo-ui/components/AiroButton'; import { Button } from '@workspace/airo-ui/components/button'; import { useLoginDialog } from '@/app/auth/LoginDialogContext'; import { Form, FormControl, FormField, FormItem, FormMessage, } from '@workspace/airo-ui/components/form'; import { Input } from '@workspace/airo-ui/components/input'; import { Icon } from '@workspace/airo-ui/custom-components/icon'; import { useRouter } from 'next/navigation'; import { Dispatch, SetStateAction, useEffect, useRef, useState } from 'react'; import { useForm } from 'react-hook-form'; import { z } from 'zod'; import SendCode from '../send-code'; import { TurnstileRef } from '../turnstile'; export default function RegisterForm({ loading, onSubmit, initialValues, setInitialValues, onSwitchForm, }: { loading?: boolean; onSubmit: (data: any) => void; initialValues: any; setInitialValues: Dispatch>; onSwitchForm: Dispatch>; }) { const { common } = useGlobalStore(); const router = useRouter(); const formSchema = z .object({ email: z.string().email('请输入有效的电子邮件地址。'), password: z.string().min(1, '请输入密码'), // 必填提示 repeat_password: z.string().min(1, '请重复输入密码'), // 必填 code: z.string().min(1, '请输入验证码'), // 必填, invite: z.string().nullish(), }) .superRefine(({ password, repeat_password }, ctx) => { if (password !== repeat_password) { ctx.addIssue({ code: z.ZodIssueCode.custom, message: '两次密码输入不一致', path: ['repeat_password'], }); } }); const [inviteDefault, setInviteDefault] = useState(''); const { openLoginDialog } = useLoginDialog(); useEffect(() => { const invite = localStorage.getItem('invite') || ''; setInviteDefault(invite); }, []); const form = useForm>({ resolver: zodResolver(formSchema), defaultValues: { ...initialValues, invite: inviteDefault, }, }); const turnstile = useRef(null); const handleSubmit = form.handleSubmit((data) => { try { onSubmit(data); } catch (error) { turnstile.current?.reset(); } }); return ( <>
线路优化
( )} /> ( )} /> ( )} /> { (
)} /> } ( )} />
已有账户? 
{loading && } 注册
); }