From e9c7e4672c031cb85a473dad64049a177be520ca Mon Sep 17 00:00:00 2001 From: vicrodh <103399283+vicrodh@users.noreply.github.com> Date: Sun, 25 Jan 2026 23:47:33 -0600 Subject: [PATCH] Add release date display to AlbumCard overlay - Add releaseDate prop to AlbumCard component - Display release date below genre in overlay (format: "Jan 25, 2026") - Update all AlbumCard usages across views to pass releaseDate: - ArtistDetailView (all album sections) - HomeView (all featured album sections) - SearchView (search results) - FavoritesView (favorite albums) - LabelView (label albums) - AlbumDetailView ("By the same artist" section) - Add releaseDate to types and adapters - Skip local library view (VirtualizedAlbumList) --- src/lib/adapters/qobuzAdapters.ts | 1 + src/lib/components/AlbumCard.svelte | 39 ++++++++++++++++++- .../components/views/AlbumDetailView.svelte | 2 + .../components/views/ArtistDetailView.svelte | 6 +++ src/lib/components/views/FavoritesView.svelte | 2 + src/lib/components/views/HomeView.svelte | 11 +++++- src/lib/components/views/LabelView.svelte | 1 + src/lib/components/views/SearchView.svelte | 3 ++ src/lib/types/index.ts | 6 +++ src/routes/+page.svelte | 8 ++-- 10 files changed, 73 insertions(+), 6 deletions(-) diff --git a/src/lib/adapters/qobuzAdapters.ts b/src/lib/adapters/qobuzAdapters.ts index ffa8efdcb..444803b70 100644 --- a/src/lib/adapters/qobuzAdapters.ts +++ b/src/lib/adapters/qobuzAdapters.ts @@ -260,6 +260,7 @@ function toArtistAlbumSummary(album: QobuzAlbum): ArtistAlbumSummary { title: album.title, artwork, year: album.release_date_original?.split('-')[0], + releaseDate: album.release_date_original, quality, genre: album.genre?.name || "Unknown genre" }; diff --git a/src/lib/components/AlbumCard.svelte b/src/lib/components/AlbumCard.svelte index be1005ac6..c52baa308 100644 --- a/src/lib/components/AlbumCard.svelte +++ b/src/lib/components/AlbumCard.svelte @@ -15,6 +15,7 @@ title: string; artist: string; genre: string; + releaseDate?: string; quality?: string; size?: 'standard' | 'large'; searchId?: string; @@ -40,6 +41,7 @@ title, artist, genre, + releaseDate, quality, size = 'standard', searchId, @@ -90,6 +92,19 @@ imageError = true; } + function formatReleaseDate(dateStr: string | undefined): string { + if (!dateStr) return ''; + const date = new Date(dateStr); + if (isNaN(date.getTime())) return ''; + return date.toLocaleDateString('en-US', { + month: 'short', + day: 'numeric', + year: 'numeric' + }); + } + + const formattedDate = $derived(formatReleaseDate(releaseDate)); + async function handleToggleFavorite(event: MouseEvent) { event.stopPropagation(); if (!albumId || !favoriteAvailable) return; @@ -184,7 +199,12 @@ {#if hasOverlay}
-
{genre}
+
+ {genre} + {#if formattedDate} + {formattedDate} + {/if} +
{#if showFavoriteButton}