import { AspectRatio } from "@/components/ui/aspect-ratio"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, } from "@/components/ui/card"; import { cn } from "@/lib/utils"; interface Product { name: string; image: { src: string; alt: string; }; link: string; description: string; price: ProductPrice; badge?: { text: string; color?: string; }; } type ProductCardProps = Product; interface ProductPrice { regular: number; sale?: number; currency: string; } type ProductList = Array; const PRODUCTS_LIST: ProductList = [ { name: "وکسون کور‌استپ ۰۸ ال‌ایکس", image: { src: "/block-media/shadcnblocks/block/ecommerce/clothes/joshua-diaz-ETNoDLl8yFE-unsplash-1.jpg", alt: "کفش ورزشی با طراحی سه‌رنگ", }, link: "#", description: "راحتی روزمره در کنار استایل جسورانه سه‌رنگ، در طراحی عمل‌گرایانه.", price: { regular: 499000.0, sale: 399000.0, currency: "ریال", }, badge: { text: "دارد سریع فروش می‌رود!", color: "oklch(57.7% 0.245 27.325)", }, }, { name: "جاکت شهری راحت", image: { src: "/block-media/shadcnblocks/block/ecommerce/clothes/Man-in-Hoodie-&-Jacket-2.png", alt: "جاکت پفی جین با طیف آبی", }, link: "#", description: "پفی جین با طیف آبی ملایم، مناسب لایه‌لایه پوشیدن در همه فصل‌ها.", price: { regular: 180000.0, currency: "ریال", }, }, { name: "کیف مزون لیورا", image: { src: "/block-media/shadcnblocks/block/ecommerce/clothes/Woman-with-Tote-Bag-1.png", alt: "کیف زنانه توت‌بگ", }, link: "#", description: "کیفی شیک که به‌راحتی از حالت شانه‌ای به کراس‌بادی یا دسته‌دار تبدیل می‌شود.", price: { regular: 420000.0, currency: "ریال", }, badge: { text: "جدید", }, }, { name: "وکسون تیون‌پادز پرو", image: { src: "/block-media/shadcnblocks/block/ecommerce/electronics/White-Wireless-Earbuds-in-Charging-Case-1.jpeg", alt: "ایرباد بی‌سیم سفید در کیف شارژ", }, link: "#", description: "تیون‌پادز پرو با صدای فراگیر، راحتی تمام‌روز و شارژ سریع در قابی جمع‌وجور و آماده جیب ارائه می‌شود.", price: { regular: 129000.0, sale: 990000.0, currency: "ریال", }, }, { name: "سرم درخشان رادیانت گلو", image: { src: "/block-media/shadcnblocks/block/ecommerce/skin-care-product/pexels-alesiakozik-7795810-1.jpg", alt: "سرم مراقبت پوست", }, link: "#", description: "سرم درخشان لونارا، سرمی سبک و سریع‌الجذب برای روشن‌تر کردن، آبرسانی و یکدست‌تر کردن رنگ پوست.", price: { regular: 490000.0, currency: "ریال", }, }, { name: "هدفون شادوتون", image: { src: "/block-media/shadcnblocks/block/ecommerce/electronics/Luxurious-Headphones-1.jpeg", alt: "هدفون لوکس", }, link: "#", description: "صدایی نرم و عمیق؛ هر نت با وضوح و هر ضرب با عمق احساس می‌شود.", price: { regular: 530000.0, currency: "ریال", }, }, ]; interface ProductList2Props { className?: string; } const ProductList2 = ({ className }: ProductList2Props) => { return (
{PRODUCTS_LIST.map((item, index) => ( ))}
); }; const ProductCard = ({ name, description, link, image, badge, price, }: ProductCardProps) => { const { regular, sale, currency } = price; return ( {image.alt} {badge && ( {badge.text} )} {name} {description}
); }; const formatCurrency = ( value: number, currency: string = "ریال", locale: string = "fa-IR", ) => { return `${value.toLocaleString(locale)} ${currency}`; }; const ProductCardPrice = ({ regular, sale, currency, }: { regular: number; sale?: number; currency: string; }) => { const onSale = sale != null; return (
{onSale ? ( {formatCurrency(sale, currency)} ) : null} {formatCurrency(regular, currency)}
); }; export { ProductList2 };