"use client"; import { useState, useEffect, useMemo } from "react"; import { usePathname } from "next/navigation"; import Link from "next/link"; import Image from "next/image"; import OffcanvasMenu from "./OffcanvasMenu"; import { OffcanvasData } from "@/public/data/offcanvas-data"; import { useNavigationServices } from "@/lib/hooks/useServices"; const Header = () => { const [isOffcanvasOpen, setIsOffcanvasOpen] = useState(false); const [scrolled, setScrolled] = useState(false); const [isActive, setIsActive] = useState(true); const [openDropdown, setOpenDropdown] = useState(null); const [isMobile, setIsMobile] = useState(false); // Fetch services from API const { services: apiServices, loading: servicesLoading, error: servicesError } = useNavigationServices(); // Create dynamic navigation data with services from API const navigationData = useMemo(() => { const baseNavigation = [...OffcanvasData]; // Find the Services menu item and update its submenu with API data const servicesIndex = baseNavigation.findIndex(item => item.title === "Services"); if (servicesIndex !== -1 && apiServices.length > 0) { console.log('Replacing services with API data:', apiServices); baseNavigation[servicesIndex] = { ...baseNavigation[servicesIndex], submenu: apiServices.map(service => ({ id: service.id + 1000, // Offset to avoid conflicts with existing IDs title: service.title, path: `/services/${service.slug}`, parent_id: baseNavigation[servicesIndex].id, display_order: service.display_order, created_at: service.created_at, updated_at: service.updated_at })) } as any; } else { console.log('Using static services data. API services:', apiServices.length, 'Services index:', servicesIndex); } return baseNavigation; }, [apiServices]); // Static header data const headerData = { title: "EnterpriseSoft Solutions", logoUrl: "/images/logo.png", logoLightUrl: "/images/logo-light.png", navigationType: "both", headerClass: "tp-header", scrolledClass: "navbar-active", buttonText: "Support Center", buttonUrl: "/support-center", buttonClass: "btn btn-primary d-none d-sm-flex", isActive: true, displayOrder: 1, metaData: JSON.stringify({ mobileBreakpoint: 992, scrollThreshold: 50, hideOnMobile: false, mobileFirst: true, hamburgerMenu: true }) }; const handleClick = () => { setTimeout(() => { setIsOffcanvasOpen(false); }, 900); setIsActive(false); }; const handleDropdownToggle = (index: number) => { setOpenDropdown(openDropdown === index ? null : index); }; useEffect(() => { const handleScroll = () => { const scrollPosition = window.scrollY; if (scrollPosition > 50) { setScrolled(true); } else { setScrolled(false); } }; window.addEventListener("scroll", handleScroll); handleScroll(); return () => { window.removeEventListener("scroll", handleScroll); }; }, [scrolled]); useEffect(() => { const handleResize = () => { setIsMobile(window.innerWidth < 992); setTimeout(() => { setIsOffcanvasOpen(false); }, 900); setIsActive(false); }; handleResize(); // Check on mount window.addEventListener("resize", handleResize); return () => { window.removeEventListener("resize", handleResize); }; }, []); // Use static data let logoSrc: string = headerData.logoUrl; let headerClass = headerData.headerClass; let buttonText = headerData.buttonText; let buttonUrl = headerData.buttonUrl; let buttonClass = headerData.buttonClass; const pathname = usePathname(); // Override logo based on pathname if needed (maintain existing behavior) if ( pathname === "/career" || pathname === "/" || pathname === "/index" || pathname === "/services" || pathname === "/service-single" ) { logoSrc = headerData.logoLightUrl; } const handleOffCanvas = () => { setIsOffcanvasOpen(true); setIsActive(true); }; return ( <>
); }; export default Header;