summaryrefslogtreecommitdiff
path: root/js/theme.ts
blob: 36959bc10a13562b68654e1bac1dadf26753c39e (plain) (blame)
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
const DEFAULT_THEME = "dark";

function toggleTheme() {
	let bodies = document.getElementsByTagName("body");

	if (!bodies) {
		throw new Error("unable to find body");
	}

	let theme = "light";

	if (bodies[0x0].classList.contains("light")) {
		theme = "dark";
	}

	console.log("setting theme to `" + theme + "`");

	bodies[0x0].classList.toggle("light");
	localStorage.setItem("theme", theme);
}

function loadTheme() {
	let theme = localStorage.getItem("theme");

	if (!theme) {
		console.log("theme not set, using default");
		theme = DEFAULT_THEME;
	}

	switch (theme) {
	case "dark":
		// We assume this theme in our stylesheets.
		break;

	case "light":
		let bodies = document.getElementsByTagName("body");

		if (!bodies) {
			throw new Error("unable to find body");
		}

		bodies[0x0].classList.add("light");
		break;

	default:
		console.log(`invalid theme \"${theme}\", using default`);
		//theme = DEFAULT_THEME; // Redundant now.

		break;
	}
}