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) {