'use client'; /** * 登录/注册弹窗组件 */ import { useState } from 'react'; import { X, User, Lock, Eye, EyeOff } from 'lucide-react'; import { useAuthStore } from '@/store/authStore'; interface AuthModalProps { onClose: () => void; initialMode?: 'login' | 'register'; } export default function AuthModal({ onClose, initialMode = 'login' }: AuthModalProps) { const [mode, setMode] = useState<'login' | 'register'>(initialMode); const [username, setUsername] = useState(''); const [password, setPassword] = useState(''); const [confirmPassword, setConfirmPassword] = useState(''); const [showPassword, setShowPassword] = useState(false); const [error, setError] = useState(''); const { login, register, isLoading } = useAuthStore(); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setError(''); // 前端验证 if (username.trim().length < 3) { setError('用户名至少3个字符'); return; } if (password.length < 6) { setError('密码至少6位'); return; } if (mode === 'register' && password !== confirmPassword) { setError('两次密码输入不一致'); return; } try { if (mode === 'login') { await login(username.trim(), password); } else { await register(username.trim(), password); } onClose(); } catch (err: any) { setError(err.message || (mode === 'login' ? '登录失败' : '注册失败')); } }; const switchMode = () => { setMode(mode === 'login' ? 'register' : 'login'); setError(''); setConfirmPassword(''); }; return (