src/components/icon/IconHero.astro
---
interface HeroIcon {
icon: string;
label: string;
}
interface Props {
icons?: HeroIcon[];
title?: string;
subtitle?: string;
cta?: string;
ctaHref?: string;
}
const {
icons = [
{ icon: '📊', label: 'Analytics' }, { icon: '🎯', label: 'Ads' }, { icon: '✏️', label: 'Design' },
{ icon: '🔍', label: 'SEO' }, { icon: '📱', label: 'Social' }, { icon: '🌐', label: 'Web' },
{ icon: '📧', label: 'E-mail' }, { icon: '🏆', label: 'Awards' }, { icon: '📈', label: 'Groei' },
{ icon: '🎥', label: 'Video' }, { icon: '🤝', label: 'Partner' }, { icon: '⚡', label: 'Snel' },
],
title = 'Volledig digitaal bureau',
subtitle = 'Van ads tot design, van web tot SEO — alles voor jouw groei.',
cta = 'Start een project',
ctaHref = '#',
} = Astro.props;
---
<section class="ihr">
<div class="ihr__bg-icons" aria-hidden="true">
{icons.map((ic) => (
<span class="ihr__bg-icon">{ic.icon}</span>
))}
</div>
<div class="ihr__overlay">
<div class="ihr__content">
<h1 class="ihr__title">{title}</h1>
<p class="ihr__subtitle">{subtitle}</p>
{cta && <a class="ihr__cta" href={ctaHref}>{cta}</a>}
</div>
</div>
</section>
<style>
:root {
--color-accent: #6366f1;
--color-primary: #0a0a0a;
}
.ihr {
position: relative;
min-height: 480px;
overflow: hidden;
background: #fafafa;
display: flex;
align-items: center;
justify-content: center;
border-radius: 16px;
}
.ihr__bg-icons {
position: absolute;
inset: 0;
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 0;
}
.ihr__bg-icon {
display: flex;
align-items: center;
justify-content: center;
font-size: 2.5rem;
opacity: 0.12;
padding: 1.5rem;
filter: grayscale(0.5);
}
.ihr__overlay {
position: absolute;
inset: 0;
background: linear-gradient(135deg, rgba(99,102,241,0.08) 0%, rgba(255,255,255,0.9) 60%);
display: flex;
align-items: center;
justify-content: center;
}
.ihr__content {
text-align: center;
z-index: 1;
padding: 2rem;
max-width: 600px;
}
.ihr__title {
font-size: clamp(2rem, 5vw, 3.5rem);
font-weight: 900;
color: var(--color-primary, #0a0a0a);
margin: 0 0 1rem;
line-height: 1.1;
}
.ihr__subtitle {
font-size: 1.1rem;
color: #666;
margin: 0 0 2rem;
line-height: 1.6;
}
.ihr__cta {
display: inline-block;
padding: 0.9rem 2.25rem;
background: var(--color-accent, #6366f1);
color: #fff;
text-decoration: none;
border-radius: 8px;
font-weight: 700;
transition: transform 0.2s, opacity 0.2s;
}
.ihr__cta:hover { transform: translateY(-2px); opacity: 0.9; }
</style>