Zoeken...  ⌘K GitHub

PartnerLogos Social Proof

Gecertificeerde partnerlogo's met tier-badge indicatie.

/partner-logos
src/components/social-proof/PartnerLogos.astro
---
/**
 * PartnerLogos
 * Gecertificeerde partnerlogo's met badge-stijl.
 */
interface Props {
  eyebrow?: string;
  headline?: string;
  partners: { name: string; badge?: string; src?: string; tier?: 'gold' | 'silver' | 'bronze' | 'partner' }[];
  bg?: 'white' | 'light';
}
const { eyebrow = 'Gecertificeerde partners', headline, partners, bg = 'white' } = Astro.props;
const tierColors: Record<string,string> = { gold: '#f59e0b', silver: '#9ca3af', bronze: '#b45309', partner: '#6366f1' };
---
<section class={`pl pl--${bg}`}>
  <div class="pl-inner">
    {eyebrow && <p class="pl-eyebrow">{eyebrow}</p>}
    {headline && <h2 class="pl-headline">{headline}</h2>}
    <div class="pl-grid">
      {partners.map(p => (
        <div class="pl-partner">
          {p.src
            ? <img src={p.src} alt={p.name} class="pl-img" />
            : <span class="pl-name">{p.name}</span>
          }
          {p.badge && <span class="pl-badge" style={p.tier ? `background: ${tierColors[p.tier] || '#6366f1'}` : ''}>{p.badge}</span>}
        </div>
      ))}
    </div>
  </div>
</section>
<style>
  .pl { padding: 4rem 2rem; }
  .pl--white { background: #fff; border-top: 1px solid #e5e7eb; }
  .pl--light { background: #f8fafc; border-top: 1px solid #e5e7eb; }
  .pl-inner { max-width: 1100px; margin: 0 auto; text-align: center; }
  .pl-eyebrow { font-size: 0.6875rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: #9ca3af; margin: 0 0 0.75rem; }
  .pl-headline { font-size: clamp(1.5rem, 3vw, 2rem); font-weight: 800; color: #0a0a0a; letter-spacing: -0.03em; margin: 0 0 2.5rem; }
  .pl-grid { display: flex; flex-wrap: wrap; justify-content: center; gap: 1rem; }
  .pl-partner { display: flex; flex-direction: column; align-items: center; gap: 0.625rem; padding: 1.5rem 2rem; border-radius: 0.875rem; min-width: 140px; position: relative; }
  .pl--white .pl-partner { background: #f8fafc; border: 1px solid #e5e7eb; }
  .pl--light .pl-partner { background: #fff; border: 1px solid #e5e7eb; box-shadow: 0 2px 10px rgba(0,0,0,0.04); }
  .pl-img { height: 36px; width: auto; filter: grayscale(0.4); }
  .pl-name { font-size: 1rem; font-weight: 800; color: #374151; }
  .pl-badge { font-size: 0.6875rem; font-weight: 700; padding: 0.2rem 0.625rem; background: var(--color-accent,#6366f1); color: #fff; border-radius: 1rem; letter-spacing: 0.04em; text-transform: uppercase; }
</style>

Props

Prop Type Default Beschrijving
partners * { name: string; badge?: string; src?: string; tier?: string }[] Partner items
eyebrow string Eyebrow
headline string Sectie headline
bg 'white' | 'light' Achtergrond variant

* = verplicht