forked from UKSOURCE/ipv6
58 lines
2.2 KiB
TypeScript
58 lines
2.2 KiB
TypeScript
export default function AgendaSection({
|
|
data,
|
|
}: {
|
|
data: {
|
|
id: string;
|
|
eyebrow: string;
|
|
title: string;
|
|
description: string;
|
|
items: { order: string; time: string; title: string; description: string }[];
|
|
};
|
|
}) {
|
|
return (
|
|
<section className="py-16 lg:py-24 max-w-hd mx-auto px-[var(--spacing-gutter)]" id={data.id}>
|
|
<div className="flex flex-col lg:flex-row justify-between lg:items-end mb-12 lg:mb-24 gap-8">
|
|
<div className="max-w-3xl">
|
|
<span className="font-[var(--font-label-caps)] text-xs lg:text-sm text-primary block mb-4 lg:mb-8 tracking-[0.25em]">
|
|
{data.eyebrow}
|
|
</span>
|
|
<h2 className="font-[var(--font-display-lg)] text-on-surface uppercase tracking-tight text-[clamp(1.75rem,3vw+1rem,3.5rem)]">
|
|
{data.title}
|
|
</h2>
|
|
</div>
|
|
<p className="text-on-surface-variant/60 text-base lg:text-lg max-w-md xl:text-right">
|
|
{data.description}
|
|
</p>
|
|
</div>
|
|
|
|
<div className="grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-6 lg:gap-10">
|
|
{data.items.map((item) => (
|
|
<div
|
|
key={item.order}
|
|
className="glass-panel p-6 lg:p-10 rounded-3xl relative overflow-hidden group hover:border-primary/60 transition-colors"
|
|
>
|
|
<div className="absolute top-0 right-0 p-6 lg:p-8">
|
|
<span className="font-[var(--font-display-lg)] text-xl lg:text-[32px] text-primary/20 group-hover:text-primary transition-colors">
|
|
{item.order}
|
|
</span>
|
|
</div>
|
|
<div className="mb-6 lg:mb-10">
|
|
<span className="font-[var(--font-display-lg)] text-xl lg:text-[28px] text-primary">
|
|
{item.time}
|
|
</span>
|
|
</div>
|
|
<h3 className="font-[var(--font-display-lg)] text-lg lg:text-[24px] text-on-surface mb-3 lg:mb-4">
|
|
{item.title}
|
|
</h3>
|
|
<p className="text-xs lg:text-base text-on-surface-variant/80 leading-relaxed mb-6 lg:mb-8">
|
|
{item.description}
|
|
</p>
|
|
<div className="w-full h-1 bg-primary/10 group-hover:bg-primary transition-colors duration-500" />
|
|
</div>
|
|
))}
|
|
</div>
|
|
</section>
|
|
);
|
|
}
|
|
|