import React, { useState, useEffect } from 'react'; import { useNavigate, useSearchParams, Link } from 'react-router-dom'; import { useAuth } from '../context/AuthContext'; import { Button } from '../components/ui/button'; import { Input } from '../components/ui/input'; import { Label } from '../components/ui/label'; import { Card } from '../components/ui/card'; import { toast } from 'sonner'; import Navbar from '../components/Navbar'; import { ArrowRight, Lock, AlertCircle } from 'lucide-react'; const ResetPassword = () => { const navigate = useNavigate(); const [searchParams] = useSearchParams(); const { resetPassword } = useAuth(); const [loading, setLoading] = useState(false); const [token, setToken] = useState(''); const [formData, setFormData] = useState({ newPassword: '', confirmPassword: '' }); useEffect(() => { const tokenParam = searchParams.get('token'); if (!tokenParam) { toast.error('Invalid reset link'); navigate('/login'); } else { setToken(tokenParam); } }, [searchParams, navigate]); const handleInputChange = (e) => { const { name, value } = e.target; setFormData(prev => ({ ...prev, [name]: value })); }; const handleSubmit = async (e) => { e.preventDefault(); if (formData.newPassword.length < 6) { toast.error('Password must be at least 6 characters'); return; } if (formData.newPassword !== formData.confirmPassword) { toast.error('Passwords do not match'); return; } setLoading(true); try { await resetPassword(token, formData.newPassword); toast.success('Password reset successful! Please login with your new password.'); navigate('/login'); } catch (error) { const errorMessage = error.response?.data?.detail || 'Failed to reset password. The link may have expired.'; toast.error(errorMessage); } finally { setLoading(false); } }; return (

Reset Password

Enter your new password below.

Password Requirements:

  • At least 6 characters long
  • Both passwords must match

Remember your password?{' '} Login here

); }; export default ResetPassword;