.
This commit is contained in:
parent
071a4d8a97
commit
4d3ca1c554
39 changed files with 3386 additions and 0 deletions
42
static/js/theme.js
Normal file
42
static/js/theme.js
Normal 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');
|
||||
}
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue