Skip to content

Button ​

Use Button component for actions in forms, dialogs, and more with support for multiple sizes, states, and more.

Examples ​

Variant ​

Buttons can have filled, outlined, light and text variant.

Code
vue
<template>
  <div>
    <base-button color="primary" variant="filled">Filled</base-button>
    <base-button color="primary" variant="outlined">Outlined</base-button>
    <base-button color="primary" variant="light">Light</base-button>
    <base-button color="primary" variant="text">Text</base-button>
  </div>
</template>

Color ​

Fill Buttons can be filled.

Outlined Buttons can be outlined.

light Buttons can have a soft colors.

text Buttons can be flat.

Code
vue
<template>
  <div>
    <base-button color="primary">Primary</base-button>
    <base-button color="secondary">Secondary</base-button>
    <base-button color="info">Info</base-button>
    <base-button color="success">Success</base-button>
    <base-button color="warning">Warning</base-button>
    <base-button color="danger">Danger</base-button>
  </div>
</template>
vue
<template>
  <div>
    <base-button variant="outlined" color="primary">Primary</base-button>
    <base-button variant="outlined" color="secondary">Secondary</base-button>
    <base-button variant="outlined" color="info">Info</base-button>
    <base-button variant="outlined" color="success">Success</base-button>
    <base-button variant="outlined" color="warning">Warning</base-button>
    <base-button variant="outlined" color="danger">Danger</base-button>
  </div>
</template>
vue
<template>
  <div>
    <base-button variant="light" color="primary">Primary</base-button>
    <base-button variant="light" color="secondary">Secondary</base-button>
    <base-button variant="light" color="info">Info</base-button>
    <base-button variant="light" color="success">Success</base-button>
    <base-button variant="light" color="warning">Warning</base-button>
    <base-button variant="light" color="danger">Danger</base-button>
  </div>
</template>
vue
<template>
  <div>
    <base-button variant="text" color="primary">Primary</base-button>
    <base-button variant="text" color="secondary">Secondary</base-button>
    <base-button variant="text" color="info">Info</base-button>
    <base-button variant="text" color="success">Success</base-button>
    <base-button variant="text" color="warning">Warning</base-button>
    <base-button variant="text" color="danger">Danger</base-button>
  </div>
</template>

Shape ​

Buttons have various shape.

Code
vue
<template>
  <div>
    <base-button color="primary" shape="sharp">Sharp</base-button>
    <base-button color="primary" shape="rounded">Round</base-button>
    <base-button color="primary" shape="pill">Pill Button</base-button>
  </div>
</template>

Size ​

Button components can have various sizes.

Code
vue
<template>
  <div>
    <base-button color="primary" size="xs">Button xs</base-button>
    <base-button color="primary" size="sm">Button sm</base-button>
    <base-button color="primary" size="md">Button md</base-button>
    <base-button color="primary" size="lg">Button lg</base-button>
    <base-button color="primary" size="xl">Button xl</base-button>
    <base-button color="primary" size="2xl">Button 2xl</base-button>
  </div>
</template>

Disabled ​

Buttons have their own style when disabled.

Code
vue
<template>
  <div>
    <base-button disabled color="primary">Disabled</base-button>
    <base-button disabled color="secondary">Disabled</base-button>
    <base-button disabled color="info">Disabled</base-button>
    <base-button disabled color="success">Disabled</base-button>
    <base-button disabled color="warning">Disabled</base-button>
    <base-button disabled color="danger">Disabled</base-button>
  </div>
</template>

Block ​

Button can be blocked with w-full.

Code
vue
<template>
  <div>
    <base-button is-block color="primary">Disabled</base-button>
    <base-button is-block color="secondary">Disabled</base-button>
    <base-button is-block color="info">Disabled</base-button>
    <base-button is-block color="success">Disabled</base-button>
    <base-button is-block color="warning">Disabled</base-button>
    <base-button is-block color="danger">Disabled</base-button>
  </div>
</template>

Loading ​

Button can have loading indicator. Click the button to trigger loading start / stop.

Code
vue
<script setup lang="ts">
import { ref } from 'vue'

const isLoading = ref(true)

const toggleLoading = () => {
  isLoading.value = !isLoading.value
}
</script>

<template>
  <div>
    <base-button @click="toggleLoading()" :is-loading="isLoading" color="primary" variant="filled">
      Filled Button
    </base-button>
    <base-button @click="toggleLoading()" :is-loading="isLoading" color="primary" variant="light">
      Light Button
    </base-button>
    <base-button
      @click="toggleLoading()"
      :is-loading="isLoading"
      color="primary"
      variant="outlined"
    >
      Outlined Button
    </base-button>
    <base-button @click="toggleLoading()" :is-loading="isLoading" color="primary" variant="text">
      Text Button
    </base-button>
  </div>
</template>

With Icon ​

Buttons can have an icon.

Code
vue
<template>
  <base-button color="primary">
    <base-icon icon="i-fa7-duotone:books" />
  </base-button>
  <base-button color="primary" variant="outlined" shape="pill">
    <base-icon icon="i-fa7-duotone:books" />
  </base-button>
  <base-button color="primary"><base-icon icon="i-fa7-duotone:books" /> Button</base-button>
  <base-button color="primary" variant="outlined">
    Button <base-icon icon="i-fa7-duotone:books" />
  </base-button>
</template>

Button API ​

Types ​

ts
export type BaseButtonColorType =
  | 'primary'
  | 'secondary'
  | 'info'
  | 'success'
  | 'warning'
  | 'danger'
export type BaseButtonVariantType = 'filled' | 'light' | 'outlined' | 'text'
export type BaseButtonShapeType = 'sharp' | 'rounded' | 'pill'
export type BaseButtonSizeType = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'
export type BaseButtonType = 'submit' | 'button' | 'reset'

Props ​

NameTypeDefaultDescription
typeBaseButtonTypebuttonButton type.
variantBaseButtonVariantTypefilledButton variant.
colorBaseButtonColorTypeprimaryButton color.
shapeBaseButtonShapeTypesharpButton shape.
sizeBaseButtonSizeTypemdButton size.
isBlockbooleanfalseBlock button with full width.
isLoadingbooleanfalseAdd spinner loading indicator inside button.

Slot ​

#default slot for rendering button content

Released under the MIT License.