'use client' import { useState, useEffect } from 'react' import Link from 'next/link' import { motion, AnimatePresence } from 'framer-motion' import { Wheat, Leaf, ShoppingBag, Building2, Settings, LucideIcon } from 'lucide-react' interface MegaMenuItem { name: string href: string description: string } interface MegaMenuCategory { name: string id?: string icon: LucideIcon items: MegaMenuItem[] } interface MegaMenuData { title: string type: 'categories' categories: MegaMenuCategory[] } interface MegaMenuProps { menuKey: string menu: MegaMenuData isActive: boolean onClose: () => void } export default function MegaMenu({ menuKey, menu, isActive, onClose }: MegaMenuProps) { const [latestProducts, setLatestProducts] = useState([]) const [isLoadingProducts, setIsLoadingProducts] = useState(true) // Fetch 4 latest products for Products menu on component mount useEffect(() => { if (menuKey === 'products') { const fetchLatestProducts = async () => { try { setIsLoadingProducts(true) // Fetch latest 4 products directly const productsResponse = await fetch('/api/products?limit=4&sort=latest') const productsData = await productsResponse.json() if (productsData && productsData.products) { const products = productsData.products.map((product: any) => ({ name: product.name, href: `/products/${product.slug}`, description: product.description?.substring(0, 50) + '...' || 'Premium quality product' })) setLatestProducts(products) } } catch (error) { console.error('Error fetching latest products:', error) // Fallback to static data if API fails setLatestProducts([ { name: 'Premium Basmati Rice', href: '/products', description: 'Aromatic long-grain rice' }, { name: 'Kashmina Rice', href: '/products', description: 'Premium quality rice' }, { name: 'Non-Basmati Rice', href: '/products', description: 'Traditional varieties' }, { name: 'Multigrain Flour', href: '/products', description: 'Nutritious blend' }, ]) } finally { setIsLoadingProducts(false) } } fetchLatestProducts() } else { setIsLoadingProducts(false) } }, [menuKey]) // Only depend on menuKey, not isActive return ( {isActive && (
{menuKey === 'products' ? ( // Latest Products - Simple List isLoadingProducts ? (
{[1, 2, 3, 4].map((item) => (
))}
) : (

Latest Products

{latestProducts.map((product, idx) => (
{product.name}
{product.description}
))}
) ) : ( // Other menu types - Categories menu.type === 'categories' && (
{menu.categories?.map((category, idx) => { const IconComponent = category.icon return (

{category.name}

{category.items?.map((item, itemIdx) => (
{item.name}
{item.description}
))}
) })}
) )} {/* View All Products Button - Only for Products Menu */} {menuKey === 'products' && !isLoadingProducts && (
View All Products
)}
)}
) }