adn-ui
Components

Button

Interactive button component supporting multiple variants, sizes, and icon modes.

The Button component is used to trigger an action or event, such as submitting a form, opening a dialog, or performing an operation.

Usage

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

export function Example() {
  return <Button variant="primary">Click me</Button>;
}

Preview

Variants

Visual Variants

The variant prop controls the visual appearance of the button.

<Button variant="primary">Primary</Button>
<Button variant="secondary">Secondary</Button>
<Button variant="outline">Outline</Button>
<Button variant="ghost">Ghost</Button>
<Button variant="destructive">Destructive</Button>

Sizes

The size prop adjusts the padding and font size of the button (sm, md, lg).

<Button size="sm">Small</Button>
<Button size="md">Medium</Button>
<Button size="lg">Large</Button>

Icon Only

Set isIconOnly to true for square/icon-only buttons.

import { Plus } from "lucide-react";

<Button isIconOnly size="md">
  <Plus />
</Button>

Loading State

Combine Button with Spinner for asynchronous action indicators:

import { Button } from "@/components/ui/button";
import { Spinner } from "@/components/ui/spinner";

export function LoadingButton() {
  return (
    <Button disabled variant="primary">
      <Spinner size="sm" />
      <span>Saving...</span>
    </Button>
  );
}

Button Group

Use ButtonGroup to connect multiple related actions together into a single layout:

import { ButtonGroup, ButtonGroupItem } from "@/components/ui/button-group";

export function SegmentedActions() {
  return (
    <ButtonGroup variant="outline">
      <ButtonGroupItem>Years</ButtonGroupItem>
      <ButtonGroupItem>Months</ButtonGroupItem>
      <ButtonGroupItem>Days</ButtonGroupItem>
    </ButtonGroup>
  );
}

API Reference

PropTypeDefaultDescription
variant'primary' | 'secondary' | 'ghost' | 'outline' | 'destructive''primary'Visual style of the button.
size'sm' | 'md' | 'lg''md'Size of the button.
isIconOnlybooleanfalseAdjusts layout and padding for icon-only buttons.
disabledbooleanfalseDisables user interaction.
classNamestringundefinedAdditional CSS classes.

On this page