Skip to content

Btn3D

Button with 3D effect

Basic Usage

vue
<script setup>
import { Btn3D } from '@8ctavio/vergil/components'
</script>

<template>
    <Btn3D>Keep it Clean!</Btn3D>
</template>

Props

Label
label: string
MiniMarkup

Simple Btn3D text content can be specified through the default slot or the label prop. The slot content overrides the label prop.

vue
<Btn3D label="Click"/>

Variant
variant: ('solid' | 'soft' | 'subtle') = 'solid'

Outline
outline: (boolean | 'subtle' | 'regular' | 'strong')
only for
soft
and
subtle
variants

The 'regular' and true values are equivalent.

Icon
icon: string
alias:
icon-left

vue
<Btn3D label="Rocket" icon="rocket_launch"/>

Icon Right
icon-right: string

vue
<Btn3D label="Omega" icon-right="special_character"/>

Squared
squared: boolean

Adding squared sets padding to the same value on all sides.

Theme
theme: theme = 'brand'

Size
size: ('xs' | 'sm' | 'md' | 'lg' | 'xl') = 'md'

Changing the size mainly changes the font-size and adjusts padding accordingly.

Radius
radius: ('none' | 'sm' | 'md' | 'lg' | 'full') = 'md'

Spacing
spacing: ('compact' | 'expanded') = ''

Spacing refers to a Btn3D's default padding and gap (for a given size). Changing spacing gives either a more compact or spacious look.

Disabled
disabled: boolean

Loading
loading: boolean

API Reference

Props

proptypedefault
labelstring''
variant'solid' | 'soft' | 'subtle''solid'
outlineboolean | 'subtle' | 'regular' | 'strong'
iconstring
iconLeftstring
iconRightstring
squaredboolean
disabledboolean
loadingboolean
descendantboolean
theme'brand' | 'user' | 'ok' | 'info' | 'warn' | 'danger' | 'neutral''brand'
size'xs' | 'sm' | 'md' | 'lg' | 'xl''md'
radius'none' | 'sm' | 'md' | 'lg' | 'full''md'
spacing'' | 'compact' | 'extended'''

Configuration options

Btn3D's configuration options allow to overwrite some Btn3D props' default values and may be overwritten under the btn3D root-level configuration option.

btn3D.<option>typedefaultglobal
variant'solid' | 'soft' | 'subtle''solid'
<variant>.outlineboolean | 'subtle' | 'regular' | 'strong'
squaredboolean
themetheme
sizesize
radiusradius
spacingspacing

Anatomy

<button.btn3D/>

<Icon.icon/>

<slot name="default"/>

<Icon.icon/>

<div.btn-loader/>

<span.btn-spinner/>