Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 5ea5b52

Browse files
committed
Add persistent theme buttons.
1 parent aebed1a commit 5ea5b52

2 files changed

Lines changed: 43 additions & 0 deletions

File tree

_nav.adoc

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,48 @@
77
</div>
88
<div class="navbar-menu">
99
<div class="navbar-end">
10+
<div class="buttons are-small has-addons mr-4">
11+
<button class="button is-selected is-success" data-theme-system><span class="theme-icon">☺</span></button>
12+
<button class="button" data-theme-light><span class="theme-icon">☀</span></button>
13+
<button class="button" data-theme-dark><span class="theme-icon">☾</span></button>
14+
</div>
1015
</div>
1116
</div>
1217
</nav>
1318
</div>
19+
<script type="text/javascript">
20+
//<![CDATA[
21+
const dt_system = document.querySelector("[data-theme-system]");
22+
const dt_light = document.querySelector("[data-theme-light]");
23+
const dt_dark = document.querySelector("[data-theme-dark]");
24+
const dt_on = "button is-selected is-success";
25+
const dt_off = "button";
26+
const dt_theme = localStorage.getItem("theme");
27+
dt_system.setAttribute("class", dt_theme === null ? dt_on : dt_off);
28+
dt_light.setAttribute("class", dt_theme === "light" ? dt_on : dt_off);
29+
dt_dark.setAttribute("class", dt_theme === "dark" ? dt_on : dt_off);
30+
document.querySelector("html").setAttribute("data-theme", dt_theme);
31+
dt_system.addEventListener("click", () => {
32+
document.querySelector("html").setAttribute("data-theme", null);
33+
dt_system.setAttribute("class", dt_on);
34+
dt_light.setAttribute("class", dt_off);
35+
dt_dark.setAttribute("class", dt_off);
36+
localStorage.setItem("theme", null);
37+
});
38+
dt_light.addEventListener("click", () => {
39+
document.querySelector("html").setAttribute("data-theme", "light");
40+
dt_system.setAttribute("class", dt_off);
41+
dt_light.setAttribute("class", dt_on);
42+
dt_dark.setAttribute("class", dt_off);
43+
localStorage.setItem("theme", "light");
44+
});
45+
dt_dark.addEventListener("click", () => {
46+
document.querySelector("html").setAttribute("data-theme", "dark");
47+
dt_system.setAttribute("class", dt_off);
48+
dt_light.setAttribute("class", dt_off);
49+
dt_dark.setAttribute("class", dt_on);
50+
localStorage.setItem("theme", "dark");
51+
});
52+
//]]>
53+
</script>
1454
++++

tweaks.css

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,6 @@
1616
font-weight: 900 !important;
1717
font-style: normal !important;
1818
}
19+
.theme-icon {
20+
font-size: var(--bulma-size-normal);
21+
}

0 commit comments

Comments
 (0)