"use client"; import React, { useState, useRef, useEffect } from "react"; import { Search, ChevronDown, Menu, X, Pill, ShieldCheck, HeartPulse, Sparkles, ShoppingBag, User, PlusCircle, Check, Building2, LogIn, Wallet, LogOut, MapPin, FileHeart, Dog, Cat } from "lucide-react"; import { motion, AnimatePresence } from "motion/react"; import { useCartStore } from "../store/cartStore"; import { usePetStore } from "../store/usePetStore"; import { useUserStore } from "../store/userStore"; import { toast } from "sonner"; import HeaderButton from "./HeaderButton"; import AuthModal from "./AuthModal"; import { cn } from "../lib/utils"; const MENU_ITEMS = [ { id: "joints", title: "مفاصل و استخوان", icon: , solutions: ["آرتروز سگ‌های پیر", "رشد استخوانی توله‌سگ", "تقویت رباط و تاندون"] }, { id: "immune", title: "تقویت سیستم ایمنی و گوارش", icon: , solutions: ["پیشگیری از بیماری", "رفع اسهال و یبوست", "پروبیوتیک‌ها"] }, { id: "energy", title: "ویتامین‌ها و انرژی‌بخش‌ها", icon: , solutions: ["مکمل‌های مولتی‌ویتامین", "افزایش اشتها", "رشد و بلوغ"] }, { id: "special-care", title: "مراقبت‌های ویژه (پوست، دندان و چشم)", icon: , solutions: ["سلامت پوست و مفاصل", "رفع جرم دندان", "شستشوی چشم"] } ]; export default function Header({ onNavigate, onShopNavigate, currentView, onCartOpen, onSearch, onB2BOpen }: { onNavigate: (v: any) => void, onShopNavigate: (c?: string, s?: string) => void, currentView: string, onCartOpen: () => void, onSearch: (q: string) => void, onB2BOpen: () => void }) { const [isMegaMenuOpen, setIsMegaMenuOpen] = useState(false); const [isSearchFocused, setIsSearchFocused] = useState(false); const [isAuthModalOpen, setIsAuthModalOpen] = useState(false); const [isPetSwitcherOpen, setIsPetSwitcherOpen] = useState(false); const [searchQuery, setSearchQuery] = useState(""); const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false); const [isMobileSolutionsOpen, setIsMobileSolutionsOpen] = useState(false); const petMenuRef = useRef(null); const { getTotalItems } = useCartStore(); const { pets, activePetId, setActivePet, getActivePet } = usePetStore(); const { role, isLoggedIn, logout, profile } = useUserStore(); const activePet = getActivePet(); // Click Outside logic useEffect(() => { function handleClickOutside(event: MouseEvent) { if (petMenuRef.current && !petMenuRef.current.contains(event.target as Node)) { setIsPetSwitcherOpen(false); } } document.addEventListener("mousedown", handleClickOutside); return () => document.removeEventListener("mousedown", handleClickOutside); }, []); const handleSearch = (e: React.FormEvent) => { e.preventDefault(); if (searchQuery.trim()) { onSearch(searchQuery); setIsSearchFocused(false); } }; return ( <> setIsAuthModalOpen(false)} />
{/* Mobile Menu Toggle */} {/* Logo Section */}
{ onNavigate("home"); setIsMobileMenuOpen(false); }} >
C
Canina ایران نماینده رسمی Canina Pharma GmbH آلمان
{/* Navigation Items */} {/* Action Area */}
{/* Elastic Search */}
{isSearchFocused && (
setSearchQuery(e.target.value)} onBlur={() => !searchQuery && setIsSearchFocused(false)} placeholder="جستجوی محصولات، مقالات سلامت و..." className="w-full bg-transparent px-4 py-2 text-[12px] font-bold outline-none font-vazir text-medical-gray-900" />
)}
setIsSearchFocused(!isSearchFocused)} >
{isLoggedIn ? (
{/* User Name (Direct link to dashboard) */}
onNavigate("user-dashboard")} > {profile.firstName}
{/* Separator Line */}
{/* Pet Name & Switcher */}
setIsPetSwitcherOpen(!isPetSwitcherOpen)} > {activePet?.type === "گربه" ? ( ) : ( )} {activePet?.name || "بدون پت"}
{isPetSwitcherOpen && (
تغییر پت یا مدیریت حساب
{pets.map(pet => (
{ setActivePet(pet.id); setIsPetSwitcherOpen(false); toast.success(`پت فعال به ${pet.name} تغییر یافت`); }} >
{pet.name[0]}
{pet.name}
{activePetId === pet.id && }
))}
)}
) : ( setIsAuthModalOpen(true)} icon={} > ورود / ثبت‌نام )} } >
سبد خرید
{/* Mobile Drawer Menu */} {isMobileMenuOpen && ( <> {/* Backdrop */} setIsMobileMenuOpen(false)} className="fixed inset-0 bg-black z-40 lg:hidden" /> {/* Drawer */}
C
Canina
{/* Navigation Links */}
)}
); }