• Component library dilema

    I have been working on a personal project for the last month or so, and I tried a lot of Frontend component library frameworks, like Material UI and Bulma, to find the perfect component library for me (if there is one).

    I am a very picky person concerning the frameworks that I use. This time I had in mind these points:

    • To have control over my stylesheets (I am not a fan of having styles mixed with Javascript)
    • To use CSS variables to customize the theme of my site
    • I want the component library to be easily extensible

    So, my journey begins with those simple premises.

    Material UI

    I always liked the Material design system and wanted to try it. I advanced a bit in the development but ended up discarding this option because of how MUI handles the styles. It’s a good option if you only want to concentrate on Backend, but not the one for this project.

    Moving on, after trying how CSS and JS mixed while using styled-components, I went to opposite way to only use a CSS framework (no JS involved).

    Bulma

    I liked how extensible the SASS of Bulma can be; they have a nice-looking design system. I tried to adapt the code I already had implemented using my React components with the provided HTML/CSS classes for Bulma, and it was alright.

    The problem came when I tried to implement the second point of the list: CSS variables for a theme. Bulma uses calculations to derive the lighter/darker version of each color. 

    After seeing that, I started digging into the code and making changes to add CSS variables for each color combination. I ended up having a ton of CSS variables just for the colors, and the code started to get messy (I had to override a good amount of code just to remove the calculation that Bulma had in place).

    This wasn’t the best approach to have CSS variables with bulma, but I couldn’t find a better one.

    With that in mind, I browsed other alternatives of CSS framework, but at the moment couldn’t find any better one, so I went back to the beginning and gave Material another chance.

    Material Components Web

    At this point, I wanted to have control over the JS of my components, but I wanted to use an already implemented CSS design system. After browsing a little, I visited the Material components library for Web.

    My line of thought was: I like Material as a design system, but I wanted to change how Material UI handles the styles. So let’s find a solution in the middle.

    With this, I created my components by just using the SASS files from that library and replicating some JS they use. It was a good solution, and in the future, it could be easily changed to another one.

    But, after migrating a couple of components, It felt like I was reinventing the wheel and press pause on moving in that direction.

    Right now, I am exploring another CSS-only design system called DaisyUI.

    I will write about how that goes soon…

  • Hello, World!

    Hello, world! Starting my blog with this sentence just felt right!

    Let’s start this blog with just that, and a picture of an IDE using a light theme. If something describes me, is using light themes whenever I can, so that also felt right 🤓.

    Cheers!