diff --git a/web/src/lib/components/AlbumCard.svelte b/web/src/lib/components/AlbumCard.svelte
index ebb2df7e..5575ccb1 100644
--- a/web/src/lib/components/AlbumCard.svelte
+++ b/web/src/lib/components/AlbumCard.svelte
@@ -3,9 +3,9 @@
import { FALLBACK_COVER } from '$lib/media/covers';
import { api } from '$lib/api/client';
import { enqueueTracks, playQueue } from '$lib/player/store.svelte';
- import { Plus, Play } from 'lucide-svelte';
- import LikeButton from './LikeButton.svelte';
+ import { Play } from 'lucide-svelte';
import AlbumMenu from './AlbumMenu.svelte';
+ import CardActionCluster from './CardActionCluster.svelte';
let { album }: { album: AlbumRef } = $props();
@@ -58,24 +58,20 @@
{album.year}
{/if}
-
-
+
+ {#snippet menu()}
+
+ {/snippet}
+
diff --git a/web/src/lib/components/ArtistCard.svelte b/web/src/lib/components/ArtistCard.svelte
index 8a2a4ff5..f1e1003a 100644
--- a/web/src/lib/components/ArtistCard.svelte
+++ b/web/src/lib/components/ArtistCard.svelte
@@ -2,9 +2,9 @@
import type { ArtistRef, TrackRef } from '$lib/api/types';
import { api } from '$lib/api/client';
import { playQueue, enqueueTracks } from '$lib/player/store.svelte';
- import { Disc3, Play, Plus } from 'lucide-svelte';
- import LikeButton from './LikeButton.svelte';
+ import { Disc3, Play } from 'lucide-svelte';
import ArtistMenu from './ArtistMenu.svelte';
+ import CardActionCluster from './CardActionCluster.svelte';
import { listArtistTracks } from '$lib/api/artists';
let { artist }: { artist: ArtistRef } = $props();
@@ -71,21 +71,16 @@
{artist.name}
-
-
-
+
+ {#snippet menu()}
+
+ {/snippet}
+
diff --git a/web/src/lib/components/CardActionCluster.svelte b/web/src/lib/components/CardActionCluster.svelte
new file mode 100644
index 00000000..c92644b2
--- /dev/null
+++ b/web/src/lib/components/CardActionCluster.svelte
@@ -0,0 +1,55 @@
+
+
+
+
+ e.stopPropagation()}>
+
+
+
+
+
+ e.stopPropagation()}>
+ {@render menu()}
+
diff --git a/web/src/lib/components/CompactTrackCard.svelte b/web/src/lib/components/CompactTrackCard.svelte
index a1326945..ed526455 100644
--- a/web/src/lib/components/CompactTrackCard.svelte
+++ b/web/src/lib/components/CompactTrackCard.svelte
@@ -2,9 +2,8 @@
import type { TrackRef } from '$lib/api/types';
import { playQueue, enqueueTrack } from '$lib/player/store.svelte';
import { FALLBACK_COVER, coverUrl } from '$lib/media/covers';
- import { Plus } from 'lucide-svelte';
- import LikeButton from './LikeButton.svelte';
import TrackMenu from './TrackMenu.svelte';
+ import CardActionCluster from './CardActionCluster.svelte';
let {
track,
@@ -52,24 +51,14 @@
{track.title}
{track.artist_name}
-
-
-
- e.stopPropagation()}>
-
-
-
-
-
-
+
+ {#snippet menu()}
+
+ {/snippet}
+