Fast by default
Astro-first pages with lean HTML, sharp Core Web Vitals, and no unnecessary client JS.
Docs
Centered logo, CTAs, and Lucide feature boxes
Live preview
Centered hero with optional brand mark, clear CTAs, and a short set of feature highlights for what makes the product or offer distinct.
Astro-first pages with lean HTML, sharp Core Web Vitals, and no unnecessary client JS.
Drop in heroes, services, and CTAs — tune copy and layout props without fighting the system.
Tokens for color, type, and spacing so every block stays on-brand across light and dark.
File: src/blocks/hero/Hero08.astro
Centered hero with optional brand mark, CTAs, and a row of Lucide feature boxes.
blocks.ts → hero08)hero08: {
width: "wide",
logo: "/images/logo/baselayer-logo-black.svg",
logoDark: "/images/logo/baselayer-logo-white.svg",
logoAlt: "Baselayer",
logoSize: "md",
heading: "Ship a polished site without rebuilding the foundations",
subheading:
"Centered hero with optional brand mark, clear CTAs, and a short set of feature highlights for what makes the product or offer distinct.",
primaryCta: "View my work",
primaryCtaUrl: "/work/",
secondaryCta: "Get in touch",
secondaryCtaUrl: "/contact/",
features: [
{
icon: "zap",
title: "Fast by default",
description: "Astro-first pages with lean HTML, sharp Core Web Vitals, and no unnecessary client JS.",
},
{
icon: "layout-template",
title: "Composable blocks",
description: "Drop in heroes, services, and CTAs — tune copy and layout props without fighting the system.",
},
{
icon: "layers",
title: "Theme-ready",
description: "Tokens for color, type, and spacing so every block stays on-brand across light and dark.",
},
],
padding: "lg",
borderBottom: false,
borderThickness: "sm",
borderColor: "soft",
},
---
import Hero08 from "@/blocks/hero/Hero08.astro";
---
<Hero08 />
Props override matching keys from config:
<Hero08
width="wide"
heading="Custom headline"
padding="md"
/>
| Prop | Config key | Type / values | Default / notes |
|---|---|---|---|
width |
hero08.width |
standard | narrow | wide |
Wrapper max-width |
logo |
hero08.logo |
string |
Public path to logo; empty string hides |
logoDark |
hero08.logoDark |
string |
Optional logo for dark mode |
logoAlt |
hero08.logoAlt |
string |
— |
logoSize |
hero08.logoSize |
sm | md | lg | xl |
Logo mark height |
heading |
hero08.heading |
string |
— |
subheading |
hero08.subheading |
string |
— |
primaryCta |
hero08.primaryCta |
string |
— |
primaryCtaUrl |
hero08.primaryCtaUrl |
string |
— |
secondaryCta |
hero08.secondaryCta |
string |
— |
secondaryCtaUrl |
hero08.secondaryCtaUrl |
string |
— |
features |
hero08.features |
Array of { icon: string, title: string, description: string } (Lucide name) |
Feature boxes under the CTAs |
padding |
hero08.padding |
none | sm | md | lg | xl |
Vertical section padding |
borderBottom |
hero08.borderBottom |
boolean |
Show a bottom border under the section |
borderThickness |
hero08.borderThickness |
sm (1px) | md (2px) | lg (4px) |
— |
borderColor |
hero08.borderColor |
soft | medium | hard |
— |