Button

A button component used to trigger an action.

Appearance variants

Appearance variants

Sizes

Sizes

Shape

Shape

Disabled state

Disabled state

Selected state (Toggle)

Selected state (Toggle)

Block button

Block button

API

Prop (Props)TypeDefaultDescription
appearance'primary' | 'secondary' | 'outline' | 'subtle' | 'transparent''secondary'Appearance variant; primary is the primary action filled with the brand color
size'small' | 'medium' | 'large''medium'Size, with heights of 24 / 32 / 40 px respectively
shape'rounded' | 'circular' | 'square''rounded'Shape; circular uses borderRadiusCircular, square has sharp corners
disabledbooleanfalseWhether the button is disabled
selectedbooleanfalseSelected state (toggle-button mode), rendered as aria-pressed
blockbooleanfalseBlock display, fills the full width of the parent container
type'button' | 'submit' | 'reset''button'Native type; button is the explicit default to avoid accidental form submission
iconComponent—Icon component (an icon from @fluere-vue/icons), decorative and hidden from AT
iconPosition'before' | 'after''before'Icon position relative to the text (only takes effect in icon + text mode)
iconOnlybooleanfalseShow only the icon (compact, square mode); the content <span> is not rendered
Slot (Slots)Description
defaultButton text; not rendered when iconOnly is true
iconIcon slot; when provided it replaces the icon Prop (the icon gets aria-hidden="true")

This component does not declare emits and does not set inheritAttrs: false: events such as click and attributes such as aria-*, id, and title fall through directly to the root native <button>, so consumers can use them as they would with a native button. This is also why consumers must pass aria-label themselves in the iconOnly scenario — the icon is invisible to the accessibility tree, so the accessible name can only come from outside.

v0.5.0-alpha.1