Four soft cards each opening with a full-bleed photograph, then a display title, one explanatory sentence and a ruled tally line pinned to the bottom of the card.
Four soft cards, each opening with a photograph and closing on a ruled fact line, under a two-column header. The pill CTA sits under the row, so the whole section reads as one catalogue page.
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/feature249?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/feature249?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/feature249.tsx plus the badge7 eyebrow and button12 pill button it uses.
The installed file exports feature249Demo alongside the block: the exact props behind the preview above. Spread it to get a working section in one line.
import { Feature249, feature249Demo } from "@/components/beste/block/feature249";
export default function Page() {
return <Feature249 {...feature249Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { Feature249 } from "@/components/beste/block/feature249";
export default function Page() {
return (
<Feature249
badge={{ label: "The four rooms" }}
heading="Everything we make falls into one of these."
description="Four disciplines, photographed where each stops being a file."
cards={[
{
src: "/disciplines/type.jpg",
alt: "Printed letterforms",
title: "Letterforms",
description: "Commissioned type and the licensing that keeps it usable.",
meta: "Four typefaces drawn since 2019",
},
{
src: "/disciplines/packaging.jpg",
alt: "Unbranded paper packaging",
title: "Packaging",
description: "Structure, artwork and die lines a producer will accept.",
meta: "Eleven ranges in production",
},
]}
button={{ label: "Commission one of these", href: "/contact" }}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
badge | { label: string } | – | Eyebrow label rendered as a Badge7 |
heading | string | – | Section heading in the left header column |
description | string | – | Supporting paragraph in the right header column |
cards | FeatureCard[] | [] | Discipline cards, rendered in order |
button | ActionButton | – | Pill CTA under the row, rendered as Button12 |
className | string | – | Extra classes for the outer <section> |
type FeatureCard = {
src: string;
alt: string;
title: string;
description: string;
meta: string;
};
type ActionButton = {
label: string;
href: string;
};flex flex-col with the meta line on mt-auto, so the ruled fact stays flush with the bottom of every card even when one description runs two lines longer than the rest.border-current/10 rather than the default border token, which keeps it a shade of the card's own surface instead of a hard line across it.overflow-hidden rounded-md, so the picture inherits the card's top corners without a second radius.aspect-[4/3] at every width and carry no hover treatment, which is deliberate: the pictures are content here, not affordances.sm:grid-cols-2 and then lg:grid-cols-4, so a four-card set stays a two-by-two block on a tablet instead of squeezing into four narrow columns.md:items-end, so the supporting paragraph sits on the heading's baseline rather than beside its first line.flex wrapper under the row, which keeps the pill at its natural width and left-aligned with the grid.feature251
Three soft cards, each floating its own media piece over a dotted field before an eyebrow, a title, an explanation and a ruled delivery note, laid out as a plain grid with no horizontal scrolling.
feature195
Four equal feature cards on a clean background, each with a large circular icon badge above a bold h3 title. Ideal for outlining the steps or pillars of a service offering.
feature185
Three-column image feature cards grid with sticky header over background media and glass-morphism styling
feature193
Alternating rows with tall highlight card and stacked compact cards over background media