'use client'; import * as React from 'react'; import { CheckCircle2, Lock, XCircle } from 'lucide-react'; import * as Button from '@/components/ui/button'; import * as Divider from '@/components/ui/divider'; import * as Label from '@/components/ui/label'; import * as PasswordInput from '@/components/ui/password-input'; const defaultLevelColors = { 1: 'text-error-base', 2: 'text-warning-base', 3: 'text-success-base', }; function LevelBar({ levels = 3, level = 1, levelColors = defaultLevelColors, className, ...rest }: { level: number; levels?: number; levelColors?: { [key: number]: string }; } & React.HTMLAttributes) { return (
{Array.from({ length: levels }, (_, i) => i).map((currentLevel) => ( ))}
); } function LevelBarItem({ levels, level, ...rest }: { active?: boolean; level: number; levels: number; } & React.HTMLAttributes) { return (
); } export default function ChangePasswordInputs() { const [newPassword, setNewPassword] = React.useState(''); const [criteria, setCriteria] = React.useState({ length: false, uppercase: false, number: false, }); const handleNewPasswordChange = (e: React.ChangeEvent) => { const value = e.target.value; setNewPassword(value); setCriteria({ length: value.length >= 8, uppercase: /[A-Z]/.test(value), number: /[0-9]/.test(value), }); }; const countTrueCriteria = (criteria: { [key: string]: boolean }): number => { return Object.values(criteria).filter((value) => value).length; }; const trueCriteriaCount = countTrueCriteria(criteria); return (
Change Password
Update password for enhanced account security.
Current Password
New Password
Confirm New Password
Must contain at least;
{criteria.uppercase ? ( ) : ( )} At least 1 uppercase
{criteria.number ? ( ) : ( )} At least 1 number
{criteria.length ? ( ) : ( )} At least 8 characters
Discard Apply Changes
); }