import React, { useState } from 'react'; import { Link, useSearchParams } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; import { useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import { z } from 'zod'; import { usePasswordResetConfirm } from '@/api/hooks'; import { Button } from '@/components/ui/Button'; import { Input } from '@/components/ui/Input'; const resetConfirmSchema = z.object({ password: z.string().min(8), confirmPassword: z.string().min(8), }).refine((data) => data.password === data.confirmPassword, { message: 'Passwords do not match', path: ['confirmPassword'], }); type ResetConfirmFormData = z.infer; export function PasswordResetConfirmPage() { const { t } = useTranslation(); const [searchParams] = useSearchParams(); const token = searchParams.get('token') || ''; const resetMutation = usePasswordResetConfirm(); const [result, setResult] = useState<'success' | 'error' | null>(null); const { register, handleSubmit, formState: { errors }, } = useForm({ resolver: zodResolver(resetConfirmSchema), defaultValues: { password: '', confirmPassword: '' }, }); const onSubmit = async (data: ResetConfirmFormData) => { try { await resetMutation.mutateAsync({ token, password: data.password }); setResult('success'); } catch { setResult('error'); } }; if (result === 'success') { return (

{t('auth.resetConfirmSuccess')}

{t('auth.backToLogin')}
); } return (

leocrm

{t('auth.resetConfirmTitle')}

{t('auth.resetConfirmDesc')}

{result === 'error' && (
{t('auth.resetConfirmFailed')}
)}
{t('auth.backToLogin')}
); }