Figma UI kit
Actions

Toggle

v1.2.1

Switch one setting on or off immediately, with no Save step.

Quick usage

Import the shared component; never copy its markup into a feature. The Web TSX tab beside the live stage has a complete, working example.

import Toggle from '@/shared/components/Toggle';

Live stage and code

The live component and its controls on the left, the code on the right; change a control and the code follows: Web TSX (the component in a working example), Tailwind and HTML (the markup it renders, with its data attributes), React Native, SwiftUI and Jetpack Compose. The header theme switch drives every stage.

Props

Read from the component's source when the docs build: names and defaults from its signature, types and descriptions from its JSDoc. A blank type means the prop has no JSDoc yet.

PropTypeDefaultDescription
checkedboolean--
onChange(next: boolean) => void--
labelReact.ReactNode-Visible label; also the accessible name.
disabledbooleanfalse-

Source: frontend/src/shared/components/Toggle/Toggle.js

DOM contract

What the rendered element carries: the data attributes its styles key on, its roles and ARIA, its focus style, and whether its stylesheet draws the 44px hit boundary. Also read from the source.

Data attributesdata-dsdata-on
Rolesrole="switch"
ARIAaria-checked
FocusStyles :focus-visible in its own stylesheet
44px hit boundaryYes: a ::after in Toggle.module.css

Accessibility and touch

The track is the visual; the 44px row is the target.

Toggle

Visible height 28px. The ::after boundary adds 8px above and below, so a gloved finger lands on a 44px target while the row keeps its density.

Rules and constraints

Use it for

  • A setting that applies the moment it changes, such as a preference.

Avoid

  • Never inside a form that has a Save button: use a checkbox there.
  • Never for choosing between views: that is a segmented switcher.

Constraints

  • The thumb fill is the accent only when on; off is the neutral ladder.

More in Actions