export const generatePassword = (length = 10) => { const upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; const lower = "abcdefghijklmnopqrstuvwxyz"; const numbers = "0123456789"; const special = "!@#$%^&*()_+[]{}<>?/|"; // Ensure at least one from each required set const required = [ upper[Math.floor(Math.random() * upper.length)], lower[Math.floor(Math.random() * lower.length)], numbers[Math.floor(Math.random() * numbers.length)], special[Math.floor(Math.random() * special.length)], ]; const allChars = upper + lower + numbers + special; const remainingLength = length - required.length; const passwordArr = [...required]; for (let i = 0; i < remainingLength; i++) { passwordArr.push(allChars[Math.floor(Math.random() * allChars.length)]); } // Fisher-Yates shuffle for (let i = passwordArr.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [passwordArr[i], passwordArr[j]] = [passwordArr[j], passwordArr[i]]; } return passwordArr.join(""); };