const demoThemeButtons = [];
const demoThemeStorageKey = 'site-theme';
function normalizeDemoTheme(theme) {
return theme === 'light' ? 'light' : 'dark';
}
function getStoredDemoTheme() {
try {
return localStorage.getItem(demoThemeStorageKey);
} catch (_error) {
return null;
}
}
function storeDemoTheme(theme) {
try {
localStorage.setItem(demoThemeStorageKey, theme);
} catch (_error) {
}
}
function setDemoTheme(theme) {
const nextTheme = normalizeDemoTheme(theme);
document.body.classList.toggle('theme-light', nextTheme === 'light');
document.body.classList.toggle('theme-dark', nextTheme === 'dark');
demoThemeButtons.forEach((button) => {
const active = button.dataset.siteTheme === nextTheme;
button.classList.toggle('is-active', active);
button.setAttribute('aria-pressed', active ? 'true' : 'false');
});
storeDemoTheme(nextTheme);
}
function installDemoThemeToolbar() {
const nav = document.querySelector('.topline');
if (!nav) return;
const toolbar = document.createElement('div');
toolbar.className = 'site-theme-toolbar';
toolbar.setAttribute('aria-label', 'Theme');
toolbar.innerHTML = 'Theme|';
nav.appendChild(toolbar);
demoThemeButtons.push(...toolbar.querySelectorAll('[data-site-theme]'));
demoThemeButtons.forEach((button) => {
button.addEventListener('click', () => setDemoTheme(button.dataset.siteTheme));
});
}
installDemoThemeToolbar();
setDemoTheme(getStoredDemoTheme() || 'dark');