Skip to content
GitHub ↗

Forms / React + CSS

Preference switch

A compact setting that clearly shows whether it is on or off.

Live preview

Email updates are on in this demo.

Make it yours

Use for a setting that takes effect immediately. Keep checked in parent state and persist it in your application when needed.

  1. Use a React project with CSS Modules support, such as Next.js or Vite.
  2. Save the JSX as PreferenceSwitch.jsx and the CSS as PreferenceSwitch.module.css in the same folder.
  3. Import PreferenceSwitch and connect its props to your application. Controlled components need parent state and change handlers.

No third-party component or animation package is required. Use the theme controls to adjust accent, corners, spacing, and type. Copy the Theme CSS into your stylesheet and wrap your components in <div className="tdp-components">. The theme applies to every component inside that wrapper. TDP defaults work without a theme file.

Props

PropTypeUse
labelstringVisible setting name.
checkedbooleanCurrent state, owned by the parent.
onChangefunctionReceives the next boolean value.

Accessibility & behavior

The switch exposes aria-checked and a visible label. Native button behavior supports Enter and Space; the thumb position conveys state without relying on color.

Visible focus styles and reduced-motion support are included. Check labels, contrast, keyboard behavior, and screen-reader output again after adapting the component to your product.

Keep building