Everything we do flows from our vision, our mission, and the values we share as a team.
Vision
We imagine a future where design quality is not a luxury reserved for well-funded teams. Every developer, regardless of budget or design skill, should be able to ship interfaces that feel polished and inclusive.
Mission
We create production-ready UI components that eliminate repetitive work. Our blocks are designed to be copied, customized, and composed — so teams can focus on what makes their product unique.
Values
We sweat the details because our users do. We share our process openly because trust is earned. And we always start with the question: how does this make the developer's life better?
Three-column cards for vision, mission, and values with labeled headers. Clean editorial layout for company positioning.
Three flat cards, one each for vision, mission, and values, with a small uppercase label over a bold statement and a supporting paragraph. A centered header and an optional CTA row bracket the grid. Built for a clean editorial statement of company positioning rather than a data-heavy overview.
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/about16?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/about16?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/about16.tsx and the badge and button shadcn/ui primitives it depends on.
The installed file exports about16Demo alongside the block: the exact props behind the preview above. Spread it to get a working section in one line.
import { About16, about16Demo } from "@/components/beste/block/about16";
export default function Page() {
return <About16 {...about16Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { About16 } from "@/components/beste/block/about16";
export default function Page() {
return (
<About16
badge={{ label: "Who We Are", variant: "secondary" }}
heading="Three pillars that define us"
description="Everything we do flows from our vision, our mission, and our values."
pillars={[
{ label: "Vision", title: "A web where every interface is accessible", description: "Design quality should not be a luxury." },
{ label: "Mission", title: "Give developers the building blocks to ship faster", description: "Production-ready components, not starting points." },
{ label: "Values", title: "Quality, transparency, and user focus", description: "We sweat the details because our users do." },
]}
buttons={[{ label: "Learn More", href: "https://beste.co" }]}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
badge | { label: string; variant?: "default" | "secondary" | "outline" } | – | Small label above the heading |
heading | string | – | Section heading |
description | string | – | Section intro text |
pillars | PillarItem[] | [] | The three cards; each needs a label, a title, and an optional description |
buttons | ButtonItem[] | [] | CTAs centered under the grid |
className | string | – | Extra classes for the outer <section> |
type PillarItem = { label: string; title: string; description?: string };
type ButtonItem = {
label: string;
href?: string;
variant?: "default" | "secondary" | "outline" | "ghost" | "link" | "destructive";
};md:grid-cols-3, not a dynamic column count keyed off pillars.length (Section 4.4 of the standard): the layout is built for exactly three pillars, and passing more or fewer will wrap or leave an uneven last row rather than reflow into 2 or 4 columns.label (e.g. "Vision") is rendered as a small uppercase, letter-spaced line in text-primary, visually distinct from the bold title statement beneath it, so the two fields read as an eyebrow/headline pair rather than a title/subtitle pair.max-w-3xl, independent from the max-w-6xl outer container that bounds the three-card grid.about2
Full-width team photo with a three-column values grid below. Great for culture pages and brand storytelling.
about7
Three-column grid of team member cards with avatars, roles, and short bios. Great for leadership and team pages.
about57
Two centered statements on a dark surface, each with an accent heading, an uppercase paragraph, and a small label beneath.
about81
A values section: a serif heading that settles in word by word beside the intro and a pill action, then three soft muted cards with a round icon, a serif title and a description that rise into view in turn.