-
Notifications
You must be signed in to change notification settings - Fork 1
/
theme.js
30 lines (25 loc) · 986 Bytes
/
theme.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function setTheme() {
const savedTheme = localStorage.getItem("selectedTheme");
const body = document.body;
body.classList.remove(
"default", "light", "grain", "zip", "dawn", "black", "white", "rose",
"teal", "ice", "glacier", "hamtter", "midnight", "mastodon",
"pleroma", "twitter", "classic", "first", "eagles", "mint"
);
if (savedTheme) {
body.classList.add(savedTheme);
const computedStyle = getComputedStyle(body);
let navbarColor = computedStyle.getPropertyValue("--navbar");
if (!navbarColor || !isValidColor(navbarColor)) { //thanks chargpt
navbarColor = computedStyle.getPropertyValue("--webkit-nav");
}
document.querySelector('meta[name="theme-color"]').setAttribute('content', navbarColor);
console.log(navbarColor);
}
}
function isValidColor(str) {
const s = new Option().style;
s.color = str;
return s.color !== '';
}
document.addEventListener("DOMContentLoaded", setTheme);