/* eslint-disable import/extensions */ import { XMarkIcon } from '@heroicons/react/20/solid'; import { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { toast } from 'sonner'; import { PasswordStrengthCard } from '@/components/card/PasswordStrengthCard'; import { PasswordInput } from '@/components/input/PasswordInput'; import { ArrowPathIcon } from '@heroicons/react/24/outline'; import clsx from 'clsx'; type EncryptionModalProps = { isOpen: boolean; onCancel: () => void; handleSubmitEncrypt: (password: string) => void; auditName: string; isGeneratingPDF: boolean; }; export const EncryptionModal: React.FC = ({ auditName, isOpen, isGeneratingPDF, onCancel, handleSubmitEncrypt, }) => { const { t } = useTranslation(); const [password, setPassword] = useState(''); const [confirmPassword, setConfirmPassword] = useState(''); useEffect(() => { if (isOpen) { document.body.style.overflow = 'hidden'; } else { document.body.style.overflow = 'unset'; } }, [isOpen]); const generatePassword = () => { const charset = // eslint-disable-next-line no-secrets/no-secrets 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()'; const passwordLength = 32; let newPassword = ''; const randomValues = new Uint32Array(passwordLength); window.crypto.getRandomValues(randomValues); for (let i = 0; i < passwordLength; i++) { if (randomValues[i] % 7 === 0) { newPassword += '!@#$%^&*()'.charAt(randomValues[i] % 10); } else if (randomValues[i] % 3 === 0) { newPassword += '0123456789'.charAt(randomValues[i] % 10); } else { newPassword += charset.charAt(randomValues[i] % charset.length); } } return newPassword; }; const handlePasswordGen = () => { const generated = generatePassword(); setPassword(generated); setConfirmPassword(generated); void navigator.clipboard.writeText(generated); toast.info(t('msg.copiedToClipboard')); }; useEffect(() => { setPassword(''); setConfirmPassword(''); }, [onCancel]); return ( isOpen && (

{`${t('encryption')} (${auditName})`}


{t('err.passwordsDontMatch')}


{!isGeneratingPDF ? ( ) : ( )}
) ); };