Aller au contenu

Composant · Formulaire

Switch

Stable

Interrupteur on/off pour un réglage appliqué immédiatement. Case <input type="checkbox" role="switch"> avec piste et pastille, libellé à droite et texte d'aide optionnel.

Quand l'utiliser

  • Activer/désactiver un réglage qui prend effet immédiatement (sans Enregistrer).
  • Pour un choix validé plus tard avec le formulaire, préférez Checkbox.
  • Switch (avec label intégré à droite) vs Toggle (avec libellé d'état On/Off) selon le besoin.

États

États

Désactivé / activé (off / on)

Avec texte d'aide

Désactivé (non interactif)

Voir le code (Svelte)
<div class="docs-demo-stack">
  <h3>Désactivé / activé (off / on)</h3>
  <Switch label="Notifications" />
  <Switch label="Notifications" checked />
  <h3>Avec texte d'aide</h3>
  <Switch
    label="Mode sombre"
    helperText="S'applique immédiatement à toute l'interface."
  />
  <h3>Désactivé (non interactif)</h3>
  <Switch label="Verrouillé" disabled />
  <Switch label="Verrouillé (on)" checked disabled />
</div>

Anatomie

  • Élément racine : un <label> englobant (classe st-switch).
  • Piste (.st-switch__track) + pastille (.st-switch__thumb), purement visuelles (aria-hidden).
  • Input natif <checkbox role="switch"> superposé, qui porte l'état et le focus.
  • Contenu : libellé (requis) + texte d'aide optionnel.

Accessibilité

  • L'input expose role="switch" et aria-checked reflète l'état.
  • Focusable au clavier, basculé avec Espace ; le focus est visible sur la piste.
  • Piste et pastille sont aria-hidden : l'état est porté par l'input natif.

Lignes directrices

À faire

  • Réserver Switch aux réglages instantanés.
  • Libellé décrivant ce qui est activé, pas l'état.

À éviter

  • Mettre un Switch dans un formulaire validé par bouton : Checkbox.
  • Demander une confirmation après chaque bascule.

API

PropTypeDéfautDescription
labelstringrequisLibellé visible à droite.
helperTextstringoptionnelTexte d'aide sous le libellé.
checkedbooleanfalseÉtat on/off (attribut natif).
classstringoptionnelClasse(s) sur le <label>.
Autres attributsHTMLInputAttributesN/APropagés sur l'<input> (disabled, name, onchange…).

Note : Switch lit checked en attribut natif (non bindable). Pour un état piloté avec bind:checked et une taille sm/md, utilisez le composant Toggle.

Tokens utilisés

  • --st-component-selection-switchTrack
  • --st-component-selection-switchTrackChecked
  • --st-component-selection-switchThumb
  • --st-component-control-hoverBackground
  • --st-component-control-focusRing
  • --st-component-field-labelText
  • --st-component-field-helpText
  • --st-component-control-hoverBorder