Installation
Usage
import ButtonVariants from "@/components/ruixen/button-variants";
export default function MyComponent() {
return (
<div className="flex gap-4">
<ButtonVariants variant="primary">Primary</ButtonVariants>
<ButtonVariants variant="secondary">Secondary</ButtonVariants>
<ButtonVariants variant="outline">Outline</ButtonVariants>
<ButtonVariants variant="ghost">Ghost</ButtonVariants>
<ButtonVariants variant="link">Link</ButtonVariants>
<ButtonVariants variant="destructive">Destructive</ButtonVariants>
</div>
);
}Props
| Prop | Type | Default | Description |
|---|---|---|---|
variant | "primary" | "secondary" | "destructive" | "outline" | "ghost" | "link" | "primary" | Button style variant |
size | "sm" | "md" | "lg" | "icon" | "md" | Button size |
loading | boolean | false | Show loading spinner |
leftIcon | React.ReactNode | - | Icon on the left side |
rightIcon | React.ReactNode | - | Icon on the right side |
className | string | - | Additional CSS classes |
Features
- Six distinct variants for different use cases
- Three size options plus icon-only size
- Loading state with spinner
- Support for left and right icons
- Accessible focus states
- Light and dark mode support

