feat(slint): favorites Playlists view — sub-tabs + rich card grid
Swap the passive single-cover FavPlaylistCard tile for the shared discover/PlaylistCard (collage + hover overlay play/fav/more + context menu) over playlists-visible, and add the Library/Following underline sub-tab selector (no pills, ADR-008) above the grid with per-sub-tab and search-empty states. Extend the shared PlaylistCard with a body-opens prop so a favorites card-body click opens the playlist while the play button plays (discover/search keep body=play, unchanged). Add the Playlists search box to the row-2 toolbar. Remove the dead FavoritePlaylistItem struct + playlists field + FavPlaylistCard. cc
This commit is contained in:
3 files changed
+114
-75
No files matched your search
@@ -49,8 +49,12 @@ component OverlayButton inherits Rectangle {
|
||||
export component PlaylistCard inherits Rectangle {
|
||||
in property <SearchPlaylistItem> playlist;
|
||||
// kind ("playlist"), playlist id, action ("play" | "play-next" |
|
||||
// "queue" | "favorite").
|
||||
// "queue" | "favorite" | "open").
|
||||
callback media-action(string, string, string);
|
||||
// When true, a click on the card BODY opens the playlist ("open")
|
||||
// instead of playing it — the Favorites grid wants body=open, the play
|
||||
// button=play. Discover/Search leave it false (body=play), unchanged.
|
||||
in property <bool> body-opens: false;
|
||||
|
||||
width: 220px;
|
||||
height: 266px;
|
||||
@@ -87,7 +91,7 @@ export component PlaylistCard inherits Rectangle {
|
||||
height: 100%;
|
||||
mouse-cursor: pointer;
|
||||
clicked => {
|
||||
root.media-action("playlist", root.playlist.id, "play");
|
||||
root.media-action("playlist", root.playlist.id, root.body-opens ? "open" : "play");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user