# cva

A TypeScript library for building type-safe, variant-driven class names with Tailwind CSS or any other styling approach.


Source: https://findsoftware.frbit.cloud/cva/
Last reviewed: 2026-10-26
Updated: 2026-10-28
Listed since: 2026-10-26

## Record

### Links

- home: https://cva.style
- repository: https://github.com/joe-bell/cva
- docs: https://cva.style/getting-started/installation

### Identity

- status: active
- maintainer: Joe Bell
- maintainerType: individual
- parent: unknown
- firstRelease: 2022
- hqCountry: unknown

### Kind

- category: css-framework
- hosting: not applicable
- language: javascript
- runtime: unknown
- runtimeMin: not applicable
- basedOn: unknown

### Content

- contentStore: not applicable
- databases: not applicable
- adminUi: not applicable
- headlessApi: not applicable
- templating: not applicable
- i18n: not applicable

### Rendering and deploy

- runsAs: unknown
- renderingModes: not applicable
- installMethod: npm

### License

- licenseModel: open-source
- license: Apache-2.0

### Releases

- currentMajor: 0
- latestReleaseDate: 2024-11-26

### Adoption

- githubStargazers: 6907
- packagistDownloads: not applicable
- npmWeeklyDownloads: 83559474
- contributors: 30
- pluginCount: unknown
- packagistMonthlyDownloads: unknown
- ecosystemsMonthlyDownloads: unknown
- httpArchiveSites: unknown
- wordpressActiveInstalls: unknown
- dependentRepos: 12840
- dependentPackages: 710

### Sources

- urls: https://cva.style/ (read 2026-10-26)
- urls: https://github.com/joe-bell/cva (read 2026-10-26)
- urls: https://cva.style/getting-started/installation (read 2026-10-26)
- maintainer: https://github.com/joe-bell/cva/blob/main/packages/class-variance-authority/package.json (read 2026-10-26)
- maintainerType: https://api.github.com/users/joe-bell (read 2026-10-26)
- language: https://github.com/joe-bell/cva (read 2026-10-26)
- category: https://cva.style/ (read 2026-10-26)
- installMethod: https://cva.style/getting-started/installation (read 2026-10-26)
- license: https://github.com/joe-bell/cva (read 2026-10-26)
- license: https://github.com/joe-bell/cva/blob/main/README.md (read 2026-10-26)
- licenseModel: https://github.com/joe-bell/cva (read 2026-10-26)
- currentMajor: https://api.github.com/repos/joe-bell/cva/releases/latest (read 2026-10-26)
- latestReleaseDate: https://api.github.com/repos/joe-bell/cva/releases/latest (read 2026-10-26)
- firstRelease: https://registry.npmjs.org/class-variance-authority (read 2026-10-26)
- githubStargazers: https://github.com/joe-bell/cva (read 2026-10-26)
- contributors: https://api.github.com/repos/joe-bell/cva/contributors?per_page=1 (read 2026-10-26)
- npmWeeklyDownloads: https://api.npmjs.org/downloads/range/2026-09-28:2026-10-04/class-variance-authority (read 2026-10-28)
- dependentPackages: https://packages.ecosyste.ms/api/v1/registries/npmjs.org/packages/class-variance-authority (read 2026-10-26)
- dependentRepos: https://packages.ecosyste.ms/api/v1/registries/npmjs.org/packages/class-variance-authority (read 2026-10-26)

## Notes

cva is a TypeScript library for building class name strings from variant definitions. A component declares its base classes and its variants, and the library returns the class string for the values passed in, with those values typed. It works with Tailwind CSS or any other styling approach. The package installs from npm under the name class-variance-authority, because the shorter name had been registered as a placeholder before the project published; the installation page says the shorter name will be used from the next major version on. Joe Bell, named as the author in the package's manifest and the README license line, maintains it.

## Worth knowing

The next major line is in beta. By default cva joins class names but does not resolve conflicting Tailwind CSS utilities, so the installation page lists approaches for style conflicts.

---

Data licensed CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Attributes are recorded, never scored; absent means unknown.
Credit, in full: FindSoftware, CC BY 4.0
