{#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} {#await data.spotlightTracks then { items }} fetchPlaylistTracks(spotlight.id)} size="md" idleLabel="Reanudar {spotlight.name}" activeLabel="Pausar {spotlight.name}" /> {/await} {/if}
{#await data.listeningStats then stats} {@const statsList = [ { value: stats.tracksThisWeek, label: 'Canciones nuevas escuchadas esta semana' }, { value: fmtDurationLong(stats.secondsThisWeek), label: 'Tiempo de escucha esta semana' }, { value: stats.streakDays, label: 'Días consecutivos escuchando' } ]}
{#each statsList as stat (stat.label)}
{stat.value}
{stat.label}
{/each}
{/await}
{#if continueItems.length > 0}
{#each continueItems as item, i (item.id)} {@const isCurrent = player.currentId === item.id} player.playOrToggle(continueItems, i)} oncontextmenu={(e) => trackMenu.open(e, item)} active={isCurrent} size="lg" variant="card" title={item.title} subtitle={item.artist} subtitleHref={item.ownerUserId} explicit={item.explicit} trackId={item.id} class="animate-enter" style="--i:{i}" /> {/each}
{:else} {@render noListeningHistory()} {/if}
{#if spotlight}
{#await data.spotlightTracks then { items: previewItems, totalCount }} {@const visibilityLabel = spotlight.visibility === 'Public' ? 'Pública' : 'Privada'} {@const meta = totalCount === 0 ? visibilityLabel : `${plural(totalCount, 'canción', 'canciones')} · ${fmtDurationLong(spotlight.durationSeconds)} · ${visibilityLabel}`}

Playlist destacada

{spotlight.name}

{meta}

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

fetchPlaylistTracks(spotlight.id)} variant="accent" size="md" />
{#each previewItems as track, i (track.id)} player.playOrToggle(previewItems, i)} active={player.currentId === track.id} size="sm" title={track.title} subtitle={track.artist} subtitleHref={track.ownerUserId} explicit={track.explicit} > {#snippet leading()} {i + 1} {/snippet} {#snippet trailing()} {fmtTime(track.duration)} {/snippet} {:else}

Esta playlist todavía no tiene canciones.

{/each}
{/await}
{/if}
{#if data.mixes.length > 0}
{#each data.mixes as mix, i (mix.id)} track.id)} onPlay={(event) => { event.preventDefault(); player.playQueue(mix.tracks, 0); }} index={i} /> {/each}
{:else} {/if}
{#if data.playlists.length > 0}
{#each data.playlists as playlist, i (playlist.id)} {/each}
{:else} {#snippet actions()} {/snippet} {/if}