/* eslint-disable @next/next/no-img-element */ "use client"; import Link from "next/link"; import Image from "next/image"; import clsx from "clsx"; import {BsList, BsXLg} from "react-icons/bs"; import {Fragment, useEffect, useState} from "react"; import {Dialog, Menu, Transition} from "@headlessui/react"; import {useRouter} from "next/navigation"; import translation from "@/translation/navbar.json"; import {Contact} from "@/types/contact"; import NavBarSection from "@/types/cms/navbar"; interface Item { page: string; key: string; entries?: { key: string; label: string; }[]; } interface Props { currentPage: string; language: "en" | "ar"; data: NavBarSection; } async function getCountryManagers(language: "en" | "ar" = "en") { const res = await fetch(`${process.env.NEXT_PUBLIC_APP_URL}/api/users/agents?language=${language}`); if (!res.ok) { throw new Error("Failed to fetch contacts"); } return res.json(); } export default function Navbar({currentPage, language, data}: Props) { const [contacts, setContacts] = useState([]); useEffect(() => { getCountryManagers(language) .then((contacts) => setContacts( contacts.map((data: Contact) => ({ key: data.key, label: data.label, })), ), ) .catch(console.error); }, [language]); const items = [ {page: "/", key: "Home"}, {page: "/services", key: "Services"}, {page: "/price", key: "Price"}, {page: "/about", key: "About"}, {page: "/history", key: "History"}, {page: "/contact", key: "Contact"}, { key: "CountryManager", page: "/contacts", entries: contacts, }, ] as Item[]; const [isOpen, setIsOpen] = useState(false); const renderItem = (item: Item, className: string) => { if (item.entries) { return (