import { BadgeCheck } from "lucide-react"; import { Rating } from "@/components/shadcnblocks/rating"; import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; import { Card, CardContent } from "@/components/ui/card"; import { Progress } from "@/components/ui/progress"; import { cn } from "@/lib/utils"; interface Review { id: string; rating: number; title: string; content: string; author: { name: string; avatar?: string; }; date: string; verified?: boolean; } const DEFAULT_REVIEWS: Review[] = [ { id: "1", rating: 5, title: "فراتر از انتظارم بود", content: "اول کمی تردید داشتم، ولی این محصول واقعاً جواب داد. کیفیت ساخت عالی است و زودتر از موعد به دستم رسید. اگر هنوز مردد هستید، حتماً پیشنهاد می‌کنم امتحان کنید.", author: { name: "سارا احمدی", avatar: "/block-media/shadcnblocks/block/avatar-1.webp", }, date: "۲۰ آذر ۱۴۰۳", verified: true, }, { id: "2", rating: 4, title: "ارزش خرید بالا", content: "به‌طور کلی محصول خوبی است و دقیقاً همان کاری را می‌کند که باید. یک ستاره کم کردم چون بسته‌بندی می‌توانست بهتر باشد، ولی خود محصول عالی است.", author: { name: "مازیار رضایی", avatar: "/block-media/shadcnblocks/block/avatar-2.webp", }, date: "۱۸ آذر ۱۴۰۳", verified: true, }, { id: "3", rating: 5, title: "عالی برای استفاده روزمره", content: "یک ماه است هر روز از آن استفاده می‌کنم و هنوز مثل روز اول به نظر می‌رسد و درست کار می‌کند. با این قیمت، کیفیت ساخت واقعاً قابل تحسین است. برای خواهرم هم یکی خریدم.", author: { name: "نیلوفر حسینی", avatar: "/block-media/shadcnblocks/block/avatar-3.webp", }, date: "۱۵ آذر ۱۴۰۳", verified: true, }, { id: "4", rating: 4, title: "خوب، ولی کامل نیست", content: "محصول خوب است و درست کار می‌کند. تنها نکته کوچک این است که رنگ کمی با عکس‌ها فرق دارد، ولی در مجموع خرید رضایت‌بخشی بود.", author: { name: "امیر محمدی", }, date: "۱۲ آذر ۱۴۰۳", verified: false, }, { id: "5", rating: 5, title: "بهترین خرید امسالم", content: "واقعاً عاشقش شدم! به جزئیات با دقت زیادی توجه شده. وقتی سوال داشتم، پشتیبانی هم بسیار مفید بود. از هر نظر پنج ستاره.", author: { name: "رؤیا کاظمی", avatar: "/block-media/shadcnblocks/block/avatar-1.webp", }, date: "۸ آذر ۱۴۰۳", verified: true, }, { id: "6", rating: 3, title: "قابل قبول، ولی انتظار بیشتری داشتم", content: "با توجه به قیمت، محصول معمولی است؛ چیز خاصی نیست ولی کارش را انجام می‌دهد. ارسال سریع بود که نکته مثبتش بود.", author: { name: "پارسا موسوی", }, date: "۵ آذر ۱۴۰۳", verified: true, }, ]; interface Reviews2Props { reviews?: Review[]; title?: string; className?: string; } const Reviews2 = ({ reviews = DEFAULT_REVIEWS, title = "نظرات مشتریان", className, }: Reviews2Props) => { const totalReviews = reviews.length; const averageRating = reviews.reduce((sum, review) => sum + review.rating, 0) / totalReviews; const formattedAverage = averageRating.toLocaleString("fa-IR", { minimumFractionDigits: 1, maximumFractionDigits: 1, }); const ratingCounts = [5, 4, 3, 2, 1].map((star) => ({ star, count: reviews.filter((r) => r.rating === star).length, percentage: (reviews.filter((r) => r.rating === star).length / totalReviews) * 100, })); return (

{title}

{formattedAverage}

بر اساس {totalReviews.toLocaleString("fa-IR")} نظر

{ratingCounts.map(({ star, count, percentage }) => (
{star.toLocaleString("fa-IR")} ★ {count.toLocaleString("fa-IR")}
))}
{reviews.map((review) => (
{review.author.name .split(/\s+/) .slice(0, 2) .map((part) => part[0]) .join("")}
{review.author.name} {review.verified && ( )}

{review.date}

{review.title}

{review.content}

))}
); }; export { Reviews2 };