import { useForm } from "react-hook-form"; import { useNavigate } from "react-router-dom"; import { z } from "zod"; import { useTranslation } from 'react-i18next' import { Button } from "@/components/ui/button"; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { getErrMessage } from "@/lib/error"; import { getPb } from "@/repository/api"; import { zodResolver } from "@hookform/resolvers/zod"; const formSchema = z.object({ username: z.string().email({ message: "login.username.no.empty.message", }), password: z.string().min(10, { message: "login.password.length.message", }), }); const Login = () => { const { t } = useTranslation() const form = useForm>({ resolver: zodResolver(formSchema), defaultValues: { username: "", password: "", }, }); // 2. Define a submit handler. const onSubmit = async (values: z.infer) => { try { await getPb().admins.authWithPassword(values.username, values.password); navigage("/"); } catch (e) { const message = getErrMessage(e); form.setError("username", { message }); form.setError("password", { message }); } }; const navigage = useNavigate(); return (
( {t('username')} )} /> ( {t('password')} )} />
); }; export default Login;