"use client"; import { AlertCircle, CheckCircle } from "lucide-react"; import { PASSWORD_REQUIREMENTS, passwordRequirementCheckers, } from "@/types/authFormSchema"; interface PasswordRequirementsMessageProps { password: string; className?: string; } const REQUIREMENTS = [ { key: "minLength", checker: passwordRequirementCheckers.minLength, label: `At least ${PASSWORD_REQUIREMENTS.minLength} characters`, }, { key: "specialChars", checker: passwordRequirementCheckers.specialChars, label: "Special characters", }, { key: "uppercase", checker: passwordRequirementCheckers.uppercase, label: "Uppercase letters", }, { key: "lowercase", checker: passwordRequirementCheckers.lowercase, label: "Lowercase letters", }, { key: "numbers", checker: passwordRequirementCheckers.numbers, label: "Numbers", }, ]; export const PasswordRequirementsMessage = ({ password, className = "", }: PasswordRequirementsMessageProps) => { const hasPasswordInput = password.length > 0; if (!hasPasswordInput) { return null; } const results = REQUIREMENTS.map((req) => ({ ...req, isMet: req.checker(password), })); const metCount = results.filter((r) => r.isMet).length; const allRequirementsMet = metCount === REQUIREMENTS.length; return (
{allRequirementsMet ? (
) : (
    {results.map((req) => (
  • {req.isMet ? "Requirement met" : "Requirement not met"}
  • ))}
)}
); };