226 lines
8.9 KiB
TypeScript
226 lines
8.9 KiB
TypeScript
import { Avatar, AvatarImage } from "@/components/ui/avatar";
|
|
import { Badge } from "@/components/ui/badge";
|
|
import { Card, CardContent, CardFooter } from "@/components/ui/card";
|
|
import { cn } from "@/lib/utils";
|
|
|
|
const testimonials = [
|
|
{
|
|
name: "سارا احمدی",
|
|
role: "مدیرعامل و بنیانگذار",
|
|
avatar:
|
|
"/block-media/shadcnblocks/block/avatar/avatar9.jpg",
|
|
content:
|
|
"با یک پایپلاین شفاف، نرخ تبدیل فرصتها ۳۵٪ بالا رفت. تیم فروش دیگر در اکسل و چت گم نمیشود و هر لید صاحب مشخص دارد.",
|
|
},
|
|
{
|
|
name: "مازیار رضایی",
|
|
role: "مدیر فروش",
|
|
avatar:
|
|
"/block-media/shadcnblocks/block/avatar/avatar7.jpg",
|
|
content:
|
|
"زمان پاسخ به لید از چند ساعت به کمتر از پانزده دقیقه رسید. اتوماسیون فروش، پیگیریهای تکراری را حذف کرد و تمرکز تیم روی بستن معامله ماند.",
|
|
},
|
|
{
|
|
name: "نیلوفر حسینی",
|
|
role: "مدیر بازاریابی",
|
|
avatar:
|
|
"/block-media/shadcnblocks/block/avatar/avatar10.jpg",
|
|
content:
|
|
"کمپینها، لیدها و امتیازدهی در یک جا کنار هم هستند. بازاریابی و فروش بالاخره روی یک تعریف مشترک از لید واجد شرایط کار میکنند.",
|
|
},
|
|
{
|
|
name: "امیر محمدی",
|
|
role: "سرپرست تیم فروش",
|
|
avatar:
|
|
"/block-media/shadcnblocks/block/avatar/avatar7.webp",
|
|
content:
|
|
"داشبورد فروش وضعیت هر مرحله را لحظهای نشان میدهد. جلسات پیشبینی درآمد کوتاهتر و دقیقتر شدهاند.",
|
|
},
|
|
{
|
|
name: "رؤیا کاظمی",
|
|
role: "مدیر موفقیت مشتری",
|
|
avatar:
|
|
"/block-media/shadcnblocks/block/avatar/avatar2.webp",
|
|
content:
|
|
"از اولین تماس تا تمدید قرارداد، تاریخچه کامل مشتری را میبینیم. نرخ حفظ مشتری بالا رفت چون ریسکها را زودتر تشخیص میدهیم و قبل از قطع همکاری وارد عمل میشویم.",
|
|
},
|
|
{
|
|
name: "پارسا موسوی",
|
|
role: "تحلیلگر فروش",
|
|
avatar:
|
|
"/block-media/shadcnblocks/block/avatar/avatar11.jpg",
|
|
content:
|
|
"گزارشهای آمادهی فروش، ساعتها جمعآوری دستی داده را حذف کرد. حالا عملکرد تیم و منابع لید را هفتگی و با عدد واقعی مرور میکنیم.",
|
|
},
|
|
{
|
|
name: "مهسا نوری",
|
|
role: "مدیر جذب مشتری",
|
|
avatar:
|
|
"/block-media/shadcnblocks/block/avatar/avatar2.jpg",
|
|
content:
|
|
"امتیازدهی خودکار لید کمک کرد بودجه تبلیغات را روی کانالهای واقعاً تبدیلشونده متمرکز کنیم. هزینه جذب مشتری پایین آمد.",
|
|
},
|
|
{
|
|
name: "علی رحمانی",
|
|
role: "مدیر عملیات فروش",
|
|
avatar:
|
|
"/block-media/shadcnblocks/block/avatar/avatar12.jpg",
|
|
content:
|
|
"بهرهوری تیم فروش بهطور محسوسی افزایش یافت. کمتر وقت صرف ورود داده میشود و بیشتر صرف مکالمه با مشتری واقعی.",
|
|
},
|
|
];
|
|
|
|
interface Testimonial1Props {
|
|
className?: string;
|
|
}
|
|
|
|
const Testimonial1 = ({ className }: Testimonial1Props) => {
|
|
const getColumns = (count: number) => {
|
|
return Array.from({ length: count }, (_, colIdx) =>
|
|
testimonials.filter((_, i) => i % count === colIdx),
|
|
);
|
|
};
|
|
|
|
const mobileColumns = getColumns(2);
|
|
const tabletColumns = getColumns(3);
|
|
const desktopColumns = getColumns(4);
|
|
|
|
return (
|
|
<section
|
|
dir="rtl"
|
|
lang="fa"
|
|
className={cn("overflow-hidden border-b pt-32", className)}
|
|
>
|
|
<div className="container">
|
|
<div className="flex flex-col items-center gap-6">
|
|
<Badge variant="outline">نظرات مشتریان</Badge>
|
|
<h2 className="text-center text-3xl tracking-tight lg:text-2xll">
|
|
فروش شفافتر، از زبان تیمهای واقعی
|
|
</h2>
|
|
<p className="text-center text-muted-foreground lg:text-lg">
|
|
ببینید تیمهای فروش و بازاریابی چگونه با سامانه مدیریت ارتباط با مشتری ما پایپلاین،
|
|
نرخ تبدیل و پیگیری لید را بهبود دادهاند.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div className="container mt-10 h-[450px] md:h-[500px] lg:h-[522px]">
|
|
{/* Mobile: 2 columns */}
|
|
<div className="flex gap-4 md:hidden">
|
|
{mobileColumns.map((column, colIdx) => (
|
|
<div
|
|
key={colIdx}
|
|
className={cn(
|
|
"flex w-1/2 flex-col gap-4",
|
|
colIdx === 1 && "mt-8",
|
|
)}
|
|
>
|
|
{column.map((testimonial, idx) => (
|
|
<Card key={idx}>
|
|
<CardContent className="px-4 text-sm leading-6 text-muted-foreground">
|
|
<q>{testimonial.content}</q>
|
|
</CardContent>
|
|
<CardFooter className="px-4">
|
|
<div className="flex gap-3 leading-5">
|
|
<Avatar className="size-8 rounded-full ring-1 ring-input">
|
|
<AvatarImage
|
|
src={testimonial.avatar}
|
|
alt={testimonial.name}
|
|
/>
|
|
</Avatar>
|
|
<div className="text-xs">
|
|
<p className="font-medium">{testimonial.name}</p>
|
|
<p className="text-muted-foreground">
|
|
{testimonial.role}
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</CardFooter>
|
|
</Card>
|
|
))}
|
|
</div>
|
|
))}
|
|
</div>
|
|
|
|
{/* Tablet: 3 columns */}
|
|
<div className="hidden gap-4 md:flex lg:hidden">
|
|
{tabletColumns.map((column, colIdx) => (
|
|
<div
|
|
key={colIdx}
|
|
className={cn(
|
|
"flex w-1/3 flex-col gap-4",
|
|
colIdx === 1 && "mt-10",
|
|
colIdx === 2 && "mt-20",
|
|
)}
|
|
>
|
|
{column.map((testimonial, idx) => (
|
|
<Card key={idx}>
|
|
<CardContent className="px-6 leading-7 text-muted-foreground">
|
|
<q>{testimonial.content}</q>
|
|
</CardContent>
|
|
<CardFooter>
|
|
<div className="flex gap-4 leading-5">
|
|
<Avatar className="size-9 rounded-full ring-1 ring-input">
|
|
<AvatarImage
|
|
src={testimonial.avatar}
|
|
alt={testimonial.name}
|
|
/>
|
|
</Avatar>
|
|
<div className="text-sm">
|
|
<p className="font-medium">{testimonial.name}</p>
|
|
<p className="text-muted-foreground">
|
|
{testimonial.role}
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</CardFooter>
|
|
</Card>
|
|
))}
|
|
</div>
|
|
))}
|
|
</div>
|
|
|
|
{/* Desktop: 4 columns */}
|
|
<div className="hidden gap-4 lg:flex">
|
|
{desktopColumns.map((column, colIdx) => (
|
|
<div
|
|
key={colIdx}
|
|
className={cn(
|
|
"flex w-1/4 flex-col gap-4",
|
|
colIdx === 1 && "mt-10",
|
|
colIdx === 2 && "mt-20",
|
|
)}
|
|
>
|
|
{column.map((testimonial, idx) => (
|
|
<Card key={idx}>
|
|
<CardContent className="px-6 leading-7 text-muted-foreground">
|
|
<q>{testimonial.content}</q>
|
|
</CardContent>
|
|
<CardFooter>
|
|
<div className="flex gap-4 leading-5">
|
|
<Avatar className="size-9 rounded-full ring-1 ring-input">
|
|
<AvatarImage
|
|
src={testimonial.avatar}
|
|
alt={testimonial.name}
|
|
/>
|
|
</Avatar>
|
|
<div className="text-sm">
|
|
<p className="font-medium">{testimonial.name}</p>
|
|
<p className="text-muted-foreground">
|
|
{testimonial.role}
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</CardFooter>
|
|
</Card>
|
|
))}
|
|
</div>
|
|
))}
|
|
</div>
|
|
</div>
|
|
</section>
|
|
);
|
|
};
|
|
|
|
export { Testimonial1 };
|