I finally completed another challenge! π I know it's been a while, but I'm happy to submit another solution after taking a little break. π
This was a short, simple challenge that I created with Svelte. Svelte is such a joy to use and it worked out really well with GSAP (which I used to add the animations to the site). I also used ScrollTrigger and smooth-scrollbar to enhance the animation and scrolling experience just a bit! π
And for a tiny surpriseβscroll past the hero section and back again to toggle the avatars of some of your favorite Frontend Mentors! π
Of course, feedback is welcome and appreciated! π Do let me know of any issues you find (since I'm afraid I'm bound to have missed something somewhere)! π
Oh, yes, and click on the giraffe for the attribution. π
Wowww I'm blown away by your creativity π€― Like who would think to include avatars of FM members as an easter egg? It works so well and is so clever though! This really makes me want to play around with ScrollTrigger now! Thanks so much for sharing your beautiful solutions with the community π Absolutely amazing job, keep it up!!
In this initial release, I deviated from the design in a couple of ways:
I left out the DarkMode label. I think it looks better as a single icon.
I still need to fix the blinding darkmode flash. It's annoying on the initial load, but it becomes downright infuriating when you rapidly navigate between border countries (while in darkmode).
I'm planning to use this Josh Comeau post as a guide The Quest for the Perfect Dark Mode, but I'm going to need to overhaul my themes and darkmode to fix the flash. π₯
Addressed:
<del>I used flex box for the grid, so I couldn't get the cards to justify along the sides (justify-content: space-between) with a gap. Should I refactor using css grid?</del> (Safari now supports gap with flexbox as of last month)
Hey Aaron, really well done!!π I went ahead and bookmarked it so I can study it more and learn from it. I really like the country card loaders that are displayed during the initial API call and the sound effect on toggle between light and dark mode is a really nice touch π
One suggestion I have is maybe have more of the country card loaders during the initial API call so that there aren't any big blank spaces on the screen without loaders if the user is viewing it on a wider desktop.
Also, it looks like you're doing quite a bit of prop drilling with the prop handleSearch (it's passed to FilterableCountryList, then FilterControls, then SearchBar before it's actually used) Could you declare that function in the SearchBar component so that it lives in the component that actually uses it? You could use Redux to manage the state and access countryFilter in App.jsx and then dispatch the action to change the state from SearchBar.jsx. I realize learning Redux may seem daunting but it's worth it!
Overall super awesome job and keep up the great work!! πͺ
Hey there, just came to check out your solution to this challenge after seeing that you left feedback on mine π Really nice job on it! I love the little coffee cup favicon you included and the order summary message before the user selects any options. The detailed README is also really nice to see π One thing I noticed is a bug when the user doesn't select the coffee subscription options in the order that they appear on the plan page. I tried selecting them out of order and then even when I had made a selection for every question, the button to open up the modal was still disabled. Something I would consider doing for future projects is to break up your scss into more files (organized by page, components, etc.) so that you don't have over 1000 lines of code in one big scss file. Overall you did a really nice job on this challenge! Keep up the good work πͺ
I'm so proud to complete my first Guru challenge ! π 6 months ago I could hardly finish a Newbie project but thanks to FME and his amazing community here I am !
It was pretty challenging and once again I find myself not being very DRY friendly, but it's getting better. I plan to finish the form validation later as I want to focus on other stuff.
Also, I found out that the website renders well on Chrome/Edge but is totally broken in Firefox. For example display: grid isn't working properly, so I'm wondering what is the problem ? I'll try to fix it, but now I get why browser compatibility is a pain haha.
Lastly, do you know a good way to preload images ? On loading some images take time to load and thus worsen the user experience.
Hey Enayar, just want to return the favor and leave you a comment on your solution π Absolutely amazing work, everything looks and functions beautifully and your use of animations is really impressive!! I loved the animations so much that I've been learning all about Framer Motion since I first peeked at your solution. Really the only suggestion I have for an improvement is to make the Designo logo in the footer into a link that routes to the home page like you've done for the Designo logo in the header.
I would really appreciate feedback regarding 2 things:
It took me forever to position the different images and I am curious to know whether I did a decent job or whether there is a better(?)/more responsive way to do it.
I also used SASS and I am never sure when it's best to nest, to use variables and so on, so if you have a moment to give me some feedback on how I did there, that would be awesome!
Hey Elisabeth, nice job on this challenge!! It definitely took me forever to position the images too, so not sure if I'll be much help in that regard. Looks like your accordion is working well and it's responsive. I also like the animation you included for the box image.
I noticed that the text color isn't changing when the user hovers over the questions in the accordion. It looks like you just used the wrong CSS selector for that declaration. Instead of
button:hover {
color: $hover-color;
}
it should be
.faq-button:hover {
color: $hover-color;
}
It would also be nice to have the cursor set to pointer on the questions in the accordion. I'd also recommend changing your media query to a bit of a wider screen width because at 1000px width, the box image is getting cut off a little on the left side.
Really nice execution!! It looks very close to the design, is responsive, and the theme switcher works great. The hover states on the cards also look really nice. The only things I would really suggest would be to vertically-center the dashboard within the viewport height. Also the design shows that when on the light theme when you hover over the switcher, the pill-shaped part of it should turn to the linear-gradient. The design also shows that the 'Overview - Today' heading should be a gray color on the light theme. Keep up the great work!!
Hey there, nice job on your 2nd FM challenge!! It looks really nice on both desktop and mobile and the theme switcher works really well. I just have a few minor suggestions for you.
It would be nice if on tablet screen widths if the cards were laid out in two columns instead of having the columns jump from four to one at 1220px.
In the design it shows that when you hover over the switcher in light mode, the pill-shaped part of the switcher should change to the linear-gradient.
The design also shows that on hover all the cards should show a pointer cursor and change their background color slightly.
Hey David, well done on this challenge π It looks pretty close to the design, is responsive, the theme switcher works, and you included hover states on the cards. Your CSS is also organized nicely. I just have a few suggestions for you:
It would be nice if the switcher worked if the user clicked on any part of it, not just the circle part of it.
The design shows a hover state in light mode for when the user hovers over the switcher. The pill-shaped part of it should turn to the linear-gradient.
The layout starts to get a little wonky between 1000px and 1200px screen width because the large cards aren't centered with the small cards.
It would look nice if at tablet screen widths you had the cards laid out in two columns instead of jumping from four columns to one column at 1000px.
I would like to know how many ways are there to navigate a page on toggle using JavaScript & If you're free, I would also love a feedback like how is my code, how should write code most efficient way. Thank you.
Hey Jeet, if you're looking for a tutorial on how to make light theme/dark theme switchers, check out this YouTube video. It's not for this exact challenge, but I was able to use the methods from this video in my solution π
Hey Juan, nice job! Looks close to the design, it's responsive and the theme switcher works nicely π I just have a few suggestions for you.
You're missing the hover states for the cards. The cards should change colors slightly and the cursor should be a pointer.
The Overview - Today heading should be a gray color in light mode
It would be nice to have the cards laid out in two columns for tablet screen widths. You can create two equal width columns like this: grid-template-columns: repeat(2, 1fr);
In your HTML you have <p>F O L L O W E R S</p>. Instead of putting it in all caps and with spaces between the letters in the HTML, it's better practice to style it that way in CSS.
You can keep all your CSS in one file with media queries for different screen widths instead of splitting them into separate files for desktop and mobile.
Wow, excellent work Sankara π Looks incredibly close to the design and I love the animations. Scales up and down really nicely and your code is really organized and readable. The only suggestion I really have is to consider using min-width media queries in future projects. It can often lead to less CSS code and has the benefit of loading in fewer styles for mobile users, which can be a nice performance gain. I was resistant to coding mobile-first for a bit, but tried it out on a few smaller projects and now I really like it π
Hey Mustafa, nice work on this challenge. It's responsive and the form validation for the email input works when the user submits the form with no input. One improvement you could make would be to expand your email validation to include instances when the user inputs strings that are not valid email addresses. I did this by using a regular expression https://stackoverflow.com/questions/46155/how-to-validate-an-email-address-in-javascript
Another suggestion is to add some more whitespace on mobile screen widths. It could use more of a margin between the image and the heading as well as some more padding on the left and right sides of the hero-content. Happy coding!