Sha256: 96cba7c1925bd93f5907130e139e6f3256a3edd7e503f94bf34051fb65053385
Contents?: true
Size: 1.46 KB
Versions: 3
Compression:
Stored size: 1.46 KB
Contents
const THEME_KEY = "theme" export function toggleDarkTheme() { setTheme( document.documentElement.getAttribute("data-bs-theme") === 'dark' ? "light" : "dark" ) } /** * Set theme for mazer * @param {"dark"|"light"} theme * @param {boolean} persist */ export function setTheme(theme, persist = false) { document.body.classList.add(theme) document.documentElement.setAttribute('data-bs-theme', theme) if (persist) { localStorage.setItem(THEME_KEY, theme) } } /** * Init theme from setTheme() */ function initTheme() { //If the user manually set a theme, we'll load that const storedTheme = localStorage.getItem(THEME_KEY) if (storedTheme) { return setTheme(storedTheme) } //Detect if the user set his preferred color scheme to dark if (!window.matchMedia) { return } //Media query to detect dark preference const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)") //Register change listener mediaQuery.addEventListener("change", (e) => setTheme(e.matches ? "dark" : "light", true) ) return setTheme(mediaQuery.matches ? "dark" : "light", true) } window.addEventListener('DOMContentLoaded', () => { const toggler = document.getElementById("toggle-dark") const theme = localStorage.getItem(THEME_KEY) if(toggler) { toggler.checked = theme === "dark" toggler.addEventListener("input", (e) => { setTheme(e.target.checked ? "dark" : "light", true) }) } }); initTheme()
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
mazer-rails-0.1.4 | vendor/assets/javascripts/components/dark.js |
mazer-rails-0.1.3 | vendor/assets/javascripts/components/dark.js |
mazer-rails-0.1.2 | assets/javascripts/components/dark.js |