About section with a sticky vertical eyebrow rail (badge, an "Est." marker, and a short divider line) beside a multi-paragraph story column and a CTA, closing with an offset, captioned portrait.
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/about41?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/about41?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/about41.tsx, the badge6 and button1 components it uses for the eyebrow label and the CTA, and its dependencies.
The installed file exports about41Demo alongside the block: the exact props behind the preview above. Spread it to get a working section in one line.
import { About41, about41Demo } from "@/components/beste/block/about41";
export default function Page() {
return <About41 {...about41Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { About41 } from "@/components/beste/block/about41";
export default function Page() {
return (
<About41
label="The Studio"
est="Est. 2016"
heading="We name the thing,<br /><strong>then we make it move.</strong>"
paragraphs={[
"Polaris started in a borrowed loft with one stubborn belief: a brand is a <strong>verb before it is a logo</strong>.",
"Today we are a <strong>twelve-person creative studio</strong> working between strategy and motion.",
]}
button={{ label: "Read Our Manifesto", href: "https://beste.co" }}
image={{
src: "https://images.unsplash.com/photo-1497032205916-ac775f0649ae?w=900&h=1200&fit=crop",
alt: "Studio wall covered in sketches",
}}
caption="Our wall, three days before the launch."
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
label | string | – | Eyebrow label rendered inside the badge |
est | string | – | Text beneath the badge in the sticky left rail |
heading | string | – | Rendered via dangerouslySetInnerHTML |
paragraphs | string[] | [] | Story column body; each entry rendered independently via dangerouslySetInnerHTML |
button | ActionLink | – | CTA below the paragraphs |
image | ImageItem | – | Offset portrait on the right |
caption | string | – | Caption beneath the portrait |
className | string | – | Extra classes for the outer <section> |
type ActionLink = { label: string; href: string };
type ImageItem = { src: string; alt: string };orientation="vertical" (stacking the accent square above the label), a fixed choice inside About41; the block itself does not expose an orientation prop.est, and a short vertical divider line) is lg:sticky lg:top-24 self-start, so it stays pinned near the top of the viewport while the story column scrolls beneath it on large screens.paragraphs is rendered independently through dangerouslySetInnerHTML, so <strong> (or other inline HTML) must be authored directly into every string; <strong> spans render text-foreground against the otherwise muted paragraph text.md:mt-24) so it does not align with the top of the story column, and it accepts an optional caption beneath it.180px and minmax(0,360px)), with the story column filling whatever space remains between them.about23
Two-column layout with company story, stats, and leadership quote on the left, team photo and avatar row on the right.
about53
About with two subtly rotated, captioned studio photos clustered beside the statement.
about24
Company story with image, border-accented feature highlights, and stats row. Great for craft, heritage, and product-focused brands.
about61
Two-column about section with a sticky eyebrow and big heading on the left and a long belief paragraph above a border-separated values list on the right.
about34
About section: eyebrow label, two-tone heading, two portraits beside a 2x2 stats grid.