From d57788c3aff9c2e6c0057d2b4b9dbe0d5a868570 Mon Sep 17 00:00:00 2001 From: Satyam Date: Sun, 25 Feb 2024 21:18:26 +0530 Subject: [PATCH 1/9] tests: add unit tests for navbar component --- .../components/common/navbar/Navbar.test.tsx | 55 +++++++++++++++++++ process-env.d.ts | 10 ++++ .../common/Navbar/Navbar.constants.ts | 24 ++++++++ src/components/common/Navbar/Navbar.types.ts | 5 ++ tsconfig.json | 1 + 5 files changed, 95 insertions(+) create mode 100644 __tests__/components/common/navbar/Navbar.test.tsx create mode 100644 process-env.d.ts create mode 100644 src/components/common/Navbar/Navbar.constants.ts create mode 100644 src/components/common/Navbar/Navbar.types.ts diff --git a/__tests__/components/common/navbar/Navbar.test.tsx b/__tests__/components/common/navbar/Navbar.test.tsx new file mode 100644 index 0000000..9696551 --- /dev/null +++ b/__tests__/components/common/navbar/Navbar.test.tsx @@ -0,0 +1,55 @@ +import React from "react"; +import { fireEvent, render, screen } from "@testing-library/react"; + +import { NavbarLink } from "@/components/common/Navbar/Navbar.types"; +import { NAVBAR_LINKS } from "@/components/common/Navbar/Navbar.constants"; + +import Navbar from "@/components/common/Navbar/Navbar"; + +describe("Navbar Component", () => { + it("should render the Navbar", () => { + render(); + + const nav = screen.getByRole("banner"); + + expect(nav).toBeInTheDocument(); + + // nav links assertions - desktop + NAVBAR_LINKS.forEach((link: NavbarLink) => { + const navLink = screen.getAllByText(link.name)[0]; + expect(navLink).toHaveTextContent(link.name); + }); + + // signin button assertions + const signinButton = screen.getByTestId("signin-button"); + const signInText = screen.getByText("Sign in with Github"); + + expect(signInText).toBeInTheDocument(); + expect(signinButton).toBeInTheDocument(); + expect(signinButton).toHaveAttribute("href", "login url will come here"); + }); + + it("should render the mobile navbar when hamburger button is clicked", () => { + render(); + + const mobileNav = screen.queryByTestId("mobile-nav"); + const hamburgerButton = screen.queryByRole("button"); + + // hamburgerButton assertions + expect(hamburgerButton).toBeInTheDocument(); + expect(hamburgerButton).toHaveClass("hamburger"); + + // toggle navlinks assertions + expect(mobileNav).toHaveClass("hidden"); + + fireEvent.click(hamburgerButton!); + + expect(mobileNav).toHaveClass("visible"); + + // nav links assertions - mobile + NAVBAR_LINKS.forEach((link: NavbarLink) => { + const navLink = screen.queryAllByText(link.name)[1]; + expect(navLink).toHaveTextContent(link.name); + }); + }); +}); diff --git a/process-env.d.ts b/process-env.d.ts new file mode 100644 index 0000000..8ed51b1 --- /dev/null +++ b/process-env.d.ts @@ -0,0 +1,10 @@ +declare namespace NodeJS { + interface ProcessEnv { + NEXT_PUBLIC_BACKEND_BASE_URL: string; + NEXT_PUBLIC_STATUS_SITE: string; + NEXT_PUBLIC_MEMBERS_SITE: string; + NEXT_PUBLIC_WELCOME_SITE: string; + NEXT_PUBLIC_WWW_SITE: string; + NEXT_PUBLIC_MY_SITE: string; + } +} diff --git a/src/components/common/Navbar/Navbar.constants.ts b/src/components/common/Navbar/Navbar.constants.ts new file mode 100644 index 0000000..d7a1394 --- /dev/null +++ b/src/components/common/Navbar/Navbar.constants.ts @@ -0,0 +1,24 @@ +import { NavbarLink } from "./Navbar.types"; + +export const NAVBAR_LINKS: NavbarLink[] = [ + { + id: "welcome-site", + name: "Welcome", + link: process.env.NEXT_PUBLIC_WELCOME_SITE, + }, + { + id: "events-site", + name: "Events", + link: `${process.env.NEXT_PUBLIC_WWW_SITE}/events`, + }, + { + id: "members-site", + name: "Members", + link: process.env.NEXT_PUBLIC_MEMBERS_SITE, + }, + { + id: "status-site", + name: "Status", + link: process.env.NEXT_PUBLIC_STATUS_SITE, + }, +]; diff --git a/src/components/common/Navbar/Navbar.types.ts b/src/components/common/Navbar/Navbar.types.ts new file mode 100644 index 0000000..2527636 --- /dev/null +++ b/src/components/common/Navbar/Navbar.types.ts @@ -0,0 +1,5 @@ +export type NavbarLink = { + id: string; + name: string; + link: string; +}; diff --git a/tsconfig.json b/tsconfig.json index 101ccd7..0c6727b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -24,6 +24,7 @@ } }, "include": [ + "process-env.d.ts", "next-env.d.ts", "**/*.ts", "**/*.tsx", From bae87cd9be68aa6f0285b3a3634f29e8856f18ce Mon Sep 17 00:00:00 2001 From: Satyam Date: Sun, 25 Feb 2024 23:22:14 +0530 Subject: [PATCH 2/9] feat: add navbar component --- process-env.d.ts | 10 ++++ public/github-logo.png | Bin 0 -> 13669 bytes public/rds-logo.svg | 9 +++ src/components/Layout.tsx | 2 + src/components/common/Navbar/Navbar.tsx | 54 ++++++++++++++++++ .../common/Navbar/navbar.constants.ts | 24 ++++++++ src/components/common/Navbar/navbar.types.ts | 5 ++ tailwind.config.js | 3 + tsconfig.json | 1 + 9 files changed, 108 insertions(+) create mode 100644 process-env.d.ts create mode 100644 public/github-logo.png create mode 100644 public/rds-logo.svg create mode 100644 src/components/common/Navbar/Navbar.tsx create mode 100644 src/components/common/Navbar/navbar.constants.ts create mode 100644 src/components/common/Navbar/navbar.types.ts diff --git a/process-env.d.ts b/process-env.d.ts new file mode 100644 index 0000000..8ed51b1 --- /dev/null +++ b/process-env.d.ts @@ -0,0 +1,10 @@ +declare namespace NodeJS { + interface ProcessEnv { + NEXT_PUBLIC_BACKEND_BASE_URL: string; + NEXT_PUBLIC_STATUS_SITE: string; + NEXT_PUBLIC_MEMBERS_SITE: string; + NEXT_PUBLIC_WELCOME_SITE: string; + NEXT_PUBLIC_WWW_SITE: string; + NEXT_PUBLIC_MY_SITE: string; + } +} diff --git a/public/github-logo.png b/public/github-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6c3b3cd14aece03ce138e53c6e8ecc4954b17e8a GIT binary patch literal 13669 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 + + + + + + + + diff --git a/src/components/Layout.tsx b/src/components/Layout.tsx index 11df706..6f0d9dc 100644 --- a/src/components/Layout.tsx +++ b/src/components/Layout.tsx @@ -1,5 +1,6 @@ import { ReactNode } from "react"; import Head from "next/head"; +import Navbar from "./common/Navbar/Navbar"; type LayoutProps = { title: string; @@ -11,6 +12,7 @@ export default function Layout({ title, children }: LayoutProps) { {title} + {children} ); diff --git a/src/components/common/Navbar/Navbar.tsx b/src/components/common/Navbar/Navbar.tsx new file mode 100644 index 0000000..e79c6a2 --- /dev/null +++ b/src/components/common/Navbar/Navbar.tsx @@ -0,0 +1,54 @@ +import React, { useState } from "react"; +import Image from "next/image"; +import { NAVBAR_LINKS } from "./navbar.constants"; +import { NavbarLink } from "./navbar.types"; +import { IoLogoGithub } from "react-icons/io5"; +import { GiHamburgerMenu } from "react-icons/gi"; + +function Navbar() { + const [isNavbarLinksVisible, setIsNavbarLinksVisible] = useState(false); + + function toggleNavbarLinksVisibility() { + setIsNavbarLinksVisible((prevState) => !prevState); + } + const navbarItemsMapping = NAVBAR_LINKS.map((item: NavbarLink) => ( +
  • + + {item.name} + +
  • + )); + + return ( +
    +
    + Real Dev Squad + + + + + Sign in with Github + + + +
    + +
    + ); +} + +export default Navbar; diff --git a/src/components/common/Navbar/navbar.constants.ts b/src/components/common/Navbar/navbar.constants.ts new file mode 100644 index 0000000..cea70eb --- /dev/null +++ b/src/components/common/Navbar/navbar.constants.ts @@ -0,0 +1,24 @@ +import { NavbarLink } from "./navbar.types"; + +export const NAVBAR_LINKS: NavbarLink[] = [ + { + id: "welcome-site", + name: "Welcome", + link: process.env.NEXT_PUBLIC_WELCOME_SITE, + }, + { + id: "events-site", + name: "Events", + link: `${process.env.NEXT_PUBLIC_WWW_SITE}/events`, + }, + { + id: "members-site", + name: "Members", + link: process.env.NEXT_PUBLIC_MEMBERS_SITE, + }, + { + id: "status-site", + name: "Status", + link: process.env.NEXT_PUBLIC_STATUS_SITE, + }, +]; diff --git a/src/components/common/Navbar/navbar.types.ts b/src/components/common/Navbar/navbar.types.ts new file mode 100644 index 0000000..2527636 --- /dev/null +++ b/src/components/common/Navbar/navbar.types.ts @@ -0,0 +1,5 @@ +export type NavbarLink = { + id: string; + name: string; + link: string; +}; diff --git a/tailwind.config.js b/tailwind.config.js index 4040b80..14373a2 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -23,6 +23,9 @@ module.exports = { }, }, colors: { + primary: "#041187", + secondary: "#E30062", + contrast: "#85DA6B", green: "#059669", red: { 100: "#FEF2F2", diff --git a/tsconfig.json b/tsconfig.json index 101ccd7..0c6727b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -24,6 +24,7 @@ } }, "include": [ + "process-env.d.ts", "next-env.d.ts", "**/*.ts", "**/*.tsx", From 09d7edc702ec440d9de47e6cc3fe6ee146222628 Mon Sep 17 00:00:00 2001 From: Satyam Date: Tue, 27 Feb 2024 15:45:40 +0530 Subject: [PATCH 3/9] feat: add github authentication url for login --- .env | 2 ++ env/.env.development | 2 ++ env/.env.production | 6 +++++- env/.env.staging | 2 ++ env/.env.test | 2 ++ package.json | 4 ++-- public/github-logo.png | Bin 13669 -> 0 bytes src/components/common/Navbar/Navbar.tsx | 12 +++++++----- .../common/Navbar/navbar.constants.ts | 4 ++++ src/constants/urls.ts | 1 + 10 files changed, 27 insertions(+), 8 deletions(-) delete mode 100644 public/github-logo.png diff --git a/.env b/.env index e26a791..75b3434 100644 --- a/.env +++ b/.env @@ -1,4 +1,6 @@ NEXT_PUBLIC_BACKEND_BASE_URL = 'https://staging-skilltree-api.realdevsquad.com/v1' +NEXT_PUBLIC_RDS_BACKEND_URL='https://staging-api.realdevsquad.com' +NEXT_PUBLIC_SKILL_TREE_SITE='https://staging-skilltree.realdevsquad.com' NEXT_PUBLIC_STATUS_SITE='https://staging-status.realdevsquad.com' NEXT_PUBLIC_MEMBERS_SITE='https://staging-members.realdevsquad.com' NEXT_PUBLIC_WELCOME_SITE='https://welcome.realdevsquad.com' diff --git a/env/.env.development b/env/.env.development index e26a791..75b3434 100644 --- a/env/.env.development +++ b/env/.env.development @@ -1,4 +1,6 @@ NEXT_PUBLIC_BACKEND_BASE_URL = 'https://staging-skilltree-api.realdevsquad.com/v1' +NEXT_PUBLIC_RDS_BACKEND_URL='https://staging-api.realdevsquad.com' +NEXT_PUBLIC_SKILL_TREE_SITE='https://staging-skilltree.realdevsquad.com' NEXT_PUBLIC_STATUS_SITE='https://staging-status.realdevsquad.com' NEXT_PUBLIC_MEMBERS_SITE='https://staging-members.realdevsquad.com' NEXT_PUBLIC_WELCOME_SITE='https://welcome.realdevsquad.com' diff --git a/env/.env.production b/env/.env.production index e431ded..18c2005 100644 --- a/env/.env.production +++ b/env/.env.production @@ -1,6 +1,10 @@ NEXT_PUBLIC_BACKEND_BASE_URL = 'https://skilltree-api.realdevsquad.com/v1' +NEXT_PUBLIC_RDS_BACKEND_URL='https:/api.realdevsquad.com' +NEXT_PUBLIC_SKILL_TREE_SITE='https:/skilltree.realdevsquad.com' NEXT_PUBLIC_STATUS_SITE='https://status.realdevsquad.com' NEXT_PUBLIC_MEMBERS_SITE='https://members.realdevsquad.com' NEXT_PUBLIC_WELCOME_SITE='https://welcome.realdevsquad.com' NEXT_PUBLIC_WWW_SITE='https://www.realdevsquad.com' -NEXT_PUBLIC_MY_SITE='https://my.realdevsquad.com' \ No newline at end of file +NEXT_PUBLIC_MY_SITE='https://my.realdevsquad.com' + + diff --git a/env/.env.staging b/env/.env.staging index e26a791..970b600 100644 --- a/env/.env.staging +++ b/env/.env.staging @@ -1,4 +1,6 @@ NEXT_PUBLIC_BACKEND_BASE_URL = 'https://staging-skilltree-api.realdevsquad.com/v1' +NEXT_PUBLIC_RDS_BACKEND_URL='https:/staging-api.realdevsquad.com' +NEXT_PUBLIC_SKILL_TREE_SITE='https:/staging-skilltree.realdevsquad.com' NEXT_PUBLIC_STATUS_SITE='https://staging-status.realdevsquad.com' NEXT_PUBLIC_MEMBERS_SITE='https://staging-members.realdevsquad.com' NEXT_PUBLIC_WELCOME_SITE='https://welcome.realdevsquad.com' diff --git a/env/.env.test b/env/.env.test index e26a791..970b600 100644 --- a/env/.env.test +++ b/env/.env.test @@ -1,4 +1,6 @@ NEXT_PUBLIC_BACKEND_BASE_URL = 'https://staging-skilltree-api.realdevsquad.com/v1' +NEXT_PUBLIC_RDS_BACKEND_URL='https:/staging-api.realdevsquad.com' +NEXT_PUBLIC_SKILL_TREE_SITE='https:/staging-skilltree.realdevsquad.com' NEXT_PUBLIC_STATUS_SITE='https://staging-status.realdevsquad.com' NEXT_PUBLIC_MEMBERS_SITE='https://staging-members.realdevsquad.com' NEXT_PUBLIC_WELCOME_SITE='https://welcome.realdevsquad.com' diff --git a/package.json b/package.json index 2f7e6a8..62d0d0c 100644 --- a/package.json +++ b/package.json @@ -7,8 +7,8 @@ "build:production": "cp ./env/.env.production .env && next build", "build:staging": "cp ./env/.env.staging .env && next build", "start": "next start", - "dev:server": "next dev -p 3000", - "dev:reverse-ssl": "local-ssl-proxy --source 443 --target 3000", + "dev:server": "next dev -p 5000", + "dev:reverse-ssl": "local-ssl-proxy --source 443 --target 5000", "dev": "run-p dev:*", "check-types": "tsc --pretty --noEmit", "check-format": "prettier --check .", diff --git a/public/github-logo.png b/public/github-logo.png deleted file mode 100644 index 6c3b3cd14aece03ce138e53c6e8ecc4954b17e8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13669 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 @@ -11,6 +12,7 @@ function Navbar() { function toggleNavbarLinksVisibility() { setIsNavbarLinksVisible((prevState) => !prevState); } + const navbarItemsMapping = NAVBAR_LINKS.map((item: NavbarLink) => (
    • {navbarItemsMapping}
    - + Sign in with Github diff --git a/src/components/common/Navbar/navbar.constants.ts b/src/components/common/Navbar/navbar.constants.ts index cea70eb..70ebaf6 100644 --- a/src/components/common/Navbar/navbar.constants.ts +++ b/src/components/common/Navbar/navbar.constants.ts @@ -1,5 +1,9 @@ +import { RDS_BACKEND_URL } from "@/constants/urls"; import { NavbarLink } from "./navbar.types"; +// ?v2=true so that we get rds-session-v2 cookie from RDS backend +export const SIGNIN_URL = `${RDS_BACKEND_URL}/auth/github/login?redirectURL=${process.env.NEXT_PUBLIC_SKILL_TREE_SITE}?v2=true`; + export const NAVBAR_LINKS: NavbarLink[] = [ { id: "welcome-site", diff --git a/src/constants/urls.ts b/src/constants/urls.ts index ccaa369..5a7ddf6 100644 --- a/src/constants/urls.ts +++ b/src/constants/urls.ts @@ -1 +1,2 @@ export const BASE_URL = process.env.NEXT_PUBLIC_BACKEND_BASE_URL; +export const RDS_BACKEND_URL = process.env.NEXT_PUBLIC_RDS_BACKEND_URL; From 61edbfc263c76a4c03f8d1ada96a9ee258c172a0 Mon Sep 17 00:00:00 2001 From: Satyam Date: Wed, 28 Feb 2024 13:46:36 +0530 Subject: [PATCH 4/9] chore: next development port number --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 62d0d0c..2f7e6a8 100644 --- a/package.json +++ b/package.json @@ -7,8 +7,8 @@ "build:production": "cp ./env/.env.production .env && next build", "build:staging": "cp ./env/.env.staging .env && next build", "start": "next start", - "dev:server": "next dev -p 5000", - "dev:reverse-ssl": "local-ssl-proxy --source 443 --target 5000", + "dev:server": "next dev -p 3000", + "dev:reverse-ssl": "local-ssl-proxy --source 443 --target 3000", "dev": "run-p dev:*", "check-types": "tsc --pretty --noEmit", "check-format": "prettier --check .", From afecf9a278b7c07aaf0d9d58b3a412f22475892e Mon Sep 17 00:00:00 2001 From: Satyam Date: Wed, 28 Feb 2024 13:55:17 +0530 Subject: [PATCH 5/9] refactor: change id of navbar links --- src/components/common/Navbar/navbar.constants.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/common/Navbar/navbar.constants.ts b/src/components/common/Navbar/navbar.constants.ts index 70ebaf6..c34c62e 100644 --- a/src/components/common/Navbar/navbar.constants.ts +++ b/src/components/common/Navbar/navbar.constants.ts @@ -6,22 +6,22 @@ export const SIGNIN_URL = `${RDS_BACKEND_URL}/auth/github/login?redirectURL=${pr export const NAVBAR_LINKS: NavbarLink[] = [ { - id: "welcome-site", + id: "welcome-site-link", name: "Welcome", link: process.env.NEXT_PUBLIC_WELCOME_SITE, }, { - id: "events-site", + id: "events-site-link", name: "Events", link: `${process.env.NEXT_PUBLIC_WWW_SITE}/events`, }, { - id: "members-site", + id: "members-site-link", name: "Members", link: process.env.NEXT_PUBLIC_MEMBERS_SITE, }, { - id: "status-site", + id: "status-site-link", name: "Status", link: process.env.NEXT_PUBLIC_STATUS_SITE, }, From 64a8a50b81ba92cc7258b460a81784a5fa0bafee Mon Sep 17 00:00:00 2001 From: Satyam Date: Wed, 28 Feb 2024 15:25:27 +0530 Subject: [PATCH 6/9] fix: constant url typo --- env/.env.production | 2 +- env/.env.staging | 2 +- env/.env.test | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/env/.env.production b/env/.env.production index 18c2005..20e752e 100644 --- a/env/.env.production +++ b/env/.env.production @@ -1,5 +1,5 @@ NEXT_PUBLIC_BACKEND_BASE_URL = 'https://skilltree-api.realdevsquad.com/v1' -NEXT_PUBLIC_RDS_BACKEND_URL='https:/api.realdevsquad.com' +NEXT_PUBLIC_RDS_BACKEND_URL='https://api.realdevsquad.com' NEXT_PUBLIC_SKILL_TREE_SITE='https:/skilltree.realdevsquad.com' NEXT_PUBLIC_STATUS_SITE='https://status.realdevsquad.com' NEXT_PUBLIC_MEMBERS_SITE='https://members.realdevsquad.com' diff --git a/env/.env.staging b/env/.env.staging index 970b600..cd2c360 100644 --- a/env/.env.staging +++ b/env/.env.staging @@ -1,5 +1,5 @@ NEXT_PUBLIC_BACKEND_BASE_URL = 'https://staging-skilltree-api.realdevsquad.com/v1' -NEXT_PUBLIC_RDS_BACKEND_URL='https:/staging-api.realdevsquad.com' +NEXT_PUBLIC_RDS_BACKEND_URL='https://staging-api.realdevsquad.com' NEXT_PUBLIC_SKILL_TREE_SITE='https:/staging-skilltree.realdevsquad.com' NEXT_PUBLIC_STATUS_SITE='https://staging-status.realdevsquad.com' NEXT_PUBLIC_MEMBERS_SITE='https://staging-members.realdevsquad.com' diff --git a/env/.env.test b/env/.env.test index 970b600..cd2c360 100644 --- a/env/.env.test +++ b/env/.env.test @@ -1,5 +1,5 @@ NEXT_PUBLIC_BACKEND_BASE_URL = 'https://staging-skilltree-api.realdevsquad.com/v1' -NEXT_PUBLIC_RDS_BACKEND_URL='https:/staging-api.realdevsquad.com' +NEXT_PUBLIC_RDS_BACKEND_URL='https://staging-api.realdevsquad.com' NEXT_PUBLIC_SKILL_TREE_SITE='https:/staging-skilltree.realdevsquad.com' NEXT_PUBLIC_STATUS_SITE='https://staging-status.realdevsquad.com' NEXT_PUBLIC_MEMBERS_SITE='https://staging-members.realdevsquad.com' From 532d6fc70eb4b51a6d69b4ae1a1cba7108b1f1f1 Mon Sep 17 00:00:00 2001 From: Satyam Date: Fri, 1 Mar 2024 00:23:19 +0530 Subject: [PATCH 7/9] fix: pre commit hook error --- __tests__/components/common/navbar/Navbar.test.tsx | 7 +++---- src/components/common/Navbar/Navbar.tsx | 2 +- src/components/common/Navbar/navbar.constants.ts | 8 ++++---- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/__tests__/components/common/navbar/Navbar.test.tsx b/__tests__/components/common/navbar/Navbar.test.tsx index 9696551..bdfcbd1 100644 --- a/__tests__/components/common/navbar/Navbar.test.tsx +++ b/__tests__/components/common/navbar/Navbar.test.tsx @@ -1,15 +1,14 @@ import React from "react"; import { fireEvent, render, screen } from "@testing-library/react"; -import { NavbarLink } from "@/components/common/Navbar/Navbar.types"; -import { NAVBAR_LINKS } from "@/components/common/Navbar/Navbar.constants"; +import { NavbarLink } from "@/components/common/Navbar/navbar.types"; +import { NAVBAR_LINKS, SIGNIN_URL } from "@/components/common/Navbar/navbar.constants"; import Navbar from "@/components/common/Navbar/Navbar"; describe("Navbar Component", () => { it("should render the Navbar", () => { render(); - const nav = screen.getByRole("banner"); expect(nav).toBeInTheDocument(); @@ -26,7 +25,7 @@ describe("Navbar Component", () => { expect(signInText).toBeInTheDocument(); expect(signinButton).toBeInTheDocument(); - expect(signinButton).toHaveAttribute("href", "login url will come here"); + expect(signinButton).toHaveAttribute("href", SIGNIN_URL); }); it("should render the mobile navbar when hamburger button is clicked", () => { diff --git a/src/components/common/Navbar/Navbar.tsx b/src/components/common/Navbar/Navbar.tsx index d46b734..1e74fc0 100644 --- a/src/components/common/Navbar/Navbar.tsx +++ b/src/components/common/Navbar/Navbar.tsx @@ -35,7 +35,7 @@ function Navbar() {
      {navbarItemsMapping}
    - + Sign in with Github diff --git a/src/components/common/Navbar/navbar.constants.ts b/src/components/common/Navbar/navbar.constants.ts index c34c62e..70ebaf6 100644 --- a/src/components/common/Navbar/navbar.constants.ts +++ b/src/components/common/Navbar/navbar.constants.ts @@ -6,22 +6,22 @@ export const SIGNIN_URL = `${RDS_BACKEND_URL}/auth/github/login?redirectURL=${pr export const NAVBAR_LINKS: NavbarLink[] = [ { - id: "welcome-site-link", + id: "welcome-site", name: "Welcome", link: process.env.NEXT_PUBLIC_WELCOME_SITE, }, { - id: "events-site-link", + id: "events-site", name: "Events", link: `${process.env.NEXT_PUBLIC_WWW_SITE}/events`, }, { - id: "members-site-link", + id: "members-site", name: "Members", link: process.env.NEXT_PUBLIC_MEMBERS_SITE, }, { - id: "status-site-link", + id: "status-site", name: "Status", link: process.env.NEXT_PUBLIC_STATUS_SITE, }, From e67b939130f1c637a1306ac75aa0575b3be896ba Mon Sep 17 00:00:00 2001 From: Satyam Bajpai Date: Fri, 1 Mar 2024 00:54:50 +0530 Subject: [PATCH 8/9] chore: delete unnecessary files --- .../common/Navbar/Navbar.constants.ts | 24 ------------------- 1 file changed, 24 deletions(-) delete mode 100644 src/components/common/Navbar/Navbar.constants.ts diff --git a/src/components/common/Navbar/Navbar.constants.ts b/src/components/common/Navbar/Navbar.constants.ts deleted file mode 100644 index d7a1394..0000000 --- a/src/components/common/Navbar/Navbar.constants.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { NavbarLink } from "./Navbar.types"; - -export const NAVBAR_LINKS: NavbarLink[] = [ - { - id: "welcome-site", - name: "Welcome", - link: process.env.NEXT_PUBLIC_WELCOME_SITE, - }, - { - id: "events-site", - name: "Events", - link: `${process.env.NEXT_PUBLIC_WWW_SITE}/events`, - }, - { - id: "members-site", - name: "Members", - link: process.env.NEXT_PUBLIC_MEMBERS_SITE, - }, - { - id: "status-site", - name: "Status", - link: process.env.NEXT_PUBLIC_STATUS_SITE, - }, -]; From 15e032f2991590813b582975b2aa9d40620b7933 Mon Sep 17 00:00:00 2001 From: Satyam Bajpai Date: Fri, 1 Mar 2024 00:59:28 +0530 Subject: [PATCH 9/9] chore: remove unnecessary types file --- src/components/common/Navbar/Navbar.types.ts | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 src/components/common/Navbar/Navbar.types.ts diff --git a/src/components/common/Navbar/Navbar.types.ts b/src/components/common/Navbar/Navbar.types.ts deleted file mode 100644 index 2527636..0000000 --- a/src/components/common/Navbar/Navbar.types.ts +++ /dev/null @@ -1,5 +0,0 @@ -export type NavbarLink = { - id: string; - name: string; - link: string; -};