Fullscreen hero with two overlapping angled phone mockups and app store buttons over inset background video
Fullscreen app-download hero with two phone mockups overlapping and rotated in opposite directions on the right, text and app-store badges on the left, over an inset background video panel.
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/hero105?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/hero105?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/hero105.tsx and its dependency: the badge shadcn/ui primitive.
The installed file exports hero105Demo alongside the block: the exact props behind the preview above. Spread it to get a working hero in one line.
import { Hero105, hero105Demo } from "@/components/beste/block/hero105";
export default function Page() {
return <Hero105 {...hero105Demo} />;
}Then replace the demo with your own props. Written out, the same setup looks like this:
import { Hero105 } from "@/components/beste/block/hero105";
export default function Page() {
return (
<Hero105
badge={{ label: "Cross Platform", variant: "secondary" }}
heading="One app, every device"
description="Seamless experience across iOS and Android."
appStores={[
{ image: { src: "/badges/app-store.svg", alt: "Download on App Store" }, href: "/ios" },
{ image: { src: "/badges/google-play.svg", alt: "Get it on Google Play" }, href: "/android" },
]}
backgroundMedia={{ type: "video", src: "/videos/hero.mp4" }}
phoneScreenshots={[
{ src: "/images/screen-1.png", alt: "App screen 1" },
{ src: "/images/screen-2.png", alt: "App screen 2" },
]}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
badge | Badge | – | Pill shown above the heading |
heading | string | – | Main headline |
description | string | – | Supporting copy under the heading |
appStores | AppStore[] | [] | Store badge images/links rendered under the description |
backgroundMedia | BackgroundMedia | – | Video or image behind the whole section |
phoneScreenshots | PhoneScreen[] | [] | Exactly the first two entries are used, back phone then front phone |
invertColor | boolean | true | Light-on-dark treatment (white text, black overlay) vs. dark-on-light |
className | string | – | Extra classes for the outer <section> |
type Badge = { label: string; variant?: "default" | "secondary" | "outline" };
type BackgroundMedia = { type: "image" | "video"; src: string; alt?: string };
type AppStore = { image: { src: string; alt: string }; href: string };
type PhoneScreen = { src: string; alt: string };phoneScreenshots.length >= 2; with fewer than two entries nothing is shown on the right, there is no single-phone fallback.phoneScreenshots[1] becomes the "back" phone (rotate-6, offset top-4 right-0, lower z-index) and phoneScreenshots[0] becomes the "front" phone (-rotate-6, offset top-0 left-0, z-10), so array order controls which screenshot appears on top and which side it leans toward. Both use non-null assertions (phoneScreenshots[1]!), so a one-item array would throw at runtime, not just render blank.rotate-6 / -rotate-6), not scroll- or hover-driven; there is no animation on this hero.border-[6px] border-zinc-900 with its own small notch bar, independent of invertColor, which only affects the text, background overlay, and app-store badge opacity treatment.lg (text above, phone stack below) and goes side by side from lg up, matching the other single/dual-phone heroes in this set.hero103
Fullscreen hero with app store buttons and phone mockup over inset background video
hero106
Fullscreen hero with centered phone mockup flanked by feature columns on each side over inset background video
hero107
Fullscreen split hero with content left and 3D perspective-tilted phone mockup right over inset background video
hero108
Fullscreen hero with phone mockup, star rating review card, and app store buttons over inset background video
hero53
Split-layout hero with realistic iPhone mockup, notch detail, and App Store/Play Store download buttons. Perfect for mobile app landing pages.
hero100
Fullscreen hero with centered content and browser window frame mockup over inset background video