'use client'; import { useState, Suspense } from 'react'; import { useRouter, useSearchParams } from 'next/navigation'; import Link from 'next/link'; import { useLanguage } from '@/context/LanguageContext'; import { useAuth } from '@/context/AuthContext'; import Card from '@/components/ui/Card'; import Button from '@/components/ui/Button'; import Input from '@/components/ui/Input'; import { authApi } from '@/lib/api'; import toast from 'react-hot-toast'; function ClaimAccountContent() { const router = useRouter(); const searchParams = useSearchParams(); const { locale: language } = useLanguage(); const { setAuthData } = useAuth(); const [loading, setLoading] = useState(false); const [formData, setFormData] = useState({ password: '', confirmPassword: '', }); const token = searchParams.get('token'); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!token) { toast.error(language === 'es' ? 'Token no válido' : 'Invalid token'); return; } if (formData.password !== formData.confirmPassword) { toast.error(language === 'es' ? 'Las contraseñas no coinciden' : 'Passwords do not match'); return; } if (formData.password.length < 10) { toast.error( language === 'es' ? 'La contraseña debe tener al menos 10 caracteres' : 'Password must be at least 10 characters' ); return; } setLoading(true); try { const result = await authApi.confirmClaimAccount(token, { password: formData.password }); setAuthData({ user: result.user, token: result.token }); toast.success(language === 'es' ? '¡Cuenta activada!' : 'Account activated!'); router.push('/dashboard'); } catch (error: any) { toast.error(error.message || (language === 'es' ? 'Error' : 'Failed')); } finally { setLoading(false); } }; if (!token) { return (

{language === 'es' ? 'Enlace Inválido' : 'Invalid Link'}

{language === 'es' ? 'Este enlace de activación no es válido o ha expirado.' : 'This activation link is invalid or has expired.'}

); } return (

{language === 'es' ? 'Activar tu Cuenta' : 'Activate Your Account'}

{language === 'es' ? 'Configura una contraseña para acceder a tu cuenta' : 'Set a password to access your account'}

{language === 'es' ? 'Tu cuenta fue creada durante una reservación. Establece una contraseña para acceder a tu historial de entradas y más.' : 'Your account was created during a booking. Set a password to access your ticket history and more.'}

setFormData({ ...formData, password: e.target.value })} required />

{language === 'es' ? 'Mínimo 10 caracteres' : 'Minimum 10 characters'}

setFormData({ ...formData, confirmPassword: e.target.value })} required />

{language === 'es' ? '¿Ya tienes acceso?' : 'Already have access?'}{' '} {language === 'es' ? 'Iniciar Sesión' : 'Log In'}

); } function LoadingFallback() { return (
); } export default function ClaimAccountPage() { return ( }> ); }