From 30ab21c0e54f3b7ad4806d60e996c950e93a24e9 Mon Sep 17 00:00:00 2001 From: Broque Thomas <26755000+Nezreka@users.noreply.github.com> Date: Thu, 23 Apr 2026 15:00:32 -0700 Subject: [PATCH] Global search bar: ambient accent-glow aura under the pill Adds a subtle radial glow at the bottom of the viewport that emanates from the floating search bar, fades outward toward both window corners, and shrinks vertically as it moves away from the bar. Makes the bar easier to spot at a glance without a heavy full-width bar or a chrome strip. - New `.gsearch-aura` fixed element, 260px tall, full width, pointer events off. Radial-gradient with the accent color centered at the bottom middle; colour stops taper 620x230px by default, ramping to 820x280px and brighter when the bar is focused/active. - `_gsUpdateVisibility` hides the aura on /search alongside the bar via a simple `.hidden` class. - Focus handler adds `.active` to the aura in step with the bar; `_gsDeactivate` removes it. z-index 99990 (below the bar at 99998, above most page content). --- webui/index.html | 5 +++++ webui/static/downloads.js | 6 ++++++ webui/static/style.css | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+) diff --git a/webui/index.html b/webui/index.html index 310b8fca..cd2838b1 100644 --- a/webui/index.html +++ b/webui/index.html @@ -7886,6 +7886,11 @@ + +
diff --git a/webui/static/downloads.js b/webui/static/downloads.js index a772d9e5..ec55d38f 100644 --- a/webui/static/downloads.js +++ b/webui/static/downloads.js @@ -5043,6 +5043,8 @@ for (const _src of SOURCE_ORDER) _gsState.configuredSources[_src] = true; input.addEventListener('focus', () => { bar.classList.add('active'); + const aura = document.getElementById('gsearch-aura'); + if (aura) aura.classList.add('active'); _gsState.active = true; const shortcut = document.getElementById('gsearch-shortcut'); if (shortcut) shortcut.style.display = 'none'; @@ -5125,18 +5127,22 @@ for (const _src of SOURCE_ORDER) _gsState.configuredSources[_src] = true; function _gsUpdateVisibility() { const bar = document.getElementById('gsearch-bar'); + const aura = document.getElementById('gsearch-aura'); if (!bar) return; // Hide on the Search page where the unified search already exists. Accept the // legacy 'downloads' id for callers that predate the page rename. const onSearchPage = typeof currentPage !== 'undefined' && (currentPage === 'search' || currentPage === 'downloads'); bar.style.display = onSearchPage ? 'none' : ''; + if (aura) aura.classList.toggle('hidden', onSearchPage); if (onSearchPage && _gsState.active) _gsDeactivate(); } function _gsDeactivate() { const bar = document.getElementById('gsearch-bar'); + const aura = document.getElementById('gsearch-aura'); const shortcut = document.getElementById('gsearch-shortcut'); if (bar) bar.classList.remove('active'); + if (aura) aura.classList.remove('active'); if (shortcut) shortcut.style.display = ''; _gsState.active = false; _gsHideResults(); diff --git a/webui/static/style.css b/webui/static/style.css index b2d70932..c7743e65 100644 --- a/webui/static/style.css +++ b/webui/static/style.css @@ -5336,6 +5336,38 @@ body.helper-mode-active #dashboard-activity-feed:hover { GLOBAL SEARCH BAR — Spotlight-style search from anywhere ================================================================================== */ +/* Ambient glow under the global search bar — a radial gradient that emanates + from the bar's position and tapers out toward the window corners. Pointer + events disabled so it never intercepts clicks; hidden on /search where the + bar itself is hidden. */ +.gsearch-aura { + position: fixed; + bottom: 0; + left: 0; + right: 0; + height: 260px; + pointer-events: none; + z-index: 99990; /* below the bar (99998) but above most page content */ + opacity: 0.55; + transition: opacity 0.4s ease, background 0.4s ease; + background: + radial-gradient(ellipse 620px 230px at 50% 100%, + rgba(var(--accent-rgb), 0.22) 0%, + rgba(var(--accent-rgb), 0.10) 32%, + rgba(var(--accent-rgb), 0.03) 62%, + transparent 85%); +} +.gsearch-aura.hidden { display: none; } +.gsearch-aura.active { + opacity: 1; + background: + radial-gradient(ellipse 820px 280px at 50% 100%, + rgba(var(--accent-rgb), 0.40) 0%, + rgba(var(--accent-rgb), 0.18) 28%, + rgba(var(--accent-rgb), 0.05) 58%, + transparent 85%); +} + .gsearch-bar { position: fixed; bottom: 24px;