From 0aaa694fab12feb2ae85ec10292720c843abda6f Mon Sep 17 00:00:00 2001 From: adilallo <39313955+adilallo@users.noreply.github.com> Date: Fri, 6 Feb 2026 08:27:44 -0700 Subject: [PATCH] Rename header components into one TopNav --- .../ConditionalHeader.view.tsx | 8 +- .../navigation/Header/Header.container.tsx | 155 ----------- .../navigation/Header/Header.view.tsx | 124 --------- app/components/navigation/Header/index.tsx | 3 - .../HomeHeader/HomeHeader.container.tsx | 195 -------------- .../navigation/HomeHeader/HomeHeader.types.ts | 61 ----- .../navigation/HomeHeader/HomeHeader.view.tsx | 119 -------- .../navigation/HomeHeader/index.tsx | 2 - .../navigation/TopNav/TopNav.container.tsx | 254 ++++++++++++++++++ .../TopNav.types.ts} | 42 +-- .../navigation/TopNav/TopNav.view.tsx | 242 +++++++++++++++++ app/components/navigation/TopNav/index.tsx | 3 + app/monitor/page.tsx | 4 +- .../navigation/Header.responsive.stories.js | 247 ----------------- stories/navigation/Header.stories.js | 75 ------ stories/navigation/HomeHeader.stories.js | 72 ----- stories/navigation/TopNav.stories.js | 206 ++++++++++++++ tests/components/Header.test.tsx | 21 -- tests/components/TopNav.test.tsx | 38 +++ 19 files changed, 774 insertions(+), 1097 deletions(-) delete mode 100644 app/components/navigation/Header/Header.container.tsx delete mode 100644 app/components/navigation/Header/Header.view.tsx delete mode 100644 app/components/navigation/Header/index.tsx delete mode 100644 app/components/navigation/HomeHeader/HomeHeader.container.tsx delete mode 100644 app/components/navigation/HomeHeader/HomeHeader.types.ts delete mode 100644 app/components/navigation/HomeHeader/HomeHeader.view.tsx delete mode 100644 app/components/navigation/HomeHeader/index.tsx create mode 100644 app/components/navigation/TopNav/TopNav.container.tsx rename app/components/navigation/{Header/Header.types.ts => TopNav/TopNav.types.ts} (78%) create mode 100644 app/components/navigation/TopNav/TopNav.view.tsx create mode 100644 app/components/navigation/TopNav/index.tsx delete mode 100644 stories/navigation/Header.responsive.stories.js delete mode 100644 stories/navigation/Header.stories.js delete mode 100644 stories/navigation/HomeHeader.stories.js create mode 100644 stories/navigation/TopNav.stories.js delete mode 100644 tests/components/Header.test.tsx create mode 100644 tests/components/TopNav.test.tsx diff --git a/app/components/navigation/ConditionalHeader/ConditionalHeader.view.tsx b/app/components/navigation/ConditionalHeader/ConditionalHeader.view.tsx index ff36612..80c808e 100644 --- a/app/components/navigation/ConditionalHeader/ConditionalHeader.view.tsx +++ b/app/components/navigation/ConditionalHeader/ConditionalHeader.view.tsx @@ -1,12 +1,8 @@ -import HomeHeader from "../HomeHeader"; -import Header from "../Header"; +import TopNav from "../TopNav"; import type { ConditionalHeaderViewProps } from "./ConditionalHeader.types"; export function ConditionalHeaderView({ isHomePage, }: ConditionalHeaderViewProps) { - if (isHomePage) { - return ; - } - return
; + return ; } diff --git a/app/components/navigation/Header/Header.container.tsx b/app/components/navigation/Header/Header.container.tsx deleted file mode 100644 index 2c99512..0000000 --- a/app/components/navigation/Header/Header.container.tsx +++ /dev/null @@ -1,155 +0,0 @@ -"use client"; - -import { memo } from "react"; -import { usePathname } from "next/navigation"; -import { useTranslation } from "../../../contexts/MessagesContext"; -import MenuBarItem from "../MenuBarItem"; -import Button from "../../buttons/Button"; -import AvatarContainer from "../../utility/AvatarContainer"; -import Avatar from "../../icons/Avatar"; -import Logo from "../../icons/Logo"; -import { getAssetPath, ASSETS } from "../../../../lib/assetUtils"; -import { HeaderView } from "./Header.view"; -import type { HeaderProps, NavSize } from "./Header.types"; - -export const avatarImages = [ - { src: getAssetPath(ASSETS.AVATAR_1), alt: "Avatar 1" }, - { src: getAssetPath(ASSETS.AVATAR_2), alt: "Avatar 2" }, - { src: getAssetPath(ASSETS.AVATAR_3), alt: "Avatar 3" }, -]; - -export const logoConfig = [ - { breakpoint: "block sm:hidden", size: "header" as const, showText: false }, - { - breakpoint: "hidden sm:block md:hidden", - size: "header" as const, - showText: true, - }, - { - breakpoint: "hidden md:block lg:hidden", - size: "headerMd" as const, - showText: true, - }, - { - breakpoint: "hidden lg:block xl:hidden", - size: "headerLg" as const, - showText: true, - }, - { breakpoint: "hidden xl:block", size: "headerXl" as const, showText: true }, -]; - -const HeaderContainer = memo(() => { - const pathname = usePathname(); - const t = useTranslation("header"); - - // Schema markup for site navigation - const schemaData = { - "@context": "https://schema.org", - "@type": "WebSite", - name: "CommunityRule", - url: "https://communityrule.com", - potentialAction: { - "@type": "SearchAction", - target: "https://communityrule.com/search?q={search_term_string}", - "query-input": "required name=search_term_string", - }, - }; - - // Navigation items with translations - const navigationItems = [ - { href: "#", text: t("navigation.useCases"), extraPadding: true }, - { href: "/learn", text: t("navigation.learn") }, - { href: "#", text: t("navigation.about") }, - ]; - - const renderNavigationItems = (size: NavSize) => { - return navigationItems.map((item, index) => ( - - {item.text} - - )); - }; - - const renderAvatarGroup = ( - containerSize: "small" | "medium" | "large" | "xlarge", - avatarSize: "small" | "medium" | "large" | "xlarge", - ) => { - return ( - - {avatarImages.map((avatar, index) => ( - - ))} - - ); - }; - - const renderLoginButton = (size: NavSize) => { - return ( - - {t("buttons.logIn")} - - ); - }; - - const renderCreateRuleButton = ( - buttonSize: "xsmall" | "small" | "medium" | "large" | "xlarge", - containerSize: "small" | "medium" | "large" | "xlarge", - avatarSize: "small" | "medium" | "large" | "xlarge", - ) => { - return ( - - ); - }; - - const renderLogo = ( - size: - | "default" - | "homeHeaderXsmall" - | "homeHeaderSm" - | "homeHeaderMd" - | "homeHeaderLg" - | "homeHeaderXl" - | "header" - | "headerMd" - | "headerLg" - | "headerXl" - | "footer" - | "footerLg", - showText: boolean, - ) => { - return ; - }; - - return ( - - ); -}); - -HeaderContainer.displayName = "Header"; - -export default HeaderContainer; diff --git a/app/components/navigation/Header/Header.view.tsx b/app/components/navigation/Header/Header.view.tsx deleted file mode 100644 index 51d49cb..0000000 --- a/app/components/navigation/Header/Header.view.tsx +++ /dev/null @@ -1,124 +0,0 @@ -"use client"; - -import { useTranslation } from "../../../contexts/MessagesContext"; -import MenuBar from "../MenuBar"; -import type { HeaderViewProps } from "./Header.types"; - -export function HeaderView({ - schemaData, - logoConfig, - renderNavigationItems, - renderLoginButton, - renderCreateRuleButton, - renderLogo, -}: HeaderViewProps) { - const t = useTranslation("header"); - - return ( - <> -