diff --git a/web-player/src/lib/components/music/TrackTitleCell.svelte b/web-player/src/lib/components/music/TrackTitleCell.svelte index 1fd0492..4acfabb 100644 --- a/web-player/src/lib/components/music/TrackTitleCell.svelte +++ b/web-player/src/lib/components/music/TrackTitleCell.svelte @@ -21,6 +21,7 @@ title={track.title} artist={track.artist} ownerUserId={track.ownerUserId} + coauthors={track.coauthors} explicit={track.explicit} {active} > diff --git a/web-player/src/lib/components/player/Queue.svelte b/web-player/src/lib/components/player/Queue.svelte index 2339ae3..f506330 100644 --- a/web-player/src/lib/components/player/Queue.svelte +++ b/web-player/src/lib/components/player/Queue.svelte @@ -60,6 +60,7 @@ title={player.current.title} artist={player.current.artist || '—'} ownerUserId={player.current.ownerUserId} + coauthors={player.current.coauthors} explicit={player.current.explicit} active /> @@ -123,6 +124,7 @@ title={track.title} subtitle={track.artist || '—'} subtitleHref={track.ownerUserId} + coauthors={track.coauthors} explicit={track.explicit} trackId={track.id} class="p-2" diff --git a/web-player/src/lib/components/player/TrackInfo.svelte b/web-player/src/lib/components/player/TrackInfo.svelte index 1633b1e..4de3eca 100644 --- a/web-player/src/lib/components/player/TrackInfo.svelte +++ b/web-player/src/lib/components/player/TrackInfo.svelte @@ -42,6 +42,7 @@ diff --git a/web-player/src/lib/components/ui/media/ArtistLink.svelte b/web-player/src/lib/components/ui/media/ArtistLink.svelte index 98922ba..73646fe 100644 --- a/web-player/src/lib/components/ui/media/ArtistLink.svelte +++ b/web-player/src/lib/components/ui/media/ArtistLink.svelte @@ -2,14 +2,30 @@ interface Props { name?: string | null; ownerUserId?: string | null; + coauthors?: { id: string; name: string }[]; class?: string; } - let { name, ownerUserId, class: klass = '' }: Props = $props(); + let { name, ownerUserId, coauthors = [], class: klass = '' }: Props = $props(); +{#snippet person(label: string, id?: string | null)} + {#if id} + e.stopPropagation()} class="hover:underline">{label} + {:else} + {label} + {/if} +{/snippet} + {#if name} - {#if ownerUserId} + {#if coauthors.length > 0} + + {@render person(name, ownerUserId)}{#each coauthors as coauthor (coauthor.id)}, {@render person( + coauthor.name, + coauthor.id + )}{/each} + + {:else if ownerUserId} e.stopPropagation()} diff --git a/web-player/src/lib/components/ui/media/ListRow.svelte b/web-player/src/lib/components/ui/media/ListRow.svelte index 9de4679..6b9a9d2 100644 --- a/web-player/src/lib/components/ui/media/ListRow.svelte +++ b/web-player/src/lib/components/ui/media/ListRow.svelte @@ -13,6 +13,7 @@ title: string; subtitle?: string | null; subtitleHref?: string | null; + coauthors?: { id: string; name: string }[]; explicit?: boolean; trackId?: string; trackIds?: string[]; @@ -35,6 +36,7 @@ title, subtitle, subtitleHref, + coauthors, explicit = false, trackId, trackIds, @@ -60,6 +62,7 @@ {title} artist={subtitle} ownerUserId={subtitleHref} + {coauthors} {trackId} {trackIds} {coverSrc} diff --git a/web-player/src/lib/components/ui/media/MediaIdentity.svelte b/web-player/src/lib/components/ui/media/MediaIdentity.svelte index e3ba699..efe6807 100644 --- a/web-player/src/lib/components/ui/media/MediaIdentity.svelte +++ b/web-player/src/lib/components/ui/media/MediaIdentity.svelte @@ -10,6 +10,7 @@ title: string; artist?: string | null; ownerUserId?: string | null; + coauthors?: { id: string; name: string }[]; coverSrc?: string | null; size?: 'xs' | 'sm' | 'lg'; explicit?: boolean; @@ -26,6 +27,7 @@ title, artist, ownerUserId, + coauthors, coverSrc, size = 'sm', explicit = false, @@ -60,6 +62,6 @@ >{title} - + diff --git a/web-player/src/routes/(app)/+page.svelte b/web-player/src/routes/(app)/+page.svelte index af816e5..ee113f3 100644 --- a/web-player/src/routes/(app)/+page.svelte +++ b/web-player/src/routes/(app)/+page.svelte @@ -117,6 +117,7 @@ title={item.title} subtitle={item.artist} subtitleHref={item.ownerUserId} + coauthors={item.coauthors} explicit={item.explicit} trackId={item.id} class="animate-enter" @@ -182,6 +183,7 @@ title={track.title} subtitle={track.artist} subtitleHref={track.ownerUserId} + coauthors={track.coauthors} explicit={track.explicit} > {#snippet leading()} diff --git a/web-player/src/routes/(app)/explore/SearchResults.svelte b/web-player/src/routes/(app)/explore/SearchResults.svelte index f9e95ac..672383a 100644 --- a/web-player/src/routes/(app)/explore/SearchResults.svelte +++ b/web-player/src/routes/(app)/explore/SearchResults.svelte @@ -67,6 +67,7 @@ title={track.title} subtitle={track.artist} subtitleHref={track.ownerUserId} + coauthors={track.coauthors} explicit={track.explicit} active={player.currentId === track.id} size="lg"