diff --git a/src/components/Navbar.tsx b/src/components/Navbar.tsx index 5ace748..5712904 100644 --- a/src/components/Navbar.tsx +++ b/src/components/Navbar.tsx @@ -11,6 +11,16 @@ import { useRouter } from "next/navigation"; import translation from "@/translation/navbar.json"; import contacts from "@/contacts.json"; +interface Item { + page: string; + key: string; + entries?: { + key: string; + label: string; + }[]; + +} + const items = [ { page: "/", key: "home" }, { page: "/services", key: "services" }, @@ -26,7 +36,7 @@ const items = [ label: data.label, })), }, -]; +] as Item[]; export default function Navbar({ currentPage, @@ -36,6 +46,46 @@ export default function Navbar({ language: "en" | "ar"; }) { const [isOpen, setIsOpen] = useState(false); + + const renderItem = (item: Item, className: string) => { + if (item.entries) { + return ( +
+ + {translation[item.key as keyof typeof translation][language]} + + +
+ ); + } + + return ( + + {(translation as any)[item.key][language]} + + ); + }; return ( <>
@@ -49,45 +99,13 @@ export default function Navbar({
{items.map((item) => - item.entries ? ( -
- - {translation[item.key as keyof typeof translation][language]} - -
    - {item.entries?.map((innerEntry) => ( -
  • - - {innerEntry.label} - -
  • - ))} -
-
- ) : ( - - {(translation as any)[item.key][language]} - + renderItem( + item, + clsx( + "hover:border-b-mti-purple-light transition duration-300 ease-in-out hover:border-b-2", + currentPage === item.page && + "border-b-mti-purple-light border-b-2" + ) ) )}
@@ -198,23 +216,16 @@ export default function Navbar({ language === "ar" && "items-end" )} > - {items.map((item) => ( - + renderItem( + item, + clsx( "w-fit transition duration-300 ease-in-out", currentPage === item.page && "text-mti-purple-light border-b-mti-purple-light border-b-2 font-semibold " - )} - > - {(translation as any)[item.key][language]} - - ))} + ) + ) + )}