aboutsummaryrefslogtreecommitdiff
path: root/static/scripts/theme.js
diff options
context:
space:
mode:
Diffstat (limited to 'static/scripts/theme.js')
-rw-r--r--static/scripts/theme.js37
1 files changed, 37 insertions, 0 deletions
diff --git a/static/scripts/theme.js b/static/scripts/theme.js
new file mode 100644
index 0000000..0ba6625
--- /dev/null
+++ b/static/scripts/theme.js
@@ -0,0 +1,37 @@
+document.addEventListener('DOMContentLoaded', function () {
+ const savedTheme = localStorage.getItem('theme') || 'light';
+ document.documentElement.setAttribute('data-theme', savedTheme);
+
+ const preferencesForm = document.getElementById('preferences-form');
+ if (preferencesForm) {
+ const themeRadios = document.querySelectorAll('input[name="theme"]');
+ themeRadios.forEach(radio => {
+ if (radio.value === savedTheme) {
+ radio.checked = true;
+ }
+ });
+
+ preferencesForm.addEventListener('submit', function (e) {
+ e.preventDefault();
+ const selectedTheme = document.querySelector('input[name="theme"]:checked').value;
+ localStorage.setItem('theme', selectedTheme);
+ document.documentElement.setAttribute('data-theme', selectedTheme);
+
+ let successMsg = document.querySelector('.success-message');
+ if (successMsg) {
+ successMsg.remove();
+ }
+
+ const message = document.createElement('div');
+ message.className = 'success-message';
+ message.textContent = 'Preferences saved successfully!';
+ preferencesForm.parentNode.insertBefore(message, preferencesForm);
+
+ setTimeout(() => {
+ if (message.parentNode) {
+ message.remove();
+ }
+ }, 3000);
+ });
+ }
+}); \ No newline at end of file