Files
reui-blocks/blocks/feature237.tsx
T

388 lines
12 KiB
TypeScript

import type { LucideIcon } from "lucide-react";
import {
ArrowUpRight,
ChartBarIcon,
ChartNetwork,
CheckCircle2,
Clock,
Cpu,
DollarSign,
LocateFixed,
Server,
Settings,
UserIcon,
Zap,
} from "lucide-react";
import * as React from "react";
import { cn } from "@/lib/utils";
const ENVIRONMENT_LABELS = {
production: "تیم فروش",
staging: "بستن معامله",
development: "رشد درآمد",
} as const;
interface CardData {
id: string;
icon: React.ElementType;
title: string;
description: string;
href: string;
metrics: {
value: string;
label: string;
trend: number;
secondaryMetric?: {
value: string;
label: string;
};
};
status: {
label: string;
color: "text-green-500" | "text-yellow-500" | "text-blue-500";
icon: LucideIcon;
lastUpdated: string;
};
performance: {
cpu: string;
memory: string;
latency: string;
};
deployment: {
version: string;
environment: keyof typeof ENVIRONMENT_LABELS;
region: string;
};
}
const CARDS: CardData[] = [
{
id: "revenue",
icon: DollarSign,
title: "همکاری فروش و بازاریابی",
description:
"وضعیت هر پیشنهاد را از ارسال تا امضا بدون پیگیری دستی دنبال کنید.",
href: "#revenue",
metrics: {
value: "افزایش فروش",
label: "تیم فروش",
trend: 12.5,
secondaryMetric: {
value: "بستن معامله",
label: "رشد درآمد",
},
},
status: {
label: "افزایش فروش",
color: "text-green-500",
icon: CheckCircle2,
lastUpdated: "2024-03-21T15:30:00Z",
},
performance: {
cpu: "تیم فروش",
memory: "2.8GB",
latency: "120ms",
},
deployment: {
version: "v2.3.4",
environment: "production",
region: "us-west-2",
},
},
{
id: "analytics",
icon: ChartBarIcon,
title: "اولویت‌بندی سرنخ",
description:
"دلایل از دست دادن معامله را تحلیل کنید و استراتژی فروش را بهبود دهید.",
href: "#analytics",
metrics: {
value: "بستن معامله",
label: "رشد درآمد",
trend: -8.3,
secondaryMetric: {
value: "افزایش فروش",
label: "تیم فروش",
},
},
status: {
label: "بستن معامله",
color: "text-blue-500",
icon: Zap,
lastUpdated: "2024-03-21T15:28:00Z",
},
performance: {
cpu: "رشد درآمد",
memory: "12.4GB",
latency: "1.2ms",
},
deployment: {
version: "v3.1.0",
environment: "production",
region: "eu-west-1",
},
},
{
id: "architecture",
icon: Settings,
title: "قالب پیشنهاد فروش",
description:
"اهداف فردی و تیمی را شفاف تعریف کنید و پیشرفت را لحظه‌ای ببینید.",
href: "#architecture",
metrics: {
value: "افزایش فروش",
label: "تیم فروش",
trend: 2.1,
secondaryMetric: {
value: "۱۲",
label: "بستن معامله",
},
},
status: {
label: "رشد درآمد",
color: "text-green-500",
icon: CheckCircle2,
lastUpdated: "2024-03-21T15:25:00Z",
},
performance: {
cpu: "افزایش فروش",
memory: "32GB",
latency: "85ms",
},
deployment: {
version: "v2.8.1",
environment: "production",
region: "global",
},
},
{
id: "security",
icon: UserIcon,
title: "ردیابی کووت",
description:
"سرنخ‌های با بالاترین احتمال تبدیل را در بالای صف کار روزانه قرار دهید.",
href: "#security",
metrics: {
value: "تیم فروش",
label: "بستن معامله",
trend: -15.7,
secondaryMetric: {
value: "رشد درآمد",
label: "افزایش فروش",
},
},
status: {
label: "تیم فروش",
color: "text-yellow-500",
icon: Clock,
lastUpdated: "2024-03-21T15:15:00Z",
},
performance: {
cpu: "بستن معامله",
memory: "4.2GB",
latency: "50ms",
},
deployment: {
version: "v1.9.3",
environment: "staging",
region: "us-east-1",
},
},
{
id: "network",
icon: ChartNetwork,
title: "تحلیل باخت معامله",
description:
"پیشنهادهای حرفه‌ای را در چند دقیقه بسازید و زمان آماده‌سازی را کم کنید.",
href: "#network",
metrics: {
value: "رشد درآمد",
label: "افزایش فروش",
trend: 25.4,
secondaryMetric: {
value: "تیم فروش",
label: "بستن معامله",
},
},
status: {
label: "رشد درآمد",
color: "text-green-500",
icon: CheckCircle2,
lastUpdated: "2024-03-21T15:29:00Z",
},
performance: {
cpu: "افزایش فروش",
memory: "128GB",
latency: "5ms",
},
deployment: {
version: "v4.2.0",
environment: "production",
region: "multi-region",
},
},
{
id: "location",
icon: LocateFixed,
title: "هدف‌گذاری تیمی",
description:
"وضعیت هر پیشنهاد را از ارسال تا امضا بدون پیگیری دستی دنبال کنید.",
href: "#location",
metrics: {
value: "تیم فروش",
label: "بستن معامله",
trend: 5.8,
secondaryMetric: {
value: "رشد درآمد",
label: "افزایش فروش",
},
},
status: {
label: "تیم فروش",
color: "text-blue-500",
icon: Zap,
lastUpdated: "2024-03-21T15:20:00Z",
},
performance: {
cpu: "بستن معامله",
memory: "16GB",
latency: "150ms",
},
deployment: {
version: "v2.4.5",
environment: "production",
region: "global",
},
},
];
interface Feature237Props {
className?: string;
}
const Feature237 = ({ className }: Feature237Props) => {
return (
<section dir="rtl" lang="fa" className={cn("bg-background py-32", className)}>
<div className="container">
<h1 className="mb-10 text-center text-3xl font-bold tracking-tighter text-balance text-foreground lg:text-2xll">
پیش‌بینی درآمد را دقیق‌تر کنید
</h1>
<div className="grid grid-cols-1 gap-6 md:grid-cols-2">
{CARDS.map((card) => (
<a key={card.id} href={card.href} className="group block h-full">
<div className="flex h-full flex-col rounded-xl border bg-card p-6 text-start transition-all duration-200 hover:border-primary hover:shadow-lg">
<div className="flex h-full flex-col justify-between space-y-4">
<div>
<div className="flex items-start justify-between">
<div>
<h3 className="text-xl text-balance text-foreground transition-colors duration-200 group-hover:text-primary">
{card.title}
</h3>
<div className="flex items-center gap-2">
<card.status.icon
className={cn("size-4", card.status.color)}
/>
<span
className={cn(
"font-mono text-sm",
card.status.color,
)}
>
{card.status.label}
</span>
<span className="font-mono text-xs text-muted-foreground">
[
{new Date(card.status.lastUpdated).toLocaleTimeString(
"fa-IR",
)}
]
</span>
</div>
</div>
<ArrowUpRight className="size-5 text-muted-foreground transition-transform duration-200 group-hover:-translate-x-1 group-hover:-translate-y-1 group-hover:text-primary rtl:rotate-180" />
</div>
<p className="mt-4 text-pretty text-muted-foreground">
{card.description}
</p>
</div>
<div className="space-y-4">
<div className="grid grid-cols-2 gap-4">
<div>
<div className="font-mono text-xl font-bold">
{card.metrics.value}
</div>
<div className="font-mono text-sm text-muted-foreground">
{card.metrics.label}
</div>
<div
className={cn(
"font-mono text-sm",
card.metrics.trend > 0
? "text-green-500"
: "text-red-500",
)}
>
{card.metrics.trend > 0 ? "+" : ""}
{card.metrics.trend.toLocaleString("fa-IR")}٪
</div>
</div>
{card.metrics.secondaryMetric && (
<div>
<div className="font-mono text-xl font-bold">
{card.metrics.secondaryMetric.value}
</div>
<div className="font-mono text-sm text-muted-foreground">
{card.metrics.secondaryMetric.label}
</div>
</div>
)}
</div>
<div className="grid grid-cols-3 gap-2 border-t pt-4">
<div className="flex items-center gap-2">
<Cpu className="size-4 text-muted-foreground" />
<span className="font-mono text-xs">
{card.performance.cpu}
</span>
</div>
<div className="flex items-center gap-2">
<Server className="size-4 text-muted-foreground" />
<span className="font-mono text-xs">
{card.performance.memory}
</span>
</div>
<div className="flex items-center gap-2">
<Zap className="size-4 text-muted-foreground" />
<span className="font-mono text-xs">
{card.performance.latency}
</span>
</div>
</div>
<div className="border-t pt-4">
<div className="flex items-center gap-2 font-mono text-xs text-muted-foreground">
<span>{card.deployment.version}</span>
<span>•</span>
<span>
{ENVIRONMENT_LABELS[card.deployment.environment]}
</span>
<span>•</span>
<span>{card.deployment.region}</span>
</div>
</div>
</div>
</div>
</div>
</a>
))}
</div>
</div>
</section>
);
};
export { Feature237 };