diff --git a/src/app/[locale]/page.tsx b/src/app/[locale]/page.tsx index 2e5af2f..22415e3 100644 --- a/src/app/[locale]/page.tsx +++ b/src/app/[locale]/page.tsx @@ -1,4 +1,5 @@ import Header from '@/components/layout/header'; +import ModalLanguageSelector from '@/components/layout/languageModal'; import AboutTopInfo from '@/components/pages/about/TopInfo'; import HomePageBlog from '@/components/pages/home/HomePageBlog'; import HomeStorySection from '@/components/pages/home/HomeStorySection'; @@ -24,6 +25,7 @@ export default async function Home({ params }: { params: IPageParams }) { const t = await getTranslations({ locale }); return (
+
diff --git a/src/components/layout/languageModal/index.tsx b/src/components/layout/languageModal/index.tsx new file mode 100644 index 0000000..b5d5c27 --- /dev/null +++ b/src/components/layout/languageModal/index.tsx @@ -0,0 +1,74 @@ +'use client'; + +import { useEffect, useState } from 'react'; +import { TLocales } from '@/models/layout'; +import Button, { IconButton } from '@/components/uikit/button'; +import images from '@/assets/images/images'; +import Image from 'next/image'; +import { Icon } from '@/components/uikit/icons'; + +const languages = [ + { + title: 'EN', + image: images.langEn, + locale: 'en', + }, + { + title: 'FA', + image: images.langFa, + locale: 'fa', + }, +]; + +export default function ModalLanguageSelector() { + const [showModal, setShowModal] = useState(false); + + useEffect(() => { + const alreadySelected = localStorage.getItem('selectedLocale'); + if (!alreadySelected) { + setShowModal(true); + } + }, []); + + const handleCancel = () => { + setShowModal(false); + }; + + const changeLocale = (locale: TLocales) => { + localStorage.setItem('selectedLocale', locale); + const currentPath = window.location.pathname; + const newPath = currentPath.replace(/^\/(en|fa)/, ''); + window.location.pathname = `/${locale}${newPath}`; + }; + + if (!showModal) return null; + + return ( +
+
+ + + + +

+ Select Language +

+
+ {languages.map((lang) => ( + + ))} +
+
+
+ ); +}