Skip to main content

Button

Production actions: native button or link, loading state, icons, keyboard focus, and WCAG-friendly disabled semantics.

Variants

Badged

variant="badged" — primary face with a theme-aware trailing chip. Pass badge for the label (New, Beta, Pro, …).

Sizes

Icons

Icon only

Loading

Static variants below; click the primary button to run a real submit cycle.

Animation variants

animationVariant — press motion is separate from visual variant. Click each button to feel the difference.

Disabled and link

Link

API

PropRequiredTypeDefaultDescription
themeOptionalSiteThemeatelierVisual theme — zinc-folio, magenta-edit, indigo-glass, warm-ledger, lime-meadow, cream-block, atelier, sky-flat, sage-wedge, ember-velvet, polar-frost, ink-line, bone-still, volt-arc, prism-scan, bubble-gloss, or cloud-loop.
modeOptional"light" | "dark"lightColor mode — swaps token palette for light or dark surfaces.
variantOptional"primary" | "secondary" | "ghost" | "destructive" | "success" | "badged"primaryVisual emphasis. Badged is primary chrome with a trailing label chip — requires badge. Success for positive confirmations. Destructive for irreversible actions.
sizeOptional"sm" | "md" | "lg"mdTouch-friendly height (md/lg meet 44px target).
typeOptional"button" | "submit" | "reset"buttonNative button type. Use submit inside forms.
onClickOptional(event) => voidClick handler. Blocked while loading or disabled.
loadingOptionalbooleanfalseShows spinner, sets aria-busy, prevents duplicate submits.
loadingLabelOptionalstringLoadingScreen reader label during loading.
badgeOptionalReactNodeTrailing label when variant is badged (e.g. New, Beta). Required with variant="badged".
leftIcon / rightIconOptionalReactNodeOptional icons. Icon-only buttons need aria-label. Not used with variant badged.
fullWidthOptionalbooleanStretch to container width.
animationVariantOptional"default" | "none" | "ripple" | "scale" | "sink" | "lift" | "pulse" | "glow"defaultPress animation variant. Ripple expands from the pointer; scale/sink/lift/pulse/glow are explicit motion styles; default uses the theme recipe; none disables press transforms.
hrefOptionalstringRenders as <a> for navigation. Adds rel on target=_blank.
disabledOptionalbooleanNative disabled + cursor-not-allowed.
...restOptionalButtonHTMLAttributes | AnchorHTMLAttributesAll standard onClick, aria-*, data-*, form, name, etc.