Stats 10
background3 ColumnsText Align LeftBackground ImageStats Section

Code
relume-stats10.tsx
type ImageProps = {
src: string;
alt?: string;
};
type StatsProps = {
percentage: string;
heading: string;
};
type Props = {
heading: string;
stats: StatsProps[];
image: ImageProps;
};
export type Stats10Props = React.ComponentPropsWithoutRef<"section"> & Partial<Props>;
export const Stats10 = (props: Stats10Props) => {
const { heading, stats, image } = {
...Stats10Defaults,
...props,
};
return (
<section className="relative px-[5%] py-16 md:py-24 lg:py-28">
<div className="relative z-10 container">
<div className="mb-12 max-w-lg md:mb-18 lg:mb-20">
<h3 className="text-h3 font-bold text-white">{heading}</h3>
</div>
<div className="grid grid-cols-1 gap-y-8 md:grid-cols-3 md:gap-x-8 lg:gap-x-12 lg:gap-y-16">
{stats.map((stat, index) => (
<div key={index} className="border-l border-white pl-8">
<p className="mb-2 text-[3.5rem] leading-[1.3] font-bold text-white md:text-[4rem] lg:text-[5rem]">
{stat.percentage}
</p>
<h3 className="text-h6 font-bold text-white">{stat.heading}</h3>
</div>
))}
</div>
</div>
<div className="absolute inset-0 z-0">
<img src={image.src} className="size-full object-cover" alt={image.alt} />
<div className="absolute inset-0 bg-neutral-darkest/50" />
</div>
</section>
);
};
export const Stats10Defaults: Props = {
heading: "Long heading is what you see here in this feature section",
stats: [
{ percentage: "30%", heading: "Short heading goes here" },
{ percentage: "30%", heading: "Short heading goes here" },
{ percentage: "30%", heading: "Short heading goes here" },
],
image: {
src: "https://d22po4pjz3o32e.cloudfront.net/placeholder-image.svg",
alt: "Relume placeholder background image",
},
};npm i @radix-ui/react-accordion @radix-ui/react-dialog @radix-ui/react-slot class-variance-authority@0.7.1 clsx@^2.1.1 embla-carousel-react@^8.5.2 motion@^12.15.0 relume-icons@1.3.0 tailwind-merge@^2.2.2


