"use client"; import { Check, X } from "lucide-react"; import { useState } from "react"; import { ScrollableTabsList } from "@/components/shadcnblocks/scrollable-tabslist"; import { Badge } from "@/components/ui/badge"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { cn } from "@/lib/utils"; interface Spec { label: string; value: string | boolean; highlight?: boolean; } interface SpecGroup { id: string; name: string; specs: Spec[]; } const DEFAULT_SPEC_GROUPS: SpecGroup[] = [ { id: "overview", name: "نمای کلی", specs: [ { label: "مدل", value: "MacBook حرفهای 14 (2024)", highlight: true }, { label: "پردازنده", value: "اپل M3 حرفهای", highlight: true }, { label: "حافظه", value: "۱۸ گیگابایت Unified Memory" }, { label: "ذخیرهسازی", value: "۵۱۲ گیگابایت SSD" }, { label: "نمایشگر", value: '۱۴٫۲ اینچ Liquid Retina XDR', highlight: true }, { label: "عمر باتری", value: "تا ۱۷ ساعت" }, { label: "وزن", value: "۱٫۶۰ کیلوگرم (۳٫۵ پوند)" }, { label: "رنگ", value: "مشکی فضایی" }, ], }, { id: "display", name: "نمایشگر", specs: [ { label: "اندازه صفحه", value: '۱۴٫۲ اینچ (قطری)' }, { label: "وضوح تصویر", value: "۳۲۴ × ۱۹۶۴ پیکسل" }, { label: "تراکم پیکسل", value: "۲۵۴ ppi" }, { label: "نوع صفحه", value: "Liquid Retina XDR" }, { label: "نرخ نوساز", value: "ProMotion (۲۴ تا ۱۲۰ هرتز)", highlight: true }, { label: "روشنایی حداکثر (HDR)", value: "۱۶۰۰ نیت" }, { label: "روشنایی حداکثر (SDR)", value: "۱۰۰۰ نیت" }, { label: "رنگ گسترده (P3)", value: true }, { label: "True Tone", value: true }, { label: "فناوری ProMotion", value: true }, ], }, { id: "performance", name: "تراشه و عملکرد", specs: [ { label: "تراشه", value: "اپل M3 حرفهای", highlight: true }, { label: "هستههای CPU", value: "۱۱ هسته (۵ عملکردی + ۶ کارآمد)" }, { label: "هستههای GPU", value: "۱۴ هسته" }, { label: "موتور عصبی", value: "۱۶ هسته" }, { label: "پهنای باند حافظه", value: "۱۵۰ گیگابایت بر ثانیه" }, { label: "حافظه یکپارچه", value: "۱۸ گیگابایت (قابل تنظیم تا ۳۶ گیگابایت)" }, { label: "ردیابی پرتو سختافزاری", value: true }, { label: "موتور رسانه", value: true }, ], }, { id: "storage", name: "حافظه و ذخیرهسازی", specs: [ { label: "حافظه پایه", value: "۵۱۲ گیگابایت SSD" }, { label: "حداکثر حافظه", value: "۸ ترابایت SSD" }, { label: "نوع حافظه", value: "NVMe SSD" }, { label: "سرعت خواندن", value: "تا ۷٫۴ گیگابایت بر ثانیه" }, { label: "حافظه RAM پایه", value: "۱۸ گیگابایت Unified" }, { label: "حداکثر RAM", value: "۳۶ گیگابایت Unified" }, { label: "نوع RAM", value: "LPDDR5" }, { label: "قابل ارتقا توسط کاربر", value: false }, ], }, { id: "connectivity", name: "درگاهها و ارتباطات", specs: [ { label: "درگاههای Thunderbolt 4", value: "۳" }, { label: "درگاه HDMI", value: "۱ (پشتیبانی از ۸K)" }, { label: "اسلات کارت SDXC", value: true }, { label: "MagSafe 3", value: true }, { label: "جک هدفون", value: "۳٫۵ میلیمتر (امپدانس بالا)" }, { label: "Wi-Fi", value: "Wi-Fi 6E (802.11ax)" }, { label: "بلوتوث", value: "۵٫۳" }, ], }, { id: "dimensions", name: "ابعاد و وزن", specs: [ { label: "ارتفاع", value: "۱٫۵۵ سانتیمتر (۰٫۶۱ اینچ)" }, { label: "عرض", value: "۳۱٫۲۶ سانتیمتر (۱۲٫۳۱ اینچ)" }, { label: "عمق", value: "۲۲٫۱۲ سانتیمتر (۸٫۷۱ اینچ)" }, { label: "وزن", value: "۱٫۶۰ کیلوگرم (۳٫۵ پوند)" }, ], }, ]; interface ProductSpecs2Props { specGroups?: SpecGroup[]; title?: string; className?: string; } const ProductSpecs2 = ({ specGroups = DEFAULT_SPEC_GROUPS, title = "مشخصات", className, }: ProductSpecs2Props) => { const [activeTab, setActiveTab] = useState(specGroups[0]?.id || "overview"); const renderValue = (value: string | boolean) => { if (typeof value === "boolean") { return value ? ( ) : ( ); } return value; }; return ( {/* Header */} {title} {specGroups.map((group) => ( {group.name} ))} {specGroups.map((group) => ( {group.specs.map((spec, index) => ( {spec.label} {spec.highlight && ( مشخصه کلیدی )} {renderValue(spec.value)} ))} ))} {/* Quick Specs Summary */} نکات برجسته {specGroups[0]?.specs .filter((s) => s.highlight) .slice(0, 4) .map((spec, index) => ( {spec.label} {spec.value as string} ))} ); }; export { ProductSpecs2 };
{spec.label}
{spec.value as string}