diff options
Diffstat (limited to 'js')
-rw-r--r-- | js/iife.js | 10 | ||||
-rw-r--r-- | js/setTheme.js | 29 | ||||
-rw-r--r-- | js/toggleTheme.js | 7 |
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"); +} |