The power of Tailwind combined with a first-class variant API.
  
    
  
  
    
  
  
    
  
- First-class variant API
 - Slots support
 - Composition support
 - Fully typed
 - Framework agnostic
 - Automatic conflict resolution
 - Tailwindcss V4 support
 
For full documentation, visit tailwind-variants.org
β Note:
Tailwindcss V4no longer supports theconfig.content.transformso we remove theresponsive variantsfeatureIf you want to use
responsive variants, you need to add it manually to your classname.
- Installation: To use Tailwind Variants in your project, you can install it as a dependency:
 
yarn add tailwind-variants
# or
npm i tailwind-variants
# or
pnpm add tailwind-variantsOptional: If you want automatic conflict resolution, also install tailwind-merge:
yarn add tailwind-merge
# or
npm i tailwind-merge
# or
pnpm add tailwind-mergeπ‘ Lite mode (v3): For smaller bundle size and faster runtime without conflict resolution, use the
/liteimport:import {tv} from "tailwind-variants/lite";
β οΈ Upgrading?
- From v2 to v3: See the v3 migration guide
 - From v1 to v2: See the v2 migration guide
 
- Usage:
 
import {tv} from "tailwind-variants";
const button = tv({
  base: "font-medium bg-blue-500 text-white rounded-full active:opacity-80",
  variants: {
    color: {
      primary: "bg-blue-500 text-white",
      secondary: "bg-purple-500 text-white",
    },
    size: {
      sm: "text-sm",
      md: "text-base",
      lg: "px-4 py-3 text-lg",
    },
  },
  compoundVariants: [
    {
      size: ["sm", "md"],
      class: "px-3 py-1",
    },
  ],
  defaultVariants: {
    size: "md",
    color: "primary",
  },
});
return <button className={button({size: "sm", color: "secondary"})}>Click me</button>;- 
cva (Joe Bell) This project as started as an extension of Joe's work on
cvaβ a great tool for generating variants for a single element with Tailwind CSS. Big shoutout to Joe Bell and contributors you guys rock! π€ - we recommend to usecvaif don't need any of the Tailwind Variants features listed here. - 
Stitches (Modulz)
The pioneers of thevariantsAPI movement. Inmense thanks to Modulz for their work on Stitches and the community around it. π 
We're excited to see the community adopt HeroUI, raise issues, and provide feedback. Whether it's a feature request, bug report, or a project to showcase, please get involved!
Contributions are always welcome!
Please follow our contributing guidelines.
Please adhere to this project's CODE_OF_CONDUCT.
- Junior garcia (@jrgarciadev)
 - Tianen Pang (@tianenpang)
 
Licensed under the MIT License.
See LICENSE for more information.