Button

The Button component provides an interactive button with multiple variants, sizes, and states.

Installation

npm install @duskmoon-dev/el-button

Usage

import '@duskmoon-dev/el-button/register';
<el-dm-button variant="primary">Click me</el-dm-button>

Live Demo

Button Variants

PrimarySecondaryTertiaryOutlineGhost

Semantic Colors

SuccessWarningErrorInfo

Properties

PropertyTypeDefaultDescription
variant'primary' | 'secondary' | 'tertiary' | 'outline' | 'ghost' | 'success' | 'warning' | 'error' | 'info''primary'Visual style of the button
size'sm' | 'md' | 'lg''md'Size of the button
disabledbooleanfalseDisables the button
loadingbooleanfalseShows loading state
type'button' | 'submit' | 'reset''button'Button type attribute

Variants

Primary

The primary variant is used for main actions.

<el-dm-button variant="primary">Primary</el-dm-button>

Secondary

The secondary variant is used for less prominent actions.

<el-dm-button variant="secondary">Secondary</el-dm-button>

Outline

The outline variant has a transparent background with a border.

<el-dm-button variant="outline">Outline</el-dm-button>

Ghost

The ghost variant is minimal, with no background or border.

<el-dm-button variant="ghost">Ghost</el-dm-button>

Tertiary

The tertiary variant provides an alternative accent color.

<el-dm-button variant="tertiary">Tertiary</el-dm-button>

Semantic Colors

Semantic color variants communicate status or intent.

Success

<el-dm-button variant="success">Success</el-dm-button>

Warning

<el-dm-button variant="warning">Warning</el-dm-button>

Error

<el-dm-button variant="error">Error</el-dm-button>

Info

<el-dm-button variant="info">Info</el-dm-button>

Sizes

Button Sizes

SmallMediumLarge
<el-dm-button size="sm">Small</el-dm-button>
<el-dm-button size="md">Medium</el-dm-button>
<el-dm-button size="lg">Large</el-dm-button>

States

Disabled

Disabled State

Disabled
<el-dm-button disabled>Disabled</el-dm-button>

Loading

Loading State

Loading
<el-dm-button loading>Loading</el-dm-button>

Events

The button component emits standard DOM events:

EventDescription
clickFired when the button is clicked
focusFired when the button receives focus
blurFired when the button loses focus

Event Handling

const button = document.querySelector('el-dm-button');
button.addEventListener('click', (event) => {
  console.log('Button clicked!');
});

CSS Custom Properties

PropertyDefaultDescription
--btn-padding-x1remHorizontal padding
--btn-padding-y0.5remVertical padding
--btn-border-radius0.375remBorder radius
--btn-font-weight500Font weight

Accessibility

  • The button uses native <button> element semantics
  • Keyboard navigation is fully supported
  • Focus states are clearly visible
  • Disabled state is properly announced to screen readers