Skip to content

Switch ​

A toggle switch component for representing on/off states. Fully accessible with keyboard navigation, supports multiple sizes, vertical orientation, and can be integrated with forms.

Installation ​

bash
npx @capsuleui/core add Switch

Usage ​

Basic Switch ​

html
<capsule-switch></capsule-switch>

Checked State ​

html
<capsule-switch checked></capsule-switch>

Disabled ​

html
<capsule-switch disabled></capsule-switch>
<capsule-switch
  checked
  disabled
></capsule-switch>

Sizes ​

html
<capsule-switch size="sm"></capsule-switch>
<capsule-switch size="md"></capsule-switch>
<capsule-switch size="lg"></capsule-switch>

Orientation ​

Horizontal (default) ​

html
<capsule-switch></capsule-switch>

Vertical ​

html
<capsule-switch orientation="vertical"></capsule-switch>

Form Integration ​

The switch can be used within HTML forms and will submit its value.

html
<form>
  <label>
    Enable notifications
    <capsule-switch
      name="notifications"
      checked
    ></capsule-switch>
  </label>
  <button type="submit">Save</button>
</form>

Components ​

capsule-switch ​

The main switch component.

Attributes ​

AttributeTypeDefaultDescription
checkedbooleanfalseControls the checked state (on/off)
disabledbooleanfalseDisables the switch
sizestringmdSize of the switch
orientationstringhorizontalOrientation of the switch

Size Values ​

  • sm — Small size (28px × 16px)
  • md — Medium size (36px × 20px) — default
  • lg — Large size (44px × 24px)

Orientation Values ​

  • horizontal — Horizontal layout (default)
  • vertical — Vertical layout

API Reference ​

Methods ​

toggle() ​

Toggles the switch's checked state programmatically.

javascript
const switchElement = document.querySelector('capsule-switch');
switchElement.toggle(); // Toggles between checked and unchecked

Properties ​

checked ​

Gets or sets the checked state of the switch.

javascript
const switchElement = document.querySelector('capsule-switch');

// Get checked state
console.log(switchElement.checked); // true or false

// Set checked state
switchElement.checked = true; // Check the switch
switchElement.checked = false; // Uncheck the switch

disabled ​

Gets or sets the disabled state of the switch.

javascript
const switchElement = document.querySelector('capsule-switch');

// Get disabled state
console.log(switchElement.disabled); // true or false

// Set disabled state
switchElement.disabled = true; // Disable the switch
switchElement.disabled = false; // Enable the switch

size ​

Gets or sets the size of the switch.

javascript
const switchElement = document.querySelector('capsule-switch');

// Get size
console.log(switchElement.size); // 'sm', 'md', or 'lg'

// Set size
switchElement.size = 'lg'; // Change to large size

Events ​

The switch component dispatches the following custom event:

change ​

Dispatched when the switch is toggled. The event detail contains the current checked state.

javascript
const switchElement = document.querySelector('capsule-switch');
switchElement.addEventListener('change', (event) => {
  console.log('Switch toggled, checked:', event.detail.checked);
  // event.detail.checked is a boolean
});

Event Detail:

  • checked (boolean) — The current checked state of the switch

Example: Programmatic Control ​

javascript
// Get a reference to the switch
const switchElement = document.querySelector('capsule-switch');

// Listen for change events
switchElement.addEventListener('change', (event) => {
  if (event.detail.checked) {
    console.log('Switch is now ON');
    // Perform action when switched on
  } else {
    console.log('Switch is now OFF');
    // Perform action when switched off
  }
});

// Programmatically toggle the switch
document.querySelector('#toggleButton').addEventListener('click', () => {
  switchElement.toggle();
});

// Programmatically set checked state
switchElement.checked = true; // Turn on
switchElement.checked = false; // Turn off

// Disable/enable the switch
switchElement.disabled = true; // Disable
switchElement.disabled = false; // Enable

Accessibility ​

  • ✅ ARIA role="switch" with aria-checked attribute
  • ✅ Keyboard navigation support (Space/Enter to toggle)
  • ✅ Proper focus management
  • ✅ Form association support
  • ✅ Semantic structure for screen readers

Released under the MIT License.