fix+feat: input focus ring + queue item polish + toast + button class collision
Polish round 3, plus a class-collision fix. Fix first: the new X-close button class introduced in 4.6.21 was called .btn-icon, which collided with an EXISTING .btn-icon class already used by the top-bar Refresh button (and elsewhere). The second declaration partially overrode the first, leaving Refresh with the wrong hover state (red instead of purple-tinted). Renamed the close-button class to .btn-close and updated the two call sites (btnStreamerBulkRemove + vodFilterClearBtn). Refresh now hovers correctly with a purple tint + a 180deg SVG icon spin on hover. Polish bundle: - Input focus ring globally: every text/search/number/password input + textarea + select picks up a 3px rgba purple ring on focus, with a smooth 180ms transition on border-color, box-shadow, and background. Focus state finally reads as intentional instead of the OS default blue glow. - Queue items: 3px left border that color-codes by status (purple while downloading, green when complete, red on error), faint purple-tinted background when downloading, soft glow on the status dot. The queue list now reads as a status timeline at a glance. - Top-bar Refresh button picks up a 1px border, purple-tint hover background, and the SVG arrow spins on hover for the "refresh" feel. - Header search box (Add streamer): consistent border-radius (6px vs 4px) and the + button gets a hover shadow + active-press micro-bounce. - App toast: gradient background, accent-color left border (purple for info, amber for warn, red for error), animated slide-in from the right instead of vertical, backdrop blur for content legibility over busy backgrounds, and an extra .error variant class. Feels modern instead of like a notice strip from 2010. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
f6905fae82
commit
17b715ab24
+2
-2
@@ -241,7 +241,7 @@
|
||||
|
||||
<div class="section-title" id="streamerSectionTitle" style="display:flex; align-items:center; gap:6px; justify-content:space-between;">
|
||||
<span id="streamerSectionTitleText">Streamer</span>
|
||||
<button id="btnStreamerBulkRemove" class="btn-icon" type="button" onclick="bulkRemoveStreamers()" title="Bulk remove" style="display:none;">x</button>
|
||||
<button id="btnStreamerBulkRemove" class="btn-close" type="button" onclick="bulkRemoveStreamers()" title="Bulk remove" style="display:none;">x</button>
|
||||
</div>
|
||||
<input type="text" id="streamerListFilter" placeholder="Filter..." oninput="onStreamerListFilterChange()" style="display:none; width:calc(100% - 16px); margin:0 8px 8px; background:var(--bg-card); border:1px solid var(--border-soft); border-radius:4px; padding:4px 8px; color:var(--text); font-size:12px;">
|
||||
<div class="streamers" id="streamerList"></div>
|
||||
@@ -283,7 +283,7 @@
|
||||
<div id="streamerProfileHeader" class="streamer-profile-header" style="display:none;"></div>
|
||||
<div class="vod-filter-row" style="display:flex; align-items:center; gap:8px; margin-bottom:12px; flex-wrap:wrap;">
|
||||
<input type="text" id="vodFilterInput" placeholder="Filter VODs..." oninput="onVodFilterInput()" style="flex:1; min-width:180px; background: var(--bg-card); border:1px solid var(--border-soft); border-radius:6px; padding:8px 12px; color: var(--text); font-size:13px;">
|
||||
<button id="vodFilterClearBtn" class="btn-icon" onclick="clearVodFilter()" title="Clear filter" style="display:none;">x</button>
|
||||
<button id="vodFilterClearBtn" class="btn-close" onclick="clearVodFilter()" title="Clear filter" style="display:none;">x</button>
|
||||
<label id="vodSortLabel" for="vodSortSelect" style="color: var(--text-secondary); font-size:12px; margin-left:8px;">Sort:</label>
|
||||
<select id="vodSortSelect" onchange="onVodSortChange()" style="background: var(--bg-card); border:1px solid var(--border-soft); border-radius:6px; padding:7px 10px; color: var(--text); font-size:13px;">
|
||||
<option value="date_desc">Newest first</option>
|
||||
|
||||
Reference in New Issue
Block a user