This commit is contained in:
Iliyan Angelov
2025-11-24 08:18:18 +02:00
parent 366f28677a
commit 136f75a859
133 changed files with 14977 additions and 3350 deletions

View File

@@ -4,7 +4,6 @@ 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 = () => {
@@ -17,26 +16,65 @@ const Header = () => {
// Fetch services from API
const { services: apiServices, loading: servicesLoading, error: servicesError } = useNavigationServices();
// Create dynamic navigation data with services from API
// Create dynamic navigation data - only use API data, no hardcoded fallback
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) {
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;
}
const baseNavigation = [
{
id: 1,
title: "Home",
path: "/",
submenu: null,
},
{
id: 2,
title: "About Us",
path: "/about-us",
submenu: null,
},
{
id: 3,
title: "Services",
path: "/services",
submenu: apiServices.length > 0
? apiServices.map(service => ({
id: service.id + 1000,
title: service.title,
path: `/services/${service.slug}`,
display_order: service.display_order,
}))
: null,
},
{
id: 4,
title: "Case Studies",
path: "/case-study",
submenu: null,
},
{
id: 5,
title: "Insights",
path: "/insights",
submenu: null,
},
{
id: 6,
title: "Career",
path: "/career",
submenu: null,
},
{
id: 7,
title: "Support Center",
path: "/support-center",
submenu: null,
},
{
id: 8,
title: "Contact Us",
path: "/contact-us",
submenu: null,
},
];
return baseNavigation;
}, [apiServices]);
@@ -189,11 +227,11 @@ const Header = () => {
<li>
<span className="text-muted">Loading services...</span>
</li>
) : item.title === "Services" && servicesError ? (
) : item.title === "Services" && (servicesError || !item.submenu || item.submenu.length === 0) ? (
<li>
<span className="text-danger">Failed to load services</span>
<span className="text-muted">No data available</span>
</li>
) : (
) : item.submenu ? (
item.submenu.map((subItem, subIndex) => (
<li key={subIndex}>
<Link
@@ -208,7 +246,7 @@ const Header = () => {
</Link>
</li>
))
)}
) : null}
</ul>
</li>
) : (