Full-width team photo with a three-column values grid below. Great for culture pages and brand storytelling.
Culture/values section built as three stacked blocks: a centered heading group, a full-width 2:1 team photo, and a three-column values grid where each value pairs a circular icon badge with a title and description, closed with CTA buttons.
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/about2?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/about2?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/about2.tsx and the badge and button shadcn/ui primitives it depends on.
The installed file exports about2Demo alongside the block: the exact props behind the preview above. Spread it to get a working section in one line.
import { About2, about2Demo } from "@/components/beste/block/about2";
export default function Page() {
return <About2 {...about2Demo} />;
}Then replace the demo with your own props. Written out, the same setup looks like this:
import { Heart, Target } from "lucide-react";
import { About2 } from "@/components/beste/block/about2";
export default function Page() {
return (
<About2
badge={{ label: "Our Values", variant: "secondary" }}
heading="Driven by purpose, powered by people"
description="Technology should serve people, not the other way around."
image={{ src: "https://images.unsplash.com/photo-1522071820081-009f0129c71c", alt: "Team collaborating" }}
values={[
{ icon: Target, title: "Mission First", description: "Every decision is guided by our mission." },
{ icon: Heart, title: "People Centered", description: "We build for real people with real needs." },
]}
buttons={[{ label: "See Open Roles", href: "https://beste.co" }]}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
badge | { label: string; variant?: "default" | "secondary" | "outline" } | – | Pill above the heading; only rendered when badge is truthy |
heading | string | – | Section heading |
description | string | – | Section intro text |
image | { src: string; alt: string } | – | Full-width 2:1 team photo below the header |
values | ValueItem[] | [] | Three-column value cards |
buttons | ButtonItem[] | [] | CTA buttons below the values grid |
className | string | – | Extra classes for the outer <section> |
type ValueItem = {
icon?: LucideIcon;
title: string;
description?: string;
};
type ButtonItem = {
label: string;
href?: string;
variant?: "default" | "secondary" | "outline" | "ghost" | "link" | "destructive";
};values[].icon is typed as a LucideIcon component reference (e.g. Target), not a rendered React.ReactNode element like the icon fields on the usecase and about1 blocks; the component itself resolves it with const Icon = value.icon and renders <Icon className="size-5 text-primary" />, so callers must pass the icon component, not a JSX element.aspect-[2/1] crop (object-cover), and the whole image block is skipped entirely, with no placeholder, when image is omitted.values always lays out as md:grid-cols-3 regardless of item count; passing fewer than three leaves empty trailing columns, and passing more than three wraps to additional rows of three.value.icon is set, and its description paragraph only renders when value.description is set, so a value can be title-only with no icon or body text.about20
Wide team photo, member list with avatars, team stats grid, and a culture quote. A rich team showcase layout.
about23
Two-column layout with company story, stats, and leadership quote on the left, team photo and avatar row on the right.
about16
Three-column cards for vision, mission, and values with labeled headers. Clean editorial layout for company positioning.
about1
Two-column about section with mission statement, company stats, and team member grid. Perfect for company pages and landing sections.
about7
Three-column grid of team member cards with avatars, roles, and short bios. Great for leadership and team pages.
about5
Side-by-side layout with a tall image on the left and company story, inline stats, and CTAs on the right.