
BrowserUX Theme Switcher
Une solution moderne pour proposer un sélecteur de thème clair/sombre et améliorer l’expérience utilisateur dans toutes vos interfaces web.
BrowserUX Theme Switcher est un Web Component léger, accessible et personnalisable, conçu pour ajouter facilement un bouton de changement de thème à n’importe quel site ou application. Il détecte automatiquement le thème système, mémorise la préférence de l’utilisateur, et applique le bon thème.
Téléchager v1.0.0
HTML pur, React, Vue ou Angular
Voir le CHANGELOG
npm install browserux-theme-switcher
Fonctionnalités
-
🎛 Comportement intelligent
-
Changement de thème
Alterne entredata-theme="light"
et"dark"
sur un élément cible (par défauthtml
) -
Persistance automatique
Stocke la préférence utilisateur danslocalStorage
et la restaure à chaque visite -
Détection système
Active automatiquement le thème en fonction deprefers-color-scheme
si aucune préférence n’est définie -
Événement
theme-change
Déclenche un événement personnalisé à chaque changement de thème (e.detail.theme = "light" | "dark"
)
-
Changement de thème
-
🎨 Personnalisation visuelle
-
Ciblage CSS (
target
)
Permet d’appliquer le thème à un élément spécifique (par ex. :main
,#app
, etc.) -
Variables CSS modifiables
Large personnalisation de l’apparence via des propriétés CSS (--bux-switch-*
) -
Slots personnalisés pour icônes
Personnalisation des icônes avec des balises SVG, emojis ou images (light-icon
,dark-icon
) -
Images adaptatives (
.has-dark
)
Remplacement automatique d’images selon le thème (ex.logo.png
→logo-dark.png
)
-
Ciblage CSS (
-
♿ Accessibilité & internationalisation
-
Libellés ARIA dynamiques
Textes accessibles multilingues générés automatiquement ou personnalisables (data-label-*
) -
Internationalisation (
lang
)
Prise en charge de plusieurs langues (auto-détection ou forçage via attributlang
)
-
Libellés ARIA dynamiques
-
🔧 Intégration flexible
-
Shadow DOM optionnel (
no-shadow
)
Encapsulation désactivable pour permettre un style global plus souple
-
Shadow DOM optionnel (