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"