Skip to content

Commit 0f20dff

Browse files
committed
Adding dark mode support
1 parent 6f72eee commit 0f20dff

File tree

4 files changed

+62
-0
lines changed

4 files changed

+62
-0
lines changed

docs.html

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
<li class="nav-item"><a class="nav-link scroll" href="./index.html#usage">Usage</a></li>
2626
<li class="nav-item"><a class="nav-link scroll" href="./index.html#photo-guide">Photo Guidelines</a></li>
2727
<li class="nav-item"><a class="nav-link scroll" href="#docs">Documentation</a></li>
28+
<li class="nav-item "><btn class="nav-link scroll toggle-theme"></btn>
2829
</ul>
2930
</div> <!-- .collapse -->
3031
</div> <!-- .container -->

index.html

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
<li class="nav-item"><a class="nav-link scroll" href="#usage">Usage</a></li>
2626
<li class="nav-item"><a class="nav-link scroll" href="#photo-guide">Photo Guidelines</a></li>
2727
<li class="nav-item"><a class="nav-link scroll" href="./docs.html#docs">Documentation</a></li>
28+
<li class="nav-item "><btn href="#" class="nav-link scroll toggle-theme"></btn>
2829
</ul>
2930
</div> <!-- .collapse -->
3031
</div> <!-- .container -->

js/index.js

+36
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,39 @@ $(document).ready(function() {
3030
$(".navbar-collapse").collapse('hide');
3131
});
3232
})
33+
34+
// Dark mode toggle
35+
36+
const defaultMode = "light-mode"; // if prefer scheme is not available
37+
const body = document.querySelector("body");
38+
39+
const mode = checkSavedMode() ? checkSavedMode() : detectColorMode();
40+
body.classList.add(mode);
41+
const toggle = document.querySelector(".toggle-theme");
42+
toggle.addEventListener("click", toggleClass);
43+
44+
function checkSavedMode() {
45+
return localStorage.getItem("color-mode");
46+
}
47+
function saveColorMode(value) {
48+
localStorage.setItem("color-mode", value);
49+
}
50+
51+
function detectColorMode() {
52+
if ( window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches) {
53+
return "dark-mode";
54+
} else if (window.matchMedia) {
55+
return "light-mode";
56+
}
57+
return defaultMode;
58+
}
59+
60+
61+
function toggleClass() {
62+
// toggle body class selector
63+
$('body').toggleClass('light-mode dark-mode')
64+
65+
body.classList.contains("dark-mode")
66+
? saveColorMode("dark-mode")
67+
: saveColorMode("light-mode");
68+
}

style.css

+24
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,30 @@ body {
3030
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Lato, Helvetica, Arial, sans-serif;
3131
}
3232

33+
.toggle-theme {
34+
color: #f1f1f1;
35+
}
36+
37+
.dark-mode .toggle-theme::after {
38+
content: "☽";
39+
}
40+
41+
.light-mode .toggle-theme::after {
42+
content: "☀";
43+
44+
}
45+
46+
.dark-mode {
47+
background-color: #212529;
48+
color: #fff !important;
49+
50+
#docs h2>a,
51+
#docs h3>a {
52+
color: #fff !important;
53+
}
54+
}
55+
56+
3357
.bg-primary {
3458
background-color: #006699 !important;
3559
}

0 commit comments

Comments
 (0)