fix(local-library): hover ring above img, scrollbar height + style match
Three follow-ups from the 2026-05-12 user call:
- Hover ring on AlbumCardLibraryLite was set up as a
`.cover-wrap::after` pseudo with a transparent → accent border,
but the cover `<img>` lives at `z-index: 1` while the pseudo
inherited `auto` z-index — so the img painted on top of the
ring. `z-index: 2` on the pseudo lifts it above the artwork.
- Scrollbar in `.grid-pool` and `.virtual-container` was styled at
10px wide with a non-standard track / thumb / hover palette,
which read as a one-off vs the global `::-webkit-scrollbar`
rule in app.css. Aligned to the app convention: 8px, transparent
track, `var(--bg-tertiary)` thumb with `border-radius: 9999px`,
`var(--text-muted)` on hover. `scrollbar-width: thin` for the
standard property path.
- `.album-sections.virtualized { height: calc(100vh - 280px) }`
over-extended past the NowPlayingBar (104px) once the scrollbar
was forced always visible — the gutter ran to viewport bottom
instead of ending at the player. Bumped to `100vh - 360px` so
the scroll area ends where the player starts.
cc
This commit is contained in:
4 files changed
+33
-17
No files matched your search
@@ -393,23 +393,25 @@
|
||||
position: relative;
|
||||
/* Force the scrollbar visible (some WebKitGTK builds default to
|
||||
overlay scrollbars that only paint on active hover). Standard
|
||||
`scrollbar-*` + pseudo-elements for cross-config safety. */
|
||||
scrollbar-width: auto;
|
||||
scrollbar-color: var(--text-muted) var(--bg-secondary);
|
||||
`scrollbar-*` + pseudo-elements for cross-config safety.
|
||||
Values match the global app.css scrollbar styling. */
|
||||
scrollbar-width: thin;
|
||||
scrollbar-color: var(--bg-tertiary) transparent;
|
||||
}
|
||||
|
||||
.virtual-container::-webkit-scrollbar {
|
||||
width: 10px;
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
}
|
||||
.virtual-container::-webkit-scrollbar-track {
|
||||
background: var(--bg-secondary);
|
||||
background: transparent;
|
||||
}
|
||||
.virtual-container::-webkit-scrollbar-thumb {
|
||||
background: var(--text-muted);
|
||||
border-radius: 5px;
|
||||
background: var(--bg-tertiary);
|
||||
border-radius: 9999px;
|
||||
}
|
||||
.virtual-container::-webkit-scrollbar-thumb:hover {
|
||||
background: var(--text-primary);
|
||||
background: var(--text-muted);
|
||||
}
|
||||
|
||||
.virtual-content {
|
||||
|
||||
@@ -8014,7 +8014,13 @@
|
||||
|
||||
.album-sections.virtualized {
|
||||
flex: 1;
|
||||
height: calc(100vh - 280px); /* Adjust based on header/controls height */
|
||||
/* `100vh - 280` over-extended past the NowPlayingBar (104px tall
|
||||
at the bottom) once we forced the scrollbar always visible —
|
||||
the bar ran to viewport-bottom instead of ending at the player.
|
||||
Bumped subtraction to 360 to clear the player + controls
|
||||
above the grid; the min-height keeps the area reasonable on
|
||||
small windows. */
|
||||
height: calc(100vh - 360px);
|
||||
min-height: 400px;
|
||||
}
|
||||
|
||||
|
||||
@@ -319,6 +319,11 @@
|
||||
border-radius: 8px;
|
||||
pointer-events: none;
|
||||
box-sizing: border-box;
|
||||
/* The cover img sits at z-index: 1 (set below). The pseudo's
|
||||
implicit auto z-index would put it BELOW the img, hiding the
|
||||
border ring under the artwork on hover. z-index: 2 lifts it
|
||||
above the img so the accent border is actually visible. */
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.card:hover .cover-wrap::after {
|
||||
|
||||
@@ -215,23 +215,26 @@
|
||||
/* Belt-and-suspenders: the standard `scrollbar-*` properties +
|
||||
the `::-webkit-scrollbar*` pseudo-elements below. Some
|
||||
WebKitGTK builds honour one but not the other depending on
|
||||
overlay-scrollbar settings, so we set both. */
|
||||
scrollbar-width: auto;
|
||||
scrollbar-color: var(--text-muted) var(--bg-secondary);
|
||||
overlay-scrollbar settings, so we set both. Values match the
|
||||
global app.css scrollbar styling so the bar reads as part of
|
||||
the app and not a one-off. */
|
||||
scrollbar-width: thin;
|
||||
scrollbar-color: var(--bg-tertiary) transparent;
|
||||
}
|
||||
|
||||
.grid-pool::-webkit-scrollbar {
|
||||
width: 10px;
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
}
|
||||
.grid-pool::-webkit-scrollbar-track {
|
||||
background: var(--bg-secondary);
|
||||
background: transparent;
|
||||
}
|
||||
.grid-pool::-webkit-scrollbar-thumb {
|
||||
background: var(--text-muted);
|
||||
border-radius: 5px;
|
||||
background: var(--bg-tertiary);
|
||||
border-radius: 9999px;
|
||||
}
|
||||
.grid-pool::-webkit-scrollbar-thumb:hover {
|
||||
background: var(--text-primary);
|
||||
background: var(--text-muted);
|
||||
}
|
||||
|
||||
.grid-spacer {
|
||||
|
||||
Reference in new issue
Block a user