From e97ef3afa677f3a8efb5d6e9259a297fc595201c Mon Sep 17 00:00:00 2001 From: "alexei.dolgolyov" Date: Thu, 12 Mar 2026 11:43:59 +0300 Subject: [PATCH] Add semi-transparent blurred tab icon as background watermark Large SVG icon on the right side of the viewport reflects the active tab, crossfades on tab switch. Also removes overflow:hidden from cards to fix color picker clipping. Co-Authored-By: Claude Opus 4.6 --- .../src/wled_controller/static/css/base.css | 29 ++++++++++++ server/src/wled_controller/static/js/app.js | 3 ++ .../static/js/core/tab-indicator.js | 47 +++++++++++++++++++ .../static/js/features/tabs.js | 3 ++ 4 files changed, 82 insertions(+) create mode 100644 server/src/wled_controller/static/js/core/tab-indicator.js diff --git a/server/src/wled_controller/static/css/base.css b/server/src/wled_controller/static/css/base.css index 8266f51..88ee926 100644 --- a/server/src/wled_controller/static/css/base.css +++ b/server/src/wled_controller/static/css/base.css @@ -102,6 +102,35 @@ body.modal-open { background: transparent; } +/* ── Tab indicator (background watermark) ── */ +#tab-indicator { + position: fixed; + right: -10vw; + top: 50%; + transform: translateY(-50%); + width: 55vw; + height: 55vw; + max-width: 600px; + max-height: 600px; + pointer-events: none; + z-index: -1; + opacity: 0; + filter: blur(6px); + color: var(--primary-color); + transition: opacity 0.5s ease; +} +#tab-indicator svg { + width: 100%; + height: 100%; + opacity: 0.04; +} +#tab-indicator.tab-indicator-visible { + opacity: 1; +} +[data-theme="light"] #tab-indicator svg { + opacity: 0.035; +} + .container { padding: 20px; } diff --git a/server/src/wled_controller/static/js/app.js b/server/src/wled_controller/static/js/app.js index 425a837..05cad71 100644 --- a/server/src/wled_controller/static/js/app.js +++ b/server/src/wled_controller/static/js/app.js @@ -13,6 +13,7 @@ import { t, initLocale, changeLocale } from './core/i18n.js'; // Layer 1.5: visual effects import { initCardGlare } from './core/card-glare.js'; import { initBgAnim, updateBgAnimAccent, updateBgAnimTheme } from './core/bg-anim.js'; +import { initTabIndicator, updateTabIndicator } from './core/tab-indicator.js'; // Layer 2: ui import { @@ -173,6 +174,7 @@ Object.assign(window, { // visual effects (called from inline