Interruttore

Un interruttore è per un’impostazione che si applica appena viene mossa. Una casella di controllo è per una scelta che confermi dopo, con un pulsante di invio. Se il tuo controllo sta in un form con un Salva in fondo, è una casella di controllo.

Il componente si chiama toggle() invece di switch() per un motivo noioso ma inevitabile: switch è una parola riservata, quindi non può essere un binding di import. Sotto è un vero <input type="checkbox"> che porta role="switch".

Interruttore di base

stack({ direction: 'row', gap: 'lg' },
  toggle({ label: 'Sito pubblico', name: 'public' }),
  toggle({ label: 'Acceso', name: 'on', checked: true }),
)

Colori

stack({ direction: 'row', gap: 'lg', wrap: true },
  toggle({ label: 'Primary', checked: true, color: 'primary' }),
  toggle({ label: 'Neutral', checked: true, color: 'neutral' }),
  toggle({ label: 'Success', checked: true, color: 'success' }),
  toggle({ label: 'Warning', checked: true, color: 'warning' }),
  toggle({ label: 'Danger', checked: true, color: 'danger' }),
)

Disattivato

stack({ direction: 'row', gap: 'lg' },
  toggle({ label: 'Spento, e bloccato', disabled: true }),
  toggle({ label: 'Acceso, e bloccato', checked: true, disabled: true }),
)

Senza etichetta

Un interruttore senza etichetta visibile ha comunque bisogno di un nome accessibile. Passa aria-label — arriva fino all’input.

toggle({ 'aria-label': 'Attiva la ricerca Pagefind', checked: true })

Un elenco di impostazioni

La forma consueta: l’etichetta a sinistra, l’interruttore a destra, una riga per impostazione.

  • Ricerca Pagefind
    Indicizza ogni pagina alla fine della build.
  • Ottimizzazione immagini
    Ridimensiona e converte le immagini in fase di build. Richiede sharp.
  • Island server
    Renderizza le regioni marcate al momento della richiesta.
return list(
  [
    ['Ricerca Pagefind', 'Indicizza ogni pagina alla fine della build.', true],
    ['Ottimizzazione immagini', 'Ridimensiona e converte le immagini in fase di build. Richiede sharp.', true],
    ['Island server', 'Renderizza le regioni marcate al momento della richiesta.', false],
  ].map(([name, description, on]) =>
    listItem({
      title: name,
      description,
      end: toggle({ 'aria-label': name, checked: on }),
    }),
  ),
)

Props

PropTipoPredefinitoDescrizione
labelChild—Testo accanto all’interruttore. Usa aria-label quando non ce n’è.
color'primary' | 'neutral' | 'success' | 'warning' | 'danger''primary'Colore della barra quando è acceso.
checkedbooleanfalseSe parte acceso.
namestring—Nome del campo del form.
disabledbooleanfalseDisattiva l’input e attenua la riga.

Tutto il resto passa all’<input>, che è dove stanno onchange e aria-*.