Button

Triggers actions or navigation when clicked.

import { Button } from "@/components/ui/button";
 
export function ButtonDemo() {
  return <Button>Button</Button>;
}

Installation

npx shadcn@latest add "https://eo-n.vercel.app/r/button"

Usage

Import all parts and piece them together.

import { Button } from "@/components/ui/button";
<Button>Button</Button>

Examples

Primary

import { Button } from "@/components/ui/button";
 
export function ButtonDemo() {
  return <Button>Button</Button>;
}

Secondary

import { Button } from "@/components/ui/button";
 
export function ButtonSecondary() {
  return <Button variant="secondary">Secondary</Button>;
}

Destructive

import { Button } from "@/components/ui/button";
 
export function ButtonDestructive() {
  return <Button variant="destructive">Destructive</Button>;
}

Ghost

import { Button } from "@/components/ui/button";
 
export function ButtonGhost() {
  return <Button variant="ghost">Ghost</Button>;
}

Outline

import { Button } from "@/components/ui/button";
 
export function ButtonOutline() {
  return <Button variant="outline">Outline</Button>;
}
import { Button } from "@/components/ui/button";
 
export function ButtonLink() {
  return <Button variant="link">Link</Button>;
}

Icon

import { X } from "lucide-react";
 
import { Button } from "@/components/ui/button";
 
export function ButtonIcon() {
  return (
    <Button variant="outline" size="icon">
      <X />
    </Button>
  );
}

Loading

import { Loader2 } from "lucide-react";
 
import { Button } from "@/components/ui/button";
 
export function ButtonLoading() {
  return (
    <Button disabled>
      <Loader2 className="animate-spin" />
      Loading
    </Button>
  );
}

API Reference

Root

The main container component for handling button props.

PropTypeDefault
size?
"default" | "sm" | "lg" | "icon" | null
"default"
variant?
"link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | null
"default"