diff --git a/public/images/403.svg b/public/images/403.svg
new file mode 100644
index 0000000..d5ab3a5
--- /dev/null
+++ b/public/images/403.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/images/404.svg b/public/images/404.svg
new file mode 100644
index 0000000..2383041
--- /dev/null
+++ b/public/images/404.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/images/500.svg b/public/images/500.svg
new file mode 100644
index 0000000..c7629f3
--- /dev/null
+++ b/public/images/500.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/locales/fa/app.json b/public/locales/fa/app.json
index 59c93f7..9da4be5 100644
--- a/public/locales/fa/app.json
+++ b/public/locales/fa/app.json
@@ -20,7 +20,10 @@
},
"Titles": {
"title_login_page": "صفحه ورود",
- "title_login_expert_page": "ورود کارشناس"
+ "title_login_expert_page": "ورود کارشناس",
+ "title_custom_404": "صفحه یافت نشد",
+ "title_custom_403": "عدم دسترسی",
+ "title_custom_500": "خطای سرور"
},
"sidebar": {
"dashboard": "داشبورد",
@@ -58,6 +61,14 @@
"link_routing_main_page": "صفحه اصلی",
"error_message_required": "اجباری!"
},
+ "ErrorPage": {
+ "custom_404": "صفحه مورد نظر یافت نشد | 404",
+ "custom_500": "دسترسی به سامانه امکانپذیر نمی باشد دقایقی دیگر تلاش نمائید | 500",
+ "custom_403": "شما دسترسی به این بخش را ندارید | 403",
+ "link_routing_back_to": "بازگشت به",
+ "link_routing_previuos_page": "صفحه قبل",
+ "link_routing_main_page": "صفحه اصلی"
+ },
"Dashboard": {
"dashboard_page": "داشبورد",
"passenger_boss_page": "رئیس مسافر",
diff --git a/src/components/errors/403.jsx b/src/components/errors/403.jsx
new file mode 100644
index 0000000..cf46e41
--- /dev/null
+++ b/src/components/errors/403.jsx
@@ -0,0 +1,48 @@
+import CenterLayout from "@/layouts/CenterLayout";
+import FullPageLayout from "@/layouts/FullPageLayout";
+import {Box, Button, Container, Stack, Typography} from "@mui/material";
+import {NextLinkComposed} from "@/core/components/LinkRouting";
+import {useTranslations} from "next-intl";
+import Image from "next/image";
+import TitlePage from "@/core/components/TitlePage";
+
+const UnAuthorizedComponent = () => {
+ const t = useTranslations();
+
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+ {t("ErrorPage.custom_403")}
+
+
+
+
+
+
+ >
+ );
+};
+
+export default UnAuthorizedComponent;
diff --git a/src/components/errors/404.jsx b/src/components/errors/404.jsx
new file mode 100644
index 0000000..e0888b3
--- /dev/null
+++ b/src/components/errors/404.jsx
@@ -0,0 +1,48 @@
+import CenterLayout from "@/layouts/CenterLayout";
+import FullPageLayout from "@/layouts/FullPageLayout";
+import {Box, Button, Container, Stack, Typography} from "@mui/material";
+import {NextLinkComposed} from "@/core/components/LinkRouting";
+import {useTranslations} from "next-intl";
+import Image from "next/image";
+import TitlePage from "@/core/components/TitlePage";
+
+const NotFoundComponent = () => {
+ const t = useTranslations();
+
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+ {t("ErrorPage.custom_404")}
+
+
+
+
+
+
+ >
+ );
+};
+
+export default NotFoundComponent;
diff --git a/src/components/errors/500.jsx b/src/components/errors/500.jsx
new file mode 100644
index 0000000..10e9d12
--- /dev/null
+++ b/src/components/errors/500.jsx
@@ -0,0 +1,48 @@
+import CenterLayout from "@/layouts/CenterLayout";
+import FullPageLayout from "@/layouts/FullPageLayout";
+import {Box, Button, Container, Stack, Typography} from "@mui/material";
+import {NextLinkComposed} from "@/core/components/LinkRouting";
+import {useTranslations} from "next-intl";
+import Image from "next/image";
+import TitlePage from "@/core/components/TitlePage";
+
+const ServerErrorComponent = () => {
+ const t = useTranslations();
+
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+ {t("ErrorPage.custom_500")}
+
+
+
+
+
+
+ >
+ );
+};
+
+export default ServerErrorComponent;
diff --git a/src/pages/403.jsx b/src/pages/403.jsx
new file mode 100644
index 0000000..15ba915
--- /dev/null
+++ b/src/pages/403.jsx
@@ -0,0 +1,24 @@
+import {useEffect, useState} from "react";
+import {useRouter} from "next/router";
+import {NextIntlProvider} from "next-intl";
+import UnAuthorizedComponent from "@/components/errors/403";
+
+export default function Custom404() {
+ const router = useRouter()
+ const [messages, setMessages] = useState(null)
+ useEffect(() => {
+ const fetch = async () => {
+ const tempMessages = (await import(`&/locales/${router.locale}/app.json`)).default
+ setMessages(tempMessages)
+ }
+ fetch()
+ }, []);
+
+ if (!messages) return
+
+ return (
+
+
+
+ );
+}
diff --git a/src/pages/404.jsx b/src/pages/404.jsx
new file mode 100644
index 0000000..26de038
--- /dev/null
+++ b/src/pages/404.jsx
@@ -0,0 +1,25 @@
+import {useEffect, useState} from "react";
+import {useRouter} from "next/router";
+import {NextIntlProvider} from "next-intl";
+import NotFoundComponent from "@/components/errors/404";
+
+export default function Custom404() {
+ const router = useRouter()
+ const [messages, setMessages] = useState(null)
+ useEffect(() => {
+
+ const fetch = async () => {
+ const tempMessages = (await import(`&/locales/${router.locale}/app.json`)).default
+ setMessages(tempMessages)
+ }
+ fetch()
+ }, []);
+
+ if (!messages) return
+
+ return (
+
+
+
+ );
+}
diff --git a/src/pages/500.jsx b/src/pages/500.jsx
new file mode 100644
index 0000000..4b85bc2
--- /dev/null
+++ b/src/pages/500.jsx
@@ -0,0 +1,24 @@
+import {useEffect, useState} from "react";
+import {useRouter} from "next/router";
+import {NextIntlProvider} from "next-intl";
+import ServerErrorComponent from "@/components/errors/500";
+
+export default function Custom500() {
+ const router = useRouter()
+ const [messages, setMessages] = useState(null)
+ useEffect(() => {
+ const fetch = async () => {
+ const tempMessages = (await import(`&/locales/${router.locale}/app.json`)).default
+ setMessages(tempMessages)
+ }
+ fetch()
+ }, []);
+
+ if (!messages) return
+
+ return (
+
+
+
+ );
+}
diff --git a/src/pages/_app.jsx b/src/pages/_app.jsx
index 85b03cd..20615ba 100644
--- a/src/pages/_app.jsx
+++ b/src/pages/_app.jsx
@@ -13,9 +13,9 @@ const App = ({Component, pageProps}) => {
<>
-
+
-
+ {pageProps.message ? : ''}