build69
build69  /  Components  /  Buttons & Actions  /  Button

Button

v1.0.7Updated 27 Aug 2026

Primary interactive element. Several size and variant styles, supports asChild for composition with Link components. Adds loading / success / error feedback states, an inline confirm flow, badge + tooltip slots, and an o

Preview

Live · 21 stories
DefaultOpen ↗
Why this is recommendedactionctaclickcontrol+4

The default, out-of-the-box Button.

Recommended for+14
  • All click actions
  • Form submission
  • Toolbar actions
  • Submit buttons with async work
  • Destructive actions needing confirm
Tags+6
actionctaclickcontrolloadingconfirmrippledefault
Features+4
  • Tone (neutral / primary / success / warning / danger / info) × emphasis (solid / soft / outline / ghost / link)
  • Sizes: sm/default/lg/icon
  • asChild prop
  • States: idle / loading / success / error with auto reset
  • Inline confirm flow ("Are you sure?" inline reveal)
  • Badge slot (count / dot)
  • Tooltip slot
  • Ripple on press (toggleable)
  • Async submit helper: awaits onClick, flips state
Not recommended for−2
  • Navigation links inside body text (use a styled <a>)

Install

Ask your agent, or call the MCP tool directly. The resolved bundle is written into your project.

get_registry_item({ name: "Button" })

Usage

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

<Button state="loading" badge={3} tooltip="Send invoice">Send</Button>

Tick variants in the left menu — each adds a tab with that variant’s real story source, the same code the preview above renders.

Props

PropTypeRequired
tone

Semantic tone (what it means)

'neutral' | 'primary' | 'success' | 'warning' | 'danger' | 'info'
emphasis

Visual emphasis (how loud)

'solid' | 'soft' | 'outline' | 'ghost' | 'link'
size

Size preset

'xs' | 'sm' | 'md' | 'lg'
iconOnly

Square icon-only button

boolean
asChild

Render as the single child element

boolean
state

Controlled feedback state

'idle' | 'loading' | 'success' | 'error'
confirm

Inline confirm prompt

string | ButtonConfirm
badge

Badge slot

ReactNode
tooltip

Tooltip content

ReactNode
ripple

Enable ripple effect

boolean

Every tonal component shares the same tone × emphasis API, so the pair looks identical across Button, Badge, Alert and more.

Related