"use client" import { useState, type FormEvent } from "react" import { useRouter } from "next/navigation" 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 { authService } from "@/lib/api/auth.service" import { Loader2, AlertCircle, FileText } from "lucide-react" export default function LoginPage() { const router = useRouter() const [email, setEmail] = useState("") const [password, setPassword] = useState("") const [isLoading, setIsLoading] = useState(false) const [error, setError] = useState("") const [fieldErrors, setFieldErrors] = useState<{ email?: string; password?: string }>({}) const validateEmail = (email: string): boolean => { const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/ return emailRegex.test(email) } const validateForm = (): boolean => { const errors: { email?: string; password?: string } = {} if (!email.trim()) { errors.email = "El email es requerido" } else if (!validateEmail(email)) { errors.email = "El formato del email no es válido" } if (!password.trim()) { errors.password = "La contraseña es requerida" } setFieldErrors(errors) return Object.keys(errors).length === 0 } const handleSubmit = async (e: FormEvent) => { e.preventDefault() setError("") setFieldErrors({}) if (!validateForm()) { return } setIsLoading(true) try { await authService.login(email, password) router.push("/") } catch (err: any) { if (err.message) { setError(err.message) } else if (err instanceof Error) { setError(err.message) } else { setError("Error al iniciar sesión. Por favor, intenta nuevamente.") } } finally { setIsLoading(false) } } return (
Una aplicación creada por Tera Coop