Button

Buttons are one of the most essential interactive components in any interface. They drive actions, confirm decisions, and guide users through flows. Our button system includes multiple styles, states, and sizes to accommodate everything from primary calls to action to subtle interface utilities. Designed for flexibility and consistency, each button variant maintains balance in spacing, icon placement, and accessibility, ensuring clarity at every interaction point.

Interactive Playground

Try out different combinations of props to see how the button looks:

<Button>Click me</Button>

Variants

The button comes in five variants: primary, secondary and destructive.

Sizes

Buttons are available in three sizes: small, medium, and large.

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

Icons

Buttons can include leading and/or trailing icons for enhanced visual communication:

<Button leadingIcon={<Plus className="size-5" />}>Add Item</Button>
<Button trailingIcon={<ArrowRight className="size-5" />}>Continue</Button>
<Button leadingIcon={<Download className="size-5" />} trailingIcon={<ArrowRight className="size-5" />}>Download</Button>

Icons work with all button variants and sizes:

Props

PropTypeDefaultDescription
variantprimary, secondary, destructiveprimaryThe visual style variant of the button
sizesm, md, lgmdThe size of the button
appearancedefault, stroke, lighter, ghostdefaultThe appearance of the button
disabledbooleanfalseWhether the button is disabled
iconOnlybooleanfalseWhether the button only has an icon
leadingIconReact.ReactNode-Icon to display before the button text
trailingIconReact.ReactNode-Icon to display after the button text
childrenReact.ReactNode-The content to display inside the button

The Button component also accepts all standard HTML button attributes (onClick, disabled, type, etc.).

Special Buttons

Special buttons feature expressive, visually distinct styles that draw attention and signal high-priority or standout actions. These might include bright color fills, gradients, outlines, shadows, or animated icons — all designed to elevate the button’s presence in the interface. They’re best used for actions that require emphasis, like “Upgrade Plan,” “Launch Now,” or marketing-focused CTAs. Use them sparingly to preserve their impact.

Interactive Playground

Try out different combinations of props to see how the button looks:

<Button>Click me</Button>

Variants

The button comes in five variants: primary, secondary and destructive.

Sizes

Buttons are available in three sizes: small, medium, and large.

<Button variant="special-primary" size="sm">Small Button</Button>
<Button variant="special-primary" size="md">Medium Button</Button>
<Button variant="special-primary" size="lg">Large Button</Button>

Props

PropTypeDefaultDescription
variantspecial-primary, special-black, special-white-The visual style variant of the special button
sizesm, md, lgmdThe size of the button
disabledbooleanfalseWhether the button is disabled
iconOnlybooleanfalseWhether the button only has an icon
leadingIconReact.ReactNode-Icon to display before the button text
trailingIconReact.ReactNode-Icon to display after the button text
childrenReact.ReactNode-The content to display inside the button

The Button component also accepts all standard HTML button attributes (onClick, disabled, type, etc.).