Staaarter

Layered Screens Hero

Split hero with a feature checklist on one side and two overlapping browser-frame screenshots on the other. Perfect for products with more than one view or workflow to show off at a glance.

By Staaarter Team
Hero
Docs
Live preview

Docs

Installation

A real shadcn registry command, not a copy-paste stand-in: it fetches this block plus its button, media-slot dependencies and any missing npm packages, and installs them straight into your project.

npx shadcn add https://staaarter.com/r/layered-screens-hero.json

Prefer not to use the CLI? Copy the source from the Code toggle above into src/components/blocks/hero/hero4.tsx instead.

Usage

The file also exports hero4Demo, the exact props behind the preview above. Spread it to get a working section in one line, then replace it with your own data.

import { Hero4, hero4Demo } from "@/components/blocks/hero/hero4";

export default function Page() {
  return <Hero4 {...hero4Demo} />;
}

Props

PropTypeDefaultDescription
headingReactNodenoneMain headline.
descriptionstringundefinedSupporting subtext below the heading.
checklistChecklistItem[][]Checkmark list below the description.
buttonsButtonItem[][]CTA buttons below the checklist.
screens[MediaSlotImage?, MediaSlotImage?][]The two overlapping browser-frame screenshots; each falls back to a placeholder when omitted.
classNamestringnoneExtra classes for the outer section element.

Types

type ChecklistItem = { text: string };

type ButtonItem = {
  label: string;
  href?: string;
  variant?: "default" | "secondary" | "outline" | "ghost" | "link" | "destructive";
};

Behavior notes

  • The two browser frames are fixed, decorative window chrome (three dots, no real tab/URL bar) with a slight opposing rotation for depth; positions are hardcoded, not driven by the screens array's length.
  • Each frame independently falls back to MediaSlot's placeholder icon when its screens entry (or the whole screens array) is omitted, so the layout still looks complete without real screenshots.
  • Checklist and buttons are each independently optional.