Components · Events
The full-bleed banner header for an event detail page. A cover photo renders full-bleed behind a dark legibility scrim, with the title, viewer-local date-time range, and location overlaid; the badge cluster (Major / type / status / a "Past" chip) sits above, and an actions slot — the primary RSVP button — holds the top-right corner, outside any link.
The primary RSVP action is pinned :hover. Photo cover is a layered CSS gradient standing in for the real coverPhotoUrl; the scrim keeps the overlaid title AA-legible over any image.
Without a coverPhotoUrl the header falls back to a shorter accent-gradient band (--accent → --accent-strong). ended appends a neutral "Past" chip and the RSVP action drops away.
coverPhotoUrl (h-56/72) behind a bottom-weighted scrim, or a shorter accent-gradient band (h-40/48) when absent — the page always leads with a real header.showStatus) · a "Past" chip when ended. All flow from the shared eventTypeMeta / eventStatusMeta.suppressHydrationWarning.z-10 above the scrim and kept outside any link so its own controls stay clickable.h1 (default, page lead) or h2 when embedded, so the hero nests at the correct level.Source · ds/events/EventHero.tsx (cover, scrim, badge cluster, formatDateTime) · event-meta.ts · composed inside EventDetailLayout.tsx.