Split Hero with 3D Tilt Effect

3D Experience

Interactive design that delights

Create immersive experiences with our interactive components. Hover over the card to see the 3D effect.

Dashboard preview
About this block

Split Hero with 3D Tilt EffectPRO

Two-column hero with interactive image card that tilts in 3D on mouse movement with shine effect. Perfect for showcasing premium or interactive products.

Hero51: Split Hero with 3D Tilt Effect

Two-column hero where the image side is a pointer-reactive card: moving the cursor over it tilts the card in 3D toward the pointer and sweeps a diagonal shine across the surface, then eases back flat on pointer leave.

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/hero51?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

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

This installs the block to components/beste/block/hero51.tsx and its shadcn/ui dependencies: Badge, Button.

Quick start

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

tsx
import { Hero51, hero51Demo } from "@/components/beste/block/hero51";

export default function Page() {
  return <Hero51 {...hero51Demo} />;
}

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

tsx
import { Hero51 } from "@/components/beste/block/hero51";

export default function Page() {
  return (
    <Hero51
      badge={{ label: "3D Experience", variant: "outline" }}
      heading="Interactive design that delights"
      description="Hover over the card to see the 3D effect."
      buttons={[
        { label: "Try It Now", href: "https://beste.co", icon: "arrow-right" },
        { label: "View Examples", href: "https://beste.co", variant: "outline" },
      ]}
      image={{
        src: "https://images.unsplash.com/photo-1551288049-bebda4e38f71?w=1200&h=900&fit=crop",
        alt: "Dashboard preview",
      }}
      displayPosition="left"
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string; variant?: "default" | "secondary" | "outline" }Pill above the heading
headingstringMain heading
descriptionstringSupporting paragraph
buttonsButtonItem[][]CTA buttons, each with an optional trailing icon
image{ src: string; alt: string }Image inside the tilting card
displayPosition"left" | "right""left"Which side the tilting card renders on
classNamestringExtra classes for the outer <section>
ts
type ButtonItem = {
  label: string;
  href?: string;
  variant?: "default" | "secondary" | "outline" | "ghost";
  icon?: "arrow-right" | "chevron-right" | "external-link";
};

Behavior notes

  • displayPosition describes where the image card sits, not the text: "left" (the default) puts the text column in lg:order-2 and the card in lg:order-1, so the card renders on the left and text on the right; "right" reverses both orders.
  • The tilt is computed on every onPointerMove: the pointer's position inside the card's bounding rect is converted to rotateX/rotateY degrees (offset from center, divided by 10) and applied as an inline transform on a wrapper with perspective: 1000px and transformStyle: preserve-3d; the card also scales to 1.02 while hovering. onPointerLeave resets rotation to 0 and clears the hover flag.
  • A shine overlay (pointer-events-none, absolutely positioned) uses an inline linear-gradient whose angle shifts with rotation.y * 2, fading in to opacity: 0.15 on hover and back to 0 over duration-300 on leave, giving the sweep its own independent fade separate from the tilt transform.
  • The transform uses onPointerMove/onPointerEnter/onPointerLeave (not mouse-specific events), so the same handlers also fire for touch and pen input on capable devices.

More Hero blocks

View all Hero
PRO

hero35

Split Hero with Video Player

Two-column hero with playable video (or image), play button overlay, and key stats row. Perfect for product demos and feature announcements.

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

hero107

Mobile Hero with 3D Perspective Phone

Fullscreen split hero with content left and 3D perspective-tilted phone mockup right over inset background video

PRO

hero90

Stacked Hero with Media Top

Vertical split hero with video/image on top and content section below

FREE

hero20

Split Carousel with Thumbnails

Two-column carousel with animated content transitions, thumbnail strip navigation, and vertical progress indicator. Perfect for product showcases and feature highlights.

PRO

hero93

Asymmetric Split Hero with Quick Links

40/60 asymmetric split hero with narrow content panel and vertical quick links over video