Lunar Kit LogoLunar Kit
Components

Button

A versatile button component with multiple variants and sizes

Demo
Code
Button

Installation

lunar add button

Usage

import { Button } from '@/components/ui/button';

Basic Usage

<Button>Click me</Button>

Variants

<Button variant="default">Default</Button>
<Button variant="destructive">Destructive</Button>
<Button variant="outline">Outline</Button>
<Button variant="secondary">Secondary</Button>
<Button variant="ghost">Ghost</Button>
<Button variant="link">Link</Button>

Sizes

<Button size="sm">Small</Button>
<Button size="default">Default</Button>
<Button size="lg">Large</Button>
<Button size="icon">
  <Settings size={16} />
</Button>

Loading State

<Button loading>Submitting...</Button>
 
// With custom loading behavior
const [isLoading, setIsLoading] = useState(false);
 
<Button 
  loading={isLoading} 
  onPress={async () => {
    setIsLoading(true);
    await submitForm();
    setIsLoading(false);
  }}
>
  Submit
</Button>
 

Disabled State

<Button disabled>Disabled</Button>

With Icons

import { Mail, ArrowRight, Plus } from 'lucide-react-native';
 
// Left icon
<Button leftIcon={<Mail size={16} color="white" />}>
  Send Email
</Button>
 
// Right icon
<Button rightIcon={<ArrowRight size={16} color="white" />}>
  Continue
</Button>
 
// Both icons
<Button 
  leftIcon={<Plus size={16} color="white" />}
  rightIcon={<ArrowRight size={16} color="white" />}
>
  Add Item
</Button>
 
// Icon only
<Button size="icon" variant="outline">
  <Plus size={16} />
</Button>

API Reference

Button

PropTypeDefaultDescription
childrenReactNodeRequiredButton content
variant'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link''default'Visual variant
size'default' | 'sm' | 'lg' | 'icon''default'Button size
disabledbooleanfalseDisable the button
loadingbooleanfalseShow loading spinner
leftIconReactNodeIcon on the left
rightIconReactNodeIcon on the right
classNamestringAdditional classes for container
textClassNamestringAdditional classes for text
onPress() => voidPress handler

On this page