Skip to content
BaseLayer Themes

Hero 02

Split hero with review avatars, stars, and review count

Live preview

Developer workspace with laptop

from 128 reviews

I build websites that work as hard as you do!

Full-stack web development for brands that need speed, clarity, and craft. Astro, React, headless CMS, and everything in between.

File: src/blocks/hero/Hero02.astro

Split hero like Hero 01, with a review row (avatars, stars, count) instead of an eyebrow.

Config (blocks.tshero02)

Stats reuse siteConfig.stats.items unless you pass a stats prop.

hero02: {
    width: "standard",
    heading: "I build websites that work as hard as you do!",
    subheading:
      "Full-stack web development for brands that need speed, clarity, and craft. Astro, React, headless CMS, and everything in between.",
    primaryCta: "View my work",
    primaryCtaUrl: "/work/",
    secondaryCta: "Get in touch",
    secondaryCtaUrl: "/contact/",
    showStats: false,
    image: photos.interior,
    imageAlt: "Developer workspace with laptop",
    imageAspectRatio: "3/4",
    imagePosition: "right",
    padding: "lg",
    borderBottom: false,
    borderThickness: "sm",
    borderColor: "soft",
    rating: 5,
    reviewCount: 128,
    reviewAvatars: [
      { src: photos.karla, alt: "Sarah Chen" },
      { src: photos.edgar, alt: "Marcus Webb" },
      { initials: "ER", alt: "Elena Ruiz" },
    ],
  },

Add to a page

---
import Hero02 from "@/blocks/hero/Hero02.astro";
---

<Hero02 />

Props override matching keys from config:

<Hero02
  width="wide"
  heading="Custom headline"
  showStats={false}
/>

Props

Prop Config key Type / values Default / notes
width hero02.width standard | narrow | wide Wrapper max-width
heading hero02.heading string
subheading hero02.subheading string
primaryCta hero02.primaryCta string
primaryCtaUrl hero02.primaryCtaUrl string
secondaryCta hero02.secondaryCta string
secondaryCtaUrl hero02.secondaryCtaUrl string
showStats hero02.showStats boolean Render stats row under CTAs
stats hero02.stats Array of { value: string, label: string } Override stats.items when showStats is true
image hero02.image ImageMetadata (photos.*) or public path string — see Images Pass empty string to hide (where supported)
imageAlt hero02.imageAlt string
imageAspectRatio hero02.imageAspectRatio string CSS aspect-ratio value (e.g. 3/4)
imagePosition hero02.imagePosition left | right Desktop image side; mobile stacking varies by block
reviewAvatars hero02.reviewAvatars Array of { src?: LocalImageSource, initials?: string, alt: string }
reviewCount hero02.reviewCount number | string Shown as “from {reviewCount} reviews”
rating hero02.rating number Star rating out of 5
padding hero02.padding none | sm | md | lg | xl Vertical section padding
borderBottom hero02.borderBottom boolean Show a bottom border under the section
borderThickness hero02.borderThickness sm (1px) | md (2px) | lg (4px)
borderColor hero02.borderColor soft | medium | hard

Avatar src should use photos.*Images.

← Hero versions · Blocks overview · Images