IconHighlight icon
Highlight-panel met accent-rand links, sectiekop, sub en een feature-lijst met optioneel icoon per item.
src/components/icon/IconHighlight.astro
---
/**
* IconHighlight
* Highlight-panel met accent-rand links, kop, sub en een lijst van features
* met optioneel icoon per item. Compact informatieblok.
*
* Props:
* - headline: string
* - sub?: string
* - items: { icon?: string; label: string }[]
* - accentColor?: string default '#6366f1'
* - theme?: 'light' | 'dark' default 'light'
*/
interface Props {
headline: string;
sub?: string;
items: { icon?: string; label: string }[];
accentColor?: string;
theme?: 'light' | 'dark';
}
const { headline, sub, items, accentColor = '#6366f1', theme = 'light' } = Astro.props;
---
<section class:list={['bl-section', 'ihl', `ihl--${theme}`]}>
<div class="bl-inner ihl-inner">
<div class="ihl-wrap" style={`--color-accent: ${accentColor}`}>
<div class="ihl-head">
<h2 class="ihl-headline">{headline}</h2>
{sub && <p class="ihl-sub">{sub}</p>}
</div>
<ul class="ihl-list">
{items.map(item => (
<li class="ihl-item">
{item.icon && <span class="ihl-icon" aria-hidden="true">{item.icon}</span>}
<span class="ihl-label">{item.label}</span>
</li>
))}
</ul>
</div>
</div>
</section>
<style>
.ihl--light { background: var(--color-bg, #fff); }
.ihl--dark { background: #0a0a0a; }
.ihl-wrap {
border-left: 4px solid var(--color-accent);
background: color-mix(in srgb, var(--color-accent) 6%, #f8f8f8);
border-radius: 0 12px 12px 0;
padding: 2rem 2.25rem;
max-width: 640px;
}
.ihl--dark .ihl-wrap {
background: color-mix(in srgb, var(--color-accent) 8%, #111);
}
.ihl-head { margin-bottom: 1.5rem; }
.ihl-headline {
margin: 0 0 .5rem;
font-size: 1.4rem;
font-weight: 800;
color: var(--color-primary, #0a0a0a);
line-height: 1.2;
}
.ihl--dark .ihl-headline { color: #e8e8e8; }
.ihl-sub {
margin: 0;
font-size: 1rem;
color: #4b5563;
line-height: 1.6;
}
.ihl--dark .ihl-sub { color: #aaa; }
.ihl-list {
list-style: none;
margin: 0;
padding: 0;
display: flex;
flex-direction: column;
gap: .5rem;
}
.ihl-item {
display: flex;
align-items: center;
gap: .75rem;
}
.ihl-icon {
font-size: 1rem;
flex-shrink: 0;
color: var(--color-accent);
}
.ihl-label {
font-size: .95rem;
font-weight: 600;
color: #1f2937;
line-height: 1.4;
}
.ihl--dark .ihl-label { color: #e8e8e8; }
</style>
Props
| Prop | Type | Default | Beschrijving |
|---|---|---|---|
headline * | string | - | Kop van het highlight-paneel |
sub | string | - | Subkop of toelichting |
items * | { icon?: string; label: string }[] | - | Feature-items met optioneel icoon |
accentColor | string | '#6366f1' | Kleur van de accent-rand en iconen |
theme | 'light' | 'dark' | 'light' | Achtergrondmodus |
* = verplicht