'use client'; import { useState, useEffect } from 'react'; import { useRouter } from 'next/navigation'; import { requestPasswordReset } from '@/api/auth'; import { getErrorMessage } from '@/lib/error-utils'; const loadMaterialComponents = async () => { await Promise.all([ import('@material/web/textfield/filled-text-field.js'), import('@material/web/button/filled-button.js'), import('@material/web/button/text-button.js'), ]); }; export default function ForgotPasswordPage() { const router = useRouter(); const [email, setEmail] = useState(''); const [loading, setLoading] = useState(false); const [error, setError] = useState(''); const [success, setSuccess] = useState(false); const [componentsLoaded, setComponentsLoaded] = useState(false); useEffect(() => { loadMaterialComponents() .then(() => setComponentsLoaded(true)) .catch((err) => { console.error('Error loading components:', err); setComponentsLoaded(true); }); }, []); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setLoading(true); setError(''); setSuccess(false); try { await requestPasswordReset({ email }); setSuccess(true); } catch (err: any) { setError(getErrorMessage(err, 'Ошибка при отправке запроса. Проверьте email.')); } finally { setLoading(false); } }; if (!componentsLoaded) { return (
); } return (

Восстановление пароля

{success ? ( <>
Инструкции по восстановлению пароля отправлены на ваш email.
router.push('/login')} style={{ width: '100%', height: '48px' }} > Вернуться к входу ) : ( <>

Введите ваш email для восстановления пароля

setEmail(e.target.value || '')} required style={{ width: '100%' }} />
{error && (
{error}
)} {loading ? 'Отправка...' : 'Отправить'}
router.push('/login')} style={{ fontSize: '14px' }}> Вернуться к входу
)}
); }