Button Component

The Button component is a flexible, accessible component that can render as either a button or a link. It supports multiple variants, sizes, and color schemes with full dark mode support.

Usage

The simplest way to use the button component:

<x-button>Click me</x-button>

Variants

The button component supports a wide range of visual variants to suit different UI contexts:

Primary Variants

<x-button variant="primary">Primary</x-button>
<x-button variant="secondary">Secondary</x-button>
<x-button variant="alternative">Alternative</x-button>
<x-button variant="inverse">Inverse</x-button>

Outline Variants

<x-button variant="outline">Outline</x-button>
<x-button variant="outline-primary">Outline Primary</x-button>
<x-button variant="outline-secondary">Outline Secondary</x-button>

Status Variants

<x-button variant="info">Info</x-button>
<x-button variant="success">Success</x-button>
<x-button variant="warning">Warning</x-button>
<x-button variant="danger">Danger</x-button>

Outline Status Variants

<x-button variant="outline-info">Outline Info</x-button>
<x-button variant="outline-success">Outline Success</x-button>
<x-button variant="outline-warning">Outline Warning</x-button>
<x-button variant="outline-danger">Outline Danger</x-button>

Ghost Variant

<x-button variant="ghost">Ghost</x-button>

Sizes

The button component supports four different sizes:

<x-button size="xs">Extra Small</x-button>
<x-button size="sm">Small</x-button>
<x-button size="md">Medium</x-button>
<x-button size="lg">Large</x-button>

As Link

When you provide an href attribute, the button will render as an anchor tag:

<x-button href="/dashboard">Go to Dashboard</x-button>
<x-button href="https://example.com" target="_blank">External Link</x-button>

With Icons

You can easily include icons within buttons. The component uses flexbox with gap spacing:

<x-button>
    <x-icons.plus />
    Add New
</x-button>

<x-button variant="outline-danger">
    <x-icons.trash />
    Delete
</x-button>

Livewire Usage

You can use the button component with Livewire. Just pass the wire:click attribute to the component:

<x-button wire:click="submit">Delete</x-button>

Circle Button

The button-circle component is a special circular button variant with a plus icon, perfect for floating action buttons and add actions.

Basic Circle Button

<x-button-circle />
<x-button-circle variant="secondary" />
<x-button-circle variant="info" />

Circle Button Sizes

Circle buttons support six sizes from small to 3xl:

<x-button-circle size="sm" />
<x-button-circle size="md" />
<x-button-circle size="lg" />
<x-button-circle size="xl" />
<x-button-circle size="2xl" />
<x-button-circle size="3xl" />

Circle Button Variants

All color variants are supported:

<x-button-circle variant="primary" />
<x-button-circle variant="secondary" />
<x-button-circle variant="alternate" />
<x-button-circle variant="inverse" />
<x-button-circle variant="info" />
<x-button-circle variant="success" />
<x-button-circle variant="warning" />
<x-button-circle variant="danger" />

Props Reference

Prop Type Default Description
variant string primary Visual style variant. Options: primary, secondary, alternative, inverse, outline, outline-primary, outline-secondary, outline-alternative, ghost, info, outline-info, danger, outline-danger, success, outline-success, warning, outline-warning
size string md Button size. Options: xs, sm, md, lg
href string|null null If provided, renders as an anchor tag instead of a button

Circle Button Props Reference

Prop Type Default Description
variant string primary Visual style variant. Options: primary, secondary, alternate, inverse, info, danger, success, warning
size string md Button size. Options: sm, md, lg, xl, 2xl, 3xl
href string|null null If provided, renders as an anchor tag instead of a button

References

Category Path / Name Description
Component resources/views/components/button.blade.php Standard button component
Component resources/views/components/button-circle.blade.php Circular button with plus icon

For the detailed documentation, please visit the Penguin UI Buttons.