Sha256: f11569d1a432e950dcf5709da1ced7331edffcb3c395b7a807284ceb10faebc2
Contents?: true
Size: 989 Bytes
Versions: 27
Compression:
Stored size: 989 Bytes
Contents
import { Controller } from "@hotwired/stimulus" // Connects to data-controller="color-mode" export default class extends Controller { // static targets = ["trigger", "menu"] connect() { this.updateColorMode() } disconnect() { } updateColorMode() { if (localStorage.theme === 'dark' || (!('theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches)) { document.documentElement.classList.add('dark') } else { document.documentElement.classList.remove('dark') } } setLightColorMode() { // Whenever the user explicitly chooses light mode localStorage.theme = 'light' this.updateColorMode() } setDarkColorMode() { // Whenever the user explicitly chooses dark mode localStorage.theme = 'dark' this.updateColorMode() } setSystemColorMode() { // Whenever the user explicitly chooses to respect the OS preference localStorage.removeItem('theme') this.updateColorMode() } }
Version data entries
27 entries across 27 versions & 1 rubygems