fix(slint): search refinements — artist card, history, spinner, hover

- ArtistCard rebuilt 1:1 with Tauri SearchView.artist-card: 160x220
  inside a surface-card container, 12px corners, 120px circular avatar
  with a gradient placeholder, hover swaps to surface-elevated. The
  Follow chip (rectangular per ADR-008) sits below the name when the
  user does not follow the artist.
- Search loading state uses a rotating spinner (Lucide LoaderCircle on
  Slint transform-rotation) matching the Tauri spinner — 1s linear
  infinite. The search header (title + tabs + filter radios) collapses
  while the initial load runs so the chrome does not show through.
- Search history: live debounce + submit now use
  nav::push_or_replace_search, so the latest query is the single Search
  entry in history. Back from an opened album lands on that search.
- Track row backgrounds use the OR-d row-hovered (cell / fav / dl /
  more), so hovering the more button no longer drops the row tint.
- replace_category artists arm re-applies the top-result dedupe, so
  filtering does not bring the duplicate back.

cc
This commit is contained in:
vicrodh committed 2026-05-19 20:37:52 -06:00
1 parent b874661bbf
commit e2c0d812fe
11 files changed
+129 -43

No files matched your search

@@ -63,8 +63,9 @@ component TrackRow inherits Rectangle {
height: 52px;
border-radius: 8px;
// The even-row tint is clearly fainter than the hover tint so the two
// never read as the same state.
background: ta.has-hover
// never read as the same state. Use row-hovered so hovering the cell
// or the more button keeps the row tint.
background: root.row-hovered
? #ffffff16
: (Math.mod(root.index, 2) == 1 ? #ffffff07 : transparent);