Nexus upgrade design and refresh
This commit is contained in:
@@ -28,6 +28,55 @@
|
||||
});
|
||||
})();
|
||||
|
||||
document.documentElement.classList.add('js');
|
||||
|
||||
function readThemePreference(key, fallback) {
|
||||
try {
|
||||
return localStorage.getItem(key) || fallback;
|
||||
} catch (error) {
|
||||
return fallback;
|
||||
}
|
||||
}
|
||||
|
||||
const themeMode = readThemePreference('nexus.theme', document.documentElement.dataset.theme || 'day');
|
||||
const themeAccent = readThemePreference('nexus.accent', document.documentElement.dataset.accent || 'logo');
|
||||
|
||||
function applyTheme(mode, accent) {
|
||||
const normalizedMode = ['day', 'night'].includes(mode) ? mode : 'day';
|
||||
const normalizedAccent = ['logo', 'pink', 'cyan', 'orange', 'green'].includes(accent) ? accent : 'logo';
|
||||
document.documentElement.dataset.theme = normalizedMode;
|
||||
document.documentElement.dataset.accent = normalizedAccent;
|
||||
try {
|
||||
localStorage.setItem('nexus.theme', normalizedMode);
|
||||
localStorage.setItem('nexus.accent', normalizedAccent);
|
||||
} catch (error) {
|
||||
// Ignore blocked storage; the current page still receives the theme.
|
||||
}
|
||||
}
|
||||
|
||||
applyTheme(themeMode, themeAccent);
|
||||
|
||||
const themeModeSelect = document.querySelector('[data-theme-mode]');
|
||||
const themeAccentSelect = document.querySelector('[data-theme-accent]');
|
||||
|
||||
if (themeModeSelect) {
|
||||
themeModeSelect.value = document.documentElement.dataset.theme;
|
||||
themeModeSelect.addEventListener('change', () => {
|
||||
applyTheme(themeModeSelect.value, document.documentElement.dataset.accent);
|
||||
});
|
||||
}
|
||||
|
||||
if (themeAccentSelect) {
|
||||
themeAccentSelect.value = document.documentElement.dataset.accent;
|
||||
themeAccentSelect.addEventListener('change', () => {
|
||||
applyTheme(document.documentElement.dataset.theme, themeAccentSelect.value);
|
||||
});
|
||||
}
|
||||
|
||||
for (const element of document.querySelectorAll('[data-reveal]')) {
|
||||
element.classList.add('reveal');
|
||||
}
|
||||
|
||||
(() => {
|
||||
const openBtn = document.querySelector('[data-debug-open]');
|
||||
const modal = document.getElementById('debug-modal');
|
||||
|
||||
Reference in New Issue
Block a user