Nice solution. Love that you used transition effect when switching between Light and Dark modes. And vanilla js solutions are always nice to have.
Being a vanilla js solution means reloading the page when user clicks any plpCard or borderCountries (can be resolved by manipulating history stack of browser). Still you saved userPreference so that same color is preserved across page loads is really nice to have.
Few observations:
Flag image sizes are not in a single row. Adding align-self : baseline and cropping image height will solve the issue.
Text search and filter both don't work together. For ex, searching 'das' gives empty results, but then using different filter loads that region list. Can be fixed by either fixing logic (to take both searchTerm and filterTerm when showing list) or clearing search bar when clicking a filter (hacky but quick fix).
Nice solution! Checked code and learned using async function for awaiting delay (instead of using setTimeout). Which of these two methods would you prefer over other (i.e. between settimeout and async await delay method)?
Also clean and commented code. Well done!
What are you most proud of, and what would you do differently next time?
Even though I used a lot of Divs in order to maintain a responsive layout I managed to design the layout easily using CSS Flexbox. And also the most important part which was the form validation took quite some time to be figured out. I successfully created a function which did all the validation, but the code was barely readable, so I divided the validation function into smaller parts which made the code much better and it even made the functionality better.
What challenges did you encounter, and how did you overcome them?
This whole project was quite a challenge starting from the design up to the validation, but I learned quite a lot, and this really forced me to think a lot about different parts and come out with an algorithm which works perfectly. Definitely worth the struggle.
What specific areas of your project would you like help with?
Some simpler functions or algorithms which would make the validation much easier would be appreciated.