44 lines
1.1 KiB
JavaScript
44 lines
1.1 KiB
JavaScript
/**
|
|
* Theme management functionality
|
|
*/
|
|
export class ThemeManager {
|
|
constructor() {
|
|
this.init();
|
|
}
|
|
|
|
/**
|
|
* Initialize theme system and load saved preference
|
|
*/
|
|
init() {
|
|
const savedTheme = localStorage.getItem('theme');
|
|
const html = document.documentElement;
|
|
const themeToggle = document.getElementById('themeToggle');
|
|
|
|
if (savedTheme === 'light') {
|
|
html.setAttribute('data-theme', 'light');
|
|
if (themeToggle) themeToggle.textContent = '🌙';
|
|
} else {
|
|
html.removeAttribute('data-theme');
|
|
if (themeToggle) themeToggle.textContent = '☀️';
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Toggle between light and dark themes
|
|
*/
|
|
toggle() {
|
|
const html = document.documentElement;
|
|
const themeToggle = document.getElementById('themeToggle');
|
|
|
|
if (html.getAttribute('data-theme') === 'light') {
|
|
html.removeAttribute('data-theme');
|
|
if (themeToggle) themeToggle.textContent = '☀️';
|
|
localStorage.setItem('theme', 'dark');
|
|
} else {
|
|
html.setAttribute('data-theme', 'light');
|
|
if (themeToggle) themeToggle.textContent = '🌙';
|
|
localStorage.setItem('theme', 'light');
|
|
}
|
|
}
|
|
}
|