Alternating Rows With Mixed MediaFREE

Hero header with a CTA, then alternating image-left / image-right rows. Each row's media slot accepts an image, video, or live registry-component asset.

Feature2: Alternating Rows With Mixed Media

Header with a badge, heading, description, and CTA buttons, followed by a stack of rows that alternate media-left/media-right by position. Each row's media slot follows the Media Slot Standard, so it can hold a static image, a looping video, or a live registry-piece asset.

Free block

This block is free. No license or account is required: install it with the CLI and use it in unlimited projects.

Installation

Radix flavor

bash
npx shadcn add "https://ui.beste.co/r/feature2"

Base UI flavor

bash
npx shadcn add "https://ui.beste.co/r-base/feature2"

This installs the block to components/beste/block/feature2.tsx, the shadcn/ui badge and button components it depends on, and the browser27, browser28, and calendar19 pieces it embeds as media-slot fillers (installed to components/beste/piece/{name}.tsx).

Quick start

The installed file exports feature2Demo alongside the block: the exact props behind the preview above. Spread it to get a working alternating-rows section in one line.

tsx
import { Feature2, feature2Demo } from "@/components/beste/block/feature2";

export default function Page() {
  return <Feature2 {...feature2Demo} />;
}

Then replace the demo with your own props. Written out, a trimmed setup mixing an image row and a live-asset row looks like this:

tsx
import { Browser27 } from "@/components/beste/piece/browser27";
import { Feature2 } from "@/components/beste/block/feature2";

export default function Page() {
  return (
    <Feature2
      badge={{ label: "Product tour", variant: "secondary" }}
      heading="Three pieces of the toolkit"
      description="Tiny cards you can drop into hero shots and product walkthroughs."
      buttons={[{ label: "Read the playbook", href: "/playbook" }]}
      rows={[
        {
          title: "Site identity, made glanceable",
          description: "A site-info popover that mirrors browser chrome users already know.",
          media: { type: "component", component: <Browser27 domain="acme.com" /> },
        },
        {
          title: "Show the finished product",
          description: "A static screenshot of the workspace your customers land in.",
          media: {
            type: "image",
            src: "https://images.unsplash.com/photo-1551288049-bebda4e38f71?w=1200&h=675&fit=crop",
            alt: "Dashboard screen",
          },
        },
      ]}
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string; variant?: "default" | "secondary" | "outline" }Badge above the heading
headingstringSection heading
descriptionstringSection intro text
buttonsButtonItem[][]CTA buttons below the description
rowsFeatureRow[][]Alternating media/copy rows
classNamestringExtra classes for the outer <section>
ts
type ButtonItem = {
  label: string;
  href?: string;
  variant?: "default" | "secondary" | "outline" | "ghost" | "link" | "destructive";
};

type FeatureRow = {
  title: string;
  description: string;
  media: RowMedia;
};

type RowMedia =
  | { type: "image"; src: string; alt?: string }
  | { type: "video"; src: string; alt?: string }
  | {
      type: "component";
      component: React.ReactNode;
      background?: ComponentBackground;
    };

type ComponentBackground =
  | { type: "dots" }
  | { type: "none" }
  | { type: "image"; src: string; alt?: string }
  | { type: "video"; src: string; alt?: string };

Behavior notes

More Feature blocks

View all Feature
PRO

feature211

Alternating Features

Alternating image-and-copy feature rows with checklists.

PRO

feature248

Alternating Proof Rows

Feature rows that alternate the image side on every second entry, each pairing an eyebrow, display title and explanation with one oversized outcome figure on its own rule, headed by an outline pill CTA pinned to the top right.

PRO

feature187

Two-Column Alternating Cards over Media

Alternating two-column feature cards with large icons over background media, left-right zigzag layout

FREE

feature194

Three Cards With Asset Media

Three feature cards that swap an icon for a real micro-asset: a bar chart, a before/after stat, and a terminal prompt. Demonstrates how registry-pieces drop into block media slots.

FREE

feature1

Accordion With Live Media

Accordion on the left, swappable media surface on the right. Each row picks its own media kind: image, video, or live registry-component asset.

PRO

feature206

Centered Heading with CTA and Icon Row

Centered service-style block with optional badge, large heading, description, primary CTA buttons, and a row of icon-prefixed items below. Each item icon defaults to a check, and the row collapses to a stack on mobile.

Markdown version