diff --git a/src/app/[name]/about/AboutPage.tsx b/src/app/[name]/about/AboutPage.tsx index 625dc81..7823ab7 100644 --- a/src/app/[name]/about/AboutPage.tsx +++ b/src/app/[name]/about/AboutPage.tsx @@ -1,12 +1,13 @@ 'use client' import AnimatedBottomSheet from '@/components/bottomsheet/AnimatedBottomSheet'; import EqualizerIcon from '@/components/icons/EqualizerIcon'; +import TelegramIcon from '@/components/icons/TelegramIcon'; import TabContainer from '@/components/tab/TabContainer'; import { TabHeader } from '@/components/tab/TabHeader'; import Comment from '@/components/utils/Comment'; import RateBar from '@/components/utils/RateBar'; import { AboutDataModel } from '@/lib/api/info/getAboutData'; -import { ArrowDown2, CallCalling, Clock, Gallery, InfoCircle, Instagram, Location, MouseCircle, Star1, Whatsapp } from 'iconsax-react'; +import { ArrowDown2, CallCalling, Clock, Gallery, InfoCircle, Instagram, Location, Star1, Whatsapp } from 'iconsax-react'; import { useQueryState } from 'next-usequerystate'; import Image from 'next/image'; import React, { useCallback, useState } from 'react' @@ -74,7 +75,7 @@ function AboutPage({ data }: Readonly<{ data: AboutDataModel; }>) { } {data.contacts.telegram && - + } {data.contacts.whatsapp && diff --git a/src/components/icons/TelegramIcon.tsx b/src/components/icons/TelegramIcon.tsx new file mode 100644 index 0000000..189acac --- /dev/null +++ b/src/components/icons/TelegramIcon.tsx @@ -0,0 +1,29 @@ +import React from 'react'; + +const TelegramIcon: React.FC> = (props) => ( + + + + +); + +export default TelegramIcon; diff --git a/src/components/menu/SideMenu.tsx b/src/components/menu/SideMenu.tsx index 4730f17..209e497 100644 --- a/src/components/menu/SideMenu.tsx +++ b/src/components/menu/SideMenu.tsx @@ -21,6 +21,8 @@ import { useAuthStore } from '@/zustand/authStore'; import { useParams, usePathname, useRouter } from 'next/navigation'; import clsx from 'clsx'; import { useTranslation } from 'react-i18next'; +import { DocumentCopy, Instagram, Share, Whatsapp } from 'iconsax-react'; +import TelegramIcon from '../icons/TelegramIcon'; type MenuItemType = { href: string | undefined; @@ -37,7 +39,7 @@ const menuItems: Array> = [ { href: 'orders', title: 'Orders', icon: }, { href: 'transactions', title: 'Transactions', icon: }, { href: '/', title: 'Games', icon: }, - { href: 'my-services', title: 'ShareWithFriends', icon: }, + { href: '?share', title: 'ShareWithFriends', icon: }, { href: 'services', title: 'ReportProblem', icon: }, { href: 'invoices', title: 'InstallApp', icon: } ], @@ -58,6 +60,7 @@ type Props = { function SideMenu({ menuState, toggleMenuState, nightModeState, togglenightModeState }: Props) { const menuStateMemo = useMemo(() => menuState, [menuState]); const [logoutModalVisible, setLogoutModalVisible] = useState(false); + const [shareModalVisible, setShareModalVisible] = useState(false); const closeRef = useRef(null); const userIsAuthenticated = true; // useAuthStore((state) => state.isAuthenticated); const authLogout = useAuthStore((state) => state.logout); @@ -71,6 +74,9 @@ function SideMenu({ menuState, toggleMenuState, nightModeState, togglenightModeS const { t: tLogoutModal } = useTranslation('common', { keyPrefix: 'LogoutModal' }); + const { t: tShareModal } = useTranslation('common', { + keyPrefix: 'ShareModal' + }); const variants: Variants = { hidden: { x: '100%', transition: { duration: 0.1, ease: 'easeInOut' } }, @@ -89,6 +95,12 @@ function SideMenu({ menuState, toggleMenuState, nightModeState, togglenightModeS setLogoutModalVisible((state) => !state); }; + const toggleShareModalVisiblity = (e?: React.MouseEvent) => { + e?.preventDefault(); + e?.stopPropagation(); + setShareModalVisible((state) => !state); + }; + const onLogout = (e: React.MouseEvent | null) => { if (!e) return; if (userIsAuthenticated) { @@ -97,7 +109,10 @@ function SideMenu({ menuState, toggleMenuState, nightModeState, togglenightModeS } }; - const hrefOnClicks = [{ href: '?logout', handler: toggleLogoutModalVisiblity }]; + const hrefOnClicks = [ + { href: '?logout', handler: toggleLogoutModalVisiblity }, + { href: '?share', handler: toggleShareModalVisiblity } + ]; return ( <> @@ -137,6 +152,11 @@ function SideMenu({ menuState, toggleMenuState, nightModeState, togglenightModeS className={clsx(isActive && 'text-foreground!')} href={item.href ?? ''} title={tMenu(item.title)} + onClick={ + typeof item.href === 'string' + ? hrefOnClicks.find((i) => i.href === item.href)?.handler + : undefined + } icon={ {item.icon} @@ -203,6 +223,45 @@ function SideMenu({ menuState, toggleMenuState, nightModeState, togglenightModeS + + {/* Share modal */} + +
+ +

+ + {tShareModal('Heading')} +

+

+ {tShareModal('Description')} +

+ + + +
+
+ + Telegram +
+
+ + WhatsApp +
+
+ + Instagram +
+
+
+
+
); } diff --git a/src/locales/fa/common.json b/src/locales/fa/common.json index 54b0657..b8f9158 100644 --- a/src/locales/fa/common.json +++ b/src/locales/fa/common.json @@ -29,6 +29,11 @@ "ButtonOk": "بله خارج می‌شوم", "ButtonCancel": "منصرف شدم" }, + "ShareModal": { + "Heading": "اشتراک گذاری", + "Description": "اپلیکیشن ما را با دوستان خود به اشتراک بگذارید!", + "ButtonCopy": "کپی کردن لینک" + }, "DeleteChatModal": { "Heading": "پاک کردن چت", "Description": "آیا از پاک کردن {count} چت اطمینان دارید؟",