diff --git a/docs/js/commons.min.js b/docs/js/commons.min.js
index 0be9d3b5..cde0e9c8 100644
--- a/docs/js/commons.min.js
+++ b/docs/js/commons.min.js
@@ -1 +1 @@
-"use strict";!function(){var e={_scheme:"auto",change:{light:"Turn on dark mode",dark:"Turn off dark mode"},buttonsTarget:".theme-switcher",init:function(){this.scheme=this._scheme,this.initSwitchers()},get preferedColorScheme(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"},initSwitchers:function(){var t=this;document.querySelectorAll(this.buttonsTarget).forEach(function(e){e.addEventListener("click",function(){"dark"==t.scheme?t.scheme="light":t.scheme="dark"},!1)})},addButton:function(e){var t=document.createElement(e.tag);t.className=e.class,document.querySelector(e.target).appendChild(t)},set scheme(e){"auto"==e?"dark"==this.preferedColorScheme?this._scheme="dark":this._scheme="light":"dark"!=e&&"light"!=e||(this._scheme=e),this.applyScheme()},get scheme(){return this._scheme},applyScheme:function(){var i=this;document.querySelector("html").setAttribute("data-theme",this.scheme),document.querySelectorAll(this.buttonsTarget).forEach(function(e){var t="dark"==i.scheme?i.change.dark:i.change.light;e.innerHTML=t,e.setAttribute("aria-label",t.replace(/<[^>]*>?/gm,""))})}},t={_state:"closed-on-mobile",toggleLink:document.getElementById("toggle-docs-navigation"),nav:document.querySelector("main > aside > nav"),init:function(){this.onToggleClick()},onToggleClick:function(){var t=this;this.toggleLink.addEventListener("click",function(e){e.preventDefault(),"closed-on-mobile"==t.state?t.state="open":t.state="closed-on-mobile",t.nav.removeAttribute("class"),t.nav.classList.add(t.state)},!1)},get state(){return this._state},set state(e){this._state=e}};e.addButton({tag:"BUTTON",class:"contrast switcher theme-switcher",target:"body"}),e.init(),t.init()}();
\ No newline at end of file
+"use strict";!function(){var e={_scheme:"auto",change:{light:"Turn on dark mode",dark:"Turn off dark mode"},buttonsTarget:".theme-switcher",localStorageKey:"picoPreferedColorScheme",init:function(){this.scheme=this.schemeFromLocalStorage,this.initSwitchers()},get schemeFromLocalStorage(){return void 0!==window.localStorage&&null!==window.localStorage.getItem(this.localStorageKey)?window.localStorage.getItem(this.localStorageKey):this._scheme},get preferedColorScheme(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"},initSwitchers:function(){var t=this;document.querySelectorAll(this.buttonsTarget).forEach(function(e){e.addEventListener("click",function(){"dark"==t.scheme?t.scheme="light":t.scheme="dark"},!1)})},addButton:function(e){var t=document.createElement(e.tag);t.className=e.class,document.querySelector(e.target).appendChild(t)},set scheme(e){"auto"==e?"dark"==this.preferedColorScheme?this._scheme="dark":this._scheme="light":"dark"!=e&&"light"!=e||(this._scheme=e),this.applyScheme(),this.schemeToLocalStorage()},get scheme(){return this._scheme},applyScheme:function(){var o=this;document.querySelector("html").setAttribute("data-theme",this.scheme),document.querySelectorAll(this.buttonsTarget).forEach(function(e){var t="dark"==o.scheme?o.change.dark:o.change.light;e.innerHTML=t,e.setAttribute("aria-label",t.replace(/<[^>]*>?/gm,""))})},schemeToLocalStorage:function(){void 0!==window.localStorage&&window.localStorage.setItem(this.localStorageKey,this.scheme)}},t={_state:"closed-on-mobile",toggleLink:document.getElementById("toggle-docs-navigation"),nav:document.querySelector("main > aside > nav"),init:function(){this.onToggleClick()},onToggleClick:function(){var t=this;this.toggleLink.addEventListener("click",function(e){e.preventDefault(),"closed-on-mobile"==t.state?t.state="open":t.state="closed-on-mobile",t.nav.removeAttribute("class"),t.nav.classList.add(t.state)},!1)},get state(){return this._state},set state(e){this._state=e}};e.addButton({tag:"BUTTON",class:"contrast switcher theme-switcher",target:"body"}),e.init(),t.init()}();
\ No newline at end of file
diff --git a/docs/js/src/theme-switcher.js b/docs/js/src/theme-switcher.js
index bb872cae..d6e8934f 100644
--- a/docs/js/src/theme-switcher.js
+++ b/docs/js/src/theme-switcher.js
@@ -2,7 +2,7 @@
* Theme switcher
*
* Pico.css - https://picocss.com
- * Copyright 2019-2021 - Licensed under MIT
+ * Copyright 2019-2022 - Licensed under MIT
*/
export const themeSwitcher = {
@@ -14,13 +14,24 @@ export const themeSwitcher = {
dark: 'Turn off dark mode',
},
buttonsTarget: '.theme-switcher',
+ localStorageKey: 'picoPreferedColorScheme',
// Init
init() {
- this.scheme = this._scheme;
+ this.scheme = this.schemeFromLocalStorage;
this.initSwitchers();
},
+ // Get color scheme from local storage
+ get schemeFromLocalStorage() {
+ if (typeof window.localStorage !== 'undefined') {
+ if (window.localStorage.getItem(this.localStorageKey) !== null) {
+ return window.localStorage.getItem(this.localStorageKey);
+ }
+ }
+ return this._scheme;
+ },
+
// Prefered color scheme
get preferedColorScheme() {
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
@@ -52,6 +63,7 @@ export const themeSwitcher = {
this._scheme = scheme;
}
this.applyScheme();
+ this.schemeToLocalStorage();
},
// Get scheme
@@ -71,6 +83,13 @@ export const themeSwitcher = {
}
);
},
+
+ // Store scheme to local storage
+ schemeToLocalStorage() {
+ if (typeof window.localStorage !== 'undefined') {
+ window.localStorage.setItem(this.localStorageKey, this.scheme);
+ }
+ },
};
export default themeSwitcher;