"use client"; /** * 邮箱注册表单 * * 原始 Dart: lib/ui/auth/widgets/email_register_form.dart */ import { useState } from "react"; import { useAuthDispatch } from "@/stores/auth/auth-context"; import { validateConfirmPassword, validateEmail, validatePassword, validateUsername, } from "@/app/auth/components/auth-validators"; import { AuthTextField } from "./auth-text-field"; import { AuthPrimaryButton } from "./auth-primary-button"; import { AuthErrorMessage } from "./auth-error-message"; import styles from "./email-form.module.css"; export interface EmailRegisterFormProps { onSwitchToLogin: () => void; globalError?: string | null; isLoading?: boolean; } export function EmailRegisterForm({ onSwitchToLogin, globalError, isLoading, }: EmailRegisterFormProps) { const dispatch = useAuthDispatch(); const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [username, setUsername] = useState(""); const [confirmPassword, setConfirmPassword] = useState(""); const [errors, setErrors] = useState< Partial> >({}); const submit = () => { const emailErr = validateEmail(email); const passwordErr = validatePassword(password); const usernameErr = validateUsername(username); const confirmErr = validateConfirmPassword(password, confirmPassword); if (emailErr || passwordErr || usernameErr || confirmErr) { setErrors({ email: emailErr ?? undefined, password: passwordErr ?? undefined, username: usernameErr ?? undefined, confirmPassword: confirmErr ?? undefined, }); return; } setErrors({}); dispatch({ type: "AuthEmailRegisterSubmitted", email, password, username, confirmPassword, }); }; return (
{ e.preventDefault(); submit(); }} > Create Account ); }