updates for admin area
This commit is contained in:
@@ -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);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user