Skip to content

Button ​

Primary interactive element for triggering actions

All Variants

Usage ​

tsx
import { Button } from '@tryvienna/ui'

<Button>Button</Button>

Examples ​

Default ​

Default
tsx
<Button>Button</Button>

Destructive ​

Destructive
tsx
<Button variant="destructive">Delete</Button>

Outline ​

Outline
tsx
<Button variant="outline">Outline</Button>

Secondary ​

Secondary
tsx
<Button variant="secondary">Secondary</Button>

Ghost ​

Ghost
tsx
<Button variant="ghost">Ghost</Button>
Link
tsx
<Button variant="link">Link Button</Button>

All Variants ​

All Variants
tsx
<div className="flex flex-wrap items-center gap-4">
  <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>
</div>

All Sizes ​

All Sizes
tsx
<div className="flex flex-wrap items-center gap-4">
  <Button size="xs">Extra Small (24px)</Button>
  <Button size="sm">Small (32px)</Button>
  <Button size="default">Default (40px)</Button>
  <Button size="lg">Large (48px)</Button>
</div>

With Icons ​

With Icons
tsx
<div className="flex flex-wrap items-center gap-4">
  <Button>
    <MailIcon /> Send Email
  </Button>
  <Button variant="destructive">
    <TrashIcon /> Delete
  </Button>
  <Button variant="outline">
    <DownloadIcon /> Download
  </Button>
  <Button variant="secondary">
    Next <ChevronRightIcon />
  </Button>
</div>

Icon Buttons ​

Icon Buttons
tsx
<div className="flex flex-wrap items-center gap-4">
  <Button size="icon-xs" variant="ghost">
    <PlusIcon />
  </Button>
  <Button size="icon-sm" variant="ghost">
    <PlusIcon />
  </Button>
  <Button size="icon" variant="outline">
    <PlusIcon />
  </Button>
  <Button size="icon-lg" variant="outline">
    <PlusIcon />
  </Button>
</div>

Loading ​

Loading
tsx
<div className="flex flex-wrap items-center gap-4">
  <Button disabled>
    <LoaderIcon className="animate-spin" /> Please wait
  </Button>
  <Button variant="outline" disabled>
    <LoaderIcon className="animate-spin" /> Loading...
  </Button>
</div>

Disabled ​

Disabled
tsx
<Button disabled="true">Disabled</Button>

Variants ​

NameOptionsDefault
variantdefault | destructive | outline | secondary | ghost | linkdefault
sizedefault | xs | sm | lg | icon | 'icon-xs' | 'icon-sm' | 'icon-lg'default

API Reference ​

Button ​

PropTypeDefaultDescription
variant"link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | nulldefault
size"default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | nulldefault
asChildbooleanfalse

Also accepts all props from button.

Data Attributes ​

Componentdata-slot
Button"button"