Type-led about section with no imagery: an oversized statement heading sits above a four-part Who/What/How/Why style grid, each entry auto-numbered from its position in the array, closing with an optional signature and CTA row.
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/about55?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/about55?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/about55.tsx, the badge6 component it uses for the eyebrow label, the button1 component it uses for the CTA, and its dependencies.
The installed file exports about55Demo alongside the block: the exact props behind the preview above. Spread it to get a working section in one line.
import { About55, about55Demo } from "@/components/beste/block/about55";
export default function Page() {
return <About55 {...about55Demo} />;
}Then replace the demo with your own props. Written out, the same setup looks like this:
import { About55 } from "@/components/beste/block/about55";
export default function Page() {
return (
<About55
label="About Polaris"
heading="We are a creative studio that builds <strong>brands worth believing in.</strong>"
parts={[
{ label: "Who", body: "A tight crew of designers, writers, and engineers." },
{ label: "What", body: "Identity systems, editorial sites, and product interfaces." },
{ label: "How", body: "Small teams, short loops, real prototypes." },
{ label: "Why", body: "Because most brands sound the same." },
]}
signature={{ name: "Mara Quill", role: "Founder & Creative Director" }}
button={{ label: "Start a Project", href: "/contact" }}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
label | string | – | Eyebrow text rendered in a Badge6 |
heading | string | – | Oversized statement heading; supports inline HTML (<strong>, entities) |
parts | PartItem[] | [] | Four-part grid entries, auto-numbered by array position |
signature | Signature | – | Optional name/role pair in the footer row |
button | ActionLink | – | Optional CTA rendered as a Button1 with an arrow icon in the footer row |
className | string | – | Extra classes for the outer <section> |
type PartItem = { label: string; body: string };
type Signature = { name: string; role: string };
type ActionLink = { label: string; href: string };parts entry's number (01, 02, 03, 04) is generated from its array index (String(index + 1).padStart(2, "0")), not a prop; reordering the array reorders the numbers automatically.heading and each part's body render through dangerouslySetInnerHTML, so both accept inline HTML: the demo uses <strong> in the heading and HTML entities (—) in a couple of body strings.md:grid-cols-4 and does not adapt column count to parts.length; passing fewer or more than four entries changes row wrapping rather than column width.signature and button) only renders its wrapper when at least one of the two is present, and each half renders independently if the other is omitted.about66
Two-column about with a tall image on one side and an eyebrow, heading, description, and 2x2 stats grid on the other.
about47
A hard light/dark split about panel: dark statement side and a light image-and-facts side.
about8
Four-column stats grid with large numbers, titles, and supporting descriptions. Perfect for impact and results sections.
about60
Team section with an eyebrow, big heading, description and CTA above a responsive grid of people cards (portrait image, name, role).
about34
About section: eyebrow label, two-tone heading, two portraits beside a 2x2 stats grid.
about39
About anchored by an oversized numeral with a paragraph and a horizontal image strip.