Toggle button

Toggle button is a custom element that allows users to toggle between two states.

Examples Default tooltip

To make the button acitve use the active attribute. With a native button you can use the aria-pressed attribute also.

Toggle me Toggle me
Size
Toggle me Toggle me Toggle me Toggle me
Shape

You can change the shape of the toggle button by using the shape attribute.

Toggle me
Importing Per-component import (Recommended)

Import the component by its own subpath. This registers <dap-ds-toggle-button> (and the components it renders internally) and lets your bundler include only what you use:

import 'dap-design-system/components/toggle-button'

Need a reference to the class (e.g. to register it manually or extend it)? The same subpath default-exports it:

import DapDSToggleButton from 'dap-design-system/components/toggle-button'
Register everything

Register the whole library at once — convenient, but pulls every component into your bundle:

import 'dap-design-system'
Importing React
import { DapDSToggleButtonReact } from 'dap-design-system/react'
Attributes
PropertyTypeDefaultDescription
activebooleanfalseWhether the button is active.
shape'button', 'circle''button'The shape of the button
sizeChildrenstring'true'
size'xs', 'sm' , 'md' , 'lg''md'The size of the toggle button. Default is md
sizeMapstringResponsive size map (e.g. "md:lg")
Slots
NameDescription
(default)The content of the toggle button.
Events

No custom events available.

CSS Parts
Part NameDescription
baseThe main button container.
high-contrastThe high contrast part of the button.
How to Use CSS Parts

You can style CSS parts using the ::part() pseudo-element selector:

/* Target a specific part */
.my-custom-dap-ds-toggle-button::part(base) {
  /* Your custom styles */
}

/* Target multiple parts */
.my-custom-dap-ds-toggle-button::part(base),
.my-custom-dap-ds-toggle-button::part(high-contrast) {
  /* Shared styles */
}

Example usage:

<dap-ds-toggle-button class="my-custom-dap-ds-toggle-button">
  Toggle button
</dap-ds-toggle-button>
.my-custom-dap-ds-toggle-button::part(base) {
  border-radius: 12px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

CSS parts allow you to style internal elements of the component while maintaining encapsulation. Learn more in our styling guide.

CSS Custom Properties
Property NameDescription
--dds-toggle-button-min-width-lgMinimum width of the large toggle button (default: var(--dds-spacing-2400))
--dds-toggle-button-min-width-mdMinimum width of the medium toggle button (default: var(--dds-spacing-2000))
--dds-toggle-button-min-width-smMinimum width of the small toggle button (default: var(--dds-spacing-1200))
--dds-toggle-button-min-width-xsMinimum width of the extra small toggle button (default: var(--dds-spacing-1200))
--dds-toggle-button-height-lgHeight of the large toggle button (default: var(--dds-spacing-1200))
--dds-toggle-button-height-mdHeight of the medium toggle button (default: var(--dds-spacing-1000))
--dds-toggle-button-height-smHeight of the small toggle button (default: var(--dds-spacing-800))
--dds-toggle-button-height-xsHeight of the extra small toggle button (default: var(--dds-spacing-600))
--dds-toggle-button-padding-lgPadding of the large toggle button (default: var(--dds-spacing-300) var(--dds-spacing-400))
--dds-toggle-button-padding-mdPadding of the medium toggle button (default: var(--dds-spacing-300))
--dds-toggle-button-padding-smPadding of the small toggle button (default: var(--dds-spacing-200))
--dds-toggle-button-padding-xsPadding of the extra small toggle button (default: var(--dds-spacing-150) var(--dds-spacing-200))
--dds-toggle-button-font-size-lgFont size of the large toggle button (default: 1.125rem)
--dds-toggle-button-font-size-mdFont size of the medium toggle button (default: 1rem)
--dds-toggle-button-font-size-smFont size of the small toggle button (default: 0.875rem)
--dds-toggle-button-font-size-xsFont size of the extra small toggle button (default: var(--dds-font-xs))
--dds-toggle-button-border-enabledBorder color in enabled state (default: var(--dds-button-toggle-border-enabled))
--dds-toggle-button-background-enabledBackground color in enabled state (default: var(--dds-button-toggle-background-enabled))
--dds-toggle-button-content-enabledContent/text color in enabled state (default: var(--dds-button-toggle-content-enabled))
--dds-toggle-button-border-hoverBorder color in hover state (default: var(--dds-button-toggle-border-hover))
--dds-toggle-button-background-hoverBackground color in hover state (default: var(--dds-button-toggle-background-hover))
--dds-toggle-button-border-pressedBorder color in pressed state (default: var(--dds-button-toggle-border-pressed))
--dds-toggle-button-background-pressedBackground color in pressed state (default: var(--dds-button-toggle-background-pressed))
--dds-toggle-button-background-selected-enabledBackground color in selected enabled state (default: var(--dds-button-toggle-background-selected-enabled))
--dds-toggle-button-content-selected-enabledContent/text color in selected enabled state (default: var(--dds-button-toggle-content-selected-enabled))
--dds-toggle-button-background-selected-hoverBackground color in selected hover state (default: var(--dds-button-toggle-background-selected-hover))
--dds-toggle-button-background-selected-pressedBackground color in selected pressed state (default: var(--dds-button-toggle-background-selected-pressed))
--dds-toggle-button-border-disabledBorder color in disabled state (default: var(--dds-button-toggle-border-disabled))
--dds-toggle-button-background-disabledBackground color in disabled state (default: var(--dds-button-toggle-background-disabled))
--dds-toggle-button-content-disabledContent/text color in disabled state (default: var(--dds-button-toggle-content-disabled))
--dds-toggle-button-highcontrast-borderHigh contrast border color (default: var(--dds-button-toggle-highcontrast-border))
--dds-toggle-button-highcontrast-border-hoverHigh contrast border color on hover (default: var(--dds-button-toggle-highcontrast-border-hover))
How to Use CSS Custom Properties

CSS custom properties (CSS variables) can be set directly on the component or in your stylesheet:

Method 1: Inline styles (Quick customization)

<dap-ds-toggle-button
  style="--dds-toggle-button-min-width-lg: value; --dds-toggle-button-min-width-md: value;">
  Toggle button
</dap-ds-toggle-button>

Method 2: CSS classes (Reusable styles)

.my-custom-dap-ds-toggle-button {
  --dds-toggle-button-min-width-lg: value;
  --dds-toggle-button-min-width-md: value;
  --dds-toggle-button-min-width-sm: value;
}
<dap-ds-toggle-button class="my-custom-dap-ds-toggle-button">
  Toggle button
</dap-ds-toggle-button>

Method 3: Global theme customization

/* Apply to all instances */
dap-ds-toggle-button {
  --dds-toggle-button-min-width-lg: value;
  --dds-toggle-button-min-width-md: value;
}

CSS custom properties inherit through the Shadow DOM, making them perfect for theming. Changes apply immediately without rebuilding.