'use client'; import { Suspense, useState } from 'react'; import Link from 'next/link'; import Image from 'next/image'; import { useRouter, useSearchParams } from 'next/navigation'; import { Button, Input, Label, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '@horux/shared-ui'; import { confirmPasswordReset } from '@/lib/api/auth'; import { KeyRound, CheckCircle2, AlertTriangle } from 'lucide-react'; function ResetPasswordContent() { const router = useRouter(); const searchParams = useSearchParams(); const token = searchParams.get('token') || ''; const [isLoading, setIsLoading] = useState(false); const [success, setSuccess] = useState(false); const [error, setError] = useState(''); const [newPassword, setNewPassword] = useState(''); const [confirmPassword, setConfirmPassword] = useState(''); if (!token) { return (
Enlace inválido El enlace no incluye un token de recuperación válido. Solicita uno nuevo desde la pantalla de login.
); } async function handleSubmit(e: React.FormEvent) { e.preventDefault(); setError(''); if (newPassword.length < 8) { setError('La contraseña debe tener al menos 8 caracteres'); return; } if (newPassword !== confirmPassword) { setError('Las contraseñas no coinciden'); return; } setIsLoading(true); try { await confirmPasswordReset(token, newPassword); setSuccess(true); setTimeout(() => router.push('/login'), 3000); } catch (err: any) { setError(err.response?.data?.message || 'Error al actualizar contraseña'); } finally { setIsLoading(false); } } if (success) { return (
Contraseña actualizada Tu contraseña fue cambiada exitosamente. Redireccionando al login...
); } return (
Horux360
Nueva contraseña Ingresa tu nueva contraseña. Mínimo 8 caracteres.
{error && (
{error}
)}
setNewPassword(e.target.value)} placeholder="••••••••" required minLength={8} autoFocus />
setConfirmPassword(e.target.value)} placeholder="••••••••" required minLength={8} />

Al actualizar, se cerrarán todas tus sesiones activas por seguridad. Tendrás que volver a iniciar sesión.

Volver al login
); } export default function ResetPasswordPage() { return (
Cargando...}>
); }