Two-By-Two With Icon Tiles

Why teams pick our digital marketing agency

We combine data-driven strategies with creative excellence to help brands achieve measurable growth in the digital landscape.

Data-driven strategies

Every campaign is backed by analytics and market research. Performance is tracked in real time so the budget always lands where it should.

Expert team and support

Certified specialists in SEO, PPC, social, and content. Each account gets a dedicated lead who understands the business goals end to end.

Multi-channel approach

From search to social, campaigns run as a single integrated plan. The brand voice stays consistent everywhere your audience shows up.

Results-focused campaigns

We measure quality leads and conversions, not just traffic. The performance bar is set against revenue impact from day one.

About this block

Two-By-Two With Icon TilesFREE

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

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

  • There is no badge prop at all on this block, so the header is limited to heading and description, unlike most other feature blocks in this set.
  • The grid is a fixed md:grid-cols-2 regardless of item count, but with an unusually wide horizontal gap (md:gap-x-32) that visually separates the two columns instead of reading as a tight grid.
  • Icons are rendered at size-8 with mb-6 spacing, noticeably larger and more spaced than feature3/feature5's size-6 icons, giving each tile a bigger visual anchor.
  • features and buttons are gated independently by their own .length > 0 checks, so either can be supplied without the other.

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

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

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

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.