Cinematic fullscreen hero with scrolling marquee keyword band over inset background video
Fullscreen hero whose background video sits in an inset, rounded panel rather than running edge to edge, with a horizontally scrolling band of oversized ghost-text keywords layered near the bottom of that panel. Content (badge, heading, description, buttons) is centered above the marquee.
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/hero99?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/hero99?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/hero99.tsx and its dependencies: the badge and button shadcn/ui primitives.
The installed file exports hero99Demo alongside the block: the exact props behind the preview above. Spread it to get a working hero in one line.
import { Hero99, hero99Demo } from "@/components/beste/block/hero99";
export default function Page() {
return <Hero99 {...hero99Demo} />;
}Then replace the demo with your own props. Written out, the same setup looks like this:
import { Hero99 } from "@/components/beste/block/hero99";
export default function Page() {
return (
<Hero99
badge={{ label: "What's New", variant: "secondary" }}
heading="Ship faster with zero compromise"
description="Design, develop, deploy, all in one place."
buttons={[
{ label: "Get Started", href: "/signup", variant: "default" },
{ label: "Book a Demo", href: "/demo", variant: "outline" },
]}
backgroundMedia={{ type: "video", src: "/videos/hero.mp4" }}
marqueeWords={["Design", "Develop", "Deploy", "Ship"]}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
badge | Badge | – | Pill shown above the heading |
heading | string | – | Main headline |
description | string | – | Supporting copy under the heading |
buttons | ButtonItem[] | [] | CTA buttons under the description |
backgroundMedia | BackgroundMedia | – | Video or image rendered inside the inset panel |
marqueeWords | string[] | [] | Words repeated end to end in the scrolling ticker band |
invertColor | boolean | true | Light-on-dark treatment (white text, black overlay) vs. dark-on-light (foreground text, background overlay) |
className | string | – | Extra classes for the outer <section> |
type Badge = { label: string; variant?: "default" | "secondary" | "outline" };
type ButtonItem = { label: string; href: string; variant?: "default" | "outline" };
type BackgroundMedia = { type: "image" | "video"; src: string; alt?: string };min-h-screen and the background panel is inset from the viewport edges (inset-x-6 top-6 bottom-6, wider insets from lg), not full-bleed; it gets its own rounded border independent of the section bounds.hero99-marquee, defined in an inline <style> tag), translating the word row from 0 to -50% over 20 seconds on an infinite linear loop. marqueeWords is duplicated ([...marqueeContent, ...marqueeContent]) so the loop point is invisible.bottom-12/bottom-16), with its own translucent, blurred strip (backdrop-blur-md) independent of the video overlay, and renders only when marqueeWords is non-empty.invertColor (defaulting to true) switches both the overlay tint over the video (bg-black/60 vs. bg-background/80) and every text/marquee color pairing at once; there is no per-element override.autoPlay loop muted playsInline); backgroundMedia.type also accepts "image", rendered as a plain <img> filling the same panel.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
hero100
Fullscreen hero with centered content and browser window frame mockup over inset background video
hero81
Cinematic fullscreen hero with inset background media and glassmorphism quick-access cards
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.
hero80
Centered hero with inset background media and overlapping product image