discover: convert the last stragglers (bylt + genre tiles) to .ya-card
Because You Listen To rows now render .ya-card grids (with the Show-all clamp) instead of the old discover-card carousels. The genre-browser tiles (_renderGenreCard) are converted too for consistency — that loader is currently dead code (loadGenreBrowser is never called; only the tabbed Browse-by-Genre modal runs), so this just future-proofs it. With this, no discover-card markup remains in discover.js — the whole Discover page is one card language (.ya-card + the mix cards), leaving only the Genre Explorer pills + Artist Map as the intentional splash elements. 64 script-integrity tests green.
This commit is contained in:
parent
bf8e8beeb7
commit
880ad74a0a
2 changed files with 28 additions and 14 deletions
|
|
@ -1942,15 +1942,14 @@ let genreTracks = [];
|
|||
function _renderGenreCard(genre) {
|
||||
const icon = getGenreIcon(genre.name);
|
||||
const displayName = capitalizeGenre(genre.name);
|
||||
// Genres have no cover art — a gradient .ya-card with the emoji, so they match the grid. #discover redesign
|
||||
return `
|
||||
<div class="discover-card genre-card-modern" onclick="openGenrePlaylist('${escapeForInlineJs(genre.name)}')">
|
||||
<div class="discover-card-image genre-card-image">
|
||||
<div class="genre-icon-large">${icon}</div>
|
||||
</div>
|
||||
<div class="discover-card-info">
|
||||
<h4 class="discover-card-title">${displayName}</h4>
|
||||
<p class="discover-card-subtitle">${genre.track_count} tracks</p>
|
||||
<p class="discover-card-meta">Curated</p>
|
||||
<div class="ya-card discover-genre-card" onclick="openGenrePlaylist('${escapeForInlineJs(genre.name)}')">
|
||||
<div class="ya-card-img genre-card-art"><div class="genre-icon-large">${icon}</div></div>
|
||||
<div class="ya-card-gradient"></div>
|
||||
<div class="ya-card-info">
|
||||
<div class="ya-card-name">${displayName}</div>
|
||||
<div class="ya-card-sub">${genre.track_count} tracks</div>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
|
|
@ -8114,19 +8113,26 @@ function _renderByltSection(section, idx) {
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="discover-carousel" id="bylt-carousel-${idx}"></div>
|
||||
<div class="discover-grid" id="bylt-carousel-${idx}"></div>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
|
||||
function _renderByltTrackCard(t) {
|
||||
const img = t.image_url
|
||||
? `<img src="${t.image_url}" alt="" loading="lazy" onerror="this.style.display='none';this.nextElementSibling.style.display='flex'">`
|
||||
: '';
|
||||
return `
|
||||
<div class="discover-card">
|
||||
<div class="discover-card-image">
|
||||
${t.image_url ? `<img src="${t.image_url}" alt="" loading="lazy" onerror="this.src='/static/placeholder-album.png'">` : '<div class="discover-card-placeholder">🎵</div>'}
|
||||
<div class="ya-card discover-album-card">
|
||||
<div class="ya-card-img">
|
||||
${img}
|
||||
<div class="ya-card-placeholder" style="display:${t.image_url ? 'none' : 'flex'}">♫</div>
|
||||
</div>
|
||||
<div class="ya-card-gradient"></div>
|
||||
<div class="ya-card-info">
|
||||
<div class="ya-card-name">${_esc(t.name)}</div>
|
||||
<div class="ya-card-sub">${_esc(t.artist)}</div>
|
||||
</div>
|
||||
<div class="discover-card-title">${_esc(t.name)}</div>
|
||||
<div class="discover-card-artist">${_esc(t.artist)}</div>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
|
|
@ -8169,6 +8175,7 @@ async function loadBecauseYouListenTo() {
|
|||
const carousel = document.getElementById(`bylt-carousel-${idx}`);
|
||||
if (!carousel) return;
|
||||
carousel.innerHTML = section.tracks.map(t => _renderByltTrackCard(t)).join('');
|
||||
_clampGrid(carousel);
|
||||
});
|
||||
},
|
||||
});
|
||||
|
|
|
|||
|
|
@ -35107,6 +35107,13 @@ div.artist-hero-badge {
|
|||
.discover-grid .ya-card { width: 100%; }
|
||||
/* Albums are square, so don't crop the cover with the artist card's 0.85 portrait ratio. */
|
||||
.discover-grid .discover-album-card.ya-card { aspect-ratio: 1; }
|
||||
/* Genre cards: no cover art — square gradient tile with the genre emoji centered. */
|
||||
.discover-grid .discover-genre-card.ya-card { aspect-ratio: 1; }
|
||||
.discover-genre-card .genre-card-art {
|
||||
display: flex; align-items: center; justify-content: center;
|
||||
background: linear-gradient(135deg, rgba(var(--accent-rgb),0.38), rgba(var(--accent-rgb),0.07));
|
||||
}
|
||||
.discover-genre-card .genre-icon-large { font-size: 46px; line-height: 1; }
|
||||
/* Secondary line under the title (album → artist). */
|
||||
.ya-card-sub {
|
||||
font-size: 11px; font-weight: 500;
|
||||
|
|
|
|||
Loading…
Reference in a new issue