This commit is contained in:
pika 2025-01-04 02:40:01 +01:00
parent 071a4d8a97
commit 4d3ca1c554
39 changed files with 3386 additions and 0 deletions

42
static/js/theme.js Normal file
View file

@ -0,0 +1,42 @@
// Theme handling
function getPreferredTheme() {
if (localStorage.getItem('theme') === 'dark' ||
(!localStorage.getItem('theme') && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
return 'dark';
}
return 'light';
}
function setTheme(theme) {
if (theme === 'dark') {
document.documentElement.classList.add('dark');
} else {
document.documentElement.classList.remove('dark');
}
localStorage.setItem('theme', theme);
}
function toggleTheme() {
const isDark = document.documentElement.classList.contains('dark');
setTheme(isDark ? 'light' : 'dark');
}
// Initialize theme
if (getPreferredTheme() === 'dark') {
setTheme('dark');
}
// Add click event listener
document.addEventListener('DOMContentLoaded', () => {
const darkModeToggle = document.getElementById('darkModeToggle');
if (darkModeToggle) {
darkModeToggle.addEventListener('click', toggleTheme);
}
});
// Watch for system theme changes
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (e) => {
if (!localStorage.getItem('theme')) {
setTheme(e.matches ? 'dark' : 'light');
}
});