Class Variance Authority
…but CSS-in-TS (or CSS-in-JS) isn’t for everyone.
You may need full control over your StyleSheet output. Your job might require you to use a framework such as Tailwind CSS. You might just prefer writing your own CSS.
Creating variants with the “traditional” CSS approach can become an arduous task; manually matching classes to props and manually adding types.
cva aims to take those pain points away, allowing you to focus on the more fun aspects of UI development.
- Stitches (WorkOS)
Huge thanks to the WorkOS team for pioneering the
variantsAPI movement – your open-source contributions are immensely appreciated
- clb (Bill Criswell)
This project originally started out with the intention of merging into the wonderful
clblibrary, but after some discussion with Bill, we felt it was best to go down the route of a separate project.
I’m so grateful to Bill for sharing his work publicly and for getting me excited about building a type-safe variants API for classes. If you have a moment, please go and star the project on GitHub. Thank you Bill!
- clsx (Luke Edwards)
Previously, this project surfaced a custom
cxutility for flattening classes, but it lacked the ability to handle variadic arguments or objects. clsx provided those extra features with quite literally zero increase to the bundle size – a no-brainer to switch!
- Vanilla Extract (Seek)