From 6ad3a48adb660aca0b0fe1a1b23aaf3841cc500b Mon Sep 17 00:00:00 2001 From: parsa aghaei Date: Mon, 21 Oct 2024 10:31:03 +0330 Subject: [PATCH] blog mobileMenu updated and internationalization added --- .../blog/components/header/header.tsx | 11 +- .../components/mobile-menu/mobileMenu.tsx | 110 +++++++++++------- .../selectLanguage/selectLanguage.tsx | 64 ++++++++++ 3 files changed, 145 insertions(+), 40 deletions(-) create mode 100644 src/app/(routes)/blog/components/selectLanguage/selectLanguage.tsx diff --git a/src/app/(routes)/blog/components/header/header.tsx b/src/app/(routes)/blog/components/header/header.tsx index fff0a21..8805e37 100644 --- a/src/app/(routes)/blog/components/header/header.tsx +++ b/src/app/(routes)/blog/components/header/header.tsx @@ -4,6 +4,8 @@ import Button from "../button/button"; import { NavLinks } from "./navLinks"; import Link from "next/link"; import BurgerButton from "../burger-button/burgerButton"; +import { cookies } from "next/headers"; +import SelectLanguage from "../selectLanguage/selectLanguage"; export default function Header() { return ( @@ -19,7 +21,14 @@ export default function Header() { /> - +
+ + +
("en"); + useEffect(() => { + const locale = getCookie("selectedLocale") as string | null; + setSelectedLocale(locale); + }, [clicked]); + + const handleLocaleChange = (locale: string) => { + setCookie("selectedLocale", locale); + router.refresh(); + setClicked(false); + }; + return (
- +
+ + {selectedLocale === "fa" ? ( +

handleLocaleChange("en")} + > + English +

+ ) : ( +

handleLocaleChange("fa")} + > + فارسی +

+ )} +
); diff --git a/src/app/(routes)/blog/components/selectLanguage/selectLanguage.tsx b/src/app/(routes)/blog/components/selectLanguage/selectLanguage.tsx new file mode 100644 index 0000000..21a024b --- /dev/null +++ b/src/app/(routes)/blog/components/selectLanguage/selectLanguage.tsx @@ -0,0 +1,64 @@ +"use client"; + +import { setCookie } from "cookies-next"; +import { LocaleCookieType } from "@/app/types/types"; +import { useRouter } from "next/navigation"; +import { useState } from "react"; + +interface SelectLanguageProps { + selectedLocale: LocaleCookieType | undefined; + defaultLocale: LocaleCookieType | undefined; + className: string; +} + +export default function SelectLanguage({ + selectedLocale, + defaultLocale, + className, +}: SelectLanguageProps) { + const router = useRouter(); + const [isOpen, setisOpen] = useState(false); + + return ( +
+ {selectedLocale ? ( +

setisOpen(!isOpen)} + className="mx-2 mb-[5px] cursor-pointer select-none whitespace-nowrap border-b-2 border-blog-red px-2 py-[10px] pb-[5px] text-[16px] font-[600] text-blog-text-hover" + > + {selectedLocale?.value} +

+ ) : ( +

setisOpen(!isOpen)} + className="mx-2 mb-[5px] cursor-pointer select-none whitespace-nowrap px-2 py-[10px] pb-[5px] text-[16px] font-[600] hover:text-blog-red" + > + {defaultLocale?.value} +

+ )} + +
    +
  • { + setCookie("selectedLocale", "fa"), router.refresh(); + setisOpen(false); + }} + > + فارسی +
  • +
  • { + setCookie("selectedLocale", "en"), router.refresh(); + setisOpen(false); + }} + > + English +
  • +
+
+ ); +}