"use client" import { ShieldCheck, ShieldAlert, ShieldQuestion } from "lucide-react" import { motion } from "motion/react" import { checkPasswordStrength, type StrengthLevel, } from "@/lib/auth/password-strength" interface PasswordStrengthProps { password: string } const levelColors: Record = { weak: "#ef4444", fair: "#f59e0b", good: "#eab308", strong: "#22c55e", excellent: "#10b981", } const levelLabels: Record = { weak: "Weak", fair: "Fair", good: "Good", strong: "Strong", excellent: "Excellent", } const levelBars: Record = { weak: 1, fair: 2, good: 3, strong: 4, excellent: 5, } export default function PasswordStrengthMeter({ password, }: PasswordStrengthProps) { if (!password) return null const { level, feedback } = checkPasswordStrength(password) const color = levelColors[level] const bars = levelBars[level] return (
{/* Bar indicator */}
{Array.from({ length: 5 }).map((_, i) => ( ))}
{/* Label and feedback */}
{level === "excellent" || level === "strong" ? ( ) : level === "weak" ? ( ) : ( )}
{levelLabels[level]} {feedback.length > 0 && feedback[0] !== "Great password!" && ( — {feedback[0]} )}
) }