Zoeken...  ⌘K GitHub

HeroCta Hero

Hero met inline email/lead form rechts naast de headline. Hogere conversie door directe actie.

/hero-cta
src/components/hero/HeroCta.astro
---
/**
 * HeroCta
 * Hero met inline email/lead form rechts naast de headline.
 * Split layout: tekst links, form card rechts.
 */
interface Props {
  eyebrow?: string;
  headline: string;
  sub?: string;
  formTitle?: string;
  formAction?: string;
  formPlaceholder?: string;
  submitLabel?: string;
  disclaimer?: string;
  trustItems?: string[];
}
const {
  eyebrow, headline, sub,
  formTitle = 'Start vandaag gratis',
  formAction = '#',
  formPlaceholder = 'jouw@email.nl',
  submitLabel = 'Aan de slag →',
  disclaimer,
  trustItems = [],
} = Astro.props;
---
<section class="hcf">
  <div class="hcf-inner">
    <div class="hcf-text">
      {eyebrow && <span class="hcf-eyebrow">{eyebrow}</span>}
      <h1 class="hcf-headline">{headline}</h1>
      {sub && <p class="hcf-sub">{sub}</p>}
      {trustItems.length > 0 && (
        <ul class="hcf-trust">
          {trustItems.map(t => <li class="hcf-trust-item"><span>✓</span>{t}</li>)}
        </ul>
      )}
    </div>
    <div class="hcf-card">
      <p class="hcf-form-title">{formTitle}</p>
      <form action={formAction} class="hcf-form">
        <input type="email" placeholder={formPlaceholder} class="hcf-input" required />
        <button type="submit" class="hcf-submit">{submitLabel}</button>
      </form>
      {disclaimer && <p class="hcf-disclaimer">{disclaimer}</p>}
    </div>
  </div>
</section>
<style>
  .hcf { padding: 5rem 2rem; background: linear-gradient(135deg, #f8fafc 0%, #fff 60%); }
  .hcf-inner { max-width: 1100px; margin: 0 auto; display: grid; grid-template-columns: 1fr 420px; gap: 4rem; align-items: center; }
  .hcf-eyebrow { display: inline-block; font-size: 0.75rem; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: var(--color-accent,#6366f1); margin-bottom: 1rem; }
  .hcf-headline { font-size: clamp(2rem, 3.5vw, 3.5rem); font-weight: 800; letter-spacing: -0.03em; line-height: 1.1; color: #0f172a; margin: 0 0 1.25rem; }
  .hcf-sub { font-size: 1.0625rem; color: #64748b; line-height: 1.65; margin: 0 0 2rem; }
  .hcf-trust { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 0.5rem; }
  .hcf-trust-item { display: flex; align-items: center; gap: 0.625rem; font-size: 0.9375rem; color: #334155; }
  .hcf-trust-item span { color: var(--color-accent,#6366f1); font-weight: 700; }
  .hcf-card { background: #fff; border-radius: 1rem; padding: 2rem; box-shadow: 0 4px 24px rgba(0,0,0,0.08), 0 0 0 1px rgba(0,0,0,0.04); }
  .hcf-form-title { font-size: 1.125rem; font-weight: 700; color: #0f172a; margin: 0 0 1.25rem; }
  .hcf-form { display: flex; flex-direction: column; gap: 0.75rem; }
  .hcf-input { padding: 0.8125rem 1rem; border: 1.5px solid #e2e8f0; border-radius: 0.5rem; font-size: 0.9375rem; outline: none; transition: border-color 0.2s; }
  .hcf-input:focus { border-color: var(--color-accent,#6366f1); }
  .hcf-submit { padding: 0.875rem 1rem; background: var(--color-accent,#6366f1); color: #fff; border: none; border-radius: 0.5rem; font-size: 0.9375rem; font-weight: 600; cursor: pointer; transition: opacity 0.2s; }
  .hcf-submit:hover { opacity: 0.9; }
  .hcf-disclaimer { font-size: 0.75rem; color: #94a3b8; margin-top: 0.75rem; line-height: 1.5; }
  @media (max-width: 768px) { .hcf-inner { grid-template-columns: 1fr; } }
</style>

Props

Prop Type Default Beschrijving
headline * string H1 tekst
formAction * string Form submit URL
eyebrow string Label boven headline
sub string Ondertitel
formTitle string Titel boven form
submitLabel string Submit knop tekst
disclaimer string Kleine tekst onder form
trustItems string[] Bullet punten links

* = verplicht