diff --git a/locales/en/common.json b/locales/en/common.json index 80d4baee44..c237456b56 100644 --- a/locales/en/common.json +++ b/locales/en/common.json @@ -100,6 +100,7 @@ "bookmarked": "Bookmarked", "both": "Both", "cancel": "Cancel", + "change-theme": "Change Theme", "click-here": "Click here", "close": "Close", "command-bar": { @@ -158,6 +159,7 @@ }, "end-year-donate": "End 2024 with Sadaqah ❤️", "error": { + "language-change-failed": "Failed to change language. Please try again.", "MediaVersesRangeLimitExceeded": "You can only select up to {{limit}} verses at a time. Please select a smaller range.", "bookmark-sync": "Bookmark is out of sync.", "email-login-fail": "Failed to login with email. Please try again", @@ -259,6 +261,7 @@ "juz": "Juz", "language": "Language", "languages": "Languages", + "learn": "Learn", "learn-more": "Learn more", "learning-plans": "Learning Plans", "less": "Less", @@ -275,6 +278,7 @@ "mode": "Mode", "more": "More", "my-learning-plans": "My Learning Plans", + "my-quran": "My Quran", "navigate": "Navigate", "network": "Network", "new": "New!", @@ -327,6 +331,7 @@ "q-reflect": "QuranReflect", "quran-com": "Quran.com", "quran-radio": "Quran Radio", + "read": "Read", "reading-history": "Reading history", "reading-preference": { "reading": "Reading", @@ -366,6 +371,7 @@ }, "seconds": "Seconds", "see-new": "See What's New", + "select-language": "Select Language", "settings": { "no-tafsir-selected": "No tafsir selected", "no-translation-selected": "No translation selected", diff --git a/public/icons/about.svg b/public/icons/about.svg new file mode 100644 index 0000000000..7ba92dacf3 --- /dev/null +++ b/public/icons/about.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/public/icons/arrow-left.svg b/public/icons/arrow-left.svg new file mode 100644 index 0000000000..00ead5152d --- /dev/null +++ b/public/icons/arrow-left.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/public/icons/arrow-right.svg b/public/icons/arrow-right.svg new file mode 100644 index 0000000000..6059d606c9 --- /dev/null +++ b/public/icons/arrow-right.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/icons/school.svg b/public/icons/school.svg new file mode 100644 index 0000000000..b33cd62621 --- /dev/null +++ b/public/icons/school.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/icons/square-more.svg b/public/icons/square-more.svg new file mode 100644 index 0000000000..3a7ecbb5ff --- /dev/null +++ b/public/icons/square-more.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/components/AppContent/AppContent.module.scss b/src/components/AppContent/AppContent.module.scss new file mode 100644 index 0000000000..a3f6366d1e --- /dev/null +++ b/src/components/AppContent/AppContent.module.scss @@ -0,0 +1,22 @@ +.contentContainer { + position: relative; + transition: var(--transition-fast); + + &::before { + content: ''; + position: fixed; + inset: 0; + background-color: var(--color-background-backdrop); + opacity: 0; + pointer-events: none; + transition: var(--transition-fast); + z-index: var(--z-index-smaller-modal); + } + + &.dimmed { + &::before { + opacity: var(--opacity-50); + pointer-events: auto; + } + } +} diff --git a/src/components/AppContent/AppContent.tsx b/src/components/AppContent/AppContent.tsx index 1931355e2a..9fa5a64dfb 100644 --- a/src/components/AppContent/AppContent.tsx +++ b/src/components/AppContent/AppContent.tsx @@ -1,6 +1,10 @@ +import classNames from 'classnames'; import { useRouter } from 'next/router'; import { DefaultSeo } from 'next-seo'; import useTranslation from 'next-translate/useTranslation'; +import { useSelector } from 'react-redux'; + +import styles from './AppContent.module.scss'; import AudioPlayer from '@/components/AudioPlayer/AudioPlayer'; import AuthRedirects from '@/components/Auth/AuthRedirects'; @@ -10,6 +14,7 @@ import GlobalListeners from '@/components/GlobalListeners'; import Navbar from '@/components/Navbar/Navbar'; import Footer from '@/dls/Footer/Footer'; import useAuthData from '@/hooks/auth/useAuthData'; +import { selectIsNavigationDrawerOpen } from '@/redux/slices/navbar'; import { isAuthPage } from '@/utils/routes'; import { createSEOConfig } from '@/utils/seo'; @@ -24,6 +29,7 @@ function AppContent({ Component, pageProps }: AppContentProps) { const { t } = useTranslation('common'); const { userData } = useAuthData(); const isAuth = isAuthPage(router); + const isNavigationDrawerOpen = useSelector(selectIsNavigationDrawerOpen); return ( <> @@ -33,7 +39,15 @@ function AppContent({ Component, pageProps }: AppContentProps) { {!isAuth && } - +
+ +
{!isAuth &&