import React, { useState } from 'react'; import { TextField, Box, IconButton, Switch, FormGroup, Typography, InputAdornment, Grid, } from '@mui/material'; import { useTranslation } from 'react-i18next'; import { TickCircle, Eye, EyeSlash, CloseCircle } from 'iconsax-react'; import { PasswordValidationItem } from './PasswordValidation'; import { Icon } from '@harmony/kit'; import { type PasswordSectionProps } from '../../types/settingForm'; export function PasswordSection({ showPasswordSection, setShowPasswordSection, password, setPassword, confirmPassword, setConfirmPassword, matchPassword, hasNumber, hasMinLength, hasUpperAndLower, hasSpecialChar, validPassword, errors, touched, handleBlur, }: PasswordSectionProps) { const { t } = useTranslation('completionForm'); const [showPasswordText, setShowPasswordText] = useState(false); const [showPasswordRepetitionText, setShowPasswordRepetitionText] = useState(false); const [showValidations, setShowValidation] = useState(false); const handleTogglePasswordSection = ( e: React.ChangeEvent, ) => { setShowPasswordSection(e.target.checked); }; const handleTogglePasswordEye = () => setShowPasswordText((prev) => !prev); const handleTogglePasswordRepetitionEye = () => setShowPasswordRepetitionText((prev) => !prev); const handleBlurPassword = () => { handleBlur('password'); setShowValidation(false); }; return ( <> {t('completion.determinePassword')} {showPasswordSection && ( setPassword(e.target.value)} variant="outlined" type={showPasswordText ? 'text' : 'password'} autoFocus onBlur={handleBlurPassword} onFocus={() => setShowValidation(true)} error={touched.password && !!errors.password} helperText={touched.password && errors.password} sx={{ flex: '1 1 260px', '& .MuiInputBase-input': { pr: 8, // Increased padding to accommodate both icons }, }} slotProps={{ input: { endAdornment: ( {showPasswordText ? ( ) : ( )} ), startAdornment: validPassword && ( ), }, }} /> setConfirmPassword(e.target.value)} onBlur={() => handleBlur('confirmPassword')} error={touched.confirmPassword && !!errors.confirmPassword} helperText={touched.confirmPassword && errors.confirmPassword} type={showPasswordRepetitionText ? 'text' : 'password'} sx={{ flex: '1 1', }} slotProps={{ input: { endAdornment: ( {showPasswordRepetitionText ? ( ) : ( )} ), startAdornment: confirmPassword.length > 0 && ( ), }, }} /> {showValidations && ( <> )} )} ); }