Skip to content
Velkin LogoVelkin Logo
Velkin
VELKIN/UI

Modern UI components for product teams and their AI agents. Lit core, typed wrappers, live MCP.

sales@velkinui.com

Product

  • Docs
  • Components
  • Studio
  • Pricing

Resources

  • Quick start
  • Blog
  • Changelog
  • Roadmap
  • Status

Project

  • About
  • Contact
  • License
  • Privacy
  • Terms

© 2026 Velkin. MIT core · Pro licenses available.

VELKIN

Button

A clickable button component with multiple variants and states.

vu-button · @velkin/react/button

Copy page

Import

React
npm i @velkin/react

import { VuButton } from "@velkin/react/button";

Examples

API

Props

PropTypeDefaultDescription
variantVuButtonVariant"solid"Visual treatment. Default: `"solid"`.
colorVuButtonColor"default"Token intent. Default: `"default"`.
sizeVuButtonSize"md"Discrete size. Default: `"md"`.
radiusVuButtonRadius"md"Corner preset (`none`/`sm`/`md`/`lg`/`full`). Default: `"md"`.
typeVuButtonType"button"Native button type. Default: `"button"`.
namestring""Form-control name submitted with `type="submit"`.
valuestring""Form-control value submitted with `name`.
formstring""ID of an external `<form>` to submit or reset.
disabledbooleanfalseNon-interactive; drops out of tab order. Default: `false`.
loadingbooleanfalseShows a spinner and blocks clicks. Default: `false`.
blockbooleanfalseStretches the button to fill its container. Default: `false`.
iconOnlybooleanfalseSquare 1:1 hit target; `label` is `aria-label` only. Default: `false`.
labelstring""Plain-text fallback for the default slot; icon-only buttons use it as `aria-label`.
pressedbooleanfalseToggle or selected state; exposes `aria-pressed`. Default: `false`.
presetstring—Named bag from nearest `vu-config-provider`; omitted from the DOM while empty.

Events

EventDetailDescription
clickMouseEventBubbles natively from the inner `<button>`. Suppressed when `disabled` or `loading`.

Slots

SlotDescription
—- Button label (text or markup).
startOptional leading icon, rendered before the label.
endOptional trailing icon, rendered after the label.

CSS parts

PartDescription
baseThe native `<button>` element (most styling lives here).
startWrapper around the leading icon slot.
endWrapper around the trailing icon slot.
labelWrapper around the default text slot.
spinnerThe loading spinner shown when `loading` is true.

Types

NameDefinition
VuButtonColor
"default" | "primary" | "success" | "warning" | "danger"
VuButtonRadius
"sm" | "md" | "lg" | "none" | "full"
VuButtonSize
"sm" | "md" | "lg"
VuButtonType
"button" | "submit" | "reset"
VuButtonVariant
"solid" | "outline" | "soft" | "ghost" | "link"

Related

Inputs

  • Advanced FilterAn advanced filter component with expression input and visual builder.
  • Button GroupA button group component with shared styling and optional selection.
  • CheckboxA checkbox component with label, hint, and validation.
  • Checkbox GroupA checkbox group component with shared label and validation.
  • Color AreaA two-dimensional color picker component for saturation and brightness.
  • Color PickerA color picker component with swatches, sliders, and input field.

Guides

  • FormsFormData, VuForm, and validation
  • EventsonVu* / v-model / e.detail
  • Appearancevariant, color, tone, size

Browse

  • Previous: Advanced FilterEarlier in the sidebar
  • Next: Button GroupLater in the sidebar
  • All componentsBrowse the full index