From 386b107bd8684df46b7aef008655277816930d09 Mon Sep 17 00:00:00 2001 From: Christel Westerberg Date: Wed, 12 Jun 2024 16:51:06 +0200 Subject: [PATCH] fix: add logout button in mobile dropdown and name in desktop --- .../Desktop/desktop.module.css | 2 +- .../Header/LanguageSwitcher/Mobile/index.tsx | 6 +--- .../LanguageSwitcher/Mobile/mobile.module.css | 4 +-- components/Current/Header/LoginButton.tsx | 27 ++++++++++++++ components/Current/Header/MainMenu/index.tsx | 20 ++++++----- .../Header/MainMenu/mainMenu.module.css | 6 +++- components/Current/Header/TopMenu/index.tsx | 36 ++++++++++++++----- .../Current/Header/TopMenu/topMenu.module.css | 24 ++++++++++--- 8 files changed, 95 insertions(+), 30 deletions(-) create mode 100644 components/Current/Header/LoginButton.tsx diff --git a/components/Current/Header/LanguageSwitcher/Desktop/desktop.module.css b/components/Current/Header/LanguageSwitcher/Desktop/desktop.module.css index adaf898fb..306a09436 100644 --- a/components/Current/Header/LanguageSwitcher/Desktop/desktop.module.css +++ b/components/Current/Header/LanguageSwitcher/Desktop/desktop.module.css @@ -106,7 +106,7 @@ text-decoration: none; } -@media (min-width: 950px) { +@media (min-width: 1366px) { .desktop { display: block; } diff --git a/components/Current/Header/LanguageSwitcher/Mobile/index.tsx b/components/Current/Header/LanguageSwitcher/Mobile/index.tsx index 68ff766c8..5110f9a67 100644 --- a/components/Current/Header/LanguageSwitcher/Mobile/index.tsx +++ b/components/Current/Header/LanguageSwitcher/Mobile/index.tsx @@ -19,11 +19,7 @@ export default function Mobile({ const urlKeys = Object.keys(urls) if (urlKeys.length === 1 && urlKeys[0] === currentLanguage) { - return ( -
- {languages[currentLanguage]} -
- ) + return
{languages[currentLanguage]}
} return ( diff --git a/components/Current/Header/LanguageSwitcher/Mobile/mobile.module.css b/components/Current/Header/LanguageSwitcher/Mobile/mobile.module.css index 08f31defb..bbc65f86a 100644 --- a/components/Current/Header/LanguageSwitcher/Mobile/mobile.module.css +++ b/components/Current/Header/LanguageSwitcher/Mobile/mobile.module.css @@ -67,8 +67,8 @@ text-decoration: none; } -@media (min-width: 950px) { +@media (min-width: 1366px) { .mobile { display: none; } -} \ No newline at end of file +} diff --git a/components/Current/Header/LoginButton.tsx b/components/Current/Header/LoginButton.tsx new file mode 100644 index 000000000..0ab6bb481 --- /dev/null +++ b/components/Current/Header/LoginButton.tsx @@ -0,0 +1,27 @@ +"use client" + +import { usePathname } from "next/navigation" +import { useIntl } from "react-intl" + +import { login } from "@/constants/routes/handleAuth" + +import Link from "@/components/TempDesignSystem/Link" + +import { LangParams } from "@/types/params" + +export default function LoginButton({ + className, + lang, +}: LangParams & { className: string }) { + const { formatMessage } = useIntl() + const pathName = usePathname() + + return ( + + {formatMessage({ id: "Log in" })} + + ) +} diff --git a/components/Current/Header/MainMenu/index.tsx b/components/Current/Header/MainMenu/index.tsx index 086631277..6bd6a338b 100644 --- a/components/Current/Header/MainMenu/index.tsx +++ b/components/Current/Header/MainMenu/index.tsx @@ -1,8 +1,7 @@ "use client" -import { useState } from "react" import { useIntl } from "react-intl" -import { login } from "@/constants/routes/handleAuth" +import { logout } from "@/constants/routes/handleAuth" import { myPages } from "@/constants/routes/myPages" import useDropdownStore from "@/stores/main-menu" @@ -11,6 +10,7 @@ import Avatar from "@/components/MyPages/Avatar" import Link from "@/components/TempDesignSystem/Link" import BookingButton from "../BookingButton" +import LoginButton from "../LoginButton" import styles from "./mainMenu.module.css" @@ -103,12 +103,10 @@ export function MainMenu({ />
  • - - {intl.formatMessage({ id: "Log in" })} - + lang={lang} + />
  • )} @@ -141,10 +139,16 @@ export function MainMenu({ ))} - {languageSwitcher ? (
  • {languageSwitcher}
  • ) : null} + {!!user ? ( +
  • + + {intl.formatMessage({ id: "Log out" })} + +
  • + ) : null}
    diff --git a/components/Current/Header/MainMenu/mainMenu.module.css b/components/Current/Header/MainMenu/mainMenu.module.css index ebfdd8197..f37f50fc3 100644 --- a/components/Current/Header/MainMenu/mainMenu.module.css +++ b/components/Current/Header/MainMenu/mainMenu.module.css @@ -219,10 +219,14 @@ padding: 5px 0; } +.mobileLi.logout { + padding: 0; +} + .mobileLink { color: #000; display: block; - font-family: Helvetica; + font-family: Helvetica !important; font-size: 14px; text-decoration: none; } diff --git a/components/Current/Header/TopMenu/index.tsx b/components/Current/Header/TopMenu/index.tsx index 25622e29f..a845d72b0 100644 --- a/components/Current/Header/TopMenu/index.tsx +++ b/components/Current/Header/TopMenu/index.tsx @@ -1,11 +1,20 @@ -import { login, logout } from "@/constants/routes/handleAuth" +import { logout } from "@/constants/routes/handleAuth" +import { serverClient } from "@/lib/trpc/server" import { auth } from "@/auth" +import Link from "@/components/TempDesignSystem/Link" +import { getIntl } from "@/i18n" + +import LoginButton from "../LoginButton" import styles from "./topMenu.module.css" import type { TopMenuProps } from "@/types/components/current/header/topMenu" +function capitalize(str: string) { + return str.charAt(0).toUpperCase().toUpperCase() + str.slice(1).toLowerCase() +} + export default async function TopMenu({ frontpageLinkText, homeHref, @@ -13,7 +22,9 @@ export default async function TopMenu({ languageSwitcher, lang, }: TopMenuProps) { + const { formatMessage } = await getIntl() const session = await auth() + const user = session ? await serverClient().user.get() : null return (
    @@ -34,15 +45,24 @@ export default async function TopMenu({ ))} -
  • +
  • {session ? ( - - Log out - + <> + {user ? ( + + {capitalize(user.firstName)} + + ) : null} +
    + + {formatMessage({ id: "Log out" })} + + ) : ( - - Log in - + )}
  • diff --git a/components/Current/Header/TopMenu/topMenu.module.css b/components/Current/Header/TopMenu/topMenu.module.css index 1080cbfdc..67be14a58 100644 --- a/components/Current/Header/TopMenu/topMenu.module.css +++ b/components/Current/Header/TopMenu/topMenu.module.css @@ -78,9 +78,14 @@ padding-left: 30px; padding-right: 30px; color: #000; + font-family: + Helvetica Neue, + Helvetica, + Arial, + sans-serif !important; } - .loginContainer { + .sessionContainer { margin-left: 10px; background-color: #f3f2f1; height: 100%; @@ -88,15 +93,19 @@ align-items: center; } - .loginLink { - padding-left: 30px; - padding-right: 30px; + .loginSeparator { + height: 15px; + border-right: 1px solid #000; + } + + .sessionLink { + padding: 4px 15px; color: #000; font-family: Helvetica Neue, Helvetica, Arial, - sans-serif; + sans-serif !important; font-size: 13px; font-weight: 400; -webkit-font-smoothing: antialiased; @@ -106,4 +115,9 @@ text-align: center; text-decoration: none; } + + .sessionLink.loginLink { + padding-left: 30px; + padding-right: 30px; + } }