diff --git a/blocks/changelog1.tsx b/blocks/changelog1.tsx index 645a45f..b54bcab 100644 --- a/blocks/changelog1.tsx +++ b/blocks/changelog1.tsx @@ -39,7 +39,7 @@ export const defaultEntries: ChangelogEntry[] = [ "فیلتر بهتر بر اساس مرحله قیف، مالک و منبع", ], image: - "/block-media/shadcnblocks/block/placeholder-aspect-video-1.svg", + "/block-media/shadcnblocks/block/placeholder-1.svg", button: { url: "https://ShadcnBlocks", text: "مشاهده جزئیات", @@ -71,7 +71,7 @@ export const defaultEntries: ChangelogEntry[] = [ "افزودن قابلیت وارد کردن داده‌ها", ], image: - "/block-media/shadcnblocks/block/placeholder-aspect-video-1.svg", + "/block-media/shadcnblocks/block/placeholder-1.svg", }, { version: "نسخه ۱۰.۰", @@ -80,7 +80,7 @@ export const defaultEntries: ChangelogEntry[] = [ description: "اولین نسخه پلتفرم با امکانات مدیریت پروژه، همکاری تیمی و پیگیری وظایف منتشر شد و از این پس به‌صورت مستمر توسعه خواهد یافت.", image: - "/block-media/shadcnblocks/block/placeholder-aspect-video-1.svg", + "/block-media/shadcnblocks/block/placeholder-1.svg", button: { url: "https://ShadcnBlocks", text: "مشاهده جزئیات", diff --git a/blocks/changelog8.tsx b/blocks/changelog8.tsx index 9f30631..6591572 100644 --- a/blocks/changelog8.tsx +++ b/blocks/changelog8.tsx @@ -215,7 +215,7 @@ export const defaultChangelogData: ChangelogEntry[] = [ "فیلتر بهتر بر اساس مرحله قیف، مالک و منبع", ], image: - "/block-media/shadcnblocks/block/placeholder-aspect-video-1.svg", + "/block-media/shadcnblocks/block/placeholder-1.svg", }, { version: "نسخه ۱۲۵", @@ -230,6 +230,6 @@ export const defaultChangelogData: ChangelogEntry[] = [ "احراز هویت بیومتریک برای امنیت بیشتر", ], image: - "/block-media/shadcnblocks/block/placeholder-aspect-video-1.svg", + "/block-media/shadcnblocks/block/placeholder-1.svg", }, ]; diff --git a/blocks/feature101.tsx b/blocks/feature101.tsx index 3a58100..3a535ee 100644 --- a/blocks/feature101.tsx +++ b/blocks/feature101.tsx @@ -44,7 +44,7 @@ const Feature101 = ({ className }: Feature101Props) => {

دستیار هوش مصنوعی @@ -69,7 +69,7 @@ const Feature101 = ({ className }: Feature101Props) => {

پیشنهادهای هوشمند diff --git a/blocks/feature102.tsx b/blocks/feature102.tsx index 80b7aa9..64a47e5 100644 --- a/blocks/feature102.tsx +++ b/blocks/feature102.tsx @@ -7,8 +7,6 @@ const steps = [ "برنامه تیم را هماهنگ کنید و تداخل وظایف را کاهش دهید.", image: "/block-media/shadcnblocks/block/placeholder-1.svg", alt: "تقویم تیم", - imageClassName: - "z-10 aspect-video w-full rounded-xl border object-cover min-[960px]:max-h-56 min-[960px]:w-auto", }, { title: "چک‌لیست تحویل", @@ -16,8 +14,6 @@ const steps = [ "نسخه درست فایل همیشه در دسترس همه اعضا باشد.", image: "/block-media/shadcnblocks/block/placeholder-2.svg", alt: "فضای همکاری تیمی", - imageClassName: - "z-10 max-h-56 w-full rounded-xl border object-cover min-[960px]:aspect-video min-[960px]:w-auto", }, { title: "گزارش پیشرفت", @@ -25,19 +21,23 @@ const steps = [ "بحث را کنار هر تسک نگه دارید تا تصمیم‌ها گم نشود.", image: "/block-media/shadcnblocks/block/placeholder-3.svg", alt: "برد مدیریت پروژه", - imageClassName: - "z-10 max-h-56 w-full rounded-xl border object-cover min-[960px]:aspect-video min-[960px]:w-auto", }, ]; -function StepConnector({ index }: { index: number }) { +function StepNumber({ index }: { index: number }) { + return ( + + {(index + 1).toLocaleString("fa-IR")} + + ); +} + +function DesktopStepConnector({ index }: { index: number }) { if (index === 0) { return ( -
+
- - {(index + 1).toLocaleString("fa-IR")} - +
); @@ -45,24 +45,20 @@ function StepConnector({ index }: { index: number }) { if (index === steps.length - 1) { return ( -
+
- - {(index + 1).toLocaleString("fa-IR")} - +
); } return ( -
+
- - {(index + 1).toLocaleString("fa-IR")} - +
); @@ -74,34 +70,61 @@ interface Feature102Props { const Feature102 = ({ className }: Feature102Props) => { return ( -
-
-
-

همکاری از راه دور را ساده کنید

-

+

+
+
+

+ همکاری از راه دور را ساده کنید +

+

هر عضو بداند چه زمانی چه کاری دارد

-
+ +
{steps.map((step, index) => (
-
- -
-

{step.title}

-

+ {index < steps.length - 1 ? ( + + + + ) : null} + +

+
+ +
+ +
+ +
+
+

+ {step.title} +

+

{step.description}

+ {step.alt}
- {step.alt}
))}
diff --git a/blocks/feature105.tsx b/blocks/feature105.tsx index 7126797..bace0a3 100644 --- a/blocks/feature105.tsx +++ b/blocks/feature105.tsx @@ -60,55 +60,65 @@ interface Feature105Props { const Feature105 = ({ className }: Feature105Props) => { return ( -
-
-
+
+
+
- + ERP -

+

عملیات سازمان را یکپارچه کنید

-

- گزارش‌های یکپارچه نشان می‌دهد کدام بخش بیشترین تأثیر را روی سودآوری دارد. +

+ گزارش‌های یکپارچه نشان می‌دهد کدام بخش بیشترین تأثیر را روی سودآوری + دارد.

-
- -
+
+ +
{TABS.map(({ icon: Icon, label }, index) => ( - + -

{label}

+

+ {label} +

))}
-
+
{TABS.map(({ image, label }, index) => ( {`نمای ))} diff --git a/blocks/feature114.tsx b/blocks/feature114.tsx index d411e42..5ead4da 100644 --- a/blocks/feature114.tsx +++ b/blocks/feature114.tsx @@ -51,7 +51,8 @@ const features: { }, { title: "ردیابی زمان", - description: "وضعیت هر کار را در یک نما ببینید و گلوگاه‌ها را زودتر پیدا کنید.", + description: + "وضعیت هر کار را در یک نما ببینید و گلوگاه‌ها را زودتر پیدا کنید.", icon: PenTool, }, { @@ -71,7 +72,8 @@ const features: { }, { title: "برد Kanban", - description: "وضعیت هر کار را در یک نما ببینید و گلوگاه‌ها را زودتر پیدا کنید.", + description: + "وضعیت هر کار را در یک نما ببینید و گلوگاه‌ها را زودتر پیدا کنید.", icon: Users, }, ]; @@ -83,10 +85,19 @@ function FeatureCard({ className, }: (typeof features)[number] & { className?: string }) { return ( -
- -

{title}

-

{description}

+
+ +

+ {title} +

+

+ {description} +

); } @@ -100,10 +111,17 @@ const Feature114 = ({ className }: Feature114Props) => { const secondHalf = features.slice(features.length / 2); return ( -
-
-
-
+
+
+
+
{avatars.map((src, index) => ( @@ -114,34 +132,41 @@ const Feature114 = ({ className }: Feature114Props) => { ))} -

+

همکاری از راه دور را ساده کنید

-

+

هر عضو بداند چه زمانی چه کاری دارد

- -
-
-

+
+
+

{(85).toLocaleString("fa-IR")}٪

-

+

تصمیم‌ها را سریع‌تر هماهنگ کنید

-
-

+
+

{(25000).toLocaleString("fa-IR")}+

-

تیم‌ها را در یک فضای مشترک هم‌راستا کنید

+

+ تیم‌ها را در یک فضای مشترک هم‌راستا کنید +

-
+ +
{ }), ]} orientation="vertical" - className="pointer-events-none relative lg:hidden" + className="pointer-events-none relative w-full min-w-0 lg:hidden" > - + {features.map((feature) => ( - + ))} @@ -175,11 +200,11 @@ const Feature114 = ({ className }: Feature114Props) => { }), ]} orientation="vertical" - className="pointer-events-none relative hidden lg:block" + className="pointer-events-none relative hidden w-full min-w-0 lg:block" > - + {firstHalf.map((feature) => ( - + ))} @@ -197,11 +222,11 @@ const Feature114 = ({ className }: Feature114Props) => { }), ]} orientation="vertical" - className="pointer-events-none relative hidden lg:block" + className="pointer-events-none relative hidden w-full min-w-0 lg:block" > - + {secondHalf.map((feature) => ( - + ))} diff --git a/blocks/feature12.tsx b/blocks/feature12.tsx index 7669298..4506cd4 100644 --- a/blocks/feature12.tsx +++ b/blocks/feature12.tsx @@ -107,36 +107,43 @@ const Feature12 = ({ className }: Feature12Props) => { }, [api]); return ( -
-
-
+
+
+
داده سازمانی -

+

تصمیم استراتژیک را داده‌محور کنید

-
-

داشبوردهای تعاملی به تیم‌ها اجازه می‌دهد سؤال جدید بپرسند بدون اینکه هر بار به تیم داده وابسته باشند.

-
-
- +
+

+ داشبوردهای تعاملی به تیم‌ها اجازه می‌دهد سؤال جدید بپرسند بدون + اینکه هر بار به تیم داده وابسته باشند. +

+
+
+ {currentSlide.toLocaleString("fa-IR").padStart(2, "۰")} -
+
- + {slides.length.toLocaleString("fa-IR").padStart(2, "۰")}
@@ -148,19 +155,19 @@ const Feature12 = ({ className }: Feature12Props) => { {slides.map((slide, index) => ( -
- - -
+
+ + +
{slide.icon} -

+

{slide.title}

-

+

{slide.description}

diff --git a/blocks/feature139.tsx b/blocks/feature139.tsx index 9645f99..388d763 100644 --- a/blocks/feature139.tsx +++ b/blocks/feature139.tsx @@ -6,7 +6,8 @@ import { cn } from "@/lib/utils"; const items = [ { title: "Slack", - description: "محصولات را دسته‌بندی کنید و ویژگی‌ها را برای جستجوی بهتر ساختاردهی کنید.", + description: + "محصولات را دسته‌بندی کنید و ویژگی‌ها را برای جستجوی بهتر ساختاردهی کنید.", number: 400, }, { @@ -32,41 +33,54 @@ interface Feature139Props { const Feature139 = ({ className }: Feature139Props) => { return ( -
-
-
-
-
+
+
+
+
+
- مسیر خرید را بهینه کنید تا سبد رها شده کمتر شود. پیشنهاد هوشمند محصول، میانگین سفارش را بالا می‌برد. + فروش آنلاین -

+

فروش آنلاین را مقیاس‌پذیر کنید

-

+

+ مسیر خرید را بهینه کنید تا سبد رها شده کمتر شود. پیشنهاد هوشمند + محصول، میانگین سفارش را بالا می‌برد. +

+

تجربه خرید را روان‌تر بسازید

-
+
مدیریت سفارش
-
+
{items.map((item) => ( -
+

{item.number.toLocaleString("fa-IR")}+

-
{item.title}
-

+

+ {item.title} +
+

{item.description}

diff --git a/blocks/feature140.tsx b/blocks/feature140.tsx index 6a43f0e..3865add 100644 --- a/blocks/feature140.tsx +++ b/blocks/feature140.tsx @@ -12,8 +12,7 @@ import { cn } from "@/lib/utils"; const items = [ { title: "پیشنهاد عنوان", - description: - "ساختار عنوان و توضیحات را برای کلیک بیشتر بهینه کنید.", + description: "ساختار عنوان و توضیحات را برای کلیک بیشتر بهینه کنید.", imgSrc: "/block-media/shadcnblocks/block/placeholder-dark-1.svg", }, { @@ -36,42 +35,52 @@ interface Feature140Props { const Feature140 = ({ className }: Feature140Props) => { return ( -
-
+
+
- + {items.map((item) => ( - -
-
-

+ +
+
+

{item.title}

-

+

{item.description}

-
+
{`نمای
))} -
- +
+
-
- +
+
diff --git a/blocks/feature148.tsx b/blocks/feature148.tsx index 428fcc2..7af4142 100644 --- a/blocks/feature148.tsx +++ b/blocks/feature148.tsx @@ -7,8 +7,7 @@ import { cn } from "@/lib/utils"; const utilities = [ { title: "تاریخچه مشتری", - description: - "پاسخ‌های پرتکرار را ذخیره کنید و با یک کلیک ارسال کنید.", + description: "پاسخ‌های پرتکرار را ذخیره کنید و با یک کلیک ارسال کنید.", image: "/block-media/shadcnblocks/block/placeholder-1.svg", imageAlt: "مدیریت تیکت", }, @@ -28,15 +27,13 @@ const utilities = [ }, { title: "پایگاه دانش", - description: - "مشتریان و تیم با مقالات راهنما سریع‌تر به پاسخ می‌رسند.", + description: "مشتریان و تیم با مقالات راهنما سریع‌تر به پاسخ می‌رسند.", image: "/block-media/shadcnblocks/block/placeholder-4.svg", imageAlt: "مدیریت تیکت", }, { title: "پاسخ آماده", - description: - "پاسخ‌های پرتکرار را ذخیره کنید و با یک کلیک ارسال کنید.", + description: "پاسخ‌های پرتکرار را ذخیره کنید و با یک کلیک ارسال کنید.", image: "/block-media/shadcnblocks/block/placeholder-5.svg", imageAlt: "داشبورد رضایت", }, @@ -55,30 +52,46 @@ interface Feature148Props { const Feature148 = ({ className }: Feature148Props) => { return ( -
-
-
-

+
+
+
+

زمان حل مسئله را کوتاه کنید

-

+

کیفیت پاسخگویی را قابل اندازه‌گیری کنید

-
-
+
{utilities.map((utility) => ( - + {utility.imageAlt} -
-

{utility.title}

-

{utility.description}

+
+

{utility.title}

+

+ {utility.description} +

))} diff --git a/blocks/feature149.tsx b/blocks/feature149.tsx index 1423020..3e87eb5 100644 --- a/blocks/feature149.tsx +++ b/blocks/feature149.tsx @@ -9,55 +9,70 @@ interface Feature149Props { const Feature149 = ({ className }: Feature149Props) => { return ( -
-
-
+
+
+
دستیار هوش مصنوعی -
-
+
+ +
-

+

با هوش مصنوعی سریع‌تر تصمیم بگیرید -

-

- کارهای تکراری را به AI بسپارید +

+

+ درخواست‌ها را خودکار دسته‌بندی کنید و به تیم مناسب بفرستید. کارهای + تکراری را به AI بسپارید.

-
+
-
{ - console.log("click"); - }} - > -
+
+ +
-

+

پیشنهادهایی که واقعاً مفیدند -

-

+

+

داده را به بینش عملی تبدیل کنید

diff --git a/blocks/feature152.tsx b/blocks/feature152.tsx index 4bd0c5a..8821aab 100644 --- a/blocks/feature152.tsx +++ b/blocks/feature152.tsx @@ -6,14 +6,48 @@ import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { cn } from "@/lib/utils"; +const icons = [ + { + image: "/block-media/shadcnblocks/block/block-1.svg", + title: "فروش آنلاین را مقیاس‌پذیر کنید", + }, + { + image: "/block-media/shadcnblocks/block/block-2.svg", + title: "تجربه خرید را روان‌تر بسازید", + }, + { + image: "/block-media/shadcnblocks/block/block-3.svg", + title: "هر سفارش را از انبار تا تحویل ببینید", + }, + { + image: "/block-media/shadcnblocks/block/block-4.svg", + title: "نرخ تبدیل فروشگاه را بالا ببرید", + }, + { + image: "/block-media/shadcnblocks/block/block-5.svg", + title: "موجودی و سفارش را یکجا مدیریت کنید", + }, + { + image: "/block-media/shadcnblocks/block/block-6.svg", + title: "مشتری را به خرید دوباره برگردانید", + }, + { + image: "/block-media/shadcnblocks/block/block-1.svg", + title: "فروش آنلاین را مقیاس‌پذیر کنید", + }, +] as const; + const IconElem = ({ image, title }: { image: string; title: string }) => ( -
+
{`لوگوی - + {title}
@@ -25,69 +59,65 @@ interface Feature152Props { const Feature152 = ({ className }: Feature152Props) => { return ( -
-
-
+
+
+
فروش آنلاین -

+

تجربه خرید را روان‌تر بسازید

-

+

هر سفارش را از انبار تا تحویل ببینید

-
-
-
- - + +
+
+ +
- +
-
- - +
+ +
-
- - +
+ +
{[...Array(11)].map((_, index) => (
{ - const [startIndex, setStartIndex] = useState(0); - return ( -
-
+
+
-
-

+
+

رتبه کلمات کلیدی را پیگیری کنید

-
- setStartIndex(startIndex - 1)} - disabled={startIndex === 0} - className="static" - /> - setStartIndex(startIndex + 1)} - disabled={startIndex === integrations.length - 1} - className="static" - /> +
+ +
-
- +
+ {integrations.map((item) => ( -
-
+
+
{`لوگوی -

{item.title}

+

+ {item.title} +

+
+
+ {item.description}
-
{item.description}
بیشتر بدانید - +
-
+
{item.info.map((infoItem) => ( -
-

{infoItem.title}

-

+

+

+ {infoItem.title} +

+

{infoItem.text}

@@ -166,8 +158,8 @@ const Feature153 = ({ className }: Feature153Props) => { ))} -
-
+
+
diff --git a/blocks/feature154.tsx b/blocks/feature154.tsx index 9f57519..143f54d 100644 --- a/blocks/feature154.tsx +++ b/blocks/feature154.tsx @@ -104,43 +104,49 @@ const Feature154 = ({ className }: Feature154Props) => {
-
-
+
+
ERP -

+

عملیات سازمان را یکپارچه کنید

گزارش‌های یکپارچه نشان می‌دهد کدام بخش بیشترین تأثیر را روی سودآوری دارد.

-
- +
+ {badges.map((badge, index) => (
{badge.icon} {badge.title}
))}
- + {badges.map((badge, index) => (
{badge.icon} {badge.title}
))}
-
-
+
+
diff --git a/blocks/feature158.tsx b/blocks/feature158.tsx index f6fa313..8b85ce3 100644 --- a/blocks/feature158.tsx +++ b/blocks/feature158.tsx @@ -28,33 +28,47 @@ interface Feature158Props { const Feature158 = ({ className }: Feature158Props) => { return ( -
-
-
-

+
+
+
+

همکاری فروش و بازاریابی

-

+

پیش‌بینی درآمد را دقیق‌تر کنید

-

+

اولویت‌بندی سرنخ

-
-
+
+
{integrations.map((item) => ( -
+
{item.imageAlt} -

{item.text}

+

+ {item.text} +

))}
- +
diff --git a/blocks/feature164.tsx b/blocks/feature164.tsx index c10df9e..836d0b8 100644 --- a/blocks/feature164.tsx +++ b/blocks/feature164.tsx @@ -32,13 +32,17 @@ interface Feature164Props { } const Feature164 = ({ className }: Feature164Props) => { - const [cardNumber, setCardNumber] = useState(0); + const [activeTab, setActiveTab] = useState("0"); return (
-
- +
+
{integrations.map((item, index) => ( @@ -50,23 +54,19 @@ const Feature164 = ({ className }: Feature164Props) => { ))}
- + {integrations.map((item, index) => ( setCardNumber(index)} + className="rounded-xl border border-border px-3 py-2 text-xs data-active:border-primary sm:text-base" > {item.title} ))}
-
+

همکاری از راه دور را ساده کنید{" "} diff --git a/blocks/feature167.tsx b/blocks/feature167.tsx index 79a499e..6a40999 100644 --- a/blocks/feature167.tsx +++ b/blocks/feature167.tsx @@ -42,9 +42,9 @@ interface Feature167Props { const Feature167 = ({ className }: Feature167Props) => { return ( -
+
-
+
ترافیک ارگانیک @@ -59,11 +59,11 @@ const Feature167 = ({ className }: Feature167Props) => {
-
+
{FEATURES_DATA.map((item, index, array) => ( diff --git a/blocks/feature168.tsx b/blocks/feature168.tsx index e716d42..de7fce4 100644 --- a/blocks/feature168.tsx +++ b/blocks/feature168.tsx @@ -36,15 +36,21 @@ interface Feature168Props { const Feature168 = ({ className }: Feature168Props) => { return ( -
+
-
+
- - گزارش‌های یکپارچه نشان می‌دهد کدام بخش بیشترین تأثیر را روی سودآوری دارد. + + + گزارش‌های یکپارچه نشان می‌دهد کدام بخش بیشترین تأثیر را روی سودآوری دارد. +

عملیات سازمان را یکپارچه کنید @@ -54,15 +60,15 @@ const Feature168 = ({ className }: Feature168Props) => {

-
-
-
+
+
+
{DATA.map((item) => (
-
+

{item.title}

@@ -70,11 +76,11 @@ const Feature168 = ({ className }: Feature168Props) => { {item.description}

-
+
{item.imageAlt}
diff --git a/blocks/feature171.tsx b/blocks/feature171.tsx index f8d33a3..4e3b5c7 100644 --- a/blocks/feature171.tsx +++ b/blocks/feature171.tsx @@ -1,4 +1,4 @@ -import { ArrowDownRight } from "lucide-react"; +import { ArrowDownLeft } from "lucide-react"; import { Card, CardContent } from "@/components/ui/card"; import { cn } from "@/lib/utils"; @@ -27,57 +27,68 @@ interface Feature171Props { const Feature171 = ({ className }: Feature171Props) => { return ( -
-
-
- - - با یادآورهای هوشمند و اولویت‌بندی سرنخ، زمان تیم روی معاملات با احتمال بیشتر صرف می‌شود و چرخه فروش کوتاه‌تر می‌شود. +
+
+
+ + + چرخه فروش
-
-

+
+

پیش‌بینی درآمد را دقیق‌تر کنید

- چرخه فروش را از سرنخ تا قرارداد در یک مسیر مشخص پیش ببرید. مدیران می‌توانند گلوگاه‌ها را ببینند و تیم‌ها با اولویت درست روی معاملات ارزشمند تمرکز کنند. + چرخه فروش را از سرنخ تا قرارداد در یک مسیر مشخص پیش ببرید. مدیران می‌توانند + گلوگاه‌ها را ببینند و تیم‌ها با اولویت درست روی معاملات ارزشمند تمرکز کنند.

- - + + {items.map((item, i) => ( -
-
-
+
+
+
{item.imageAlt} - - {i < items.length - 1 && ( -
- -
- )} - {i < items.length - 1 && ( -
- -
- )} + {i < items.length - 1 ? ( + <> +
+ +
+
+ +
+ + ) : null}
))} @@ -103,7 +114,7 @@ const DashedLine = ({ return (
diff --git a/blocks/feature176.tsx b/blocks/feature176.tsx index ffe717d..a182560 100644 --- a/blocks/feature176.tsx +++ b/blocks/feature176.tsx @@ -57,29 +57,40 @@ interface Feature176Props { const Feature176 = ({ className }: Feature176Props) => { return ( -
+
-
-
-
-
- -

- با هوش مصنوعی سریع‌تر تصمیم بگیرید -

- +
+
+
+
+
+ +

+ با هوش مصنوعی سریع‌تر تصمیم بگیرید +

+
+ Data/logs/3201927
-
-
-

کارهای تکراری را به AI بسپارید

- +
+
+

+ کارهای تکراری را به AI بسپارید +

+ پیشنهادهایی که واقعاً مفیدند
@@ -89,19 +100,32 @@ const Feature176 = ({ className }: Feature176Props) => {
-

داده را به بینش عملی تبدیل کنید

+

+ داده را به بینش عملی تبدیل کنید +

-
- تیم را با دستیار هوشمند تقویت کنید - پیشنهاد هوشمند - اتوماسیون AI +
+ + تیم را با دستیار هوشمند تقویت کنید + + + پیشنهاد هوشمند + + + اتوماسیون AI +
-
-

فرایندها را با AI بهینه کنید

+
+

+ فرایندها را با AI بهینه کنید +

@@ -111,8 +135,8 @@ const Feature176 = ({ className }: Feature176Props) => {
-
-
+
+
-
-
-
- -

- با هوش مصنوعی سریع‌تر تصمیم بگیرید -

- +
+
+
+
+ +

+ با هوش مصنوعی سریع‌تر تصمیم بگیرید +

+
+ Data/logs/182620
- - - پیشنهاد هوشمند - + + + + پیشنهاد هوشمند + + اتوماسیون AI - + - + String(value).slice(0, 3)} /> { -
-
- - - مدل‌های هوشمند الگوهای پنهان در داده فروش و پشتیبانی را پیدا می‌کنند. تیم‌ها با پیشنهادهای عملی، سریع‌تر اقدام می‌کنند. +
+
+ + + مدل‌های هوشمند الگوهای پنهان در داده فروش و پشتیبانی را پیدا + می‌کنند. تیم‌ها با پیشنهادهای عملی، سریع‌تر اقدام می‌کنند.
-
-
-
-

کارهای تکراری را به AI بسپارید

- +
+
+
+

+ کارهای تکراری را به AI بسپارید +

+
-

- از خلاصه‌سازی مکالمه تا پیشنهاد پاسخ، AI زمان کار دستی را کم می‌کند و کیفیت خروجی را بالا می‌برد. +

+ از خلاصه‌سازی مکالمه تا پیشنهاد پاسخ، AI زمان کار دستی را کم + می‌کند و کیفیت خروجی را بالا می‌برد.

-
-
-

پیشنهادهایی که واقعاً مفیدند

- +
+
+

+ پیشنهادهایی که واقعاً مفیدند +

+
-

- سیستم با داده سازمان شما یاد می‌گیرد و هر بار پیشنهادهای دقیق‌تری برای بهبود نتیجه ارائه می‌دهد. +

+ سیستم با داده سازمان شما یاد می‌گیرد و هر بار پیشنهادهای + دقیق‌تری برای بهبود نتیجه ارائه می‌دهد.

-
-
-

داده را به بینش عملی تبدیل کنید

- +
+
+

+ داده را به بینش عملی تبدیل کنید +

+
-

- مدل‌های هوشمند الگوهای پنهان در داده فروش و پشتیبانی را پیدا می‌کنند. تیم‌ها با پیشنهادهای عملی، سریع‌تر اقدام می‌کنند. +

+ مدل‌های هوشمند الگوهای پنهان در داده فروش و پشتیبانی را پیدا + می‌کنند. تیم‌ها با پیشنهادهای عملی، سریع‌تر اقدام می‌کنند.

diff --git a/blocks/feature181.tsx b/blocks/feature181.tsx index 31e305e..6392c16 100644 --- a/blocks/feature181.tsx +++ b/blocks/feature181.tsx @@ -1,53 +1,33 @@ "use client"; -import { - ArrowRight, - BadgeCheck, - Clock, - Pyramid, - Sparkle, - Zap, -} from "lucide-react"; +import { ArrowRight, Clock } from "lucide-react"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { cn } from "@/lib/utils"; -interface DataItem { - title: string; - description: string; - image: string; - icon: React.ReactNode; -} - -const DATA: DataItem[] = [ +const DATA = [ { title: "موجودی انبار", description: "محصولات را دسته‌بندی کنید و ویژگی‌ها را برای جستجوی بهتر ساختاردهی کنید.", - image: "/block-media/shadcnblocks/block/placeholder-1.svg", - icon: , + duration: "۵ دقیقه", }, { title: "بازگشت مشتری", - description: - "پرداخت سریع و امن اعتماد مشتری را در لحظه خرید حفظ می‌کند.", - image: "/block-media/shadcnblocks/block/placeholder-2.svg", - icon: , + description: "پرداخت سریع و امن اعتماد مشتری را در لحظه خرید حفظ می‌کند.", + duration: "۵ دقیقه", }, { title: "صفحه فرود", description: "وضعیت ارسال را شفاف نشان دهید و تماس‌های پشتیبانی را کم کنید.", - image: "/block-media/shadcnblocks/block/placeholder-3.svg", - icon: , + duration: "۵ دقیقه", }, { title: "گزارش فروش", - description: - "کد تخفیف و کمپین را بر اساس رفتار خرید هدف بگیرید.", - image: "/block-media/shadcnblocks/block/placeholder-4.svg", - icon: , + description: "کد تخفیف و کمپین را بر اساس رفتار خرید هدف بگیرید.", + duration: "۵ دقیقه", }, ]; @@ -57,40 +37,56 @@ interface Feature181Props { const Feature181 = ({ className }: Feature181Props) => { return ( -
-
+
+
-

+

فروش آنلاین را مقیاس‌پذیر کنید

-
-
+
{DATA.map((feature, index) => (
-
-

+
+

{(index + 1).toLocaleString("fa-IR", { minimumIntegerDigits: 2, })} -

-
+

+
-

{feature.title}

-

+

+ {feature.title} +

+

{feature.description}

- - - مسیر خرید را بهینه کنید تا سبد رها شده کمتر شود. پیشنهاد هوشمند محصول، میانگین سفارش را بالا می‌برد. + + + {feature.duration}
))} diff --git a/blocks/feature183.tsx b/blocks/feature183.tsx index e4350a7..6509f2a 100644 --- a/blocks/feature183.tsx +++ b/blocks/feature183.tsx @@ -43,7 +43,12 @@ interface StatCardProps { const StatCard = ({ title, value, description, className }: StatCardProps) => { return ( -
+
{title}
{value} @@ -54,6 +59,88 @@ const StatCard = ({ title, value, description, className }: StatCardProps) => { ); }; +function FeatureCard({ className }: { className?: string }) { + return ( +
+
+

+ گردش تأیید +

+ + ERP + +
+
+

+ گزارش‌های یکپارچه نشان می‌دهد کدام بخش بیشترین تأثیر را روی سودآوری دارد. +

+
+
+ ); +} + +const selectItemClassName = + "ps-8 pe-1.5 text-right [&_span.absolute]:right-auto [&_span.absolute]:left-2"; + +function ProductCard({ className }: { className?: string }) { + return ( +
+
+

ERP

+
+ + + +
+
+
+ + +
+
+ ); +} + interface Feature183Props { className?: string; } @@ -63,33 +150,37 @@ const Feature183 = ({ className }: Feature183Props) => {
-
-
-
+
+
+
-
+
گزارش مالی یکپارچه داشبورد ERP
-
-
-

گردش تأیید

- - ERP - -
-
-

- گزارش‌های یکپارچه نشان می‌دهد کدام بخش بیشترین تأثیر را روی سودآوری دارد. -

-
+
+
-
-
-

ERP

-
- - - -
-
-
- -
- -
-
+
+
+ +
+ + +
-
+
{DATA.map((item) => ( - + ))}
diff --git a/blocks/feature184.tsx b/blocks/feature184.tsx index ce50f86..760c981 100644 --- a/blocks/feature184.tsx +++ b/blocks/feature184.tsx @@ -13,21 +13,21 @@ const FEATURES = [ description: "گزارش سفارشی را بدون SQL بسازید و سریع منتشر کنید.", image: "/block-media/shadcnblocks/block/placeholder-1.svg", imageAlt: "گزارش‌ساز", - icon: , + icon: , }, { title: "Pivot تعاملی", description: "ابعاد مختلف را بچرخانید و الگوی پنهان را پیدا کنید.", image: "/block-media/shadcnblocks/block/placeholder-2.svg", imageAlt: "تحلیل داده سازمان", - icon: , + icon: , }, { title: "داشبورد مدیریتی", description: "نمای اجرایی برای تصمیم‌های سریع طراحی کنید.", image: "/block-media/shadcnblocks/block/placeholder-3.svg", imageAlt: "داشبورد هوش تجاری", - icon: , + icon: , }, ]; @@ -41,54 +41,62 @@ const Feature184 = ({ className }: Feature184Props) => { const activeFeature = FEATURES.find((f) => f.title === activeTab); return ( -
-
-
+
+
+

تصمیم استراتژیک را داده‌محور کنید

-
-
+
+
{activeFeature?.imageAlt
-
+
setActiveTab(value)} - className="h-full w-full" + value={activeTab} + onValueChange={setActiveTab} + className="h-full w-full min-w-0" > - + {FEATURES.map((feature) => ( -
-
+
+
{feature.icon}
-
+

@@ -96,7 +104,7 @@ const Feature184 = ({ className }: Feature184Props) => {

@@ -104,7 +112,7 @@ const Feature184 = ({ className }: Feature184Props) => {
-
+
{
-
+
-
diff --git a/blocks/feature186.tsx b/blocks/feature186.tsx index 900dbd8..a371ab1 100644 --- a/blocks/feature186.tsx +++ b/blocks/feature186.tsx @@ -24,15 +24,16 @@ const DATA: DataItem[] = [ "تاریخچه تماس، قرارداد و تیکت هر مشتری را در یک صفحه ببینید و بدون جستجو تصمیم بگیرید.", image: "/block-media/shadcnblocks/block/placeholder-dark-1.svg", imageAlt: "داشبورد مدیریت ارتباط با مشتری", - icon: , + icon: , }, { id: "feature-2", title: "اتوماسیون مراحل فروش", - description: "وظایف تکراری فروش را خودکار کنید و تمرکز تیم را روی بستن معامله بگذارید.", + description: + "وظایف تکراری فروش را خودکار کنید و تمرکز تیم را روی بستن معامله بگذارید.", image: "/block-media/shadcnblocks/block/placeholder-dark-2.svg", imageAlt: "نمای پایپ‌لاین فروش", - icon: , + icon: , }, { id: "feature-3", @@ -41,7 +42,7 @@ const DATA: DataItem[] = [ "بر اساس داده واقعی پایپ‌لاین، درآمد ماه‌های آینده را با اطمینان بیشتر تخمین بزنید.", image: "/block-media/shadcnblocks/block/placeholder-dark-3.svg", imageAlt: "پروفایل یکپارچه مشتری", - icon: , + icon: , }, ]; @@ -53,86 +54,96 @@ const Feature186 = ({ className }: Feature186Props) => { const [selection, setSelection] = useState(DATA[0].id); return ( -
+
-
-
+
+

هر سرنخ را تا قرارداد دنبال کنید

-

- تمام تعاملات، سرنخ‌ها و قراردادها در یک فضای کاری متمرکز جمع می‌شود. تیم فروش بدون جابجایی بین ابزارها، سریع‌تر پیش‌بینی می‌کند و معاملات بیشتری می‌بندد. +

+ تمام تعاملات، سرنخ‌ها و قراردادها در یک فضای کاری متمرکز جمع می‌شود. + تیم فروش بدون جابجایی بین ابزارها، سریع‌تر پیش‌بینی می‌کند و معاملات + بیشتری می‌بندد.

-
- -
-
-
+ + + {DATA.map((feature) => ( + - - {DATA.map((feature) => ( - - {feature.title} - - ))} - -
-
-
-
+ {feature.title} + + ))} + -
+
{DATA.map((feature) => ( -
-
-
+
+
+
{feature.icon}
-
-

+
+

{feature.title}

-

+

{feature.description}

- {feature.imageAlt} +
+ {feature.imageAlt} +
))}
-
+
{DATA.map((feature) => (
diff --git a/blocks/feature192.tsx b/blocks/feature192.tsx index 72f15e1..c026e9a 100644 --- a/blocks/feature192.tsx +++ b/blocks/feature192.tsx @@ -1,7 +1,6 @@ "use client"; -import { type SVGProps, useId } from "react"; -import { useState } from "react"; +import { type SVGProps, useId, useState } from "react"; import { Accordion, @@ -9,60 +8,67 @@ import { AccordionItem, AccordionTrigger, } from "@/components/ui/accordion"; +import { cn } from "@/lib/utils"; const FEATURES = [ { id: "move-money", title: "طبقه‌بندی خودکار", - description: - "درخواست‌ها را خودکار دسته‌بندی کنید و به تیم مناسب بفرستید.", + description: "درخواست‌ها را خودکار دسته‌بندی کنید و به تیم مناسب بفرستید.", image: "/block-media/shadcnblocks/block/placeholder-1.svg", imageAlt: "دستیار هوش مصنوعی", }, { id: "card-program", title: "پیش‌بینی ریزش", - description: - "مشتریان در معرض ریزش را زودتر شناسایی کنید.", + description: "مشتریان در معرض ریزش را زودتر شناسایی کنید.", image: "/block-media/shadcnblocks/block/placeholder-2.svg", imageAlt: "پیشنهادهای هوشمند", }, { id: "lend-money", title: "جستجوی معنایی", - description: - "متن‌های طولانی را در چند ثانیه به نکات کلیدی تبدیل کنید.", + description: "متن‌های طولانی را در چند ثانیه به نکات کلیدی تبدیل کنید.", image: "/block-media/shadcnblocks/block/placeholder-3.svg", imageAlt: "تحلیل با AI", }, { id: "data-analytics", title: "تولید محتوا", - description: - "بهترین پاسخ را بر اساس زمینه مکالمه پیشنهاد دهید.", + description: "بهترین پاسخ را بر اساس زمینه مکالمه پیشنهاد دهید.", image: "/block-media/shadcnblocks/block/placeholder-4.svg", imageAlt: "دستیار هوش مصنوعی", }, { id: "compliance", title: "تحلیل احساس", - description: - "درخواست‌ها را خودکار دسته‌بندی کنید و به تیم مناسب بفرستید.", + description: "درخواست‌ها را خودکار دسته‌بندی کنید و به تیم مناسب بفرستید.", image: "/block-media/shadcnblocks/block/placeholder-5.svg", imageAlt: "پیشنهادهای هوشمند", }, ]; -export function Feature192() { +interface Feature192Props { + className?: string; +} + +const Feature192 = ({ className }: Feature192Props) => { const [selectedIndex, setSelectedIndex] = useState(0); return ( -
-
+
+
-
+

دستیار گفتگو @@ -71,10 +77,10 @@ export function Feature192() { با هوش مصنوعی سریع‌تر تصمیم بگیرید

-
+
setSelectedIndex(Number(value))} > @@ -85,7 +91,7 @@ export function Feature192() { className="border-black/20 dark:border-white/20" > - + {feature.title} @@ -93,22 +99,22 @@ export function Feature192() {

{feature.description}

-
+
{feature.imageAlt}
))} -
+
{FEATURES[selectedIndex].imageAlt}
@@ -116,7 +122,7 @@ export function Feature192() {
); -} +}; interface PlusSignsProps extends SVGProps { className?: string; @@ -162,3 +168,5 @@ const PlusSigns = ({ className, ...props }: PlusSignsProps) => { ); }; + +export { Feature192 }; diff --git a/blocks/feature213.tsx b/blocks/feature213.tsx index 78734c8..f90bd98 100644 --- a/blocks/feature213.tsx +++ b/blocks/feature213.tsx @@ -1,4 +1,3 @@ -import { AspectRatio } from "@/components/ui/aspect-ratio"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { cn } from "@/lib/utils"; @@ -29,8 +28,7 @@ const LIST: TabItem[] = [ id: "clear-audio", title: "Pivot تعاملی", value: "2", - summary: - "گزارش سفارشی را بدون SQL بسازید و سریع منتشر کنید.", + summary: "گزارش سفارشی را بدون SQL بسازید و سریع منتشر کنید.", image: { src: "/block-media/shadcnblocks/block/placeholder-2.svg", alt: "تحلیل داده سازمان", @@ -40,8 +38,7 @@ const LIST: TabItem[] = [ id: "green-screen", title: "داشبورد مدیریتی", value: "3", - summary: - "داده سازمانی", + summary: "داده سازمانی", image: { src: "/block-media/shadcnblocks/block/placeholder-3.svg", alt: "داشبورد هوش تجاری", @@ -55,53 +52,56 @@ interface Feature213Props { const Feature213 = ({ className }: Feature213Props) => { return ( -
-
+
+

تصمیم استراتژیک را داده‌محور کنید

-
- - - {LIST.map((item) => ( - -
{item.title}
-
- {item.summary} -
-
- ))} -
+ + + {LIST.map((item) => ( - - +
{item.title}
+
+ {item.summary} +
+ + ))} +
+ +
+ {LIST.map((item) => ( + +
{item.image.alt} - +
))} - -
+
+
); diff --git a/blocks/feature214.tsx b/blocks/feature214.tsx index 222978a..241f15e 100644 --- a/blocks/feature214.tsx +++ b/blocks/feature214.tsx @@ -10,7 +10,6 @@ import { ScanFace, TextQuote, } from "lucide-react"; -import { useRef } from "react"; import { Card, @@ -29,7 +28,8 @@ import { cn } from "@/lib/utils"; interface CarouselCardItem { id: string; - video: string; + image: string; + imageAlt: string; Icon: LucideIcon; title: string; link: string; @@ -39,7 +39,8 @@ interface CarouselCardItem { const CARDS: CarouselCardItem[] = [ { id: "code-analysis", - video: "/block-media/shadcnblocks/block/video-1.mp4", + image: "/block-media/shadcnblocks/block/placeholder-1.svg", + imageAlt: "داشبورد مدیریت ارتباط با مشتری", Icon: Eye, title: "پروفایل ۳۶۰ درجه مشتری", link: "#", @@ -48,7 +49,8 @@ const CARDS: CarouselCardItem[] = [ }, { id: "multi-language", - video: "/block-media/shadcnblocks/block/video-6.mp4", + image: "/block-media/shadcnblocks/block/placeholder-2.svg", + imageAlt: "نمای پایپ‌لاین فروش", Icon: Languages, title: "اتوماسیون مراحل فروش", link: "#", @@ -57,7 +59,8 @@ const CARDS: CarouselCardItem[] = [ }, { id: "refactoring", - video: "/block-media/shadcnblocks/block/video-7-640_360_30fps.mp4", + image: "/block-media/shadcnblocks/block/placeholder-3.svg", + imageAlt: "پروفایل یکپارچه مشتری", Icon: AudioLines, title: "پیش‌بینی درآمد", link: "#", @@ -66,7 +69,8 @@ const CARDS: CarouselCardItem[] = [ }, { id: "code-cleanup", - video: "/block-media/shadcnblocks/block/video-5.mp4", + image: "/block-media/shadcnblocks/block/placeholder-4.svg", + imageAlt: "داشبورد مدیریت ارتباط با مشتری", Icon: ListMinus, title: "یادآور پیگیری هوشمند", link: "#", @@ -75,7 +79,8 @@ const CARDS: CarouselCardItem[] = [ }, { id: "security-scanner", - video: "/block-media/shadcnblocks/block/video-1.mp4", + image: "/block-media/shadcnblocks/block/placeholder-5.svg", + imageAlt: "نمای پایپ‌لاین فروش", Icon: ScanFace, title: "تقسیم خودکار سرنخ", link: "#", @@ -84,7 +89,8 @@ const CARDS: CarouselCardItem[] = [ }, { id: "documentation", - video: "/block-media/shadcnblocks/block/video-6.mp4", + image: "/block-media/shadcnblocks/block/placeholder-6.svg", + imageAlt: "پروفایل یکپارچه مشتری", Icon: TextQuote, title: "گزارش عملکرد فروش", link: "#", @@ -93,7 +99,8 @@ const CARDS: CarouselCardItem[] = [ }, { id: "code-suggestions", - video: "/block-media/shadcnblocks/block/video-7-640_360_30fps.mp4", + image: "/block-media/shadcnblocks/block/placeholder-dark-1.svg", + imageAlt: "داشبورد مدیریت ارتباط با مشتری", Icon: Captions, title: "مدیریت قرارداد", link: "#", @@ -102,47 +109,35 @@ const CARDS: CarouselCardItem[] = [ }, ]; -const CarouselCard = ({ video, Icon, title, link, summary }: CarouselCardItem) => { - const videoRef = useRef(null); - +const CarouselCard = ({ + image, + imageAlt, + Icon, + title, + link, + summary, +}: CarouselCardItem) => { return ( - { - if (videoRef.current) { - videoRef.current.play(); - } - }} - onMouseLeave={() => { - if (videoRef.current) { - videoRef.current.pause(); - videoRef.current.currentTime = 0; - } - }} - > - - -
-
-
+
+ {imageAlt}
-
+
-
- +
+ {title} - + {summary}
@@ -158,36 +153,46 @@ interface Feature214Props { const Feature214 = ({ className }: Feature214Props) => { return ( -
-
-
+
+
+

هر سرنخ را تا قرارداد دنبال کنید

-

- پروفایل یکپارچه مشتری، تاریخچه تماس و وضعیت معامله را همزمان نشان می‌دهد. تیم‌ها با دید مشترک، هماهنگ‌تر پیش می‌روند و نرخ تبدیل بالاتر می‌رود. +

+ پروفایل یکپارچه مشتری، تاریخچه تماس و وضعیت معامله را همزمان نشان + می‌دهد. تیم‌ها با دید مشترک، هماهنگ‌تر پیش می‌روند و نرخ تبدیل بالاتر + می‌رود.

+ - + {CARDS.map((item) => ( ))} -
- - +
+ +
diff --git a/blocks/feature215.tsx b/blocks/feature215.tsx index d97bfef..ad3dd92 100644 --- a/blocks/feature215.tsx +++ b/blocks/feature215.tsx @@ -12,7 +12,6 @@ import { } from "lucide-react"; import { useRef } from "react"; -import { AspectRatio } from "@/components/ui/aspect-ratio"; import { Card, CardContent, @@ -31,6 +30,7 @@ import { cn } from "@/lib/utils"; interface CarouselCardItem { id: string; video: string; + poster: string; Icon: LucideIcon; title: string; link: string; @@ -41,6 +41,7 @@ const CARDS: CarouselCardItem[] = [ { id: "design-system", video: "/block-media/shadcnblocks/block/video-1.mp4", + poster: "/block-media/shadcnblocks/block/placeholder-1.svg", Icon: Eye, title: "همکاری فروش و بازاریابی", link: "#", @@ -50,6 +51,7 @@ const CARDS: CarouselCardItem[] = [ { id: "framework-agnostic", video: "/block-media/shadcnblocks/block/video-2.mp4", + poster: "/block-media/shadcnblocks/block/placeholder-2.svg", Icon: Languages, title: "اولویت‌بندی سرنخ", link: "#", @@ -58,7 +60,8 @@ const CARDS: CarouselCardItem[] = [ }, { id: "interactive", - video: "/block-media/shadcnblocks/block/video-3.mp4", + video: "/block-media/shadcnblocks/block/landscape.mp4", + poster: "/block-media/shadcnblocks/block/placeholder-3.svg", Icon: AudioLines, title: "قالب پیشنهاد فروش", link: "#", @@ -67,7 +70,8 @@ const CARDS: CarouselCardItem[] = [ }, { id: "minimal-setup", - video: "/block-media/shadcnblocks/block/video-4.mp4", + video: "/block-media/shadcnblocks/block/video-1.mp4", + poster: "/block-media/shadcnblocks/block/placeholder-4.svg", Icon: ListMinus, title: "ردیابی کووت", link: "#", @@ -76,7 +80,8 @@ const CARDS: CarouselCardItem[] = [ }, { id: "accessibility", - video: "/block-media/shadcnblocks/block/video-5.mp4", + video: "/block-media/shadcnblocks/block/video-2.mp4", + poster: "/block-media/shadcnblocks/block/placeholder-5.svg", Icon: ScanFace, title: "تحلیل باخت معامله", link: "#", @@ -85,7 +90,8 @@ const CARDS: CarouselCardItem[] = [ }, { id: "documentation", - video: "/block-media/shadcnblocks/block/video-6.mp4", + video: "/block-media/shadcnblocks/block/landscape.mp4", + poster: "/block-media/shadcnblocks/block/placeholder-6.svg", Icon: TextQuote, title: "هدف‌گذاری تیمی", link: "#", @@ -94,7 +100,8 @@ const CARDS: CarouselCardItem[] = [ }, { id: "typescript", - video: "/block-media/shadcnblocks/block/video-6.mp4", + video: "/block-media/shadcnblocks/block/video-1.mp4", + poster: "/block-media/shadcnblocks/block/placeholder-dark-1.svg", Icon: Captions, title: "اتوماسیون پیگیری", link: "#", @@ -103,17 +110,22 @@ const CARDS: CarouselCardItem[] = [ }, ]; -const CarouselCard = ({ video, Icon, title, link, summary }: CarouselCardItem) => { +const CarouselCard = ({ + video, + poster, + Icon, + title, + link, + summary, +}: CarouselCardItem) => { const videoRef = useRef(null); return ( { - if (videoRef.current) { - videoRef.current.play(); - } + void videoRef.current?.play(); }} onMouseLeave={() => { if (videoRef.current) { @@ -122,28 +134,29 @@ const CarouselCard = ({ video, Icon, title, link, summary }: CarouselCardItem) = } }} > - - -
- + + +
+
-
- +
+ {title} @@ -162,36 +175,45 @@ interface Feature215Props { const Feature215 = ({ className }: Feature215Props) => { return ( -
-
-
+
+
+

پیش‌بینی درآمد را دقیق‌تر کنید

-

- الگوهای موفق فروش را در کل سازمان تکرار کنید. داده لحظه‌ای نشان می‌دهد کدام مرحله بیشترین افت تبدیل را دارد. +

+ الگوهای موفق فروش را در کل سازمان تکرار کنید. داده لحظه‌ای نشان + می‌دهد کدام مرحله بیشترین افت تبدیل را دارد.

+ - + {CARDS.map((item) => ( ))} -
- - +
+ +
diff --git a/blocks/feature215a.tsx b/blocks/feature215a.tsx index 96cc51c..91271a4 100644 --- a/blocks/feature215a.tsx +++ b/blocks/feature215a.tsx @@ -11,7 +11,6 @@ import { } from "lucide-react"; import { useRef } from "react"; -import { AspectRatio } from "@/components/ui/aspect-ratio"; import { Card, CardContent, @@ -23,6 +22,7 @@ import { cn } from "@/lib/utils"; interface GridCardItem { id: string; video: string; + poster: string; Icon: LucideIcon; title: string; link: string; @@ -33,15 +33,16 @@ const CARDS: GridCardItem[] = [ { id: "design-system", video: "/block-media/shadcnblocks/block/video-1.mp4", + poster: "/block-media/shadcnblocks/block/placeholder-1.svg", Icon: Eye, title: "ردیابی UTM", link: "#", - summary: - "عنوان، تصویر یا فراخوان را تست کنید و برنده را سریع پیدا کنید.", + summary: "عنوان، تصویر یا فراخوان را تست کنید و برنده را سریع پیدا کنید.", }, { id: "framework-agnostic", video: "/block-media/shadcnblocks/block/video-2.mp4", + poster: "/block-media/shadcnblocks/block/placeholder-2.svg", Icon: Languages, title: "گزارش ROI", link: "#", @@ -50,7 +51,8 @@ const CARDS: GridCardItem[] = [ }, { id: "interactive", - video: "/block-media/shadcnblocks/block/video-3.mp4", + video: "/block-media/shadcnblocks/block/landscape.mp4", + poster: "/block-media/shadcnblocks/block/placeholder-3.svg", Icon: AudioLines, title: "مدیریت کمپین", link: "#", @@ -59,7 +61,8 @@ const CARDS: GridCardItem[] = [ }, { id: "minimal-setup", - video: "/block-media/shadcnblocks/block/video-4.mp4", + video: "/block-media/shadcnblocks/block/video-1.mp4", + poster: "/block-media/shadcnblocks/block/placeholder-4.svg", Icon: ListMinus, title: "سگمنت‌بندی مخاطب", link: "#", @@ -68,35 +71,40 @@ const CARDS: GridCardItem[] = [ }, { id: "accessibility", - video: "/block-media/shadcnblocks/block/video-5.mp4", + video: "/block-media/shadcnblocks/block/video-2.mp4", + poster: "/block-media/shadcnblocks/block/placeholder-5.svg", Icon: ScanFace, title: "تحلیل کانال", link: "#", - summary: - "مخاطبان را بر اساس رفتار، صنعت یا مرحله خرید دسته‌بندی کنید.", + summary: "مخاطبان را بر اساس رفتار، صنعت یا مرحله خرید دسته‌بندی کنید.", }, { id: "documentation", - video: "/block-media/shadcnblocks/block/video-6.mp4", + video: "/block-media/shadcnblocks/block/landscape.mp4", + poster: "/block-media/shadcnblocks/block/placeholder-6.svg", Icon: TextQuote, title: "اتوماسیون ایمیل", link: "#", - summary: - "ببینید کدام کانال بیشترین سرنخ با کیفیت را می‌آورد.", + summary: "ببینید کدام کانال بیشترین سرنخ با کیفیت را می‌آورد.", }, ]; -const GridCard = ({ video, Icon, title, link, summary }: GridCardItem) => { +const GridCard = ({ + video, + poster, + Icon, + title, + link, + summary, +}: GridCardItem) => { const videoRef = useRef(null); return ( { - if (videoRef.current) { - videoRef.current.play(); - } + void videoRef.current?.play(); }} onMouseLeave={() => { if (videoRef.current) { @@ -105,22 +113,26 @@ const GridCard = ({ video, Icon, title, link, summary }: GridCardItem) => { } }} > - - -
- + + +
+
-
- +
+ {title} @@ -140,17 +152,26 @@ interface Feature215aProps { const Feature215a = ({ className }: Feature215aProps) => { return ( -
-
+
+

کمپین‌هایی بسازید که واقعاً تبدیل می‌شوند

- کمپین‌ها، محتوا و عملکرد کانال‌ها در یک پنل واحد دیده می‌شود. تیم بازاریابی سریع‌تر تست می‌کند، بهینه می‌کند و ROI هر فعالیت را شفاف گزارش می‌دهد. + کمپین‌ها، محتوا و عملکرد کانال‌ها در یک پنل واحد دیده می‌شود. تیم + بازاریابی سریع‌تر تست می‌کند، بهینه می‌کند و ROI هر فعالیت را شفاف + گزارش می‌دهد.

-
+
{CARDS.map((item) => ( ))} diff --git a/blocks/feature215b.tsx b/blocks/feature215b.tsx index 12156da..0dc6614 100644 --- a/blocks/feature215b.tsx +++ b/blocks/feature215b.tsx @@ -11,13 +11,13 @@ import { } from "lucide-react"; import { useRef } from "react"; -import { AspectRatio } from "@/components/ui/aspect-ratio"; import { Button } from "@/components/ui/button"; import { cn } from "@/lib/utils"; interface HorizontalCardItem { id: string; video: string; + poster: string; Icon: LucideIcon; title: string; link: string; @@ -28,6 +28,7 @@ const CARDS: HorizontalCardItem[] = [ { id: "design-system", video: "/block-media/shadcnblocks/block/video-1.mp4", + poster: "/block-media/shadcnblocks/block/placeholder-1.svg", Icon: Eye, title: "لاگ اجرا", link: "#", @@ -37,6 +38,7 @@ const CARDS: HorizontalCardItem[] = [ { id: "framework-agnostic", video: "/block-media/shadcnblocks/block/video-2.mp4", + poster: "/block-media/shadcnblocks/block/placeholder-2.svg", Icon: Languages, title: "قالب آماده", link: "#", @@ -45,7 +47,8 @@ const CARDS: HorizontalCardItem[] = [ }, { id: "interactive", - video: "/block-media/shadcnblocks/block/video-3.mp4", + video: "/block-media/shadcnblocks/block/landscape.mp4", + poster: "/block-media/shadcnblocks/block/placeholder-3.svg", Icon: AudioLines, title: "اتصال ابزار", link: "#", @@ -54,7 +57,8 @@ const CARDS: HorizontalCardItem[] = [ }, { id: "minimal-setup", - video: "/block-media/shadcnblocks/block/video-4.mp4", + video: "/block-media/shadcnblocks/block/video-1.mp4", + poster: "/block-media/shadcnblocks/block/placeholder-4.svg", Icon: ListMinus, title: "سازنده گردش‌کار", link: "#", @@ -63,7 +67,8 @@ const CARDS: HorizontalCardItem[] = [ }, { id: "accessibility", - video: "/block-media/shadcnblocks/block/video-5.mp4", + video: "/block-media/shadcnblocks/block/video-2.mp4", + poster: "/block-media/shadcnblocks/block/placeholder-5.svg", Icon: ScanFace, title: "تریگر رویداد", link: "#", @@ -72,7 +77,8 @@ const CARDS: HorizontalCardItem[] = [ }, { id: "documentation", - video: "/block-media/shadcnblocks/block/video-6.mp4", + video: "/block-media/shadcnblocks/block/landscape.mp4", + poster: "/block-media/shadcnblocks/block/placeholder-6.svg", Icon: TextQuote, title: "شرط هوشمند", link: "#", @@ -83,6 +89,7 @@ const CARDS: HorizontalCardItem[] = [ const HorizontalCard = ({ video, + poster, Icon, title, link, @@ -92,11 +99,9 @@ const HorizontalCard = ({ return (
{ - if (videoRef.current) { - videoRef.current.play(); - } + void videoRef.current?.play(); }} onMouseLeave={() => { if (videoRef.current) { @@ -105,25 +110,29 @@ const HorizontalCard = ({ } }} > -
- +
+
-
+
-

{title}

+

{title}

@@ -146,8 +155,12 @@ interface Feature215bProps { const Feature215b = ({ className }: Feature215bProps) => { return ( -

-
+
+

فرایندها را استاندارد و سریع کنید @@ -157,7 +170,7 @@ const Feature215b = ({ className }: Feature215bProps) => {

-
+
{CARDS.map((item) => ( ))} diff --git a/blocks/feature39.tsx b/blocks/feature39.tsx index d84df91..a5c6752 100644 --- a/blocks/feature39.tsx +++ b/blocks/feature39.tsx @@ -33,21 +33,30 @@ interface Feature39Props { const Feature39 = ({ className }: Feature39Props) => { return ( -
-
-

+
+
+

کمپین‌هایی بسازید که واقعاً تبدیل می‌شوند

-
+
{features.map((feature) => ( -
+
{feature.imageAlt} -

{feature.title}

-

+

+ {feature.title} +

+

{feature.description}

diff --git a/blocks/feature52.tsx b/blocks/feature52.tsx index ba514ea..10a4635 100644 --- a/blocks/feature52.tsx +++ b/blocks/feature52.tsx @@ -71,16 +71,16 @@ const Feature52 = ({ className }: Feature52Props) => {
- + {tabs.map((tab, index) => ( -
+
{tab.icon} -

+

{tab.title}

diff --git a/blocks/feature54.tsx b/blocks/feature54.tsx index 222b889..79df525 100644 --- a/blocks/feature54.tsx +++ b/blocks/feature54.tsx @@ -1,9 +1,14 @@ "use client"; -import { useState } from "react"; +import { useEffect, useState } from "react"; import { Button } from "@/components/ui/button"; -import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; +import type { CarouselApi } from "@/components/ui/carousel"; +import { + Carousel, + CarouselContent, + CarouselItem, +} from "@/components/ui/carousel"; import { cn } from "@/lib/utils"; const features = [ @@ -145,80 +150,132 @@ interface Feature54Props { } const Feature54 = ({ className }: Feature54Props) => { - const [selection, setSelection] = useState("feature-5"); + const [api, setApi] = useState(); + const [selectedIndex, setSelectedIndex] = useState(0); + + useEffect(() => { + if (!api) { + return; + } + + const onSelect = () => { + setSelectedIndex(api.selectedScrollSnap()); + }; + + onSelect(); + api.on("select", onSelect); + api.on("reInit", onSelect); + + return () => { + api.off("select", onSelect); + api.off("reInit", onSelect); + }; + }, [api]); + return ( -
-
-
-

+
+
+
+

سطح دسترسی

-
- -
-
- - {features.map((feature) => ( - - {feature.title} - - ))} - -
-
-
-
+ +
+
+ {features.map((feature, index) => ( + + ))} +
+
+ +
+ + {features.map((feature) => ( - -
-
+ +
+
{`نمای
{feature.subfeatures.map((subfeature) => (
-

+

{subfeature.title}

-

+

{subfeature.description}

))}
- +
))} -
-
- {features.map((feature) => ( - - ))} -
- + + +
+ +
+ {features.map((feature, index) => ( + + ))}
diff --git a/blocks/feature66.tsx b/blocks/feature66.tsx index acb55d4..fd188f5 100644 --- a/blocks/feature66.tsx +++ b/blocks/feature66.tsx @@ -31,33 +31,41 @@ interface Feature66Props { const Feature66 = ({ className }: Feature66Props) => { return ( -
-
-

+
+
+

سطح دسترسی

-
+
{cards.map((card) => ( - +
{card.imageAlt}
-
+
{card.logoAlt} -

+

{card.description}

diff --git a/blocks/feature81.tsx b/blocks/feature81.tsx index 88ec31a..9b8b02e 100644 --- a/blocks/feature81.tsx +++ b/blocks/feature81.tsx @@ -54,7 +54,7 @@ const Feature81 = ({ className }: Feature81Props) => { با سگمنت‌بندی دقیق، پیام مناسب را به مخاطب مناسب برسانید. داده رفتاری نشان می‌دهد کدام محتوا بیشترین تأثیر را روی تبدیل دارد.

-
+
{items.map((item) => { const isOpen = activeId === item.id; @@ -66,20 +66,20 @@ const Feature81 = ({ className }: Feature81Props) => { aria-label={item.title} onClick={() => setActiveId(item.id)} className={cn( - "group relative cursor-pointer overflow-clip rounded-lg text-start transition-all duration-500 ease-out", + "group relative min-w-0 cursor-pointer overflow-clip rounded-lg text-start transition-all duration-500 ease-out", isOpen - ? "min-h-56 flex-2 lg:min-h-0" - : "min-h-28 flex-1 lg:min-h-0", + ? "h-56 flex-2 lg:h-full lg:min-h-0" + : "h-28 flex-1 lg:h-full lg:min-h-0", )} > {item.imageAlt}
{ زمان حل مسئله را کوتاه کنید

مدیریت تیکت diff --git a/blocks/feature86.tsx b/blocks/feature86.tsx index 693863f..b9db9c0 100644 --- a/blocks/feature86.tsx +++ b/blocks/feature86.tsx @@ -39,7 +39,7 @@ const Feature86 = ({ className }: Feature86Props) => {
دستیار هوش مصنوعی diff --git a/blocks/feature95.tsx b/blocks/feature95.tsx index b43f5d0..9a7a463 100644 --- a/blocks/feature95.tsx +++ b/blocks/feature95.tsx @@ -57,11 +57,11 @@ const Feature95 = ({ className }: Feature95Props) => {
- + {(index + 1).toLocaleString("fa-IR")}
diff --git a/blocks/feature97.tsx b/blocks/feature97.tsx index 577eee5..a8fc490 100644 --- a/blocks/feature97.tsx +++ b/blocks/feature97.tsx @@ -36,27 +36,40 @@ interface Feature97Props { const Feature97 = ({ className }: Feature97Props) => { return ( -
-
-
-

فرایندها را استاندارد و سریع کنید

-

+

+
+
+

+ فرایندها را استاندارد و سریع کنید +

+

اتوماسیون را در کل سازمان یکپارچه کنید

-
- - +
-
+
{highlights.map((item) => ( -
- -

{item.title}

-

{item.description}

+
+ +

+ {item.title} +

+

{item.description}

))}
diff --git a/blocks/hero146.tsx b/blocks/hero146.tsx index 740af24..b07c4b0 100644 --- a/blocks/hero146.tsx +++ b/blocks/hero146.tsx @@ -53,7 +53,7 @@ const Hero146 = ({ className }: Hero146Props) => { >
تصویر نمونه diff --git a/blocks/hero170.tsx b/blocks/hero170.tsx index 0fc3b34..c433cf3 100644 --- a/blocks/hero170.tsx +++ b/blocks/hero170.tsx @@ -95,7 +95,7 @@ const Hero170 = ({ className }: Hero170Props) => {
تصویر نمونه diff --git a/blocks/hero190.tsx b/blocks/hero190.tsx index 2c00611..c87bfa7 100644 --- a/blocks/hero190.tsx +++ b/blocks/hero190.tsx @@ -41,7 +41,7 @@ const Hero190 = () => {
تصویر نمونه {
تصویر نمونه قهرمان