161 lines
6.2 KiB
TypeScript
161 lines
6.2 KiB
TypeScript
"use client";
|
|
|
|
import { MoveRight } from "lucide-react";
|
|
import { useState } from "react";
|
|
|
|
import {
|
|
Accordion,
|
|
AccordionContent,
|
|
AccordionItem,
|
|
AccordionTrigger,
|
|
} from "@/components/ui/accordion";
|
|
import { Button } from "@/components/ui/button";
|
|
import { cn } from "@/lib/utils";
|
|
|
|
const tabsData = [
|
|
{
|
|
id: 1,
|
|
title: "نقش و دسترسی",
|
|
imageSrc: "/block-media/shadcnblocks/block/placeholder-1.svg",
|
|
description:
|
|
"برنامه تیم را هماهنگ کنید و تداخل وظایف را کاهش دهید.",
|
|
},
|
|
{
|
|
id: 2,
|
|
title: "چکلیست تحویل",
|
|
imageSrc: "/block-media/shadcnblocks/block/placeholder-2.svg",
|
|
description:
|
|
"نسخه درست فایل همیشه در دسترس همه اعضا باشد.",
|
|
},
|
|
{
|
|
id: 3,
|
|
title: "گزارش پیشرفت",
|
|
imageSrc: "/block-media/shadcnblocks/block/placeholder-3.svg",
|
|
description:
|
|
"بحث را کنار هر تسک نگه دارید تا تصمیمها گم نشود.",
|
|
},
|
|
{
|
|
id: 4,
|
|
title: "برد Kanban",
|
|
imageSrc: "/block-media/shadcnblocks/block/placeholder-4.svg",
|
|
description:
|
|
"وضعیت هر کار را در یک نما ببینید و گلوگاهها را زودتر پیدا کنید.",
|
|
},
|
|
{
|
|
id: 5,
|
|
title: "تقویم تیمی",
|
|
imageSrc: "/block-media/shadcnblocks/block/placeholder-5.svg",
|
|
description:
|
|
"برنامه تیم را هماهنگ کنید و تداخل وظایف را کاهش دهید.",
|
|
},
|
|
{
|
|
id: 6,
|
|
title: "اشتراک فایل",
|
|
imageSrc: "/block-media/shadcnblocks/block/placeholder-6.svg",
|
|
description:
|
|
"نسخه درست فایل همیشه در دسترس همه اعضا باشد.",
|
|
},
|
|
];
|
|
|
|
interface Feature126Props {
|
|
className?: string;
|
|
}
|
|
|
|
const Feature126 = ({ className }: Feature126Props) => {
|
|
const [activeTabId, setActiveTabId] = useState<number | null>(null);
|
|
const [activeImage, setActiveImage] = useState<string>(tabsData[0].imageSrc);
|
|
const activeTab =
|
|
tabsData.find((tab) => tab.imageSrc === activeImage) ?? tabsData[0];
|
|
|
|
return (
|
|
<section dir="rtl" lang="fa" className={cn("py-32", className)}>
|
|
<div className="container">
|
|
<span className="text-sm text-muted-foreground">اعلانهای هوشمند فقط اطلاعات ضروری را میرسانند و حواسپرتی را کم میکنند.</span>
|
|
<h2 className="mt-4 mb-5 text-start text-3xl font-extrabold">
|
|
همکاری از راه دور را ساده کنید
|
|
</h2>
|
|
<div className="mb-20 flex flex-col items-start gap-1 md:flex-row md:items-center md:gap-8">
|
|
<a
|
|
href="#"
|
|
className="group flex items-center gap-2 text-muted-foreground hover:cursor-pointer"
|
|
>
|
|
وظایف، فایلها و گفتگوها در یک محیط کاری متمرکز میشود. تیمها کمتر در پیگیری وضعیت وقت میگذارند و بیشتر روی تحویل تمرکز میکنند.
|
|
<span className="transform transition-transform duration-300 group-hover:translate-x-2 rtl:group-hover:-translate-x-2">
|
|
<MoveRight className="size-4 rtl:rotate-180" />
|
|
</span>
|
|
</a>
|
|
<a
|
|
href="#"
|
|
className="group flex items-center gap-2 text-muted-foreground hover:cursor-pointer"
|
|
>
|
|
نمای Kanban و Timeline به مدیران کمک میکند ظرفیت تیم را ببینند و اولویتها را بهموقع تنظیم کنند.
|
|
<span className="transform transition-transform duration-300 group-hover:translate-x-2 rtl:group-hover:-translate-x-2">
|
|
<MoveRight className="size-4 rtl:rotate-180" />
|
|
</span>
|
|
</a>
|
|
</div>
|
|
|
|
<div className="mb-12 flex w-full items-center justify-between gap-28">
|
|
<div className="w-full md:max-w-[400px]">
|
|
<Accordion type="single" className="w-full" defaultValue="item-1">
|
|
{tabsData.map((tab) => (
|
|
<AccordionItem
|
|
key={tab.id}
|
|
value={`item-${tab.id}`}
|
|
className={cn(
|
|
"border-t-2 border-b-0 px-2 transition hover:bg-accent",
|
|
tab.id === activeTabId && "border-foreground",
|
|
)}
|
|
>
|
|
<AccordionTrigger
|
|
onClick={() => {
|
|
setActiveImage(tab.imageSrc);
|
|
setActiveTabId(tab.id);
|
|
}}
|
|
className="cursor-pointer py-5 text-start no-underline! transition"
|
|
>
|
|
<h6
|
|
className={cn(
|
|
"text-xl font-semibold",
|
|
tab.id === activeTabId
|
|
? "text-foreground"
|
|
: "text-muted-foreground",
|
|
)}
|
|
>
|
|
{tab.title}
|
|
</h6>
|
|
</AccordionTrigger>
|
|
<AccordionContent>
|
|
<p className="mt-3 text-start text-muted-foreground">
|
|
{tab.description}
|
|
</p>
|
|
<div className="mt-4 md:hidden">
|
|
<img
|
|
src={tab.imageSrc}
|
|
alt={`نمای ${tab.title}`}
|
|
className="h-full max-h-80 w-full rounded-md object-cover"
|
|
/>
|
|
</div>
|
|
</AccordionContent>
|
|
</AccordionItem>
|
|
))}
|
|
</Accordion>
|
|
</div>
|
|
<div className="relative m-auto hidden w-[calc(100%-100px)] max-w-[1266px] overflow-hidden md:block">
|
|
<div className="absolute inset-x-0 bottom-0 z-2 h-[100px] bg-[linear-gradient(to_top,white_0%,rgba(255,255,255,0)_100%)]" />
|
|
<img
|
|
src={activeImage}
|
|
alt={`نمای ${activeTab.title}`}
|
|
className="max-h-[490px] w-full rounded-md object-cover transition-opacity duration-300"
|
|
/>
|
|
</div>
|
|
</div>
|
|
|
|
<Button variant="outline">مشاهده همه</Button>
|
|
</div>
|
|
</section>
|
|
);
|
|
};
|
|
|
|
export { Feature126 };
|