Fullscreen hero with centered heading and 4-column bento feature grid over inset background video
Fullscreen, centered hero (not a left/right split) with an inset, rounded video or image panel framed by page padding rather than filling edge to edge. Badge, heading, description, and buttons sit centered above a 4-column bento grid of feature cards that spans the full width beneath them.
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/hero95?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/hero95?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/hero95.tsx and the shadcn/ui primitives it depends on: Badge and Button.
The installed file exports hero95Demo alongside the block: the exact props behind the preview above. Spread it to get a working hero in one line.
import { Hero95, hero95Demo } from "@/components/beste/block/hero95";
export default function Page() {
return <Hero95 {...hero95Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { Globe, Lock, Rocket } from "lucide-react";
import { Hero95 } from "@/components/beste/block/hero95";
export default function Page() {
return (
<Hero95
badge={{ label: "Why Us", variant: "secondary" }}
heading="Everything you need, nothing you don't"
buttons={[{ label: "Get Started", href: "/signup", variant: "default" }]}
backgroundMedia={{ type: "image", src: "/hero/grid.jpg", alt: "Abstract grid" }}
bentoCards={[
{ icon: Rocket, title: "Instant Deploy", description: "Push to Git, live in seconds.", span: 2 },
{ icon: Globe, title: "Edge Network", description: "Served from 40+ locations." },
{ icon: Lock, title: "Secure by Default", description: "SSL, DDoS protection, SOC 2." },
]}
invertColor
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
badge | Badge | – | Small pill above the heading |
heading | string | – | Main headline |
description | string | – | Supporting paragraph under the heading |
buttons | Button[] | [] | CTA buttons, rendered in order |
backgroundMedia | BackgroundMedia | – | Media in the inset frame behind the content |
bentoCards | BentoCard[] | [] | Feature cards in the grid below the buttons |
invertColor | boolean | true | Switches the media overlay and heading/description colors between dark and background-tinted |
className | string | – | Extra classes for the outer <section> |
type Badge = { label: string; variant?: "default" | "secondary" | "outline" };
type Button = { label: string; href: string; variant?: "default" | "outline" };
type BackgroundMedia = { type: "image" | "video"; src: string; alt?: string };
type BentoCard = { icon: LucideIcon; title: string; description: string; span?: 1 | 2 };inset-x-6 top-6 bottom-6, widening to lg:inset-x-8 lg:top-8 lg:bottom-8) and clipped to a rounded-md border, so it reads as a framed panel rather than a full-bleed backdrop.invertColor (default true) drives three things together: the overlay opacity over the media (bg-black/60 vs bg-background/80), the heading/description text color (text-white/text-white/70 vs default foreground/text-muted-foreground), and implicitly the bento cards, which are always styled for a dark background (bg-white/5, text-white) regardless of invertColor.grid-cols-2 on mobile and lg:grid-cols-4 on desktop; a card with span: 2 takes col-span-2 at both breakpoints.backgroundMedia.type: "video" renders autoPlay loop muted playsInline with no poster fallback; "image" renders a plain <img>.hero92
50/50 split hero with content left and bento feature grid overlay on video right
hero100
Fullscreen hero with centered content and browser window frame mockup over inset background video
hero86
Cinematic fullscreen hero with inset background video and trusted-by logo strip
hero85
Cinematic fullscreen hero with inset background video and floating glassmorphism testimonial cards
hero97
Fullscreen bottom-aligned hero with vertical stack cards and inset background video with gradient overlay
hero82
Left-aligned fullscreen hero with inset background media and directional gradient overlay