fix dark/light theme toggle, adjust text, change images to png screenshots
This commit is contained in:
@@ -1,23 +1,25 @@
|
||||
(function() {
|
||||
const themeToggle = document.getElementById('theme-toggle');
|
||||
const themeIcon = document.getElementById('theme-icon');
|
||||
|
||||
function getStoredTheme() {
|
||||
return localStorage.getItem('picoPreferredColorScheme') || 'auto';
|
||||
}
|
||||
|
||||
|
||||
|
||||
function storeTheme(theme) {
|
||||
localStorage.setItem('picoPreferredColorScheme', theme);
|
||||
}
|
||||
|
||||
function getSystemTheme() {
|
||||
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
||||
|
||||
function getStoredTheme() {
|
||||
return localStorage.getItem('picoPreferredColorScheme');
|
||||
}
|
||||
|
||||
function applyTheme(theme) {
|
||||
document.documentElement.setAttribute('data-theme', theme);
|
||||
|
||||
if (theme === 'dark') {
|
||||
|
||||
function getCurrentTheme() {
|
||||
return document.documentElement.getAttribute('data-theme') ||
|
||||
(window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light');
|
||||
}
|
||||
|
||||
function applyTheme(currentTheme) {
|
||||
const newTheme = currentTheme === 'dark' ? 'light' : 'dark';
|
||||
document.documentElement.setAttribute('data-theme', newTheme);
|
||||
if (newTheme === 'dark') {
|
||||
themeIcon.textContent = '☀️';
|
||||
themeToggle.setAttribute('aria-pressed', 'true');
|
||||
} else {
|
||||
@@ -25,39 +27,28 @@
|
||||
themeToggle.setAttribute('aria-pressed', 'false');
|
||||
}
|
||||
}
|
||||
|
||||
function toggleTheme() {
|
||||
let currentStored = getStoredTheme();
|
||||
if (currentStored === 'auto') {
|
||||
currentStored = getSystemTheme();
|
||||
}
|
||||
if (currentStored === 'auto') {
|
||||
currentStored = 'light';
|
||||
}
|
||||
let nextTheme;
|
||||
|
||||
nextTheme = currentStored === 'light' ? 'dark' : 'light';
|
||||
|
||||
storeTheme(nextTheme);
|
||||
applyTheme(nextTheme);
|
||||
}
|
||||
|
||||
function init() {
|
||||
if (themeToggle) {
|
||||
|
||||
let storedTheme = getStoredTheme();
|
||||
if (storedTheme && storedTheme !== 'auto') {
|
||||
applyTheme(storedTheme);
|
||||
themeToggle.addEventListener('click', () => {
|
||||
const currentTheme = getCurrentTheme();
|
||||
|
||||
applyTheme(currentTheme);
|
||||
storeTheme(currentTheme);
|
||||
});
|
||||
|
||||
function init() {
|
||||
let storedTheme = getStoredTheme() || getCurrentTheme();
|
||||
|
||||
applyTheme(storedTheme);
|
||||
|
||||
themeToggle.addEventListener('click', toggleTheme);
|
||||
|
||||
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
|
||||
// Only apply theme if user hasn't made an explicit choice
|
||||
const storedTheme = getStoredTheme();
|
||||
if (storedTheme === 'auto') {
|
||||
applyTheme();
|
||||
}
|
||||
|
||||
themeToggle.addEventListener('click', toggleTheme);
|
||||
|
||||
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
|
||||
if (getStoredTheme() === 'auto') {
|
||||
applyTheme();
|
||||
}
|
||||
});
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
if (document.readyState !== 'loading') {
|
||||
|
||||
Reference in New Issue
Block a user