'use client'; import { useState, useTransition } from 'react'; import { motion } from 'framer-motion'; import { Lock, Eye, EyeOff, Loader2, CheckCircle, AlertCircle } from 'lucide-react'; import { changePassword } from '@/services/profile-actions'; import { useI18n } from '@/i18n/I18nContext'; export default function PasswordChangeForm() { const { t } = useI18n(); const [newPassword, setNewPassword] = useState(''); const [confirmPassword, setConfirmPassword] = useState(''); const [showPassword, setShowPassword] = useState(false); const [isPending, startTransition] = useTransition(); const [status, setStatus] = useState<'idle' | 'success' | 'error'>('idle'); const [error, setError] = useState(null); const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); setStatus('idle'); setError(null); if (newPassword !== confirmPassword) { setStatus('error'); setError(t('settings.password.mismatch')); return; } if (newPassword.length < 6) { setStatus('error'); setError(t('settings.password.tooShort')); return; } const formData = new FormData(); formData.set('new_password', newPassword); formData.set('confirm_password', confirmPassword); startTransition(async () => { const result = await changePassword(formData); if (result.success) { setStatus('success'); setNewPassword(''); setConfirmPassword(''); setTimeout(() => setStatus('idle'), 3000); } else { setStatus('error'); setError(result.error || t('common.error')); } }); }; return (

{t('settings.password.title')}

{/* New Password */}
setNewPassword(e.target.value)} placeholder="••••••••" className="w-full px-4 py-3 pr-12 bg-zinc-800 border border-zinc-700 rounded-xl text-white placeholder-zinc-500 focus:outline-none focus:ring-2 focus:ring-orange-500 focus:border-transparent" />
{/* Confirm Password */}
setConfirmPassword(e.target.value)} placeholder="••••••••" className="w-full px-4 py-3 bg-zinc-800 border border-zinc-700 rounded-xl text-white placeholder-zinc-500 focus:outline-none focus:ring-2 focus:ring-orange-500 focus:border-transparent" />
{/* Password match indicator */} {confirmPassword && (
{newPassword === confirmPassword ? ( <> {t('settings.password.match')} ) : ( <> {t('settings.password.mismatch')} )}
)} {/* Status messages */} {status === 'success' && (
{t('settings.password.success')}
)} {status === 'error' && (
{error}
)} {/* Submit button */}
); }