Switch is one element: <button type="button" role="switch" aria-checked>. There is no input, no label element and no hidden checkbox, and the kit adds none.
- aria-checked follows the state on every render, so on and off are announced whether or not the track has any text.
- disabled is the native attribute on the button, so a disabled switch leaves the tab order and ignores clicks.
- It is one tab stop, and tabIndex passes through if you need to change it.
- Focus shows as a :focus-visible outline in colorPrimaryBorder. color changes that token too, so a colored switch shows a focus ring in its own color. Keep the ring when you restyle.
The name and the contrast are left to you, because the component cannot decide them.