updates for admin area

This commit is contained in:
Mark Gregory
2026-09-12 21:29:34 +01:00
parent 2964762c4b
commit 8b6d07b8f6
10 changed files with 241 additions and 10 deletions
+26
View File
@@ -28,3 +28,29 @@ const setAdminMenu = (open) => {
document.querySelector('[data-admin-open]')?.addEventListener('click', () => setAdminMenu(true));
document.querySelector('[data-admin-close]')?.addEventListener('click', () => setAdminMenu(false));
adminOverlay?.addEventListener('click', () => setAdminMenu(false));
const adminThemeButtons = document.querySelectorAll('[data-admin-theme]');
const adminThemeMedia = window.matchMedia('(prefers-color-scheme: dark)');
const applyAdminTheme = (preference, persist = true) => {
if (!['light', 'dark', 'system'].includes(preference)) preference = 'system';
const resolved = preference === 'system' ? (adminThemeMedia.matches ? 'dark' : 'light') : preference;
document.documentElement.dataset.adminTheme = resolved;
document.documentElement.dataset.adminThemePreference = preference;
if (persist) localStorage.setItem('beatbook-admin-theme', preference);
adminThemeButtons.forEach((button) => {
const active = button.dataset.adminTheme === preference;
button.classList.toggle('active', active);
button.setAttribute('aria-pressed', String(active));
});
};
if (adminThemeButtons.length) {
applyAdminTheme(localStorage.getItem('beatbook-admin-theme') || 'system', false);
adminThemeButtons.forEach((button) => button.addEventListener('click', () => applyAdminTheme(button.dataset.adminTheme)));
adminThemeMedia.addEventListener?.('change', () => {
if ((localStorage.getItem('beatbook-admin-theme') || 'system') === 'system') applyAdminTheme('system', false);
});
}