Toggles

Toggles switch a single setting on or off with immediate effect, built on React Aria’s Switch, with an optional label and hint beside the track.

Demo

Change the props and copy the result. The component select switches between the full Toggle field and the bare ToggleBase; every control is a real prop, including ToggleBase’s state props.

Component
size
import { Toggle } from "@/components/base/toggle/toggle"; <Toggle size="md" label="Remember me" hint="Save my login details." />

ToggleBase is visual only

The base component renders two divs and nothing interactive, which is why its states are plain props you can set here. Composing it into a custom row means supplying your own React Aria Switch around it; details are on the Code tab.

The family

Two components from one module: the field most screens use, and the bare visual switch it is built around.

The components in this family, with their descriptions and import paths
ComponentDescriptionImport from
ToggleThe full switch field: the visual track with an optional label and hint, built on React Aria’s Switch.@/​components/​base/​toggle/​toggle
ToggleBaseThe bare visual switch. Renders two divs and nothing interactive; compose it inside your own Switch.@/​components/​base/​toggle/​toggle

The variant space

Two types at two sizes, off and on: 8 bare variants above, then the same 4 type and size pairs again below with a label and with a label and hint, 8 more. All live. The slim track is 4px shorter than the default at the same size and its thumb sits flush, wearing a border. Tracks measure 36×20 and 44×24 (default), 32×16 and 40×20 (slim), matching the Figma sheet exactly.

default
sm, off
sm, on
md, off
md, on
slim
sm, off
sm, on
md, off
md, on
sm, label
sm, label and hint
sm, slim, label
sm, slim, label and hint
md, label
md, label and hint
md, slim, label
md, slim, label and hint

The whole row toggles

Track, label, and hint all live inside one label element, and clicking any of them flips the switch; the hint is not click-inert, measured with a real browser. Text sits to the right of the switch; there is no reversed layout in the kit.

States

Every treatment below is painted by the kit itself: ToggleBase takes its states as plain props, so nothing here is a hand-copied approximation. Both types, at md.

default
rest
rest, on
hover, on
focus-visible
focus-visible, on
disabled
disabled, on
slim
rest
rest, on
hover, on
focus-visible
focus-visible, on
disabled
disabled, on

Hover leaves the off state alone

The kit styles hover on the selected track only, one brand step darker. That is not an omission: the Figma sheet’s Hover variants for the off state are pixel-identical to rest, measured in this page’s parity audit. There is no loading state anywhere in the family.