Hero with Feature List and Image

Building trust in data center solutions.

With 37 years of experience and a certified technical team, we deliver end-to-end projects from data center to electrical infrastructure, network systems, and low-current installations. Right analysis, right engineering, right budget.

  • Engineered to international standards.
  • Long-lasting, uninterrupted solutions.
  • Every step controlled by our in-house team.
  • Certified, audit-ready documentation.
Modern data center infrastructure
About this block

Hero with Feature List and ImagePRO

Two-column hero with heading, description, icon-only feature list, and CTA on one side and a square image on the other. Image position is configurable.

Hero111: Hero with Feature List and Image

Two-column hero pairing a heading, description, and a short list of icon-led proof points with a square product or facility image. The image side can swap to either column through displayPosition, and the heading supports an inline highlighted phrase.

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

Base UI flavor

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

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

Quick start

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

tsx
import { Hero111, hero111Demo } from "@/components/beste/block/hero111";

export default function Page() {
  return <Hero111 {...hero111Demo} />;
}

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

tsx
import { ShieldCheck, Users, Zap } from "lucide-react";
import { Hero111 } from "@/components/beste/block/hero111";

export default function Page() {
  return (
    <Hero111
      heading="Infrastructure built to <strong>outlast</strong> the warranty."
      description="Twenty years of commercial electrical and network installs, backed by a certified in-house crew."
      displayPosition="left"
      features={[
        { title: "Licensed and insured on every job", icon: ShieldCheck },
        { title: "24/7 emergency response team", icon: Zap },
        { title: "Dedicated project manager", icon: Users },
      ]}
      buttons={[{ label: "Request a quote", href: "https://beste.co" }]}
      image={{
        src: "https://images.unsplash.com/photo-1581092160562-40aa08e78837?w=1200&h=1200&fit=crop",
        alt: "Electrician inspecting server room wiring",
      }}
    />
  );
}

Props

PropTypeDefaultDescription
headingstring–Headline HTML; wrap a phrase in <strong> to highlight it in the primary color
descriptionstring–Supporting paragraph under the heading
featuresFeatureItem[][]Icon-led proof points listed under the description
buttonsButtonItem[][]CTA row rendered below the feature list
image{ src: string; alt: string }–Square image for the opposite column
displayPosition"left" | "right""right"Which side the image renders on; the copy column takes the other side
classNamestring–Extra classes for the outer <section>
ts
type FeatureItem = {
  title: string;
  icon: LucideIcon;
};

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

Behavior notes

  • heading is rendered with dangerouslySetInnerHTML, so any <strong> tag inside it picks up text-primary styling; there is no separate highlight prop.
  • displayPosition flips the lg:order-* classes on both the copy column and the image column, so at desktop widths either column can lead; below the lg breakpoint the layout always stacks copy first, image second.
  • The feature list is static: each row is an icon plus a single line of text with no links, counters, or checkmarks beyond whatever icon is passed in.
  • The image sits in a fixed aspect-square box with object-cover, so non-square source images get cropped rather than letterboxed.
  • There is no animation; the section renders in its final state on mount.

More Hero blocks

View all Hero
FREE

hero68

Centered Hero with Feature Icons

PRO

hero150

Offset Image Pair Hero

PRO

hero120

Editorial Image Hero

Get Pro access