Files
reui-blocks/blocks/feature280.tsx
T

119 lines
4.7 KiB
TypeScript

import { BadgeCheck } from "lucide-react";
import React from "react";
import { CardStack } from "@/components/aceternity/card-stack";
import { cn } from "@/lib/utils";
const FEATURES = [
{ id: "instant", label: "داده سازمانی" },
{ id: "one-time", label: "هوش تجاری" },
{ id: "developer", label: "گزارش‌گیری" },
{ id: "responsive", label: "تحلیل پیشرفته" },
{ id: "production", label: "داده سازمانی" },
{ id: "support", label: "هوش تجاری" },
{ id: "updates", label: "گزارش‌گیری" },
{ id: "customizable", label: "تحلیل پیشرفته" },
{ id: "performance", label: "داده سازمانی" },
{ id: "accessibility", label: "هوش تجاری" },
{ id: "cross-browser", label: "گزارش‌گیری" },
{ id: "docs", label: "تحلیل پیشرفته" },
] as const;
export const Highlight = ({
children,
className,
}: {
children: React.ReactNode;
className?: string;
}) => {
return (
<span
className={cn(
"bg-emerald-100 px-1 py-0.5 font-bold text-emerald-700 dark:bg-emerald-700/[0.2] dark:text-emerald-500",
className,
)}
>
{children}
</span>
);
};
const CARDS = [
{
id: 0,
name: "داده سازمانی",
designation: "هوش تجاری",
content: (
<p className="text-pretty">
پیاده‌سازی فوق‌العاده روان بود.{" "}
<Highlight>داشبوردهای تعاملی به تیم‌ها اجازه می‌دهد سؤال جدید بپرسند بدون اینکه هر بار به تیم داده وابسته باشند.</Highlight> گزارش سفارشی را بدون SQL بسازید و سریع منتشر کنید.
</p>
),
},
{
id: 1,
name: "گزارش‌گیری",
designation: "تحلیل پیشرفته",
content: (
<p className="text-pretty">
به‌عنوان مدیر عملیات، گزارش‌های قابل اقدام برایم حیاتی است.{" "}
<Highlight>هشدارهای هوشمند زمانی که شاخص از مسیر هدف خارج می‌شود، مدیران را به‌موقع مطلع می‌کند.</Highlight> داده خام از منابع مختلف جمع و مدل‌سازی می‌شود. کاربران غیرفنی هم می‌توانند گزارش بسازند و به پاسخ برسند.
</p>
),
},
{
id: 2,
name: "داده سازمانی",
designation: "هوش تجاری",
content: (
<p className="text-pretty">
امکانات دسترس‌پذیری عالی است.{" "}
<Highlight>داشبوردهای تعاملی به تیم‌ها اجازه می‌دهد سؤال جدید بپرسند بدون اینکه هر بار به تیم داده وابسته باشند.</Highlight> ابعاد مختلف را بچرخانید و الگوی پنهان را پیدا کنید.
</p>
),
},
];
interface Feature280Props {
className?: string;
}
const Feature280 = ({ className }: Feature280Props) => {
return (
<section
dir="rtl"
lang="fa"
className={cn("h-full w-screen overflow-hidden py-32", className)}
>
<div className="container flex w-full max-w-6xl flex-col items-center justify-between lg:flex-row">
<div className="relative flex h-full flex-col items-center justify-center gap-15 text-center lg:items-start lg:text-start">
<h1 className="w-full max-w-md text-2xll font-semibold tracking-tighter text-balance lg:text-2xll">
تصمیم استراتژیک را داده‌محور کنید
</h1>
<div className="flex w-full max-w-lg items-center gap-4 px-5">
<span className="h-px w-full bg-muted-foreground/20" />
<p className="text-sm text-muted-foreground/50">هشدارهای هوشمند زمانی که شاخص از مسیر هدف خارج می‌شود، مدیران را به‌موقع مطلع می‌کند.</p>
<span className="h-px w-full bg-muted-foreground/20" />
</div>
<ul className="grid grid-cols-2 gap-3 text-start">
{FEATURES.map((feature) => (
<li key={feature.id} className="flex gap-2 lg:items-center">
<BadgeCheck className="size-4 shrink-0 text-muted-foreground/80" />
<p className="tracking-tight text-pretty text-muted-foreground/80">
{feature.label}
</p>
</li>
))}
</ul>
</div>
<div className="mt-24 flex items-center justify-center lg:mt-0">
<CardStack items={CARDS} />
</div>
</div>
</section>
);
};
export { Feature280 };