{genre.label}
diff --git a/web-player/src/routes/(app)/playlists/+page.svelte b/web-player/src/routes/(app)/playlists/+page.svelte
index 275a01a..a79d558 100644
--- a/web-player/src/routes/(app)/playlists/+page.svelte
+++ b/web-player/src/routes/(app)/playlists/+page.svelte
@@ -2,12 +2,11 @@
import ListMusic from '@lucide/svelte/icons/list-music';
import Page from '$lib/components/ui/Page.svelte';
import PageHeader from '$lib/components/ui/PageHeader.svelte';
- import MediaGrid from '$lib/components/ui/MediaGrid.svelte';
- import PlaylistCard from '$lib/components/ui/PlaylistCard.svelte';
+ import MediaCard from '$lib/components/ui/MediaCard.svelte';
import EmptyState from '$lib/components/ui/EmptyState.svelte';
import Button from '$lib/components/ui/Button.svelte';
import { createPlaylistModal } from '$lib/playlists.svelte';
- import { fmtDurationLong, plural } from '$lib/format';
+ import { fmtDurationLong, plural, playlistMeta } from '$lib/format';
let { data } = $props();
@@ -36,18 +35,20 @@
{#if items.length > 0}
-
+
{#each items as playlist, i (playlist.id)}
-
{/each}
-
+
{:else}
@@ -73,18 +75,20 @@
{#if playlists.length > 0}
-
+
{#each playlists as playlist, i (playlist.id)}
-
{/each}
-
+
{:else}
queueItemForTarget(mixItemTarget(item))),
+ 0
+ );
+ }
@@ -274,9 +283,16 @@
{#if mixes.length > 0}
-
+
{#each mixes as mix, i (mix.id)}
-
+ item.trackId)}
+ onPlay={(event) => playMix(mix, event)}
+ index={i}
+ />
{/each}
{:else}
@@ -351,7 +367,7 @@
{/snippet}
{#if playlists.length > 0}
-
+
{#each playlists as playlist, i (playlist.id)}
goto(`/playlists/${playlist.id}`)}
diff --git a/web-player/src/routes/layout.css b/web-player/src/routes/layout.css
index 0e7ac84..7dc4d29 100644
--- a/web-player/src/routes/layout.css
+++ b/web-player/src/routes/layout.css
@@ -196,6 +196,13 @@
--mf-dock-h: var(--mf-player-h);
}
}
+@utility genre-tile {
+ background: linear-gradient(
+ 140deg,
+ oklch(var(--mf-tile-l) var(--mf-tile-c) var(--tile-hue)),
+ oklch(var(--mf-tile-shade-l) var(--mf-tile-shade-c) var(--tile-hue))
+ );
+}
@layer base {
svg.lucide {