"use client"; import { Minus } from "lucide-react"; import { useEffect, useState } from "react"; import { Rating } from "@/components/shadcnblocks/rating"; import { Card, CardContent } from "@/components/ui/card"; import type { CarouselApi } from "@/components/ui/carousel"; import { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, } from "@/components/ui/carousel"; import { cn } from "@/lib/utils"; type ReviewType = { rate: number; comment: string; author: string; date: string; image: { src: string; alt: string; }; }; interface Reviews9Props { reviews?: ReviewType[]; title?: string; className?: string; } type ReviewCardProps = ReviewType; const REVIEWS: ReviewType[] = [ { rate: 5, comment: "این آباژور مجسمه‌ای به فضا گرما و ظرافت می‌بخشد و در عین هنری بودن، کاربردی است.", author: "آوا تهرانی", date: "۲۰ آذر ۱۴۰۳", image: { src: "/block-media/shadcnblocks/block/ecommerce/furniture/Modern-Artistic-Lamp-1.png", alt: "آباژور هنری مدرن در فضای داخلی", }, }, { rate: 5, comment: "مبل مینیمال لوکس است، راحت و دقیقاً همان چیزی که برای استراحت می‌خواستم.", author: "آوا تهرانی", date: "۱۸ آذر ۱۴۰۳", image: { src: "/block-media/shadcnblocks/block/ecommerce/furniture/Modern-Minimalist-Sofa-1.png", alt: "مبل مینیمال مدرن", }, }, { rate: 5, comment: "کابینت چوبی زیبا فضای من را گرم‌تر و کاربردی‌تر کرده؛ کیفیت ساخت عالی است.", author: "آوا تهرانی", date: "۱۵ آذر ۱۴۰۳", image: { src: "/block-media/shadcnblocks/block/ecommerce/furniture/Modern-Wooden-Cabinet-1.png", alt: "کابینت چوبی مدرن", }, }, { rate: 5, comment: "این مجسمه مدرن با حضور هنری ظریف، دکور داخلی را یک پله ارتقا داده است.", author: "آوا تهرانی", date: "۱۲ آذر ۱۴۰۳", image: { src: "/block-media/shadcnblocks/block/ecommerce/furniture/Minimalist-Interior-with-Sculptural-Element-1.png", alt: "مجسمه در فضای داخلی مینیمال", }, }, { rate: 5, comment: "میز پذیرایی مینیمال هماهنگ با فضاست و در عین سادگی، ظاهری چشمگیر دارد.", author: "آوا تهرانی", date: "۸ آذر ۱۴۰۳", image: { src: "/block-media/shadcnblocks/block/ecommerce/furniture/Minimalist-Wooden-Sideboard-1.png", alt: "میز پذیرایی چوبی مینیمال", }, }, ]; const Reviews9 = ({ reviews = REVIEWS, title = "نظرات مشتریان", className, }: Reviews9Props) => { const [api, setApi] = useState(); const [current, setCurrent] = useState(0); const [scrollSnaps, setScrollSnaps] = useState([]); const onButtonClick = (index: number) => { if (!api) return; api.scrollTo(index); }; useEffect(() => { if (!api) return; const updateCurrent = (carouselApi: CarouselApi) => { setCurrent(carouselApi?.selectedScrollSnap() ?? 0); }; const updateScrollSnaps = (carouselApi: CarouselApi) => { setScrollSnaps(carouselApi?.scrollSnapList() ?? []); }; updateCurrent(api); updateScrollSnaps(api); api .on("reInit", updateCurrent) .on("select", updateCurrent) .on("resize", updateScrollSnaps); return () => { api .off("reInit", updateCurrent) .off("select", updateCurrent) .off("resize", updateScrollSnaps); }; }, [api]); return (

{title}

{reviews.map((review, index) => ( ))}
{scrollSnaps.map((_, index) => ( ))}
); }; const ReviewCard = ({ rate, comment, author, date, image, }: ReviewCardProps) => { const formattedRate = rate.toLocaleString("fa-IR", { minimumFractionDigits: 1, maximumFractionDigits: 1, }); return (

{formattedRate}

{comment}

{author}

{date}

{image.alt}
); }; export { Reviews9 };