"use client"; import { ChevronLeft, ChevronRight, ShoppingBag } from "lucide-react"; import { useCallback, useEffect, useMemo, useState } from "react"; import { Price, PriceValue } from "@/components/shadcnblocks/price"; import { AspectRatio } from "@/components/ui/aspect-ratio"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Card, CardAction, CardContent, CardHeader, CardTitle, } from "@/components/ui/card"; import { Carousel, CarouselContent, CarouselItem, } from "@/components/ui/carousel"; import { type CarouselApi } from "@/components/ui/carousel"; import { Label } from "@/components/ui/label"; import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "@/components/ui/tooltip"; import { cn } from "@/lib/utils"; interface ProductPrice { regular: number; sale?: number; currency: string; } type Variant = { color: string; value: string; id: string; label: string; link: string; images: [Image, Image]; }; interface Product { name: string; category: { label: string; link: string; }; images: [Image, Image]; link: string; price: ProductPrice; variants: Array; badges?: Array; } interface PromoData { image: string; title: string; kicker: string; cta: { label: string; link: string; }; } type PromoCardProps = PromoData; type Badge = { text: string; color: string; }; type ProductCardProps = Product; type Image = { srcset?: string; src: string; sizes?: string; alt: string; }; interface ProductColorsProps { variants: Omit[]; value: string; onOptionHover: (value: string) => void; } interface BadgesProps { badges?: Array; } type ProductList = Array<{ title: string; value: string; promotion: PromoData; products: Array; }>; const PRODUCTS_LIST: ProductList = [ { title: "تازه‌ها", value: "new_arrivals", promotion: { image: "/block-media/shadcnblocks/block/ecommerce/furniture/john-black-RV9T8txb2uY-unsplash-1.jpg", title: "تازه. شیک. همین الان.", kicker: "پیشنهاد ویژه", cta: { label: "مشاهده تازه‌ها", link: "#", }, }, products: [ { name: "مبل چرمی", price: { regular: 899000.0, sale: 799000.0, currency: "ریال", }, category: { label: "صندلی‌ها", link: "#", }, link: "#", variants: [ { color: "#4e2115", link: "#", label: "قهوه‌ای دربی", value: "brown_derby-1", id: "brown_derby-1", images: [ { src: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112729-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112729-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112729-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112729-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, { src: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112734-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112734-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112734-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112734-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, ], }, ], badges: [ { text: "حراج", color: "oklch(57.7% 0.245 27.325)", }, ], images: [ { src: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112729-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112729-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112729-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112729-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, { src: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112734-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112734-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112734-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112734-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, ], }, { name: "لیوان سرامیکی", price: { regular: 59900.0, currency: "ریال", }, category: { label: "فنجان‌ها", link: "#", }, link: "#", variants: [ { color: "#4E7055", link: "#", label: "سبز", value: "green-2", id: "green-2", images: [ { src: "/block-media/shadcnblocks/block/ecommerce/other/pexels-20710970-15362198-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/pexels-20710970-15362198-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/pexels-20710970-15362198-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/pexels-20710970-15362198-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, { src: "/block-media/shadcnblocks/block/ecommerce/other/pexels-20710970-15362162-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/pexels-20710970-15362162-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/pexels-20710970-15362162-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/pexels-20710970-15362162-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, ], }, { color: "#5F788B", link: "#", label: "آبی", value: "blue-2", id: "blue-2", images: [ { src: "/block-media/shadcnblocks/block/ecommerce/other/pexels-20710970-15362162-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/pexels-20710970-15362162-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/pexels-20710970-15362162-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/pexels-20710970-15362162-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, { src: "/block-media/shadcnblocks/block/ecommerce/other/pexels-20710970-15362198-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/pexels-20710970-15362198-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/pexels-20710970-15362198-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/pexels-20710970-15362198-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, ], }, ], images: [ { src: "/block-media/shadcnblocks/block/ecommerce/other/pexels-20710970-15362198-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/pexels-20710970-15362198-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/pexels-20710970-15362198-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/pexels-20710970-15362198-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, { src: "/block-media/shadcnblocks/block/ecommerce/other/pexels-20710970-15362162-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/pexels-20710970-15362162-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/pexels-20710970-15362162-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/pexels-20710970-15362162-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, ], }, { name: "کتری چای", price: { regular: 920000.0, currency: "ریال", }, category: { label: "ظروف آشپزخانه", link: "#", }, link: "#", variants: [ { color: "#FFFFFF", link: "#", label: "سفید", value: "white-3", id: "white-3", images: [ { src: "/block-media/shadcnblocks/block/ecommerce/other/pexels-nicola-barts-7937498-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/pexels-nicola-barts-7937498-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/pexels-nicola-barts-7937498-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/pexels-nicola-barts-7937498-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, { src: "/block-media/shadcnblocks/block/ecommerce/other/pexels-nicola-barts-7937498-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/pexels-nicola-barts-7937498-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/pexels-nicola-barts-7937498-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/pexels-nicola-barts-7937498-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, ], }, ], images: [ { src: "/block-media/shadcnblocks/block/ecommerce/other/pexels-nicola-barts-7937498-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/pexels-nicola-barts-7937498-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/pexels-nicola-barts-7937498-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/pexels-nicola-barts-7937498-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, { src: "/block-media/shadcnblocks/block/ecommerce/other/pexels-nicola-barts-7937498-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/pexels-nicola-barts-7937498-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/pexels-nicola-barts-7937498-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/pexels-nicola-barts-7937498-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, ], }, { name: "شمع‌های معطر", price: { regular: 500000.0, currency: "ریال", }, category: { label: "شمع‌ها", link: "#", }, link: "#", variants: [ { color: "#000000", link: "#", label: "مشکی", value: "black-4", id: "black-4", images: [ { src: "/block-media/shadcnblocks/block/ecommerce/other/pexels-sueda-gln-327513956-20081033-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/pexels-sueda-gln-327513956-20081033-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/pexels-sueda-gln-327513956-20081033-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/pexels-sueda-gln-327513956-20081033-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, { src: "/block-media/shadcnblocks/block/ecommerce/other/pexels-sueda-gln-327513956-20080989-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/pexels-sueda-gln-327513956-20080989-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/pexels-sueda-gln-327513956-20080989-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/pexels-sueda-gln-327513956-20080989-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, ], }, { color: "#E8B951", link: "#", label: "طلایی", value: "gold-5", id: "gold-5", images: [ { src: "/block-media/shadcnblocks/block/ecommerce/other/pexels-sueda-gln-327513956-20080989-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/pexels-sueda-gln-327513956-20080989-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/pexels-sueda-gln-327513956-20080989-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/pexels-sueda-gln-327513956-20080989-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, { src: "/block-media/shadcnblocks/block/ecommerce/other/pexels-sueda-gln-327513956-20081033-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/pexels-sueda-gln-327513956-20081033-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/pexels-sueda-gln-327513956-20081033-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/pexels-sueda-gln-327513956-20081033-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, ], }, ], images: [ { src: "/block-media/shadcnblocks/block/ecommerce/other/pexels-sueda-gln-327513956-20081033-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/pexels-sueda-gln-327513956-20081033-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/pexels-sueda-gln-327513956-20081033-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/pexels-sueda-gln-327513956-20081033-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, { src: "/block-media/shadcnblocks/block/ecommerce/other/pexels-sueda-gln-327513956-20080989-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/pexels-sueda-gln-327513956-20080989-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/pexels-sueda-gln-327513956-20080989-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/pexels-sueda-gln-327513956-20080989-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, ], }, { name: 'قاب چوبی ۵×۷ اینچ', price: { regular: 200000.0, currency: "ریال", }, category: { label: "قاب‌ها", link: "#", }, link: "#", variants: [ { color: "#C6B89C", link: "#", label: "قهوه‌ای", value: "brown-6", id: "brown-6", images: [ { src: "/block-media/shadcnblocks/block/ecommerce/other/pexels-karolina-grabowska-4207785-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/pexels-karolina-grabowska-4207785-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/pexels-karolina-grabowska-4207785-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/pexels-karolina-grabowska-4207785-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, { src: "/block-media/shadcnblocks/block/ecommerce/other/pexels-karolina-grabowska-4464205-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/pexels-karolina-grabowska-4464205-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/pexels-karolina-grabowska-4464205-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/pexels-karolina-grabowska-4464205-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, ], }, ], images: [ { src: "/block-media/shadcnblocks/block/ecommerce/other/pexels-karolina-grabowska-4207785-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/pexels-karolina-grabowska-4207785-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/pexels-karolina-grabowska-4207785-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/pexels-karolina-grabowska-4207785-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, { src: "/block-media/shadcnblocks/block/ecommerce/other/pexels-karolina-grabowska-4464205-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/pexels-karolina-grabowska-4464205-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/pexels-karolina-grabowska-4464205-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/pexels-karolina-grabowska-4464205-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, ], }, { name: "آباژور کره‌ای", price: { regular: 199000.0, currency: "ریال", }, category: { label: "چراغ‌ها", link: "#", }, link: "#", variants: [ { color: "#B8B9BD", link: "#", label: "خاکستری", value: "gray-7", id: "gray-7", images: [ { src: "/block-media/shadcnblocks/block/ecommerce/other/pexels-karolina-grabowska-6825308-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/pexels-karolina-grabowska-6825308-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/pexels-karolina-grabowska-6825308-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/pexels-karolina-grabowska-6825308-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, { src: "/block-media/shadcnblocks/block/ecommerce/other/pexels-karolina-grabowska-6920416-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/pexels-karolina-grabowska-6920416-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/pexels-karolina-grabowska-6920416-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/pexels-karolina-grabowska-6920416-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, ], }, ], images: [ { src: "/block-media/shadcnblocks/block/ecommerce/other/pexels-karolina-grabowska-6825308-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/pexels-karolina-grabowska-6825308-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/pexels-karolina-grabowska-6825308-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/pexels-karolina-grabowska-6825308-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, { src: "/block-media/shadcnblocks/block/ecommerce/other/pexels-karolina-grabowska-6920416-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/pexels-karolina-grabowska-6920416-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/pexels-karolina-grabowska-6920416-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/pexels-karolina-grabowska-6920416-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, ], }, ], }, { title: "پرفروش‌ها", value: "hot_items", promotion: { image: "/block-media/shadcnblocks/block/ecommerce/other/pexels-karolina-grabowska-4207892-1.jpg", title: "جسورانه. ضروری.", kicker: "حراج", cta: { label: "مشاهده تازه‌ها", link: "#", }, }, products: [ { name: "صندلی چرمی", price: { regular: 899000.0, sale: 799000.0, currency: "ریال", }, category: { label: "صندلی‌ها", link: "#", }, link: "#", badges: [ { text: "بهترین انتخاب!", color: "oklch(54.6% 0.245 262.881)", }, { text: "حراج", color: "oklch(57.7% 0.245 27.325)", }, ], variants: [ { color: "#000000", link: "#", label: "مشکی", value: "black-8", id: "black-8", images: [ { src: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-mathilde-14792096-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-mathilde-14792096-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-mathilde-14792096-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-mathilde-14792096-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, { src: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-mathilde-14792097-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-mathilde-14792097-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-mathilde-14792097-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-mathilde-14792097-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, ], }, ], images: [ { src: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-mathilde-14792096-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-mathilde-14792096-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-mathilde-14792096-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-mathilde-14792096-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, { src: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-mathilde-14792097-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-mathilde-14792097-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-mathilde-14792097-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-mathilde-14792097-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, ], }, { name: "فنجان سرامیکی", price: { regular: 190000.0, currency: "ریال", }, category: { label: "فنجان‌ها", link: "#", }, link: "#", variants: [ { color: "#A8A081", link: "#", label: "قهوه‌ای", value: "brown-9", id: "brown-9", images: [ { src: "/block-media/shadcnblocks/block/ecommerce/other/cafeconcetto-bWlbcvFMUh4-unsplash-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/cafeconcetto-bWlbcvFMUh4-unsplash-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/cafeconcetto-bWlbcvFMUh4-unsplash-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/cafeconcetto-bWlbcvFMUh4-unsplash-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, { src: "/block-media/shadcnblocks/block/ecommerce/other/cafeconcetto-L2r9L6Llyp4-unsplash-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/cafeconcetto-L2r9L6Llyp4-unsplash-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/cafeconcetto-L2r9L6Llyp4-unsplash-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/cafeconcetto-L2r9L6Llyp4-unsplash-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, ], }, { color: "#C2CCCD", link: "#", label: "قهوه‌ای", value: "brown-10", id: "brown-10", images: [ { src: "/block-media/shadcnblocks/block/ecommerce/other/cafeconcetto-L2r9L6Llyp4-unsplash-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/cafeconcetto-L2r9L6Llyp4-unsplash-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/cafeconcetto-L2r9L6Llyp4-unsplash-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/cafeconcetto-L2r9L6Llyp4-unsplash-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, { src: "/block-media/shadcnblocks/block/ecommerce/other/cafeconcetto-bWlbcvFMUh4-unsplash-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/cafeconcetto-bWlbcvFMUh4-unsplash-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/cafeconcetto-bWlbcvFMUh4-unsplash-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/cafeconcetto-bWlbcvFMUh4-unsplash-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, ], }, ], images: [ { src: "/block-media/shadcnblocks/block/ecommerce/other/cafeconcetto-bWlbcvFMUh4-unsplash-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/cafeconcetto-bWlbcvFMUh4-unsplash-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/cafeconcetto-bWlbcvFMUh4-unsplash-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/cafeconcetto-bWlbcvFMUh4-unsplash-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, { src: "/block-media/shadcnblocks/block/ecommerce/other/cafeconcetto-L2r9L6Llyp4-unsplash-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/cafeconcetto-L2r9L6Llyp4-unsplash-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/cafeconcetto-L2r9L6Llyp4-unsplash-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/cafeconcetto-L2r9L6Llyp4-unsplash-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, ], }, { name: "صندلی ناهارخوری", price: { regular: 299000.0, sale: 199000.0, currency: "ریال", }, category: { label: "صندلی", link: "#", }, link: "#", variants: [ { color: "#DAC9AF", link: "#", label: "قهوه‌ای", value: "brown-11", id: "brown-11", images: [ { src: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-cottonbro-6626409-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-cottonbro-6626409-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-cottonbro-6626409-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-cottonbro-6626409-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, { src: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-cottonbro-6626392-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-cottonbro-6626392-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-cottonbro-6626392-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-cottonbro-6626392-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, ], }, ], images: [ { src: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-cottonbro-6626409-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-cottonbro-6626409-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-cottonbro-6626409-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-cottonbro-6626409-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, { src: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-cottonbro-6626392-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-cottonbro-6626392-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-cottonbro-6626392-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-cottonbro-6626392-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, ], }, { name: "ساعت دیواری", price: { regular: 159000.0, currency: "ریال", }, category: { label: "ساعت‌ها", link: "#", }, link: "#", variants: [ { color: "#FFFFFF", link: "#", label: "سفید", value: "white-12", id: "white-12", images: [ { src: "/block-media/shadcnblocks/block/ecommerce/other/pexels-cottonbro-5185169-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/pexels-cottonbro-5185169-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/pexels-cottonbro-5185169-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/pexels-cottonbro-5185169-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, { src: "/block-media/shadcnblocks/block/ecommerce/other/pexels-cottonbro-5185178-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/pexels-cottonbro-5185178-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/pexels-cottonbro-5185178-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/pexels-cottonbro-5185178-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, ], }, ], images: [ { src: "/block-media/shadcnblocks/block/ecommerce/other/pexels-cottonbro-5185169-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/pexels-cottonbro-5185169-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/pexels-cottonbro-5185169-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/pexels-cottonbro-5185169-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, { src: "/block-media/shadcnblocks/block/ecommerce/other/pexels-cottonbro-5185178-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/pexels-cottonbro-5185178-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/pexels-cottonbro-5185178-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/pexels-cottonbro-5185178-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, ], }, { name: "بشقاب سرامیکی", price: { regular: 990000.0, sale: 890000.0, currency: "ریال", }, category: { label: "ظروف آشپزخانه", link: "#", }, link: "#", variants: [ { color: "#709C69", link: "#", label: "سبز", value: "green-13", id: "green-13", images: [ { src: "/block-media/shadcnblocks/block/ecommerce/other/pexels-micheile-10410297-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/pexels-micheile-10410297-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/pexels-micheile-10410297-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/pexels-micheile-10410297-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, { src: "/block-media/shadcnblocks/block/ecommerce/other/pexels-micheile-10410289-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/pexels-micheile-10410289-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/pexels-micheile-10410289-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/pexels-micheile-10410289-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, ], }, { color: "#E5BBB4", link: "#", label: "صورتی", value: "pink-14", id: "pink-14", images: [ { src: "/block-media/shadcnblocks/block/ecommerce/other/pexels-micheile-10410289-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/pexels-micheile-10410289-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/pexels-micheile-10410289-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/pexels-micheile-10410289-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, { src: "/block-media/shadcnblocks/block/ecommerce/other/pexels-micheile-10410297-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/pexels-micheile-10410297-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/pexels-micheile-10410297-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/pexels-micheile-10410297-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, ], }, ], badges: [ { text: "حراج", color: "oklch(57.7% 0.245 27.325)", }, ], images: [ { src: "/block-media/shadcnblocks/block/ecommerce/other/pexels-micheile-10410297-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/pexels-micheile-10410297-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/pexels-micheile-10410297-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/pexels-micheile-10410297-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, { src: "/block-media/shadcnblocks/block/ecommerce/other/pexels-micheile-10410289-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/other/pexels-micheile-10410289-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/other/pexels-micheile-10410289-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/other/pexels-micheile-10410289-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, ], }, { name: "کابینت چوبی", price: { regular: 699000.0, currency: "ریال", }, category: { label: "کشوها", link: "#", }, link: "#", variants: [ { color: "#9f8568", link: "#", label: "قهوه‌ای", value: "brown-15", id: "brown-15", images: [ { src: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112749-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112749-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112749-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112749-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, { src: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112750-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112750-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112750-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112750-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, ], }, ], images: [ { src: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112749-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112749-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112749-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112749-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, { src: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112750-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112750-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112750-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112750-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, ], }, { name: "صندلی چوبی", price: { regular: 490000.0, currency: "ریال", }, category: { label: "صندلی‌ها", link: "#", }, link: "#", variants: [ { color: "#9f8568", link: "#", label: "قهوه‌ای", value: "brown-16", id: "brown-16", images: [ { src: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112738-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112738-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112738-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112738-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, { src: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112728-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112728-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112728-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112728-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, ], }, ], images: [ { src: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112738-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112738-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112738-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112738-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, { src: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112728-3.jpg", srcset: "/block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112728-3.jpg 1920w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112728-2.jpg 1280w, /block-media/shadcnblocks/block/ecommerce/furniture/pexels-kseniachernaya-11112728-1.jpg 640w", alt: "تصویر محصول", sizes: "(min-width: 1920px) 1920px, (min-width: 1280px) 1280px, 100vw", }, ], }, ], }, ]; const ProductList9TitleBlock = () => { return (

تازه‌ها

مرز سنتی بین فضای شخصی و حرفه‌ای را از بین ببرید.

); }; const ProductList9Header = () => { return (
{PRODUCTS_LIST.map((item) => ( {item.title} ))}
); }; type TabProductCarouselProps = { promotion: PromoData; products: Product[]; }; const TabProductCarousel = ({ promotion, products, }: TabProductCarouselProps) => { const [api, setApi] = useState(); const [scrollProgress, setScrollProgress] = useState(0); const [canScrollPrev, setCanScrollPrev] = useState(false); const [canScrollNext, setCanScrollNext] = useState(false); const onScroll = useCallback((carouselApi: CarouselApi) => { if (!carouselApi) return; const progress = Math.max( 0, Math.min(1, carouselApi.scrollProgress() ?? 0), ); setScrollProgress(progress + 0.25); }, []); const onSelect = useCallback( (carouselApi: CarouselApi) => { if (!carouselApi) return; setCanScrollPrev(carouselApi.canScrollPrev()); setCanScrollNext(carouselApi.canScrollNext()); onScroll(carouselApi); }, [onScroll], ); useEffect(() => { if (!api) return; requestAnimationFrame(() => { onSelect(api); }); api.on("reInit", onSelect).on("scroll", onScroll).on("select", onSelect); return () => { api.off("reInit", onSelect); api.off("scroll", onScroll); api.off("select", onSelect); }; }, [api, onScroll, onSelect]); return ( <>
{products.map((product, index) => ( ))}
{products.map((product, index) => ( ))}
); }; interface ProductList9Props { className?: string; } const ProductList9 = ({ className }: ProductList9Props) => { const [mounted, setMounted] = useState(false); const [activeTab, setActiveTab] = useState(PRODUCTS_LIST[0].value); useEffect(() => { setMounted(true); }, []); if (!mounted) { return (
); } return (
{PRODUCTS_LIST.map((item) => ( {item.title} ))}
{PRODUCTS_LIST.map((item, index) => ( {activeTab === item.value ? ( ) : null} ))}
); }; const PromoCard = ({ image, title, cta, kicker }: PromoCardProps) => { return ( {title}

{kicker}

{title}
); }; const ProductCard = ({ link, images, name, price, category, variants, badges, }: ProductCardProps) => { const { regular, sale, currency } = price; const [selectedColor, setSelectedColor] = useState(""); const onOptionHover = (value: string) => { setSelectedColor(value); }; const productImages = useMemo(() => { return variants.find((v) => v.value === selectedColor)?.images ?? images; }, [images, selectedColor, variants]); return (
{productImages.map((img, index) => (
{img.alt}
))}
); }; const ProductColors = ({ value, onOptionHover, variants, }: ProductColorsProps) => { if (!variants) return; return ( {variants.map((item, index) => ( ))} ); }; const Badges = ({ badges }: BadgesProps) => { if (!badges) return; return (
{badges.map((item, index) => ( {item.text} ))}
); }; export { ProductList9 };