const { Card, Button, Field, Input, Divider } = window.PilatesLifeStudioDesignSystem_f49721; function LoginPage({ onNavigate, onLoggedIn }) { const [identificador, setIdentificador] = React.useState(''); const [password, setPassword] = React.useState(''); const [error, setError] = React.useState(''); const [cargando, setCargando] = React.useState(false); const [mostrarRecuperar, setMostrarRecuperar] = React.useState(false); const [pasoRecuperar, setPasoRecuperar] = React.useState('identificador'); const [identificadorRecuperar, setIdentificadorRecuperar] = React.useState(''); const [codigoRecuperar, setCodigoRecuperar] = React.useState(''); const [passwordRecuperar, setPasswordRecuperar] = React.useState(''); const [passwordRecuperarConfirmacion, setPasswordRecuperarConfirmacion] = React.useState(''); const [mensajeRecuperar, setMensajeRecuperar] = React.useState(''); const [errorRecuperar, setErrorRecuperar] = React.useState(''); const [cargandoRecuperar, setCargandoRecuperar] = React.useState(false); const enviar = async (e) => { e.preventDefault(); setError(''); if (!identificador.trim() || !password) { setError('Ingresa tu teléfono o correo y tu contraseña.'); return; } setCargando(true); try { const cliente = await iniciarSesion(normalizarIdentificador(identificador), password); onLoggedIn(cliente); } catch (err) { setError(err.message); } finally { setCargando(false); } }; const solicitarCodigo = async (e) => { e.preventDefault(); setMensajeRecuperar(''); setErrorRecuperar(''); if (!identificadorRecuperar.trim()) return; setCargandoRecuperar(true); try { const datos = await solicitarRecuperarPassword(normalizarIdentificador(identificadorRecuperar)); setMensajeRecuperar(datos.message); setPasoRecuperar('codigo'); } catch (err) { setErrorRecuperar(err.message); } finally { setCargandoRecuperar(false); } }; const confirmarCodigo = async (e) => { e.preventDefault(); setErrorRecuperar(''); if (!/^\d{6}$/.test(codigoRecuperar.trim())) { setErrorRecuperar('El código tiene 6 dígitos.'); return; } if (passwordRecuperar.length < 8) { setErrorRecuperar('La contraseña debe tener al menos 8 caracteres.'); return; } if (passwordRecuperar !== passwordRecuperarConfirmacion) { setErrorRecuperar('Las contraseñas no coinciden.'); return; } setCargandoRecuperar(true); try { const cliente = await restablecerPassword({ identificador: normalizarIdentificador(identificadorRecuperar), codigo: codigoRecuperar.trim(), password: passwordRecuperar, passwordConfirmacion: passwordRecuperarConfirmacion, }); onLoggedIn(cliente); } catch (err) { setErrorRecuperar(err.message); } finally { setCargandoRecuperar(false); } }; const cerrarRecuperar = () => { setMostrarRecuperar(false); setPasoRecuperar('identificador'); setIdentificadorRecuperar(''); setCodigoRecuperar(''); setPasswordRecuperar(''); setPasswordRecuperarConfirmacion(''); setMensajeRecuperar(''); setErrorRecuperar(''); }; return (
Cuenta

Inicia sesión

setIdentificador(e.target.value)} /> setPassword(e.target.value)} /> {error &&

{error}

}
{!mostrarRecuperar ? ( ) : pasoRecuperar === 'identificador' ? (
setIdentificadorRecuperar(e.target.value)} /> {errorRecuperar &&

{errorRecuperar}

}

Si te registraste solo con correo (sin teléfono), contáctanos directamente para restablecerla.

) : (
{mensajeRecuperar &&

{mensajeRecuperar}

} setCodigoRecuperar(e.target.value)} /> setPasswordRecuperar(e.target.value)} /> setPasswordRecuperarConfirmacion(e.target.value)} /> {errorRecuperar &&

{errorRecuperar}

}
)}

¿No tienes cuenta? { e.preventDefault(); onNavigate('registro'); }}>Regístrate aquí.

); } Object.assign(window, { LoginPage });