141 lines
5.1 KiB
TypeScript
141 lines
5.1 KiB
TypeScript
import { Separator } from "@/components/ui/separator";
|
|
import { cn } from "@/lib/utils";
|
|
|
|
interface CaseStudyStat {
|
|
value: string;
|
|
label: string;
|
|
description: string;
|
|
}
|
|
|
|
interface CaseStudyItem {
|
|
image: string;
|
|
imageAlt: string;
|
|
quote: string;
|
|
authorName: string;
|
|
authorRole: string;
|
|
companyLogo: string;
|
|
companyLogoAlt: string;
|
|
stats: [CaseStudyStat, CaseStudyStat];
|
|
}
|
|
|
|
const CASE_STUDIES: CaseStudyItem[] = [
|
|
{
|
|
image: "/block-media/shadcnblocks/block/placeholder-1.svg",
|
|
imageAlt: "مدیر محصول در حال بررسی داشبورد تیمی",
|
|
quote:
|
|
"با پیادهسازی این راهکار، زمان گزارشدهی ماهانه از ۲ هفته به ۲ روز کاهش یافت و تیم فروش تمرکز خود را روی فعالیتهای درآمدزا قرار داد.",
|
|
authorName: "محمد رضایی",
|
|
authorRole: "مدیر محصول",
|
|
companyLogo:
|
|
"/block-media/shadcnblocks/block/logos/company/fictional-company-logo-2.svg",
|
|
companyLogoAlt: "لوگوی شرکت",
|
|
stats: [
|
|
{
|
|
value: "۹۸٪",
|
|
label: "رضایت مشتریان",
|
|
description: "از نظرات تأییدشده",
|
|
},
|
|
{
|
|
value: "۳.۸x",
|
|
label: "افزایش بازگشت سرمایه",
|
|
description: "در سه ماهه نخست",
|
|
},
|
|
],
|
|
},
|
|
{
|
|
image: "/block-media/shadcnblocks/block/placeholder-2.svg",
|
|
imageAlt: "مدیر عملیات در جلسه برنامهریزی تیم",
|
|
quote:
|
|
"یکپارچگی با ابزارهای موجود سازمان ما بدون نیاز به تغییر فرآیندهای جاری انجام شد و تیمها از همان روز اول بهرهوری بالاتری را تجربه کردند.",
|
|
authorName: "سارا احمدی",
|
|
authorRole: "مدیر عملیات",
|
|
companyLogo:
|
|
"/block-media/shadcnblocks/block/logos/company/fictional-company-logo-3.svg",
|
|
companyLogoAlt: "لوگوی شرکت",
|
|
stats: [
|
|
{
|
|
value: "۴.۲x",
|
|
label: "کارایی تیم",
|
|
description: "افزایش بهرهوری اثباتشده",
|
|
},
|
|
{
|
|
value: "۷۲٪",
|
|
label: "کاهش زمان تحویل",
|
|
description: "در پروژههای سازمانی",
|
|
},
|
|
],
|
|
},
|
|
];
|
|
|
|
interface CaseStudies2Props {
|
|
className?: string;
|
|
}
|
|
|
|
const CaseStudies2 = ({ className }: CaseStudies2Props) => {
|
|
return (
|
|
<section dir="rtl" lang="fa" className={cn("py-32", className)}>
|
|
<div className="container">
|
|
<div className="flex flex-col gap-6 text-center">
|
|
<p className="font-medium">بیش از ۴۵۰۰ سازمان در سراسر جهان</p>
|
|
<h2 className="text-xl font-medium md:text-2xll">
|
|
گزارش موفقیت مشتریان
|
|
</h2>
|
|
</div>
|
|
<div className="mt-20">
|
|
{CASE_STUDIES.map((caseStudy, index) => (
|
|
<div key={caseStudy.authorName}>
|
|
{index > 0 && <Separator className="my-20" />}
|
|
<div className="grid gap-16 lg:grid-cols-3 xl:gap-24">
|
|
<div className="flex flex-col gap-10 border-border sm:flex-row lg:col-span-2 lg:border-e lg:pe-16 xl:pe-24">
|
|
<img
|
|
src={caseStudy.image}
|
|
alt={caseStudy.imageAlt}
|
|
className="aspect-29/35 h-full w-full max-w-60 rounded-2xl object-cover"
|
|
/>
|
|
<div className="flex h-full flex-col justify-between gap-10">
|
|
<q className="text-start sm:text-xl">{caseStudy.quote}</q>
|
|
<div className="flex items-end gap-6">
|
|
<div className="flex flex-col gap-1 text-start">
|
|
<p className="text-lg font-semibold text-foreground">
|
|
{caseStudy.authorName}
|
|
</p>
|
|
<p className="text-muted-foreground">
|
|
{caseStudy.authorRole}
|
|
</p>
|
|
</div>
|
|
<img
|
|
src={caseStudy.companyLogo}
|
|
alt={caseStudy.companyLogoAlt}
|
|
/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div className="flex gap-10 self-center lg:flex-col">
|
|
{caseStudy.stats.map((stat) => (
|
|
<div
|
|
key={stat.label}
|
|
className="flex flex-col gap-2 text-start"
|
|
>
|
|
<p className="text-xl font-medium text-foreground sm:text-2xll">
|
|
{stat.value}
|
|
</p>
|
|
<p className="font-semibold text-foreground">
|
|
{stat.label}
|
|
</p>
|
|
<p className="text-muted-foreground">
|
|
{stat.description}
|
|
</p>
|
|
</div>
|
|
))}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
))}
|
|
</div>
|
|
</div>
|
|
</section>
|
|
);
|
|
};
|
|
|
|
export { CaseStudies2 };
|