Skip to content

Feature highlights

Feature highlights · sample rowOpen ↗

Renders FeatureHighlightsBlock from @bison-lab/ui. Each card has a title, a subtitle, a stat (a figure and the words under it) and an image that covers the top of the card, cropped toward its focal point. From the large breakpoint the heading, the progress rail and the quote hold still in a sticky column while the cards scroll past.

The rail is a progressbar whose value is the card crossing the middle of the viewport (or the last card, once it is wholly in view), watched with IntersectionObserver; there is no animation library. Its fill moves only under motion-safe, so with reduced motion on it jumps to place. The quote under the rail shows once it has both a quote and a name.

In the admin the cards are edited with the kit items list (ITEMS_FIELD): each closed row reads as the card title, its image and its stat. The last card cannot be deleted. The layout is designed for three to five cards.

payload.config.ts / collections
import { FeatureHighlightsBlock } from "@bison-lab/payload-blocks";
// In the collection's `blocks` array:
FeatureHighlightsBlock
blocks/registry.ts
import { FeatureHighlightsBlockRenderer } from "@bison-lab/payload-blocks/react";
// In the site's registry:
featureHighlights: FeatureHighlightsBlockRenderer,
FieldTypeNotes
eyebrowtextSmall label above the heading. Leave empty to hide the row.
title *text
descriptiontextarea
items *arrayThe cards, in reading order. The layout is designed for three to five. At least 1 row. Opens with 1 empty row; the admin field will not remove below that.
items[].title *text
items[].subtitletextarea
items[].statValuetextLabelled “Stat”. The figure the card leads with, as it should read: "3×", "98%".
items[].statLabeltextLabelled “Stat label”. The words under the figure, e.g. "faster sign-off".
items[].imageuploadOptional. Fills the top of the card, cropped toward the focal point set on the image. From the media collection.
testimonialgroupOptional. Shown under the progress rail once it has a quote and a name.
testimonial.quotetextarea
testimonial.nametext
testimonial.titletextRole or organisation, e.g. "Head of design".
testimonial.avataruploadOptional. Initials from the name are used when empty. From the media collection.
settingsgroupLabelled “Block Settings”.
settings.backgroundselectLabelled “Background”. The surface this section sits on. Page is the plain page background. One of page, card, muted, color, gradient. Default "page".
settings.backgroundColortextLabelled “Color”.
settings.backgroundColorDarktextLabelled “Dark mode color”.
settings.gradientTotextLabelled “Gradient end”.
settings.gradientToDarktextLabelled “Dark mode gradient end”.
settings.gradientDirectiontextLabelled “Gradient direction”.
settings.spacingselectLabelled “Spacing”. The air above and below this section. Default is the block's own padding; Compact and Spacious replace it. This is the band, not the site-wide spacing in Theme → Appearance. One of compact, default, spacious. Default "default".
settings.anchortextLabelled “Anchor”. In-page links can target this section. Leave blank for none.
settings.hiddencheckboxLabelled “Hidden”. The section stays in the editor and is left off the page. Default false.

* required.