Files
reui-blocks/blocks/testimonial27.tsx
T

199 lines
6.9 KiB
TypeScript
Raw Normal View History

import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar";
import { cn } from "@/lib/utils";
const TESTIMONIALS = [
{
quote:
"بیش از همه دوست دارم همه‌چیز یک‌جا باشد؛ مسیریابی لید ساده است و ۱۰ برابر شفاف‌تر از ابزارهای پراکنده قبلی!",
link: "#",
author: {
name: "سارا احمدی",
image:
"/block-media/shadcnblocks/block/avatar-1.webp",
role: "مدیر فروش، ARC",
},
company: {
logo: "/block-media/shadcnblocks/block/logos/company/fictional-company-logo-1.svg",
name: "ARC",
},
},
{
quote:
"این سامانه مدیریت ارتباط با مشتری بی‌نقص در عملیات فروش و بازاریابی ما ادغام شده و نیاز به ابزار جداگانه و اتصال‌های پیچیده را حذف کرده.",
link: "#",
author: {
name: "کاوه مرادی",
image:
"/block-media/shadcnblocks/block/avatar-2.webp",
role: "مدیرعامل و بنیان‌گذار، Descript",
},
company: {
logo: "/block-media/shadcnblocks/block/logos/company/fictional-company-logo-2.svg",
name: "Descript",
},
},
];
const CASE_STUDIES = [
{
title: "چگونه کارایی عملیات فروش را ۱۰ برابر کردیم",
link: "#",
stats: [
{
number: "۱۰x",
text: "افزایش کارایی عملیات فروش",
},
],
author: {
name: "امیر محمدی",
image:
"/block-media/shadcnblocks/block/avatar-8.webp",
role: "مدیر بازاریابی",
},
background:
"/block-media/shadcnblocks/block/photos/ivan-bandura-hqnUYXsN5oY-unsplash.jpg",
},
{
title: "چگونه ری یو آی زمان پاسخ به لید را ۸۰٪ کاهش داد",
link: "#",
stats: [
{
number: "۸۰٪",
text: "پاسخ سریع‌تر به لید",
},
],
author: {
name: "نیلوفر حسینی",
image:
"/block-media/shadcnblocks/block/avatar-7.webp",
role: "مدیر فروش",
},
background:
"/block-media/shadcnblocks/block/photos/jeremy-bishop-iEjCQtcsVPY-unsplash.jpg",
},
{
title: "از صفر تا ۷ میلیون ریال در قیف فروش",
link: "#",
stats: [
{
number: "$۷M",
text: "قیف فروش ورودی تولیدشده",
},
],
author: {
name: "مهسا نوری",
image:
"/block-media/shadcnblocks/block/avatar-1.webp",
role: "مدیر بازاریابی",
},
background:
"/block-media/shadcnblocks/block/photos/kevin-charit-1fL2Q1JcbNc-unsplash.jpg",
},
];
interface AuthorProps {
image: string;
name: string;
role: string;
}
const Author = ({ image, name, role }: AuthorProps) => {
return (
<div className="flex items-center gap-3">
<Avatar className="size-10 rounded-xl bg-background/50">
<AvatarImage src={image} alt={name} />
<AvatarFallback>{name}</AvatarFallback>
</Avatar>
<div className="flex flex-col gap-0.5">
<div className="text-sm font-medium text-foreground">{name}</div>
<div className="text-sm text-muted-foreground">{role}</div>
</div>
</div>
);
};
interface Testimonial27Props {
className?: string;
}
const Testimonial27 = ({ className }: Testimonial27Props) => {
return (
<section dir="rtl" lang="fa" className={cn("py-32", className)}>
<div className="container flex flex-col gap-6">
<div className="flex flex-col justify-between gap-6 md:flex-row md:items-end">
<div className="flex flex-col gap-4">
<h2 className="text-xl font-bold tracking-tight md:text-2xll">
رهبران فروش چه فکر می‌کنند
</h2>
<div className="max-w-[28.75rem]">
<p className="text-lg text-muted-foreground md:text-xl">
فروش را با مسیریابی لید هوشمندتر، سیگنال خرید قابل اجرا و
زمان‌بندی پیگیری سریع‌تر مقیاس دهید.
</p>
</div>
</div>
</div>
<div className="grid w-full grid-cols-1 gap-6 md:grid-cols-2">
{TESTIMONIALS.map((testimonial, index) => (
<div
key={index}
className="flex h-full flex-col justify-between gap-8 rounded-2xl bg-muted p-6"
>
<div className="flex flex-col gap-6">
<p className="text-xl leading-relaxed font-medium text-foreground">
{testimonial.quote}
</p>
</div>
<div className="flex items-center justify-between">
<Author
image={testimonial.author.image}
role={testimonial.author.role}
name={testimonial.author.name}
/>
<div className="w-24">
<img
className="w-full object-contain object-center opacity-80"
src={testimonial.company.logo}
alt={`لوگوی ${testimonial.company.name}`}
/>
</div>
</div>
</div>
))}
</div>
<div className="grid w-full grid-cols-1 gap-6 md:grid-cols-3">
{CASE_STUDIES.map((caseStudy, index) => (
<a
key={index}
href={caseStudy.link}
className="group relative flex aspect-square flex-col justify-between gap-8 overflow-hidden rounded-2xl bg-muted p-8 transition-all duration-300 hover:bg-foreground hover:shadow-lg"
>
<div
className="absolute inset-0 bg-cover bg-center bg-no-repeat opacity-20 transition-all duration-300 group-hover:scale-105 group-hover:opacity-10"
style={{ backgroundImage: `url(${caseStudy.background})` }}
/>
<div className="relative flex flex-col gap-3">
<div className="text-2xll font-bold tracking-tight text-foreground transition-colors duration-300 group-hover:text-background">
{caseStudy.stats[0].number}
</div>
<p className="text-sm font-medium text-muted-foreground transition-colors duration-300 group-hover:text-background/80">
{caseStudy.stats[0].text}
</p>
</div>
<div className="relative flex flex-col gap-6">
<p className="text-xl leading-tight font-semibold text-foreground transition-colors duration-300 group-hover:text-background">
{caseStudy.title}
</p>
</div>
</a>
))}
</div>
</div>
</section>
);
};
export { Testimonial27 };