/** * Reset Password Template * * Pure presentation component that accepts ViewData only. * No business logic, no state management. */ 'use client'; import Link from 'next/link'; import { motion } from 'framer-motion'; import { Lock, Eye, EyeOff, AlertCircle, Flag, Shield, CheckCircle2, ArrowLeft, } from 'lucide-react'; import Card from '@/components/ui/Card'; import Button from '@/components/ui/Button'; import Input from '@/components/ui/Input'; import Heading from '@/components/ui/Heading'; import { ResetPasswordViewData } from '@/lib/builders/view-data/types/ResetPasswordViewData'; interface ResetPasswordTemplateProps extends ResetPasswordViewData { formActions: { setFormData: React.Dispatch>; handleSubmit: (e: React.FormEvent) => Promise; setShowSuccess: (show: boolean) => void; setShowPassword: (show: boolean) => void; setShowConfirmPassword: (show: boolean) => void; }; uiState: { showPassword: boolean; showConfirmPassword: boolean; }; mutationState: { isPending: boolean; error: string | null; }; } export function ResetPasswordTemplate(props: ResetPasswordTemplateProps) { const { formActions, uiState, mutationState, ...viewData } = props; return (
{/* Background Pattern */}
{/* Header */}
Reset Password

Create a new secure password for your account

{/* Background accent */}
{!viewData.showSuccess ? (
{/* New Password */}
formActions.setFormData(prev => ({ ...prev, newPassword: e.target.value }))} error={!!viewData.formState.fields.newPassword.error} errorMessage={viewData.formState.fields.newPassword.error} placeholder="••••••••" disabled={mutationState.isPending} className="pl-10 pr-10" autoComplete="new-password" />
{/* Confirm Password */}
formActions.setFormData(prev => ({ ...prev, confirmPassword: e.target.value }))} error={!!viewData.formState.fields.confirmPassword.error} errorMessage={viewData.formState.fields.confirmPassword.error} placeholder="••••••••" disabled={mutationState.isPending} className="pl-10 pr-10" autoComplete="new-password" />
{/* Error Message */} {mutationState.error && (

{mutationState.error}

)} {/* Submit Button */} {/* Back to Login */}
Back to Login
) : (

{viewData.successMessage}

Your password has been successfully reset

)} {/* Trust Indicators */}
Secure password reset
Encrypted transmission
{/* Footer */}

Need help?{' '} Contact support

); }