Split Hero With Floating Review

(Design studio)

Measurable craft for brands that mean it.

Auralis is a studio for teams that need direction, structure, and work that ships — not vague advice or long decks.

Two colleagues in conversation
Their structured approach cut our launch time in half.

Sayyan Reed

Head of Product

About this block

Split Hero With Floating ReviewPRO

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.

Hero118: Split Hero With Floating Review

Two-column hero: a parenthetical eyebrow, an oversized heading, supporting copy, a dark CTA pill and an overlapping avatar trust row on the left; a tall portrait image on the right with a star-rated testimonial card floating over its bottom corner.

Upgrade to Pro

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.

Upgrade Now

Installation

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

bash
npx shadcn add "https://ui.beste.co/r/hero118?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

bash
npx shadcn add "https://ui.beste.co/r-base/hero118?email=YOUR_EMAIL&license_key=YOUR_KEY"

This installs the block to components/beste/block/hero118.tsx, the badge7 component it uses for the eyebrow and trust labels, the button12 component it uses for the CTA, and their dependencies.

Quick start

The installed file exports hero118Demo alongside the block: the exact props behind the preview above. Spread it to get a working hero in one line.

tsx
import { Hero118, hero118Demo } from "@/components/beste/block/hero118";

export default function Page() {
  return <Hero118 {...hero118Demo} />;
}

Then replace the demo with your own props. Written out, a trimmed setup looks like this:

tsx
import { Hero118 } from "@/components/beste/block/hero118";

export default function Page() {
  return (
    <Hero118
      labels={{ trust: "500+ teams onboard" }}
      badge={{ label: "Product studio" }}
      heading="Structured work for teams that ship."
      description="No vague decks, no drift. Just scoped work that lands on time."
      button={{ label: "Brief the studio", href: "https://beste.co" }}
      avatars={[
        {
          src: "https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=80&h=80&fit=crop",
          alt: "Studio lead portrait",
        },
        {
          src: "https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=80&h=80&fit=crop",
          alt: "Designer portrait",
        },
      ]}
      image={{
        src: "https://images.unsplash.com/photo-1703485393247-b90b4424a1b4?w=900&h=1125&fit=crop",
        alt: "Two colleagues in conversation",
      }}
      testimonial={{
        rating: 5,
        quote: "Cut our launch timeline in half.",
        name: "Jordan Blake",
        title: "Head of Product",
      }}
    />
  );
}

Props

PropTypeDefaultDescription
labelsHero118Labels{}Small text overrides; currently just trust
badge{ label: string }Eyebrow rendered through Badge7
headingstringPlain-text headline (no HTML injection, unlike most other Hero blocks)
descriptionstringSupporting paragraph under the heading
buttonActionButtonCTA rendered through Button12
avatarsAvatar[][]Overlapping avatar stack shown next to the CTA
imageHeroImageTall portrait image for the right column
testimonialFloatingTestimonialStar-rated quote card floated over the image's bottom-right corner
classNamestringExtra classes for the outer <section>
ts
type Hero118Labels = {
  trust?: string;
};

type ActionButton = {
  label: string;
  href: string;
};

type Avatar = {
  src: string;
  alt: string;
};

type HeroImage = {
  src: string;
  alt: string;
};

type FloatingTestimonial = {
  rating: number;
  quote: string;
  name: string;
  title: string;
};

Behavior notes

  • heading renders as plain text ({heading}), not through dangerouslySetInnerHTML like most other blocks in this Hero set, so <strong> markup will not be interpreted here.
  • Avatars overlap with a negative margin (-space-x-3) and each carries a border-2 border-background ring so they read as a stack rather than a plain row; the trust label (from labels.trust) sits beside the stack through a second Badge7, and the whole trust row only renders when there is at least one avatar or a trust label.
  • The testimonial card is absolutely positioned over the image's bottom-right corner (bottom-6 right-6, md:bottom-8 md:right-8) with its width clamped to min(20rem, 82%) so it never overflows the image on narrow viewports.
  • Star rating is rendered by looping Array.from({ length: testimonial.rating }), so it only supports whole-number, fully-filled stars; there is no partial-star or "out of 5" denominator shown.
  • There is no animation, autoplay, or interactive state; the section is fully static aside from standard link/button hover styles.

More Hero blocks

View all Hero
PRO

hero38

Split Hero with Testimonial Card

Two-column hero with prominent testimonial quote card featuring author avatar and company info. Perfect for building trust and social proof.

PRO

hero112

Editorial Split Hero

Two-column studio hero with a two-tone headline, dual CTAs, tall image and a client wordmark strip.

PRO

hero61

Split Hero with Floating Feature Cards

Two-column hero with announcement banner, social proof metrics, and three floating feature cards with hover animations. Perfect for SaaS product launches.

PRO

hero121

Split Hero with Stats

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.

PRO

hero89

Reverse Split Hero with Testimonial

50/50 split hero with video/image left and content with testimonial quote right

PRO

hero175

Split Portrait Hero

A light split hero: eyebrow, a serif headline settling in word by word, intro, a sliding-marker pill and a text link on the left, and a portrait photograph drifting inside its frame on the right with a frosted avatar proof card overlapping its corner, under a slowly drifting soft light.