Feature rows that alternate the image side on every second entry, each pairing an eyebrow, display title and explanation with one oversized outcome figure on its own rule, headed by an outline pill CTA pinned to the top right.
Case rows that alternate sides down the page: a photograph on one side, and on the other an eyebrow, a statement, the story and the number it produced, each row opening on its own rule. The CTA sits in the header, next to the heading.
Upgrade to Pro
Pro blocks install through the shadcn CLI with your license key and ship their full source. Docs and live previews stay open to everyone, so you can read every block's details first.
Swap YOUR_EMAIL and YOUR_KEY for the email and license key on your account. Find your license key on your account page.
Radix flavor
npx shadcn add "https://ui.beste.co/r/feature248?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/feature248?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/feature248.tsx plus the badge7 eyebrow and button12 pill button it uses.
The installed file exports feature248Demo alongside the block: the exact props behind the preview above. Spread it to get a working section in one line.
import { Feature248, feature248Demo } from "@/components/beste/block/feature248";
export default function Page() {
return <Feature248 {...feature248Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { Feature248 } from "@/components/beste/block/feature248";
export default function Page() {
return (
<Feature248
badge={{ label: "Three shifts" }}
heading="What changed, shown before it is explained."
button={{ label: "See all three cases", href: "/work" }}
rows={[
{
eyebrow: "Packaging",
title: "A shelf you can read from across the room",
description: "We threw out the illustration and let the name do the work.",
figure: "1.4x",
figureTitle: "Shelf pick-up rate",
src: "/work/coffee.jpg",
alt: "Coffee packaging on concrete",
},
{
eyebrow: "Publishing",
title: "A catalogue people finish",
description: "The reading order came first, the grid second and the cover last.",
figure: "68%",
figureTitle: "Reached the final section",
src: "/work/catalogue.jpg",
alt: "Open print publication",
},
]}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
badge | { label: string } | – | Eyebrow label rendered as a Badge7 |
heading | string | – | Section heading in the header row |
rows | FeatureRow[] | [] | Case rows, rendered top to bottom with alternating sides |
button | ActionButton | – | Outline Button12 in the header, opposite the heading |
className | string | – | Extra classes for the outer <section> |
type FeatureRow = {
eyebrow: string;
title: string;
description: string;
figure: string;
figureTitle: string;
src: string;
alt: string;
};
type ActionButton = {
label: string;
href: string;
};md:[&>*:first-child]:order-last, so the source order stays image-then-text and a phone always reads picture first.items-end, so the button sits on the heading's baseline instead of floating at the top of a tall statement.shrink-0, which keeps it at full width when a long heading wraps next to it.border-t pt-8, so the rows read as a ruled sequence rather than a stack of cards.gap-16 becoming md:gap-24), so the alternation stays legible on desktop without wasting a screen on a phone.aspect-[4/3] at every width and the columns are md:items-center, so a short story and a long one both sit level with their picture.feature262
A feature of full-width hairline rows that expand in place, revealing a paragraph beside an image tile that floats a different live asset for each way of evaluating the product.
feature266
A feature that opens on a tall image tile floating a live before-and-after card, then sets out its evidence as hairline rows leading on an oversized light figure paired with an explanation and the method behind it.
feature216
Centered header above stacked feature rows, each pairing a numbered copy panel and tall app preview with a benefit list, trusted-by avatars, rating, and download CTA.