import { Container, FormTextField } from "@/components"; import { UeckoLogo } from "@/components/UeckoLogo/UeckoLogo"; import { useLogin } from "@/lib/hooks"; import { Alert, AlertDescription, AlertTitle, Button, Card, CardContent, CardDescription, CardHeader, CardTitle, Form, } from "@/ui"; import { joiResolver } from "@hookform/resolvers/joi"; import { ILogin_DTO } from "@shared/contexts"; import Joi from "joi"; import { AlertCircleIcon } from "lucide-react"; import { useState } from "react"; import { SubmitHandler, useForm } from "react-hook-form"; import { Trans, useTranslation } from "react-i18next"; import { Link } from "react-router-dom"; import SpanishJoiMessages from "../spanish-joi-messages.json"; type LoginDataForm = ILogin_DTO; export const LoginPage = () => { const { t } = useTranslation(); const [loading, setLoading] = useState(false); const { mutate: login } = useLogin({ onSuccess: (data) => { const { success, error } = data; if (!success && error) { form.setError("root", error); } }, }); const form = useForm({ mode: "onBlur", defaultValues: { email: "", password: "", }, resolver: joiResolver( Joi.object({ email: Joi.string() .email({ tlds: { allow: false } }) .required(), password: Joi.string().min(4).alphanum().required(), }), { messages: SpanishJoiMessages, } ), }); const onSubmit: SubmitHandler = async (data) => { try { setLoading(true); login({ email: data.email, password: data.password }); } finally { setLoading(false); } }; return (

{form.formState.errors.root?.message && ( {form.formState.errors.root?.message} )}

Image
); };