Full-bleed monochrome hero with a giant heading and a row of clickable tab chips that fade between text panels (title, description, stat), auto-advancing on a timer with no background swap.
Full-bleed hero with the same dark-scrim background photo and giant display heading as the rest of the set, but the bottom panel is a row of clickable tab chips (Identity, Product, Editorial, Motion in the demo) that fade between per-tab title, description, and stat panels, auto-advancing on a timer.
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/hero140?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/hero140?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/hero140.tsx, the badge7 and button12 components it uses for the eyebrow label and the outline CTA button, and its dependencies.
The installed file exports hero140Demo alongside the block: the exact props behind the preview above. Spread it to get a working hero in one line.
import { Hero140, hero140Demo } from "@/components/beste/block/hero140";
export default function Page() {
return <Hero140 {...hero140Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { Hero140 } from "@/components/beste/block/hero140";
export default function Page() {
return (
<Hero140
badge={{ label: "Auralis Studio" }}
heading="Range, kept quiet."
backgroundImage={{
src: "https://images.unsplash.com/photo-1497366811353-6870744d04b2?w=1920&h=1200&fit=crop",
alt: "Concrete studio interior in soft daylight",
}}
button={{ label: "Start a project", href: "https://beste.co" }}
items={[
{
tabLabel: "Identity",
title: "Marks that hold their shape",
description: "One fixed idea, a hundred ways to flex it.",
stat: "48 systems shipped",
href: "https://beste.co",
},
{
tabLabel: "Product",
title: "Interfaces that get out of the way",
description: "Product surfaces that feel inevitable.",
stat: "12 launches a year",
href: "https://beste.co",
},
]}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
badge | { label: string } | – | Eyebrow label rendered as a Badge7 |
heading | string | – | Giant display heading |
backgroundImage | { src: string; alt: string } | – | Full-bleed background photo |
button | { label: string; href: string } | – | Outline CTA in the top row, rendered via Button12 |
items | TabItem[] | [] | Tab chips and the text panel each one reveals |
className | string | – | Extra classes for the outer <section> |
type TabItem = {
tabLabel: string;
title: string;
description: string;
stat?: string;
href: string;
};setInterval pattern as the rest of the set advances the active tab; it is skipped when items has one or fewer entries.key={active}, so React unmounts and remounts it on every tab change, replaying the Tailwind animate-in fade-in duration-500 utility from scratch.active directly (aria-current marks the selected chip); the panel's title text is itself a link to activeItem.href.stat is present, right-aligned on desktop through md:justify-self-end.Button12's hover state slides its label out the bottom while a copy drops in from the top, and swaps the trailing icon out the top-right corner as a duplicate enters from the bottom-left, both on a 300ms transition gated behind motion-safe.hero129
Full-bleed monochrome hero with a giant bottom-left heading and a row of equal-width chapter tabs. The active chapter's thin track fills left to right over the interval, then auto-advances and crossfades the background image. Each tab links to its href.
hero137
Full-bleed monochrome hero that crossfades across a set of slides, navigated by explicit previous/next arrows and clickable dots with an auto-loop, plus a caption linking the active slide.
hero130
Full-bleed hero with a static background image, a giant display heading, and a slim bordered bar that auto-rotates through short, clickable announcement messages with position dots.
hero141
Full-bleed monochrome hero with a giant display heading, short description, and a continuous bottom marquee of capability chips that pauses on hover.
hero119
Full-bleed image hero with an oversized three-word display heading, a row of monospace meta labels, a bold sub-headline, and a featured card with thumbnail, category, paginated index, and title.
hero99
Cinematic fullscreen hero with scrolling marquee keyword band over inset background video