用途:指导在 shadcn/ui 组件中定义、修改和评审基于 class-variance-authority(cva)的变体(variant/size),避免样式冲突与类型缺失。
主要能力:说明 cva 的 base、variants、compoundVariants、defaultVariants 结构;要求所有输出经 cn()(clsx + tailwind-merge)合并以解决类名冲突;导出 VariantProps 以支持扩展;用 compoundVariants 处理组合覆盖;用字符串键(含 "true"/"false")而非裸布尔值;用 Omit/Required 使变体成为必填;按 Radix Slot.Root 实现 asChild,将组件渲染为单个子元素。
使用方式:按文中 Button 示例组织 buttonVariants 与组件,className 统一走 cn(buttonVariants({ variant, size, className })),禁止模板字符串或加号拼接。安装与初始化命令资料未提供,需按自身项目环境确认。
适用场景:新增带 variant/size 的组件、扩展 Button 等既有组件、排查重复工具类与 fast-refresh 报警。
限制:asChild 只能传一个子元素;不通过 twMerge 时冲突类不会自动覆盖;未提供收费、价格与完整命令信息。