Docs
Button
Button
The Button component is a core UI element that serves as the foundation for more advanced AI-enabled buttons in the Empire UI library.
Features
- Accessible design with keyboard navigation
- Versatile variants for different UI contexts
- Responsive behavior on all device sizes
- Customizable styling using Tailwind CSS
- Typescript support with comprehensive types
Examples
Basic Button
Button Variants
Empire UI buttons come in multiple variants to match your UI needs.
Button Sizes
Disabled State
With Icon
asChild
Use the asChild
prop to render the Button as a different element using Radix UI's Slot component.
Installation
npx empire@latest add button
API Reference
Props
Prop | Type | Default | Description |
---|---|---|---|
variant | 'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link' | 'default' | Button style variant |
size | 'default' | 'sm' | 'lg' | 'icon' | 'default' | Button size |
asChild | boolean | false | Transform button into a child element |
Plus all standard HTML button attributes.
Extending Button for AI Features
The Button component serves as the foundation for specialized AI-oriented buttons in Empire UI:
AIGrammarCheckButton
- Proofreads and corrects textAIParaphraserButton
- Rewrites text with different phrasingAISummarizerButton
- Condenses text into summariesAIImageCaptionButton
- Generates captions for imagesAITranslatorButton
- Translates text between languages
These specialized AI buttons extend the base Button with AI functionality while maintaining the same styling and accessibility features.
Customization
You can customize the button styles by modifying the buttonVariants
function in your button component:
const buttonVariants = cva( "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50", { variants: { variant: { default: "bg-primary text-primary-foreground shadow hover:bg-primary/90", destructive: "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90", outline: "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground", secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80", ghost: "hover:bg-accent hover:text-accent-foreground", link: "text-primary underline-offset-4 hover:underline", }, size: { default: "h-9 px-4 py-2", sm: "h-8 rounded-md px-3 text-xs", lg: "h-10 rounded-md px-8", icon: "h-9 w-9", }, }, defaultVariants: { variant: "default", size: "default", }, })
Accessibility
The Button component follows WCAG 2.1 accessibility guidelines:
- Has appropriate ARIA attributes
- Supports keyboard navigation
- Maintains sufficient color contrast
- Provides visual feedback for different states