class-variance-authority

npm package · declared by 209 of 2,343 sampled repositories · graph computed 2026-08-24

Counted from the runtime dependencies public repositories declare — not the resolved tree. A transitive dependency is a consequence; a declared one is a choice. Development dependencies are excluded because they repeat across every project in a language regardless of what is being built.

Declared with

ranked by association, not by count
Tools declared alongside this one, ranked by association strength
Declared withRepositoriesvs chance
tailwind-merge94 of 2,3430.92
@radix-ui/react-slot61 of 2,3430.86
clsx89 of 2,3430.83
@radix-ui/react-dialog46 of 2,3430.80
lucide-react82 of 2,3430.77
@radix-ui/react-dropdown-menu36 of 2,3430.75
tailwindcss-animate38 of 2,3430.75
@radix-ui/react-label32 of 2,3430.73
@radix-ui/react-select32 of 2,3430.73
@radix-ui/react-tooltip28 of 2,3430.71
next-themes41 of 2,3430.71
cmdk23 of 2,3430.69
@radix-ui/react-tabs24 of 2,3430.68
@radix-ui/react-popover23 of 2,3430.67
@radix-ui/react-icons18 of 2,3430.65
sonner25 of 2,3430.65
@radix-ui/react-toast17 of 2,3430.64
@radix-ui/react-separator17 of 2,3430.64
@radix-ui/react-scroll-area17 of 2,3430.64
next71 of 2,3430.62

Every pair above is counted from the same evidence: repo manifest.

Used instead

candidates · shares a neighbourhood and refuses to co-occur

No alternative measured. A pair qualifies only if it shares a neighbourhood and then fails to appear together against an expectation that it would — and almost everything that shares a neighbourhood does appear together. That is the test working, not a gap in the data: similarity alone would list this tool’s closest neighbours as alternatives, and most of them are things it is used with.