I really love the fact that you build this project on vanilla JS. It is the best way to learn javascript. I tried it once on this personal project, it was a very fulfilling experience.
And here are some suggestions for improvement. First, the Generate button should have another outlook when it is disabled. Second, I see that sometimes the generated password does not satisfy all of the requirements. I checked on lowercase, uppercase, and number but the password only contains uppercase and number. Third, to satisfy all rules, password's length should be equal or greater than the number of rules.
I hope you find it helpful.
Marked as helpful