338 lines
15 KiB
TypeScript
338 lines
15 KiB
TypeScript
"use client";
|
||
|
||
import { CheckCircle, Minus, XCircle } from "lucide-react";
|
||
import { useState } from "react";
|
||
|
||
import {
|
||
Table,
|
||
TableBody,
|
||
TableCell,
|
||
TableHead,
|
||
TableHeader,
|
||
TableRow,
|
||
} from "@/components/ui/table";
|
||
import { cn } from "@/lib/utils";
|
||
|
||
interface Compare9Props {
|
||
className?: string;
|
||
}
|
||
|
||
const comparisonData = [
|
||
{
|
||
metric: "پنجره زمینه",
|
||
gpt4: { value: "۱۲۸هزار توکن", status: "worst" },
|
||
claude: { value: "۲۰۰هزار توکن", status: "neutral" },
|
||
gemini: { value: "۲ میلیون توکن", status: "best" },
|
||
},
|
||
{
|
||
metric: "سرعت پاسخ",
|
||
gpt4: { value: "۱٫۲ ثانیه", status: "best" },
|
||
claude: { value: "۱٫۸ ثانیه", status: "neutral" },
|
||
gemini: { value: "۲٫۲ ثانیه", status: "worst" },
|
||
},
|
||
{
|
||
metric: "تولید کد",
|
||
gpt4: { value: "۹۴٪", status: "neutral" },
|
||
claude: { value: "۹۵٪", status: "best" },
|
||
gemini: { value: "۸۸٪", status: "worst" },
|
||
},
|
||
{
|
||
metric: "امتیاز استدلال",
|
||
gpt4: { value: "۹۱ از ۱۰۰", status: "neutral" },
|
||
claude: { value: "۹۲ از ۱۰۰", status: "best" },
|
||
gemini: { value: "۸۶ از ۱۰۰", status: "worst" },
|
||
},
|
||
{
|
||
metric: "توکنهای ورودی",
|
||
gpt4: { value: "۳٫۵۰ ریال/۱M", status: "worst" },
|
||
claude: { value: "۳٫۰۰ ریال/۱M", status: "neutral" },
|
||
gemini: { value: "۱٫۲۵ ریال/۱M", status: "best" },
|
||
},
|
||
{
|
||
metric: "توکنهای خروجی",
|
||
gpt4: { value: "۱۴٫۰۰ ریال/۱M", status: "neutral" },
|
||
claude: { value: "۱۵٫۰۰ ریال/۱M", status: "worst" },
|
||
gemini: { value: "۵٫۰۰ ریال/۱M", status: "best" },
|
||
},
|
||
{
|
||
metric: "محدودیت نرخ",
|
||
gpt4: { value: "۵۰هزار RPM", status: "neutral" },
|
||
claude: { value: "۴۰هزار RPM", status: "worst" },
|
||
gemini: { value: "۶۰هزار RPM", status: "best" },
|
||
},
|
||
{
|
||
metric: "طرح رایگان",
|
||
gpt4: { value: "بسیار محدود", status: "worst" },
|
||
claude: { value: "محدود", status: "neutral" },
|
||
gemini: { value: "گسترده", status: "best" },
|
||
},
|
||
];
|
||
|
||
const Compare9 = ({ className }: Compare9Props) => {
|
||
const [hoveredModel, setHoveredModel] = useState<string | null>(null);
|
||
|
||
return (
|
||
<section
|
||
dir="rtl"
|
||
lang="fa"
|
||
className={cn("py-32 text-start", className)}
|
||
>
|
||
<div className="container mx-auto">
|
||
<div className="relative overflow-hidden p-8">
|
||
<div className="relative overflow-hidden border border-border/50 bg-background/50 backdrop-blur-sm">
|
||
<Table>
|
||
<TableHeader>
|
||
<TableRow className="border-border/50">
|
||
<TableHead className="font-semibold text-foreground">
|
||
معیار
|
||
</TableHead>
|
||
<TableHead className="text-center font-semibold text-foreground">
|
||
<div className="flex items-center justify-center gap-2">
|
||
<img
|
||
src="/block-media/shadcnblocks/block/logos/openai-icon.svg"
|
||
alt="OpenAI"
|
||
width={16}
|
||
height={16}
|
||
className="h-4 w-4"
|
||
/>
|
||
مدل هوشمند ۴
|
||
</div>
|
||
</TableHead>
|
||
<TableHead className="text-center font-semibold text-foreground">
|
||
<div className="flex items-center justify-center gap-2">
|
||
<img
|
||
src="/block-media/shadcnblocks/block/logos/claude-icon.svg"
|
||
alt="Claude"
|
||
width={16}
|
||
height={16}
|
||
className="h-4 w-4"
|
||
/>
|
||
دستیار هوشمند ۳٫۵
|
||
</div>
|
||
</TableHead>
|
||
<TableHead className="text-center font-semibold text-foreground">
|
||
<div className="flex items-center justify-center gap-2">
|
||
<img
|
||
src="/block-media/shadcnblocks/block/logos/gemini-icon.svg"
|
||
alt="Gemini"
|
||
width={16}
|
||
height={16}
|
||
className="h-4 w-4"
|
||
/>
|
||
هوش مصنوعی پیشرفته ۱٫۵
|
||
</div>
|
||
</TableHead>
|
||
</TableRow>
|
||
</TableHeader>
|
||
<TableBody>
|
||
{comparisonData.map((row, index) => (
|
||
<TableRow
|
||
key={index}
|
||
className="border-border/30 transition-colors hover:bg-muted/30"
|
||
>
|
||
<TableCell className="py-4 font-medium text-foreground">
|
||
{row.metric}
|
||
</TableCell>
|
||
<TableCell
|
||
className={cn(
|
||
"cursor-pointer py-4 text-center font-medium transition-all duration-300",
|
||
row.gpt4.status === "best"
|
||
? "bg-green-50 text-green-600 dark:bg-green-950/20"
|
||
: row.gpt4.status === "worst"
|
||
? "bg-red-50 text-red-600 dark:bg-red-950/20"
|
||
: "bg-muted/50 text-foreground",
|
||
hoveredModel === "gpt4" &&
|
||
"bg-red-50/80 dark:bg-red-950/30",
|
||
)}
|
||
onMouseEnter={() => setHoveredModel("gpt4")}
|
||
onMouseLeave={() => setHoveredModel(null)}
|
||
>
|
||
<div className="flex items-center justify-center gap-2">
|
||
{row.gpt4.status === "best" && (
|
||
<CheckCircle
|
||
className="h-4 w-4 text-green-600"
|
||
aria-hidden="true"
|
||
/>
|
||
)}
|
||
{row.gpt4.status === "worst" && (
|
||
<XCircle
|
||
className="h-4 w-4 text-red-600"
|
||
aria-hidden="true"
|
||
/>
|
||
)}
|
||
{row.gpt4.status === "neutral" && (
|
||
<Minus
|
||
className="h-4 w-4 text-muted-foreground"
|
||
aria-hidden="true"
|
||
/>
|
||
)}
|
||
<span>{row.gpt4.value}</span>
|
||
</div>
|
||
</TableCell>
|
||
<TableCell
|
||
className={cn(
|
||
"cursor-pointer py-4 text-center font-medium transition-all duration-300",
|
||
row.claude.status === "best"
|
||
? "bg-green-50 text-green-600 dark:bg-green-950/20"
|
||
: row.claude.status === "worst"
|
||
? "bg-red-50 text-red-600 dark:bg-red-950/20"
|
||
: "bg-muted/50 text-foreground",
|
||
hoveredModel === "claude" &&
|
||
"bg-blue-50/80 dark:bg-blue-950/30",
|
||
)}
|
||
onMouseEnter={() => setHoveredModel("claude")}
|
||
onMouseLeave={() => setHoveredModel(null)}
|
||
>
|
||
<div className="flex items-center justify-center gap-2">
|
||
{row.claude.status === "best" && (
|
||
<CheckCircle
|
||
className="h-4 w-4 text-green-600"
|
||
aria-hidden="true"
|
||
/>
|
||
)}
|
||
{row.claude.status === "worst" && (
|
||
<XCircle
|
||
className="h-4 w-4 text-red-600"
|
||
aria-hidden="true"
|
||
/>
|
||
)}
|
||
{row.claude.status === "neutral" && (
|
||
<Minus
|
||
className="h-4 w-4 text-muted-foreground"
|
||
aria-hidden="true"
|
||
/>
|
||
)}
|
||
<span>{row.claude.value}</span>
|
||
</div>
|
||
</TableCell>
|
||
<TableCell
|
||
className={cn(
|
||
"cursor-pointer py-4 text-center font-medium transition-all duration-300",
|
||
row.gemini.status === "best"
|
||
? "bg-green-50 text-green-600 dark:bg-green-950/20"
|
||
: row.gemini.status === "worst"
|
||
? "bg-red-50 text-red-600 dark:bg-red-950/20"
|
||
: "bg-muted/50 text-foreground",
|
||
hoveredModel === "gemini" &&
|
||
"bg-green-50/80 dark:bg-green-950/30",
|
||
)}
|
||
onMouseEnter={() => setHoveredModel("gemini")}
|
||
onMouseLeave={() => setHoveredModel(null)}
|
||
>
|
||
<div className="flex items-center justify-center gap-2">
|
||
{row.gemini.status === "best" && (
|
||
<CheckCircle
|
||
className="h-4 w-4 text-green-600"
|
||
aria-hidden="true"
|
||
/>
|
||
)}
|
||
{row.gemini.status === "worst" && (
|
||
<XCircle
|
||
className="h-4 w-4 text-red-600"
|
||
aria-hidden="true"
|
||
/>
|
||
)}
|
||
{row.gemini.status === "neutral" && (
|
||
<Minus
|
||
className="h-4 w-4 text-muted-foreground"
|
||
aria-hidden="true"
|
||
/>
|
||
)}
|
||
<span>{row.gemini.value}</span>
|
||
</div>
|
||
</TableCell>
|
||
</TableRow>
|
||
))}
|
||
</TableBody>
|
||
</Table>
|
||
</div>
|
||
|
||
<div className="relative mt-8 border border-border/50 bg-muted/20 p-6">
|
||
<div className="relative">
|
||
<h4 className="mb-4 font-mono text-sm font-semibold tracking-wider text-foreground">
|
||
تحلیل و ارزیابی فنی
|
||
</h4>
|
||
<div className="space-y-3 font-mono text-xs text-muted-foreground">
|
||
<div className="grid gap-2 md:grid-cols-3">
|
||
<div
|
||
className={cn(
|
||
"rounded border border-border/30 bg-background/50 p-3 transition-all duration-300",
|
||
hoveredModel === "gpt4" &&
|
||
"bg-red-50/20 shadow-lg ring-2 ring-red-500/50 dark:bg-red-950/10",
|
||
)}
|
||
>
|
||
<div className="mb-1 font-medium text-foreground">
|
||
مدل هوشمند ۴
|
||
</div>
|
||
<div className="space-y-1">
|
||
<div>• تأخیر پاسخ: ۱٫۲ ثانیه (بهترین)</div>
|
||
<div>• دقت کد: ۹۴٪ (متوسط)</div>
|
||
<div>• امتیاز استدلال: ۹۱ از ۱۰۰ (متوسط)</div>
|
||
<div>• هزینه ورودی: ۳٫۵۰ ریال/۱M توکن (ضعیفترین)</div>
|
||
<div>• محدودیت نرخ: ۵۰هزار RPM (متوسط)</div>
|
||
</div>
|
||
</div>
|
||
<div
|
||
className={cn(
|
||
"rounded border border-border/30 bg-background/50 p-3 transition-all duration-300",
|
||
hoveredModel === "claude" &&
|
||
"bg-blue-50/20 shadow-lg ring-2 ring-blue-500/50 dark:bg-blue-950/10",
|
||
)}
|
||
>
|
||
<div className="mb-1 font-medium text-foreground">
|
||
دستیار هوشمند ۳٫۵
|
||
</div>
|
||
<div className="space-y-1">
|
||
<div>• تأخیر پاسخ: ۱٫۸ ثانیه (متوسط)</div>
|
||
<div>• دقت کد: ۹۵٪ (بهترین)</div>
|
||
<div>• امتیاز استدلال: ۹۲ از ۱۰۰ (بهترین)</div>
|
||
<div>• هزینه ورودی: ۳٫۰۰ ریال/۱M توکن (متوسط)</div>
|
||
<div>• محدودیت نرخ: ۴۰هزار RPM (ضعیفترین)</div>
|
||
</div>
|
||
</div>
|
||
<div
|
||
className={cn(
|
||
"rounded border border-border/30 bg-background/50 p-3 transition-all duration-300",
|
||
hoveredModel === "gemini" &&
|
||
"bg-green-50/20 shadow-lg ring-2 ring-green-500/50 dark:bg-green-950/10",
|
||
)}
|
||
>
|
||
<div className="mb-1 font-medium text-foreground">
|
||
هوش مصنوعی پیشرفته ۱٫۵
|
||
</div>
|
||
<div className="space-y-1">
|
||
<div>• پنجره زمینه: ۲ میلیون توکن (بهترین)</div>
|
||
<div>• هزینه ورودی: ۱٫۲۵ ریال/۱M توکن (بهترین)</div>
|
||
<div>• هزینه خروجی: ۵٫۰۰ ریال/۱M توکن (بهترین)</div>
|
||
<div>• محدودیت نرخ: ۶۰هزار RPM (بهترین)</div>
|
||
<div>• طرح رایگان: گسترده (بهترین)</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div className="mt-4 rounded border border-border/30 bg-background/50 p-3">
|
||
<div className="mb-2 font-medium text-foreground">
|
||
جمعبندی مقایسه
|
||
</div>
|
||
<div className="space-y-1">
|
||
<div>
|
||
• مدل هوشمند ۴: مناسب برای پاسخگویی سریع و تولید کد باکیفیت.
|
||
</div>
|
||
<div>
|
||
• دستیار هوشمند ۳٫۵: انتخابی مناسب برای تحلیل، استدلال و نگارش دقیق.
|
||
</div>
|
||
<div>
|
||
• هوش مصنوعی پیشرفته ۱٫۵: گزینهای اقتصادی با پنجره زمینه بزرگ و هزینه پایین.
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
);
|
||
};
|
||
|
||
export { Compare9 };
|