2.0.0 • Published 5 months ago
cva-extended v2.0.0
cva-extended
An extended version of cva, with additional features:
For the main documentation, visit beta.cva.style.
Extended Features
variants
object exposed on a cva component
const button = cva({
variants: {
intent: {
primary: "bg-blue-500",
secondary: "bg-white",
},
disabled: {
true: "opacity-50",
false: "opacity-100",
},
},
});
button.variants; // { intent: ["primary", "secondary"], disabled: [true, false] }
typeof button.variants;
// ^?
// {
// "intent": ReadonlyArray<'primary' | 'secondary'>,
// "disabled": readonly boolean[]
// }
//
Require variants, unless a default is provided in defaultVariants
const button = cva({
variants: {
intent: {
primary: "bg-blue-500",
secondary: "bg-white",
},
},
});
button(); // Error: Missing required variant: intent
const optionalIntent = cva({
variants: {
intent: {
primary: "bg-blue-500",
secondary: "bg-white",
},
},
defaultVariants: {
intent: "primary",
},
});
optionalIntent(); // No error
Private variants
const button = cva({
variants: {
intent: {
primary: "bg-blue-500",
secondary: "bg-white",
},
$private: {
true: "private",
},
},
});
button({ $private: true }); // Error: Variant $private is not exposed
button.variants; // { intent: ["primary", "secondary"] }
typeof button.variants;
// ^?
// {
// "intent": ReadonlyArray<'primary' | 'secondary'>
// }
//
2.0.0
5 months ago