"use client"; import Autoplay from "embla-carousel-autoplay"; import { ChevronLeft, ChevronRight, Heart, ShoppingBag } from "lucide-react"; import { useEffect, useState } from "react"; import { Price, type PriceType, PriceValue, } from "@/components/shadcnblocks/price"; import { Rating } from "@/components/shadcnblocks/rating"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Card, CardAction, CardContent, CardTitle } from "@/components/ui/card"; import type { CarouselApi } from "@/components/ui/carousel"; import { Carousel, CarouselContent, CarouselItem, } from "@/components/ui/carousel"; import { cn } from "@/lib/utils"; type Image = { src: string; srcset?: string; sizes?: string; alt: string; }; interface Reviews { rate: number; totalReviewers: string; } type Product = { name: string; category: { label: string; link: string; }; images: Array; link: string; price: PriceType; reviews: Reviews; badges?: Array; }; type ProductCardProps = Product; interface HeroCarouselItem { media: { type: "image" | "video"; src: string; alt?: string; }; title?: string; description?: string; cta?: { label: string; href: string; }; product?: Product; } interface EcommerceHero7Props { className?: string; carouselItems: HeroCarouselItem[]; } const HERO_CAROUSEL: HeroCarouselItem[] = [ { title: "آبرسانی عمیق، درخشش محسوس", description: "کرمی سبک روزانه که رطوبت را بازمی‌گرداند، بافت پوست را نرم می‌کند و درخشش طبیعی به پوست می‌بخشد.", media: { type: "video", src: "/block-media/shadcnblocks/block/4153586-hd_1366_720_50fps.mp4", }, cta: { label: "خرید کنید", href: "#", }, product: { name: "کرم آبرسان لوماگلو", category: { label: "کرم صورت", link: "#", }, badges: ["پرفروش", "جدید"], reviews: { rate: 4.5, totalReviewers: "۵٫۸ هزار", }, images: [ { src: "/block-media/shadcnblocks/block/ecommerce/skin-care-product/point-normal-Xp0bTCLD07k-unsplash-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/skin-care-product/point-normal-Xp0bTCLD07k-unsplash-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/skin-care-product/point-normal-Xp0bTCLD07k-unsplash-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/skin-care-product/point-normal-Xp0bTCLD07k-unsplash-1.jpg 640w", alt: "کرم آبرسان صورت در بسته‌بندی مینیمال", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, { src: "/block-media/shadcnblocks/block/ecommerce/skin-care-product/onela-ymeri-vaQgJjd9TUY-unsplash-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/skin-care-product/onela-ymeri-vaQgJjd9TUY-unsplash-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/skin-care-product/onela-ymeri-vaQgJjd9TUY-unsplash-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/skin-care-product/onela-ymeri-vaQgJjd9TUY-unsplash-1.jpg 640w", alt: "جزئیات بافت و استفاده از کرم", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, ], link: "#", price: { regular: 49.0, currency: "IRR", }, }, }, { title: "روتین کامل درخشندگی شما", description: "ست مراقبت پوستی منتخب برای پاکسازی، آبرسانی و بازسازی؛ برای پوستی متعادل و درخشان.", media: { type: "image", src: "/block-media/shadcnblocks/block/ecommerce/skin-care-product/pexels-amelie-chen-243775000-12352170-3.jpg", alt: "ست کامل مراقبت پوست", }, cta: { label: "خرید کنید", href: "#", }, product: { name: "ست روتین درخشندگی", category: { label: "ست مراقبت پوست", link: "#", }, badges: ["پرفروش", "جدید"], reviews: { rate: 5, totalReviewers: "۵٫۸ هزار", }, images: [ { src: "/block-media/shadcnblocks/block/ecommerce/skin-care-product/pexels-amelie-chen-243775000-12352170-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/skin-care-product/pexels-amelie-chen-243775000-12352170-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/skin-care-product/pexels-amelie-chen-243775000-12352170-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/skin-care-product/pexels-amelie-chen-243775000-12352170-1.jpg 640w", alt: "ست کامل مراقبت پوست روی پس‌زمینه خنثی", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, { src: "/block-media/shadcnblocks/block/ecommerce/skin-care-product/ibnu-ihza-Z7u2bpbE65Q-unsplash-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/skin-care-product/ibnu-ihza-Z7u2bpbE65Q-unsplash-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/skin-care-product/ibnu-ihza-Z7u2bpbE65Q-unsplash-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/skin-care-product/ibnu-ihza-Z7u2bpbE65Q-unsplash-1.jpg 640w", alt: "بطری‌های مراقبت پوست برای روتین روزانه", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, ], link: "#", price: { regular: 499.0, sale: 389.0, currency: "IRR", }, }, }, { title: "درخشش را حفظ کنید", description: "اسپری تازه‌کننده‌ای که رطوبت را قفل می‌کند، درخشش را تقویت می‌کند و پوست را تمام روز شاداب نگه می‌دارد.", media: { type: "image", src: "/block-media/shadcnblocks/block/ecommerce/skin-care-product/pexels-rdne-8903695-3.jpg", alt: "اسپری صورت برای آبرسانی", }, cta: { label: "خرید کنید", href: "#", }, product: { name: "اسپری حفظ درخشندگی", category: { label: "اسپری صورت", link: "#", }, badges: ["جدید"], reviews: { rate: 5, totalReviewers: "۵٫۸ هزار", }, images: [ { src: "/block-media/shadcnblocks/block/ecommerce/skin-care-product/pexels-rdne-8903695-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/skin-care-product/pexels-rdne-8903695-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/skin-care-product/pexels-rdne-8903695-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/skin-care-product/pexels-rdne-8903695-1.jpg 640w", alt: "استفاده از اسپری صورت برای آبرسانی", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, { src: "/block-media/shadcnblocks/block/ecommerce/skin-care-product/nora-hutton-AjU6Z5k_uBI-unsplash-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/skin-care-product/nora-hutton-AjU6Z5k_uBI-unsplash-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/skin-care-product/nora-hutton-AjU6Z5k_uBI-unsplash-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/skin-care-product/nora-hutton-AjU6Z5k_uBI-unsplash-1.jpg 640w", alt: "بطری اسپری در نور طبیعی ملایم", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, ], link: "#", price: { regular: 69.0, currency: "IRR", }, }, }, ]; const EcommerceHero7 = ({ className, carouselItems = HERO_CAROUSEL, }: EcommerceHero7Props) => { const [api, setApi] = useState(); const [current, setCurrent] = useState(1); useEffect(() => { if (!api) return; const updateCurrent = (api: CarouselApi) => { if (!api) return; setCurrent(api?.selectedScrollSnap()); }; api.on("reInit", updateCurrent).on("select", updateCurrent); return () => { api.off("reInit", updateCurrent).off("select", updateCurrent); }; }, [api]); return (
{carouselItems.map( ({ title, description, media, product, cta }, index) => (

{title}

{description}

{cta && ( )}
{product && (
)}
{media.type === "image" ? ( {media.alt} ) : ( )}
), )}
    {api?.scrollSnapList().map((_, index) => ( ))}
); }; const ProductCard = ({ images, link, name, category, price, badges, reviews, }: ProductCardProps) => { const { regular, sale, currency } = price; return (
{badges && (
    {badges.map((text, index) => ( {text} ))}
)}
{images.map((img, index) => ( {img.alt} ))}
{category.label}

{reviews.totalReviewers} نظر

); }; export { EcommerceHero7 };