pagetop/extensions/pagetop-bootsier/assets/bootsier.theme.js
Manuel Cillero 11c2bdffb1 🔥 (bootsier): Elimina AdminLTE
Retira AdminLTE 4 de Bootsier: CSS/JS, `bs::sidebar`, `BootsierRegions`
y el shell propio de `CoreTemplates::Admin`. Sólo quedaba un sidebar de
5 secciones ya alcanzables desde el dashboard, las páginas de sección y
el breadcrumb de `AdminFrame`.
2026-09-22 21:34:16 +02:00

54 lines
2.2 KiB
JavaScript

(function () {
'use strict';
// Color mode selector (light / dark / auto).
var STORAGE_KEY = 'bootsier-theme';
var getStored = function () { return localStorage.getItem(STORAGE_KEY); };
var setStored = function (theme) { localStorage.setItem(STORAGE_KEY, theme); };
var prefersDark = function () {
return window.matchMedia('(prefers-color-scheme: dark)').matches;
};
var setTheme = function (theme) {
var resolved = (theme === 'auto') ? (prefersDark() ? 'dark' : 'light') : theme;
document.documentElement.setAttribute('data-bs-theme', resolved);
};
var showActiveTheme = function (theme) {
document.querySelectorAll('[data-bs-theme-value]').forEach(function (el) {
el.classList.remove('active');
el.setAttribute('aria-pressed', 'false');
var check = el.querySelector('.bi-check-lg');
if (check) { check.classList.add('d-none'); }
});
var active = document.querySelector('[data-bs-theme-value="' + theme + '"]');
if (active) {
active.classList.add('active');
active.setAttribute('aria-pressed', 'true');
var check = active.querySelector('.bi-check-lg');
if (check) { check.classList.remove('d-none'); }
}
document.querySelectorAll('[data-bs-theme-icon]').forEach(function (icon) {
icon.classList.toggle('d-none', icon.dataset.bsThemeIcon !== theme);
});
};
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', function () {
var stored = getStored();
if (!stored || stored === 'auto') { setTheme('auto'); }
});
document.addEventListener('DOMContentLoaded', function () {
var theme = getStored() || 'auto';
setTheme(theme);
showActiveTheme(theme);
document.querySelectorAll('[data-bs-theme-value]').forEach(function (toggle) {
toggle.addEventListener('click', function () {
var t = toggle.getAttribute('data-bs-theme-value');
setStored(t);
setTheme(t);
showActiveTheme(t);
});
});
});
}());