A teeny tiny CSS Custom Property framework based on Tailwind.
With Custom Properties and CSS modules, CSS is suddenly very easy to tame!
// button.jsx
import styles from 'button.module.css'
function Button({ children }) {
return (
<button className={styles.button}>
{children}
</button>
)
}
/* button.module.css */
.button {
height: var(--size-10);
padding: 0 var(--size-6);
font-weight: var(--font-semibold);
border-radius: var(--radius-md);
border: 1px solid var(--color-slate-200);
color: var(--color-slate-900);
}
-
Copy the CSS files from the jibe/ folder into your project.
-
Modify jibe.css to customize semantic styles that are specific to your project, such as:
:root { --color-primary: var(--color-blue-500); }
-
Use CSS as usual but, instead of writing values like
3px
or5rem
, always use the variables from jibe.css (preferably) and jibe-base.css (as a fallback).
This framework is just a bunch of CSS Custom Properties. So just look at jibe.css and jibe-base.css to see the properties that are available.
Tailwind is awesome, and I use it all the time. I built this because I was working on a project where the component framework (Ark) required the use of actual CSS files for styling things like selected states.
My initial reaction was "Great, I'll just use Tailwind's @apply!" -- except that the app framework we were using (Remix) didn't support @apply inside CSS modules out of the box, and it wasn't easy to add support.
So I built this 😃
-
You're one of those people who are just averse to utility classes.
-
You want to write code that anyone who knows CSS can just pick up and immediately understand.
-
You want to write framework-agnostic components.
-
You want to make it easy for users to change the colors of your web site / web app.
How? Just overwrite the semantic CSS variables from jibe.css using JS:
const root = document.documentElement; root.style.setProperty('--color-primary', 'var(--color-red-500)'); root.style.setProperty('--color-secondary', 'var(--color-pink-500)');