Testimonial 18
card3 ColumnsText Align CenterText Align LeftAvatar ImageStar RatingReviews Section

Code
relume-testimonial18.tsx
import { Card } from "@/components/ui/card";
import { StarFull } from "relume-icons";
type ImageProps = {
src: string;
alt?: string;
};
type Testimonial = {
quote: string;
avatar: ImageProps;
name: string;
position: string;
companyName: string;
numberOfStars: number;
};
type Props = {
heading: string;
description: string;
testimonials: Testimonial[];
};
export type Testimonial18Props = React.ComponentPropsWithoutRef<"section"> & Partial<Props>;
export const Testimonial18 = (props: Testimonial18Props) => {
const { heading, description, testimonials } = {
...Testimonial18Defaults,
...props,
};
return (
<section className="px-[5%] py-16 md:py-24 lg:py-28">
<div className="container">
<div className="mx-auto mb-12 w-full max-w-lg text-center md:mb-18 lg:mb-20">
<h1 className="mb-5 text-h2 font-bold md:mb-6">{heading}</h1>
<p className="text-medium">{description}</p>
</div>
<div className="columns-1 gap-x-8 md:columns-2 lg:columns-3">
{testimonials.map((testimonial, index) => (
<Card key={index} className="mb-8 inline-block w-full p-6 md:p-8">
<div className="mb-5 flex gap-1 md:mb-6">
{Array(testimonial.numberOfStars)
.fill(null)
.map((_, starIndex) => (
<StarFull key={starIndex} className="size-6 text-scheme-text" />
))}
</div>
<h5 className="text-medium">{testimonial.quote}</h5>
<div className="mt-5 flex w-full flex-col items-start gap-4 md:mt-6 md:w-fit md:flex-row md:items-center">
<div className="size-12 min-h-12 min-w-12 overflow-hidden rounded-full">
<img
src={testimonial.avatar.src}
alt={testimonial.avatar.alt}
className="size-full object-cover"
/>
</div>
<div>
<p className="font-semibold">{testimonial.name}</p>
<p>
<span>{testimonial.position}</span>, <span>{testimonial.companyName}</span>
</p>
</div>
</div>
</Card>
))}
</div>
</div>
</section>
);
};
export const Testimonial18Defaults: Props = {
heading: "Customer testimonials",
description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
testimonials: [
{
quote:
'"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare."',
avatar: {
src: "https://d22po4pjz3o32e.cloudfront.net/placeholder-image.svg",
alt: "Testimonial avatar 1",
},
name: "Name Surname",
position: "Position",
companyName: "Company name",
numberOfStars: 5,
},
{
quote:
'"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."',
avatar: {
src: "https://d22po4pjz3o32e.cloudfront.net/placeholder-image.svg",
alt: "Testimonial avatar 2",
},
name: "Name Surname",
position: "Position",
companyName: "Company name",
numberOfStars: 5,
},
{
quote:
'"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."',
avatar: {
src: "https://d22po4pjz3o32e.cloudfront.net/placeholder-image.svg",
alt: "Testimonial avatar 3",
},
name: "Name Surname",
position: "Position",
companyName: "Company name",
numberOfStars: 5,
},
{
quote:
'"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."',
avatar: {
src: "https://d22po4pjz3o32e.cloudfront.net/placeholder-image.svg",
alt: "Testimonial avatar 1",
},
name: "Name Surname",
position: "Position",
companyName: "Company name",
numberOfStars: 5,
},
{
quote:
'"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare."',
avatar: {
src: "https://d22po4pjz3o32e.cloudfront.net/placeholder-image.svg",
alt: "Testimonial avatar 2",
},
name: "Name Surname",
position: "Position",
companyName: "Company name",
numberOfStars: 5,
},
{
quote:
'"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare."',
avatar: {
src: "https://d22po4pjz3o32e.cloudfront.net/placeholder-image.svg",
alt: "Testimonial avatar 3",
},
name: "Name Surname",
position: "Position",
companyName: "Company name",
numberOfStars: 5,
},
],
};npm i @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


