From 629b15529792ae8a12de61004abb728163d4e86b Mon Sep 17 00:00:00 2001 From: Parker Date: Sat, 25 Jan 2025 23:28:04 -0600 Subject: reupload --- js/toggle.js | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 js/toggle.js (limited to 'js') 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(); +}); -- cgit v1.2.3-70-g09d2