Split Hero with Timeline Steps

About this block

Split Hero with Timeline StepsPRO

50/50 split hero with content left and vertical numbered timeline overlay on video right

Hero102: Split Hero with Timeline Steps

True 50/50 split hero, not an inset-panel layout: a solid content pane on the left (heading, description, CTAs) and a full-bleed background video on the right with a connected vertical timeline of icon steps overlaid on top of it.

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

Base UI flavor

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

This installs the block to components/beste/block/hero102.tsx and its dependencies: the badge and button shadcn/ui primitives.

Quick start

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

tsx
import { Hero102, hero102Demo } from "@/components/beste/block/hero102";

export default function Page() {
  return <Hero102 {...hero102Demo} />;
}

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

tsx
import { Code, GitBranch, Rocket, TestTube } from "lucide-react";
import { Hero102 } from "@/components/beste/block/hero102";

export default function Page() {
  return (
    <Hero102
      badge={{ label: "How It Works", variant: "secondary" }}
      heading="From idea to production in four steps"
      description="A streamlined pipeline from commit to global deployment."
      buttons={[{ label: "Start Building", href: "/signup", variant: "default" }]}
      backgroundMedia={{ type: "video", src: "/videos/hero.mp4" }}
      timelineSteps={[
        { icon: Code, title: "Write Code", description: "Push to any Git branch" },
        { icon: TestTube, title: "Auto Test", description: "CI runs in parallel" },
        { icon: GitBranch, title: "Preview", description: "Instant preview URLs" },
        { icon: Rocket, title: "Deploy", description: "Ship to global edge" },
      ]}
    />
  );
}

Props

PropTypeDefaultDescription
badgeBadge–Pill shown above the heading
headingstring–Main headline
descriptionstring–Supporting copy under the heading
buttonsButtonItem[][]CTA buttons under the description
backgroundMediaBackgroundMedia–Video or image filling the right-hand pane
timelineStepsTimelineStep[][]Vertical icon steps overlaid on the video pane, in order
invertColorbooleantrueLeft pane switches between bg-black/90 with white text and bg-background with foreground text; also affects the video overlay and timeline colors
classNamestring–Extra classes for the outer <section>
ts
type Badge = { label: string; variant?: "default" | "secondary" | "outline" };
type ButtonItem = { label: string; href: string; variant?: "default" | "outline" };
type BackgroundMedia = { type: "image" | "video"; src: string; alt?: string };
type TimelineStep = { icon: LucideIcon; title: string; description: string };

Behavior notes

  • Layout is lg:flex with two equal flex-1 panes; below lg the panes stack vertically (content pane on top, video+timeline pane below with a min-h-[50vh] floor).
  • The timeline is a plain vertical list, not a carousel or scroll-triggered animation: each step is an icon circle connected to the next by a w-px vertical divider line, and the last step's connector is omitted (isLast check).
  • The left content pane is a solid, opaque panel (bg-black/90 or bg-background) rather than transparent over the video, so it reads as two visually distinct halves rather than one continuous background.
  • The right pane's video is full-bleed (absolute inset-0) with a flat color overlay (bg-black/50 or bg-background/60) behind the timeline, unlike the rounded inset-panel treatment used in most other heroes in this set.
  • Video backgrounds autoplay muted and loop; backgroundMedia.type also accepts "image".

More Hero blocks

View all Hero
PRO

hero84

Split Hero with Edge-to-Edge Media

PRO

hero89

Reverse Split Hero with Testimonial

PRO

hero91

Split Hero with Feature List Panel

Get Pro access