fix(slint): follow chip, playlist card size, track row hover, dedupe

- Follow button on the artist card is no longer a pill — Radius.sm
  rounded rectangle, matching the rest of the app (new ADR-008).
- PlaylistCard sized identically to AlbumCard (220x266) with the same
  220px artwork area; collage and the grid/carousel updated to match.
- Track row play overlay now appears anywhere over the row, not only
  when the pointer is directly over the cell. Slint does not propagate
  has-hover to ancestor TouchAreas, so each row OR-s its own ta with
  every nested TouchArea (play-cell, fav/dl/more) into row-hovered.
- EqualizerBars sit on a fixed 16px baseline so the animation stays
  perfectly centered while the bar heights oscillate.
- TrackPlayCell exposes out hovered so rows can OR it cleanly.
- Search dedupes a top-result artist that is also the first carousel
  entry, removing the redundant duplicate.

cc
This commit is contained in:
vicrodh committed 2026-05-19 19:53:15 -06:00
1 parent 7efb83c075
commit c7129de096
10 files changed
+89 -42

No files matched your search

@@ -52,8 +52,8 @@ export component PlaylistCard inherits Rectangle {
// "queue" | "favorite").
callback media-action(string, string, string);
width: 162px;
height: 210px;
width: 220px;
height: 266px;
property <bool> overlay-on: hover.has-hover
|| fav-btn.hovered || play-btn.hovered || more-btn.hovered;
@@ -64,14 +64,14 @@ export component PlaylistCard inherits Rectangle {
// --- Cover collage + hover overlay -------------------------------
Rectangle {
width: 162px;
height: 162px;
width: 220px;
height: 220px;
border-radius: Radius.sm;
clip: true;
PlaylistCollage {
playlist: root.playlist;
size: 162px;
size: 220px;
}
Rectangle {
@@ -93,8 +93,8 @@ export component PlaylistCard inherits Rectangle {
HorizontalLayout {
x: 0px;
y: 95px;
width: 162px;
y: 132px;
width: 220px;
height: 44px;
alignment: center;
spacing: 12px;
@@ -172,7 +172,7 @@ export component PlaylistCard inherits Rectangle {
// --- Title / subtitle --------------------------------------------
VerticalLayout {
height: 42px;
height: 40px;
spacing: 2px;
padding-left: Spacing.xs;
Text {