import { TFunction } from "i18next";

export const calculatePasswordStrength = (password: string): number => {
  if (!password) return 0;

  let strength = 0;
  if (password.length >= 8) strength += 1;
  if (/\d/.test(password)) strength += 1;
  if (/[!@#$%^&*(),.?":{}|<>]/.test(password)) strength += 1;
  if (/[A-Z]/.test(password)) strength += 1;

  return strength;
};

export const getPasswordRequirements = (password: string) => ({
  length: password?.length >= 12,
});

export const getPasswordStrengthLabel = (
  password: string,
  t: TFunction,
): string => {
  const strength = calculatePasswordStrength(password);

  if (!password) return "";
  if (strength < 1)
    return t("users.dialog.form.password.strength.weak", {
      ns: "views/settings",
    });
  return t("users.dialog.form.password.strength.veryStrong", {
    ns: "views/settings",
  });
};

export const getPasswordStrengthColor = (password: string): string => {
  const strength = calculatePasswordStrength(password);

  if (!password) return "bg-gray-200";
  if (strength === 0) return "bg-red-500";
  return "bg-green-500";
};