aboutsummaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
authorParker <contact@pkrm.dev>2025-01-25 23:28:04 -0600
committerParker <contact@pkrm.dev>2025-01-25 23:28:04 -0600
commit629b15529792ae8a12de61004abb728163d4e86b (patch)
tree6e7418429fe3c81011557e60ead1a9e4e5cbc282 /js
reupload
Diffstat (limited to 'js')
-rw-r--r--js/toggle.js61
1 files changed, 61 insertions, 0 deletions
diff --git a/js/toggle.js b/js/toggle.js
new file mode 100644
index 0000000..4a631ee
--- /dev/null
+++ b/js/toggle.js
@@ -0,0 +1,61 @@
+const moon = document.getElementById('moon');
+const sun = document.getElementById('sun');
+
+if (!document.cookie.includes('preference')) {
+ setPreference(false);
+} else {
+ const preference = document.cookie.split(';').find(cookie => cookie.includes('preference')).split('=')[1];
+ if (preference === 'true') {
+ turnLight();
+ } else {
+ turnDark();
+ }
+
+}
+
+function setPreference(value) {
+ if (typeof value === 'boolean') {
+ const expires = new Date();
+ expires.setFullYear(expires.getFullYear() + 1); // 1 year
+ document.cookie = `preference=${value};expires=${expires.toUTCString()};path=/`;
+ turnLight();
+ }
+}
+
+function turnLight() {
+ document.documentElement.classList.add('light');
+
+ moon.style.opacity = '0';
+ sun.style.opacity = '1';
+
+ setTimeout(() => {
+ moon.style.display = 'none';
+ sun.style.display = 'block';
+ }
+ , 100);
+}
+
+function turnDark() {
+ document.documentElement.classList.remove('light');
+
+ sun.style.opacity = '0';
+ moon.style.opacity = '1';
+
+ setTimeout(() => {
+ sun.style.display = 'none';
+ moon.style.display = 'block';
+ }
+ , 100);
+}
+
+moon.addEventListener('click', () => {
+ document.documentElement.classList.add('light');
+ setPreference(true);
+ turnLight();
+});
+
+sun.addEventListener('click', () => {
+ document.documentElement.classList.remove('light');
+ setPreference(false);
+ turnDark();
+});