fix(ui): standardize AlbumCard size and grid layout across all views

- Use size="large" (180px) for all AlbumCard instances
- Change album grids from CSS grid with 1fr to flexbox
- Fix LocalLibrary gap issue by using consistent spacing
- Align VirtualizedAlbumList, ArtistDetailView, SearchView,
  FavoritesView, HomeView, and AlbumDetailView
This commit is contained in:
vicrodh committed 2026-01-25 04:51:29 -06:00
1 parent 75060305f3
commit 1407516b34
6 files changed
+34 -16

No files matched your search

@@ -63,8 +63,8 @@
// Constants
const HEADER_HEIGHT = 44; // px
const LIST_ROW_HEIGHT = 76; // px (52px art + padding + gap)
const GRID_ROW_HEIGHT = 270; // px (card height + info + row gap)
const GRID_MIN_CARD_WIDTH = 180; // px
const GRID_ROW_HEIGHT = 290; // px (180px artwork + 8px margin + ~64px info + 24px gap + buffer)
const GRID_MIN_CARD_WIDTH = 180; // px - matches AlbumCard size="large"
const GRID_GAP = 14; // px (horizontal gap between cards)
const BUFFER_ITEMS = 5; // Extra items to render above/below viewport
@@ -312,6 +312,7 @@
title={album.title}
artist={album.artist}
quality={getQualityBadge(album)}
size="large"
showFavorite={true}
favoriteEnabled={false}
onPlay={() => onAlbumPlay(album)}
@@ -464,14 +465,12 @@
/* Album Grid Row (Grid Mode) */
.album-grid-row {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
gap: 0 14px; /* row-gap column-gap - row gap handled by GRID_ROW_HEIGHT */
display: flex;
gap: 14px;
padding: 0;
}
.album-grid-row :global(.album-card) {
width: 100%;
/* No max-width - let cards fill their grid cells to eliminate right gap */
flex-shrink: 0;
}
</style>
@@ -470,6 +470,7 @@
artwork={relatedAlbum.artwork}
title={relatedAlbum.title}
artist={album.artist}
size="large"
quality={relatedAlbum.quality}
onclick={() => onRelatedAlbumClick?.(relatedAlbum.id)}
onPlay={onRelatedAlbumPlay ? () => onRelatedAlbumPlay(relatedAlbum.id) : undefined}
@@ -1273,6 +1273,7 @@
artwork={album.artwork}
title={album.title}
artist={album.year || ''}
size="large"
quality={album.quality}
searchId={`album-${album.id}`}
onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined}
@@ -1333,6 +1334,7 @@
artwork={album.artwork}
title={album.title}
artist={album.year || ''}
size="large"
quality={album.quality}
searchId={`album-${album.id}`}
onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined}
@@ -1392,6 +1394,7 @@
artwork={album.artwork}
title={album.title}
artist={album.year || ''}
size="large"
quality={album.quality}
searchId={`album-${album.id}`}
onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined}
@@ -1451,6 +1454,7 @@
artwork={album.artwork}
title={album.title}
artist={album.year || ''}
size="large"
quality={album.quality}
searchId={`album-${album.id}`}
onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined}
@@ -1510,6 +1514,7 @@
artwork={album.artwork}
title={album.title}
artist={album.year || ''}
size="large"
quality={album.quality}
searchId={`album-${album.id}`}
onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined}
@@ -1632,6 +1637,7 @@
artwork={album.artwork}
title={album.title}
artist={album.year || ''}
size="large"
quality={album.quality}
searchId={`album-${album.id}`}
onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined}
@@ -2351,9 +2357,9 @@
}
.albums-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
gap: 24px;
display: flex;
flex-wrap: wrap;
gap: 24px 14px;
}
.playlists-grid {
@@ -1295,6 +1295,7 @@
artwork={album.image?.large || album.image?.thumbnail || ''}
title={album.title}
artist={album.artist.name}
size="large"
quality={getQualityLabel(album)}
onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined}
onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined}
@@ -1366,6 +1367,7 @@
artwork={album.image?.large || album.image?.thumbnail || ''}
title={album.title}
artist={album.artist.name}
size="large"
quality={getQualityLabel(album)}
onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined}
onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined}
@@ -2032,9 +2034,9 @@
}
.album-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
gap: 24px;
display: flex;
flex-wrap: wrap;
gap: 24px 14px;
}
.album-sections {
+7
View File
@@ -644,6 +644,7 @@
artwork={album.artwork}
title={album.title}
artist={album.artist}
size="large"
quality={album.quality}
onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined}
onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined}
@@ -673,6 +674,7 @@
artwork={album.artwork}
title={album.title}
artist={album.artist}
size="large"
quality={album.quality}
onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined}
onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined}
@@ -702,6 +704,7 @@
artwork={album.artwork}
title={album.title}
artist={album.artist}
size="large"
quality={album.quality}
onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined}
onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined}
@@ -731,6 +734,7 @@
artwork={album.artwork}
title={album.title}
artist={album.artist}
size="large"
quality={album.quality}
onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined}
onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined}
@@ -760,6 +764,7 @@
artwork={album.artwork}
title={album.title}
artist={album.artist}
size="large"
quality={album.quality}
onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined}
onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined}
@@ -789,6 +794,7 @@
artwork={album.artwork}
title={album.title}
artist={album.artist}
size="large"
quality={album.quality}
onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined}
onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined}
@@ -889,6 +895,7 @@
artwork={album.artwork}
title={album.title}
artist={album.artist}
size="large"
quality={album.quality}
onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined}
onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined}
+6 -3
View File
@@ -640,6 +640,7 @@
artwork={getAlbumArtwork(allResults.albums.items[0])}
title={allResults.albums.items[0].title}
artist={allResults.albums.items[0].artist?.name || 'Unknown Artist'}
size="large"
quality={getQualityLabel(allResults.albums.items[0])}
onPlay={onAlbumPlay ? () => onAlbumPlay(allResults.albums.items[0].id) : undefined}
onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(allResults.albums.items[0].id) : undefined}
@@ -775,6 +776,7 @@
artwork={getAlbumArtwork(album)}
title={album.title}
artist={album.artist?.name || 'Unknown Artist'}
size="large"
quality={getQualityLabel(album)}
onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined}
onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined}
@@ -913,6 +915,7 @@
artwork={getAlbumArtwork(album)}
title={album.title}
artist={album.artist?.name || 'Unknown Artist'}
size="large"
quality={getQualityLabel(album)}
onPlay={onAlbumPlay ? () => onAlbumPlay(album.id) : undefined}
onPlayNext={onAlbumPlayNext ? () => onAlbumPlayNext(album.id) : undefined}
@@ -1249,9 +1252,9 @@
}
.albums-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
gap: 24px;
display: flex;
flex-wrap: wrap;
gap: 24px 14px;
}
.tracks-list {