heroes /
BP Centered Hero (Editorial Logo + CTA)
Calm centered editorial hero: large brand logo, single-sentence headline (max 20ch), generous subhead, dark primary CTA + secondary text link, micro-copy guarantee strip below. Zero JS. Extracted from the Beautiful Possibilities /bp2 production landing page.
Preview
Source
tsx
export interface BpCenteredHeroProps {
logoSrc?: string;
logoAlt?: string;
headline?: string;
subhead?: string;
primaryCta?: { label: string; href: string };
secondaryLink?: { label: string; href: string };
microCopy?: string;
}
export default function BpCenteredHero({
logoSrc = "/heroes/bp/logo.png",
logoAlt = "Beautiful Possibilities",
headline = "Your website should move as fast as your ideas.",
subhead = "I rebuild WordPress sites using AI and a modern web stack — so you can launch new pages, offers, and experiments the same day you think of them. Faster. Safer. Actually yours.",
primaryCta = { label: "Get my free site review", href: "#" },
secondaryLink = { label: "See how it works", href: "#how-it-works" },
microCopy = "10-day migrations · 30-day rollback guarantee · Zero lock-in, ever",
}: BpCenteredHeroProps) {
return (
<section className="px-6 py-20 lg:py-28 bg-white text-slate-900">
<div className="mx-auto max-w-[1040px] text-center">
<img
src={logoSrc}
alt={logoAlt}
width={144}
height={144}
className="h-28 sm:h-36 w-auto mx-auto mb-12 sm:mb-16"
loading="eager"
fetchPriority="high"
decoding="async"
/>
<h1 className="font-medium text-[32px] sm:text-[44px] lg:text-[52px] leading-[1.05] tracking-[-0.02em] text-slate-900 max-w-[20ch] mx-auto">
{headline}
</h1>
<p className="mt-8 text-[17px] sm:text-[18px] font-normal leading-[1.6] text-slate-700 max-w-[58ch] mx-auto">
{subhead}
</p>
<div className="mt-10 flex flex-wrap items-center justify-center gap-x-7 gap-y-4">
<a
href={primaryCta.href}
className="inline-flex items-center gap-2 bg-slate-900 text-white px-7 py-3.5 text-[15px] font-medium rounded-md transition-opacity hover:opacity-90"
>
{primaryCta.label}
<span aria-hidden="true" className="text-[0.9em]">↗</span>
</a>
<a
href={secondaryLink.href}
className="inline-flex items-center gap-1.5 text-[15px] font-normal text-slate-700 hover:text-slate-900 transition-colors"
>
{secondaryLink.label}
<span aria-hidden="true">→</span>
</a>
</div>
<p className="mt-10 text-[13px] font-normal text-slate-500 leading-[1.5]">
{microCopy}
</p>
</div>
</section>
);
} Claude Code Instructions
CLI Install
npx innovations add bp-centeredWhere to use it
Use this when you want maximum focus on a single sentence + brand identity. Especially good for personal brands, services, agencies, or anywhere you need a calm centered hero with no visual competition.
In Astro:
---
import BpCenteredHero from '../components/innovations/heroes/bp-centered';
---
<BpCenteredHero />
In Next.js:
import BpCenteredHero from '@/components/innovations/heroes/bp-centered';
No client:* required — server-renderable, ships zero JS.
CUSTOMIZATION:
<BpCenteredHero
logoSrc="/your-logo.png"
headline="Your single-sentence promise."
subhead="Two-or-three-sentence elaboration..."
primaryCta={{ label: "Get started", href: "/start" }}
secondaryLink={{ label: "How it works", href: "#how" }}
microCopy="Trust signal · Trust signal · Trust signal"
/>
LOGO: replace logoSrc with your brand. The current 28-36 height (h-28 sm:h-36) reads as a strong, intentional brand statement — not a tiny corner mark. Keep aspect ratio similar (square-ish or slightly tall).
HEADLINE: max-w-[20ch] keeps the headline at ~20 characters per line for that "wraps at the right beat" editorial feel. If your headline is longer, it'll naturally wrap; the constraint just gives line breaks rhythm.
PALETTE: pure white bg + slate text + slate-900 CTA. To rebrand, swap the slate Tailwind classes for your accent + body palette.