Tailwind Best Prictice

In this post, I am listing all initial setup for my tailwind configuration.

Extracting component classes

We can create an indigo button using tailwind's normal way like this:

<button class="py-2 px-2 bg-indigo-400 text-white font-semibold rounded-lg shadow-lg">
Click
</button>

The output is a button like this:

If we know we have to reuse those button styles for few more times, copy the whole class into another button again and again is apprantly not a good idea. Extract those utility patterns to CSS conponent classes with tailwind's @apply directive is a proper way.

For doing so, wrapping custom component styles with the @layer components { ... } directive will add it to tailwind components. Adding those to components layer enables us to use utility classes to further style component.

/* tailwind or global css file */
@tailwind base;
@tailwind components;
@tailwind utilities;
@layer components {
.btn-blue {
@apply py-2 px-2 bg-indigo-400 text-white font-semibold rounded-lg shadow-lg;
}
}

Customize design system

We can customize all of the values of utility classes that tailwind generated in theme section of tailwind.config.js.

A full list of default config values of tailwind can be found in default twailwind config file generated by following command:

npx tailwind init tailwind-defaul.config.js --full