Files
cachetdeco/src/components/ui/services.tsx
mouad bouras 5121ba1852
Some checks failed
Build and Deploy / build-and-deploy (push) Has been cancelled
cleanup and cms migration
2026-03-23 20:45:24 -04:00

65 lines
2.2 KiB
TypeScript

export interface Feature {
name: string
description: string
imageSrc: string
imageAlt: string
}
interface WithAlternatingSectionsProps {
features: Feature[]
title?: string
subtitle?: string
}
function classNames(...classes: (string | boolean | undefined)[]) {
return classes.filter(Boolean).join(' ')
}
export default function WithAlternatingSections({
features,
title = 'Nos services',
subtitle = 'Des solutions complètes en peinture et décoration pour transformer vos espaces.',
}: WithAlternatingSectionsProps) {
return (
<div className="bg-brand-light text-brand-600">
<div className="mx-auto max-w-2xl px-4 py-24 sm:px-6 sm:py-32 lg:max-w-7xl lg:px-8">
<div className="mx-auto max-w-3xl text-center">
<h2 className="text-4xl font-bold tracking-tight text-brand-600 sm:text-5xl">{title}</h2>
<p className="mt-4 text-lg text-brand-500">{subtitle}</p>
</div>
<div className="mt-16 space-y-16">
{features.map((feature, featureIdx) => (
<div
key={feature.name}
className="flex flex-col-reverse lg:grid lg:grid-cols-12 lg:items-center lg:gap-x-8"
>
<div
className={classNames(
featureIdx % 2 === 0 ? 'lg:col-start-1' : 'lg:col-start-8 xl:col-start-9',
'mt-6 lg:col-span-5 lg:row-start-1 lg:mt-0 xl:col-span-4',
)}
>
<h3 className="text-4xl font-semibold tracking-tight text-brand-600">{feature.name}</h3>
<p className="mt-2 text-base text-brand-800">{feature.description}</p>
</div>
<div
className={classNames(
featureIdx % 2 === 0 ? 'lg:col-start-6 xl:col-start-5' : 'lg:col-start-1',
'flex-auto lg:col-span-7 lg:row-start-1 xl:col-span-8',
)}
>
<img
alt={feature.imageAlt}
src={feature.imageSrc}
className="aspect-3/2 w-full rounded-lg bg-gray-100 object-cover"
/>
</div>
</div>
))}
</div>
</div>
</div>
)
}