17 lines
757 B
JavaScript
17 lines
757 B
JavaScript
(function () {
|
|
var allowed = { light: true, dark: true, system: true };
|
|
var cookieMatch = document.cookie.match(/(?:^|; )hpc-theme=([^;]+)/);
|
|
var cookieValue = cookieMatch ? decodeURIComponent(cookieMatch[1]) : null;
|
|
var stored = null;
|
|
try {
|
|
stored = localStorage.getItem('hpc.theme.preference');
|
|
} catch (_) {}
|
|
var preference = allowed[cookieValue] ? cookieValue : allowed[stored] ? stored : 'system';
|
|
var dark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
|
|
var resolved = preference === 'system' ? (dark ? 'dark' : 'light') : preference;
|
|
var root = document.documentElement;
|
|
root.dataset.themePreference = preference;
|
|
root.dataset.theme = resolved;
|
|
root.style.colorScheme = resolved;
|
|
})();
|