Fullscreen hero with phone mockup, star rating review card, and app store buttons over inset background video
Fullscreen mobile-app hero with a phone mockup on the left carrying a floating star-rating pill overlaid on its lower-right corner, and heading, description, a quoted customer review card, and app-store badges on the right, 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/hero108?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/hero108?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/hero108.tsx and its dependencies: the badge and avatar shadcn/ui primitives.
The installed file exports hero108Demo alongside the block: the exact props behind the preview above. Spread it to get a working hero in one line.
import { Hero108, hero108Demo } from "@/components/beste/block/hero108";
export default function Page() {
return <Hero108 {...hero108Demo} />;
}Then replace the demo with your own props. Written out, the same setup looks like this:
import { Hero108 } from "@/components/beste/block/hero108";
export default function Page() {
return (
<Hero108
badge={{ label: "4.9 Rating", variant: "secondary" }}
heading="Loved by millions worldwide"
description="Join the community that made the switch."
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" }}
phoneScreenshot={{ src: "/images/app-screen.png", alt: "App screenshot" }}
review={{
avatar: { src: "/avatars/sarah.jpg", alt: "Sarah Chen" },
name: "Sarah Chen",
rating: 5,
text: "This app completely transformed how I manage my day.",
}}
/>
);
}| 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 review card |
backgroundMedia | BackgroundMedia | – | Video or image behind the whole section |
phoneScreenshot | { src: string; alt: string } | – | Screenshot rendered inside the phone frame |
review | Review | – | Quoted review card, plus the star-rating pill overlaid on the 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 Review = {
avatar: { src: string; alt: string };
name: string;
rating: number;
text: string;
};review drives two separate pieces of UI at once: the floating rating pill absolutely positioned on the phone's lower-right corner (-right-6 bottom-16, wider offset from md) and the quoted review card in the text column. Both disappear together if review is omitted; there is no way to show one without the other.review.rating filled stars (Array.from({ length: review.rating })), so the count is driven directly by the number, not capped or validated against a 5-star maximum.backdrop-blur-md over a translucent surface (bg-black/50 / bg-background/60 for the pill, bg-white/5 / bg-background/40 for the card), letting the background video show through softly rather than sitting on an opaque surface.Avatar/AvatarImage from shadcn/ui renders the reviewer's photo at size-6 with object-cover, falling back to the first letter of review.name if the image fails.lg (phone above, text and review below) and goes side by side (phone left, text right) from lg up, the mirror image of hero103/hero107's phone-on-the-right layouts.hero103
Fullscreen hero with app store buttons and phone mockup over inset background video
hero105
Fullscreen hero with two overlapping angled phone mockups and app store buttons 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
hero85
Cinematic fullscreen hero with inset background video and floating glassmorphism testimonial cards
hero53
Split-layout hero with realistic iPhone mockup, notch detail, and App Store/Play Store download buttons. Perfect for mobile app landing pages.