Switch
Binary on/off toggle with immediate effect. Use for settings where the change applies instantly (notifications on/off, dark mode). For multi-step forms where the value is submitted later, prefer Checkbox.
a11y (built in): it's a real <input type="checkbox"> re-labelled with role="switch" — Space toggles it, native disabled takes it out of the tab order, and the wrapping <label> gives it its name; no JS controller is involved. The track is painted with appearance: none on the input itself so the semantics stay native, the knob changes position on :checked rather than color alone, and focus draws a --lb-border-focus ring through :focus-visible.
Usage: Pure CSS — nothing to init, no js/lb.js dependency and, unlike Checkbox, no injected DOM: track and knob are painted straight onto the input. The full contract is <label class="lb-switch-wrap"><input type="checkbox" class="lb-switch" role="switch"><span class="lb-switch__label">…</span></label>; pair a disabled input with .lb-switch-wrap--disabled on the label so the whole row dims. Wire the immediate effect to the native change event and read input.checked — no custom events, no instance handle, and switches added after load need no re-sweep.