chore: bump version to 1.7.22 and update CHANGELOG, tests and docs
Docs Check / Markdown lint (push) Successful in 1m14s
Build and Push Docker Image / build (push) Successful in 1m52s
Licence Check / Licence compatibility and copyright header verification (push) Successful in 1m55s
CI / Security audit (push) Successful in 2m25s
Docs Check / Mermaid diagram parse check (push) Successful in 3m6s
CI / Swagger Validation & Coverage (push) Successful in 3m22s
CI / Tests & coverage (push) Successful in 3m45s

This commit is contained in:
2026-05-27 17:42:41 +01:00
parent d2ac7731ca
commit 95bd703b26
16 changed files with 664 additions and 65 deletions
+29 -10
View File
@@ -4,24 +4,43 @@ import { getTheme, saveTheme } from '../utils/storage.js';
// Apply saved theme immediately on load
(function applyTheme() {
const theme = getTheme();
if (theme) {
document.documentElement.setAttribute('data-theme', theme);
}
const theme = getTheme() || 'light';
document.documentElement.setAttribute('data-theme', theme);
})();
export function initThemeSwitcher() {
const themeToggle = document.getElementById('theme-toggle');
if (!themeToggle) return;
const themeButtons = document.querySelectorAll('.theme-btn');
const currentTheme = getTheme() || 'light';
themeToggle.addEventListener('click', () => {
const currentTheme = getTheme();
const newTheme = currentTheme === 'dark' ? 'light' : 'dark';
setTheme(newTheme);
// Set initial active state on buttons
themeButtons.forEach(btn => {
if (btn.getAttribute('data-theme') === currentTheme) {
btn.classList.add('active');
} else {
btn.classList.remove('active');
}
btn.addEventListener('click', () => {
const theme = btn.getAttribute('data-theme');
if (theme) {
setTheme(theme);
}
});
});
}
export function setTheme(theme) {
document.documentElement.setAttribute('data-theme', theme);
saveTheme(theme);
// Sync button active classes if elements are present on the page
const themeButtons = document.querySelectorAll('.theme-btn');
themeButtons.forEach(btn => {
if (btn.getAttribute('data-theme') === theme) {
btn.classList.add('active');
} else {
btn.classList.remove('active');
}
});
}