diff --git a/next.config.js b/next.config.js
index db2124f..5c809d9 100644
--- a/next.config.js
+++ b/next.config.js
@@ -3,7 +3,7 @@
const nextConfig = {
reactStrictMode: true,
images: {
- domains: ['loan.witel.ir', /* other domains */],
+ domains: [process.env.NEXT_PUBLIC_BASE_URL],
},
i18n: {
defaultLocale: 'fa',
diff --git a/package.json b/package.json
index 5305c99..e44361c 100644
--- a/package.json
+++ b/package.json
@@ -16,6 +16,7 @@
"@mui/icons-material": "^5.11.16",
"@mui/lab": "^5.0.0-alpha.152",
"@mui/material": "^5.12.0",
+ "@witel/webapp-builder": "^1.0.2",
"axios": "^1.4.0",
"colord": "^2.9.3",
"eslint": "8.36.0",
diff --git a/public/global.scss b/public/global.scss
new file mode 100644
index 0000000..a4a3158
--- /dev/null
+++ b/public/global.scss
@@ -0,0 +1,2 @@
+@import "fontiran";
+@import 'react-toastify/dist/ReactToastify.css';
\ No newline at end of file
diff --git a/public/manifest.json b/public/manifest.json
index 32bacd5..1fd43e4 100644
--- a/public/manifest.json
+++ b/public/manifest.json
@@ -1,5 +1,5 @@
{
- "short_name": "Loan Facilities Dashboard",
+ "short_name": "Loan Facilities",
"name": "Loan Facilities User Dashboard",
"description": "Loan Facilities",
"version": "1.0.0",
diff --git a/src/components/dashboard/first/index.jsx b/src/components/dashboard/first/index.jsx
index 3d1c29e..0e3c800 100644
--- a/src/components/dashboard/first/index.jsx
+++ b/src/components/dashboard/first/index.jsx
@@ -1,7 +1,5 @@
-import DashboardLayouts from "@/layouts/dashboardLayouts";
-
const FirstComponent = () => {
- return ;
+ return <>>;
};
export default FirstComponent;
diff --git a/src/components/errors/403.jsx b/src/components/errors/403.jsx
index ce91443..8d410ed 100644
--- a/src/components/errors/403.jsx
+++ b/src/components/errors/403.jsx
@@ -1,10 +1,8 @@
-import CenterLayout from "@/layouts/CenterLayout";
-import FullPageLayout from "@/layouts/FullPageLayout";
import {Button, Typography} from "@mui/material";
-import {NextLinkComposed} from "@/core/components/LinkRouting";
import {useTranslations} from "next-intl";
import TitlePage from "@/core/components/TitlePage";
import Svg403 from "@/core/components/svgs/Svg403";
+import {CenterLayout, FullPageLayout, NextLinkComposed} from "@witel/webapp-builder";
const UnAuthorizedComponent = () => {
const t = useTranslations();
diff --git a/src/components/errors/404.jsx b/src/components/errors/404.jsx
index acfd418..15a394c 100644
--- a/src/components/errors/404.jsx
+++ b/src/components/errors/404.jsx
@@ -1,10 +1,8 @@
-import CenterLayout from "@/layouts/CenterLayout";
-import FullPageLayout from "@/layouts/FullPageLayout";
import {Button, Typography} from "@mui/material";
-import {NextLinkComposed} from "@/core/components/LinkRouting";
import {useTranslations} from "next-intl";
import TitlePage from "@/core/components/TitlePage";
import Svg404 from "@/core/components/svgs/Svg404";
+import {CenterLayout, FullPageLayout, NextLinkComposed} from "@witel/webapp-builder";
const NotFoundComponent = () => {
const t = useTranslations();
diff --git a/src/components/errors/500.jsx b/src/components/errors/500.jsx
index 5a19eda..5527a39 100644
--- a/src/components/errors/500.jsx
+++ b/src/components/errors/500.jsx
@@ -1,10 +1,8 @@
-import CenterLayout from "@/layouts/CenterLayout";
-import FullPageLayout from "@/layouts/FullPageLayout";
import {Button, Typography} from "@mui/material";
-import {NextLinkComposed} from "@/core/components/LinkRouting";
import {useTranslations} from "next-intl";
import TitlePage from "@/core/components/TitlePage";
import Svg500 from "@/core/components/svgs/Svg500";
+import {CenterLayout, FullPageLayout, NextLinkComposed} from "@witel/webapp-builder";
const ServerErrorComponent = () => {
const t = useTranslations();
diff --git a/src/components/first/FooterDetails.jsx b/src/components/first/FooterDetails.jsx
index bb8fe01..7c0eb2c 100644
--- a/src/components/first/FooterDetails.jsx
+++ b/src/components/first/FooterDetails.jsx
@@ -1,23 +1,24 @@
import {Box, Button, Container, Grid, Stack, Typography} from "@mui/material";
-import LinkRouting from "@/core/components/LinkRouting";
import {useTranslations} from "next-intl";
+import {LinkRouting} from "@witel/webapp-builder";
const FooterDetails = () => {
const t = useTranslations();
- return(
-
-
-
+ return (
+
+
+
-
+
{
- return(
+ return (
-
+
-
- } />
+
+ }/>
diff --git a/src/components/first/LoanCondition.jsx b/src/components/first/LoanCondition.jsx
index 31da825..5259679 100644
--- a/src/components/first/LoanCondition.jsx
+++ b/src/components/first/LoanCondition.jsx
@@ -1,39 +1,43 @@
-import {Box, Button, Chip, Container, Grid, Link, Stack, Typography} from "@mui/material";
+import {Box, Button, Chip, Container, Grid, Link, Typography} from "@mui/material";
import {useTranslations} from "next-intl";
import DownloadIcon from '@mui/icons-material/Download';
+
const LoanCondition = () => {
const t = useTranslations();
- return(
+ return (
-
-
+
+
تخصیص وام
-
+
قوانین دریافت وام
-
-
-
-
-
+
+
+
+
+
- این یکی از محبوبترین انواع وام در ایران است. دلیل این محبوبیت سرعت آن در پرداخت و سود بسیار پایین آن است.
+ این یکی از محبوبترین انواع وام در ایران است. دلیل این
+ محبوبیت سرعت آن در پرداخت و سود بسیار پایین آن است.
تنها یک شرط برای اخذ این وام وجود دارد و آن این است که باید به تازگی ازدواج کرده باشید.
- همچنین فقط یک بار از این وام میتوانید استفاده کنید. یعنی این وام فقط یک بار به هر فرد تعلق میگیرد.
- محل تامین بودجه آن حسابهای قرض الحسنهایست که افراد در بانکها باز میکنند و مرجع اصلی آرائه آن، بانک مرکزی است.
+ همچنین فقط یک بار از این وام میتوانید استفاده کنید. یعنی این وام فقط یک بار به هر فرد
+ تعلق میگیرد.
+ محل تامین بودجه آن حسابهای قرض الحسنهایست که افراد در بانکها باز میکنند و مرجع اصلی
+ آرائه آن، بانک مرکزی است.
-
+
- }>
+
- }
- />
- );
- return <>{children}>;
-};
-
-export default WithoutAuthMiddleware;
diff --git a/src/pages/_app.jsx b/src/pages/_app.jsx
index 0fc6a4a..a3be1c7 100644
--- a/src/pages/_app.jsx
+++ b/src/pages/_app.jsx
@@ -1,25 +1,41 @@
-import "&/fontiran.scss";
-import AppLayout from "@/layouts/AppLayout";
-import MuiLayout from "@/layouts/MuiLayout";
-import {LanguageProvider} from "@/lib/app/contexts/language";
-import {LoadingProvider} from "@/lib/app/contexts/loading";
-import {UserProvider} from "@/lib/app/contexts/user";
+import "&/global.scss";
import "moment/locale/fa";
+import {
+ AppLayout,
+ LanguageProvider,
+ LoadingProvider,
+ MuiLayout,
+ NetworkProvider,
+ ToastProvider,
+ UserProvider
+} from "@witel/webapp-builder";
+import {GET_USER} from "@/core/data/apiRoutes";
+import languageList from "@/core/data/languageList";
import {NextIntlProvider} from "next-intl";
+import themeRtl from "@/core/utils/theme-rtl";
import TitlePage from "@/core/components/TitlePage";
+import GlobalHead from "@/core/components/GlobalHead";
+import Layout from "@/layouts";
const App = ({Component, pageProps}) => {
return (
<>
-
-
-
-
+ data}>
+
+
+
{pageProps.messages ? : ''}
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/_document.jsx b/src/pages/_document.jsx
index 474e29b..6aaa82f 100644
--- a/src/pages/_document.jsx
+++ b/src/pages/_document.jsx
@@ -1,7 +1,8 @@
-import {createEmotionCacheRtl} from "@/core/utils/createEmotionCache";
import theme from "@/core/utils/theme";
import createEmotionServer from "@emotion/server/create-instance";
import Document, {Head, Html, Main, NextScript} from "next/document";
+import {createEmotionCacheLtr, createEmotionCacheRtl} from "@witel/webapp-builder";
+import languageList from "@/core/data/languageList";
export default function MyDocument(props) {
const {emotionStyleTags} = props;
@@ -26,10 +27,13 @@ export default function MyDocument(props) {
MyDocument.getInitialProps = async (ctx) => {
const originalRenderPage = ctx.renderPage;
let cache;
- switch (ctx.locale) {
- case "fa":
+ for (const lang of languageList) {
+ if (ctx.locale !== lang.key) continue;
+ if (lang.dir === 'rtl') {
cache = createEmotionCacheRtl();
- break;
+ } else {
+ cache = createEmotionCacheLtr();
+ }
}
const {extractCriticalToChunks} = createEmotionServer(cache);
diff --git a/src/pages/dashboard/index.jsx b/src/pages/dashboard/index.jsx
index 02c438a..265c8ac 100644
--- a/src/pages/dashboard/index.jsx
+++ b/src/pages/dashboard/index.jsx
@@ -1,12 +1,9 @@
import FirstComponent from "@/components/dashboard/first";
-import WithAuthMiddleware from "@/middlewares/WithAuth";
import {parse} from "next-useragent";
export default function Dashboard() {
return (
-
-
-
+
);
}
@@ -17,6 +14,8 @@ export async function getServerSideProps({req, locale}) {
messages: (await import(`&/locales/${locale}/app.json`)).default,
title: "Dashboard.dashboard_page",
isBot,
+ locale,
+ layout: {name: 'DashboardLayout'}
},
};
}
diff --git a/src/pages/dashboard/navgan/add-request-loan/index.jsx b/src/pages/dashboard/navgan/add-request-loan/index.jsx
index bd8a442..5af141c 100644
--- a/src/pages/dashboard/navgan/add-request-loan/index.jsx
+++ b/src/pages/dashboard/navgan/add-request-loan/index.jsx
@@ -1,16 +1,9 @@
-import WithAuthMiddleware from "@/middlewares/WithAuth";
import {parse} from "next-useragent";
-import UserTypeMiddleware from "@/middlewares/UserType";
import LoanRequestComponent from "@/components/dashboard/navgan/add-request-loan";
-const user_type = 1;
export default function AddLoanRequest() {
return (
-
-
-
-
-
+
);
}
@@ -21,6 +14,8 @@ export async function getServerSideProps({req, locale}) {
messages: (await import(`&/locales/${locale}/app.json`)).default,
title: "LoanRequest.loan_request_page",
isBot,
+ locale,
+ layout: {name: 'DashboardLayout'}
},
};
}
diff --git a/src/pages/dashboard/navgan/followUp-loan/index.jsx b/src/pages/dashboard/navgan/followUp-loan/index.jsx
index 52f0271..1476d5a 100644
--- a/src/pages/dashboard/navgan/followUp-loan/index.jsx
+++ b/src/pages/dashboard/navgan/followUp-loan/index.jsx
@@ -1,16 +1,9 @@
-import WithAuthMiddleware from "@/middlewares/WithAuth";
import {parse} from "next-useragent";
-import UserTypeMiddleware from "@/middlewares/UserType";
import LoanFollowUpComponent from "@/components/dashboard/navgan/followUp-loan";
-const user_type = 1;
export default function FollowUpLoan() {
return (
-
-
-
-
-
+
);
}
@@ -21,6 +14,8 @@ export async function getServerSideProps({req, locale}) {
messages: (await import(`&/locales/${locale}/app.json`)).default,
title: "LoanRequest.loan_request_page",
isBot,
+ locale,
+ layout: {name: 'DashboardLayout'}
},
};
}
diff --git a/src/pages/dashboard/refahi/add-request-loan/index.jsx b/src/pages/dashboard/refahi/add-request-loan/index.jsx
deleted file mode 100644
index b4575e9..0000000
--- a/src/pages/dashboard/refahi/add-request-loan/index.jsx
+++ /dev/null
@@ -1,24 +0,0 @@
-import WithAuthMiddleware from "@/middlewares/WithAuth";
-import {parse} from "next-useragent";
-
-const user_type = 2;
-export default function AddLoanRequest() {
- return (
-
- {/**/}
- {/* */}
- {/**/}
-
- );
-}
-
-export async function getServerSideProps({req, locale}) {
- const {isBot} = parse(req.headers["user-agent"]);
- return {
- props: {
- messages: (await import(`&/locales/${locale}/app.json`)).default,
- title: "LoanRequest.loan_request_page",
- isBot,
- },
- };
-}
diff --git a/src/pages/dashboard/refahi/edit-request-loan/[id].jsx b/src/pages/dashboard/refahi/edit-request-loan/[id].jsx
deleted file mode 100644
index f6b72d5..0000000
--- a/src/pages/dashboard/refahi/edit-request-loan/[id].jsx
+++ /dev/null
@@ -1,24 +0,0 @@
-import WithAuthMiddleware from "@/middlewares/WithAuth";
-import {parse} from "next-useragent";
-
-const user_type = 2;
-export default function EditLoanRequest() {
- return (
-
- {/**/}
- {/* */}
- {/**/}
-
- );
-}
-
-export async function getServerSideProps({req, locale}) {
- const {isBot} = parse(req.headers["user-agent"]);
- return {
- props: {
- messages: (await import(`&/locales/${locale}/app.json`)).default,
- title: "EditLoanRequest.edit_loan_request_page",
- isBot,
- },
- };
-}
diff --git a/src/pages/dashboard/refahi/followUp-loan/index.jsx b/src/pages/dashboard/refahi/followUp-loan/index.jsx
deleted file mode 100644
index f679299..0000000
--- a/src/pages/dashboard/refahi/followUp-loan/index.jsx
+++ /dev/null
@@ -1,24 +0,0 @@
-import WithAuthMiddleware from "@/middlewares/WithAuth";
-import {parse} from "next-useragent";
-
-const user_type = 2;
-export default function FollowUpLoan() {
- return (
-
- {/**/}
- {/* */}
- {/**/}
-
- );
-}
-
-export async function getServerSideProps({req, locale}) {
- const {isBot} = parse(req.headers["user-agent"]);
- return {
- props: {
- messages: (await import(`&/locales/${locale}/app.json`)).default,
- title: "LoanFollowUp.loan_follow_up_page",
- isBot,
- },
- };
-}
diff --git a/src/pages/login.jsx b/src/pages/login.jsx
index 5cac2bc..63e88c7 100644
--- a/src/pages/login.jsx
+++ b/src/pages/login.jsx
@@ -1,10 +1,10 @@
import LoginComponent from "@/components/login";
-import WithoutAuthMiddleware from "@/middlewares/WithoutAuth";
import {parse} from "next-useragent";
+import {WithoutAuthMiddleware} from "@witel/webapp-builder";
export default function Login() {
return (
-
+
);
diff --git a/src/pages/register/index.jsx b/src/pages/register/index.jsx
index 6d8d4d6..3f078d7 100644
--- a/src/pages/register/index.jsx
+++ b/src/pages/register/index.jsx
@@ -1,10 +1,10 @@
import RegisterComponent from "@/components/register";
-import WithoutAuthMiddleware from "@/middlewares/WithoutAuth";
import {parse} from "next-useragent";
+import {WithoutAuthMiddleware} from "@witel/webapp-builder";
export default function Register() {
return (
-
+
);