'use client' import { FC, useMemo, useState } from 'react' import { Button } from '@/components/ui/button' import { Separator } from '@/components/ui/separator' import { Star1 } from 'iconsax-react' import { Product, Review } from '@/types/product.types' import AddComment from './AddComment' interface ReviewsProps { product: Product reviews?: Review[] } const Reviews: FC = ({ reviews = [] }) => { const [sort, setSort] = useState<'new' | 'helpful'>('new') const [open, setOpen] = useState(false) const sortedReviews = useMemo(() => { if (sort === 'new') { return [...reviews].sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime()) } return [...reviews].sort((a, b) => b.helpful - a.helpful) }, [sort, reviews]) const average = useMemo(() => { if (reviews.length === 0) return '0.0' const sum = reviews.reduce((acc, r) => acc + r.rating, 0) return (sum / reviews.length).toFixed(1) }, [reviews]) const formatDate = (dateString: string) => { const date = new Date(dateString) return date.toLocaleDateString('fa-IR') } return (

نظرات خریداران

مرتب سازی بر اساس:
{sortedReviews.length > 0 ? ( sortedReviews.map((review, idx) => (
{review.rating.toFixed(1)}
{review.isVerified && ( خریدار )} {formatDate(review.date)} {review.user.name}
{review.comment}
{idx !== sortedReviews.length - 1 &&
}
)) ) : (
هنوز نظری ثبت نشده است
)}
نظرات خریداران
{average} / 5
شما هم درباره این کالا نظر خود را ثبت کنید. نظر شما پس از بررسی و تایید نمایش داده می‌شود.
setOpen(false)} />
) } export default Reviews