"use client"; import { useState, useEffect, useMemo } from "react"; import { Product } from "../lib/data/products"; import { usePetStore } from "../lib/store/usePetStore"; import { productService } from "../lib/services/productService"; import { motion } from "motion/react"; import { Eye, ShoppingCart, Heart, AlertCircle, Sparkles, Dog, Cat } from "lucide-react"; import SafeImage from "./SafeImage"; import { ProductCardSkeleton } from "./Skeleton"; import Link from "next/link"; import { useRouter } from "next/navigation"; import { useSettingsStore } from "../lib/store/settingsStore"; import { useCartStore } from "../lib/store/cartStore"; import { toast } from "sonner"; function ProductCard({ product, priority = false }: { product: Product; priority?: boolean }) { const router = useRouter(); const { getText, isInitialized } = useSettingsStore(); const { getActivePet } = usePetStore(); const activePet = getActivePet(); const { addItem } = useCartStore(); const nameFa = product.nameFa || product.name; const nameEn = product.nameEn || ""; const compatibility = useMemo(() => { if (!activePet) return null; const petType = activePet.type || 'سگ'; const sameSpecies = product.suitableFor === petType || product.suitableFor === "هر دو"; const productSymptoms = Array.isArray(product.symptoms) ? product.symptoms : []; const petConditions = Array.isArray(activePet.medicalConditions) ? activePet.medicalConditions : []; const helpsSymptom = petConditions.some((s) => productSymptoms.includes(s)); if (!sameSpecies) return { type: "alert", text: `مخصوص ${product.suitableFor || 'پت'}` }; if (helpsSymptom) return { type: "success", text: `توصیه شده برای ${activePet.name || 'پت شما'}` }; return { type: "neutral", text: `مناسب برای ${activePet.name || 'پت شما'}` }; }, [product, activePet]); const isCatalogOnly = isInitialized ? getText('CATALOG_ONLY_MODE', 'false') === 'true' : false; const showPreorderBtn = isCatalogOnly && (isInitialized ? getText('CATALOG_PREORDER_BTN', 'false') === 'true' : false); const allowCart = !isCatalogOnly && (isInitialized ? getText('allow_cart_purchase', 'true') === 'true' : true); const showPrices = !isCatalogOnly || (isInitialized ? getText('show_product_prices', 'true') === 'true' : true); return ( router.push(`/shop/${product.slug || product.id}`)} className="group bg-white/90 backdrop-blur-md rounded-2xl sm:rounded-3xl border border-medical-gray-200/80 overflow-hidden hover:shadow-xl hover:shadow-canina-blue/10 hover:border-canina-blue/30 transition-all duration-300 flex flex-col cursor-pointer relative" > {/* Category Badge */}
{product.category}
{/* Compatibility Tag */} {compatibility && (
{compatibility.type === "alert" ? : compatibility.type === "success" ? : } {compatibility.text}
)} {/* Image Container */}
{/* Species Badges (Dog / Cat) */}
{(product.suitableFor === "سگ" || product.suitableFor === "هر دو") && (
)} {(product.suitableFor === "گربه" || product.suitableFor === "هر دو") && (
)}
{/* Hover Actions for desktop */}
{ e.stopPropagation(); router.push(`/shop/${product.slug || product.id}`); }} className="w-10 h-10 rounded-full bg-white text-canina-blue flex items-center justify-center hover:scale-110 transition-transform shadow-lg cursor-pointer" title="مشاهده جزئیات" >
{allowCart && (product.packageSize !== undefined && product.packageSize !== null ? Number(product.packageSize) : 100) > 0 && (
{ e.stopPropagation(); addItem(product, 1); toast.success(`${nameFa} به سبد خرید اضافه شد.`); }} className="w-10 h-10 rounded-full bg-canina-blue text-white flex items-center justify-center hover:scale-110 transition-transform shadow-lg border border-white/20 cursor-pointer" title="افزودن به سبد خرید" >
)}
{/* Content */}
{/* Dual-language Name */}

{nameFa}

{nameEn && ( {nameEn} )}
{/* Short description */}

{product.shortDescription || (product.description ? product.description.replace(/<[^>]*>/g, '') : '')}

{/* Footer: Price + CTA */}
{showPrices ? (typeof product.price === 'string' || typeof product.price === 'number' ? String(product.price) : 'تماس بگیرید') : 'تماس بگیرید'}
{showPreorderBtn ? ( ثبت پیش‌خرید ) : ( {getText("product_view_details", "مشاهده جزئیات")} )}
); } export default function FeaturedProducts() { const router = useRouter(); const getText = useSettingsStore((state) => state.getText); const [products, setProducts] = useState([]); const [isLoading, setIsLoading] = useState(true); useEffect(() => { productService.getFeaturedProducts() .then(setProducts) .catch(() => toast.error("خطا در دریافت لیست محصولات از سرور.")) .finally(() => setIsLoading(false)); }, []); return (
{getText("featured_badge", "بیشترین انتخاب توسط دامپزشکان")}

{getText("featured_title_line1", "محصولات برگزیده و راهکارهای")}{" "} {getText("featured_title_line2", "درمان تخصصی")}

{isLoading ? ( Array.from({ length: 4 }).map((_, i) => ) ) : products.length > 0 ? ( products.map((p, i) => ) ) : (

{getText("featured_no_products_title", "هیچ محصولی یافت نشد")}

{getText("featured_no_products_desc", "در حال حاضر هیچ محصول برجسته‌ای برای نمایش وجود ندارد.")}

)}
); }