Two-column studio hero with a two-tone headline, dual CTAs, tall image and a client wordmark strip.
Studio-style two-column hero: an eyebrow label, a two-line, two-tone headline (bold black text with a muted second line), a short paragraph, a primary pill button plus a bordered secondary link, and a tall portrait image on the other side. A client wordmark strip runs beneath the fold once a logo list is supplied.
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/hero112?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/hero112?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/hero112.tsx, the badge6 component it uses for the eyebrow label, the button1 component it uses for the primary CTA pill, and their dependencies.
The installed file exports hero112Demo alongside the block: the exact props behind the preview above. Spread it to get a working hero in one line.
import { Hero112, hero112Demo } from "@/components/beste/block/hero112";
export default function Page() {
return <Hero112 {...hero112Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { Hero112 } from "@/components/beste/block/hero112";
export default function Page() {
return (
<Hero112
label="Independent Studio"
heading="We design brands<br /><strong>that outlast trends</strong>."
description="A small studio for founders who want the work to speak first."
buttons={[
{ label: "Start a project", href: "https://beste.co", variant: "primary" },
{ label: "View our work", href: "https://beste.co", variant: "outline" },
]}
image={{
src: "https://images.unsplash.com/photo-1600880292203-757bb62b4baf?w=900&h=1200&fit=crop",
alt: "Studio team reviewing a brand direction",
}}
clientsLabel="Trusted by"
clients={["Lumen", "Verdant", "Orbit"]}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
label | string | – | Eyebrow text rendered through Badge6 |
heading | string | – | Headline HTML; wrap a phrase in <strong> to render it muted, and use <br /> for a manual line break |
description | string | – | Supporting paragraph, capped at max-w-md |
buttons | ButtonItem[] | [] | CTA row; primary renders as a solid pill, outline as a bordered link |
image | ImageItem | – | Tall portrait image for the opposite column |
clientsLabel | string | – | Label prefixing the client wordmark strip (for example "Trusted by") |
clients | string[] | [] | Client/brand names rendered as plain text wordmarks |
className | string | – | Extra classes for the outer <section> |
type ButtonItem = {
label: string;
href: string;
variant?: "primary" | "outline";
};
type ImageItem = {
src: string;
alt: string;
};heading is injected via dangerouslySetInnerHTML, so it accepts both a literal <br /> for the line break between the two headline lines and a <strong> wrapper for the muted second phrase; there are no separate line/highlight props.primary button variant renders through the Button1 seal-arrow pill; outline buttons are a hand-styled bordered Link, not a second Button1 tone, so their hover and focus treatment differs slightly from the primary pill.clients is non-empty; it sits below a border-t divider and lays the label and wordmarks out in a row on md screens, stacked on mobile.aspect-[3/4] portrait box with object-cover, so it always crops to that ratio regardless of the source image's dimensions.hero143
A light editorial hero with an oversized display heading on the left, an offset supporting paragraph and accent button on the right, and a full-bleed image band below.
hero121
Split hero with a big headline and CTA on the left, a divided vertical stat rail on the right, and a full-width wide image strip below.
hero135
Two-pane masthead hero: a solid dark editorial panel with eyebrow, value-prop heading, supporting copy, a CTA and an availability note on one side, and a full-bleed image on the other.
hero116
Editorial hero with twin vertical image marquees scrolling in opposite directions beside the headline.
hero118
Two-column hero: parenthetical eyebrow, oversized heading, supporting copy, a dark CTA and an avatar trust row on the left; a tall image on the right with a floating star-rated testimonial card overlapping its corner.