Socket
Socket
Sign inDemoInstall

class-variance-authority

Package Overview
Dependencies
Maintainers
1
Versions
26
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

class-variance-authority

Class Variance Authority 🧬


Version published
Weekly downloads
1.8M
decreased by-1.64%
Maintainers
1
Weekly downloads
 
Created

What is class-variance-authority?

The class-variance-authority (CVA) npm package is a utility for managing and composing CSS class names in a more declarative and type-safe manner. It helps in creating consistent and reusable class name patterns, especially useful in component-based frameworks like React.

What are class-variance-authority's main functionalities?

Defining Variants

This feature allows you to define variants for your CSS classes. You can specify different styles for different states or conditions, making it easier to manage complex styling logic.

const button = cva('btn', {
  variants: {
    size: {
      small: 'btn-small',
      large: 'btn-large'
    },
    color: {
      primary: 'btn-primary',
      secondary: 'btn-secondary'
    }
  },
  defaultVariants: {
    size: 'small',
    color: 'primary'
  }
});

// Usage
const className = button({ size: 'large', color: 'secondary' });

Combining Variants

This feature allows you to combine multiple variant definitions into a single class name. It helps in creating more complex and reusable class name patterns.

const button = cva('btn', {
  variants: {
    size: {
      small: 'btn-small',
      large: 'btn-large'
    },
    color: {
      primary: 'btn-primary',
      secondary: 'btn-secondary'
    }
  }
});

const iconButton = cva(button, {
  variants: {
    icon: {
      left: 'btn-icon-left',
      right: 'btn-icon-right'
    }
  }
});

// Usage
const className = iconButton({ size: 'large', color: 'primary', icon: 'left' });

Type Safety

CVA provides type safety when defining and using variants. This ensures that you are using the correct variant names and values, reducing the likelihood of runtime errors.

const button = cva('btn', {
  variants: {
    size: {
      small: 'btn-small',
      large: 'btn-large'
    },
    color: {
      primary: 'btn-primary',
      secondary: 'btn-secondary'
    }
  }
});

// TypeScript will enforce correct usage
const className: string = button({ size: 'large', color: 'primary' });

Other packages similar to class-variance-authority

Keywords

FAQs

Package last updated on 17 Jul 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc