Two-column hero with prominent testimonial quote card featuring author avatar and company info. Perfect for building trust and social proof.
Two-column hero built for trust and social proof: standard heading/description/CTA copy on one side, and a bordered testimonial card on the other with a large translucent quote mark, the quote text, and an author row with avatar, name, role, and company.
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/hero38?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/hero38?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/hero38.tsx and the Badge and Button shadcn/ui primitives it uses.
The installed file exports hero38Demo alongside the block: the exact props behind the preview above. Spread it to get a working hero in one line.
import { Hero38, hero38Demo } from "@/components/beste/block/hero38";
export default function Page() {
return <Hero38 {...hero38Demo} />;
}Then replace the demo with your own props. Written out, the same setup looks like this:
import { Hero38 } from "@/components/beste/block/hero38";
export default function Page() {
return (
<Hero38
heading="Join thousands of successful teams"
description="See why leading companies trust us with their workflows."
buttons={[{ label: "Get Started", href: "/signup" }]}
testimonial={{
quote: "Our team productivity increased by 40% within the first month.",
author: {
name: "Sarah Mitchell",
role: "VP of Engineering",
avatar: {
src: "https://images.unsplash.com/photo-1767920787831-644f2b59d960?w=200&auto=format&fit=crop",
alt: "Sarah Mitchell",
},
},
company: "TechCorp",
}}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
badge | { label: string; variant?: "default" | "secondary" | "outline" } | – | Optional pill badge above the heading |
heading | string | – | Main headline |
description | string | – | Supporting paragraph |
buttons | ButtonItem[] | [] | CTA buttons under the description |
testimonial | Testimonial | – | Quote card rendered on the opposite side of the text |
displayPosition | "left" | "right" | "left" | Which side the text column renders on |
className | string | – | Extra classes for the outer <section> |
type Testimonial = {
quote: string;
author: {
name: string;
role: string;
avatar?: { src: string; alt: string };
};
company?: string;
};
type ButtonItem = {
label: string;
href?: string;
variant?: "default" | "secondary" | "outline" | "ghost";
};testimonial prop is supplied; there is no placeholder or fallback state if it is omitted, the column is simply empty.testimonial.author.avatar is set; there is no initials fallback if it is missing, the name/role text simply appears without an avatar.testimonial.company, when present, is appended inline to the role line as "{role} at {company}"; when absent, the role renders alone with no trailing text.displayPosition: "right" swaps the text and testimonial columns via two independent lg:order-2/lg:order-1 classes, one per column.text-primary/20) is purely decorative.hero89
50/50 split hero with video/image left and content with testimonial quote right
hero118
Two-column hero: parenthetical eyebrow, oversized heading, supporting copy, a dark CTA and an avatar trust row on the left; a tall image on the right with a floating star-rated testimonial card overlapping its corner.
hero61
Two-column hero with announcement banner, social proof metrics, and three floating feature cards with hover animations. Perfect for SaaS product launches.
hero112
Two-column studio hero with a two-tone headline, dual CTAs, tall image and a client wordmark strip.
hero121
Split hero with a big headline and CTA on the left, a divided vertical stat rail on the right, and a full-width wide image strip below.
hero96
50/50 split hero with content left and metric dashboard cards with trend badges over video right