summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
Diffstat (limited to 'js')
-rw-r--r--js/iife.js10
-rw-r--r--js/setTheme.js29
-rw-r--r--js/toggleTheme.js7
3 files changed, 46 insertions, 0 deletions
diff --git a/js/iife.js b/js/iife.js
new file mode 100644
index 0000000..43018d5
--- /dev/null
+++ b/js/iife.js
@@ -0,0 +1,10 @@
+(function () {
+ /*
+ We set cookies by default, but we do NOT need consent for these as they
+ are necessary and as per <https://gdpr.eu/cookies>: "To comply with the
+ regulations governing cookies under the GDPR and the ePrivacy Directive
+ you must: ... Receive users’ consent before you use any cookies
+ __except__ strictly necessary cookies..."
+ */
+ setTheme(localStorage.getItem("theme"));
+})();
diff --git a/js/setTheme.js b/js/setTheme.js
new file mode 100644
index 0000000..41680b9
--- /dev/null
+++ b/js/setTheme.js
@@ -0,0 +1,29 @@
+function setTheme(theme) {
+ localStorage.setItem("theme",theme);
+ var root = document.querySelector(":root");
+ var rootstyle = getComputedStyle(root);
+ const black = rootstyle.getPropertyValue("--black");
+ const darkgrey = rootstyle.getPropertyValue("--darkgrey");
+ const lightgrey = rootstyle.getPropertyValue("--lightgrey");
+ const white = rootstyle.getPropertyValue("--white");
+ var bodyColour;
+ var backgroundColour;
+ var foregroundColour;
+ if (theme === "dark") {
+ bodyColour = black;
+ backgroundColour = darkgrey;
+ foregroundColour = white;
+ }
+ else if (theme === "light") {
+ bodyColour = lightgrey;
+ backgroundColour = white;
+ foregroundColour = black;
+ }
+ else {
+ setTheme("dark");
+ return;
+ }
+ root.style.setProperty("--bodyColour", bodyColour);
+ root.style.setProperty("--backgroundColour",backgroundColour);
+ root.style.setProperty("--foregroundColour",foregroundColour);
+}
diff --git a/js/toggleTheme.js b/js/toggleTheme.js
new file mode 100644
index 0000000..cfc1394
--- /dev/null
+++ b/js/toggleTheme.js
@@ -0,0 +1,7 @@
+function toggleTheme() {
+ if (localStorage.getItem("theme") === "light") {
+ setTheme("dark");
+ return;
+ }
+ setTheme("light");
+}