db3558872e
Modernisiert die öffentliche Oberfläche mit Inter, Dark Mode und Live-Suche, ergänzt KI-gestützte Entwürfe im Admin mit Nachweis-Uploads und dokumentiert Daphne/Nginx für den Serverbetrieb. Co-authored-by: Cursor <cursoragent@cursor.com>
36 lines
1.1 KiB
JavaScript
36 lines
1.1 KiB
JavaScript
(function () {
|
|
const storageKey = 'fk-theme';
|
|
|
|
function applyTheme(theme) {
|
|
document.documentElement.setAttribute('data-theme', theme);
|
|
const sun = document.querySelector('.fk-icon-sun');
|
|
const moon = document.querySelector('.fk-icon-moon');
|
|
if (sun && moon) {
|
|
sun.hidden = theme === 'dark';
|
|
moon.hidden = theme !== 'dark';
|
|
}
|
|
}
|
|
|
|
function preferredTheme() {
|
|
const stored = localStorage.getItem(storageKey);
|
|
if (stored === 'light' || stored === 'dark') {
|
|
return stored;
|
|
}
|
|
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
|
}
|
|
|
|
applyTheme(preferredTheme());
|
|
|
|
document.addEventListener('DOMContentLoaded', function () {
|
|
const toggle = document.getElementById('fk-theme-toggle');
|
|
if (!toggle) {
|
|
return;
|
|
}
|
|
toggle.addEventListener('click', function () {
|
|
const next = document.documentElement.getAttribute('data-theme') === 'dark' ? 'light' : 'dark';
|
|
localStorage.setItem(storageKey, next);
|
|
applyTheme(next);
|
|
});
|
|
});
|
|
})();
|