Cerca...

Cerca nella documentazione...

Theme Switcher

Theme Switcher

Tre controlli pronti all'uso, tutti che leggono/scrivono lo stesso contesto ThemeProvider tramite useTheme(). Il chrome di questo stesso sito è dogfoodato sul vero ThemeProvider di Vesuvius, quindi ogni anteprima sotto è live e cambia davvero il tema di questa pagina — provale.

import {
  ThemeModeToggle,
  ThemePalettePicker,
  ThemeSwitcher,
} from "@pompeitech/vesuvius-ui";

ThemeModeToggle

Un singolo pulsante a icona che alterna chiaro/scuro.

ThemePalettePicker

Una palette Command ricercabile di temi colore, con un pulsante shuffle e un'anteprima swatch per tema.

ThemeSwitcher

Sia la modalità che il tema colore in un unico dropdown — il classico pattern "topbar".

Posizionamento tipico

<Header>
  <HeaderStart>{/* ... */}</HeaderStart>
  <HeaderEnd>
    <ThemeSwitcher />
  </HeaderEnd>
</Header>

API

ThemeModeToggle

PropTipoDescrizione
classNamestring

Legge resolvedTheme da useTheme() (quindi "system" è già risolto a un valore concreto) e alterna direttamente tra "light"/"dark" al click — non imposta mai "system" da sé, quindi una volta cliccato il tema resta ancorato a una scelta esplicita invece di seguire di nuovo il sistema operativo.

ThemePalettePicker

PropTipoDescrizione
swatchesRecord<string, [string, string, string, string]>Mappa il nome di un tema colore a 4 colori swatch esadecimali mostrati nella sua riga nell'elenco. I temi integrati hanno già le proprie voci; aggiungi qui i nomi dei tuoi temi personalizzati o verranno renderizzati come un placeholder grigio.

Ogni altra prop viene inoltrata alla palette Command sottostante.

ThemeSwitcher

PropTipoDescrizione
swatchColorsRecord<string, string>Mappa il nome di un tema colore a un singolo colore esadecimale per il suo pallino swatch nel dropdown. Stesso comportamento di ripiego sul grigio di ThemePalettePicker.swatches per i temi personalizzati non elencati.
classNamestring

Tutti e tre richiedono un antenato ThemeProvider (altrimenti lanciano un errore tramite useTheme()) — montalo una volta vicino alla radice della tua app; vedi Theming per ThemeProvider stesso e il catalogo visuale dei temi.