Centered editorial hero with eyebrow, large heading, description, dual dark and outline CTAs, and a wide 16:9 image with a mono caption below.
Centered editorial hero: an eyebrow badge, a large rich-text heading with a muted accent phrase, supporting copy, a pair of dark and outline CTA buttons, and a full-width 16:9 photo with an optional caption underneath.
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/hero120?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/hero120?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/hero120.tsx, the badge7 eyebrow badge and button12 CTA button it renders through, and its dependencies.
The installed file exports hero120Demo alongside the block: the exact props behind the preview above. Spread it to get a working hero in one line.
import { Hero120, hero120Demo } from "@/components/beste/block/hero120";
export default function Page() {
return <Hero120 {...hero120Demo} />;
}Then replace the demo with your own props. Written out, the same setup looks like this:
import { Hero120 } from "@/components/beste/block/hero120";
export default function Page() {
return (
<Hero120
badge={{ label: "Independent studio" }}
heading="Design that earns its keep, <strong>season after season.</strong>"
description="We build identities with a long shelf life: type systems, editorial layouts, and quiet motion."
buttons={[
{ label: "Start a project", href: "https://beste.co" },
{ label: "See the archive", href: "https://beste.co" },
]}
image="https://images.unsplash.com/photo-1716059492460-5230fda6cefb?w=2000&auto=format&fit=crop"
imageAlt="Studio desk with printed type specimens and layout sketches"
labels={{ imageCaption: "Auralis — Identity, type & motion since 2014" }}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
labels | Hero120Labels | {} | Caption text shown below the image |
badge | Badge | – | Eyebrow badge above the heading |
heading | string | – | Large heading; supports inline <strong> for the accent phrase |
description | string | – | Supporting copy under the heading |
buttons | ActionButton[] | – | CTA row rendered through Button12 |
image | string | – | 16:9 image source below the intro |
imageAlt | string | – | Alt text for the image |
className | string | – | Extra classes for the outer <section> |
type Hero120Labels = { imageCaption?: string };
type Badge = { label: string };
type ActionButton = { label: string; href: string };heading is rendered with dangerouslySetInnerHTML; wrap the accent phrase in <strong> to pick up the muted-foreground styling ([&>strong]:text-muted-foreground), following the shared highlighted-heading pattern.Button12: only the first entry in buttons keeps the component's default dark tone, every later entry is forced to tone="outline" regardless of its position in the array, so a third or fourth button always renders identically to the second.Button12 itself animates on hover, independent of this block: its label slides out the bottom while a duplicate label drops in from the top, and its seal icon exits diagonally while a copy enters from the opposite corner, both via CSS transitions on group-hover/button12.aspect-[16/9] box with object-cover, so source photos of any ratio are cropped to fill it; the labels.imageCaption line only renders when both the image and the caption string are present.hero145
An editorial hero with an eyebrow and an oversized full-width light heading, then a lower row pairing a paragraph and two accent buttons with an image tile that floats a live app window frame.
hero125
Centered eyebrow, oversized heading and CTA above a responsive 3-up portrait gallery with monospace captions.
hero7
Centered hero with optional badge, heading, description, dual action buttons, and a featured image below. Perfect for product launches and landing pages.
hero122
Centered typographic hero on a muted card with an oversized heading, inline CTA, and a bottom monospace meta row of three labels.
hero144
A centered hero with an eyebrow pill, a large light heading, a supporting paragraph, two accent buttons, and a wide image tile below that floats a live product micro-asset.
hero68
Centered hero with three feature highlights displayed as icon cards with descriptions below the CTA. Perfect for platform and infrastructure products.