Zoeken...  ⌘K GitHub

HeroMinimal Hero

HeroMinimal component.

/hero-minimal
src/components/hero/HeroMinimal.astro
---
/**
 * HeroMinimal — strakke, typografische hero. Eyebrow, lichte headline,
 * sub en twee knoppen. Links uitgelijnd op de rail.
 *
 * Props:
 * - eyebrow?: string
 * - headline?: string
 * - sub?: string
 * - ctaPrimary?: { label: string; href: string }
 * - ctaSecondary?: { label: string; href: string }
 */
interface Props {
  eyebrow?: string;
  headline?: string;
  sub?: string;
  ctaPrimary?: { label: string; href: string };
  ctaSecondary?: { label: string; href: string };
}

const {
  eyebrow = 'Premium dienstverlening',
  headline = 'Groei die blijft.',
  sub = 'Wij bouwen campagnes die niet alleen converteren, maar ook duurzame merkwaarde creëren.',
  ctaPrimary = { label: 'Begin vandaag', href: '#' },
  ctaSecondary = { label: 'Meer weten', href: '#' },
} = Astro.props;
---

<section class="bl-section hm">
  <div class="bl-inner bl-inner--narrow hm-inner">
    {eyebrow && <p class="hm-eyebrow">{eyebrow}</p>}
    <h1 class="hm-headline">{headline}</h1>
    {sub && <p class="hm-sub">{sub}</p>}
    {(ctaPrimary || ctaSecondary) && (
      <div class="hm-actions">
        {ctaPrimary && <a href={ctaPrimary.href} class="hm-btn hm-btn--primary">{ctaPrimary.label}</a>}
        {ctaSecondary && <a href={ctaSecondary.href} class="hm-btn hm-btn--ghost">{ctaSecondary.label}</a>}
      </div>
    )}
  </div>
</section>

<style>
.hm{padding-block:8rem 7rem;background:#fff}
.hm-eyebrow{font-size:.6875rem;letter-spacing:.18em;text-transform:uppercase;color:#9ca3af;margin-bottom:1.5rem}
.hm-headline{font-size:clamp(2.5rem,5vw,5rem);font-weight:300;letter-spacing:-.04em;line-height:1.1;color:#0a0a0a;margin:0 0 1.5rem}
.hm-sub{font-size:1.0625rem;color:#6b7280;line-height:1.7;max-width:560px;margin:0 0 2.5rem}
.hm-actions{display:flex;gap:1rem;flex-wrap:wrap;justify-content:flex-start}
.hm-btn{display:inline-flex;align-items:center;padding:.75rem 2rem;font-size:.875rem;font-weight:500;letter-spacing:.04em;text-decoration:none;transition:background-color .2s,color .2s,border-color .2s}
.hm-btn--primary{background:#0a0a0a;color:#fff}
.hm-btn--primary:hover{background:#1a1a1a}
.hm-btn--ghost{border:1px solid #d1d5db;color:#374151}
.hm-btn--ghost:hover{border-color:#9ca3af;color:#0a0a0a}
</style>