{#if catalog.artistLoading && !page} {#if resolver.active}

● {resolver.label} — finding the best source…

{:else if resolver.error}

{resolver.error}

{/if}

Loading artist…

{:else if !page} {#if resolver.error}

{resolver.error}

{/if}

{catalog.error || "Artist not found."}

{:else}
{#if page.artist.name}

{page.artist.name}

{:else}
{/if} {#if logo.mode === "mask"}
{:else if logo.mode === "color"}
{/if}
{#if popularTracks.length}
{#if !page.art_preview}
{#if releasedCount > 0} {releasedCount} releases {/if} {#if page.artist.fans} {fmtFans(page.artist.fans)} {/if} {#if activeYears} {activeYears} {/if} {#if page.socials?.length} {/if}
{:else}
{page.albums.length || popularTracks.length ? "Refining release details" : "Loading songs and releases"}
{/if}
{/if}
{#if page.partial_error}

{page.partial_error}

{/if} {#if page.art_preview && !popularTracks.length && !page.albums.length}
{#each [0, 1, 2, 3, 4] as row (row)}
{/each}
{#each [0, 1, 2, 3, 4] as card (card)} {/each}
{/if} {#if popularTracks.length} {/if} {#if tabs.length}

Discography

{#each tabs as tab (tab.key)} {/each}
{/if} {#each visibleTabs as group (group.key)}
{#each group.items as al, cardIndex (al.familyKey)}
toggleExpander(al)} onkeydown={(e) => e.key === "Enter" && toggleExpander(al)} onmouseenter={() => { queueCardAccent(al.cover, true); queueDescPrefetch(al); }} onmouseleave={cancelDescPrefetch} >
{#if familyNowPlaying(al)} Playing {/if} {#if al.editions.length > 1} {al.editions.length} {/if} {#if al.cover && !artBroken[al.cover]}
{#if tinyCover(al.cover)} {/if} handleCoverError(event.currentTarget, al.cover, al.title)} />
{:else}
{/if} {#if group.key !== "upcoming"} {/if}
{al.title} {#if familyInLibrary(al)}{/if}
{group.key === "upcoming" ? upcomingDate(al) : year(al)}{al.track_count ? ` · ${al.track_count} tracks` : ""}
{#if expanderIndex(group) === cardIndex}
{#key openFamilyKey}
{#if previousRailArtAlbum?.cover && !artBroken[previousRailArtAlbum.cover]} {/if} {#key railArtTransitionKey} {#if railArtAlbum?.cover && !artBroken[railArtAlbum.cover]} {/if} {/key}

{group.key === "upcoming" ? upcomingDate(openAlbum ?? openFamily) : fullDate(openAlbum ?? openFamily)}{openTracks.length ? ` · ${openTracks.length} tracks` : openAlbum?.track_count ? ` · ${openAlbum.track_count} tracks` : ""}{fmtRuntime(openTracks) ? ` · ${fmtRuntime(openTracks)}` : ""}{openFamily && familyInLibrary(openFamily) ? " · in your library" : ""}

{#if openAlbumPlays != null}
{fmtCompact(openAlbumPlays)}plays {#if openAlbumListeners != null} {fmtCompact(openAlbumListeners)}listeners {/if} {#if openTotalsSummed}summed{/if}
{/if} {#if !openReleaseLocked}
{/if} {#if openInfo?.description} {#if railDesc.lede}

{railDesc.lede}

{/if} {#if railDesc.rest}

{railDesc.rest}

{/if} {#if openInfo.genre || openInfo.label}
{#if openInfo.genre}{openInfo.genre}{/if} {#if openInfo.label}{openInfo.label}{/if}
{/if} {/if} {#if openFamily && openFamily.editions.length > 1}
Editions {#each openFamily.editions as edition (edition.id)} {/each}
{/if}
{#if openLoading} {#if loadingVisible}
Loading tracks
{#each skeletonRows as w, i (i)} {/each}
{/if} {:else} {#if openTracks.length}
0} in:partIn={{ delay: 30 }}> # Title {#if countPeak > 0}Listeners{/if}
{/if} {#each openDiscs as d (d.disc)} {#if multiDisc}
Disc {d.disc} · {d.tracks.length} tracks
{/if} {#each d.tracks as t, ti (t.id)} {@const locked = t.unreleased} {@const playTrack = () => { if (locked) return; streamSong(page.artist.name, t.title, { cover: t.cover ?? openAlbum?.cover, trackId: t.id, albumId: openAlbumId, album: openAlbum?.title || null, expectSecs: t.duration_secs ?? null, }); }}
0} in:partIn={{ delay: Math.min(ti * 16, 180) }} class:now={nowPlaying("trackId", t.id)} class:locked role="button" aria-disabled={locked} tabindex={locked ? -1 : 0} title={locked ? "Not released yet" : "Play — streams from the best source"} onclick={playTrack} onkeydown={(e) => e.key === "Enter" && playTrack()} > {nowPlaying("trackId", t.id) ? "♫" : (t.track_no ?? "·")} {t.title} {#if libraryTicks.has(norm(t.title || ""))}{/if} {#if countPeak > 0} {fmtCount(t.listeners)} {/if} {#if locked} Unreleased {:else} {fmtDuration(t.duration_secs)} {/if} {#if !locked} [{ title: t.title, artist: page.artist.name, album: openAlbum?.title ?? null, duration_secs: t.duration_secs ?? null, trackId: t.id ?? null, artUrl: t.cover ?? openAlbum?.cover ?? null, }]} /> {/if}
{/each} {/each} {/if}
{/key}
{/if} {/each}
{/each}
{/if}