"use client"; import React, { useState, useEffect, useRef } from "react"; import SafeImage from "../../components/SafeImage"; import BackButton from "../../components/BackButton"; import { Download, Printer, ShieldCheck, Sparkles, CheckCircle2, ChevronLeft, Search, Filter } from "lucide-react"; import Link from "next/link"; import { productService } from "../../lib/services/productService"; import { Product } from "../../lib/data/products"; import { toPersian } from "../../lib/utils"; export default function CatalogClient() { const [products, setProducts] = useState([]); const [loading, setLoading] = useState(true); const [searchQuery, setSearchQuery] = useState(""); const [selectedCategory, setSelectedCategory] = useState("all"); const scrollRef = useRef(null); const [isMouseDown, setIsMouseDown] = useState(false); const [startX, setStartX] = useState(0); const [scrollLeft, setScrollLeft] = useState(0); const handleMouseDown = (e: React.MouseEvent) => { if (!scrollRef.current) return; setIsMouseDown(true); setStartX(e.pageX - scrollRef.current.offsetLeft); setScrollLeft(scrollRef.current.scrollLeft); }; const handleMouseLeaveOrUp = () => { setIsMouseDown(false); }; const handleMouseMove = (e: React.MouseEvent) => { if (!isMouseDown || !scrollRef.current) return; e.preventDefault(); const x = e.pageX - scrollRef.current.offsetLeft; const walk = (x - startX) * 2; // scroll speed scrollRef.current.scrollLeft = scrollLeft - walk; }; const handleWheel = (e: React.WheelEvent) => { if (scrollRef.current && e.deltaY !== 0) { scrollRef.current.scrollLeft += e.deltaY; } }; useEffect(() => { productService.getProducts({ limit: 999 }) .then(res => { setProducts(res.data || []); }) .catch(err => console.error("Catalog fetch error:", err)) .finally(() => setLoading(false)); }, []); const categories = Array.from(new Set(products.map(p => p.category).filter(Boolean))); const filteredProducts = products.filter(p => { const matchCategory = selectedCategory === "all" || p.category === selectedCategory; const matchSearch = p.name.toLowerCase().includes(searchQuery.toLowerCase()) || p.artNo.toLowerCase().includes(searchQuery.toLowerCase()) || (p.main_ingredients && p.main_ingredients.some(i => i.toLowerCase().includes(searchQuery.toLowerCase()))); return matchCategory && matchSearch; }); const handlePrint = () => { window.print(); }; return (
{/* Header Bar - Hidden on print */}
کاتالوگ رسمی محصولات کانینا آلمان

راهنمای جامع مکمل‌های درمانی و دارویی Canina Pharma

معرفی کامل ترکیبات فعال، موارد مصرف بالینی و استانداردهای دارویی محصولات برند آلمانی کانینا جهت استفاده صاحبان پت‌ها و متخصصین دامپزشکی.

ورود به فروشگاه
{/* Print Cover Header - Visible only on Print */}

کاتالوگ رسمی مکمل‌های درمانی Canina Pharma Germany

واردکننده انحصاری مکمل‌های دارویی سگ و گربه در ایران — info@canina-iran.com | ۰۲۱-۸۸۸۸۴۴۴۴

{/* Filter & Search Controls - Hidden on print */}
setSearchQuery(e.target.value)} className="w-full bg-slate-50 border border-slate-200 rounded-2xl py-3 pr-11 pl-4 text-sm font-bold focus:outline-none focus:ring-2 focus:ring-canina-blue/20" />
{categories.map(cat => ( ))}
{/* Catalog Products Grid */}
{loading ? (
در حال بارگذاری کاتالوگ محصولات...
) : filteredProducts.length === 0 ? (

محصولی یافت نشد

لطفاً عبارت جستجو را تغییر دهید.

) : (
{filteredProducts.map((product) => (
{/* Top Image Banner */}
کد کالا: {product.artNo}
{product.suitableFor && (
مناسب: {product.suitableFor}
)}
{/* Body Content */}
{product.category}

{product.name}

{product.scientificTagline && (

{product.scientificTagline}

)}

{product.shortDescription || product.description}

{/* Ingredients Badges */} {product.main_ingredients && product.main_ingredients.length > 0 && (
مواد موثره و ترکیبات اصلی:
{product.main_ingredients.map((ing, idx) => ( {ing} ))}
)} {/* Dosage Instructions */} {(product.dosage_logic || (product as any).dosageLogic) && (
دستور مصرف بالینی: {product.dosage_logic || (product as any).dosageLogic}
)}
{/* Card Footer - Hidden on print */}
گرید دارویی آلمان
جزئیات تخصصی
))}
)}
{/* Print Footer */}
صفحه کاتالوگ آنلاین محصولات Canina Pharma Germany — وبسایت رسمی: https://canina-iran.com
); }