Files

128 lines
4.6 KiB
TypeScript

"use client";
import { useState } from "react";
import {
Accordion,
AccordionContent,
AccordionItem,
AccordionTrigger,
} from "@/components/ui/accordion";
import { cn } from "@/lib/utils";
const tabsData = [
{
id: 1,
title: "پروفایل ۳۶۰ درجه مشتری",
imageSrc: "/block-media/shadcnblocks/block/placeholder-dark-1.svg",
description:
"تاریخچه تماس، قرارداد و تیکت هر مشتری را در یک صفحه ببینید و بدون جستجو تصمیم بگیرید.",
},
{
id: 2,
title: "اتوماسیون مراحل فروش",
imageSrc: "/block-media/shadcnblocks/block/placeholder-dark-2.svg",
description:
"وظایف تکراری فروش را خودکار کنید و تمرکز تیم را روی بستن معامله بگذارید.",
},
{
id: 3,
title: "پیش‌بینی درآمد",
imageSrc: "/block-media/shadcnblocks/block/placeholder-dark-3.svg",
description:
"بر اساس داده واقعی پایپ‌لاین، درآمد ماه‌های آینده را با اطمینان بیشتر تخمین بزنید.",
},
];
interface Feature131Props {
className?: string;
}
const Feature131 = ({ className }: Feature131Props) => {
const [activeTabId, setActiveTabId] = useState<number>(1);
const [activeImage, setActiveImage] = useState<string>(tabsData[0].imageSrc);
const activeTab =
tabsData.find((tab) => tab.id === activeTabId) ?? tabsData[0];
return (
<section
dir="rtl"
lang="fa"
className={cn("py-16 md:py-24 lg:py-32", className)}
>
<div className="container">
<div className="flex w-full flex-col items-start justify-between gap-8 md:flex-row lg:gap-16">
<div className="w-full md:max-w-[400px]">
<h2 className="mb-8 text-start text-3xl font-semibold tracking-tight md:mb-12 md:text-xl">
هر سرنخ را تا قرارداد دنبال کنید
</h2>
<Accordion
type="single"
defaultValue="item-1"
className="w-full"
onValueChange={(value) => {
const id = parseInt(value.split("-")[1]);
setActiveTabId(id);
setActiveImage(
tabsData.find((tab) => tab.id === id)?.imageSrc ??
tabsData[0].imageSrc,
);
}}
>
{tabsData.map((tab) => (
<AccordionItem
key={tab.id}
value={`item-${tab.id}`}
className={cn(
"border-t-2 border-b-0 px-2 transition-all duration-300",
tab.id === activeTabId
? "border-primary bg-accent/40"
: "border-muted hover:bg-accent/20",
)}
>
<AccordionTrigger className="cursor-pointer py-5 text-start no-underline! transition-all">
<h6
className={cn(
"text-xl font-semibold transition-colors duration-300",
tab.id === activeTabId
? "text-primary"
: "text-muted-foreground",
)}
>
{tab.title}
</h6>
</AccordionTrigger>
<AccordionContent className="animate-accordion-down">
<p className="mt-3 text-start leading-relaxed text-muted-foreground">
{tab.description}
</p>
<div className="mt-6 md:hidden">
<img
src={tab.imageSrc}
alt={`نمای ${tab.title}`}
className="h-full max-h-80 w-full rounded-md object-cover transition-transform duration-300"
/>
</div>
</AccordionContent>
</AccordionItem>
))}
</Accordion>
</div>
<div className="relative hidden w-full overflow-hidden rounded-md bg-accent/30 md:block">
<div className="pointer-events-none absolute inset-0 bg-linear-to-bl from-primary/5 to-transparent" />
<div className="pt-12 ps-12">
<img
src={activeImage}
alt={`نمای ${activeTab.title}`}
className="max-h-[490px] w-full rounded-ts-md object-cover transition-all duration-500 ease-in-out"
/>
</div>
</div>
</div>
</div>
</section>
);
};
export { Feature131 };