This commit is contained in:
mr.sabri
2026-07-27 12:56:06 +03:30
parent d5488386ff
commit 1cea5b78cb
45 changed files with 1406 additions and 936 deletions
+57 -46
View File
@@ -24,15 +24,16 @@ const DATA: DataItem[] = [
"تاریخچه تماس، قرارداد و تیکت هر مشتری را در یک صفحه ببینید و بدون جستجو تصمیم بگیرید.",
image: "/block-media/shadcnblocks/block/placeholder-dark-1.svg",
imageAlt: "داشبورد مدیریت ارتباط با مشتری",
icon: <Sparkles className="h-6 w-6 text-white" />,
icon: <Sparkles className="size-5 text-white sm:size-6" />,
},
{
id: "feature-2",
title: "اتوماسیون مراحل فروش",
description: "وظایف تکراری فروش را خودکار کنید و تمرکز تیم را روی بستن معامله بگذارید.",
description:
"وظایف تکراری فروش را خودکار کنید و تمرکز تیم را روی بستن معامله بگذارید.",
image: "/block-media/shadcnblocks/block/placeholder-dark-2.svg",
imageAlt: "نمای پایپ‌لاین فروش",
icon: <Database className="h-6 w-6 text-white" />,
icon: <Database className="size-5 text-white sm:size-6" />,
},
{
id: "feature-3",
@@ -41,7 +42,7 @@ const DATA: DataItem[] = [
"بر اساس داده واقعی پایپ‌لاین، درآمد ماه‌های آینده را با اطمینان بیشتر تخمین بزنید.",
image: "/block-media/shadcnblocks/block/placeholder-dark-3.svg",
imageAlt: "پروفایل یکپارچه مشتری",
icon: <LockKeyhole className="h-6 w-6 text-white" />,
icon: <LockKeyhole className="size-5 text-white sm:size-6" />,
},
];
@@ -53,86 +54,96 @@ const Feature186 = ({ className }: Feature186Props) => {
const [selection, setSelection] = useState(DATA[0].id);
return (
<section dir="rtl" lang="fa" className={cn("relative py-16 md:py-32", className)}>
<section
dir="rtl"
lang="fa"
className={cn(
"relative w-full max-w-full overflow-x-hidden py-16 md:py-32",
className,
)}
>
<div
className="absolute top-0 right-0 left-0 z-0 h-[800px] w-screen [mask-image:radial-gradient(ellipse_at_center,white_20%,transparent_70%)] bg-repeat opacity-30"
className="absolute inset-x-0 top-0 z-0 h-[min(800px,100%)] w-full [mask-image:radial-gradient(ellipse_at_center,white_20%,transparent_70%)] bg-repeat opacity-30"
style={{
backgroundImage:
"url('/block-media/shadcnblocks/block/patterns/architect.svg')",
backgroundSize: "60px",
}}
/>
<div className="relative z-10 container">
<div className="text-right">
<div className="relative z-10 container min-w-0 px-4 sm:px-6">
<div className="min-w-0 text-right">
<h2 className="text-xl font-medium text-balance sm:text-2xll lg:text-2xll">
هر سرنخ را تا قرارداد دنبال کنید
</h2>
<p className="mt-4 text-pretty text-muted-foreground md:text-lg">
تمام تعاملات، سرنخ‌ها و قراردادها در یک فضای کاری متمرکز جمع می‌شود. تیم فروش بدون جابجایی بین ابزارها، سریع‌تر پیش‌بینی می‌کند و معاملات بیشتری می‌بندد.
<p className="mt-4 max-w-3xl text-sm text-pretty text-muted-foreground sm:text-base md:text-lg">
تمام تعاملات، سرنخ‌ها و قراردادها در یک فضای کاری متمرکز جمع می‌شود.
تیم فروش بدون جابجایی بین ابزارها، سریع‌تر پیش‌بینی می‌کند و معاملات
بیشتری می‌بندد.
</p>
<div className="mt-4 lg:mt-8">
<Tabs dir="rtl" value={selection} onValueChange={setSelection}>
<div className="relative">
<div className="overflow-auto">
<div
dir="rtl"
className="flex min-w-fit flex-col items-start overflow-y-hidden lg:mb-8"
<div className="mt-6 min-w-0 lg:mt-8">
<Tabs
dir="rtl"
value={selection}
onValueChange={setSelection}
className="w-full min-w-0 gap-4"
>
<TabsList className="flex h-auto! w-full min-w-0 flex-wrap justify-start gap-2 bg-transparent p-0 sm:gap-3">
{DATA.map((feature) => (
<TabsTrigger
key={feature.id}
value={feature.id}
className="h-auto! flex-none max-w-full px-3 py-2 text-xs whitespace-normal sm:text-sm"
>
<TabsList className="gap-4 bg-transparent">
{DATA.map((feature) => (
<TabsTrigger key={feature.id} value={feature.id}>
{feature.title}
</TabsTrigger>
))}
</TabsList>
</div>
<div className="pointer-events-none absolute inset-0 bg-[linear-gradient(to_left,hsl(var(--background))_0%,transparent_10%,transparent_90%,hsl(var(--background))_100%)] md:hidden" />
</div>
</div>
{feature.title}
</TabsTrigger>
))}
</TabsList>
<div className="relative w-full overflow-hidden">
<div className="relative w-full min-w-0">
{DATA.map((feature) => (
<TabsContent
key={feature.id}
value={feature.id}
className="relative z-20"
className="mt-0 min-w-0"
>
<div className="aspect-3/2 w-full rounded-lg bg-accent p-6 md:p-14 md:px-24">
<div className="max-w-full text-right md:max-w-md">
<div className="flex size-12 items-center justify-center rounded-full bg-black">
<div className="flex w-full min-w-0 flex-col gap-4 rounded-lg bg-accent p-4 sm:gap-6 sm:p-6 md:p-10 lg:p-14 lg:px-24">
<div className="w-full min-w-0 max-w-md text-right">
<div className="flex size-10 items-center justify-center rounded-full bg-black sm:size-12">
{feature.icon}
</div>
<div className="my-4 md:my-8">
<h3 className="text-lg font-bold sm:text-xl lg:text-xl">
<div className="mt-4 space-y-2 sm:mt-6 md:mt-8">
<h3 className="text-lg font-bold text-pretty sm:text-xl">
{feature.title}
</h3>
<p className="text-base text-pretty text-muted-foreground sm:text-lg lg:text-xl">
<p className="text-sm text-pretty text-muted-foreground sm:text-base lg:text-lg">
{feature.description}
</p>
</div>
</div>
<img
src={feature.image}
alt={feature.imageAlt}
className="mt-4 h-full w-full rounded-lg object-cover object-center md:mt-0"
/>
<div className="w-full min-w-0 overflow-hidden rounded-lg">
<img
src={feature.image}
alt={feature.imageAlt}
className="aspect-video h-auto w-full max-w-full object-cover object-center sm:aspect-[16/10]"
/>
</div>
</div>
</TabsContent>
))}
</div>
<div className="flex justify-center py-3 md:hidden">
<div className="flex justify-center gap-1 py-1 sm:hidden">
{DATA.map((feature) => (
<Button
key={feature.id}
variant="ghost"
size="sm"
onClick={() => {
setSelection(feature.id);
}}
className="size-8 px-0"
aria-label={feature.title}
onClick={() => setSelection(feature.id)}
>
<div
<span
className={cn(
"size-2 rounded-full",
feature.id === selection ? "bg-primary" : "bg-input",