BentoCaseCell

Case study cell: cover with the title over a scrim and optional video on hover

stable v1.0.0

Preview

The real canon component inside a real BentoGrid. On desktop, hover over the first cell: the video fades in (the [data-bento-case] hook is activated by this page, just like the 3lastic.com home: the component provides markup and style, the page decides when). The cell without href renders a static <article>.

Props

PropTypeNote
titlestringRequired. The cell's only text; also its accessible name.
coverstringRequired. Full-bleed background image.
hrefstringOptional: with href it is a clickable <a>; without it, a static <article>.
thumbstringOptional. Replaces cover as the background if present.
videostringOptional. Revealed on hover via .is-video-active (desktop).
span1 | 2Grid columns. Default 1.
layout'bento' | 'grid'bento = portrait 1/2 (home); grid = landscape 3/2 (case index).

Behavior

SituationBehavior
Hover/focus (desktop, clickable)Label rises from 0.8 to full opacity; if there is a video, it fades in when .is-video-active is set
Static cellLabel always at full opacity
Mobile (<768px)All at span 1, min-height 300px, scrim and label always visible
prefers-reduced-motionVideo and label transitions disabled

Tokens

PropertyToken
Label color--color-on-media
Scrim gradient base--media-scrim
Label typography--font-heading, --text-card-title, --weight-semibold
Label inset--space-lg

Constraints

  • The title is the only text. No description, no metadata.
  • One cover; one optional video. No carousels.
  • The video activation script lives in the consuming page (it targets [data-bento-case]), not in the component.

Decisions

DecisionWhy
Optional href (a vs article)Listing items without a detail page still render; same convention as Card
Scrim + white label via tokensTitle legibility over arbitrary imagery, independent of the theme
The page owns the video hookActivation timing/observer differs per page; the component is markup + style
Promoted from elastic + teresaIdentical function on two sites; the optional-href form (from teresa) is the canonical one