Skip to content
ActionBrowse action components
ComponentsActionStable

Button

Primary action primitive with 8 variants, 5 sizes, loading, pressed, icon, and block states. Subtle gradient + glow on focus.

Live preview

Variants & states

Variants
Sizes
States
Group

Usage

Adapters:React stableVue stable
index.html
<button class="lm-btn lm-btn-primary lm-btn-md" type="button">
  Save changes
</button>

<button class="lm-btn lm-btn-primary" aria-busy="true">
  Saving…
</button>

CSS classes (7)

ClassDescription
lm-btnBase class — required on every button
lm-btn-{variant}primary | secondary | accent | success | warning | danger | info | outline | ghost | link
lm-btn-{size}xs | sm | md | lg | xl
lm-btn-iconSquare icon-only button
lm-btn-blockFull-width button
lm-btn-loadingShow inline spinner; pairs with aria-busy
lm-btn-groupWrapper for adjacent buttons with shared borders

React props (7)

PropTypeDefaultDescription
variantVariantdefaultVisual emphasis
sizeSizemdxs / sm / md / lg / xl
loadingbooleanfalseAdds spinner + sets aria-busy
pressedbooleanToggle pressed state via aria-pressed
iconOnlybooleanSquare padding for icon-only
blockbooleanFull-width
asElementTypebuttonRender as <a>, <Link>, etc.

Accessibility

  • Use native <button> for actions, <a> for links.
  • Set type='button' inside forms to avoid accidental submits.
  • Use aria-busy='true' during async actions; aria-pressed for toggles.
  • Disabled state uses :disabled or aria-disabled='true'.

Spotted something wrong? Edit this entry on GitHub.