Fix CTA cards on mobile: always show 3, correct hrefs, fix overflow clipping
- ctaCards now merges Sanity data per-slot over defaults instead of all-or-nothing; a partially-filled CMS (e.g. 2 cards) no longer hides the third card, and an empty href in Sanity falls back to the correct default route - Add overflow: visible to .cta-editorial on mobile so the third card isn't clipped by the desktop overflow: hidden that wasn't being overridden - Add pointer-events: none to the gradient overlay div so it can't intercept taps Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
f0a73bb362
commit
62b845f1b5
1 changed files with 17 additions and 3 deletions
|
|
@ -40,7 +40,21 @@ const videoHeading = cms?.videoHeading || DEFAULTS.videoHeading;
|
||||||
const videoBody = cms?.videoBody || DEFAULTS.videoBody;
|
const videoBody = cms?.videoBody || DEFAULTS.videoBody;
|
||||||
const videoYoutubeId = cms?.videoYoutubeId || DEFAULTS.videoYoutubeId;
|
const videoYoutubeId = cms?.videoYoutubeId || DEFAULTS.videoYoutubeId;
|
||||||
const sponsorHeading = cms?.sponsorHeading || DEFAULTS.sponsorHeading;
|
const sponsorHeading = cms?.sponsorHeading || DEFAULTS.sponsorHeading;
|
||||||
const ctaCards = cms?.ctaCards?.length ? cms.ctaCards : DEFAULTS.ctaCards;
|
// Always produce 3 cards; merge Sanity data per-slot over defaults so a
|
||||||
|
// partially-filled CMS (e.g. only 2 cards) never hides the third card or
|
||||||
|
// leaves a card with an empty href.
|
||||||
|
const sanityCards = cms?.ctaCards ?? [];
|
||||||
|
const ctaCards = DEFAULTS.ctaCards.map((def, i) => {
|
||||||
|
const s = sanityCards[i];
|
||||||
|
if (!s) return def;
|
||||||
|
return {
|
||||||
|
label: s.label || def.label,
|
||||||
|
title: s.title || def.title,
|
||||||
|
description: s.description || def.description,
|
||||||
|
image: s.image || def.image,
|
||||||
|
href: s.href || def.href,
|
||||||
|
};
|
||||||
|
});
|
||||||
const sponsors = cms?.sponsors?.length ? cms.sponsors : DEFAULTS.sponsors;
|
const sponsors = cms?.sponsors?.length ? cms.sponsors : DEFAULTS.sponsors;
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -103,7 +117,7 @@ const sponsors = cms?.sponsors?.length ? cms.sponsors : DEFAULTS.sponsor
|
||||||
.cta-card:hover .cta-more { opacity: 1; }
|
.cta-card:hover .cta-more { opacity: 1; }
|
||||||
|
|
||||||
@media (max-width: 767px) {
|
@media (max-width: 767px) {
|
||||||
.cta-editorial { flex-direction: column; height: auto; }
|
.cta-editorial { flex-direction: column; height: auto; overflow: visible; }
|
||||||
.cta-card { flex: none; height: 280px; }
|
.cta-card { flex: none; height: 280px; }
|
||||||
.cta-sub { opacity: 1 !important; }
|
.cta-sub { opacity: 1 !important; }
|
||||||
.cta-more { opacity: 1 !important; }
|
.cta-more { opacity: 1 !important; }
|
||||||
|
|
@ -347,7 +361,7 @@ const sponsors = cms?.sponsors?.length ? cms.sponsors : DEFAULTS.sponsor
|
||||||
loading="lazy"
|
loading="lazy"
|
||||||
decoding="async"
|
decoding="async"
|
||||||
/>
|
/>
|
||||||
<div style="position: absolute; inset: 0; background: linear-gradient(to top, rgba(0,0,0,0.75) 0%, rgba(0,0,0,0.2) 60%, rgba(0,0,0,0.05) 100%);" />
|
<div style="position: absolute; inset: 0; background: linear-gradient(to top, rgba(0,0,0,0.75) 0%, rgba(0,0,0,0.2) 60%, rgba(0,0,0,0.05) 100%); pointer-events: none;" />
|
||||||
<div style="position: absolute; bottom: 0; left: 0; right: 0; padding: 28px 28px 32px; background: rgba(0,0,0,0.48); backdrop-filter: blur(4px);">
|
<div style="position: absolute; bottom: 0; left: 0; right: 0; padding: 28px 28px 32px; background: rgba(0,0,0,0.48); backdrop-filter: blur(4px);">
|
||||||
<p style="font-family: 'Public Sans', sans-serif; font-weight: 700; font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase; color: rgba(255,255,255,0.65); margin-bottom: 8px;">
|
<p style="font-family: 'Public Sans', sans-serif; font-weight: 700; font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase; color: rgba(255,255,255,0.65); margin-bottom: 8px;">
|
||||||
{card.label}
|
{card.label}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue