An about intro followed by a horizontally scrollable strip mixing image, stat, quote and values cards.
An about intro (heading and lead paragraph in an asymmetric two-column header) followed by a full-bleed, horizontally scrollable strip that mixes four different card types: photo cards with a caption overlay, stat cards, dark quote cards, and a checklist-style values card. Prev/next buttons drive the scroll programmatically alongside native drag/swipe.
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/about46?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/about46?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/about46.tsx, the badge6 and button1 components it uses for the eyebrow label and CTA button, and its dependencies.
The installed file exports about46Demo alongside the block: the exact props behind the preview above. Spread it to get a working section in one line.
import { About46, about46Demo } from "@/components/beste/block/about46";
export default function AboutPage() {
return <About46 {...about46Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { About46 } from "@/components/beste/block/about46";
export default function AboutPage() {
return (
<About46
label="Inside the studio"
heading="A team built sideways, moving as <strong>one continuous line</strong>."
lead="We work as a single horizontal team, not a relay of departments."
button={{ label: "Read the brief", href: "https://beste.co" }}
cards={[
{
variant: "image",
src: "https://images.unsplash.com/photo-1522071820081-009f0129c71c?w=900&h=1200&fit=crop",
alt: "Team mid-critique around a table",
caption: "Every project starts at one table.",
},
{ variant: "stat", value: "11 days", label: "Median time to first prototype." },
{
variant: "quote",
quote: "They handed us a working product, not a deck about one.",
attribution: "Priya Nair, VP Product",
},
{
variant: "values",
title: "What we hold the line on",
items: ["Ship the real thing.", "One owner per decision.", "Prototypes over promises."],
},
]}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
label | string | – | Eyebrow badge text above the heading |
heading | string | – | Intro statement; supports inline <strong> for primary-colored highlights |
lead | string | – | Supporting paragraph next to the heading |
button | ActionLink | – | CTA rendered as a Button1 with an arrow icon |
cards | StripCard[] | [] | Ordered list of cards rendered in the horizontal strip |
className | string | – | Extra classes for the outer <section> |
type ActionLink = { label: string; href: string };
type StripCard =
| { variant: "image"; src: string; alt: string; caption: string }
| { variant: "stat"; value: string; label: string }
| { variant: "quote"; quote: string; attribution: string }
| { variant: "values"; title: string; items: string[] };cards is a discriminated union on variant; each card type renders at a different fixed width (image 300px, stat 260px, quote 340px, values 300px) so the strip's rhythm depends on which variants are used and in what order.[scrollbar-width:none] plus a WebKit pseudo-element rule) and relies on the two arrow buttons or native drag/trackpad/touch scrolling; there is no scroll-snap, so the strip settles at whatever offset the user leaves it at.scroller.clientWidth * 0.75) with behavior: "smooth", not by a fixed card count.calc((100vw - 80rem) / 2 + 1.5rem) for its left/right padding so the first and last cards align with the max-w-7xl intro content on wide viewports, while still allowing cards to bleed to the true viewport edge on narrower screens.group-hover/about46:scale-105) and overlay a bottom-anchored gradient scrim so the caption text stays legible over any photo.about42
About composed inside a bordered studio card with header marks, portrait and a stats strip.
about39
About anchored by an oversized numeral with a paragraph and a horizontal image strip.
about36
Asymmetric about with a bleeding image, vertical edge label, offset copy and an inline stats row.
about44
Layered about over a faint scrolling studio-word marquee with offset images and stats.
about58
About section on a soft muted card with a monospace parenthetical eyebrow, a bold studio wordmark, a large centered statement, a logos strip, and a four-column stats band.
about25
Side-by-side intro with animated number counters on scroll, expanding accent bars, and hover-lift value cards. For impact-driven companies.