Two-By-Two With Icon Tiles

Centered headline, four feature tiles in a 2x2 grid, and a CTA. Each tile leads with a large Lucide icon and a short description.

FREE

Feature4: Two-By-Two With Icon Tiles

Centered headline and description above a fixed two-column grid of icon-led feature tiles, closed by a row of CTA buttons. There is no badge prop, so the header is copy-only.

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/feature4"

Base UI flavor

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

This installs the block to components/beste/block/feature4.tsx and the shadcn/ui button component it depends on.

Quick start

The installed file exports feature4Demo alongside the block: the exact props behind the preview above. Spread it to get a working two-by-two feature grid in one line.

tsx
import { Feature4, feature4Demo } from "@/components/beste/block/feature4";

export default function Page() {
  return <Feature4 {...feature4Demo} />;
}

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

tsx
import { BarChart3, Rocket, Target, Users } from "lucide-react";
import { Feature4 } from "@/components/beste/block/feature4";

export default function Page() {
  return (
    <Feature4
      heading="Why teams pick our agency"
      description="We combine data-driven strategy with creative execution."
      features={[
        { icon: BarChart3, title: "Data-driven strategies", description: "Every campaign is backed by analytics." },
        { icon: Users, title: "Expert team and support", description: "A dedicated lead for every account." },
        { icon: Rocket, title: "Multi-channel approach", description: "One integrated plan across channels." },
        { icon: Target, title: "Results-focused campaigns", description: "Measured against revenue impact." },
      ]}
      buttons={[{ label: "Get started today", href: "/contact" }]}
    />
  );
}

Props

PropTypeDefaultDescription
headingstringSection heading; there is no badge prop on this block
descriptionstringSection intro text
featuresFeatureItem[][]Icon-led tiles in the 2x2 grid
buttonsButtonItem[][]CTA buttons below the grid
classNamestringExtra classes for the outer <section>
ts
type FeatureItem = {
  icon?: LucideIcon;
  title: string;
  description: string;
};

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

Behavior notes

More Feature blocks

View all Feature
FREE

feature5

Compact Two-Column Capabilities

Left-aligned headline followed by a compact two-column grid of capability rows. Each row leads with a Lucide icon.

PRO

feature199

Feature with Side Heading and Icon Grid

Two-column feature section with a large heading on the left and a 2x2 grid of feature cards on the right, each with a large badge icon, title, and description.

FREE

feature3

Service Grid With Icons

Centered header, three-column grid of capability cards, and an optional CTA with bottom text. Each card leads with a Lucide icon.

PRO

feature160

Centered Icon Cards Grid

4-column grid of feature icons with titles and descriptions below. Perfect for capability highlights, feature icons, or simple feature grid.

PRO

feature233

Compact two-column icon feature list

A header with a badge, heading, and description, followed by many compact items in a two-column grid — each a lucide icon in a rounded bg-muted tile beside a title and one-line description.

PRO

feature203

Feature with Stats Grid and Image

Two-column feature section with heading, description, and a 2x2 stats grid (icon card, value, label) on one side and a square image on the other. Image position is configurable.