diff --git a/src/components/Navbar.tsx b/src/components/Navbar.tsx index fbf09cc..1c2fd82 100644 --- a/src/components/Navbar.tsx +++ b/src/components/Navbar.tsx @@ -1,176 +1,292 @@ /* eslint-disable @next/next/no-img-element */ "use client"; - +import React from "react"; 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 { BsList, BsXLg } from "react-icons/bs"; +import { Fragment, useState } from "react"; +import { Dialog, Transition } from "@headlessui/react"; import translation from "@/translation/navbar.json"; +import NestedNavbarEntry from "@/components/NestedNavbarEntry"; 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"}, + { page: "/", key: "home" }, + { page: "/services", key: "services" }, + { page: "/price", key: "price" }, + { page: "/about", key: "about" }, + { page: "/history", key: "history" }, + { page: "/contact", key: "contact" }, + { + key: "country_manager", + page: "", + entries: [ + { + key: "Egypt", + entries: [ + { + name: "Modern Technology", + number: "+226578480830", + email: "egypt@encoach.com", + }, + ], + }, + { + key: "Oman", + entries: [ + { + name: "Smartway education", + number: "+9689944094", + email: "oman@encoach.com", + }, + { name: "MTI", number: "+9687445609", email: "mti@encoach.com" }, + ], + }, + { + key: "Saudi Arabia", + entries: [ + { + name: "Edutrach services", + number: "+96658499347", + email: "edu@encoach.com", + }, + ], + }, + ], + }, ]; -export default function Navbar({currentPage, language}: {currentPage: string; language: "en" | "ar"}) { - const [isOpen, setIsOpen] = useState(false); +export default function Navbar({ + currentPage, + language, +}: { + currentPage: string; + language: "en" | "ar"; +}) { + const [isOpen, setIsOpen] = useState(false); - return ( - <> -
- - EnCoach logo - -
- {items.map((item) => ( - - {(translation as any)[item.key][language]} - - ))} -
-
- - {translation.platform[language]} - - - {translation.join[language]} - - {language === "ar" ? ( - - EN - - ) : ( - - AR - - )} -
-
+ return ( + <> +
+ + EnCoach logo + +
+ {items.map((item) => + item.entries ? ( + + ) : ( + + {(translation as any)[item.key][language]} + + ) + )} +
+
+ + {translation.platform[language]} + + + {translation.join[language]} + + {language === "ar" ? ( + + EN + + ) : ( + + AR + + )} +
+
- - setIsOpen(false)}> - -
- + + setIsOpen(false)} + > + +
+ -
-
- - - - - EnCoach logo - -
- {language === "ar" ? ( - - EN - - ) : ( - - AR - - )} -
setIsOpen(false)} tabIndex={0}> - setIsOpen(false)} /> -
-
-
-
- {items.map((item) => ( - - {(translation as any)[item.key][language]} - - ))} - - {translation.join[language]} - - - {translation.platform[language]} - -
-
-
-
-
-
-
+
+
+ + + + + EnCoach logo + +
+ {language === "ar" ? ( + + EN + + ) : ( + + AR + + )} +
setIsOpen(false)} + tabIndex={0} + > + setIsOpen(false)} + /> +
+
+
+
+ {items.map((item) => ( + + {(translation as any)[item.key][language]} + + ))} + + {translation.join[language]} + + + {translation.platform[language]} + +
+
+
+
+
+
+
-
- - EnCoach logo - -
- {language === "ar" ? ( - - EN - - ) : ( - - AR - - )} -
setIsOpen(true)}> - setIsOpen(true)} /> -
-
-
- - ); +
+ + EnCoach logo + +
+ {language === "ar" ? ( + + EN + + ) : ( + + AR + + )} +
setIsOpen(true)}> + setIsOpen(true)} /> +
+
+
+ + ); } diff --git a/src/components/NestedNavbarEntry.tsx b/src/components/NestedNavbarEntry.tsx new file mode 100644 index 0000000..34d706e --- /dev/null +++ b/src/components/NestedNavbarEntry.tsx @@ -0,0 +1,76 @@ +import React from "react"; +import clsx from "clsx"; + +interface NavbarNestedEntry { + name: string; + number: string; + email: string; +} +interface NavbarEntry { + key: string; + entries: { + key: string; + entries: NavbarNestedEntry[]; + }[]; +} +const NestedSubmenus = ({ entry }: { entry: NavbarEntry }) => { + const [open, setOpen] = React.useState(null); + + return ( + + ); +}; + +const NestedNavbarEntry = ({ + entry, + language, + translation +}: { + entry: NavbarEntry; + language: "en" | "ar"; + translation: any +}) => { + const [open, setOpen] = React.useState(null); + + return ( +
setOpen(entry.key)} + onMouseLeave={() => setOpen(null)} + > + + {translation[entry.key][language]} + + +
+ ); +}; + +export default NestedNavbarEntry; \ No newline at end of file diff --git a/src/translation/navbar.json b/src/translation/navbar.json index 08e6609..b032635 100644 --- a/src/translation/navbar.json +++ b/src/translation/navbar.json @@ -30,5 +30,9 @@ "join": { "en": "Join", "ar": "انضم إلينا" + }, + "country_manager": { + "en": "Country Manager", + "ar": "المدير المحلي" } -} \ No newline at end of file +}