From 2bdee5f2154eee26bb71289f71f126105b6f4952 Mon Sep 17 00:00:00 2001 From: Jon Kazama Date: Sat, 13 Jun 2026 20:30:56 +0200 Subject: [PATCH] feat(themes): Theme-Wechsel mit View-Transition-Cross-Fade am Ausloeser --- src/js/settings.js | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/js/settings.js b/src/js/settings.js index b74e276..c829dff 100644 --- a/src/js/settings.js +++ b/src/js/settings.js @@ -23,6 +23,23 @@ function closeThemeModal() { overlay.classList.remove('active'); } +/** + * Wechselt das Theme mit nativem Cross-Fade (View Transitions API). + * Wrap sitzt bewusst hier am User-Ausloeser, NICHT in applyTheme(), + * sonst fadet jeder neue Tab beim Initial-Load (settings.js:101). + * Feature-Detection-Fallback: aeltere Browser (z.B. Firefox < 144) + * schalten instant um, ohne Bruch. + * @param {string} name - Theme-Name + */ +function switchTheme(name) { + const swap = () => applyTheme(name, false); // false: Theme-BG anwenden (kein User-bgUrl-Schutz hier noetig, bgUrl wurde geleert) + if (document.startViewTransition) { + document.startViewTransition(swap); + } else { + swap(); + } +} + /** * Prueft ob eine Background-URL sicher fuer CSS-Einbettung ist. * Erlaubt nur blob: und data:image/ Protokolle (aus File Upload). @@ -129,7 +146,7 @@ function bindSettingsEvents() { settings.theme = name; settings.bgUrl = ''; document.getElementById('bgUrlInput').value = ''; - applyTheme(name, false); + switchTheme(name); await saveSettings(); }); });