Theme Switch

UI-Komponenten
Version: 1.0.0
Technologie: HTML, CSS, Vanilla JavaScript, localStorage, ARIA
Kategorie: UI-Komponenten

Beschreibung

Theme Switch ist eine fokussierte UI-Komponente für den Wechsel zwischen Light und Dark Mode. Ziel war ein sauber animierter Toggle, der nicht nur gut aussieht, sondern auch im Alltag stabil und verständlich funktioniert.

Der Schalter ist für Maus, Tastatur und Touch optimiert und berücksichtigt sowohl visuelle Qualität als auch Zugänglichkeit. Zusätzlich bleibt die Nutzerpräferenz über Seiten-Neuladen hinweg erhalten.

Technik

Die Komponente ist vollständig mit HTML, CSS und Vanilla JavaScript umgesetzt. Der Theme-Zustand wird in localStorage gespeichert und direkt beim Laden der Seite angewendet.

Dadurch wird ein sichtbares Flackern beim Initial-Render vermieden und die Oberfläche startet direkt im zuletzt gewählten Theme. Der Schalter nutzt ARIA-Attribute für eine klare, assistive Semantik.

Animationen und Übergänge sind so umgesetzt, dass sich die Interaktion wertig anfühlt und gleichzeitig mit prefers-reduced-motion respektvoll auf reduzierte Bewegungspräferenzen reagiert.

Technische Highlights

  • Animierter Sun-to-Moon-Toggle mit klaren Zustandsübergängen
  • Persistente Theme-Auswahl via localStorage (Light/Dark)
  • Frühe Theme-Initialisierung zur Vermeidung von Flash-of-Wrong-Theme
  • Zugängliche Schalter-Semantik mit role="switch" und ARIA-State
  • Tastatursteuerung inklusive sichtbarerer Fokusführung mit :focus-visible
  • Flüssige Transitionen mit Unterstützung für prefers-reduced-motion
  • Responsive Größensteuerung mit clamp(...) für konsistente Darstellung

Was ich dabei gelernt habe

Bei Theme Switch habe ich gelernt, wie viel Qualität in scheinbar kleinen UI-Komponenten steckt: saubere Zustandsführung, frühe Initialisierung und zugängliche Interaktion entscheiden spürbar über das Nutzungserlebnis. Besonders wertvoll war für mich die Kombination aus visuellem Feinschliff und robuster, wartbarer Logik.