mirror of
https://github.com/willmiao/ComfyUI-Lora-Manager.git
synced 2026-03-21 21:22:11 -03:00
feat: enhance theme toggle functionality with auto theme support and icon updates. Fix #243
This commit is contained in:
@@ -115,7 +115,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.theme-toggle .light-icon,
|
.theme-toggle .light-icon,
|
||||||
.theme-toggle .dark-icon {
|
.theme-toggle .dark-icon,
|
||||||
|
.theme-toggle .auto-icon {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
@@ -124,15 +125,38 @@
|
|||||||
transition: opacity 0.3s ease;
|
transition: opacity 0.3s ease;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Default state shows dark icon */
|
||||||
.theme-toggle .dark-icon {
|
.theme-toggle .dark-icon {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
[data-theme="light"] .theme-toggle .light-icon {
|
/* Light theme shows light icon */
|
||||||
|
.theme-toggle.theme-light .light-icon {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
[data-theme="light"] .theme-toggle .dark-icon {
|
.theme-toggle.theme-light .dark-icon,
|
||||||
|
.theme-toggle.theme-light .auto-icon {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Dark theme shows dark icon */
|
||||||
|
.theme-toggle.theme-dark .dark-icon {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-toggle.theme-dark .light-icon,
|
||||||
|
.theme-toggle.theme-dark .auto-icon {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Auto theme shows auto icon */
|
||||||
|
.theme-toggle.theme-auto .auto-icon {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-toggle.theme-auto .light-icon,
|
||||||
|
.theme-toggle.theme-auto .dark-icon {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -46,9 +46,21 @@ export class HeaderManager {
|
|||||||
// Handle theme toggle
|
// Handle theme toggle
|
||||||
const themeToggle = document.querySelector('.theme-toggle');
|
const themeToggle = document.querySelector('.theme-toggle');
|
||||||
if (themeToggle) {
|
if (themeToggle) {
|
||||||
|
// Set initial state based on current theme
|
||||||
|
const currentTheme = localStorage.getItem('lm_theme') || 'auto';
|
||||||
|
themeToggle.classList.add(`theme-${currentTheme}`);
|
||||||
|
|
||||||
themeToggle.addEventListener('click', () => {
|
themeToggle.addEventListener('click', () => {
|
||||||
if (typeof toggleTheme === 'function') {
|
if (typeof toggleTheme === 'function') {
|
||||||
toggleTheme();
|
const newTheme = toggleTheme();
|
||||||
|
// Update tooltip based on next toggle action
|
||||||
|
if (newTheme === 'light') {
|
||||||
|
themeToggle.title = "Switch to dark theme";
|
||||||
|
} else if (newTheme === 'dark') {
|
||||||
|
themeToggle.title = "Switch to auto theme";
|
||||||
|
} else {
|
||||||
|
themeToggle.title = "Switch to light theme";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -118,10 +118,13 @@ export function toggleTheme() {
|
|||||||
const currentTheme = getStorageItem('theme') || 'auto';
|
const currentTheme = getStorageItem('theme') || 'auto';
|
||||||
let newTheme;
|
let newTheme;
|
||||||
|
|
||||||
if (currentTheme === 'dark') {
|
// Cycle through themes: light → dark → auto → light
|
||||||
newTheme = 'light';
|
if (currentTheme === 'light') {
|
||||||
} else {
|
|
||||||
newTheme = 'dark';
|
newTheme = 'dark';
|
||||||
|
} else if (currentTheme === 'dark') {
|
||||||
|
newTheme = 'auto';
|
||||||
|
} else {
|
||||||
|
newTheme = 'light';
|
||||||
}
|
}
|
||||||
|
|
||||||
setStorageItem('theme', newTheme);
|
setStorageItem('theme', newTheme);
|
||||||
@@ -151,6 +154,21 @@ function applyTheme(theme) {
|
|||||||
htmlElement.setAttribute('data-theme', 'light');
|
htmlElement.setAttribute('data-theme', 'light');
|
||||||
document.body.dataset.theme = 'light';
|
document.body.dataset.theme = 'light';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Update the theme-toggle icon state
|
||||||
|
updateThemeToggleIcons(theme);
|
||||||
|
}
|
||||||
|
|
||||||
|
// New function to update theme toggle icons
|
||||||
|
function updateThemeToggleIcons(theme) {
|
||||||
|
const themeToggle = document.querySelector('.theme-toggle');
|
||||||
|
if (!themeToggle) return;
|
||||||
|
|
||||||
|
// Remove any existing active classes
|
||||||
|
themeToggle.classList.remove('theme-light', 'theme-dark', 'theme-auto');
|
||||||
|
|
||||||
|
// Add the appropriate class based on current theme
|
||||||
|
themeToggle.classList.add(`theme-${theme}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function toggleFolder(tag) {
|
export function toggleFolder(tag) {
|
||||||
|
|||||||
@@ -39,6 +39,7 @@
|
|||||||
<div class="theme-toggle" title="Toggle theme">
|
<div class="theme-toggle" title="Toggle theme">
|
||||||
<i class="fas fa-moon dark-icon"></i>
|
<i class="fas fa-moon dark-icon"></i>
|
||||||
<i class="fas fa-sun light-icon"></i>
|
<i class="fas fa-sun light-icon"></i>
|
||||||
|
<i class="fas fa-adjust auto-icon"></i>
|
||||||
</div>
|
</div>
|
||||||
<div class="settings-toggle" title="Settings">
|
<div class="settings-toggle" title="Settings">
|
||||||
<i class="fas fa-cog"></i>
|
<i class="fas fa-cog"></i>
|
||||||
|
|||||||
Reference in New Issue
Block a user