This is a solution to the Browser extensions manager UI challenge on Frontend Mentor. Frontend Mentor challenges help you improve your coding skills by building realistic projects.
Users should be able to:
- Toggle extensions between active and inactive states
- Filter active and inactive extensions
- Remove extensions from the list
- Select their color theme
- View the optimal layout for the interface depending on their device's screen size
- See hover
and focusstates for all interactive elements on the page
- Solution URL: https://www.frontendmentor.io/solutions/browser-extension-manager-ui-with-react-and-typescript-hdC5m27Sn6
- Live Site URL: https://florianstancioiu.github.io/browser-extensions-manager-ui/
- Semantic HTML5 markup
- CSS custom properties
- Flexbox
- CSS Grid
- Mobile-first workflow
- React - JS library
- TailwindCSS - For styles
- TypeScript - JavaScript superset
- I'm really happy I made this project work correctly with TypeScript, in hindsight, this was very simple, but I got distracted by the fact that Vite requires you to import types using the
type
keyword (this was the biggest challenge I had to overcome in this project I think). - I learned about the new
@theme
directive in TailwindCSS, I learned to use the newest version of Tailwind (v4). - I re-learned how to add SVG files as components in React.
- I'm not gonna lie, at first, the filtering of the extensions items did give me a headache but in the end, I managed to complete the task.
-
I think I missed out when I decided to skip the focus states for this project, I'm not sure if every single link will be treated as a focus element or not. I might come back to this project later to see if that is true or not.
-
I also didn't use localStorage to set the dark mode "permanently".
-
I would also come back and change every single px value to it's rem corespondent.
- Vite Plugin SVGR - This helped me to include SVGs as React components in JSX
- How do I add color to my svg image in react - StackOverflow answer I found useful
- Why does my Vue/Vite/Typescript application require me to separate "import" and "import type" by default? - A StackOverflow answer I found useful when dealing with TypeScript
- Toggling dark mode manually - A TailwindCSS feature I used
- @theme directive - A relatively new TailwindCSS feature (v4) I used
- Frontend Mentor - @florianstancioiu
- Threads - @florianstancioiu01
- LinkedIn - @florianstancioiu
- freeCodeCamp - florianstancioiu