Files
reui-blocks/blocks/testimonial27.tsx
T

199 lines
6.8 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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:
"این CRM بی‌نقص در عملیات فروش و بازاریابی ما ادغام شده و نیاز به ابزار جداگانه و اتصال‌های پیچیده را حذف کرده.",
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 };