Layout 332
background4 ColumnsText Align LeftImage/Video CenterButtonsBackground ImageIcons

Code
relume-layout332.tsx
import { Button, type ButtonProps } from "@/components/ui/button";
import { ChevronRight } from "relume-icons";
type ImageProps = {
src: string;
alt?: string;
};
type SectionProps = {
icon: ImageProps;
heading: string;
description: string;
};
type Props = {
tagline: string;
heading: string;
description: string;
sections: SectionProps[];
buttons: ButtonProps[];
image: ImageProps;
};
export type Layout332Props = React.ComponentPropsWithoutRef<"section"> & Partial<Props>;
export const Layout332 = (props: Layout332Props) => {
const { tagline, heading, description, sections, buttons, image } = {
...props,
...Layout332Defaults,
};
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">
<p className="mb-3 font-semibold text-white md:mb-4">{tagline}</p>
<h2 className="mb-5 text-h2 font-bold text-white md:mb-6">{heading}</h2>
<p className="text-medium text-white">{description}</p>
</div>
<div className="grid grid-cols-1 items-start justify-center gap-y-12 md:grid-cols-2 md:gap-x-8 md:gap-y-16 lg:grid-cols-4">
{sections.map((section, index) => (
<div key={index} className="flex w-full flex-col">
<div className="mb-5 md:mb-6">
<img src={section.icon.src} className="size-12" alt={section.icon.alt} />
</div>
<h3 className="mb-3 text-h5 font-bold text-white md:mb-4">{section.heading}</h3>
<p className="text-white">{section.description}</p>
</div>
))}
</div>
<div className="mt-12 flex flex-wrap items-center gap-4 md:mt-18 lg:mt-20">
{buttons.map((button, index) => (
<Button key={index} {...button}>
{button.title}
</Button>
))}
</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 Layout332Defaults: Props = {
tagline: "Tagline",
heading: "Medium length section heading goes here",
description:
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat.",
sections: [
{
icon: {
src: "https://d22po4pjz3o32e.cloudfront.net/relume-icon-white.svg",
alt: "Relume logo 1",
},
heading: "Medium length section heading goes here",
description:
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique.",
},
{
icon: {
src: "https://d22po4pjz3o32e.cloudfront.net/relume-icon-white.svg",
alt: "Relume logo 2",
},
heading: "Medium length section heading goes here",
description:
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique.",
},
{
icon: {
src: "https://d22po4pjz3o32e.cloudfront.net/relume-icon-white.svg",
alt: "Relume logo 3",
},
heading: "Medium length section heading goes here",
description:
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique.",
},
{
icon: {
src: "https://d22po4pjz3o32e.cloudfront.net/relume-icon-white.svg",
alt: "Relume logo 4",
},
heading: "Medium length section heading goes here",
description:
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique.",
},
],
buttons: [
{ title: "Button", variant: "secondary-alt" },
{
title: "Button",
variant: "link-alt",
size: "link",
iconRight: <ChevronRight className="text-white" />,
},
],
image: {
src: "https://d22po4pjz3o32e.cloudfront.net/placeholder-image.svg",
alt: "Relume placeholder background image",
},
};npm i @radix-ui/react-slot class-variance-authority@0.7.1 clsx@^2.1.1 relume-icons@1.3.0 tailwind-merge@^2.2.2


