"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 (
App Trámites Ingresá tus credenciales para acceder al sistema
{error && ( {error} )}
{ setEmail(e.target.value) setFieldErrors((prev) => ({ ...prev, email: undefined })) }} disabled={isLoading} className={`h-11 ${fieldErrors.email ? "border-destructive focus-visible:ring-destructive" : ""}`} autoComplete="email" /> {fieldErrors.email && (

{fieldErrors.email}

)}
{ setPassword(e.target.value) setFieldErrors((prev) => ({ ...prev, password: undefined })) }} disabled={isLoading} className={`h-11 ${fieldErrors.password ? "border-destructive focus-visible:ring-destructive" : ""}`} autoComplete="current-password" /> {fieldErrors.password && (

{fieldErrors.password}

)}

Una aplicación creada por Tera Coop

) }