"use client"; import { useState } from "react"; import { useRouter } from "next/navigation"; import Link from "next/link"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { z } from "zod"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Alert, AlertDescription } from "@/components/ui/alert"; import { useAuthStore } from "@/store/auth"; import { BookOpen, Eye, EyeOff, Loader2 } from "lucide-react"; import { FlickeringGrid } from "@/components/magicui/flickering-grid"; import { ThemeToggle } from "@/components/ui/theme-toggle"; const loginSchema = z.object({ username: z.string().min(1, "用户名不能为空"), password: z.string().min(1, "密码不能为空"), }); type LoginForm = z.infer; export default function LoginPage() { const [showPassword, setShowPassword] = useState(false); const [isLoading, setIsLoading] = useState(false); const router = useRouter(); const { login, error, clearError } = useAuthStore(); const { register, handleSubmit, formState: { errors }, } = useForm({ resolver: zodResolver(loginSchema), }); const onSubmit = async (data: LoginForm) => { setIsLoading(true); clearError(); const success = await login(data); if (success) { // 登录成功后回到主页,让用户看到无缝过渡效果 router.push("/"); } setIsLoading(false); }; return (
{/* 背景动画 */} {/* 主题切换按钮 */}
{/* Logo和标题 */}
国土空间规划课程智能体

登录您的账户

{/* 登录表单 */} 登录 输入您的用户名和密码以访问系统
{/* 错误提示 */} {error && ( {error} )} {/* 用户名输入 */}
{errors.username && (

{errors.username.message}

)}
{/* 密码输入 */}
{errors.password && (

{errors.password.message}

)}
{/* 登录按钮 */}
{/* 注册链接 */}

还没有账户?{" "} 立即注册

{/* 快速登录提示 */}

首次使用?请先注册账户

); }