import { useState } from 'react'; import { useNavigate, Link } from 'react-router-dom'; 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 { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from '@/components/ui/form'; import { notify } from '@/lib/notify'; import { api } from '../api/client'; import { useAuth } from '../hooks/useAuth'; const schema = z.object({ username: z.string().min(1, '请输入用户名'), password: z.string().min(1, '请输入密码'), }); type FormValues = z.infer; export default function LoginPage() { const nav = useNavigate(); const { refresh } = useAuth(); const [loading, setLoading] = useState(false); const form = useForm({ resolver: zodResolver(schema), defaultValues: { username: '', password: '' }, }); const onSubmit = async (values: FormValues) => { setLoading(true); try { await api.login(values.username, values.password); await refresh(); notify.success('登录成功'); nav('/', { replace: true }); } catch (e: unknown) { notify.error(e instanceof Error ? e.message : '登录失败'); } finally { setLoading(false); } }; return (

登录姜十三论坛

拾三一隅,自在交流

( 用户名 )} /> ( 密码 )} />

没有账号?注册

); }