{#snippet noListeningHistory()} {#snippet actions()} {/snippet} {/snippet} Musify

{data.greeting}

Sube lo tuyo, descubre lo nuevo y escúchalo todo en un solo sitio.

{#if spotlight} {/if}
{#await data.listeningStats then stats}
{stats.tracksThisWeek}
Canciones nuevas escuchadas esta semana
{fmtDurationLong(Number(stats.secondsThisWeek))}
Tiempo de escucha esta semana
{stats.streakDays}
Días consecutivos escuchando
{/await}
{#if continueItems.length > 0}
{#each continueItems as item, i (item.id)} {@const isCurrent = player.current.id === item.id} playContinue(i)} oncontextmenu={(e) => openContextMenu(e, targetForQueueItem(item))} active={isCurrent} size="lg" variant="card" title={item.title} subtitle={item.artist} subtitleHref={item.ownerUserId} trackId={item.id} class="animate-enter" style="--i:{i}" /> {/each}
{:else} {@render noListeningHistory()} {/if}
{#if spotlight}
goto(`/playlists/${spotlight.id}`)} class="flex w-fit items-center gap-5 self-start sm:gap-6" >

Playlist destacada

{spotlight.name}

{spotlightMeta}

{spotlight.description || 'Tu colección, siempre a mano.'}

{#each spotlightRows as { target, seconds }, i (targetId(target))} playSpotlightTrack(i)} active={isTargetCurrent(target)} size="sm" title={targetTitle(target)} subtitle={targetArtist(target)} subtitleHref={targetOwnerUserId(target)} > {#snippet leading()} {i + 1} {/snippet} {#snippet trailing()} {fmtTime(seconds)} {/snippet} {:else}

Esta playlist todavía no tiene canciones.

{/each}
{/if}
{#if mixes.length > 0}
{#each mixes as mix, i (mix.id)} item.trackId)} onPlay={(event) => playMix(mix, event)} index={i} /> {/each}
{:else} {/if}
{#if popularTargets.length > 0}
{#each popularTargets as target, i (targetId(target))} {@const isCurrent = isTargetCurrent(target)} playPopular(i)} oncontextmenu={(e) => openContextMenu(e, target)} active={isCurrent} size="sm" title={targetTitle(target)} subtitle={targetArtist(target)} subtitleHref={targetOwnerUserId(target)} explicit={targetExplicit(target)} trackId={targetId(target)} > {#snippet leading()} {#if isCurrent} {:else} {i + 1} {/if} {/snippet} {#snippet trailing()} {/snippet} {/each}
{:else} {@render noListeningHistory()} {/if}
{#if playlists.length > 0}
{#each playlists as playlist, i (playlist.id)} goto(`/playlists/${playlist.id}`)} size="lg" variant="card" title={playlist.name} subtitle={playlist.description} coverSrc="/api/playlists/{playlist.id}/cover?size=medium&v={encodeURIComponent( playlist.updatedAt )}" trackIds={playlist.coverTrackIds} style="--i:{i}" /> {/each}
{:else} {#snippet actions()} {/snippet} {/if}
{#if trackMenu.state} trackMenu.close()} items={[ { icon: ListPlus, label: 'Reproducir a continuación', onclick: () => trackMenu.playNext() } ]} playlistAction={{ action: '?/addTrack', fields: { trackId: String(trackMenu.state.track.id) }, label: 'Añadir a una playlist' }} {playlists} /> {/if}