import { useIntl } from "react-intl" import { passwordValidators } from "@scandic-hotels/common/utils/zod/passwordValidator" import type { PasswordValidatorKey } from "@scandic-hotels/common/utils/zod/newPassword" import { MaterialIcon } from "../Icons/MaterialIcon" import { Typography } from "../Typography" import styles from "./passwordInput.module.css" export function NewPasswordValidation({ value, errors, id, }: { value: string errors: string[] id: string }) { const intl = useIntl() if (!value) return null function getErrorMessage(key: PasswordValidatorKey) { switch (key) { case "length": return intl.formatMessage( { id: "passwordInput.lengthRequirement", defaultMessage: "{min} to {max} characters", }, { min: 10, max: 40, } ) case "hasUppercase": return intl.formatMessage( { id: "passwordInput.uppercaseRequirement", defaultMessage: "{count} uppercase letter", }, { count: 1 } ) case "hasLowercase": return intl.formatMessage( { id: "passwordInput.lowercaseRequirement", defaultMessage: "{count} lowercase letter", }, { count: 1 } ) case "hasNumber": return intl.formatMessage( { id: "passwordInput.numberRequirement", defaultMessage: "{count} number", }, { count: 1 } ) case "hasSpecialChar": return intl.formatMessage( { id: "passwordInput.specialCharacterRequirement", defaultMessage: "{count} special character", }, { count: 1 } ) case "allowedCharacters": return intl.formatMessage({ id: "passwordInput.allowedCharactersRequirement", defaultMessage: "Only allowed characters", }) } } return (