AH-dark 2 роки тому
батько
коміт
3ea4e1c1af
100 змінених файлів з 2598 додано та 1911 видалено
  1. 1 2
      .env
  2. 16 17
      .idea/codeStyles/Project.xml
  3. 1 0
      .idea/gfwservice-frontend.iml
  4. 1 0
      .idea/jsLibraryMappings.xml
  5. 16 0
      .idea/libraries/ts_external_references.xml
  6. 7 0
      .idea/prettier.xml
  7. 2 2
      .prettierrc
  8. 16 0
      index.html
  9. 120 32
      package.json
  10. 426 285
      pnpm-lock.yaml
  11. 9 7
      src/App.tsx
  12. 0 1
      src/_api/readme.txt
  13. 43 36
      src/components/@extended/Avatar.tsx
  14. 35 29
      src/components/@extended/Breadcrumbs.tsx
  15. 8 8
      src/components/@extended/Dot.tsx
  16. 52 49
      src/components/@extended/IconButton.tsx
  17. 105 105
      src/components/@extended/LoadingButton.tsx
  18. 13 13
      src/components/@extended/Snackbar.tsx
  19. 13 9
      src/components/Locales.tsx
  20. 37 25
      src/components/MainCard.tsx
  21. 7 7
      src/components/RTLLayout.tsx
  22. 3 3
      src/components/cards/skeleton/ProductPlaceholder.tsx
  23. 10 10
      src/components/cards/statistics/AnalyticEcommerce.tsx
  24. 7 7
      src/components/cards/statistics/AnalyticsDataCard.tsx
  25. 7 7
      src/components/logo/index.tsx
  26. 1 1
      src/config.ts
  27. 5 5
      src/contexts/ConfigContext.tsx
  28. 14 12
      src/contexts/FirebaseContext.tsx
  29. 3 3
      src/hooks/useAuth.ts
  30. 2 2
      src/hooks/useConfig.ts
  31. 34 11
      src/index.tsx
  32. 56 41
      src/layout/CommonLayout/FooterBlock.tsx
  33. 90 53
      src/layout/CommonLayout/Header.tsx
  34. 55 49
      src/layout/MainLayout/Drawer/DrawerContent/Navigation/NavCollapse.tsx
  35. 10 10
      src/layout/MainLayout/Drawer/DrawerContent/Navigation/NavGroup.tsx
  36. 37 37
      src/layout/MainLayout/Drawer/DrawerContent/Navigation/NavItem.tsx
  37. 7 7
      src/layout/MainLayout/Drawer/DrawerContent/Navigation/index.tsx
  38. 5 5
      src/layout/MainLayout/Drawer/DrawerContent/index.tsx
  39. 4 4
      src/layout/MainLayout/Drawer/DrawerHeader/index.tsx
  40. 14 14
      src/layout/MainLayout/Drawer/MiniDrawerStyled.ts
  41. 13 13
      src/layout/MainLayout/Drawer/index.tsx
  42. 6 6
      src/layout/MainLayout/Header/AppBarStyled.tsx
  43. 54 34
      src/layout/MainLayout/Header/HeaderContent/MegaMenuSection.tsx
  44. 34 34
      src/layout/MainLayout/Header/HeaderContent/Message.tsx
  45. 14 14
      src/layout/MainLayout/Header/HeaderContent/MobileSection.tsx
  46. 42 42
      src/layout/MainLayout/Header/HeaderContent/Notification.tsx
  47. 54 35
      src/layout/MainLayout/Header/HeaderContent/Profile/index.tsx
  48. 13 13
      src/layout/MainLayout/Header/index.tsx
  49. 26 18
      src/layout/MainLayout/index.tsx
  50. 2 2
      src/menu-items/index.tsx
  51. 17 17
      src/menu-items/other.tsx
  52. 10 10
      src/pages/auth/check-mail.tsx
  53. 3 3
      src/pages/auth/code-verification.tsx
  54. 13 8
      src/pages/auth/forgot-password.tsx
  55. 13 8
      src/pages/auth/login.tsx
  56. 13 8
      src/pages/auth/register.tsx
  57. 3 3
      src/pages/auth/reset-password.tsx
  58. 6 6
      src/pages/extra-pages/sample-page.tsx
  59. 19 11
      src/pages/maintenance/404.tsx
  60. 16 11
      src/pages/maintenance/500.tsx
  61. 21 14
      src/pages/maintenance/coming-soon.tsx
  62. 14 7
      src/pages/maintenance/under-construction.tsx
  63. 0 1
      src/react-app-env.d.ts
  64. 1 1
      src/reportWebVitals.ts
  65. 19 19
      src/routes/LoginRoutes.tsx
  66. 18 18
      src/routes/MainRoutes.tsx
  67. 5 5
      src/sections/auth/AuthCard.tsx
  68. 9 9
      src/sections/auth/AuthWrapper.tsx
  69. 17 13
      src/sections/auth/auth-forms/AuthCodeVerification.tsx
  70. 24 16
      src/sections/auth/auth-forms/AuthForgotPassword.tsx
  71. 33 21
      src/sections/auth/auth-forms/AuthLogin.tsx
  72. 34 26
      src/sections/auth/auth-forms/AuthRegister.tsx
  73. 36 28
      src/sections/auth/auth-forms/AuthResetPassword.tsx
  74. 12 12
      src/sections/auth/auth-forms/FirebaseSocial.tsx
  75. 0 5
      src/setupTests.ts
  76. 2 2
      src/store/reducers/auth.ts
  77. 5 5
      src/store/reducers/menu.ts
  78. 10 10
      src/store/reducers/snackbar.ts
  79. 9 9
      src/themes/index.tsx
  80. 23 23
      src/themes/overrides/Alert.ts
  81. 10 10
      src/themes/overrides/Badge.ts
  82. 71 71
      src/themes/overrides/Button.ts
  83. 42 37
      src/themes/overrides/Checkbox.tsx
  84. 29 29
      src/themes/overrides/Chip.ts
  85. 27 27
      src/themes/overrides/Fab.ts
  86. 18 18
      src/themes/overrides/OutlinedInput.ts
  87. 53 49
      src/themes/overrides/PaginationItem.ts
  88. 40 35
      src/themes/overrides/Radio.tsx
  89. 17 17
      src/themes/overrides/Slider.ts
  90. 42 30
      src/themes/palette.ts
  91. 4 4
      src/themes/shadows.tsx
  92. 4 4
      src/themes/theme/default.ts
  93. 20 20
      src/themes/theme/index.ts
  94. 38 16
      src/themes/theme/theme1.ts
  95. 38 16
      src/themes/theme/theme2.ts
  96. 38 16
      src/themes/theme/theme3.ts
  97. 38 16
      src/themes/theme/theme4.ts
  98. 38 16
      src/themes/theme/theme5.ts
  99. 38 16
      src/themes/theme/theme6.ts
  100. 38 16
      src/themes/theme/theme7.ts

+ 1 - 2
.env

@@ -1,2 +1 @@
-REACT_APP_VERSION = v1.2.0
-GENERATE_SOURCEMAP = false
+VITE_APP_VERSION = testing

+ 16 - 17
.idea/codeStyles/Project.xml

@@ -2,13 +2,11 @@
   <code_scheme name="Project" version="173">
   <code_scheme name="Project" version="173">
     <HTMLCodeStyleSettings>
     <HTMLCodeStyleSettings>
       <option name="HTML_SPACE_INSIDE_EMPTY_TAG" value="true" />
       <option name="HTML_SPACE_INSIDE_EMPTY_TAG" value="true" />
-      <option name="HTML_QUOTE_STYLE" value="Single" />
       <option name="HTML_ENFORCE_QUOTES" value="true" />
       <option name="HTML_ENFORCE_QUOTES" value="true" />
     </HTMLCodeStyleSettings>
     </HTMLCodeStyleSettings>
     <JSCodeStyleSettings version="0">
     <JSCodeStyleSettings version="0">
       <option name="FORCE_SEMICOLON_STYLE" value="true" />
       <option name="FORCE_SEMICOLON_STYLE" value="true" />
       <option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
       <option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
-      <option name="USE_DOUBLE_QUOTES" value="false" />
       <option name="FORCE_QUOTE_STYlE" value="true" />
       <option name="FORCE_QUOTE_STYlE" value="true" />
       <option name="ENFORCE_TRAILING_COMMA" value="Remove" />
       <option name="ENFORCE_TRAILING_COMMA" value="Remove" />
       <option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
       <option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
@@ -17,7 +15,6 @@
     <TypeScriptCodeStyleSettings version="0">
     <TypeScriptCodeStyleSettings version="0">
       <option name="FORCE_SEMICOLON_STYLE" value="true" />
       <option name="FORCE_SEMICOLON_STYLE" value="true" />
       <option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
       <option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
-      <option name="USE_DOUBLE_QUOTES" value="false" />
       <option name="FORCE_QUOTE_STYlE" value="true" />
       <option name="FORCE_QUOTE_STYlE" value="true" />
       <option name="ENFORCE_TRAILING_COMMA" value="Remove" />
       <option name="ENFORCE_TRAILING_COMMA" value="Remove" />
       <option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
       <option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
@@ -28,33 +25,35 @@
       <option name="INTERPOLATION_NEW_LINE_BEFORE_END_DELIMITER" value="false" />
       <option name="INTERPOLATION_NEW_LINE_BEFORE_END_DELIMITER" value="false" />
     </VueCodeStyleSettings>
     </VueCodeStyleSettings>
     <codeStyleSettings language="HTML">
     <codeStyleSettings language="HTML">
-      <option name="SOFT_MARGINS" value="140" />
+      <option name="SOFT_MARGINS" value="120" />
       <indentOptions>
       <indentOptions>
-        <option name="INDENT_SIZE" value="2" />
-        <option name="CONTINUATION_INDENT_SIZE" value="2" />
-        <option name="TAB_SIZE" value="2" />
+        <option name="INDENT_SIZE" value="5" />
+        <option name="CONTINUATION_INDENT_SIZE" value="5" />
+        <option name="TAB_SIZE" value="5" />
       </indentOptions>
       </indentOptions>
     </codeStyleSettings>
     </codeStyleSettings>
     <codeStyleSettings language="JavaScript">
     <codeStyleSettings language="JavaScript">
-      <option name="SOFT_MARGINS" value="140" />
+      <option name="SOFT_MARGINS" value="120" />
       <indentOptions>
       <indentOptions>
-        <option name="INDENT_SIZE" value="2" />
-        <option name="CONTINUATION_INDENT_SIZE" value="2" />
-        <option name="TAB_SIZE" value="2" />
+        <option name="INDENT_SIZE" value="5" />
+        <option name="CONTINUATION_INDENT_SIZE" value="5" />
+        <option name="TAB_SIZE" value="5" />
       </indentOptions>
       </indentOptions>
     </codeStyleSettings>
     </codeStyleSettings>
     <codeStyleSettings language="TypeScript">
     <codeStyleSettings language="TypeScript">
-      <option name="SOFT_MARGINS" value="140" />
+      <option name="SOFT_MARGINS" value="120" />
       <indentOptions>
       <indentOptions>
-        <option name="INDENT_SIZE" value="2" />
-        <option name="CONTINUATION_INDENT_SIZE" value="2" />
-        <option name="TAB_SIZE" value="2" />
+        <option name="INDENT_SIZE" value="5" />
+        <option name="CONTINUATION_INDENT_SIZE" value="5" />
+        <option name="TAB_SIZE" value="5" />
       </indentOptions>
       </indentOptions>
     </codeStyleSettings>
     </codeStyleSettings>
     <codeStyleSettings language="Vue">
     <codeStyleSettings language="Vue">
-      <option name="SOFT_MARGINS" value="140" />
+      <option name="SOFT_MARGINS" value="120" />
       <indentOptions>
       <indentOptions>
-        <option name="CONTINUATION_INDENT_SIZE" value="2" />
+        <option name="INDENT_SIZE" value="5" />
+        <option name="CONTINUATION_INDENT_SIZE" value="5" />
+        <option name="TAB_SIZE" value="5" />
       </indentOptions>
       </indentOptions>
     </codeStyleSettings>
     </codeStyleSettings>
   </code_scheme>
   </code_scheme>

+ 1 - 0
.idea/gfwservice-frontend.iml

@@ -8,5 +8,6 @@
     </content>
     </content>
     <orderEntry type="inheritedJdk" />
     <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />
     <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="ts-external-references" level="project" />
   </component>
   </component>
 </module>
 </module>

+ 1 - 0
.idea/jsLibraryMappings.xml

@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
 <project version="4">
   <component name="JavaScriptLibraryMappings">
   <component name="JavaScriptLibraryMappings">
+    <file url="PROJECT" libraries="{ts-external-references}" />
     <includedPredefinedLibrary name="Node.js Core" />
     <includedPredefinedLibrary name="Node.js Core" />
   </component>
   </component>
 </project>
 </project>

+ 16 - 0
.idea/libraries/ts_external_references.xml

@@ -0,0 +1,16 @@
+<component name="libraryTable">
+  <library name="ts-external-references" type="javaScript">
+    <properties>
+      <sourceFilesUrls>
+        <item url="file://$PROJECT_DIR$/node_modules/.pnpm/@types+node@17.0.19/node_modules/@types/node/index.d.ts" />
+        <item url="file://$PROJECT_DIR$/node_modules/.pnpm/@types+react@17.0.39/node_modules/@types/react/index.d.ts" />
+      </sourceFilesUrls>
+    </properties>
+    <CLASSES>
+      <root url="file://$PROJECT_DIR$/node_modules/.pnpm/@types+node@17.0.19/node_modules/@types/node/index.d.ts" />
+      <root url="file://$PROJECT_DIR$/node_modules/.pnpm/@types+react@17.0.39/node_modules/@types/react/index.d.ts" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>

+ 7 - 0
.idea/prettier.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="PrettierConfiguration">
+    <option name="myRunOnSave" value="true" />
+    <option name="myRunOnReformat" value="true" />
+  </component>
+</project>

+ 2 - 2
.prettierrc

@@ -1,7 +1,7 @@
 {
 {
   "bracketSpacing": true,
   "bracketSpacing": true,
-  "printWidth": 140,
-  "singleQuote": true,
+  "printWidth": 120,
+  "singleQuote": false,
   "trailingComma": "none",
   "trailingComma": "none",
   "tabWidth": 2,
   "tabWidth": 2,
   "useTabs": false
   "useTabs": false

+ 16 - 0
index.html

@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html lang='en'>
+  <head>
+    <meta charset='utf-8' />
+    <link href='/favicon.svg' rel='icon' />
+    <meta content='width=device-width, initial-scale=1' name='viewport' />
+    <meta content='#000000' name='theme-color' />
+    <link href='/favicon.svg' rel='apple-touch-icon' />
+    <title>GFW Service</title>
+  </head>
+  <body>
+    <noscript>You need to enable JavaScript to run this app.</noscript>
+    <div id='root'></div>
+    <script src='/src/index.tsx' type='module'></script>
+  </body>
+</html>

+ 120 - 32
package.json

@@ -14,49 +14,108 @@
     "@mui/system": "^5.10.9",
     "@mui/system": "^5.10.9",
     "@mui/x-date-pickers": "^5.0.4",
     "@mui/x-date-pickers": "^5.0.4",
     "@reduxjs/toolkit": "^1.8.6",
     "@reduxjs/toolkit": "^1.8.6",
+    "@rollup/plugin-image": "^3.0.1",
+    "@vitejs/plugin-react": "^3.0.0",
+    "bfj": "^7.0.2",
+    "browserslist": "^4.18.1",
     "buffer": "^6.0.3",
     "buffer": "^6.0.3",
+    "camelcase": "^6.2.1",
+    "case-sensitive-paths-webpack-plugin": "^2.4.0",
     "crypto-browserify": "^3.12.0",
     "crypto-browserify": "^3.12.0",
+    "dotenv": "^10.0.0",
+    "dotenv-expand": "^5.1.0",
     "firebase": "^9.13.0",
     "firebase": "^9.13.0",
     "formik": "^2.2.9",
     "formik": "^2.2.9",
     "framer-motion": "^7.5.3",
     "framer-motion": "^7.5.3",
+    "fs-extra": "^10.0.0",
     "history": "^5.3.0",
     "history": "^5.3.0",
-    "lodash": "^4.17.21",
+    "identity-obj-proxy": "^3.0.0",
+    "lodash-es": "^4.17.21",
+    "mini-css-extract-plugin": "^2.4.5",
+    "postcss": "^8.4.4",
+    "postcss-flexbugs-fixes": "^5.0.2",
+    "postcss-normalize": "^10.0.1",
+    "postcss-preset-env": "^7.0.1",
     "process": "^0.11.10",
     "process": "^0.11.10",
+    "prompts": "^2.4.2",
     "react": "^18.2.0",
     "react": "^18.2.0",
+    "react-app-polyfill": "^3.0.0",
     "react-app-rewired": "^2.2.1",
     "react-app-rewired": "^2.2.1",
+    "react-dev-utils": "^12.0.1",
     "react-device-detect": "^2.2.2",
     "react-device-detect": "^2.2.2",
     "react-dom": "^18.2.0",
     "react-dom": "^18.2.0",
     "react-intl": "^6.2.0",
     "react-intl": "^6.2.0",
-    "react-redux": "^7.2.6",
+    "react-redux": "^8.0.5",
+    "react-refresh": "^0.11.0",
     "react-router": "^6.4.2",
     "react-router": "^6.4.2",
     "react-router-dom": "^6.4.2",
     "react-router-dom": "^6.4.2",
-    "react-scripts": "^5.0.1",
     "react-timer-hook": "^3.0.5",
     "react-timer-hook": "^3.0.5",
     "react18-input-otp": "^1.1.0",
     "react18-input-otp": "^1.1.0",
+    "redux": "^4.2.0",
+    "resize-observer-polyfill": "^1.5.1",
+    "resolve": "^1.20.0",
+    "semver": "^7.3.5",
     "simplebar": "^5.3.8",
     "simplebar": "^5.3.8",
     "simplebar-react": "^2.4.1",
     "simplebar-react": "^2.4.1",
     "stream-browserify": "^3.0.0",
     "stream-browserify": "^3.0.0",
     "stylis-plugin-rtl": "^2.1.1",
     "stylis-plugin-rtl": "^2.1.1",
+    "tailwindcss": "^3.0.2",
+    "terser": "^5.16.1",
     "util": "^0.12.5",
     "util": "^0.12.5",
     "uuid": "^9.0.0",
     "uuid": "^9.0.0",
+    "vite": "^4.0.1",
     "web-vitals": "^2.1.4",
     "web-vitals": "^2.1.4",
     "yup": "^0.32.11"
     "yup": "^0.32.11"
   },
   },
+  "devDependencies": {
+    "@babel/core": "^7.19.3",
+    "@babel/eslint-parser": "^7.19.1",
+    "@types/lodash": "^4.14.186",
+    "@types/react": "^18.0.26",
+    "@types/react-dom": "^18.0.6",
+    "@types/uuid": "^8.3.4",
+    "@types/webpack-env": "^1.18.0",
+    "@typescript-eslint/eslint-plugin": "5.40.0",
+    "@typescript-eslint/parser": "^5.40.0",
+    "@vitejs/plugin-legacy": "^3.0.1",
+    "babel-plugin-named-asset-import": "^0.3.8",
+    "babel-preset-react-app": "^10.0.1",
+    "eslint": "^8.3.0",
+    "eslint-config-prettier": "^8.5.0",
+    "eslint-config-react-app": "^7.0.1",
+    "eslint-plugin-flowtype": "^5.7.2",
+    "eslint-plugin-import": "^2.26.0",
+    "eslint-plugin-jsx-a11y": "^6.6.1",
+    "eslint-plugin-prettier": "^4.2.1",
+    "eslint-plugin-react": "^7.31.10",
+    "eslint-plugin-react-hooks": "^4.6.0",
+    "immutable": "^4.1.0",
+    "prettier": "^2.7.1",
+    "prettier-eslint-cli": "^6.0.1",
+    "react-error-overlay": "6.0.9",
+    "rollup-plugin-visualizer": "^5.8.3",
+    "typescript": "^4.8.4"
+  },
   "scripts": {
   "scripts": {
-    "start": "react-app-rewired start",
-    "build": "react-app-rewired build",
-    "test": "react-scripts test",
-    "eject": "react-scripts eject"
+    "start": "vite",
+    "build": "pnpm run type-check && vite build",
+    "format": "prettier --write src/**/*.{js,jsx,ts,tsx,css}",
+    "preinstall": "npx only-allow pnpm",
+    "type-check": "tsc --noEmit"
   },
   },
   "eslintConfig": {
   "eslintConfig": {
     "extends": [
     "extends": [
       "react-app",
       "react-app",
       "react-app/jest"
       "react-app/jest"
-    ]
+    ],
+    "rules": {
+      "react/jsx-uses-react": "off",
+      "react/react-in-jsx-scope": "off"
+    }
   },
   },
   "babel": {
   "babel": {
     "presets": [
     "presets": [
-      "@babel/preset-react"
+      "react-app"
     ]
     ]
   },
   },
   "browserslist": {
   "browserslist": {
@@ -71,28 +130,57 @@
       "last 1 safari version"
       "last 1 safari version"
     ]
     ]
   },
   },
-  "devDependencies": {
-    "@babel/core": "^7.19.3",
-    "@babel/eslint-parser": "^7.19.1",
-    "@types/lodash": "^4.14.186",
-    "@types/react-dom": "^18.0.6",
-    "@types/uuid": "^8.3.4",
-    "@types/webpack-env": "^1.18.0",
-    "@typescript-eslint/eslint-plugin": "5.40.0",
-    "@typescript-eslint/parser": "^5.40.0",
-    "eslint": "^7.27.0",
-    "eslint-config-prettier": "^8.5.0",
-    "eslint-config-react-app": "6.0.0",
-    "eslint-plugin-flowtype": "^5.7.2",
-    "eslint-plugin-import": "^2.26.0",
-    "eslint-plugin-jsx-a11y": "^6.6.1",
-    "eslint-plugin-prettier": "^4.2.1",
-    "eslint-plugin-react": "^7.31.10",
-    "eslint-plugin-react-hooks": "^4.6.0",
-    "immutable": "^4.1.0",
-    "prettier": "^2.7.1",
-    "prettier-eslint-cli": "^6.0.1",
-    "react-error-overlay": "6.0.9",
-    "typescript": "^4.8.4"
+  "jest": {
+    "roots": [
+      "<rootDir>/src"
+    ],
+    "collectCoverageFrom": [
+      "src/**/*.{js,jsx,ts,tsx}",
+      "!src/**/*.d.ts"
+    ],
+    "setupFiles": [
+      "react-app-polyfill/jsdom"
+    ],
+    "setupFilesAfterEnv": [
+      "<rootDir>/src/setupTests.ts"
+    ],
+    "testMatch": [
+      "<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}",
+      "<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"
+    ],
+    "testEnvironment": "jsdom",
+    "transform": {
+      "^.+\\.(js|jsx|mjs|cjs|ts|tsx)$": "<rootDir>/config/jest/babelTransform.js",
+      "^.+\\.css$": "<rootDir>/config/jest/cssTransform.js",
+      "^(?!.*\\.(js|jsx|mjs|cjs|ts|tsx|css|json)$)": "<rootDir>/config/jest/fileTransform.js"
+    },
+    "transformIgnorePatterns": [
+      "[/\\\\]node_modules[/\\\\].+\\.(js|jsx|mjs|cjs|ts|tsx)$",
+      "^.+\\.module\\.(css|sass|scss)$"
+    ],
+    "modulePaths": [
+      "C:\\Users\\ahdar\\Documents\\Code\\star-horizon\\gfwservice-frontend\\src"
+    ],
+    "moduleNameMapper": {
+      "^react-native$": "react-native-web",
+      "^.+\\.module\\.(css|sass|scss)$": "identity-obj-proxy"
+    },
+    "moduleFileExtensions": [
+      "web.js",
+      "js",
+      "web.ts",
+      "ts",
+      "web.tsx",
+      "tsx",
+      "json",
+      "web.jsx",
+      "jsx",
+      "node"
+    ],
+    "watchPlugins": [
+      "jest-watch-typeahead/filename",
+      "jest-watch-typeahead/testname"
+    ],
+    "resetMocks": true
   }
   }
 }
 }

Різницю між файлами не показано, бо вона завелика
+ 426 - 285
pnpm-lock.yaml


+ 9 - 7
src/App.tsx

@@ -1,13 +1,15 @@
+import React from "react";
+
 // project import
 // project import
-import Routes from 'routes';
-import ThemeCustomization from 'themes';
-import Locales from 'components/Locales';
-// import RTLLayout from 'components/RTLLayout';
-import ScrollTop from 'components/ScrollTop';
-import Snackbar from 'components/@extended/Snackbar';
+import Routes from "@/routes";
+import ThemeCustomization from "@/themes";
+import Locales from "@/components/Locales";
+// import RTLLayout from '@/components/RTLLayout';
+import ScrollTop from "@/components/ScrollTop";
+import Snackbar from "@/components/@extended/Snackbar";
 
 
 // auth provider
 // auth provider
-import { FirebaseProvider as AuthProvider } from 'contexts/FirebaseContext';
+import { FirebaseProvider as AuthProvider } from "@/contexts/FirebaseContext";
 
 
 // ==============================|| APP - THEME, ROUTER, LOCAL  ||============================== //
 // ==============================|| APP - THEME, ROUTER, LOCAL  ||============================== //
 
 

+ 0 - 1
src/_api/readme.txt

@@ -1 +0,0 @@
-use for api

+ 43 - 36
src/components/@extended/Avatar.tsx

@@ -1,20 +1,20 @@
-import { ReactNode } from 'react';
+import { ReactNode } from "react";
 
 
 // material-ui
 // material-ui
-import { styled, useTheme, Theme } from '@mui/material/styles';
-import MuiAvatar from '@mui/material/Avatar';
-import { AvatarProps } from '@mui/material';
+import { styled, useTheme, Theme } from "@mui/material/styles";
+import MuiAvatar from "@mui/material/Avatar";
+import { AvatarProps } from "@mui/material";
 
 
 // project import
 // project import
-import getColors from 'utils/getColors';
+import getColors from "@/utils/getColors";
 
 
 // types
 // types
-import { AvatarTypeProps, ColorProps, ExtendedStyleProps, SizeProps } from 'types/extended';
+import { AvatarTypeProps, ColorProps, ExtendedStyleProps, SizeProps } from "@/types/extended";
 
 
 // ==============================|| AVATAR - COLOR STYLE ||============================== //
 // ==============================|| AVATAR - COLOR STYLE ||============================== //
 
 
 interface AvatarStyleProps extends ExtendedStyleProps {
 interface AvatarStyleProps extends ExtendedStyleProps {
-  variant?: AvatarProps['variant'];
+  variant?: AvatarProps["variant"];
   type?: AvatarTypeProps;
   type?: AvatarTypeProps;
 }
 }
 
 
@@ -23,22 +23,22 @@ function getColorStyle({ variant, theme, color, type }: AvatarStyleProps) {
   const { lighter, light, main, contrastText } = colors;
   const { lighter, light, main, contrastText } = colors;
 
 
   switch (type) {
   switch (type) {
-    case 'filled':
+    case "filled":
       return {
       return {
         color: contrastText,
         color: contrastText,
         backgroundColor: main
         backgroundColor: main
       };
       };
-    case 'outlined':
+    case "outlined":
       return {
       return {
         color: main,
         color: main,
-        border: '1px solid',
+        border: "1px solid",
         borderColor: main,
         borderColor: main,
-        backgroundColor: 'transparent'
+        backgroundColor: "transparent"
       };
       };
-    case 'combined':
+    case "combined":
       return {
       return {
         color: main,
         color: main,
-        border: '1px solid',
+        border: "1px solid",
         borderColor: light,
         borderColor: light,
         backgroundColor: lighter
         backgroundColor: lighter
       };
       };
@@ -54,41 +54,41 @@ function getColorStyle({ variant, theme, color, type }: AvatarStyleProps) {
 
 
 function getSizeStyle(size?: SizeProps) {
 function getSizeStyle(size?: SizeProps) {
   switch (size) {
   switch (size) {
-    case 'badge':
+    case "badge":
       return {
       return {
-        border: '2px solid',
-        fontSize: '0.675rem',
+        border: "2px solid",
+        fontSize: "0.675rem",
         width: 20,
         width: 20,
         height: 20
         height: 20
       };
       };
-    case 'xs':
+    case "xs":
       return {
       return {
-        fontSize: '0.75rem',
+        fontSize: "0.75rem",
         width: 24,
         width: 24,
         height: 24
         height: 24
       };
       };
-    case 'sm':
+    case "sm":
       return {
       return {
-        fontSize: '0.875rem',
+        fontSize: "0.875rem",
         width: 32,
         width: 32,
         height: 32
         height: 32
       };
       };
-    case 'lg':
+    case "lg":
       return {
       return {
-        fontSize: '1.2rem',
+        fontSize: "1.2rem",
         width: 52,
         width: 52,
         height: 52
         height: 52
       };
       };
-    case 'xl':
+    case "xl":
       return {
       return {
-        fontSize: '1.5rem',
+        fontSize: "1.5rem",
         width: 64,
         width: 64,
         height: 64
         height: 64
       };
       };
-    case 'md':
+    case "md":
     default:
     default:
       return {
       return {
-        fontSize: '1rem',
+        fontSize: "1rem",
         width: 40,
         width: 40,
         height: 40
         height: 40
       };
       };
@@ -99,21 +99,21 @@ function getSizeStyle(size?: SizeProps) {
 
 
 interface StyleProps {
 interface StyleProps {
   color: ColorProps;
   color: ColorProps;
-  variant?: AvatarProps['variant'];
+  variant?: AvatarProps["variant"];
   type?: AvatarTypeProps;
   type?: AvatarTypeProps;
   theme: Theme;
   theme: Theme;
   size?: SizeProps;
   size?: SizeProps;
 }
 }
 
 
-const AvatarStyle = styled(MuiAvatar, { shouldForwardProp: (prop) => prop !== 'color' && prop !== 'type' && prop !== 'size' })(
-  ({ theme, variant, color, type, size }: StyleProps) => ({
-    ...getSizeStyle(size),
-    ...getColorStyle({ variant, theme, color, type }),
-    ...(size === 'badge' && {
-      borderColor: theme.palette.background.default
-    })
+const AvatarStyle = styled(MuiAvatar, {
+  shouldForwardProp: (prop) => prop !== "color" && prop !== "type" && prop !== "size"
+})(({ theme, variant, color, type, size }: StyleProps) => ({
+  ...getSizeStyle(size),
+  ...getColorStyle({ variant, theme, color, type }),
+  ...(size === "badge" && {
+    borderColor: theme.palette.background.default
   })
   })
-);
+}));
 
 
 // ==============================|| EXTENDED - AVATAR ||============================== //
 // ==============================|| EXTENDED - AVATAR ||============================== //
 
 
@@ -124,7 +124,14 @@ export interface Props extends AvatarProps {
   size?: SizeProps;
   size?: SizeProps;
 }
 }
 
 
-export default function Avatar({ variant = 'circular', children, color = 'primary', type, size = 'md', ...others }: Props) {
+export default function Avatar({
+  variant = "circular",
+  children,
+  color = "primary",
+  type,
+  size = "md",
+  ...others
+}: Props) {
   const theme = useTheme();
   const theme = useTheme();
 
 
   return (
   return (

+ 35 - 29
src/components/@extended/Breadcrumbs.tsx

@@ -1,20 +1,20 @@
-import { CSSProperties, ReactElement, useEffect, useState } from 'react';
-import { Link, useLocation } from 'react-router-dom';
+import { CSSProperties, ReactElement, useEffect, useState } from "react";
+import { Link, useLocation } from "react-router-dom";
 
 
 // material-ui
 // material-ui
-import MuiBreadcrumbs from '@mui/material/Breadcrumbs';
-import { useTheme } from '@mui/material/styles';
-import { Divider, Grid, Typography } from '@mui/material';
+import MuiBreadcrumbs from "@mui/material/Breadcrumbs";
+import { useTheme } from "@mui/material/styles";
+import { Divider, Grid, Typography } from "@mui/material";
 
 
 // project imports
 // project imports
-import MainCard from '../MainCard';
+import MainCard from "../MainCard";
 
 
 // assets
 // assets
-import { ApartmentOutlined, HomeOutlined, HomeFilled } from '@ant-design/icons';
+import { ApartmentOutlined, HomeOutlined, HomeFilled } from "@ant-design/icons";
 
 
 // types
 // types
-import { OverrideIcon } from 'types/root';
-import { NavItemType } from 'types/menu';
+import { OverrideIcon } from "@/types/root";
+import { NavItemType } from "@/types/menu";
 
 
 // ==============================|| BREADCRUMBS ||============================== //
 // ==============================|| BREADCRUMBS ||============================== //
 
 
@@ -59,14 +59,14 @@ const Breadcrumbs = ({
   const iconSX = {
   const iconSX = {
     marginRight: theme.spacing(0.75),
     marginRight: theme.spacing(0.75),
     marginTop: `-${theme.spacing(0.25)}`,
     marginTop: `-${theme.spacing(0.25)}`,
-    width: '1rem',
-    height: '1rem',
+    width: "1rem",
+    height: "1rem",
     color: theme.palette.secondary.main
     color: theme.palette.secondary.main
   };
   };
 
 
   useEffect(() => {
   useEffect(() => {
     navigation?.items?.map((menu: NavItemType, index: number) => {
     navigation?.items?.map((menu: NavItemType, index: number) => {
-      if (menu.type && menu.type === 'group') {
+      if (menu.type && menu.type === "group") {
         getCollapse(menu as { children: NavItemType[]; type?: string });
         getCollapse(menu as { children: NavItemType[]; type?: string });
       }
       }
       return false;
       return false;
@@ -76,21 +76,21 @@ const Breadcrumbs = ({
   let customLocation = location.pathname;
   let customLocation = location.pathname;
 
 
   // only used for component demo breadcrumbs
   // only used for component demo breadcrumbs
-  if (customLocation === '/components-overview/breadcrumbs') {
-    customLocation = '/dashboard/analytics';
+  if (customLocation === "/components-overview/breadcrumbs") {
+    customLocation = "/dashboard/analytics";
   }
   }
 
 
-  if (customLocation === '/apps/kanban/backlogs') {
-    customLocation = '/apps/kanban/board';
+  if (customLocation === "/apps/kanban/backlogs") {
+    customLocation = "/apps/kanban/board";
   }
   }
 
 
   // set active item state
   // set active item state
   const getCollapse = (menu: NavItemType) => {
   const getCollapse = (menu: NavItemType) => {
     if (menu.children) {
     if (menu.children) {
       menu.children.filter((collapse: NavItemType) => {
       menu.children.filter((collapse: NavItemType) => {
-        if (collapse.type && collapse.type === 'collapse') {
+        if (collapse.type && collapse.type === "collapse") {
           getCollapse(collapse as { children: NavItemType[]; type?: string });
           getCollapse(collapse as { children: NavItemType[]; type?: string });
-        } else if (collapse.type && collapse.type === 'item') {
+        } else if (collapse.type && collapse.type === "item") {
           if (customLocation === collapse.url) {
           if (customLocation === collapse.url) {
             setMain(menu);
             setMain(menu);
             setItem(collapse);
             setItem(collapse);
@@ -103,20 +103,26 @@ const Breadcrumbs = ({
 
 
   // item separator
   // item separator
   const SeparatorIcon = separator!;
   const SeparatorIcon = separator!;
-  const separatorIcon = separator ? <SeparatorIcon style={{ fontSize: '0.75rem', marginTop: 2 }} /> : '/';
+  const separatorIcon = separator ? <SeparatorIcon style={{ fontSize: "0.75rem", marginTop: 2 }} /> : "/";
 
 
   let mainContent;
   let mainContent;
   let itemContent;
   let itemContent;
   let breadcrumbContent: ReactElement = <Typography />;
   let breadcrumbContent: ReactElement = <Typography />;
-  let itemTitle: NavItemType['title'] = '';
+  let itemTitle: NavItemType["title"] = "";
   let CollapseIcon;
   let CollapseIcon;
   let ItemIcon;
   let ItemIcon;
 
 
   // collapse item
   // collapse item
-  if (main && main.type === 'collapse') {
+  if (main && main.type === "collapse") {
     CollapseIcon = main.icon ? main.icon : ApartmentOutlined;
     CollapseIcon = main.icon ? main.icon : ApartmentOutlined;
     mainContent = (
     mainContent = (
-      <Typography component={Link} to={document.location.pathname} variant="h6" sx={{ textDecoration: 'none' }} color="textSecondary">
+      <Typography
+        component={Link}
+        to={document.location.pathname}
+        variant="h6"
+        sx={{ textDecoration: "none" }}
+        color="textSecondary"
+      >
         {icons && <CollapseIcon style={iconSX} />}
         {icons && <CollapseIcon style={iconSX} />}
         {main.title}
         {main.title}
       </Typography>
       </Typography>
@@ -124,7 +130,7 @@ const Breadcrumbs = ({
   }
   }
 
 
   // items
   // items
-  if (item && item.type === 'item') {
+  if (item && item.type === "item") {
     itemTitle = item.title;
     itemTitle = item.title;
 
 
     ItemIcon = item.icon ? item.icon : ApartmentOutlined;
     ItemIcon = item.icon ? item.icon : ApartmentOutlined;
@@ -140,16 +146,16 @@ const Breadcrumbs = ({
       breadcrumbContent = (
       breadcrumbContent = (
         <MainCard
         <MainCard
           border={card}
           border={card}
-          sx={card === false ? { mb: 3, bgcolor: 'transparent', ...sx } : { mb: 3, ...sx }}
+          sx={card === false ? { mb: 3, bgcolor: "transparent", ...sx } : { mb: 3, ...sx }}
           {...others}
           {...others}
           content={card}
           content={card}
           shadow="none"
           shadow="none"
         >
         >
           <Grid
           <Grid
             container
             container
-            direction={rightAlign ? 'row' : 'column'}
-            justifyContent={rightAlign ? 'space-between' : 'flex-start'}
-            alignItems={rightAlign ? 'center' : 'flex-start'}
+            direction={rightAlign ? "row" : "column"}
+            justifyContent={rightAlign ? "space-between" : "flex-start"}
+            alignItems={rightAlign ? "center" : "flex-start"}
             spacing={1}
             spacing={1}
           >
           >
             {title && !titleBottom && (
             {title && !titleBottom && (
@@ -159,10 +165,10 @@ const Breadcrumbs = ({
             )}
             )}
             <Grid item>
             <Grid item>
               <MuiBreadcrumbs aria-label="breadcrumb" maxItems={maxItems || 8} separator={separatorIcon}>
               <MuiBreadcrumbs aria-label="breadcrumb" maxItems={maxItems || 8} separator={separatorIcon}>
-                <Typography component={Link} to="/" color="textSecondary" variant="h6" sx={{ textDecoration: 'none' }}>
+                <Typography component={Link} to="/" color="textSecondary" variant="h6" sx={{ textDecoration: "none" }}>
                   {icons && <HomeOutlined style={iconSX} />}
                   {icons && <HomeOutlined style={iconSX} />}
                   {icon && !icons && <HomeFilled style={{ ...iconSX, marginRight: 0 }} />}
                   {icon && !icons && <HomeFilled style={{ ...iconSX, marginRight: 0 }} />}
-                  {(!icon || icons) && 'Home'}
+                  {(!icon || icons) && "Home"}
                 </Typography>
                 </Typography>
                 {mainContent}
                 {mainContent}
                 {itemContent}
                 {itemContent}

+ 8 - 8
src/components/@extended/Dot.tsx

@@ -1,10 +1,10 @@
 // material-ui
 // material-ui
-import { CSSObject, useTheme } from '@mui/material/styles';
-import { Box } from '@mui/material';
+import { CSSObject, useTheme } from "@mui/material/styles";
+import { Box } from "@mui/material";
 
 
 // project import
 // project import
-import { ColorProps } from 'types/extended';
-import getColors from 'utils/getColors';
+import { ColorProps } from "@/types/extended";
+import getColors from "@/utils/getColors";
 
 
 interface Props {
 interface Props {
   color?: ColorProps;
   color?: ColorProps;
@@ -15,7 +15,7 @@ interface Props {
 
 
 const Dot = ({ color, size, variant, sx }: Props) => {
 const Dot = ({ color, size, variant, sx }: Props) => {
   const theme = useTheme();
   const theme = useTheme();
-  const colors = getColors(theme, color || 'primary');
+  const colors = getColors(theme, color || "primary");
   const { main } = colors;
   const { main } = colors;
 
 
   return (
   return (
@@ -24,9 +24,9 @@ const Dot = ({ color, size, variant, sx }: Props) => {
       sx={{
       sx={{
         width: size || 8,
         width: size || 8,
         height: size || 8,
         height: size || 8,
-        borderRadius: '50%',
-        bgcolor: variant === 'outlined' ? '' : main,
-        ...(variant === 'outlined' && {
+        borderRadius: "50%",
+        bgcolor: variant === "outlined" ? "" : main,
+        ...(variant === "outlined" && {
           border: `1px solid ${main}`
           border: `1px solid ${main}`
         }),
         }),
         ...sx
         ...sx

+ 52 - 49
src/components/@extended/IconButton.tsx

@@ -1,16 +1,16 @@
-import { forwardRef, ReactNode, ReactChild, ReactFragment, ReactPortal, Ref } from 'react';
+import { forwardRef, ReactNode, ReactChild, ReactFragment, ReactPortal, Ref } from "react";
 
 
 // material-ui
 // material-ui
-import MuiIconButton from '@mui/material/IconButton';
-import { alpha, styled, useTheme } from '@mui/material/styles';
-import { IconButtonProps } from '@mui/material';
+import MuiIconButton from "@mui/material/IconButton";
+import { alpha, styled, useTheme } from "@mui/material/styles";
+import { IconButtonProps } from "@mui/material";
 
 
 // project imports
 // project imports
-import getColors from 'utils/getColors';
-import getShadow from 'utils/getShadow';
+import getColors from "@/utils/getColors";
+import getShadow from "@/utils/getShadow";
 
 
 // types
 // types
-import { ButtonVariantProps, ExtendedStyleProps, IconButtonShapeProps } from 'types/extended';
+import { ButtonVariantProps, ExtendedStyleProps, IconButtonShapeProps } from "@/types/extended";
 
 
 // ==============================|| ICON BUTTON - COLOR STYLE ||============================== //
 // ==============================|| ICON BUTTON - COLOR STYLE ||============================== //
 
 
@@ -26,70 +26,70 @@ function getColorStyle({ variant, theme, color }: IconButtonStyleProps) {
   const shadows = getShadow(theme, buttonShadow);
   const shadows = getShadow(theme, buttonShadow);
 
 
   const commonShadow = {
   const commonShadow = {
-    '&::after': {
+    "&::after": {
       boxShadow: `0 0 6px 6px ${alpha(main, 0.9)}`
       boxShadow: `0 0 6px 6px ${alpha(main, 0.9)}`
     },
     },
-    '&:active::after': {
+    "&:active::after": {
       boxShadow: `0 0 0 0 ${alpha(main, 0.9)}`
       boxShadow: `0 0 0 0 ${alpha(main, 0.9)}`
     },
     },
-    '&:focus-visible': {
+    "&:focus-visible": {
       outline: `2px solid ${dark}`,
       outline: `2px solid ${dark}`,
       outlineOffset: 2
       outlineOffset: 2
     }
     }
   };
   };
 
 
   switch (variant) {
   switch (variant) {
-    case 'contained':
+    case "contained":
       return {
       return {
         color: contrastText,
         color: contrastText,
         backgroundColor: main,
         backgroundColor: main,
-        '&:hover': {
+        "&:hover": {
           backgroundColor: dark
           backgroundColor: dark
         },
         },
         ...commonShadow
         ...commonShadow
       };
       };
-    case 'light':
+    case "light":
       return {
       return {
         color: main,
         color: main,
         backgroundColor: lighter,
         backgroundColor: lighter,
-        '&:hover': {
+        "&:hover": {
           backgroundColor: light
           backgroundColor: light
         },
         },
         ...commonShadow
         ...commonShadow
       };
       };
-    case 'shadow':
+    case "shadow":
       return {
       return {
         boxShadow: shadows,
         boxShadow: shadows,
         color: contrastText,
         color: contrastText,
         backgroundColor: main,
         backgroundColor: main,
-        '&:hover': {
-          boxShadow: 'none',
+        "&:hover": {
+          boxShadow: "none",
           backgroundColor: dark
           backgroundColor: dark
         },
         },
         ...commonShadow
         ...commonShadow
       };
       };
-    case 'outlined':
+    case "outlined":
       return {
       return {
-        '&:hover': {
-          backgroundColor: 'transparent',
+        "&:hover": {
+          backgroundColor: "transparent",
           color: dark,
           color: dark,
           borderColor: dark
           borderColor: dark
         },
         },
         ...commonShadow
         ...commonShadow
       };
       };
-    case 'dashed':
+    case "dashed":
       return {
       return {
         backgroundColor: lighter,
         backgroundColor: lighter,
-        '&:hover': {
+        "&:hover": {
           color: dark,
           color: dark,
           borderColor: dark
           borderColor: dark
         },
         },
         ...commonShadow
         ...commonShadow
       };
       };
-    case 'text':
+    case "text":
     default:
     default:
       return {
       return {
-        '&:hover': {
+        "&:hover": {
           color: dark,
           color: dark,
           backgroundColor: lighter
           backgroundColor: lighter
         },
         },
@@ -104,43 +104,43 @@ interface StyleProps extends IconButtonStyleProps {
   shape?: IconButtonShapeProps;
   shape?: IconButtonShapeProps;
 }
 }
 
 
-const IconButtonStyle = styled(MuiIconButton, { shouldForwardProp: (prop) => prop !== 'variant' && prop !== 'shape' })(
+const IconButtonStyle = styled(MuiIconButton, { shouldForwardProp: (prop) => prop !== "variant" && prop !== "shape" })(
   ({ theme, variant, shape, color }: StyleProps) => ({
   ({ theme, variant, shape, color }: StyleProps) => ({
-    position: 'relative',
-    '::after': {
+    position: "relative",
+    "::after": {
       content: '""',
       content: '""',
-      display: 'block',
-      position: 'absolute',
+      display: "block",
+      position: "absolute",
       left: 0,
       left: 0,
       top: 0,
       top: 0,
-      width: '100%',
-      height: '100%',
-      borderRadius: shape === 'rounded' ? '50%' : 4,
+      width: "100%",
+      height: "100%",
+      borderRadius: shape === "rounded" ? "50%" : 4,
       opacity: 0,
       opacity: 0,
-      transition: 'all 0.5s'
+      transition: "all 0.5s"
     },
     },
 
 
-    ':active::after': {
-      position: 'absolute',
-      borderRadius: shape === 'rounded' ? '50%' : 4,
+    ":active::after": {
+      position: "absolute",
+      borderRadius: shape === "rounded" ? "50%" : 4,
       left: 0,
       left: 0,
       top: 0,
       top: 0,
       opacity: 1,
       opacity: 1,
-      transition: '0s'
+      transition: "0s"
     },
     },
-    ...(shape === 'rounded' && {
-      borderRadius: '50%'
+    ...(shape === "rounded" && {
+      borderRadius: "50%"
     }),
     }),
-    ...(variant === 'outlined' && {
-      border: '1px solid',
-      borderColor: 'inherit'
+    ...(variant === "outlined" && {
+      border: "1px solid",
+      borderColor: "inherit"
     }),
     }),
-    ...(variant === 'dashed' && {
-      border: '1px dashed',
-      borderColor: 'inherit'
+    ...(variant === "dashed" && {
+      border: "1px dashed",
+      borderColor: "inherit"
     }),
     }),
-    ...(variant !== 'text' && {
-      '&.Mui-disabled': {
+    ...(variant !== "text" && {
+      "&.Mui-disabled": {
         backgroundColor: theme.palette.grey[200]
         backgroundColor: theme.palette.grey[200]
       }
       }
     }),
     }),
@@ -158,7 +158,10 @@ export interface Props extends IconButtonProps {
 }
 }
 
 
 const IconButton = forwardRef(
 const IconButton = forwardRef(
-  ({ variant = 'text', shape = 'square', children, color = 'primary', tooltip, ...others }: Props, ref: Ref<HTMLButtonElement>) => {
+  (
+    { variant = "text", shape = "square", children, color = "primary", tooltip, ...others }: Props,
+    ref: Ref<HTMLButtonElement>
+  ) => {
     const theme = useTheme();
     const theme = useTheme();
 
 
     return (
     return (
@@ -169,6 +172,6 @@ const IconButton = forwardRef(
   }
   }
 );
 );
 
 
-IconButton.displayName = 'IconButton';
+IconButton.displayName = "IconButton";
 
 
 export default IconButton;
 export default IconButton;

+ 105 - 105
src/components/@extended/LoadingButton.tsx

@@ -1,23 +1,23 @@
-import { forwardRef, ReactNode, Ref } from 'react';
+import { forwardRef, ReactNode, Ref } from "react";
 
 
 // material-ui
 // material-ui
-import MuiLoadingButton from '@mui/lab/LoadingButton';
-import { alpha, styled, useTheme } from '@mui/material/styles';
-import { ButtonProps } from '@mui/material';
-import { LoadingButtonProps } from '@mui/lab';
+import MuiLoadingButton from "@mui/lab/LoadingButton";
+import { alpha, styled, useTheme } from "@mui/material/styles";
+import { ButtonProps } from "@mui/material";
+import { LoadingButtonProps } from "@mui/lab";
 
 
 // project imports
 // project imports
-import getColors from 'utils/getColors';
-import getShadow from 'utils/getShadow';
+import getColors from "@/utils/getColors";
+import getShadow from "@/utils/getShadow";
 
 
 // types
 // types
-import { ButtonVariantProps, ExtendedStyleProps, IconButtonShapeProps } from 'types/extended';
+import { ButtonVariantProps, ExtendedStyleProps, IconButtonShapeProps } from "@/types/extended";
 
 
 // ==============================|| LOADING BUTTON - COLOR STYLE ||============================== //
 // ==============================|| LOADING BUTTON - COLOR STYLE ||============================== //
 
 
 interface LoadingButtonStyleProps extends ExtendedStyleProps {
 interface LoadingButtonStyleProps extends ExtendedStyleProps {
   variant: ButtonVariantProps;
   variant: ButtonVariantProps;
-  loadingPosition?: LoadingButtonProps['loadingPosition'];
+  loadingPosition?: LoadingButtonProps["loadingPosition"];
 }
 }
 
 
 function getColorStyle({ variant, theme, color, loadingPosition }: LoadingButtonStyleProps) {
 function getColorStyle({ variant, theme, color, loadingPosition }: LoadingButtonStyleProps) {
@@ -28,90 +28,90 @@ function getColorStyle({ variant, theme, color, loadingPosition }: LoadingButton
   const shadows = getShadow(theme, buttonShadow);
   const shadows = getShadow(theme, buttonShadow);
 
 
   const loadingIndicator = {
   const loadingIndicator = {
-    '& .MuiLoadingButton-loadingIndicator': {
+    "& .MuiLoadingButton-loadingIndicator": {
       color: main
       color: main
     }
     }
   };
   };
 
 
   const loadingColor = {
   const loadingColor = {
     ...(loadingPosition &&
     ...(loadingPosition &&
-      loadingPosition !== 'center' && {
+      loadingPosition !== "center" && {
         color: main
         color: main
       })
       })
   };
   };
 
 
   const commonShadow = {
   const commonShadow = {
-    '&::after': {
+    "&::after": {
       boxShadow: `0 0 6px 6px ${alpha(main, 0.9)}`
       boxShadow: `0 0 6px 6px ${alpha(main, 0.9)}`
     },
     },
-    '&:active::after': {
+    "&:active::after": {
       boxShadow: `0 0 0 0 ${alpha(main, 0.9)}`
       boxShadow: `0 0 0 0 ${alpha(main, 0.9)}`
     },
     },
-    '&:focus-visible': {
+    "&:focus-visible": {
       outline: `2px solid ${dark}`,
       outline: `2px solid ${dark}`,
       outlineOffset: 2
       outlineOffset: 2
     }
     }
   };
   };
 
 
   switch (variant) {
   switch (variant) {
-    case 'contained':
+    case "contained":
       return {
       return {
         backgroundColor: main,
         backgroundColor: main,
         ...(loadingPosition &&
         ...(loadingPosition &&
-          loadingPosition !== 'center' && {
+          loadingPosition !== "center" && {
             color: contrastText
             color: contrastText
           }),
           }),
-        '& .MuiLoadingButton-loadingIndicator': {
+        "& .MuiLoadingButton-loadingIndicator": {
           color: contrastText
           color: contrastText
         },
         },
-        '&:hover': {
+        "&:hover": {
           backgroundColor: dark,
           backgroundColor: dark,
           color: contrastText
           color: contrastText
         },
         },
         ...commonShadow
         ...commonShadow
       };
       };
-    case 'light':
+    case "light":
       return {
       return {
         backgroundColor: main,
         backgroundColor: main,
         ...(loadingPosition &&
         ...(loadingPosition &&
-          loadingPosition !== 'center' && {
+          loadingPosition !== "center" && {
             color: contrastText
             color: contrastText
           }),
           }),
-        '& .MuiLoadingButton-loadingIndicator': {
+        "& .MuiLoadingButton-loadingIndicator": {
           color: contrastText
           color: contrastText
         },
         },
-        '&:hover': {
+        "&:hover": {
           backgroundColor: dark,
           backgroundColor: dark,
           color: contrastText
           color: contrastText
         },
         },
         ...commonShadow
         ...commonShadow
       };
       };
-    case 'shadow':
+    case "shadow":
       return {
       return {
         boxShadow: shadows,
         boxShadow: shadows,
         backgroundColor: main,
         backgroundColor: main,
         ...(loadingPosition &&
         ...(loadingPosition &&
-          loadingPosition !== 'center' && {
+          loadingPosition !== "center" && {
             color: contrastText
             color: contrastText
           }),
           }),
-        '& .MuiLoadingButton-loadingIndicator': {
+        "& .MuiLoadingButton-loadingIndicator": {
           color: contrastText
           color: contrastText
         },
         },
-        '&:hover': {
-          boxShadow: 'none',
+        "&:hover": {
+          boxShadow: "none",
           backgroundColor: dark,
           backgroundColor: dark,
           color: contrastText
           color: contrastText
         },
         },
         ...commonShadow
         ...commonShadow
       };
       };
-    case 'outlined':
+    case "outlined":
       return {
       return {
-        backgroundColor: 'transparent',
+        backgroundColor: "transparent",
         borderColor: main,
         borderColor: main,
         ...loadingColor,
         ...loadingColor,
         ...loadingIndicator
         ...loadingIndicator
       };
       };
-    case 'dashed':
+    case "dashed":
       return {
       return {
         backgroundColor: lighter,
         backgroundColor: lighter,
         borderColor: main,
         borderColor: main,
@@ -119,7 +119,7 @@ function getColorStyle({ variant, theme, color, loadingPosition }: LoadingButton
         ...loadingIndicator,
         ...loadingIndicator,
         ...commonShadow
         ...commonShadow
       };
       };
-    case 'text':
+    case "text":
     default:
     default:
       return {
       return {
         color: main,
         color: main,
@@ -133,96 +133,96 @@ function getColorStyle({ variant, theme, color, loadingPosition }: LoadingButton
 
 
 interface StyleProps extends LoadingButtonStyleProps {
 interface StyleProps extends LoadingButtonStyleProps {
   shape?: IconButtonShapeProps;
   shape?: IconButtonShapeProps;
-  loading: LoadingButtonProps['loading'];
+  loading: LoadingButtonProps["loading"];
 }
 }
 
 
-const LoadingButtonStyle = styled(MuiLoadingButton, { shouldForwardProp: (prop) => prop !== 'shape' && prop !== 'variant' })(
-  ({ theme, variant, shape, color, loading, loadingPosition }: StyleProps) => ({
-    '::after': {
-      content: '""',
-      display: 'block',
-      position: 'absolute',
-      left: 0,
-      top: 0,
-      width: '100%',
-      height: '100%',
-      borderRadius: shape === 'rounded' ? '50%' : 4,
-      opacity: 0,
-      transition: 'all 0.5s'
+const LoadingButtonStyle = styled(MuiLoadingButton, {
+  shouldForwardProp: (prop) => prop !== "shape" && prop !== "variant"
+})(({ theme, variant, shape, color, loading, loadingPosition }: StyleProps) => ({
+  "::after": {
+    content: '""',
+    display: "block",
+    position: "absolute",
+    left: 0,
+    top: 0,
+    width: "100%",
+    height: "100%",
+    borderRadius: shape === "rounded" ? "50%" : 4,
+    opacity: 0,
+    transition: "all 0.5s"
+  },
+
+  ":active::after": {
+    position: "absolute",
+    borderRadius: shape === "rounded" ? "50%" : 4,
+    left: 0,
+    top: 0,
+    opacity: 1,
+    transition: "0s"
+  },
+  ...(variant === "text" && {
+    ...getColorStyle({ variant, theme, color, loadingPosition }),
+    "&.MuiButton-sizeMedium": {
+      height: 36
     },
     },
-
-    ':active::after': {
-      position: 'absolute',
-      borderRadius: shape === 'rounded' ? '50%' : 4,
-      left: 0,
-      top: 0,
-      opacity: 1,
-      transition: '0s'
+    "&.MuiButton-sizeSmall": {
+      height: 30
     },
     },
-    ...(variant === 'text' && {
-      ...getColorStyle({ variant, theme, color, loadingPosition }),
-      '&.MuiButton-sizeMedium': {
-        height: 36
-      },
-      '&.MuiButton-sizeSmall': {
-        height: 30
-      },
-      '&.MuiButton-sizeLarge': {
-        height: 44
-      }
-    }),
-    ...(shape && {
-      minWidth: 0,
-      '&.MuiButton-sizeMedium': {
-        width: 36,
-        height: 36
-      },
-      '&.MuiButton-sizeSmall': {
-        width: 30,
-        height: 30
-      },
-      '&.MuiButton-sizeLarge': {
-        width: 44,
-        height: 44
-      },
-      ...(shape === 'rounded' && {
-        borderRadius: '50%'
-      })
+    "&.MuiButton-sizeLarge": {
+      height: 44
+    }
+  }),
+  ...(shape && {
+    minWidth: 0,
+    "&.MuiButton-sizeMedium": {
+      width: 36,
+      height: 36
+    },
+    "&.MuiButton-sizeSmall": {
+      width: 30,
+      height: 30
+    },
+    "&.MuiButton-sizeLarge": {
+      width: 44,
+      height: 44
+    },
+    ...(shape === "rounded" && {
+      borderRadius: "50%"
+    })
+  }),
+
+  ...(variant === "outlined" && {
+    border: "1px solid"
+  }),
+  ...(variant === "dashed" && {
+    border: "1px dashed"
+  }),
+  ...((variant === "contained" || variant === "shadow") &&
+    !loading && {
+      color: "#fff"
     }),
     }),
+  ...(variant !== "text" && {
+    ...getColorStyle({ variant, theme, color, loadingPosition })
+  }),
 
 
-    ...(variant === 'outlined' && {
-      border: '1px solid'
-    }),
-    ...(variant === 'dashed' && {
-      border: '1px dashed'
-    }),
-    ...((variant === 'contained' || variant === 'shadow') &&
-      !loading && {
-        color: '#fff'
-      }),
-    ...(variant !== 'text' && {
+  "&.Mui-disabled": {
+    ...(variant !== "text" && {
       ...getColorStyle({ variant, theme, color, loadingPosition })
       ...getColorStyle({ variant, theme, color, loadingPosition })
-    }),
-
-    '&.Mui-disabled': {
-      ...(variant !== 'text' && {
-        ...getColorStyle({ variant, theme, color, loadingPosition })
-      })
-    }
-  })
-);
+    })
+  }
+}));
 
 
 // ==============================|| EXTENDED - LOADING BUTTON ||============================== //
 // ==============================|| EXTENDED - LOADING BUTTON ||============================== //
 
 
 interface Props extends LoadingButtonProps {
 interface Props extends LoadingButtonProps {
-  color?: ButtonProps['color'];
+  color?: ButtonProps["color"];
   variant?: ButtonVariantProps;
   variant?: ButtonVariantProps;
   shape?: IconButtonShapeProps;
   shape?: IconButtonShapeProps;
   children: ReactNode;
   children: ReactNode;
 }
 }
 
 
 const LoadingButton = forwardRef(
 const LoadingButton = forwardRef(
-  ({ variant = 'text', shape, children, color = 'primary', ...others }: Props, ref: Ref<HTMLButtonElement>) => {
+  ({ variant = "text", shape, children, color = "primary", ...others }: Props, ref: Ref<HTMLButtonElement>) => {
     const theme = useTheme();
     const theme = useTheme();
 
 
     return (
     return (
@@ -242,6 +242,6 @@ const LoadingButton = forwardRef(
   }
   }
 );
 );
 
 
-LoadingButton.displayName = 'LoadingButton';
+LoadingButton.displayName = "LoadingButton";
 
 
 export default LoadingButton;
 export default LoadingButton;

+ 13 - 13
src/components/@extended/Snackbar.tsx

@@ -1,18 +1,18 @@
-import { SyntheticEvent } from 'react';
-import { useDispatch, useSelector } from 'react-redux';
+import { SyntheticEvent } from "react";
+import { useDispatch, useSelector } from "react-redux";
 
 
 // material-ui
 // material-ui
-import { Alert, Button, Fade, Grow, Slide, SlideProps } from '@mui/material';
-import MuiSnackbar from '@mui/material/Snackbar';
+import { Alert, Button, Fade, Grow, Slide, SlideProps } from "@mui/material";
+import MuiSnackbar from "@mui/material/Snackbar";
 
 
 // project-import
 // project-import
-import IconButton from './IconButton';
+import IconButton from "./IconButton";
 
 
 // assets
 // assets
-import { CloseOutlined } from '@ant-design/icons';
+import { CloseOutlined } from "@ant-design/icons";
 
 
-import { KeyedObject, RootStateProps } from 'types/root';
-import { closeSnackbar } from 'store/reducers/snackbar';
+import { KeyedObject, RootStateProps } from "@/types/root";
+import { closeSnackbar } from "@/store/reducers/snackbar";
 
 
 // animation function
 // animation function
 function TransitionSlideLeft(props: SlideProps) {
 function TransitionSlideLeft(props: SlideProps) {
@@ -53,7 +53,7 @@ const Snackbar = () => {
   const { actionButton, anchorOrigin, alert, close, message, open, transition, variant } = snackbar;
   const { actionButton, anchorOrigin, alert, close, message, open, transition, variant } = snackbar;
 
 
   const handleClose = (event: SyntheticEvent | Event, reason?: string) => {
   const handleClose = (event: SyntheticEvent | Event, reason?: string) => {
-    if (reason === 'clickaway') {
+    if (reason === "clickaway") {
       return;
       return;
     }
     }
     dispatch(closeSnackbar());
     dispatch(closeSnackbar());
@@ -62,7 +62,7 @@ const Snackbar = () => {
   return (
   return (
     <>
     <>
       {/* default snackbar */}
       {/* default snackbar */}
-      {variant === 'default' && (
+      {variant === "default" && (
         <MuiSnackbar
         <MuiSnackbar
           anchorOrigin={anchorOrigin}
           anchorOrigin={anchorOrigin}
           open={open}
           open={open}
@@ -84,7 +84,7 @@ const Snackbar = () => {
       )}
       )}
 
 
       {/* alert snackbar */}
       {/* alert snackbar */}
-      {variant === 'alert' && (
+      {variant === "alert" && (
         <MuiSnackbar
         <MuiSnackbar
           TransitionComponent={animation[transition]}
           TransitionComponent={animation[transition]}
           anchorOrigin={anchorOrigin}
           anchorOrigin={anchorOrigin}
@@ -117,8 +117,8 @@ const Snackbar = () => {
               </>
               </>
             }
             }
             sx={{
             sx={{
-              ...(alert.variant === 'outlined' && {
-                bgcolor: 'grey.0'
+              ...(alert.variant === "outlined" && {
+                bgcolor: "grey.0"
               })
               })
             }}
             }}
           >
           >

+ 13 - 9
src/components/Locales.tsx

@@ -1,15 +1,15 @@
-import { ReactNode, useEffect, useState } from 'react';
+import { ReactNode, useEffect, useState } from "react";
 
 
 // third-party
 // third-party
-import { IntlProvider, MessageFormatElement } from 'react-intl';
+import { IntlProvider, MessageFormatElement } from "react-intl";
 
 
 // project import
 // project import
-import useConfig from 'hooks/useConfig';
-import { I18n } from 'types/config';
+import useConfig from "@/hooks/useConfig";
+import { I18n } from "@/types/config";
 
 
 // load locales files
 // load locales files
 const loadLocaleData = (locale: I18n) => {
 const loadLocaleData = (locale: I18n) => {
-  return import('utils/locales/en.json');
+  return import("@/utils/locales/en.json");
 };
 };
 
 
 // ==============================|| LOCALIZATION ||============================== //
 // ==============================|| LOCALIZATION ||============================== //
@@ -21,12 +21,16 @@ interface Props {
 const Locales = ({ children }: Props) => {
 const Locales = ({ children }: Props) => {
   const { i18n } = useConfig();
   const { i18n } = useConfig();
 
 
-  const [messages, setMessages] = useState<Record<string, string> | Record<string, MessageFormatElement[]> | undefined>();
+  const [messages, setMessages] = useState<
+    Record<string, string> | Record<string, MessageFormatElement[]> | undefined
+  >();
 
 
   useEffect(() => {
   useEffect(() => {
-    loadLocaleData(i18n).then((d: { default: Record<string, string> | Record<string, MessageFormatElement[]> | undefined }) => {
-      setMessages(d.default);
-    });
+    loadLocaleData(i18n).then(
+      (d: { default: Record<string, string> | Record<string, MessageFormatElement[]> | undefined }) => {
+        setMessages(d.default);
+      }
+    );
   }, [i18n]);
   }, [i18n]);
 
 
   return (
   return (

+ 37 - 25
src/components/MainCard.tsx

@@ -1,16 +1,25 @@
-import { forwardRef, CSSProperties, ReactNode, Ref } from 'react';
+import { forwardRef, CSSProperties, ReactNode, Ref } from "react";
 
 
 // material-ui
 // material-ui
-import { useTheme } from '@mui/material/styles';
-import { Card, CardContent, CardHeader, Divider, Typography, CardProps, CardHeaderProps, CardContentProps } from '@mui/material';
+import { useTheme } from "@mui/material/styles";
+import {
+  Card,
+  CardContent,
+  CardHeader,
+  Divider,
+  Typography,
+  CardProps,
+  CardHeaderProps,
+  CardContentProps
+} from "@mui/material";
 
 
 // types
 // types
-import { KeyedObject } from 'types/root';
+import { KeyedObject } from "@/types/root";
 
 
 // header style
 // header style
 const headerSX = {
 const headerSX = {
   p: 2.5,
   p: 2.5,
-  '& .MuiCardHeader-action': { m: '0px auto', alignSelf: 'center' }
+  "& .MuiCardHeader-action": { m: "0px auto", alignSelf: "center" }
 };
 };
 
 
 // ==============================|| CUSTOM - MAIN CARD ||============================== //
 // ==============================|| CUSTOM - MAIN CARD ||============================== //
@@ -22,11 +31,11 @@ export interface MainCardProps extends KeyedObject {
   subheader?: ReactNode | string;
   subheader?: ReactNode | string;
   style?: CSSProperties;
   style?: CSSProperties;
   content?: boolean;
   content?: boolean;
-  contentSX?: CardContentProps['sx'];
+  contentSX?: CardContentProps["sx"];
   darkTitle?: boolean;
   darkTitle?: boolean;
   divider?: boolean;
   divider?: boolean;
-  sx?: CardProps['sx'];
-  secondary?: CardHeaderProps['action'];
+  sx?: CardProps["sx"];
+  secondary?: CardHeaderProps["action"];
   shadow?: string;
   shadow?: string;
   elevation?: number;
   elevation?: number;
   title?: ReactNode | string;
   title?: ReactNode | string;
@@ -55,7 +64,7 @@ const MainCard = forwardRef(
     ref: Ref<HTMLDivElement>
     ref: Ref<HTMLDivElement>
   ) => {
   ) => {
     const theme = useTheme();
     const theme = useTheme();
-    boxShadow = theme.palette.mode === 'dark' ? boxShadow || true : boxShadow;
+    boxShadow = theme.palette.mode === "dark" ? boxShadow || true : boxShadow;
 
 
     return (
     return (
       <Card
       <Card
@@ -63,23 +72,24 @@ const MainCard = forwardRef(
         ref={ref}
         ref={ref}
         {...others}
         {...others}
         sx={{
         sx={{
-          position: 'relative',
-          border: border ? '1px solid' : 'none',
+          position: "relative",
+          border: border ? "1px solid" : "none",
           borderRadius: 1,
           borderRadius: 1,
-          borderColor: theme.palette.mode === 'dark' ? theme.palette.divider : theme.palette.grey.A800,
-          boxShadow: boxShadow && (!border || theme.palette.mode === 'dark') ? shadow || theme.customShadows.z1 : 'inherit',
-          ':hover': {
-            boxShadow: boxShadow ? shadow || theme.customShadows.z1 : 'inherit'
+          borderColor: theme.palette.mode === "dark" ? theme.palette.divider : theme.palette.grey.A800,
+          boxShadow:
+            boxShadow && (!border || theme.palette.mode === "dark") ? shadow || theme.customShadows.z1 : "inherit",
+          ":hover": {
+            boxShadow: boxShadow ? shadow || theme.customShadows.z1 : "inherit"
           },
           },
           ...(modal && {
           ...(modal && {
-            position: 'absolute' as 'absolute',
-            top: '50%',
-            left: '50%',
-            transform: 'translate(-50%, -50%)',
-            width: { xs: `calc( 100% - 50px)`, sm: 'auto' },
-            '& .MuiCardContent-root': {
-              overflowY: 'auto',
-              minHeight: 'auto',
+            position: "absolute" as "absolute",
+            top: "50%",
+            left: "50%",
+            transform: "translate(-50%, -50%)",
+            width: { xs: `calc( 100% - 50px)`, sm: "auto" },
+            "& .MuiCardContent-root": {
+              overflowY: "auto",
+              minHeight: "auto",
               maxHeight: `calc(100vh - 200px)`
               maxHeight: `calc(100vh - 200px)`
             }
             }
           }),
           }),
@@ -90,13 +100,15 @@ const MainCard = forwardRef(
         {!darkTitle && title && (
         {!darkTitle && title && (
           <CardHeader
           <CardHeader
             sx={headerSX}
             sx={headerSX}
-            titleTypographyProps={{ variant: 'subtitle1' }}
+            titleTypographyProps={{ variant: "subtitle1" }}
             title={title}
             title={title}
             action={secondary}
             action={secondary}
             subheader={subheader}
             subheader={subheader}
           />
           />
         )}
         )}
-        {darkTitle && title && <CardHeader sx={headerSX} title={<Typography variant="h4">{title}</Typography>} action={secondary} />}
+        {darkTitle && title && (
+          <CardHeader sx={headerSX} title={<Typography variant="h4">{title}</Typography>} action={secondary} />
+        )}
 
 
         {/* content & header divider */}
         {/* content & header divider */}
         {title && divider && <Divider />}
         {title && divider && <Divider />}

+ 7 - 7
src/components/RTLLayout.tsx

@@ -1,14 +1,14 @@
-import { useEffect, ReactNode } from 'react';
+import { useEffect, ReactNode } from "react";
 
 
 // material-ui
 // material-ui
-import { CacheProvider } from '@emotion/react';
-import createCache, { StylisPlugin } from '@emotion/cache';
+import { CacheProvider } from "@emotion/react";
+import createCache, { StylisPlugin } from "@emotion/cache";
 
 
 // third-party
 // third-party
-import rtlPlugin from 'stylis-plugin-rtl';
+import rtlPlugin from "stylis-plugin-rtl";
 
 
 // project import
 // project import
-import useConfig from 'hooks/useConfig';
+import useConfig from "@/hooks/useConfig";
 
 
 // ==============================|| RTL LAYOUT ||============================== //
 // ==============================|| RTL LAYOUT ||============================== //
 
 
@@ -24,9 +24,9 @@ const RTLLayout = ({ children }: Props) => {
   }, [themeDirection]);
   }, [themeDirection]);
 
 
   const cacheRtl = createCache({
   const cacheRtl = createCache({
-    key: themeDirection === 'rtl' ? 'rtl' : 'css',
+    key: themeDirection === "rtl" ? "rtl" : "css",
     prepend: true,
     prepend: true,
-    stylisPlugins: themeDirection === 'rtl' ? [rtlPlugin as StylisPlugin] : []
+    stylisPlugins: themeDirection === "rtl" ? [rtlPlugin as StylisPlugin] : []
   });
   });
 
 
   return <CacheProvider value={cacheRtl}>{children}</CacheProvider>;
   return <CacheProvider value={cacheRtl}>{children}</CacheProvider>;

+ 3 - 3
src/components/cards/skeleton/ProductPlaceholder.tsx

@@ -1,8 +1,8 @@
 // material-ui
 // material-ui
-import { CardContent, Grid, Skeleton, Stack } from '@mui/material';
+import { CardContent, Grid, Skeleton, Stack } from "@mui/material";
 
 
 // project import
 // project import
-import MainCard from 'components/MainCard';
+import MainCard from "@/components/MainCard";
 
 
 // ===========================|| SKELETON TOTAL GROWTH BAR CHART ||=========================== //
 // ===========================|| SKELETON TOTAL GROWTH BAR CHART ||=========================== //
 
 
@@ -17,7 +17,7 @@ const ProductPlaceholder = () => (
         <Grid item xs={12}>
         <Grid item xs={12}>
           <Skeleton variant="rectangular" height={45} />
           <Skeleton variant="rectangular" height={45} />
         </Grid>
         </Grid>
-        <Grid item xs={12} sx={{ pt: '8px !important' }}>
+        <Grid item xs={12} sx={{ pt: "8px !important" }}>
           <Stack direction="row" alignItems="center" spacing={1}>
           <Stack direction="row" alignItems="center" spacing={1}>
             <Skeleton variant="rectangular" height={20} width={90} />
             <Skeleton variant="rectangular" height={20} width={90} />
             <Skeleton variant="rectangular" height={20} width={38} />
             <Skeleton variant="rectangular" height={20} width={38} />

+ 10 - 10
src/components/cards/statistics/AnalyticEcommerce.tsx

@@ -1,11 +1,11 @@
 // material-ui
 // material-ui
-import { Box, Chip, ChipProps, Grid, Stack, Typography } from '@mui/material';
+import { Box, Chip, ChipProps, Grid, Stack, Typography } from "@mui/material";
 
 
 // project import
 // project import
-import MainCard from 'components/MainCard';
+import MainCard from "@/components/MainCard";
 
 
 // assets
 // assets
-import { RiseOutlined, FallOutlined } from '@ant-design/icons';
+import { RiseOutlined, FallOutlined } from "@ant-design/icons";
 
 
 // ==============================|| STATISTICS - ECOMMERCE CARD  ||============================== //
 // ==============================|| STATISTICS - ECOMMERCE CARD  ||============================== //
 
 
@@ -14,11 +14,11 @@ interface Props {
   count: string;
   count: string;
   percentage?: number;
   percentage?: number;
   isLoss?: boolean;
   isLoss?: boolean;
-  color?: ChipProps['color'];
+  color?: ChipProps["color"];
   extra: string;
   extra: string;
 }
 }
 
 
-const AnalyticEcommerce = ({ color = 'primary', title, count, percentage, isLoss, extra }: Props) => (
+const AnalyticEcommerce = ({ color = "primary", title, count, percentage, isLoss, extra }: Props) => (
   <MainCard contentSX={{ p: 2.25 }}>
   <MainCard contentSX={{ p: 2.25 }}>
     <Stack spacing={0.5}>
     <Stack spacing={0.5}>
       <Typography variant="h6" color="textSecondary">
       <Typography variant="h6" color="textSecondary">
@@ -37,8 +37,8 @@ const AnalyticEcommerce = ({ color = 'primary', title, count, percentage, isLoss
               color={color}
               color={color}
               icon={
               icon={
                 <>
                 <>
-                  {!isLoss && <RiseOutlined style={{ fontSize: '0.75rem', color: 'inherit' }} />}
-                  {isLoss && <FallOutlined style={{ fontSize: '0.75rem', color: 'inherit' }} />}
+                  {!isLoss && <RiseOutlined style={{ fontSize: "0.75rem", color: "inherit" }} />}
+                  {isLoss && <FallOutlined style={{ fontSize: "0.75rem", color: "inherit" }} />}
                 </>
                 </>
               }
               }
               label={`${percentage}%`}
               label={`${percentage}%`}
@@ -51,10 +51,10 @@ const AnalyticEcommerce = ({ color = 'primary', title, count, percentage, isLoss
     </Stack>
     </Stack>
     <Box sx={{ pt: 2.25 }}>
     <Box sx={{ pt: 2.25 }}>
       <Typography variant="caption" color="textSecondary">
       <Typography variant="caption" color="textSecondary">
-        You made an extra{' '}
-        <Typography component="span" variant="caption" sx={{ color: `${color || 'primary'}.main` }}>
+        You made an extra{" "}
+        <Typography component="span" variant="caption" sx={{ color: `${color || "primary"}.main` }}>
           {extra}
           {extra}
-        </Typography>{' '}
+        </Typography>{" "}
         this year
         this year
       </Typography>
       </Typography>
     </Box>
     </Box>

+ 7 - 7
src/components/cards/statistics/AnalyticsDataCard.tsx

@@ -1,11 +1,11 @@
 // material-ui
 // material-ui
-import { Box, Chip, ChipProps, Stack, Typography } from '@mui/material';
+import { Box, Chip, ChipProps, Stack, Typography } from "@mui/material";
 
 
 // project import
 // project import
-import MainCard from 'components/MainCard';
+import MainCard from "@/components/MainCard";
 
 
 // assets
 // assets
-import { RiseOutlined, FallOutlined } from '@ant-design/icons';
+import { RiseOutlined, FallOutlined } from "@ant-design/icons";
 
 
 // ==============================|| STATISTICS - ECOMMERCE CARD  ||============================== //
 // ==============================|| STATISTICS - ECOMMERCE CARD  ||============================== //
 
 
@@ -14,11 +14,11 @@ interface Props {
   count: string;
   count: string;
   percentage?: number;
   percentage?: number;
   isLoss?: boolean;
   isLoss?: boolean;
-  color?: ChipProps['color'];
+  color?: ChipProps["color"];
   children: any;
   children: any;
 }
 }
 
 
-const AnalyticsDataCard = ({ color = 'primary', title, count, percentage, isLoss, children }: Props) => (
+const AnalyticsDataCard = ({ color = "primary", title, count, percentage, isLoss, children }: Props) => (
   <MainCard content={false}>
   <MainCard content={false}>
     <Box sx={{ p: 2.25 }}>
     <Box sx={{ p: 2.25 }}>
       <Stack spacing={0.5}>
       <Stack spacing={0.5}>
@@ -35,8 +35,8 @@ const AnalyticsDataCard = ({ color = 'primary', title, count, percentage, isLoss
               color={color}
               color={color}
               icon={
               icon={
                 <>
                 <>
-                  {!isLoss && <RiseOutlined style={{ fontSize: '0.75rem', color: 'inherit' }} />}
-                  {isLoss && <FallOutlined style={{ fontSize: '0.75rem', color: 'inherit' }} />}
+                  {!isLoss && <RiseOutlined style={{ fontSize: "0.75rem", color: "inherit" }} />}
+                  {isLoss && <FallOutlined style={{ fontSize: "0.75rem", color: "inherit" }} />}
                 </>
                 </>
               }
               }
               label={`${percentage}%`}
               label={`${percentage}%`}

+ 7 - 7
src/components/logo/index.tsx

@@ -1,14 +1,14 @@
-import { Link } from 'react-router-dom';
-import { To } from 'history';
+import { Link } from "react-router-dom";
+import { To } from "history";
 
 
 // material-ui
 // material-ui
-import { ButtonBase } from '@mui/material';
-import { SxProps } from '@mui/system';
+import { ButtonBase } from "@mui/material";
+import { SxProps } from "@mui/system";
 
 
 // project import
 // project import
-import Logo from './LogoMain';
-import LogoIcon from './LogoIcon';
-import config from 'config';
+import Logo from "./LogoMain";
+import LogoIcon from "./LogoIcon";
+import config from "@/config";
 
 
 // ==============================|| MAIN LOGO ||============================== //
 // ==============================|| MAIN LOGO ||============================== //
 
 

+ 1 - 1
src/config.ts

@@ -1,5 +1,5 @@
 // types
 // types
-import { DefaultConfigProps } from 'types/config';
+import { DefaultConfigProps } from '@/types/config';
 
 
 export const drawerWidth = 260;
 export const drawerWidth = 260;
 
 

+ 5 - 5
src/contexts/ConfigContext.tsx

@@ -1,11 +1,11 @@
-import { createContext, ReactNode } from 'react';
+import { createContext, ReactNode } from "react";
 
 
 // project import
 // project import
-import config from 'config';
-import useLocalStorage from 'hooks/useLocalStorage';
+import config from "@/config";
+import useLocalStorage from "@/hooks/useLocalStorage";
 
 
 // types
 // types
-import { CustomizationProps, FontFamily, PresetColor, ThemeDirection, ThemeMode } from 'types/config';
+import { CustomizationProps, FontFamily, PresetColor, ThemeDirection, ThemeMode } from "@/types/config";
 
 
 // initial state
 // initial state
 const initialState: CustomizationProps = {
 const initialState: CustomizationProps = {
@@ -27,7 +27,7 @@ type ConfigProviderProps = {
 };
 };
 
 
 function ConfigProvider({ children }: ConfigProviderProps) {
 function ConfigProvider({ children }: ConfigProviderProps) {
-  const [config, setConfig] = useLocalStorage('mantis-react-ts-config', initialState);
+  const [config, setConfig] = useLocalStorage("mantis-react-ts-config", initialState);
 
 
   const onChangeContainer = () => {
   const onChangeContainer = () => {
     setConfig({
     setConfig({

+ 14 - 12
src/contexts/FirebaseContext.tsx

@@ -1,17 +1,17 @@
-import React, { createContext, useEffect, useReducer } from 'react';
+import React, { createContext, useEffect, useReducer } from "react";
 
 
 // third-party
 // third-party
-import firebase from 'firebase/compat/app';
-import 'firebase/compat/auth';
+import firebase from "firebase/compat/app";
+import "firebase/compat/auth";
 
 
 // action - state management
 // action - state management
-import { LOGIN, LOGOUT } from 'store/reducers/actions';
-import authReducer from 'store/reducers/auth';
+import { LOGIN, LOGOUT } from "@/store/reducers/actions";
+import authReducer from "@/store/reducers/auth";
 
 
 // project import
 // project import
-import Loader from 'components/Loader';
-import { FIREBASE_API } from 'config';
-import { AuthProps, FirebaseContextType } from 'types/auth';
+import Loader from "@/components/Loader";
+import { FIREBASE_API } from "@/config";
+import { AuthProps, FirebaseContextType } from "@/types/auth";
 
 
 // firebase initialize
 // firebase initialize
 if (!firebase.apps.length) {
 if (!firebase.apps.length) {
@@ -43,8 +43,8 @@ export const FirebaseProvider = ({ children }: { children: React.ReactElement })
               user: {
               user: {
                 id: user.uid,
                 id: user.uid,
                 email: user.email!,
                 email: user.email!,
-                name: user.displayName || 'Stebin Ben',
-                role: 'UI/UX Designer'
+                name: user.displayName || "Stebin Ben",
+                role: "UI/UX Designer"
               }
               }
             }
             }
           });
           });
@@ -58,7 +58,8 @@ export const FirebaseProvider = ({ children }: { children: React.ReactElement })
     [dispatch]
     [dispatch]
   );
   );
 
 
-  const firebaseEmailPasswordSignIn = (email: string, password: string) => firebase.auth().signInWithEmailAndPassword(email, password);
+  const firebaseEmailPasswordSignIn = (email: string, password: string) =>
+    firebase.auth().signInWithEmailAndPassword(email, password);
 
 
   const firebaseGoogleSignIn = () => {
   const firebaseGoogleSignIn = () => {
     const provider = new firebase.auth.GoogleAuthProvider();
     const provider = new firebase.auth.GoogleAuthProvider();
@@ -75,7 +76,8 @@ export const FirebaseProvider = ({ children }: { children: React.ReactElement })
     return firebase.auth().signInWithPopup(provider);
     return firebase.auth().signInWithPopup(provider);
   };
   };
 
 
-  const firebaseRegister = async (email: string, password: string) => firebase.auth().createUserWithEmailAndPassword(email, password);
+  const firebaseRegister = async (email: string, password: string) =>
+    firebase.auth().createUserWithEmailAndPassword(email, password);
 
 
   const logout = () => firebase.auth().signOut();
   const logout = () => firebase.auth().signOut();
 
 

+ 3 - 3
src/hooks/useAuth.ts

@@ -1,14 +1,14 @@
-import { useContext } from 'react';
+import { useContext } from "react";
 
 
 // auth provider
 // auth provider
-import AuthContext from 'contexts/FirebaseContext';
+import AuthContext from "@/contexts/FirebaseContext";
 
 
 // ==============================|| AUTH HOOKS ||============================== //
 // ==============================|| AUTH HOOKS ||============================== //
 
 
 const useAuth = () => {
 const useAuth = () => {
   const context = useContext(AuthContext);
   const context = useContext(AuthContext);
 
 
-  if (!context) throw new Error('context must be use inside provider');
+  if (!context) throw new Error("context must be use inside provider");
 
 
   return context;
   return context;
 };
 };

+ 2 - 2
src/hooks/useConfig.ts

@@ -1,5 +1,5 @@
-import { useContext } from 'react';
-import { ConfigContext } from 'contexts/ConfigContext';
+import { useContext } from "react";
+import { ConfigContext } from "@/contexts/ConfigContext";
 
 
 // ==============================|| CONFIG - HOOKS  ||============================== //
 // ==============================|| CONFIG - HOOKS  ||============================== //
 
 

+ 34 - 11
src/index.tsx

@@ -1,25 +1,48 @@
-import { createRoot } from 'react-dom/client';
-import { BrowserRouter } from 'react-router-dom';
+import React from "react";
+import { createRoot } from "react-dom/client";
+import { BrowserRouter } from "react-router-dom";
 
 
 // third-party
 // third-party
-import { Provider as ReduxProvider } from 'react-redux';
+import { Provider as ReduxProvider } from "react-redux";
 
 
 // scroll bar
 // scroll bar
-import 'simplebar/src/simplebar.css';
+import "simplebar/src/simplebar.css";
 
 
 // apex-chart
 // apex-chart
-import 'assets/third-party/apex-chart.css';
-import 'assets/third-party/react-table.css';
+import "@/assets/third-party/apex-chart.css";
+import "@/assets/third-party/react-table.css";
+
+// resize observer
+import ResizeObserver from "resize-observer-polyfill";
 
 
 // project import
 // project import
-import App from './App';
-import { store } from 'store';
-import { ConfigProvider } from 'contexts/ConfigContext';
-import reportWebVitals from './reportWebVitals';
+import App from "@/App";
+import { store } from "@/store";
+import { ConfigProvider } from "@/contexts/ConfigContext";
+import reportWebVitals from "@/reportWebVitals";
 
 
-const container = document.getElementById('root');
+const container = document.getElementById("root");
 const root = createRoot(container!);
 const root = createRoot(container!);
 
 
+const ro = new ResizeObserver((entries, observer) =>
+  entries.forEach((entry) => {
+    const { left, top, width, height } = entry.contentRect;
+
+    if (import.meta.env.DEV) {
+      console.log("Element:", entry.target);
+      console.log(`Element's size: ${width}px x ${height}px`);
+      console.log(`Element's paddings: ${top}px ; ${left}px`);
+    }
+
+    document.documentElement.style.setProperty("--width", `${width - entry.target.clientWidth}px`);
+    document.documentElement.style.setProperty("--height", `${height - entry.target.clientHeight}px`);
+
+    observer.observe(entry.target);
+  })
+);
+
+ro.observe(container!);
+
 // ==============================|| MAIN - REACT DOM RENDER  ||============================== //
 // ==============================|| MAIN - REACT DOM RENDER  ||============================== //
 
 
 root.render(
 root.render(

+ 56 - 41
src/layout/CommonLayout/FooterBlock.tsx

@@ -1,23 +1,23 @@
 // material-ui
 // material-ui
-import { useTheme } from '@mui/material/styles';
-import { Box, Button, Container, CardMedia, Divider, Grid, Link, Typography } from '@mui/material';
+import { useTheme } from "@mui/material/styles";
+import { Box, Button, Container, CardMedia, Divider, Grid, Link, Typography } from "@mui/material";
 
 
 // third party
 // third party
-import { motion } from 'framer-motion';
+import { motion } from "framer-motion";
 
 
 // project import
 // project import
-import useConfig from 'hooks/useConfig';
+import useConfig from "@/hooks/useConfig";
 
 
 // assets
 // assets
-import { SendOutlined } from '@ant-design/icons';
+import { SendOutlined } from "@ant-design/icons";
 
 
-import imgfooterlogo from 'assets/images/landing/codedthemes-logo.svg';
-import imgfootersoc1 from 'assets/images/landing/img-soc1.svg';
-import imgfootersoc2 from 'assets/images/landing/img-soc2.svg';
-import imgfootersoc3 from 'assets/images/landing/img-soc3.svg';
-import AnimateButton from 'components/@extended/AnimateButton';
+import imgfooterlogo from "@/assets/images/landing/codedthemes-logo.svg";
+import imgfootersoc1 from "@/assets/images/landing/img-soc1.svg";
+import imgfootersoc2 from "@/assets/images/landing/img-soc2.svg";
+import imgfootersoc3 from "@/assets/images/landing/img-soc3.svg";
+import AnimateButton from "@/components/@extended/AnimateButton";
 
 
-const dashImage = require.context('assets/images/landing', true);
+const dashImage = require.context("assets/images/landing", true);
 
 
 // ==============================|| LANDING - FOOTER PAGE ||============================== //
 // ==============================|| LANDING - FOOTER PAGE ||============================== //
 
 
@@ -31,11 +31,11 @@ const FooterBlock = ({ isFull }: showProps) => {
 
 
   const linkSX = {
   const linkSX = {
     color: theme.palette.common.white,
     color: theme.palette.common.white,
-    fontSize: '0.875rem',
+    fontSize: "0.875rem",
     fontWeight: 400,
     fontWeight: 400,
-    opacity: '0.6',
-    '&:hover': {
-      opacity: '1'
+    opacity: "0.6",
+    "&:hover": {
+      opacity: "1"
     }
     }
   };
   };
 
 
@@ -44,17 +44,17 @@ const FooterBlock = ({ isFull }: showProps) => {
       {isFull && (
       {isFull && (
         <Box
         <Box
           sx={{
           sx={{
-            position: 'relative',
+            position: "relative",
             bgcolor: theme.palette.grey.A700,
             bgcolor: theme.palette.grey.A700,
             zIndex: 1,
             zIndex: 1,
             mt: { xs: 0, md: 13.75 },
             mt: { xs: 0, md: 13.75 },
             pt: { xs: 8, sm: 7.5, md: 18.75 },
             pt: { xs: 8, sm: 7.5, md: 18.75 },
             pb: { xs: 2.5, md: 10 },
             pb: { xs: 2.5, md: 10 },
-            '&:after': {
+            "&:after": {
               content: '""',
               content: '""',
-              position: 'absolute',
-              width: '100%',
-              height: '80%',
+              position: "absolute",
+              width: "100%",
+              height: "80%",
               bottom: 0,
               bottom: 0,
               left: 0,
               left: 0,
               background: `linear-gradient(180deg, transparent 0%, ${theme.palette.grey.A700} 70%)`
               background: `linear-gradient(180deg, transparent 0%, ${theme.palette.grey.A700} 70%)`
@@ -65,18 +65,18 @@ const FooterBlock = ({ isFull }: showProps) => {
             component="img"
             component="img"
             image={dashImage(`./img-footer-${presetColor}.png`)}
             image={dashImage(`./img-footer-${presetColor}.png`)}
             sx={{
             sx={{
-              display: { xs: 'none', md: 'block' },
-              width: '55%',
+              display: { xs: "none", md: "block" },
+              width: "55%",
               maxWidth: 700,
               maxWidth: 700,
-              position: 'absolute',
-              top: '-28%',
+              position: "absolute",
+              top: "-28%",
               right: 0
               right: 0
             }}
             }}
           />
           />
           <Container>
           <Container>
             <Grid container alignItems="center" justifyContent="space-between" spacing={2}>
             <Grid container alignItems="center" justifyContent="space-between" spacing={2}>
-              <Grid item xs={12} md={6} sx={{ position: 'relative', zIndex: 1 }}>
-                <Grid container spacing={2} sx={{ [theme.breakpoints.down('md')]: { pr: 0, textAlign: 'center' } }}>
+              <Grid item xs={12} md={6} sx={{ position: "relative", zIndex: 1 }}>
+                <Grid container spacing={2} sx={{ [theme.breakpoints.down("md")]: { pr: 0, textAlign: "center" } }}>
                   <Grid item xs={12}>
                   <Grid item xs={12}>
                     <Typography variant="subtitle1" sx={{ color: theme.palette.common.white }}>
                     <Typography variant="subtitle1" sx={{ color: theme.palette.common.white }}>
                       Roadmap
                       Roadmap
@@ -87,7 +87,7 @@ const FooterBlock = ({ isFull }: showProps) => {
                       initial={{ opacity: 0, translateY: 550 }}
                       initial={{ opacity: 0, translateY: 550 }}
                       animate={{ opacity: 1, translateY: 0 }}
                       animate={{ opacity: 1, translateY: 0 }}
                       transition={{
                       transition={{
-                        type: 'spring',
+                        type: "spring",
                         stiffness: 150,
                         stiffness: 150,
                         damping: 30
                         damping: 30
                       }}
                       }}
@@ -109,7 +109,7 @@ const FooterBlock = ({ isFull }: showProps) => {
                     </Typography>
                     </Typography>
                   </Grid>
                   </Grid>
                   <Grid item xs={12} sx={{ my: 2 }}>
                   <Grid item xs={12} sx={{ my: 2 }}>
-                    <Box sx={{ display: 'inline-block' }}>
+                    <Box sx={{ display: "inline-block" }}>
                       <AnimateButton>
                       <AnimateButton>
                         <Button
                         <Button
                           size="large"
                           size="large"
@@ -139,19 +139,19 @@ const FooterBlock = ({ isFull }: showProps) => {
                 initial={{ opacity: 0, translateY: 550 }}
                 initial={{ opacity: 0, translateY: 550 }}
                 animate={{ opacity: 1, translateY: 0 }}
                 animate={{ opacity: 1, translateY: 0 }}
                 transition={{
                 transition={{
-                  type: 'spring',
+                  type: "spring",
                   stiffness: 150,
                   stiffness: 150,
                   damping: 30
                   damping: 30
                 }}
                 }}
               >
               >
                 <Grid container spacing={2}>
                 <Grid container spacing={2}>
                   <Grid item xs={12}>
                   <Grid item xs={12}>
-                    <CardMedia component="img" image={imgfooterlogo} sx={{ width: 'auto' }} />
+                    <CardMedia component="img" image={imgfooterlogo} sx={{ width: "auto" }} />
                   </Grid>
                   </Grid>
                   <Grid item xs={12}>
                   <Grid item xs={12}>
                     <Typography variant="subtitle1" sx={{ fontWeight: 400, color: theme.palette.common.white }}>
                     <Typography variant="subtitle1" sx={{ fontWeight: 400, color: theme.palette.common.white }}>
-                      Since 2017, More than 50K+ Developers trust the CodedThemes Digital Product. Mantis React is Manage under their
-                      Experienced Team Players.
+                      Since 2017, More than 50K+ Developers trust the CodedThemes Digital Product. Mantis React is
+                      Manage under their Experienced Team Players.
                     </Typography>
                     </Typography>
                   </Grid>
                   </Grid>
                 </Grid>
                 </Grid>
@@ -164,7 +164,7 @@ const FooterBlock = ({ isFull }: showProps) => {
                     initial={{ opacity: 0, translateY: 550 }}
                     initial={{ opacity: 0, translateY: 550 }}
                     animate={{ opacity: 1, translateY: 0 }}
                     animate={{ opacity: 1, translateY: 0 }}
                     transition={{
                     transition={{
-                      type: 'spring',
+                      type: "spring",
                       stiffness: 150,
                       stiffness: 150,
                       damping: 30,
                       damping: 30,
                       delay: 0.2
                       delay: 0.2
@@ -187,7 +187,12 @@ const FooterBlock = ({ isFull }: showProps) => {
                         </Link>
                         </Link>
                       </Grid>
                       </Grid>
                       <Grid item xs={12}>
                       <Grid item xs={12}>
-                        <Link href="https://material-ui.com/store/contributors/codedthemes/" underline="none" sx={linkSX} target="_blank">
+                        <Link
+                          href="https://material-ui.com/store/contributors/codedthemes/"
+                          underline="none"
+                          sx={linkSX}
+                          target="_blank"
+                        >
                           Portfolio
                           Portfolio
                         </Link>
                         </Link>
                       </Grid>
                       </Grid>
@@ -204,7 +209,7 @@ const FooterBlock = ({ isFull }: showProps) => {
                     initial={{ opacity: 0, translateY: 550 }}
                     initial={{ opacity: 0, translateY: 550 }}
                     animate={{ opacity: 1, translateY: 0 }}
                     animate={{ opacity: 1, translateY: 0 }}
                     transition={{
                     transition={{
-                      type: 'spring',
+                      type: "spring",
                       stiffness: 150,
                       stiffness: 150,
                       damping: 30,
                       damping: 30,
                       delay: 0.4
                       delay: 0.4
@@ -217,7 +222,12 @@ const FooterBlock = ({ isFull }: showProps) => {
                         </Typography>
                         </Typography>
                       </Grid>
                       </Grid>
                       <Grid item xs={12}>
                       <Grid item xs={12}>
-                        <Link href="https://codedthemes.gitbook.io/mantis/" underline="none" target="_blank" sx={linkSX}>
+                        <Link
+                          href="https://codedthemes.gitbook.io/mantis/"
+                          underline="none"
+                          target="_blank"
+                          sx={linkSX}
+                        >
                           Documentation
                           Documentation
                         </Link>
                         </Link>
                       </Grid>
                       </Grid>
@@ -227,7 +237,12 @@ const FooterBlock = ({ isFull }: showProps) => {
                         </Link>
                         </Link>
                       </Grid>
                       </Grid>
                       <Grid item xs={12}>
                       <Grid item xs={12}>
-                        <Link href="https://codedthemes.gitbook.io/mantis/changelog" underline="none" target="_blank" sx={linkSX}>
+                        <Link
+                          href="https://codedthemes.gitbook.io/mantis/changelog"
+                          underline="none"
+                          target="_blank"
+                          sx={linkSX}
+                        >
                           Change Log
                           Change Log
                         </Link>
                         </Link>
                       </Grid>
                       </Grid>
@@ -239,7 +254,7 @@ const FooterBlock = ({ isFull }: showProps) => {
                     initial={{ opacity: 0, translateY: 550 }}
                     initial={{ opacity: 0, translateY: 550 }}
                     animate={{ opacity: 1, translateY: 0 }}
                     animate={{ opacity: 1, translateY: 0 }}
                     transition={{
                     transition={{
-                      type: 'spring',
+                      type: "spring",
                       stiffness: 150,
                       stiffness: 150,
                       damping: 30,
                       damping: 30,
                       delay: 0.6
                       delay: 0.6
@@ -289,11 +304,11 @@ const FooterBlock = ({ isFull }: showProps) => {
           </Grid>
           </Grid>
         </Container>
         </Container>
       </Box>
       </Box>
-      <Divider sx={{ borderColor: 'grey.700' }} />
+      <Divider sx={{ borderColor: "grey.700" }} />
       <Box
       <Box
         sx={{
         sx={{
           py: 1.5,
           py: 1.5,
-          bgcolor: theme.palette.mode === 'dark' ? theme.palette.grey[50] : theme.palette.grey[800]
+          bgcolor: theme.palette.mode === "dark" ? theme.palette.grey[50] : theme.palette.grey[800]
         }}
         }}
       >
       >
         <Container>
         <Container>
@@ -304,7 +319,7 @@ const FooterBlock = ({ isFull }: showProps) => {
               </Typography>
               </Typography>
             </Grid>
             </Grid>
             <Grid item xs={12} sm={4}>
             <Grid item xs={12} sm={4}>
-              <Grid container spacing={2} alignItems="center" sx={{ justifyContent: 'flex-end' }}>
+              <Grid container spacing={2} alignItems="center" sx={{ justifyContent: "flex-end" }}>
                 <Grid item>
                 <Grid item>
                   <Link href="#" underline="none" sx={linkSX}>
                   <Link href="#" underline="none" sx={linkSX}>
                     <CardMedia component="img" image={imgfootersoc1} />
                     <CardMedia component="img" image={imgfootersoc1} />

+ 90 - 53
src/layout/CommonLayout/Header.tsx

@@ -1,10 +1,10 @@
-import * as React from 'react';
-import { useState } from 'react';
-import { Link as RouterLink } from 'react-router-dom';
+import * as React from "react";
+import { useState } from "react";
+import { Link as RouterLink } from "react-router-dom";
 
 
 // material-ui
 // material-ui
-import AppBar from '@mui/material/AppBar';
-import { useTheme } from '@mui/material/styles';
+import AppBar from "@mui/material/AppBar";
+import { useTheme } from "@mui/material/styles";
 import {
 import {
   useMediaQuery,
   useMediaQuery,
   Box,
   Box,
@@ -21,16 +21,16 @@ import {
   Toolbar,
   Toolbar,
   Typography,
   Typography,
   useScrollTrigger
   useScrollTrigger
-} from '@mui/material';
+} from "@mui/material";
 
 
 // project import
 // project import
-import config from 'config';
-import IconButton from 'components/@extended/IconButton';
-import AnimateButton from 'components/@extended/AnimateButton';
-import Logo from 'components/logo';
+import config from "@/config";
+import IconButton from "@/components/@extended/IconButton";
+import AnimateButton from "@/components/@extended/AnimateButton";
+import Logo from "@/components/logo";
 
 
 // assets
 // assets
-import { MenuOutlined, LineOutlined } from '@ant-design/icons';
+import { MenuOutlined, LineOutlined } from "@ant-design/icons";
 
 
 // ==============================|| COMPONENTS - APP BAR ||============================== //
 // ==============================|| COMPONENTS - APP BAR ||============================== //
 
 
@@ -45,8 +45,8 @@ function ElevationScroll({ layout, children, window }: any) {
     target: window ? window() : undefined
     target: window ? window() : undefined
   });
   });
 
 
-  const backColorScroll = theme.palette.mode === 'dark' ? theme.palette.grey[50] : theme.palette.grey[800];
-  const backColor = layout !== 'landing' ? backColorScroll : 'transparent';
+  const backColorScroll = theme.palette.mode === "dark" ? theme.palette.grey[50] : theme.palette.grey[800];
+  const backColor = layout !== "landing" ? backColorScroll : "transparent";
 
 
   return React.cloneElement(children, {
   return React.cloneElement(children, {
     style: {
     style: {
@@ -60,14 +60,14 @@ interface Props {
   layout?: string;
   layout?: string;
 }
 }
 
 
-const Header = ({ handleDrawerOpen, layout = 'landing', ...others }: Props) => {
+const Header = ({ handleDrawerOpen, layout = "landing", ...others }: Props) => {
   const theme = useTheme();
   const theme = useTheme();
-  const matchDownMd = useMediaQuery(theme.breakpoints.down('md'));
+  const matchDownMd = useMediaQuery(theme.breakpoints.down("md"));
   const [drawerToggle, setDrawerToggle] = useState<boolean>(false);
   const [drawerToggle, setDrawerToggle] = useState<boolean>(false);
 
 
   /** Method called on multiple components with different event types */
   /** Method called on multiple components with different event types */
   const drawerToggler = (open: boolean) => (event: any) => {
   const drawerToggler = (open: boolean) => (event: any) => {
-    if (event.type! === 'keydown' && (event.key! === 'Tab' || event.key! === 'Shift')) {
+    if (event.type! === "keydown" && (event.key! === "Tab" || event.key! === "Shift")) {
       return;
       return;
     }
     }
     setDrawerToggle(open);
     setDrawerToggle(open);
@@ -75,45 +75,58 @@ const Header = ({ handleDrawerOpen, layout = 'landing', ...others }: Props) => {
 
 
   return (
   return (
     <ElevationScroll layout={layout} {...others}>
     <ElevationScroll layout={layout} {...others}>
-      <AppBar sx={{ bgcolor: 'transparent', color: theme.palette.text.primary, boxShadow: 'none' }}>
+      <AppBar sx={{ bgcolor: "transparent", color: theme.palette.text.primary, boxShadow: "none" }}>
         <Container disableGutters={matchDownMd}>
         <Container disableGutters={matchDownMd}>
           <Toolbar sx={{ px: { xs: 1.5, md: 0, lg: 0 }, py: 2 }}>
           <Toolbar sx={{ px: { xs: 1.5, md: 0, lg: 0 }, py: 2 }}>
-            <Stack direction="row" sx={{ flexGrow: 1, display: { xs: 'none', md: 'block' } }} alignItems="center">
-              <Typography component="div" sx={{ textAlign: 'left', display: 'inline-block' }}>
+            <Stack direction="row" sx={{ flexGrow: 1, display: { xs: "none", md: "block" } }} alignItems="center">
+              <Typography component="div" sx={{ textAlign: "left", display: "inline-block" }}>
                 <Logo reverse to="/" />
                 <Logo reverse to="/" />
               </Typography>
               </Typography>
               <Chip
               <Chip
-                label={process.env.REACT_APP_VERSION}
+                label={import.meta.env.VITE_APP_VERSION}
                 variant="outlined"
                 variant="outlined"
                 size="small"
                 size="small"
                 color="secondary"
                 color="secondary"
-                sx={{ mt: 0.5, ml: 1, fontSize: '0.725rem', height: 20, '& .MuiChip-label': { px: 0.5 } }}
+                sx={{ mt: 0.5, ml: 1, fontSize: "0.725rem", height: 20, "& .MuiChip-label": { px: 0.5 } }}
               />
               />
             </Stack>
             </Stack>
             <Stack
             <Stack
               direction="row"
               direction="row"
               sx={{
               sx={{
-                '& .header-link': { px: 1, '&:hover': { color: theme.palette.primary.main } },
-                display: { xs: 'none', md: 'block' }
+                "& .header-link": { px: 1, "&:hover": { color: theme.palette.primary.main } },
+                display: { xs: "none", md: "block" }
               }}
               }}
               spacing={2}
               spacing={2}
             >
             >
-              <Link className="header-link" color="white" component={RouterLink} to="/login" target="_blank" underline="none">
+              <Link
+                className="header-link"
+                color="white"
+                component={RouterLink}
+                to="/login"
+                target="_blank"
+                underline="none"
+              >
                 Dashboard
                 Dashboard
               </Link>
               </Link>
               <Link
               <Link
                 className="header-link"
                 className="header-link"
-                color={handleDrawerOpen ? 'primary' : 'white'}
+                color={handleDrawerOpen ? "primary" : "white"}
                 component={RouterLink}
                 component={RouterLink}
                 to="/components-overview/buttons"
                 to="/components-overview/buttons"
                 underline="none"
                 underline="none"
               >
               >
                 Components
                 Components
               </Link>
               </Link>
-              <Link className="header-link" color="white" href="https://codedthemes.gitbook.io/mantis/" target="_blank" underline="none">
+              <Link
+                className="header-link"
+                color="white"
+                href="https://codedthemes.gitbook.io/mantis/"
+                target="_blank"
+                underline="none"
+              >
                 Documentation
                 Documentation
               </Link>
               </Link>
-              <Box sx={{ display: 'inline-block' }}>
+              <Box sx={{ display: "inline-block" }}>
                 <AnimateButton>
                 <AnimateButton>
                   <Button
                   <Button
                     component={Link}
                     component={Link}
@@ -129,17 +142,17 @@ const Header = ({ handleDrawerOpen, layout = 'landing', ...others }: Props) => {
             </Stack>
             </Stack>
             <Box
             <Box
               sx={{
               sx={{
-                width: '100%',
-                alignItems: 'center',
-                justifyContent: 'space-between',
-                display: { xs: 'flex', md: 'none' }
+                width: "100%",
+                alignItems: "center",
+                justifyContent: "space-between",
+                display: { xs: "flex", md: "none" }
               }}
               }}
             >
             >
-              <Typography component="div" sx={{ textAlign: 'left', display: 'inline-block' }}>
+              <Typography component="div" sx={{ textAlign: "left", display: "inline-block" }}>
                 <Logo reverse to="/" />
                 <Logo reverse to="/" />
               </Typography>
               </Typography>
               <Stack direction="row" spacing={2}>
               <Stack direction="row" spacing={2}>
-                {layout === 'component' && (
+                {layout === "component" && (
                   <Button
                   <Button
                     variant="outlined"
                     variant="outlined"
                     size="small"
                     size="small"
@@ -151,7 +164,7 @@ const Header = ({ handleDrawerOpen, layout = 'landing', ...others }: Props) => {
                     Dashboard
                     Dashboard
                   </Button>
                   </Button>
                 )}
                 )}
-                {layout !== 'component' && (
+                {layout !== "component" && (
                   <Button
                   <Button
                     variant="outlined"
                     variant="outlined"
                     size="small"
                     size="small"
@@ -166,25 +179,27 @@ const Header = ({ handleDrawerOpen, layout = 'landing', ...others }: Props) => {
 
 
                 <IconButton
                 <IconButton
                   color="secondary"
                   color="secondary"
-                  {...(layout === 'component' ? { onClick: handleDrawerOpen } : { onClick: drawerToggler(true) })}
+                  {...(layout === "component" ? { onClick: handleDrawerOpen } : { onClick: drawerToggler(true) })}
                   sx={{
                   sx={{
-                    '&:hover': { bgcolor: theme.palette.mode === 'dark' ? 'secondary.lighter' : 'secondary.dark' }
+                    "&:hover": { bgcolor: theme.palette.mode === "dark" ? "secondary.lighter" : "secondary.dark" }
                   }}
                   }}
                 >
                 >
-                  <MenuOutlined style={{ color: theme.palette.mode === 'dark' ? 'inherit' : theme.palette.grey[100] }} />
+                  <MenuOutlined
+                    style={{ color: theme.palette.mode === "dark" ? "inherit" : theme.palette.grey[100] }}
+                  />
                 </IconButton>
                 </IconButton>
               </Stack>
               </Stack>
               <Drawer
               <Drawer
                 anchor="top"
                 anchor="top"
                 open={drawerToggle}
                 open={drawerToggle}
                 onClose={drawerToggler(false)}
                 onClose={drawerToggler(false)}
-                sx={{ '& .MuiDrawer-paper': { backgroundImage: 'none' } }}
+                sx={{ "& .MuiDrawer-paper": { backgroundImage: "none" } }}
               >
               >
                 <Box
                 <Box
                   sx={{
                   sx={{
-                    width: 'auto',
-                    '& .MuiListItemIcon-root': {
-                      fontSize: '1rem',
+                    width: "auto",
+                    "& .MuiListItemIcon-root": {
+                      fontSize: "1rem",
                       minWidth: 28
                       minWidth: 28
                     }
                     }
                   }}
                   }}
@@ -193,24 +208,30 @@ const Header = ({ handleDrawerOpen, layout = 'landing', ...others }: Props) => {
                   onKeyDown={drawerToggler(false)}
                   onKeyDown={drawerToggler(false)}
                 >
                 >
                   <List>
                   <List>
-                    <Link style={{ textDecoration: 'none' }} href="/login" target="_blank">
+                    <Link style={{ textDecoration: "none" }} href="/login" target="_blank">
                       <ListItemButton component="span">
                       <ListItemButton component="span">
                         <ListItemIcon>
                         <ListItemIcon>
                           <LineOutlined />
                           <LineOutlined />
                         </ListItemIcon>
                         </ListItemIcon>
-                        <ListItemText primary="Dashboard" primaryTypographyProps={{ variant: 'h6', color: 'text.primary' }} />
+                        <ListItemText
+                          primary="Dashboard"
+                          primaryTypographyProps={{ variant: "h6", color: "text.primary" }}
+                        />
                       </ListItemButton>
                       </ListItemButton>
                     </Link>
                     </Link>
-                    <Link style={{ textDecoration: 'none' }} href="/components-overview/buttons" target="_blank">
+                    <Link style={{ textDecoration: "none" }} href="/components-overview/buttons" target="_blank">
                       <ListItemButton component="span">
                       <ListItemButton component="span">
                         <ListItemIcon>
                         <ListItemIcon>
                           <LineOutlined />
                           <LineOutlined />
                         </ListItemIcon>
                         </ListItemIcon>
-                        <ListItemText primary="All Components" primaryTypographyProps={{ variant: 'h6', color: 'text.primary' }} />
+                        <ListItemText
+                          primary="All Components"
+                          primaryTypographyProps={{ variant: "h6", color: "text.primary" }}
+                        />
                       </ListItemButton>
                       </ListItemButton>
                     </Link>
                     </Link>
                     <Link
                     <Link
-                      style={{ textDecoration: 'none' }}
+                      style={{ textDecoration: "none" }}
                       href="https://github.com/codedthemes/mantis-free-react-admin-template"
                       href="https://github.com/codedthemes/mantis-free-react-admin-template"
                       target="_blank"
                       target="_blank"
                     >
                     >
@@ -218,27 +239,40 @@ const Header = ({ handleDrawerOpen, layout = 'landing', ...others }: Props) => {
                         <ListItemIcon>
                         <ListItemIcon>
                           <LineOutlined />
                           <LineOutlined />
                         </ListItemIcon>
                         </ListItemIcon>
-                        <ListItemText primary="Free Version" primaryTypographyProps={{ variant: 'h6', color: 'text.primary' }} />
+                        <ListItemText
+                          primary="Free Version"
+                          primaryTypographyProps={{ variant: "h6", color: "text.primary" }}
+                        />
                       </ListItemButton>
                       </ListItemButton>
                     </Link>
                     </Link>
-                    <Link style={{ textDecoration: 'none' }} href="https://codedthemes.gitbook.io/mantis/" target="_blank">
+                    <Link
+                      style={{ textDecoration: "none" }}
+                      href="https://codedthemes.gitbook.io/mantis/"
+                      target="_blank"
+                    >
                       <ListItemButton component="span">
                       <ListItemButton component="span">
                         <ListItemIcon>
                         <ListItemIcon>
                           <LineOutlined />
                           <LineOutlined />
                         </ListItemIcon>
                         </ListItemIcon>
-                        <ListItemText primary="Documentation" primaryTypographyProps={{ variant: 'h6', color: 'text.primary' }} />
+                        <ListItemText
+                          primary="Documentation"
+                          primaryTypographyProps={{ variant: "h6", color: "text.primary" }}
+                        />
                       </ListItemButton>
                       </ListItemButton>
                     </Link>
                     </Link>
-                    <Link style={{ textDecoration: 'none' }} href="https://codedthemes.support-hub.io/" target="_blank">
+                    <Link style={{ textDecoration: "none" }} href="https://codedthemes.support-hub.io/" target="_blank">
                       <ListItemButton component="span">
                       <ListItemButton component="span">
                         <ListItemIcon>
                         <ListItemIcon>
                           <LineOutlined />
                           <LineOutlined />
                         </ListItemIcon>
                         </ListItemIcon>
-                        <ListItemText primary="Support" primaryTypographyProps={{ variant: 'h6', color: 'text.primary' }} />
+                        <ListItemText
+                          primary="Support"
+                          primaryTypographyProps={{ variant: "h6", color: "text.primary" }}
+                        />
                       </ListItemButton>
                       </ListItemButton>
                     </Link>
                     </Link>
                     <Link
                     <Link
-                      style={{ textDecoration: 'none' }}
+                      style={{ textDecoration: "none" }}
                       href="https://mui.com/store/items/mantis-react-admin-dashboard-template/"
                       href="https://mui.com/store/items/mantis-react-admin-dashboard-template/"
                       target="_blank"
                       target="_blank"
                     >
                     >
@@ -246,7 +280,10 @@ const Header = ({ handleDrawerOpen, layout = 'landing', ...others }: Props) => {
                         <ListItemIcon>
                         <ListItemIcon>
                           <LineOutlined />
                           <LineOutlined />
                         </ListItemIcon>
                         </ListItemIcon>
-                        <ListItemText primary="Purchase Now" primaryTypographyProps={{ variant: 'h6', color: 'text.primary' }} />
+                        <ListItemText
+                          primary="Purchase Now"
+                          primaryTypographyProps={{ variant: "h6", color: "text.primary" }}
+                        />
                         <Chip color="primary" label="v1.0" size="small" />
                         <Chip color="primary" label="v1.0" size="small" />
                       </ListItemButton>
                       </ListItemButton>
                     </Link>
                     </Link>

+ 55 - 49
src/layout/MainLayout/Drawer/DrawerContent/Navigation/NavCollapse.tsx

@@ -1,9 +1,9 @@
-import { useEffect, useState } from 'react';
-import { useLocation } from 'react-router-dom';
-import { useSelector } from 'react-redux';
+import { useEffect, useState } from "react";
+import { useLocation } from "react-router-dom";
+import { useSelector } from "react-redux";
 
 
 // material-ui
 // material-ui
-import { styled, useTheme } from '@mui/material/styles';
+import { styled, useTheme } from "@mui/material/styles";
 import {
 import {
   Box,
   Box,
   Collapse,
   Collapse,
@@ -15,18 +15,18 @@ import {
   Paper,
   Paper,
   Popper,
   Popper,
   Typography
   Typography
-} from '@mui/material';
+} from "@mui/material";
 
 
 // project import
 // project import
-import NavItem from './NavItem';
-import Transitions from 'components/@extended/Transitions';
+import NavItem from "./NavItem";
+import Transitions from "@/components/@extended/Transitions";
 
 
 // assets
 // assets
-import { BorderOutlined, DownOutlined, UpOutlined } from '@ant-design/icons';
+import { BorderOutlined, DownOutlined, UpOutlined } from "@ant-design/icons";
 
 
 // types
 // types
-import { NavItemType } from 'types/menu';
-import { RootStateProps } from 'types/root';
+import { NavItemType } from "@/types/menu";
+import { RootStateProps } from "@/types/root";
 
 
 type VirtualElement = {
 type VirtualElement = {
   getBoundingClientRect: () => ClientRect | DOMRect;
   getBoundingClientRect: () => ClientRect | DOMRect;
@@ -35,19 +35,19 @@ type VirtualElement = {
 
 
 // mini-menu - wrapper
 // mini-menu - wrapper
 const PopperStyled = styled(Popper)(({ theme }) => ({
 const PopperStyled = styled(Popper)(({ theme }) => ({
-  overflow: 'visible',
+  overflow: "visible",
   zIndex: 1202,
   zIndex: 1202,
   minWidth: 180,
   minWidth: 180,
-  '&:before': {
+  "&:before": {
     content: '""',
     content: '""',
-    display: 'block',
-    position: 'absolute',
+    display: "block",
+    position: "absolute",
     top: 38,
     top: 38,
     left: -5,
     left: -5,
     width: 10,
     width: 10,
     height: 10,
     height: 10,
     backgroundColor: theme.palette.background.paper,
     backgroundColor: theme.palette.background.paper,
-    transform: 'translateY(-50%) rotate(45deg)',
+    transform: "translateY(-50%) rotate(45deg)",
     zIndex: 120,
     zIndex: 120,
     borderLeft: `1px solid ${theme.palette.grey.A800}`,
     borderLeft: `1px solid ${theme.palette.grey.A800}`,
     borderBottom: `1px solid ${theme.palette.grey.A800}`
     borderBottom: `1px solid ${theme.palette.grey.A800}`
@@ -72,7 +72,9 @@ const NavCollapse = ({ menu, level }: Props) => {
 
 
   const [anchorEl, setAnchorEl] = useState<VirtualElement | (() => VirtualElement) | null | undefined>(null);
   const [anchorEl, setAnchorEl] = useState<VirtualElement | (() => VirtualElement) | null | undefined>(null);
 
 
-  const handleClick = (event: React.MouseEvent<HTMLAnchorElement> | React.MouseEvent<HTMLDivElement, MouseEvent> | undefined) => {
+  const handleClick = (
+    event: React.MouseEvent<HTMLAnchorElement> | React.MouseEvent<HTMLDivElement, MouseEvent> | undefined
+  ) => {
     setAnchorEl(null);
     setAnchorEl(null);
     if (drawerOpen) {
     if (drawerOpen) {
       setOpen(!open);
       setOpen(!open);
@@ -91,8 +93,8 @@ const NavCollapse = ({ menu, level }: Props) => {
   useEffect(() => {
   useEffect(() => {
     const childrens = menu.children ? menu.children : [];
     const childrens = menu.children ? menu.children : [];
     childrens.forEach((item) => {
     childrens.forEach((item) => {
-      if (pathname && pathname.includes('product-details')) {
-        if (item.url && item.url.includes('product-details')) {
+      if (pathname && pathname.includes("product-details")) {
+        if (item.url && item.url.includes("product-details")) {
           setOpen(true);
           setOpen(true);
         }
         }
       }
       }
@@ -108,9 +110,9 @@ const NavCollapse = ({ menu, level }: Props) => {
 
 
   const navCollapse = menu.children?.map((item) => {
   const navCollapse = menu.children?.map((item) => {
     switch (item.type) {
     switch (item.type) {
-      case 'collapse':
+      case "collapse":
         return <NavCollapse key={item.id} menu={item} level={level + 1} />;
         return <NavCollapse key={item.id} menu={item} level={level + 1} />;
-      case 'item':
+      case "item":
         return <NavItem key={item.id} item={item} level={level + 1} />;
         return <NavItem key={item.id} item={item} level={level + 1} />;
       default:
       default:
         return (
         return (
@@ -121,11 +123,12 @@ const NavCollapse = ({ menu, level }: Props) => {
     }
     }
   });
   });
 
 
-  const borderIcon = level === 1 ? <BorderOutlined style={{ fontSize: '1rem' }} /> : false;
+  const borderIcon = level === 1 ? <BorderOutlined style={{ fontSize: "1rem" }} /> : false;
   const Icon = menu.icon!;
   const Icon = menu.icon!;
-  const menuIcon = menu.icon ? <Icon style={{ fontSize: drawerOpen ? '1rem' : '1.25rem' }} /> : borderIcon;
-  const textColor = theme.palette.mode === 'dark' ? 'grey.400' : 'text.primary';
-  const iconSelectedColor = theme.palette.mode === 'dark' && drawerOpen ? theme.palette.text.primary : theme.palette.primary.main;
+  const menuIcon = menu.icon ? <Icon style={{ fontSize: drawerOpen ? "1rem" : "1.25rem" }} /> : borderIcon;
+  const textColor = theme.palette.mode === "dark" ? "grey.400" : "text.primary";
+  const iconSelectedColor =
+    theme.palette.mode === "dark" && drawerOpen ? theme.palette.text.primary : theme.palette.primary.main;
 
 
   return (
   return (
     <>
     <>
@@ -138,24 +141,27 @@ const NavCollapse = ({ menu, level }: Props) => {
           pl: drawerOpen ? `${level * 28}px` : 1.5,
           pl: drawerOpen ? `${level * 28}px` : 1.5,
           py: !drawerOpen && level === 1 ? 1.25 : 1,
           py: !drawerOpen && level === 1 ? 1.25 : 1,
           ...(drawerOpen && {
           ...(drawerOpen && {
-            '&:hover': {
-              bgcolor: theme.palette.mode === 'dark' ? 'divider' : 'primary.lighter'
+            "&:hover": {
+              bgcolor: theme.palette.mode === "dark" ? "divider" : "primary.lighter"
             },
             },
-            '&.Mui-selected': {
-              bgcolor: 'transparent',
+            "&.Mui-selected": {
+              bgcolor: "transparent",
               color: iconSelectedColor,
               color: iconSelectedColor,
-              '&:hover': { color: iconSelectedColor, bgcolor: theme.palette.mode === 'dark' ? 'divider' : 'transparent' }
+              "&:hover": {
+                color: iconSelectedColor,
+                bgcolor: theme.palette.mode === "dark" ? "divider" : "transparent"
+              }
             }
             }
           }),
           }),
           ...(!drawerOpen && {
           ...(!drawerOpen && {
-            '&:hover': {
-              bgcolor: 'transparent'
+            "&:hover": {
+              bgcolor: "transparent"
             },
             },
-            '&.Mui-selected': {
-              '&:hover': {
-                bgcolor: 'transparent'
+            "&.Mui-selected": {
+              "&:hover": {
+                bgcolor: "transparent"
               },
               },
-              bgcolor: 'transparent'
+              bgcolor: "transparent"
             }
             }
           })
           })
         }}
         }}
@@ -164,22 +170,22 @@ const NavCollapse = ({ menu, level }: Props) => {
           <ListItemIcon
           <ListItemIcon
             sx={{
             sx={{
               minWidth: 28,
               minWidth: 28,
-              color: selected === menu.id ? 'primary.main' : textColor,
+              color: selected === menu.id ? "primary.main" : textColor,
               ...(!drawerOpen && {
               ...(!drawerOpen && {
                 borderRadius: 1.5,
                 borderRadius: 1.5,
                 width: 36,
                 width: 36,
                 height: 36,
                 height: 36,
-                alignItems: 'center',
-                justifyContent: 'center',
-                '&:hover': {
-                  bgcolor: theme.palette.mode === 'dark' ? 'secondary.light' : 'secondary.lighter'
+                alignItems: "center",
+                justifyContent: "center",
+                "&:hover": {
+                  bgcolor: theme.palette.mode === "dark" ? "secondary.light" : "secondary.lighter"
                 }
                 }
               }),
               }),
               ...(!drawerOpen &&
               ...(!drawerOpen &&
                 selected === menu.id && {
                 selected === menu.id && {
-                  bgcolor: theme.palette.mode === 'dark' ? 'primary.900' : 'primary.lighter',
-                  '&:hover': {
-                    bgcolor: theme.palette.mode === 'dark' ? 'primary.darker' : 'primary.lighter'
+                  bgcolor: theme.palette.mode === "dark" ? "primary.900" : "primary.lighter",
+                  "&:hover": {
+                    bgcolor: theme.palette.mode === "dark" ? "primary.darker" : "primary.lighter"
                   }
                   }
                 })
                 })
             }}
             }}
@@ -190,7 +196,7 @@ const NavCollapse = ({ menu, level }: Props) => {
         {(drawerOpen || (!drawerOpen && level !== 1)) && (
         {(drawerOpen || (!drawerOpen && level !== 1)) && (
           <ListItemText
           <ListItemText
             primary={
             primary={
-              <Typography variant="h6" color={selected === menu.id ? 'primary' : textColor}>
+              <Typography variant="h6" color={selected === menu.id ? "primary" : textColor}>
                 {menu.title}
                 {menu.title}
               </Typography>
               </Typography>
             }
             }
@@ -205,9 +211,9 @@ const NavCollapse = ({ menu, level }: Props) => {
         )}
         )}
         {(drawerOpen || (!drawerOpen && level !== 1)) &&
         {(drawerOpen || (!drawerOpen && level !== 1)) &&
           (openMini || open ? (
           (openMini || open ? (
-            <UpOutlined style={{ fontSize: '0.625rem', marginLeft: 1, color: theme.palette.primary.main }} />
+            <UpOutlined style={{ fontSize: "0.625rem", marginLeft: 1, color: theme.palette.primary.main }} />
           ) : (
           ) : (
-            <DownOutlined style={{ fontSize: '0.625rem', marginLeft: 1 }} />
+            <DownOutlined style={{ fontSize: "0.625rem", marginLeft: 1 }} />
           ))}
           ))}
 
 
         {!drawerOpen && (
         {!drawerOpen && (
@@ -221,7 +227,7 @@ const NavCollapse = ({ menu, level }: Props) => {
             popperOptions={{
             popperOptions={{
               modifiers: [
               modifiers: [
                 {
                 {
-                  name: 'offset',
+                  name: "offset",
                   options: {
                   options: {
                     offset: [-12, 1]
                     offset: [-12, 1]
                   }
                   }
@@ -233,10 +239,10 @@ const NavCollapse = ({ menu, level }: Props) => {
               <Transitions in={openMini} {...TransitionProps}>
               <Transitions in={openMini} {...TransitionProps}>
                 <Paper
                 <Paper
                   sx={{
                   sx={{
-                    overflow: 'hidden',
+                    overflow: "hidden",
                     mt: 1.5,
                     mt: 1.5,
                     boxShadow: theme.customShadows.z1,
                     boxShadow: theme.customShadows.z1,
-                    backgroundImage: 'none',
+                    backgroundImage: "none",
                     border: `1px solid ${theme.palette.divider}`
                     border: `1px solid ${theme.palette.divider}`
                   }}
                   }}
                 >
                 >

+ 10 - 10
src/layout/MainLayout/Drawer/DrawerContent/Navigation/NavGroup.tsx

@@ -1,16 +1,16 @@
-import { useSelector } from 'react-redux';
+import { useSelector } from "react-redux";
 
 
 // material-ui
 // material-ui
-import { useTheme } from '@mui/material/styles';
-import { Box, List, Typography } from '@mui/material';
+import { useTheme } from "@mui/material/styles";
+import { Box, List, Typography } from "@mui/material";
 
 
 // project import
 // project import
-import NavItem from './NavItem';
-import NavCollapse from './NavCollapse';
+import NavItem from "./NavItem";
+import NavCollapse from "./NavCollapse";
 
 
 // types
 // types
-import { NavItemType } from 'types/menu';
-import { RootStateProps } from 'types/root';
+import { NavItemType } from "@/types/menu";
+import { RootStateProps } from "@/types/root";
 
 
 // ==============================|| NAVIGATION - LIST GROUP ||============================== //
 // ==============================|| NAVIGATION - LIST GROUP ||============================== //
 
 
@@ -25,9 +25,9 @@ const NavGroup = ({ item }: Props) => {
 
 
   const navCollapse = item.children?.map((menuItem) => {
   const navCollapse = item.children?.map((menuItem) => {
     switch (menuItem.type) {
     switch (menuItem.type) {
-      case 'collapse':
+      case "collapse":
         return <NavCollapse key={menuItem.id} menu={menuItem} level={1} />;
         return <NavCollapse key={menuItem.id} menu={menuItem} level={1} />;
-      case 'item':
+      case "item":
         return <NavItem key={menuItem.id} item={menuItem} level={1} />;
         return <NavItem key={menuItem.id} item={menuItem} level={1} />;
       default:
       default:
         return (
         return (
@@ -44,7 +44,7 @@ const NavGroup = ({ item }: Props) => {
         item.title &&
         item.title &&
         drawerOpen && (
         drawerOpen && (
           <Box sx={{ pl: 3, mb: 1.5 }}>
           <Box sx={{ pl: 3, mb: 1.5 }}>
-            <Typography variant="subtitle2" color={theme.palette.mode === 'dark' ? 'textSecondary' : 'text.secondary'}>
+            <Typography variant="subtitle2" color={theme.palette.mode === "dark" ? "textSecondary" : "text.secondary"}>
               {item.title}
               {item.title}
             </Typography>
             </Typography>
             {item.caption && (
             {item.caption && (

+ 37 - 37
src/layout/MainLayout/Drawer/DrawerContent/Navigation/NavItem.tsx

@@ -1,17 +1,17 @@
-import { forwardRef, useEffect, ForwardRefExoticComponent, RefAttributes } from 'react';
-import { Link, useLocation } from 'react-router-dom';
-import { useDispatch, useSelector } from 'react-redux';
+import { forwardRef, useEffect, ForwardRefExoticComponent, RefAttributes } from "react";
+import { Link, useLocation } from "react-router-dom";
+import { useDispatch, useSelector } from "react-redux";
 
 
 // material-ui
 // material-ui
-import { useTheme } from '@mui/material/styles';
-import { Avatar, Chip, ListItemButton, ListItemIcon, ListItemText, Typography } from '@mui/material';
+import { useTheme } from "@mui/material/styles";
+import { Avatar, Chip, ListItemButton, ListItemIcon, ListItemText, Typography } from "@mui/material";
 
 
 // project import
 // project import
-import { activeItem } from 'store/reducers/menu';
+import { activeItem } from "@/store/reducers/menu";
 
 
 // types
 // types
-import { LinkTarget, NavItemType } from 'types/menu';
-import { RootStateProps } from 'types/root';
+import { LinkTarget, NavItemType } from "@/types/menu";
+import { RootStateProps } from "@/types/root";
 
 
 // ==============================|| NAVIGATION - LIST ITEM ||============================== //
 // ==============================|| NAVIGATION - LIST ITEM ||============================== //
 
 
@@ -26,9 +26,9 @@ const NavItem = ({ item, level }: Props) => {
   const menu = useSelector((state: RootStateProps) => state.menu);
   const menu = useSelector((state: RootStateProps) => state.menu);
   const { drawerOpen, openItem } = menu;
   const { drawerOpen, openItem } = menu;
 
 
-  let itemTarget: LinkTarget = '_self';
+  let itemTarget: LinkTarget = "_self";
   if (item.target) {
   if (item.target) {
-    itemTarget = '_blank';
+    itemTarget = "_blank";
   }
   }
 
 
   let listItemProps: {
   let listItemProps: {
@@ -37,11 +37,11 @@ const NavItem = ({ item, level }: Props) => {
     target?: LinkTarget;
     target?: LinkTarget;
   } = { component: forwardRef((props, ref) => <Link {...props} to={item.url!} target={itemTarget} />) };
   } = { component: forwardRef((props, ref) => <Link {...props} to={item.url!} target={itemTarget} />) };
   if (item?.external) {
   if (item?.external) {
-    listItemProps = { component: 'a', href: item.url, target: itemTarget };
+    listItemProps = { component: "a", href: item.url, target: itemTarget };
   }
   }
 
 
   const Icon = item.icon!;
   const Icon = item.icon!;
-  const itemIcon = item.icon ? <Icon style={{ fontSize: drawerOpen ? '1rem' : '1.25rem' }} /> : false;
+  const itemIcon = item.icon ? <Icon style={{ fontSize: drawerOpen ? "1rem" : "1.25rem" }} /> : false;
 
 
   const isSelected = openItem.findIndex((id) => id === item.id) > -1;
   const isSelected = openItem.findIndex((id) => id === item.id) > -1;
 
 
@@ -49,14 +49,14 @@ const NavItem = ({ item, level }: Props) => {
 
 
   // active menu item on page load
   // active menu item on page load
   useEffect(() => {
   useEffect(() => {
-    if (pathname && pathname.includes('product-details')) {
-      if (item.url && item.url.includes('product-details')) {
+    if (pathname && pathname.includes("product-details")) {
+      if (item.url && item.url.includes("product-details")) {
         dispatch(activeItem({ openItem: [item.id] }));
         dispatch(activeItem({ openItem: [item.id] }));
       }
       }
     }
     }
 
 
-    if (pathname && pathname.includes('kanban')) {
-      if (item.url && item.url.includes('kanban')) {
+    if (pathname && pathname.includes("kanban")) {
+      if (item.url && item.url.includes("kanban")) {
         dispatch(activeItem({ openItem: [item.id] }));
         dispatch(activeItem({ openItem: [item.id] }));
       }
       }
     }
     }
@@ -67,8 +67,8 @@ const NavItem = ({ item, level }: Props) => {
     // eslint-disable-next-line
     // eslint-disable-next-line
   }, [pathname]);
   }, [pathname]);
 
 
-  const textColor = theme.palette.mode === 'dark' ? 'grey.400' : 'text.primary';
-  const iconSelectedColor = theme.palette.mode === 'dark' && drawerOpen ? 'text.primary' : 'primary.main';
+  const textColor = theme.palette.mode === "dark" ? "grey.400" : "text.primary";
+  const iconSelectedColor = theme.palette.mode === "dark" && drawerOpen ? "text.primary" : "primary.main";
 
 
   return (
   return (
     <ListItemButton
     <ListItemButton
@@ -80,28 +80,28 @@ const NavItem = ({ item, level }: Props) => {
         pl: drawerOpen ? `${level * 28}px` : 1.5,
         pl: drawerOpen ? `${level * 28}px` : 1.5,
         py: !drawerOpen && level === 1 ? 1.25 : 1,
         py: !drawerOpen && level === 1 ? 1.25 : 1,
         ...(drawerOpen && {
         ...(drawerOpen && {
-          '&:hover': {
-            bgcolor: theme.palette.mode === 'dark' ? 'divider' : 'primary.lighter'
+          "&:hover": {
+            bgcolor: theme.palette.mode === "dark" ? "divider" : "primary.lighter"
           },
           },
-          '&.Mui-selected': {
-            bgcolor: theme.palette.mode === 'dark' ? 'divider' : 'primary.lighter',
+          "&.Mui-selected": {
+            bgcolor: theme.palette.mode === "dark" ? "divider" : "primary.lighter",
             borderRight: `2px solid ${theme.palette.primary.main}`,
             borderRight: `2px solid ${theme.palette.primary.main}`,
             color: iconSelectedColor,
             color: iconSelectedColor,
-            '&:hover': {
+            "&:hover": {
               color: iconSelectedColor,
               color: iconSelectedColor,
-              bgcolor: theme.palette.mode === 'dark' ? 'divider' : 'primary.lighter'
+              bgcolor: theme.palette.mode === "dark" ? "divider" : "primary.lighter"
             }
             }
           }
           }
         }),
         }),
         ...(!drawerOpen && {
         ...(!drawerOpen && {
-          '&:hover': {
-            bgcolor: 'transparent'
+          "&:hover": {
+            bgcolor: "transparent"
           },
           },
-          '&.Mui-selected': {
-            '&:hover': {
-              bgcolor: 'transparent'
+          "&.Mui-selected": {
+            "&:hover": {
+              bgcolor: "transparent"
             },
             },
-            bgcolor: 'transparent'
+            bgcolor: "transparent"
           }
           }
         })
         })
       }}
       }}
@@ -115,17 +115,17 @@ const NavItem = ({ item, level }: Props) => {
               borderRadius: 1.5,
               borderRadius: 1.5,
               width: 36,
               width: 36,
               height: 36,
               height: 36,
-              alignItems: 'center',
-              justifyContent: 'center',
-              '&:hover': {
-                bgcolor: theme.palette.mode === 'dark' ? 'secondary.light' : 'secondary.lighter'
+              alignItems: "center",
+              justifyContent: "center",
+              "&:hover": {
+                bgcolor: theme.palette.mode === "dark" ? "secondary.light" : "secondary.lighter"
               }
               }
             }),
             }),
             ...(!drawerOpen &&
             ...(!drawerOpen &&
               isSelected && {
               isSelected && {
-                bgcolor: theme.palette.mode === 'dark' ? 'primary.900' : 'primary.lighter',
-                '&:hover': {
-                  bgcolor: theme.palette.mode === 'dark' ? 'primary.darker' : 'primary.lighter'
+                bgcolor: theme.palette.mode === "dark" ? "primary.900" : "primary.lighter",
+                "&:hover": {
+                  bgcolor: theme.palette.mode === "dark" ? "primary.darker" : "primary.lighter"
                 }
                 }
               })
               })
           }}
           }}

+ 7 - 7
src/layout/MainLayout/Drawer/DrawerContent/Navigation/index.tsx

@@ -1,14 +1,14 @@
-import { useSelector } from 'react-redux';
+import { useSelector } from "react-redux";
 
 
 // material-ui
 // material-ui
-import { Box, Typography } from '@mui/material';
+import { Box, Typography } from "@mui/material";
 
 
 // types
 // types
-import { RootStateProps } from 'types/root';
+import { RootStateProps } from "@/types/root";
 
 
 // project import
 // project import
-import NavGroup from './NavGroup';
-import menuItem from 'menu-items';
+import NavGroup from "./NavGroup";
+import menuItem from "@/menu-items";
 
 
 // ==============================|| DRAWER CONTENT - NAVIGATION ||============================== //
 // ==============================|| DRAWER CONTENT - NAVIGATION ||============================== //
 
 
@@ -18,7 +18,7 @@ const Navigation = () => {
 
 
   const navGroups = menuItem.items.map((item) => {
   const navGroups = menuItem.items.map((item) => {
     switch (item.type) {
     switch (item.type) {
-      case 'group':
+      case "group":
         return <NavGroup key={item.id} item={item} />;
         return <NavGroup key={item.id} item={item} />;
       default:
       default:
         return (
         return (
@@ -29,7 +29,7 @@ const Navigation = () => {
     }
     }
   });
   });
 
 
-  return <Box sx={{ pt: drawerOpen ? 2 : 0, '& > ul:first-of-type': { mt: 0 } }}>{navGroups}</Box>;
+  return <Box sx={{ pt: drawerOpen ? 2 : 0, "& > ul:first-of-type": { mt: 0 } }}>{navGroups}</Box>;
 };
 };
 
 
 export default Navigation;
 export default Navigation;

+ 5 - 5
src/layout/MainLayout/Drawer/DrawerContent/index.tsx

@@ -1,15 +1,15 @@
 // project import
 // project import
-import Navigation from './Navigation';
-import SimpleBar from 'components/third-party/SimpleBar';
+import Navigation from "./Navigation";
+import SimpleBar from "@/components/third-party/SimpleBar";
 
 
 // ==============================|| DRAWER CONTENT ||============================== //
 // ==============================|| DRAWER CONTENT ||============================== //
 
 
 const DrawerContent = () => (
 const DrawerContent = () => (
   <SimpleBar
   <SimpleBar
     sx={{
     sx={{
-      '& .simplebar-content': {
-        display: 'flex',
-        flexDirection: 'column'
+      "& .simplebar-content": {
+        display: "flex",
+        flexDirection: "column"
       }
       }
     }}
     }}
   >
   >

+ 4 - 4
src/layout/MainLayout/Drawer/DrawerHeader/index.tsx

@@ -1,9 +1,9 @@
 // material-ui
 // material-ui
-import { useTheme } from '@mui/material/styles';
+import { useTheme } from "@mui/material/styles";
 
 
 // project import
 // project import
-import DrawerHeaderStyled from './DrawerHeaderStyled';
-import Logo from 'components/logo';
+import DrawerHeaderStyled from "./DrawerHeaderStyled";
+import Logo from "@/components/logo";
 
 
 // ==============================|| DRAWER HEADER ||============================== //
 // ==============================|| DRAWER HEADER ||============================== //
 
 
@@ -16,7 +16,7 @@ const DrawerHeader = ({ open }: Props) => {
 
 
   return (
   return (
     <DrawerHeaderStyled theme={theme} open={open}>
     <DrawerHeaderStyled theme={theme} open={open}>
-      <Logo isIcon={!open} sx={{ width: open ? 'auto' : 35, height: 35 }} />
+      <Logo isIcon={!open} sx={{ width: open ? "auto" : 35, height: 35 }} />
     </DrawerHeaderStyled>
     </DrawerHeaderStyled>
   );
   );
 };
 };

+ 14 - 14
src/layout/MainLayout/Drawer/MiniDrawerStyled.ts

@@ -1,46 +1,46 @@
 // material-ui
 // material-ui
-import { styled, Theme, CSSObject } from '@mui/material/styles';
-import Drawer from '@mui/material/Drawer';
+import { styled, Theme, CSSObject } from "@mui/material/styles";
+import Drawer from "@mui/material/Drawer";
 
 
 // project import
 // project import
-import { drawerWidth } from 'config';
+import { drawerWidth } from "@/config";
 
 
 const openedMixin = (theme: Theme): CSSObject => ({
 const openedMixin = (theme: Theme): CSSObject => ({
   width: drawerWidth,
   width: drawerWidth,
   borderRight: `1px solid ${theme.palette.divider}`,
   borderRight: `1px solid ${theme.palette.divider}`,
-  transition: theme.transitions.create('width', {
+  transition: theme.transitions.create("width", {
     easing: theme.transitions.easing.sharp,
     easing: theme.transitions.easing.sharp,
     duration: theme.transitions.duration.enteringScreen
     duration: theme.transitions.duration.enteringScreen
   }),
   }),
-  overflowX: 'hidden',
-  boxShadow: theme.palette.mode === 'dark' ? theme.customShadows.z1 : 'none'
+  overflowX: "hidden",
+  boxShadow: theme.palette.mode === "dark" ? theme.customShadows.z1 : "none"
 });
 });
 
 
 const closedMixin = (theme: Theme): CSSObject => ({
 const closedMixin = (theme: Theme): CSSObject => ({
-  transition: theme.transitions.create('width', {
+  transition: theme.transitions.create("width", {
     easing: theme.transitions.easing.sharp,
     easing: theme.transitions.easing.sharp,
     duration: theme.transitions.duration.leavingScreen
     duration: theme.transitions.duration.leavingScreen
   }),
   }),
-  overflowX: 'hidden',
+  overflowX: "hidden",
   width: theme.spacing(7.5),
   width: theme.spacing(7.5),
-  borderRight: 'none',
+  borderRight: "none",
   boxShadow: theme.customShadows.z1
   boxShadow: theme.customShadows.z1
 });
 });
 
 
 // ==============================|| DRAWER - MINI STYLED ||============================== //
 // ==============================|| DRAWER - MINI STYLED ||============================== //
 
 
-const MiniDrawerStyled = styled(Drawer, { shouldForwardProp: (prop) => prop !== 'open' })(({ theme, open }) => ({
+const MiniDrawerStyled = styled(Drawer, { shouldForwardProp: (prop) => prop !== "open" })(({ theme, open }) => ({
   width: drawerWidth,
   width: drawerWidth,
   flexShrink: 0,
   flexShrink: 0,
-  whiteSpace: 'nowrap',
-  boxSizing: 'border-box',
+  whiteSpace: "nowrap",
+  boxSizing: "border-box",
   ...(open && {
   ...(open && {
     ...openedMixin(theme),
     ...openedMixin(theme),
-    '& .MuiDrawer-paper': openedMixin(theme)
+    "& .MuiDrawer-paper": openedMixin(theme)
   }),
   }),
   ...(!open && {
   ...(!open && {
     ...closedMixin(theme),
     ...closedMixin(theme),
-    '& .MuiDrawer-paper': closedMixin(theme)
+    "& .MuiDrawer-paper": closedMixin(theme)
   })
   })
 }));
 }));
 
 

+ 13 - 13
src/layout/MainLayout/Drawer/index.tsx

@@ -1,14 +1,14 @@
-import { useMemo } from 'react';
+import { useMemo } from "react";
 
 
 // material-ui
 // material-ui
-import { useTheme } from '@mui/material/styles';
-import { Box, Drawer, useMediaQuery } from '@mui/material';
+import { useTheme } from "@mui/material/styles";
+import { Box, Drawer, useMediaQuery } from "@mui/material";
 
 
 // project import
 // project import
-import DrawerHeader from './DrawerHeader';
-import DrawerContent from './DrawerContent';
-import MiniDrawerStyled from './MiniDrawerStyled';
-import { drawerWidth } from 'config';
+import DrawerHeader from "./DrawerHeader";
+import DrawerContent from "./DrawerContent";
+import MiniDrawerStyled from "./MiniDrawerStyled";
+import { drawerWidth } from "@/config";
 
 
 // ==============================|| MAIN LAYOUT - DRAWER ||============================== //
 // ==============================|| MAIN LAYOUT - DRAWER ||============================== //
 
 
@@ -20,7 +20,7 @@ interface Props {
 
 
 const MainDrawer = ({ open, handleDrawerToggle, window }: Props) => {
 const MainDrawer = ({ open, handleDrawerToggle, window }: Props) => {
   const theme = useTheme();
   const theme = useTheme();
-  const matchDownMD = useMediaQuery(theme.breakpoints.down('lg'));
+  const matchDownMD = useMediaQuery(theme.breakpoints.down("lg"));
 
 
   // responsive drawer container
   // responsive drawer container
   const container = window !== undefined ? () => window().document.body : undefined;
   const container = window !== undefined ? () => window().document.body : undefined;
@@ -44,13 +44,13 @@ const MainDrawer = ({ open, handleDrawerToggle, window }: Props) => {
           onClose={handleDrawerToggle}
           onClose={handleDrawerToggle}
           ModalProps={{ keepMounted: true }}
           ModalProps={{ keepMounted: true }}
           sx={{
           sx={{
-            display: { xs: 'block', lg: 'none' },
-            '& .MuiDrawer-paper': {
-              boxSizing: 'border-box',
+            display: { xs: "block", lg: "none" },
+            "& .MuiDrawer-paper": {
+              boxSizing: "border-box",
               width: drawerWidth,
               width: drawerWidth,
               borderRight: `1px solid ${theme.palette.divider}`,
               borderRight: `1px solid ${theme.palette.divider}`,
-              backgroundImage: 'none',
-              boxShadow: 'inherit'
+              backgroundImage: "none",
+              boxShadow: "inherit"
             }
             }
           }}
           }}
         >
         >

+ 6 - 6
src/layout/MainLayout/Header/AppBarStyled.tsx

@@ -1,9 +1,9 @@
 // material-ui
 // material-ui
-import { styled } from '@mui/material/styles';
-import AppBar, { AppBarProps as MuiAppBarProps } from '@mui/material/AppBar';
+import { styled } from "@mui/material/styles";
+import AppBar, { AppBarProps as MuiAppBarProps } from "@mui/material/AppBar";
 
 
 // project import
 // project import
-import { drawerWidth } from 'config';
+import { drawerWidth } from "@/config";
 
 
 // ==============================|| HEADER - APP BAR STYLED ||============================== //
 // ==============================|| HEADER - APP BAR STYLED ||============================== //
 
 
@@ -11,9 +11,9 @@ interface Props extends MuiAppBarProps {
   open?: boolean;
   open?: boolean;
 }
 }
 
 
-const AppBarStyled = styled(AppBar, { shouldForwardProp: (prop) => prop !== 'open' })<Props>(({ theme, open }) => ({
+const AppBarStyled = styled(AppBar, { shouldForwardProp: (prop) => prop !== "open" })<Props>(({ theme, open }) => ({
   zIndex: theme.zIndex.drawer + 1,
   zIndex: theme.zIndex.drawer + 1,
-  transition: theme.transitions.create(['width', 'margin'], {
+  transition: theme.transitions.create(["width", "margin"], {
     easing: theme.transitions.easing.sharp,
     easing: theme.transitions.easing.sharp,
     duration: theme.transitions.duration.leavingScreen
     duration: theme.transitions.duration.leavingScreen
   }),
   }),
@@ -23,7 +23,7 @@ const AppBarStyled = styled(AppBar, { shouldForwardProp: (prop) => prop !== 'ope
   ...(open && {
   ...(open && {
     marginLeft: drawerWidth,
     marginLeft: drawerWidth,
     width: `calc(100% - ${drawerWidth}px)`,
     width: `calc(100% - ${drawerWidth}px)`,
-    transition: theme.transitions.create(['width', 'margin'], {
+    transition: theme.transitions.create(["width", "margin"], {
       easing: theme.transitions.easing.sharp,
       easing: theme.transitions.easing.sharp,
       duration: theme.transitions.duration.enteringScreen
       duration: theme.transitions.duration.enteringScreen
     })
     })

+ 54 - 34
src/layout/MainLayout/Header/HeaderContent/MegaMenuSection.tsx

@@ -1,8 +1,8 @@
-import { useRef, useState } from 'react';
-import { Link } from 'react-router-dom';
+import { useRef, useState } from "react";
+import { Link } from "react-router-dom";
 
 
 // material-ui
 // material-ui
-import { useTheme } from '@mui/material/styles';
+import { useTheme } from "@mui/material/styles";
 import {
 import {
   Button,
   Button,
   Box,
   Box,
@@ -18,20 +18,20 @@ import {
   Popper,
   Popper,
   Stack,
   Stack,
   Typography
   Typography
-} from '@mui/material';
+} from "@mui/material";
 
 
 // project import
 // project import
-import MainCard from 'components/MainCard';
-import Dot from 'components/@extended/Dot';
-import IconButton from 'components/@extended/IconButton';
-import Transitions from 'components/@extended/Transitions';
-import { drawerWidth } from 'config';
+import MainCard from "@/components/MainCard";
+import Dot from "@/components/@extended/Dot";
+import IconButton from "@/components/@extended/IconButton";
+import Transitions from "@/components/@extended/Transitions";
+import { drawerWidth } from "@/config";
 
 
 // assets
 // assets
-import { ArrowRightOutlined, WindowsOutlined } from '@ant-design/icons';
-import backgroundVector from 'assets/images/mega-menu/back.svg';
-import imageChart from 'assets/images/mega-menu/chart.svg';
-import AnimateButton from 'components/@extended/AnimateButton';
+import { ArrowRightOutlined, WindowsOutlined } from "@ant-design/icons";
+import backgroundVector from "@/assets/images/mega-menu/back.svg";
+import imageChart from "@/assets/images/mega-menu/chart.svg";
+import AnimateButton from "@/components/@extended/AnimateButton";
 
 
 // ==============================|| HEADER CONTENT - MEGA MENU SECTION ||============================== //
 // ==============================|| HEADER CONTENT - MEGA MENU SECTION ||============================== //
 
 
@@ -51,18 +51,18 @@ const MegaMenuSection = () => {
     setOpen(false);
     setOpen(false);
   };
   };
 
 
-  const iconBackColorOpen = theme.palette.mode === 'dark' ? 'grey.200' : 'grey.300';
-  const iconBackColor = theme.palette.mode === 'dark' ? 'background.default' : 'grey.100';
+  const iconBackColorOpen = theme.palette.mode === "dark" ? "grey.200" : "grey.300";
+  const iconBackColor = theme.palette.mode === "dark" ? "background.default" : "grey.100";
 
 
   return (
   return (
     <Box sx={{ flexShrink: 0, ml: 0.75 }}>
     <Box sx={{ flexShrink: 0, ml: 0.75 }}>
       <IconButton
       <IconButton
         color="secondary"
         color="secondary"
         variant="light"
         variant="light"
-        sx={{ color: 'text.primary', bgcolor: open ? iconBackColorOpen : iconBackColor }}
+        sx={{ color: "text.primary", bgcolor: open ? iconBackColorOpen : iconBackColor }}
         aria-label="open profile"
         aria-label="open profile"
         ref={anchorRef}
         ref={anchorRef}
-        aria-controls={open ? 'profile-grow' : undefined}
+        aria-controls={open ? "profile-grow" : undefined}
         aria-haspopup="true"
         aria-haspopup="true"
         onClick={handleToggle}
         onClick={handleToggle}
       >
       >
@@ -78,7 +78,7 @@ const MegaMenuSection = () => {
         popperOptions={{
         popperOptions={{
           modifiers: [
           modifiers: [
             {
             {
-              name: 'offset',
+              name: "offset",
               options: {
               options: {
                 offset: [-180, 9]
                 offset: [-180, 9]
               }
               }
@@ -111,8 +111,8 @@ const MegaMenuSection = () => {
                       }}
                       }}
                     >
                     >
                       <Box sx={{ p: 4.5, pb: 3 }}>
                       <Box sx={{ p: 4.5, pb: 3 }}>
-                        <Stack sx={{ color: 'background.paper' }}>
-                          <Typography variant="h2" sx={{ fontSize: '1.875rem', mb: 1 }}>
+                        <Stack sx={{ color: "background.paper" }}>
+                          <Typography variant="h2" sx={{ fontSize: "1.875rem", mb: 1 }}>
                             Explore Components
                             Explore Components
                           </Typography>
                           </Typography>
                           <Typography variant="h6">
                           <Typography variant="h6">
@@ -124,9 +124,9 @@ const MegaMenuSection = () => {
                                 variant="contained"
                                 variant="contained"
                                 color="secondary"
                                 color="secondary"
                                 sx={{
                                 sx={{
-                                  bgcolor: 'background.paper',
-                                  color: 'text.primary',
-                                  '&:hover': { bgcolor: 'background.paper', color: 'text.primary' }
+                                  bgcolor: "background.paper",
+                                  color: "text.primary",
+                                  "&:hover": { bgcolor: "background.paper", color: "text.primary" }
                                 }}
                                 }}
                                 endIcon={<ArrowRightOutlined />}
                                 endIcon={<ArrowRightOutlined />}
                                 component={Link}
                                 component={Link}
@@ -136,7 +136,12 @@ const MegaMenuSection = () => {
                                 View All
                                 View All
                               </Button>
                               </Button>
                             </AnimateButton>
                             </AnimateButton>
-                            <CardMedia component="img" src={imageChart} alt="Chart" sx={{ mr: -2.5, mb: -2.5, width: 124 }} />
+                            <CardMedia
+                              component="img"
+                              src={imageChart}
+                              alt="Chart"
+                              sx={{ mr: -2.5, mb: -2.5, width: 124 }}
+                            />
                           </Stack>
                           </Stack>
                         </Stack>
                         </Stack>
                       </Box>
                       </Box>
@@ -145,19 +150,19 @@ const MegaMenuSection = () => {
                       <Box
                       <Box
                         sx={{
                         sx={{
                           p: 4,
                           p: 4,
-                          '& .MuiList-root': {
+                          "& .MuiList-root": {
                             pb: 0
                             pb: 0
                           },
                           },
-                          '& .MuiListSubheader-root': {
+                          "& .MuiListSubheader-root": {
                             p: 0,
                             p: 0,
                             pb: 1.5
                             pb: 1.5
                           },
                           },
-                          '& .MuiListItemButton-root': {
+                          "& .MuiListItemButton-root": {
                             p: 0.5,
                             p: 0.5,
-                            '&:hover': {
-                              background: 'transparent',
-                              '& .MuiTypography-root': {
-                                color: 'primary.main'
+                            "&:hover": {
+                              background: "transparent",
+                              "& .MuiTypography-root": {
+                                color: "primary.main"
                               }
                               }
                             }
                             }
                           }
                           }
@@ -200,7 +205,12 @@ const MegaMenuSection = () => {
                                 </ListItemIcon>
                                 </ListItemIcon>
                                 <ListItemText primary="Forgot Password" />
                                 <ListItemText primary="Forgot Password" />
                               </ListItemButton>
                               </ListItemButton>
-                              <ListItemButton disableRipple component={Link} target="_blank" to="/auth/code-verification">
+                              <ListItemButton
+                                disableRipple
+                                component={Link}
+                                target="_blank"
+                                to="/auth/code-verification"
+                              >
                                 <ListItemIcon>
                                 <ListItemIcon>
                                   <Dot size={7} color="secondary" variant="outlined" />
                                   <Dot size={7} color="secondary" variant="outlined" />
                                 </ListItemIcon>
                                 </ListItemIcon>
@@ -244,13 +254,23 @@ const MegaMenuSection = () => {
                                 </ListItemIcon>
                                 </ListItemIcon>
                                 <ListItemText primary="Payment" />
                                 <ListItemText primary="Payment" />
                               </ListItemButton>
                               </ListItemButton>
-                              <ListItemButton disableRipple component={Link} target="_blank" to="/maintenance/under-construction">
+                              <ListItemButton
+                                disableRipple
+                                component={Link}
+                                target="_blank"
+                                to="/maintenance/under-construction"
+                              >
                                 <ListItemIcon>
                                 <ListItemIcon>
                                   <Dot size={7} color="secondary" variant="outlined" />
                                   <Dot size={7} color="secondary" variant="outlined" />
                                 </ListItemIcon>
                                 </ListItemIcon>
                                 <ListItemText primary="Construction" />
                                 <ListItemText primary="Construction" />
                               </ListItemButton>
                               </ListItemButton>
-                              <ListItemButton disableRipple component={Link} target="_blank" to="/maintenance/coming-soon">
+                              <ListItemButton
+                                disableRipple
+                                component={Link}
+                                target="_blank"
+                                to="/maintenance/coming-soon"
+                              >
                                 <ListItemIcon>
                                 <ListItemIcon>
                                   <Dot size={7} color="secondary" variant="outlined" />
                                   <Dot size={7} color="secondary" variant="outlined" />
                                 </ListItemIcon>
                                 </ListItemIcon>

+ 34 - 34
src/layout/MainLayout/Header/HeaderContent/Message.tsx

@@ -1,7 +1,7 @@
-import { useRef, useState } from 'react';
+import { useRef, useState } from "react";
 
 
 // material-ui
 // material-ui
-import { useTheme } from '@mui/material/styles';
+import { useTheme } from "@mui/material/styles";
 import {
 import {
   Avatar,
   Avatar,
   Box,
   Box,
@@ -16,19 +16,19 @@ import {
   Popper,
   Popper,
   Typography,
   Typography,
   useMediaQuery
   useMediaQuery
-} from '@mui/material';
+} from "@mui/material";
 
 
 // project import
 // project import
-import MainCard from 'components/MainCard';
-import IconButton from 'components/@extended/IconButton';
-import Transitions from 'components/@extended/Transitions';
+import MainCard from "@/components/MainCard";
+import IconButton from "@/components/@extended/IconButton";
+import Transitions from "@/components/@extended/Transitions";
 
 
 // assets
 // assets
-import avatar2 from 'assets/images/users/avatar-2.png';
-import avatar3 from 'assets/images/users/avatar-3.png';
-import avatar4 from 'assets/images/users/avatar-4.png';
-import avatar5 from 'assets/images/users/avatar-5.png';
-import { MailOutlined, CloseOutlined } from '@ant-design/icons';
+import avatar2 from "@/assets/images/users/avatar-2.png";
+import avatar3 from "@/assets/images/users/avatar-3.png";
+import avatar4 from "@/assets/images/users/avatar-4.png";
+import avatar5 from "@/assets/images/users/avatar-5.png";
+import { MailOutlined, CloseOutlined } from "@ant-design/icons";
 
 
 // sx styles
 // sx styles
 const avatarSX = {
 const avatarSX = {
@@ -37,19 +37,19 @@ const avatarSX = {
 };
 };
 
 
 const actionSX = {
 const actionSX = {
-  mt: '6px',
+  mt: "6px",
   ml: 1,
   ml: 1,
-  top: 'auto',
-  right: 'auto',
-  alignSelf: 'flex-start',
-  transform: 'none'
+  top: "auto",
+  right: "auto",
+  alignSelf: "flex-start",
+  transform: "none"
 };
 };
 
 
 // ==============================|| HEADER CONTENT - MESSAGES ||============================== //
 // ==============================|| HEADER CONTENT - MESSAGES ||============================== //
 
 
 const Message = () => {
 const Message = () => {
   const theme = useTheme();
   const theme = useTheme();
-  const matchesXs = useMediaQuery(theme.breakpoints.down('md'));
+  const matchesXs = useMediaQuery(theme.breakpoints.down("md"));
 
 
   const anchorRef = useRef<any>(null);
   const anchorRef = useRef<any>(null);
   const [open, setOpen] = useState(false);
   const [open, setOpen] = useState(false);
@@ -64,25 +64,25 @@ const Message = () => {
     setOpen(false);
     setOpen(false);
   };
   };
 
 
-  const iconBackColorOpen = theme.palette.mode === 'dark' ? 'grey.200' : 'grey.300';
-  const iconBackColor = theme.palette.mode === 'dark' ? 'background.default' : 'grey.100';
+  const iconBackColorOpen = theme.palette.mode === "dark" ? "grey.200" : "grey.300";
+  const iconBackColor = theme.palette.mode === "dark" ? "background.default" : "grey.100";
 
 
   return (
   return (
     <Box sx={{ flexShrink: 0, ml: 0.75 }}>
     <Box sx={{ flexShrink: 0, ml: 0.75 }}>
       <IconButton
       <IconButton
         color="secondary"
         color="secondary"
         variant="light"
         variant="light"
-        sx={{ color: 'text.primary', bgcolor: open ? iconBackColorOpen : iconBackColor }}
+        sx={{ color: "text.primary", bgcolor: open ? iconBackColorOpen : iconBackColor }}
         aria-label="open profile"
         aria-label="open profile"
         ref={anchorRef}
         ref={anchorRef}
-        aria-controls={open ? 'profile-grow' : undefined}
+        aria-controls={open ? "profile-grow" : undefined}
         aria-haspopup="true"
         aria-haspopup="true"
         onClick={handleToggle}
         onClick={handleToggle}
       >
       >
         <MailOutlined />
         <MailOutlined />
       </IconButton>
       </IconButton>
       <Popper
       <Popper
-        placement={matchesXs ? 'bottom' : 'bottom-end'}
+        placement={matchesXs ? "bottom" : "bottom-end"}
         open={open}
         open={open}
         anchorEl={anchorRef.current}
         anchorEl={anchorRef.current}
         role={undefined}
         role={undefined}
@@ -91,7 +91,7 @@ const Message = () => {
         popperOptions={{
         popperOptions={{
           modifiers: [
           modifiers: [
             {
             {
-              name: 'offset',
+              name: "offset",
               options: {
               options: {
                 offset: [matchesXs ? -60 : 0, 9]
                 offset: [matchesXs ? -60 : 0, 9]
               }
               }
@@ -104,10 +104,10 @@ const Message = () => {
             <Paper
             <Paper
               sx={{
               sx={{
                 boxShadow: theme.customShadows.z1,
                 boxShadow: theme.customShadows.z1,
-                width: '100%',
+                width: "100%",
                 minWidth: 285,
                 minWidth: 285,
                 maxWidth: 420,
                 maxWidth: 420,
-                [theme.breakpoints.down('md')]: {
+                [theme.breakpoints.down("md")]: {
                   maxWidth: 285
                   maxWidth: 285
                 }
                 }
               }}
               }}
@@ -128,10 +128,10 @@ const Message = () => {
                     component="nav"
                     component="nav"
                     sx={{
                     sx={{
                       p: 0,
                       p: 0,
-                      '& .MuiListItemButton-root': {
+                      "& .MuiListItemButton-root": {
                         py: 1.5,
                         py: 1.5,
-                        '& .MuiAvatar-root': avatarSX,
-                        '& .MuiListItemSecondaryAction-root': { ...actionSX, position: 'relative' }
+                        "& .MuiAvatar-root": avatarSX,
+                        "& .MuiListItemSecondaryAction-root": { ...actionSX, position: "relative" }
                       }
                       }
                     }}
                     }}
                   >
                   >
@@ -142,10 +142,10 @@ const Message = () => {
                       <ListItemText
                       <ListItemText
                         primary={
                         primary={
                           <Typography variant="h6">
                           <Typography variant="h6">
-                            It&apos;s{' '}
+                            It&apos;s{" "}
                             <Typography component="span" variant="subtitle1">
                             <Typography component="span" variant="subtitle1">
                               Cristina danny&apos;s
                               Cristina danny&apos;s
-                            </Typography>{' '}
+                            </Typography>{" "}
                             birthday today.
                             birthday today.
                           </Typography>
                           </Typography>
                         }
                         }
@@ -167,7 +167,7 @@ const Message = () => {
                           <Typography variant="h6">
                           <Typography variant="h6">
                             <Typography component="span" variant="subtitle1">
                             <Typography component="span" variant="subtitle1">
                               Aida Burg
                               Aida Burg
-                            </Typography>{' '}
+                            </Typography>{" "}
                             commented your post.
                             commented your post.
                           </Typography>
                           </Typography>
                         }
                         }
@@ -208,8 +208,8 @@ const Message = () => {
                           <Typography variant="h6">
                           <Typography variant="h6">
                             <Typography component="span" variant="subtitle1">
                             <Typography component="span" variant="subtitle1">
                               Cristina Danny
                               Cristina Danny
-                            </Typography>{' '}
-                            invited to join{' '}
+                            </Typography>{" "}
+                            invited to join{" "}
                             <Typography component="span" variant="subtitle1">
                             <Typography component="span" variant="subtitle1">
                               Meeting.
                               Meeting.
                             </Typography>
                             </Typography>
@@ -224,7 +224,7 @@ const Message = () => {
                       </ListItemSecondaryAction>
                       </ListItemSecondaryAction>
                     </ListItemButton>
                     </ListItemButton>
                     <Divider />
                     <Divider />
-                    <ListItemButton sx={{ textAlign: 'center' }}>
+                    <ListItemButton sx={{ textAlign: "center" }}>
                       <ListItemText
                       <ListItemText
                         primary={
                         primary={
                           <Typography variant="h6" color="primary">
                           <Typography variant="h6" color="primary">

+ 14 - 14
src/layout/MainLayout/Header/HeaderContent/MobileSection.tsx

@@ -1,17 +1,17 @@
-import { useEffect, useRef, useState } from 'react';
+import { useEffect, useRef, useState } from "react";
 
 
 // material-ui
 // material-ui
-import { useTheme } from '@mui/material/styles';
-import { AppBar, Box, ClickAwayListener, Paper, Popper, Toolbar } from '@mui/material';
+import { useTheme } from "@mui/material/styles";
+import { AppBar, Box, ClickAwayListener, Paper, Popper, Toolbar } from "@mui/material";
 
 
 // project import
 // project import
-import Search from './Search';
-import Profile from './Profile';
-import IconButton from 'components/@extended/IconButton';
-import Transitions from 'components/@extended/Transitions';
+import Search from "./Search";
+import Profile from "./Profile";
+import IconButton from "@/components/@extended/IconButton";
+import Transitions from "@/components/@extended/Transitions";
 
 
 // assets
 // assets
-import { MoreOutlined } from '@ant-design/icons';
+import { MoreOutlined } from "@ant-design/icons";
 
 
 // ==============================|| HEADER CONTENT - MOBILE ||============================== //
 // ==============================|| HEADER CONTENT - MOBILE ||============================== //
 
 
@@ -42,16 +42,16 @@ const MobileSection = () => {
     prevOpen.current = open;
     prevOpen.current = open;
   }, [open]);
   }, [open]);
 
 
-  const iconBackColorOpen = theme.palette.mode === 'dark' ? 'grey.200' : 'grey.300';
-  const iconBackColor = theme.palette.mode === 'dark' ? 'background.default' : 'grey.100';
+  const iconBackColorOpen = theme.palette.mode === "dark" ? "grey.200" : "grey.300";
+  const iconBackColor = theme.palette.mode === "dark" ? "background.default" : "grey.100";
 
 
   return (
   return (
     <>
     <>
       <Box sx={{ flexShrink: 0, ml: 0.75 }}>
       <Box sx={{ flexShrink: 0, ml: 0.75 }}>
         <IconButton
         <IconButton
-          sx={{ color: 'text.primary', bgcolor: open ? iconBackColorOpen : iconBackColor }}
+          sx={{ color: "text.primary", bgcolor: open ? iconBackColorOpen : iconBackColor }}
           ref={anchorRef}
           ref={anchorRef}
-          aria-controls={open ? 'menu-list-grow' : undefined}
+          aria-controls={open ? "menu-list-grow" : undefined}
           aria-haspopup="true"
           aria-haspopup="true"
           onClick={handleToggle}
           onClick={handleToggle}
           color="secondary"
           color="secondary"
@@ -68,12 +68,12 @@ const MobileSection = () => {
         transition
         transition
         disablePortal
         disablePortal
         style={{
         style={{
-          width: '100%'
+          width: "100%"
         }}
         }}
         popperOptions={{
         popperOptions={{
           modifiers: [
           modifiers: [
             {
             {
-              name: 'offset',
+              name: "offset",
               options: {
               options: {
                 offset: [0, 9]
                 offset: [0, 9]
               }
               }

+ 42 - 42
src/layout/MainLayout/Header/HeaderContent/Notification.tsx

@@ -1,7 +1,7 @@
-import { useRef, useState } from 'react';
+import { useRef, useState } from "react";
 
 
 // material-ui
 // material-ui
-import { useTheme } from '@mui/material/styles';
+import { useTheme } from "@mui/material/styles";
 import {
 import {
   Avatar,
   Avatar,
   Badge,
   Badge,
@@ -18,38 +18,38 @@ import {
   Tooltip,
   Tooltip,
   Typography,
   Typography,
   useMediaQuery
   useMediaQuery
-} from '@mui/material';
+} from "@mui/material";
 
 
 // project import
 // project import
-import MainCard from 'components/MainCard';
-import IconButton from 'components/@extended/IconButton';
-import Transitions from 'components/@extended/Transitions';
+import MainCard from "@/components/MainCard";
+import IconButton from "@/components/@extended/IconButton";
+import Transitions from "@/components/@extended/Transitions";
 
 
 // assets
 // assets
-import { BellOutlined, CheckCircleOutlined, GiftOutlined, MessageOutlined, SettingOutlined } from '@ant-design/icons';
+import { BellOutlined, CheckCircleOutlined, GiftOutlined, MessageOutlined, SettingOutlined } from "@ant-design/icons";
 
 
 // sx styles
 // sx styles
 const avatarSX = {
 const avatarSX = {
   width: 36,
   width: 36,
   height: 36,
   height: 36,
-  fontSize: '1rem'
+  fontSize: "1rem"
 };
 };
 
 
 const actionSX = {
 const actionSX = {
-  mt: '6px',
+  mt: "6px",
   ml: 1,
   ml: 1,
-  top: 'auto',
-  right: 'auto',
-  alignSelf: 'flex-start',
+  top: "auto",
+  right: "auto",
+  alignSelf: "flex-start",
 
 
-  transform: 'none'
+  transform: "none"
 };
 };
 
 
 // ==============================|| HEADER CONTENT - NOTIFICATION ||============================== //
 // ==============================|| HEADER CONTENT - NOTIFICATION ||============================== //
 
 
 const Notification = () => {
 const Notification = () => {
   const theme = useTheme();
   const theme = useTheme();
-  const matchesXs = useMediaQuery(theme.breakpoints.down('md'));
+  const matchesXs = useMediaQuery(theme.breakpoints.down("md"));
 
 
   const anchorRef = useRef<any>(null);
   const anchorRef = useRef<any>(null);
   const [read, setRead] = useState(2);
   const [read, setRead] = useState(2);
@@ -65,18 +65,18 @@ const Notification = () => {
     setOpen(false);
     setOpen(false);
   };
   };
 
 
-  const iconBackColorOpen = theme.palette.mode === 'dark' ? 'grey.200' : 'grey.300';
-  const iconBackColor = theme.palette.mode === 'dark' ? 'background.default' : 'grey.100';
+  const iconBackColorOpen = theme.palette.mode === "dark" ? "grey.200" : "grey.300";
+  const iconBackColor = theme.palette.mode === "dark" ? "background.default" : "grey.100";
 
 
   return (
   return (
     <Box sx={{ flexShrink: 0, ml: 0.75 }}>
     <Box sx={{ flexShrink: 0, ml: 0.75 }}>
       <IconButton
       <IconButton
         color="secondary"
         color="secondary"
         variant="light"
         variant="light"
-        sx={{ color: 'text.primary', bgcolor: open ? iconBackColorOpen : iconBackColor }}
+        sx={{ color: "text.primary", bgcolor: open ? iconBackColorOpen : iconBackColor }}
         aria-label="open profile"
         aria-label="open profile"
         ref={anchorRef}
         ref={anchorRef}
-        aria-controls={open ? 'profile-grow' : undefined}
+        aria-controls={open ? "profile-grow" : undefined}
         aria-haspopup="true"
         aria-haspopup="true"
         onClick={handleToggle}
         onClick={handleToggle}
       >
       >
@@ -85,7 +85,7 @@ const Notification = () => {
         </Badge>
         </Badge>
       </IconButton>
       </IconButton>
       <Popper
       <Popper
-        placement={matchesXs ? 'bottom' : 'bottom-end'}
+        placement={matchesXs ? "bottom" : "bottom-end"}
         open={open}
         open={open}
         anchorEl={anchorRef.current}
         anchorEl={anchorRef.current}
         role={undefined}
         role={undefined}
@@ -94,7 +94,7 @@ const Notification = () => {
         popperOptions={{
         popperOptions={{
           modifiers: [
           modifiers: [
             {
             {
-              name: 'offset',
+              name: "offset",
               options: {
               options: {
                 offset: [matchesXs ? -5 : 0, 9]
                 offset: [matchesXs ? -5 : 0, 9]
               }
               }
@@ -107,10 +107,10 @@ const Notification = () => {
             <Paper
             <Paper
               sx={{
               sx={{
                 boxShadow: theme.customShadows.z1,
                 boxShadow: theme.customShadows.z1,
-                width: '100%',
+                width: "100%",
                 minWidth: 285,
                 minWidth: 285,
                 maxWidth: 420,
                 maxWidth: 420,
-                [theme.breakpoints.down('md')]: {
+                [theme.breakpoints.down("md")]: {
                   maxWidth: 285
                   maxWidth: 285
                 }
                 }
               }}
               }}
@@ -126,7 +126,7 @@ const Notification = () => {
                       {read > 0 && (
                       {read > 0 && (
                         <Tooltip title="Mark as all read">
                         <Tooltip title="Mark as all read">
                           <IconButton color="success" size="small" onClick={() => setRead(0)}>
                           <IconButton color="success" size="small" onClick={() => setRead(0)}>
-                            <CheckCircleOutlined style={{ fontSize: '1.15rem' }} />
+                            <CheckCircleOutlined style={{ fontSize: "1.15rem" }} />
                           </IconButton>
                           </IconButton>
                         </Tooltip>
                         </Tooltip>
                       )}
                       )}
@@ -137,11 +137,11 @@ const Notification = () => {
                     component="nav"
                     component="nav"
                     sx={{
                     sx={{
                       p: 0,
                       p: 0,
-                      '& .MuiListItemButton-root': {
+                      "& .MuiListItemButton-root": {
                         py: 0.5,
                         py: 0.5,
-                        '&.Mui-selected': { bgcolor: 'grey.50', color: 'text.primary' },
-                        '& .MuiAvatar-root': avatarSX,
-                        '& .MuiListItemSecondaryAction-root': { ...actionSX, position: 'relative' }
+                        "&.Mui-selected": { bgcolor: "grey.50", color: "text.primary" },
+                        "& .MuiAvatar-root": avatarSX,
+                        "& .MuiListItemSecondaryAction-root": { ...actionSX, position: "relative" }
                       }
                       }
                     }}
                     }}
                   >
                   >
@@ -149,8 +149,8 @@ const Notification = () => {
                       <ListItemAvatar>
                       <ListItemAvatar>
                         <Avatar
                         <Avatar
                           sx={{
                           sx={{
-                            color: 'success.main',
-                            bgcolor: 'success.lighter'
+                            color: "success.main",
+                            bgcolor: "success.lighter"
                           }}
                           }}
                         >
                         >
                           <GiftOutlined />
                           <GiftOutlined />
@@ -159,10 +159,10 @@ const Notification = () => {
                       <ListItemText
                       <ListItemText
                         primary={
                         primary={
                           <Typography variant="h6">
                           <Typography variant="h6">
-                            It&apos;s{' '}
+                            It&apos;s{" "}
                             <Typography component="span" variant="subtitle1">
                             <Typography component="span" variant="subtitle1">
                               Cristina danny&apos;s
                               Cristina danny&apos;s
-                            </Typography>{' '}
+                            </Typography>{" "}
                             birthday today.
                             birthday today.
                           </Typography>
                           </Typography>
                         }
                         }
@@ -179,8 +179,8 @@ const Notification = () => {
                       <ListItemAvatar>
                       <ListItemAvatar>
                         <Avatar
                         <Avatar
                           sx={{
                           sx={{
-                            color: 'primary.main',
-                            bgcolor: 'primary.lighter'
+                            color: "primary.main",
+                            bgcolor: "primary.lighter"
                           }}
                           }}
                         >
                         >
                           <MessageOutlined />
                           <MessageOutlined />
@@ -191,7 +191,7 @@ const Notification = () => {
                           <Typography variant="h6">
                           <Typography variant="h6">
                             <Typography component="span" variant="subtitle1">
                             <Typography component="span" variant="subtitle1">
                               Aida Burg
                               Aida Burg
-                            </Typography>{' '}
+                            </Typography>{" "}
                             commented your post.
                             commented your post.
                           </Typography>
                           </Typography>
                         }
                         }
@@ -208,8 +208,8 @@ const Notification = () => {
                       <ListItemAvatar>
                       <ListItemAvatar>
                         <Avatar
                         <Avatar
                           sx={{
                           sx={{
-                            color: 'error.main',
-                            bgcolor: 'error.lighter'
+                            color: "error.main",
+                            bgcolor: "error.lighter"
                           }}
                           }}
                         >
                         >
                           <SettingOutlined />
                           <SettingOutlined />
@@ -221,7 +221,7 @@ const Notification = () => {
                             Your Profile is Complete &nbsp;
                             Your Profile is Complete &nbsp;
                             <Typography component="span" variant="subtitle1">
                             <Typography component="span" variant="subtitle1">
                               60%
                               60%
-                            </Typography>{' '}
+                            </Typography>{" "}
                           </Typography>
                           </Typography>
                         }
                         }
                         secondary="7 hours ago"
                         secondary="7 hours ago"
@@ -237,8 +237,8 @@ const Notification = () => {
                       <ListItemAvatar>
                       <ListItemAvatar>
                         <Avatar
                         <Avatar
                           sx={{
                           sx={{
-                            color: 'primary.main',
-                            bgcolor: 'primary.lighter'
+                            color: "primary.main",
+                            bgcolor: "primary.lighter"
                           }}
                           }}
                         >
                         >
                           C
                           C
@@ -249,8 +249,8 @@ const Notification = () => {
                           <Typography variant="h6">
                           <Typography variant="h6">
                             <Typography component="span" variant="subtitle1">
                             <Typography component="span" variant="subtitle1">
                               Cristina Danny
                               Cristina Danny
-                            </Typography>{' '}
-                            invited to join{' '}
+                            </Typography>{" "}
+                            invited to join{" "}
                             <Typography component="span" variant="subtitle1">
                             <Typography component="span" variant="subtitle1">
                               Meeting.
                               Meeting.
                             </Typography>
                             </Typography>
@@ -265,7 +265,7 @@ const Notification = () => {
                       </ListItemSecondaryAction>
                       </ListItemSecondaryAction>
                     </ListItemButton>
                     </ListItemButton>
                     <Divider />
                     <Divider />
-                    <ListItemButton sx={{ textAlign: 'center', py: `${12}px !important` }}>
+                    <ListItemButton sx={{ textAlign: "center", py: `${12}px !important` }}>
                       <ListItemText
                       <ListItemText
                         primary={
                         primary={
                           <Typography variant="h6" color="primary">
                           <Typography variant="h6" color="primary">

+ 54 - 35
src/layout/MainLayout/Header/HeaderContent/Profile/index.tsx

@@ -1,21 +1,34 @@
-import { useRef, useState, ReactNode, SyntheticEvent } from 'react';
+import { useRef, useState, ReactNode, SyntheticEvent } from "react";
 
 
 // material-ui
 // material-ui
-import { useTheme } from '@mui/material/styles';
-import { Box, ButtonBase, CardContent, ClickAwayListener, Grid, Paper, Popper, Stack, Tab, Tabs, Tooltip, Typography } from '@mui/material';
+import { useTheme } from "@mui/material/styles";
+import {
+  Box,
+  ButtonBase,
+  CardContent,
+  ClickAwayListener,
+  Grid,
+  Paper,
+  Popper,
+  Stack,
+  Tab,
+  Tabs,
+  Tooltip,
+  Typography
+} from "@mui/material";
 
 
 // project import
 // project import
-import Avatar from 'components/@extended/Avatar';
-import MainCard from 'components/MainCard';
-import Transitions from 'components/@extended/Transitions';
-import IconButton from 'components/@extended/IconButton';
-import useAuth from 'hooks/useAuth';
-import ProfileTab from './ProfileTab';
-import SettingTab from './SettingTab';
+import Avatar from "@/components/@extended/Avatar";
+import MainCard from "@/components/MainCard";
+import Transitions from "@/components/@extended/Transitions";
+import IconButton from "@/components/@extended/IconButton";
+import useAuth from "@/hooks/useAuth";
+import ProfileTab from "./ProfileTab";
+import SettingTab from "./SettingTab";
 
 
 // assets
 // assets
-import avatar1 from 'assets/images/users/avatar-1.png';
-import { LogoutOutlined, SettingOutlined, UserOutlined } from '@ant-design/icons';
+import avatar1 from "@/assets/images/users/avatar-1.png";
+import { LogoutOutlined, SettingOutlined, UserOutlined } from "@ant-design/icons";
 
 
 // types
 // types
 interface TabPanelProps {
 interface TabPanelProps {
@@ -30,7 +43,13 @@ function TabPanel(props: TabPanelProps) {
   const { children, value, index, ...other } = props;
   const { children, value, index, ...other } = props;
 
 
   return (
   return (
-    <div role="tabpanel" hidden={value !== index} id={`profile-tabpanel-${index}`} aria-labelledby={`profile-tab-${index}`} {...other}>
+    <div
+      role="tabpanel"
+      hidden={value !== index}
+      id={`profile-tabpanel-${index}`}
+      aria-labelledby={`profile-tab-${index}`}
+      {...other}
+    >
       {value === index && children}
       {value === index && children}
     </div>
     </div>
   );
   );
@@ -39,7 +58,7 @@ function TabPanel(props: TabPanelProps) {
 function a11yProps(index: number) {
 function a11yProps(index: number) {
   return {
   return {
     id: `profile-tab-${index}`,
     id: `profile-tab-${index}`,
-    'aria-controls': `profile-tabpanel-${index}`
+    "aria-controls": `profile-tabpanel-${index}`
   };
   };
 }
 }
 
 
@@ -76,24 +95,24 @@ const Profile = () => {
     setValue(newValue);
     setValue(newValue);
   };
   };
 
 
-  const iconBackColorOpen = theme.palette.mode === 'dark' ? 'grey.200' : 'grey.300';
+  const iconBackColorOpen = theme.palette.mode === "dark" ? "grey.200" : "grey.300";
 
 
   return (
   return (
     <Box sx={{ flexShrink: 0, ml: 0.75 }}>
     <Box sx={{ flexShrink: 0, ml: 0.75 }}>
       <ButtonBase
       <ButtonBase
         sx={{
         sx={{
           p: 0.25,
           p: 0.25,
-          bgcolor: open ? iconBackColorOpen : 'transparent',
+          bgcolor: open ? iconBackColorOpen : "transparent",
           borderRadius: 1,
           borderRadius: 1,
-          '&:hover': { bgcolor: theme.palette.mode === 'dark' ? 'secondary.light' : 'secondary.lighter' },
-          '&:focus-visible': {
+          "&:hover": { bgcolor: theme.palette.mode === "dark" ? "secondary.light" : "secondary.lighter" },
+          "&:focus-visible": {
             outline: `2px solid ${theme.palette.secondary.dark}`,
             outline: `2px solid ${theme.palette.secondary.dark}`,
             outlineOffset: 2
             outlineOffset: 2
           }
           }
         }}
         }}
         aria-label="open profile"
         aria-label="open profile"
         ref={anchorRef}
         ref={anchorRef}
-        aria-controls={open ? 'profile-grow' : undefined}
+        aria-controls={open ? "profile-grow" : undefined}
         aria-haspopup="true"
         aria-haspopup="true"
         onClick={handleToggle}
         onClick={handleToggle}
       >
       >
@@ -112,7 +131,7 @@ const Profile = () => {
         popperOptions={{
         popperOptions={{
           modifiers: [
           modifiers: [
             {
             {
-              name: 'offset',
+              name: "offset",
               options: {
               options: {
                 offset: [0, 9]
                 offset: [0, 9]
               }
               }
@@ -129,7 +148,7 @@ const Profile = () => {
                   width: 290,
                   width: 290,
                   minWidth: 240,
                   minWidth: 240,
                   maxWidth: 290,
                   maxWidth: 290,
-                  [theme.breakpoints.down('md')]: {
+                  [theme.breakpoints.down("md")]: {
                     maxWidth: 250
                     maxWidth: 250
                   }
                   }
                 }}
                 }}
@@ -151,7 +170,7 @@ const Profile = () => {
                         </Grid>
                         </Grid>
                         <Grid item>
                         <Grid item>
                           <Tooltip title="Logout">
                           <Tooltip title="Logout">
-                            <IconButton size="large" sx={{ color: 'text.primary' }} onClick={handleLogout}>
+                            <IconButton size="large" sx={{ color: "text.primary" }} onClick={handleLogout}>
                               <LogoutOutlined />
                               <LogoutOutlined />
                             </IconButton>
                             </IconButton>
                           </Tooltip>
                           </Tooltip>
@@ -160,29 +179,29 @@ const Profile = () => {
                     </CardContent>
                     </CardContent>
                     {open && (
                     {open && (
                       <>
                       <>
-                        <Box sx={{ borderBottom: 1, borderColor: 'divider' }}>
+                        <Box sx={{ borderBottom: 1, borderColor: "divider" }}>
                           <Tabs variant="fullWidth" value={value} onChange={handleChange} aria-label="profile tabs">
                           <Tabs variant="fullWidth" value={value} onChange={handleChange} aria-label="profile tabs">
                             <Tab
                             <Tab
                               sx={{
                               sx={{
-                                display: 'flex',
-                                flexDirection: 'row',
-                                justifyContent: 'center',
-                                alignItems: 'center',
-                                textTransform: 'capitalize'
+                                display: "flex",
+                                flexDirection: "row",
+                                justifyContent: "center",
+                                alignItems: "center",
+                                textTransform: "capitalize"
                               }}
                               }}
-                              icon={<UserOutlined style={{ marginBottom: 0, marginRight: '10px' }} />}
+                              icon={<UserOutlined style={{ marginBottom: 0, marginRight: "10px" }} />}
                               label="Profile"
                               label="Profile"
                               {...a11yProps(0)}
                               {...a11yProps(0)}
                             />
                             />
                             <Tab
                             <Tab
                               sx={{
                               sx={{
-                                display: 'flex',
-                                flexDirection: 'row',
-                                justifyContent: 'center',
-                                alignItems: 'center',
-                                textTransform: 'capitalize'
+                                display: "flex",
+                                flexDirection: "row",
+                                justifyContent: "center",
+                                alignItems: "center",
+                                textTransform: "capitalize"
                               }}
                               }}
-                              icon={<SettingOutlined style={{ marginBottom: 0, marginRight: '10px' }} />}
+                              icon={<SettingOutlined style={{ marginBottom: 0, marginRight: "10px" }} />}
                               label="Setting"
                               label="Setting"
                               {...a11yProps(1)}
                               {...a11yProps(1)}
                             />
                             />

+ 13 - 13
src/layout/MainLayout/Header/index.tsx

@@ -1,16 +1,16 @@
-import { ReactNode, useMemo } from 'react';
+import { ReactNode, useMemo } from "react";
 
 
 // material-ui
 // material-ui
-import { useTheme } from '@mui/material/styles';
-import { AppBar, Toolbar, useMediaQuery, AppBarProps } from '@mui/material';
+import { useTheme } from "@mui/material/styles";
+import { AppBar, Toolbar, useMediaQuery, AppBarProps } from "@mui/material";
 
 
 // project import
 // project import
-import AppBarStyled from './AppBarStyled';
-import HeaderContent from './HeaderContent';
-import IconButton from 'components/@extended/IconButton';
+import AppBarStyled from "./AppBarStyled";
+import HeaderContent from "./HeaderContent";
+import IconButton from "@/components/@extended/IconButton";
 
 
 // assets
 // assets
-import { MenuFoldOutlined, MenuUnfoldOutlined } from '@ant-design/icons';
+import { MenuFoldOutlined, MenuUnfoldOutlined } from "@ant-design/icons";
 
 
 // ==============================|| MAIN LAYOUT - HEADER ||============================== //
 // ==============================|| MAIN LAYOUT - HEADER ||============================== //
 
 
@@ -21,13 +21,13 @@ interface Props {
 
 
 const Header = ({ open, handleDrawerToggle }: Props) => {
 const Header = ({ open, handleDrawerToggle }: Props) => {
   const theme = useTheme();
   const theme = useTheme();
-  const matchDownMD = useMediaQuery(theme.breakpoints.down('lg'));
+  const matchDownMD = useMediaQuery(theme.breakpoints.down("lg"));
 
 
   // header content
   // header content
   const headerContent = useMemo(() => <HeaderContent />, []);
   const headerContent = useMemo(() => <HeaderContent />, []);
 
 
-  const iconBackColorOpen = theme.palette.mode === 'dark' ? 'grey.200' : 'grey.300';
-  const iconBackColor = theme.palette.mode === 'dark' ? 'background.default' : 'grey.100';
+  const iconBackColorOpen = theme.palette.mode === "dark" ? "grey.200" : "grey.300";
+  const iconBackColor = theme.palette.mode === "dark" ? "background.default" : "grey.100";
 
 
   // common header
   // common header
   const mainHeader: ReactNode = (
   const mainHeader: ReactNode = (
@@ -38,7 +38,7 @@ const Header = ({ open, handleDrawerToggle }: Props) => {
         edge="start"
         edge="start"
         color="secondary"
         color="secondary"
         variant="light"
         variant="light"
-        sx={{ color: 'text.primary', bgcolor: open ? iconBackColorOpen : iconBackColor, ml: { xs: 0, lg: -2 } }}
+        sx={{ color: "text.primary", bgcolor: open ? iconBackColorOpen : iconBackColor, ml: { xs: 0, lg: -2 } }}
       >
       >
         {!open ? <MenuUnfoldOutlined /> : <MenuFoldOutlined />}
         {!open ? <MenuUnfoldOutlined /> : <MenuFoldOutlined />}
       </IconButton>
       </IconButton>
@@ -48,8 +48,8 @@ const Header = ({ open, handleDrawerToggle }: Props) => {
 
 
   // app-bar params
   // app-bar params
   const appBar: AppBarProps = {
   const appBar: AppBarProps = {
-    position: 'fixed',
-    color: 'inherit',
+    position: "fixed",
+    color: "inherit",
     elevation: 0,
     elevation: 0,
     sx: {
     sx: {
       borderBottom: `1px solid ${theme.palette.divider}`,
       borderBottom: `1px solid ${theme.palette.divider}`,

+ 26 - 18
src/layout/MainLayout/index.tsx

@@ -1,28 +1,28 @@
-import { useEffect, useState } from 'react';
-import { Outlet } from 'react-router-dom';
-import { useDispatch, useSelector } from 'react-redux';
+import { useEffect, useState } from "react";
+import { Outlet } from "react-router-dom";
+import { useDispatch, useSelector } from "react-redux";
 
 
 // material-ui
 // material-ui
-import { useTheme } from '@mui/material/styles';
-import { useMediaQuery, Box, Container, Toolbar } from '@mui/material';
+import { useTheme } from "@mui/material/styles";
+import { useMediaQuery, Box, Container, Toolbar } from "@mui/material";
 
 
 // project import
 // project import
-import Drawer from './Drawer';
-import Header from './Header';
-import Footer from './Footer';
-import navigation from 'menu-items';
-import useConfig from 'hooks/useConfig';
-import Breadcrumbs from 'components/@extended/Breadcrumbs';
+import Drawer from "./Drawer";
+import Header from "./Header";
+import Footer from "./Footer";
+import navigation from "@/menu-items";
+import useConfig from "@/hooks/useConfig";
+import Breadcrumbs from "@/components/@extended/Breadcrumbs";
 
 
 // types
 // types
-import { RootStateProps } from 'types/root';
-import { openDrawer } from 'store/reducers/menu';
+import { RootStateProps } from "@/types/root";
+import { openDrawer } from "@/store/reducers/menu";
 
 
 // ==============================|| MAIN LAYOUT ||============================== //
 // ==============================|| MAIN LAYOUT ||============================== //
 
 
 const MainLayout = () => {
 const MainLayout = () => {
   const theme = useTheme();
   const theme = useTheme();
-  const matchDownLG = useMediaQuery(theme.breakpoints.down('xl'));
+  const matchDownLG = useMediaQuery(theme.breakpoints.down("xl"));
 
 
   const { container, miniDrawer } = useConfig();
   const { container, miniDrawer } = useConfig();
   const dispatch = useDispatch();
   const dispatch = useDispatch();
@@ -52,15 +52,21 @@ const MainLayout = () => {
   // }, [drawerOpen]);
   // }, [drawerOpen]);
 
 
   return (
   return (
-    <Box sx={{ display: 'flex', width: '100%' }}>
+    <Box sx={{ display: "flex", width: "100%" }}>
       <Header open={open} handleDrawerToggle={handleDrawerToggle} />
       <Header open={open} handleDrawerToggle={handleDrawerToggle} />
       <Drawer open={open} handleDrawerToggle={handleDrawerToggle} />
       <Drawer open={open} handleDrawerToggle={handleDrawerToggle} />
-      <Box component="main" sx={{ width: 'calc(100% - 260px)', flexGrow: 1, p: { xs: 2, sm: 3 } }}>
+      <Box component="main" sx={{ width: "calc(100% - 260px)", flexGrow: 1, p: { xs: 2, sm: 3 } }}>
         <Toolbar />
         <Toolbar />
         {container && (
         {container && (
           <Container
           <Container
             maxWidth="xl"
             maxWidth="xl"
-            sx={{ px: { xs: 0, sm: 2 }, position: 'relative', minHeight: 'calc(100vh - 110px)', display: 'flex', flexDirection: 'column' }}
+            sx={{
+              px: { xs: 0, sm: 2 },
+              position: "relative",
+              minHeight: "calc(100vh - 110px)",
+              display: "flex",
+              flexDirection: "column"
+            }}
           >
           >
             <Breadcrumbs navigation={navigation} title titleBottom card={false} divider={false} />
             <Breadcrumbs navigation={navigation} title titleBottom card={false} divider={false} />
             <Outlet />
             <Outlet />
@@ -68,7 +74,9 @@ const MainLayout = () => {
           </Container>
           </Container>
         )}
         )}
         {!container && (
         {!container && (
-          <Box sx={{ position: 'relative', minHeight: 'calc(100vh - 110px)', display: 'flex', flexDirection: 'column' }}>
+          <Box
+            sx={{ position: "relative", minHeight: "calc(100vh - 110px)", display: "flex", flexDirection: "column" }}
+          >
             <Breadcrumbs navigation={navigation} title titleBottom card={false} divider={false} />
             <Breadcrumbs navigation={navigation} title titleBottom card={false} divider={false} />
             <Outlet />
             <Outlet />
             <Footer />
             <Footer />

+ 2 - 2
src/menu-items/index.tsx

@@ -1,6 +1,6 @@
 // project import
 // project import
-import other from './other';
-import { NavItemType } from 'types/menu';
+import other from "./other";
+import { NavItemType } from "@/types/menu";
 
 
 // ==============================|| MENU ITEMS ||============================== //
 // ==============================|| MENU ITEMS ||============================== //
 
 

+ 17 - 17
src/menu-items/other.tsx

@@ -1,11 +1,11 @@
 // third-party
 // third-party
-import { FormattedMessage } from 'react-intl';
+import { FormattedMessage } from "react-intl";
 
 
 // assets
 // assets
-import { ChromeOutlined, QuestionOutlined, DeploymentUnitOutlined } from '@ant-design/icons';
+import { ChromeOutlined, QuestionOutlined, DeploymentUnitOutlined } from "@ant-design/icons";
 
 
 // type
 // type
-import { NavItemType } from 'types/menu';
+import { NavItemType } from "@/types/menu";
 
 
 // icons
 // icons
 const icons = {
 const icons = {
@@ -17,36 +17,36 @@ const icons = {
 // ==============================|| MENU ITEMS - SUPPORT ||============================== //
 // ==============================|| MENU ITEMS - SUPPORT ||============================== //
 
 
 const other: NavItemType = {
 const other: NavItemType = {
-  id: 'other',
+  id: "other",
   title: <FormattedMessage id="others" />,
   title: <FormattedMessage id="others" />,
-  type: 'group',
+  type: "group",
   children: [
   children: [
     {
     {
-      id: 'sample-page',
+      id: "sample-page",
       title: <FormattedMessage id="sample-page" />,
       title: <FormattedMessage id="sample-page" />,
-      type: 'item',
-      url: '/sample-page',
+      type: "item",
+      url: "/sample-page",
       icon: icons.ChromeOutlined
       icon: icons.ChromeOutlined
     },
     },
     {
     {
-      id: 'documentation',
+      id: "documentation",
       title: <FormattedMessage id="documentation" />,
       title: <FormattedMessage id="documentation" />,
-      type: 'item',
-      url: 'https://codedthemes.gitbook.io/mantis/',
+      type: "item",
+      url: "https://codedthemes.gitbook.io/mantis/",
       icon: icons.QuestionOutlined,
       icon: icons.QuestionOutlined,
       external: true,
       external: true,
       target: true,
       target: true,
       chip: {
       chip: {
-        label: 'gitbook',
-        color: 'secondary',
-        size: 'small'
+        label: "gitbook",
+        color: "secondary",
+        size: "small"
       }
       }
     },
     },
     {
     {
-      id: 'roadmap',
+      id: "roadmap",
       title: <FormattedMessage id="roadmap" />,
       title: <FormattedMessage id="roadmap" />,
-      type: 'item',
-      url: 'https://codedthemes.gitbook.io/mantis/roadmap',
+      type: "item",
+      url: "https://codedthemes.gitbook.io/mantis/roadmap",
       icon: icons.DeploymentUnitOutlined,
       icon: icons.DeploymentUnitOutlined,
       external: true,
       external: true,
       target: true
       target: true

+ 10 - 10
src/pages/auth/check-mail.tsx

@@ -1,20 +1,20 @@
-import { Link } from 'react-router-dom';
+import { Link } from "react-router-dom";
 
 
 // material-ui
 // material-ui
-import { useTheme } from '@mui/material/styles';
-import { Box, Button, Grid, Divider, Typography, useMediaQuery } from '@mui/material';
+import { useTheme } from "@mui/material/styles";
+import { Box, Button, Grid, Divider, Typography, useMediaQuery } from "@mui/material";
 
 
 // project import
 // project import
-import useAuth from 'hooks/useAuth';
-import AnimateButton from 'components/@extended/AnimateButton';
-import AuthWrapper from 'sections/auth/AuthWrapper';
-import FirebaseSocial from 'sections/auth/auth-forms/FirebaseSocial';
+import useAuth from "@/hooks/useAuth";
+import AnimateButton from "@/components/@extended/AnimateButton";
+import AuthWrapper from "@/sections/auth/AuthWrapper";
+import FirebaseSocial from "@/sections/auth/auth-forms/FirebaseSocial";
 
 
 // ================================|| CHECK MAIL ||================================ //
 // ================================|| CHECK MAIL ||================================ //
 
 
 const CheckMail = () => {
 const CheckMail = () => {
   const theme = useTheme();
   const theme = useTheme();
-  const matchDownSM = useMediaQuery(theme.breakpoints.down('sm'));
+  const matchDownSM = useMediaQuery(theme.breakpoints.down("sm"));
 
 
   const { isLoggedIn } = useAuth();
   const { isLoggedIn } = useAuth();
 
 
@@ -33,7 +33,7 @@ const CheckMail = () => {
           <AnimateButton>
           <AnimateButton>
             <Button
             <Button
               component={Link}
               component={Link}
-              to={isLoggedIn ? '/auth/login' : '/login'}
+              to={isLoggedIn ? "/auth/login" : "/login"}
               disableElevation
               disableElevation
               fullWidth
               fullWidth
               size="large"
               size="large"
@@ -47,7 +47,7 @@ const CheckMail = () => {
         </Grid>
         </Grid>
         <Grid item xs={12}>
         <Grid item xs={12}>
           <Divider>
           <Divider>
-            <Typography variant={matchDownSM ? 'subtitle1' : 'h5'}>Sign up with</Typography>
+            <Typography variant={matchDownSM ? "subtitle1" : "h5"}>Sign up with</Typography>
           </Divider>
           </Divider>
         </Grid>
         </Grid>
         <Grid item xs={12}>
         <Grid item xs={12}>

+ 3 - 3
src/pages/auth/code-verification.tsx

@@ -1,9 +1,9 @@
 // material-ui
 // material-ui
-import { Grid, Stack, Typography } from '@mui/material';
+import { Grid, Stack, Typography } from "@mui/material";
 
 
 // project import
 // project import
-import AuthWrapper from 'sections/auth/AuthWrapper';
-import AuthCodeVerification from 'sections/auth/auth-forms/AuthCodeVerification';
+import AuthWrapper from "@/sections/auth/AuthWrapper";
+import AuthCodeVerification from "@/sections/auth/auth-forms/AuthCodeVerification";
 
 
 // ================================|| CODE VERIFICATION ||================================ //
 // ================================|| CODE VERIFICATION ||================================ //
 
 

+ 13 - 8
src/pages/auth/forgot-password.tsx

@@ -1,12 +1,12 @@
-import { Link } from 'react-router-dom';
+import { Link } from "react-router-dom";
 
 
 // material-ui
 // material-ui
-import { Grid, Stack, Typography } from '@mui/material';
+import { Grid, Stack, Typography } from "@mui/material";
 
 
 // project import
 // project import
-import useAuth from 'hooks/useAuth';
-import AuthWrapper from 'sections/auth/AuthWrapper';
-import AuthForgotPassword from 'sections/auth/auth-forms/AuthForgotPassword';
+import useAuth from "@/hooks/useAuth";
+import AuthWrapper from "@/sections/auth/AuthWrapper";
+import AuthForgotPassword from "@/sections/auth/auth-forms/AuthForgotPassword";
 
 
 // ================================|| FORGOT PASSWORD ||================================ //
 // ================================|| FORGOT PASSWORD ||================================ //
 
 
@@ -17,13 +17,18 @@ const ForgotPassword = () => {
     <AuthWrapper>
     <AuthWrapper>
       <Grid container spacing={3}>
       <Grid container spacing={3}>
         <Grid item xs={12}>
         <Grid item xs={12}>
-          <Stack direction="row" justifyContent="space-between" alignItems="baseline" sx={{ mb: { xs: -0.5, sm: 0.5 } }}>
+          <Stack
+            direction="row"
+            justifyContent="space-between"
+            alignItems="baseline"
+            sx={{ mb: { xs: -0.5, sm: 0.5 } }}
+          >
             <Typography variant="h3">Forgot Password</Typography>
             <Typography variant="h3">Forgot Password</Typography>
             <Typography
             <Typography
               component={Link}
               component={Link}
-              to={isLoggedIn ? '/auth/login' : '/login'}
+              to={isLoggedIn ? "/auth/login" : "/login"}
               variant="body1"
               variant="body1"
-              sx={{ textDecoration: 'none' }}
+              sx={{ textDecoration: "none" }}
               color="primary"
               color="primary"
             >
             >
               Back to Login
               Back to Login

+ 13 - 8
src/pages/auth/login.tsx

@@ -1,12 +1,12 @@
-import { Link } from 'react-router-dom';
+import { Link } from "react-router-dom";
 
 
 // material-ui
 // material-ui
-import { Grid, Stack, Typography } from '@mui/material';
+import { Grid, Stack, Typography } from "@mui/material";
 
 
 // project import
 // project import
-import useAuth from 'hooks/useAuth';
-import AuthWrapper from 'sections/auth/AuthWrapper';
-import AuthLogin from 'sections/auth/auth-forms/AuthLogin';
+import useAuth from "@/hooks/useAuth";
+import AuthWrapper from "@/sections/auth/AuthWrapper";
+import AuthLogin from "@/sections/auth/auth-forms/AuthLogin";
 
 
 // ================================|| LOGIN ||================================ //
 // ================================|| LOGIN ||================================ //
 
 
@@ -17,13 +17,18 @@ const Login = () => {
     <AuthWrapper>
     <AuthWrapper>
       <Grid container spacing={3}>
       <Grid container spacing={3}>
         <Grid item xs={12}>
         <Grid item xs={12}>
-          <Stack direction="row" justifyContent="space-between" alignItems="baseline" sx={{ mb: { xs: -0.5, sm: 0.5 } }}>
+          <Stack
+            direction="row"
+            justifyContent="space-between"
+            alignItems="baseline"
+            sx={{ mb: { xs: -0.5, sm: 0.5 } }}
+          >
             <Typography variant="h3">Login</Typography>
             <Typography variant="h3">Login</Typography>
             <Typography
             <Typography
               component={Link}
               component={Link}
-              to={isLoggedIn ? '/auth/register' : '/register'}
+              to={isLoggedIn ? "/auth/register" : "/register"}
               variant="body1"
               variant="body1"
-              sx={{ textDecoration: 'none' }}
+              sx={{ textDecoration: "none" }}
               color="primary"
               color="primary"
             >
             >
               Don&apos;t have an account?
               Don&apos;t have an account?

+ 13 - 8
src/pages/auth/register.tsx

@@ -1,12 +1,12 @@
-import { Link } from 'react-router-dom';
+import { Link } from "react-router-dom";
 
 
 // material-ui
 // material-ui
-import { Grid, Stack, Typography } from '@mui/material';
+import { Grid, Stack, Typography } from "@mui/material";
 
 
 // project import
 // project import
-import useAuth from 'hooks/useAuth';
-import AuthWrapper from 'sections/auth/AuthWrapper';
-import FirebaseRegister from 'sections/auth/auth-forms/AuthRegister';
+import useAuth from "@/hooks/useAuth";
+import AuthWrapper from "@/sections/auth/AuthWrapper";
+import FirebaseRegister from "@/sections/auth/auth-forms/AuthRegister";
 
 
 // ================================|| REGISTER ||================================ //
 // ================================|| REGISTER ||================================ //
 
 
@@ -17,13 +17,18 @@ const Register = () => {
     <AuthWrapper>
     <AuthWrapper>
       <Grid container spacing={3}>
       <Grid container spacing={3}>
         <Grid item xs={12}>
         <Grid item xs={12}>
-          <Stack direction="row" justifyContent="space-between" alignItems="baseline" sx={{ mb: { xs: -0.5, sm: 0.5 } }}>
+          <Stack
+            direction="row"
+            justifyContent="space-between"
+            alignItems="baseline"
+            sx={{ mb: { xs: -0.5, sm: 0.5 } }}
+          >
             <Typography variant="h3">Sign up</Typography>
             <Typography variant="h3">Sign up</Typography>
             <Typography
             <Typography
               component={Link}
               component={Link}
-              to={isLoggedIn ? '/auth/login' : '/login'}
+              to={isLoggedIn ? "/auth/login" : "/login"}
               variant="body1"
               variant="body1"
-              sx={{ textDecoration: 'none' }}
+              sx={{ textDecoration: "none" }}
               color="primary"
               color="primary"
             >
             >
               Already have an account?
               Already have an account?

+ 3 - 3
src/pages/auth/reset-password.tsx

@@ -1,9 +1,9 @@
 // material-ui
 // material-ui
-import { Grid, Stack, Typography } from '@mui/material';
+import { Grid, Stack, Typography } from "@mui/material";
 
 
 // project import
 // project import
-import AuthWrapper from 'sections/auth/AuthWrapper';
-import AuthResetPassword from 'sections/auth/auth-forms/AuthResetPassword';
+import AuthWrapper from "@/sections/auth/AuthWrapper";
+import AuthResetPassword from "@/sections/auth/auth-forms/AuthResetPassword";
 
 
 // ================================|| RESET PASSWORD ||================================ //
 // ================================|| RESET PASSWORD ||================================ //
 
 

+ 6 - 6
src/pages/extra-pages/sample-page.tsx

@@ -1,18 +1,18 @@
 // material-ui
 // material-ui
-import { Typography } from '@mui/material';
+import { Typography } from "@mui/material";
 
 
 // project import
 // project import
-import MainCard from 'components/MainCard';
+import MainCard from "@/components/MainCard";
 
 
 // ==============================|| SAMPLE PAGE ||============================== //
 // ==============================|| SAMPLE PAGE ||============================== //
 
 
 const SamplePage = () => (
 const SamplePage = () => (
   <MainCard title="Sample Card">
   <MainCard title="Sample Card">
     <Typography variant="body2">
     <Typography variant="body2">
-      Lorem ipsum dolor sit amen, consenter nipissing eli, sed do elusion tempos incident ut laborers et doolie magna alissa. Ut enif ad
-      minim venice, quin nostrum exercitation illampu laborings nisi ut liquid ex ea commons construal. Duos aube grue dolor in reprehended
-      in voltage veil esse colum doolie eu fujian bulla parian. Exceptive sin ocean cuspidate non president, sunk in culpa qui officiate
-      descent molls anim id est labours.
+      Lorem ipsum dolor sit amen, consenter nipissing eli, sed do elusion tempos incident ut laborers et doolie magna
+      alissa. Ut enif ad minim venice, quin nostrum exercitation illampu laborings nisi ut liquid ex ea commons
+      construal. Duos aube grue dolor in reprehended in voltage veil esse colum doolie eu fujian bulla parian. Exceptive
+      sin ocean cuspidate non president, sunk in culpa qui officiate descent molls anim id est labours.
     </Typography>
     </Typography>
   </MainCard>
   </MainCard>
 );
 );

+ 19 - 11
src/pages/maintenance/404.tsx

@@ -1,14 +1,14 @@
-import { Link } from 'react-router-dom';
+import { Link } from "react-router-dom";
 
 
 // material-ui
 // material-ui
-import { Box, Button, Grid, Stack, Typography } from '@mui/material';
+import { Box, Button, Grid, Stack, Typography } from "@mui/material";
 
 
 // project import
 // project import
-import config from 'config';
+import config from "@/config";
 
 
 // assets
 // assets
-import error404 from 'assets/images/maintenance/Error404.png';
-import TwoCone from 'assets/images/maintenance/TwoCone.png';
+import error404 from "@/assets/images/maintenance/Error404.png";
+import TwoCone from "@/assets/images/maintenance/TwoCone.png";
 
 
 // ==============================|| ERROR 404 - MAIN ||============================== //
 // ==============================|| ERROR 404 - MAIN ||============================== //
 
 
@@ -21,18 +21,26 @@ function Error404() {
         direction="column"
         direction="column"
         alignItems="center"
         alignItems="center"
         justifyContent="center"
         justifyContent="center"
-        sx={{ minHeight: '100vh', pt: 1.5, pb: 1, overflow: 'hidden' }}
+        sx={{ minHeight: "100vh", pt: 1.5, pb: 1, overflow: "hidden" }}
       >
       >
         <Grid item xs={12}>
         <Grid item xs={12}>
           <Stack direction="row">
           <Stack direction="row">
             <Grid item>
             <Grid item>
               <Box sx={{ width: { xs: 250, sm: 590 }, height: { xs: 130, sm: 300 } }}>
               <Box sx={{ width: { xs: 250, sm: 590 }, height: { xs: 130, sm: 300 } }}>
-                <img src={error404} alt="mantis" style={{ width: '100%', height: '100%' }} />
+                <img src={error404} alt="mantis" style={{ width: "100%", height: "100%" }} />
               </Box>
               </Box>
             </Grid>
             </Grid>
-            <Grid item sx={{ position: 'relative' }}>
-              <Box sx={{ position: 'absolute', top: 60, left: -40, width: { xs: 130, sm: 390 }, height: { xs: 115, sm: 330 } }}>
-                <img src={TwoCone} alt="mantis" style={{ width: '100%', height: '100%' }} />
+            <Grid item sx={{ position: "relative" }}>
+              <Box
+                sx={{
+                  position: "absolute",
+                  top: 60,
+                  left: -40,
+                  width: { xs: 130, sm: 390 },
+                  height: { xs: 115, sm: 330 }
+                }}
+              >
+                <img src={TwoCone} alt="mantis" style={{ width: "100%", height: "100%" }} />
               </Box>
               </Box>
             </Grid>
             </Grid>
           </Stack>
           </Stack>
@@ -40,7 +48,7 @@ function Error404() {
         <Grid item xs={12}>
         <Grid item xs={12}>
           <Stack spacing={2} justifyContent="center" alignItems="center">
           <Stack spacing={2} justifyContent="center" alignItems="center">
             <Typography variant="h1">Page Not Found</Typography>
             <Typography variant="h1">Page Not Found</Typography>
-            <Typography color="textSecondary" align="center" sx={{ width: { xs: '73%', sm: '61%' } }}>
+            <Typography color="textSecondary" align="center" sx={{ width: { xs: "73%", sm: "61%" } }}>
               The page you are looking was moved, removed, renamed, or might never exist!
               The page you are looking was moved, removed, renamed, or might never exist!
             </Typography>
             </Typography>
             <Button component={Link} to={config.defaultPath} variant="contained">
             <Button component={Link} to={config.defaultPath} variant="contained">

+ 16 - 11
src/pages/maintenance/500.tsx

@@ -1,38 +1,43 @@
-import { Link } from 'react-router-dom';
+import { Link } from "react-router-dom";
 
 
 // material-ui
 // material-ui
-import { useTheme } from '@mui/material/styles';
-import { Box, Button, Grid, Stack, Typography, useMediaQuery } from '@mui/material';
+import { useTheme } from "@mui/material/styles";
+import { Box, Button, Grid, Stack, Typography, useMediaQuery } from "@mui/material";
 
 
 // project import
 // project import
-import config from 'config';
+import config from "@/config";
 
 
 // assets
 // assets
-import error500 from 'assets/images/maintenance/Error500.png';
+import error500 from "@/assets/images/maintenance/Error500.png";
 
 
 // ==============================|| ERROR 500 - MAIN ||============================== //
 // ==============================|| ERROR 500 - MAIN ||============================== //
 
 
 function Error500() {
 function Error500() {
   const theme = useTheme();
   const theme = useTheme();
-  const matchDownSM = useMediaQuery(theme.breakpoints.down('sm'));
+  const matchDownSM = useMediaQuery(theme.breakpoints.down("sm"));
 
 
   return (
   return (
     <>
     <>
-      <Grid container direction="column" alignItems="center" justifyContent="center" sx={{ minHeight: '100vh' }}>
+      <Grid container direction="column" alignItems="center" justifyContent="center" sx={{ minHeight: "100vh" }}>
         <Grid item xs={12}>
         <Grid item xs={12}>
           <Box sx={{ width: { xs: 350, sm: 396 } }}>
           <Box sx={{ width: { xs: 350, sm: 396 } }}>
-            <img src={error500} alt="mantis" style={{ height: '100%', width: '100%' }} />
+            <img src={error500} alt="mantis" style={{ height: "100%", width: "100%" }} />
           </Box>
           </Box>
         </Grid>
         </Grid>
         <Grid item xs={12}>
         <Grid item xs={12}>
           <Stack justifyContent="center" alignItems="center">
           <Stack justifyContent="center" alignItems="center">
-            <Typography align="center" variant={matchDownSM ? 'h2' : 'h1'}>
+            <Typography align="center" variant={matchDownSM ? "h2" : "h1"}>
               Internal Server Error
               Internal Server Error
             </Typography>
             </Typography>
-            <Typography color="textSecondary" variant="body2" align="center" sx={{ width: { xs: '73%', sm: '70%' }, mt: 1 }}>
+            <Typography
+              color="textSecondary"
+              variant="body2"
+              align="center"
+              sx={{ width: { xs: "73%", sm: "70%" }, mt: 1 }}
+            >
               Server error 500. we fixing the problem. please try again at a later stage.
               Server error 500. we fixing the problem. please try again at a later stage.
             </Typography>
             </Typography>
-            <Button component={Link} to={config.defaultPath} variant="contained" sx={{ textTransform: 'none', mt: 4 }}>
+            <Button component={Link} to={config.defaultPath} variant="contained" sx={{ textTransform: "none", mt: 4 }}>
               Go to homepage
               Go to homepage
             </Button>
             </Button>
           </Stack>
           </Stack>

+ 21 - 14
src/pages/maintenance/coming-soon.tsx

@@ -1,29 +1,29 @@
 // material-ui
 // material-ui
-import { useTheme } from '@mui/material/styles';
-import { Box, Button, Grid, Stack, TextField, Typography, useMediaQuery } from '@mui/material';
+import { useTheme } from "@mui/material/styles";
+import { Box, Button, Grid, Stack, TextField, Typography, useMediaQuery } from "@mui/material";
 
 
 // third party
 // third party
-import { useTimer } from 'react-timer-hook';
+import { useTimer } from "react-timer-hook";
 
 
 // project import
 // project import
-import MainCard from 'components/MainCard';
+import MainCard from "@/components/MainCard";
 
 
 // assets
 // assets
-import coming from 'assets/images/maintenance/coming-soon.png';
+import coming from "@/assets/images/maintenance/coming-soon.png";
 
 
 // ==============================|| COMING SOON - MAIN ||============================== //
 // ==============================|| COMING SOON - MAIN ||============================== //
 
 
 const TimerBox = ({ count, label }: { count: number; label: string }) => {
 const TimerBox = ({ count, label }: { count: number; label: string }) => {
   const theme = useTheme();
   const theme = useTheme();
-  const matchDownSM = useMediaQuery(theme.breakpoints.down('sm'));
+  const matchDownSM = useMediaQuery(theme.breakpoints.down("sm"));
 
 
   return (
   return (
     <MainCard content={false} sx={{ width: { xs: 60, sm: 80 } }}>
     <MainCard content={false} sx={{ width: { xs: 60, sm: 80 } }}>
       <Stack justifyContent="center" alignItems="center">
       <Stack justifyContent="center" alignItems="center">
         <Box sx={{ py: 1.75 }}>
         <Box sx={{ py: 1.75 }}>
-          <Typography variant={matchDownSM ? 'h4' : 'h2'}>{count}</Typography>
+          <Typography variant={matchDownSM ? "h4" : "h2"}>{count}</Typography>
         </Box>
         </Box>
-        <Box sx={{ p: 0.5, bgcolor: 'secondary.lighter', width: '100%' }}>
+        <Box sx={{ p: 0.5, bgcolor: "secondary.lighter", width: "100%" }}>
           <Typography align="center" variant="subtitle2">
           <Typography align="center" variant="subtitle2">
             {label}
             {label}
           </Typography>
           </Typography>
@@ -41,10 +41,17 @@ function ComingSoon() {
 
 
   return (
   return (
     <>
     <>
-      <Grid container spacing={4} direction="column" alignItems="center" justifyContent="center" sx={{ minHeight: '100vh', py: 2 }}>
+      <Grid
+        container
+        spacing={4}
+        direction="column"
+        alignItems="center"
+        justifyContent="center"
+        sx={{ minHeight: "100vh", py: 2 }}
+      >
         <Grid item xs={12}>
         <Grid item xs={12}>
-          <Box sx={{ height: { xs: 310, sm: 420 }, width: { xs: 360, sm: 'auto' } }}>
-            <img src={coming} alt="mantis" style={{ height: '100%', width: '100%' }} />
+          <Box sx={{ height: { xs: 310, sm: 420 }, width: { xs: 360, sm: "auto" } }}>
+            <img src={coming} alt="mantis" style={{ height: "100%", width: "100%" }} />
           </Box>
           </Box>
         </Grid>
         </Grid>
         <Grid item xs={12}>
         <Grid item xs={12}>
@@ -57,7 +64,7 @@ function ComingSoon() {
             </Typography>
             </Typography>
           </Stack>
           </Stack>
         </Grid>
         </Grid>
-        <Grid item xs={12} sx={{ width: { xs: '95%', md: '40%' } }}>
+        <Grid item xs={12} sx={{ width: { xs: "95%", md: "40%" } }}>
           <Stack direction="row" alignItems="center" justifyContent="center" spacing={{ xs: 1, sm: 2 }}>
           <Stack direction="row" alignItems="center" justifyContent="center" spacing={{ xs: 1, sm: 2 }}>
             <TimerBox count={days} label="day" />
             <TimerBox count={days} label="day" />
             <Typography variant="h1"> : </Typography>
             <Typography variant="h1"> : </Typography>
@@ -68,14 +75,14 @@ function ComingSoon() {
             <TimerBox count={seconds} label="sec" />
             <TimerBox count={seconds} label="sec" />
           </Stack>
           </Stack>
         </Grid>
         </Grid>
-        <Grid item xs={12} sx={{ width: { xs: 380, md: '40%', lg: '30%' } }}>
+        <Grid item xs={12} sx={{ width: { xs: 380, md: "40%", lg: "30%" } }}>
           <Stack spacing={2} sx={{ mt: 2 }}>
           <Stack spacing={2} sx={{ mt: 2 }}>
             <Typography align="center" color="textSecondary">
             <Typography align="center" color="textSecondary">
               Be the first to be notified when Mantis launches.
               Be the first to be notified when Mantis launches.
             </Typography>
             </Typography>
             <Stack direction="row" spacing={1}>
             <Stack direction="row" spacing={1}>
               <TextField fullWidth placeholder="Email Address" />
               <TextField fullWidth placeholder="Email Address" />
-              <Button variant="contained" sx={{ width: '50%' }}>
+              <Button variant="contained" sx={{ width: "50%" }}>
                 Notify Me
                 Notify Me
               </Button>
               </Button>
             </Stack>
             </Stack>

+ 14 - 7
src/pages/maintenance/under-construction.tsx

@@ -1,22 +1,29 @@
-import { Link } from 'react-router-dom';
+import { Link } from "react-router-dom";
 
 
 // material-ui
 // material-ui
-import { Box, Button, Grid, Stack, Typography } from '@mui/material';
+import { Box, Button, Grid, Stack, Typography } from "@mui/material";
 
 
 // project import
 // project import
-import config from 'config';
+import config from "@/config";
 
 
 // assets
 // assets
-import construction from 'assets/images/maintenance/under-construction.svg';
+import construction from "@/assets/images/maintenance/under-construction.svg";
 
 
 // ==============================|| UNDER CONSTRUCTION - MAIN ||============================== //
 // ==============================|| UNDER CONSTRUCTION - MAIN ||============================== //
 
 
 function UnderConstruction() {
 function UnderConstruction() {
   return (
   return (
-    <Grid container spacing={4} direction="column" alignItems="center" justifyContent="center" sx={{ minHeight: '100vh', py: 2 }}>
+    <Grid
+      container
+      spacing={4}
+      direction="column"
+      alignItems="center"
+      justifyContent="center"
+      sx={{ minHeight: "100vh", py: 2 }}
+    >
       <Grid item xs={12}>
       <Grid item xs={12}>
         <Box sx={{ width: { xs: 300, sm: 480 } }}>
         <Box sx={{ width: { xs: 300, sm: 480 } }}>
-          <img src={construction} alt="mantis" style={{ width: '100%', height: 'auto' }} />
+          <img src={construction} alt="mantis" style={{ width: "100%", height: "auto" }} />
         </Box>
         </Box>
       </Grid>
       </Grid>
       <Grid item xs={12}>
       <Grid item xs={12}>
@@ -24,7 +31,7 @@ function UnderConstruction() {
           <Typography align="center" variant="h1">
           <Typography align="center" variant="h1">
             Under Construction
             Under Construction
           </Typography>
           </Typography>
-          <Typography color="textSecondary" align="center" sx={{ width: '85%' }}>
+          <Typography color="textSecondary" align="center" sx={{ width: "85%" }}>
             Hey! Please check out this site later. We are doing some maintenance on it right now.
             Hey! Please check out this site later. We are doing some maintenance on it right now.
           </Typography>
           </Typography>
           <Button component={Link} to={config.defaultPath} variant="contained">
           <Button component={Link} to={config.defaultPath} variant="contained">

+ 0 - 1
src/react-app-env.d.ts

@@ -1 +0,0 @@
-/// <reference types="react-scripts" />

+ 1 - 1
src/reportWebVitals.ts

@@ -1,7 +1,7 @@
 import { ReportHandler } from 'web-vitals';
 import { ReportHandler } from 'web-vitals';
 
 
 const reportWebVitals = (onPerfEntry?: ReportHandler) => {
 const reportWebVitals = (onPerfEntry?: ReportHandler) => {
-  if (onPerfEntry && onPerfEntry instanceof Function) {
+  if (onPerfEntry) {
     import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
     import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
       getCLS(onPerfEntry);
       getCLS(onPerfEntry);
       getFID(onPerfEntry);
       getFID(onPerfEntry);

+ 19 - 19
src/routes/LoginRoutes.tsx

@@ -1,25 +1,25 @@
-import { lazy } from 'react';
+import { lazy } from "react";
 
 
 // project import
 // project import
-import GuestGuard from 'utils/route-guard/GuestGuard';
-import CommonLayout from 'layout/CommonLayout';
-import Loadable from 'components/Loadable';
+import GuestGuard from "@/utils/route-guard/GuestGuard";
+import CommonLayout from "@/layout/CommonLayout";
+import Loadable from "@/components/Loadable";
 
 
 // render - login
 // render - login
-const AuthLogin = Loadable(lazy(() => import('pages/auth/login')));
-const AuthRegister = Loadable(lazy(() => import('pages/auth/register')));
-const AuthForgotPassword = Loadable(lazy(() => import('pages/auth/forgot-password')));
-const AuthCheckMail = Loadable(lazy(() => import('pages/auth/check-mail')));
-const AuthResetPassword = Loadable(lazy(() => import('pages/auth/reset-password')));
-const AuthCodeVerification = Loadable(lazy(() => import('pages/auth/code-verification')));
+const AuthLogin = Loadable(lazy(() => import("@/pages/auth/login")));
+const AuthRegister = Loadable(lazy(() => import("@/pages/auth/register")));
+const AuthForgotPassword = Loadable(lazy(() => import("@/pages/auth/forgot-password")));
+const AuthCheckMail = Loadable(lazy(() => import("@/pages/auth/check-mail")));
+const AuthResetPassword = Loadable(lazy(() => import("@/pages/auth/reset-password")));
+const AuthCodeVerification = Loadable(lazy(() => import("@/pages/auth/code-verification")));
 
 
 // ==============================|| AUTH ROUTING ||============================== //
 // ==============================|| AUTH ROUTING ||============================== //
 
 
 const LoginRoutes = {
 const LoginRoutes = {
-  path: '/',
+  path: "/",
   children: [
   children: [
     {
     {
-      path: '/',
+      path: "/",
       element: (
       element: (
         <GuestGuard>
         <GuestGuard>
           <CommonLayout />
           <CommonLayout />
@@ -27,31 +27,31 @@ const LoginRoutes = {
       ),
       ),
       children: [
       children: [
         {
         {
-          path: '/',
+          path: "/",
           element: <AuthLogin />
           element: <AuthLogin />
         },
         },
         {
         {
-          path: 'login',
+          path: "login",
           element: <AuthLogin />
           element: <AuthLogin />
         },
         },
         {
         {
-          path: 'register',
+          path: "register",
           element: <AuthRegister />
           element: <AuthRegister />
         },
         },
         {
         {
-          path: 'forgot-password',
+          path: "forgot-password",
           element: <AuthForgotPassword />
           element: <AuthForgotPassword />
         },
         },
         {
         {
-          path: 'check-mail',
+          path: "check-mail",
           element: <AuthCheckMail />
           element: <AuthCheckMail />
         },
         },
         {
         {
-          path: 'reset-password',
+          path: "reset-password",
           element: <AuthResetPassword />
           element: <AuthResetPassword />
         },
         },
         {
         {
-          path: 'code-verification',
+          path: "code-verification",
           element: <AuthCodeVerification />
           element: <AuthCodeVerification />
         }
         }
       ]
       ]

+ 18 - 18
src/routes/MainRoutes.tsx

@@ -1,27 +1,27 @@
-import { lazy } from 'react';
+import { lazy } from "react";
 
 
 // project import
 // project import
-import MainLayout from 'layout/MainLayout';
-import CommonLayout from 'layout/CommonLayout';
-import Loadable from 'components/Loadable';
-import AuthGuard from 'utils/route-guard/AuthGuard';
+import MainLayout from "@/layout/MainLayout";
+import CommonLayout from "@/layout/CommonLayout";
+import Loadable from "@/components/Loadable";
+import AuthGuard from "@/utils/route-guard/AuthGuard";
 
 
 // pages routing
 // pages routing
-const MaintenanceError = Loadable(lazy(() => import('pages/maintenance/404')));
-const MaintenanceError500 = Loadable(lazy(() => import('pages/maintenance/500')));
-const MaintenanceUnderConstruction = Loadable(lazy(() => import('pages/maintenance/under-construction')));
-const MaintenanceComingSoon = Loadable(lazy(() => import('pages/maintenance/coming-soon')));
+const MaintenanceError = Loadable(lazy(() => import("@/pages/maintenance/404")));
+const MaintenanceError500 = Loadable(lazy(() => import("@/pages/maintenance/500")));
+const MaintenanceUnderConstruction = Loadable(lazy(() => import("@/pages/maintenance/under-construction")));
+const MaintenanceComingSoon = Loadable(lazy(() => import("@/pages/maintenance/coming-soon")));
 
 
 // render - sample page
 // render - sample page
-const SamplePage = Loadable(lazy(() => import('pages/extra-pages/sample-page')));
+const SamplePage = Loadable(lazy(() => import("@/pages/extra-pages/sample-page")));
 
 
 // ==============================|| MAIN ROUTING ||============================== //
 // ==============================|| MAIN ROUTING ||============================== //
 
 
 const MainRoutes = {
 const MainRoutes = {
-  path: '/',
+  path: "/",
   children: [
   children: [
     {
     {
-      path: '/',
+      path: "/",
       element: (
       element: (
         <AuthGuard>
         <AuthGuard>
           <MainLayout />
           <MainLayout />
@@ -29,29 +29,29 @@ const MainRoutes = {
       ),
       ),
       children: [
       children: [
         {
         {
-          path: 'sample-page',
+          path: "sample-page",
           element: <SamplePage />
           element: <SamplePage />
         }
         }
       ]
       ]
     },
     },
     {
     {
-      path: '/maintenance',
+      path: "/maintenance",
       element: <CommonLayout />,
       element: <CommonLayout />,
       children: [
       children: [
         {
         {
-          path: '404',
+          path: "404",
           element: <MaintenanceError />
           element: <MaintenanceError />
         },
         },
         {
         {
-          path: '500',
+          path: "500",
           element: <MaintenanceError500 />
           element: <MaintenanceError500 />
         },
         },
         {
         {
-          path: 'under-construction',
+          path: "under-construction",
           element: <MaintenanceUnderConstruction />
           element: <MaintenanceUnderConstruction />
         },
         },
         {
         {
-          path: 'coming-soon',
+          path: "coming-soon",
           element: <MaintenanceComingSoon />
           element: <MaintenanceComingSoon />
         }
         }
       ]
       ]

+ 5 - 5
src/sections/auth/AuthCard.tsx

@@ -1,9 +1,9 @@
 // material-ui
 // material-ui
-import { Theme } from '@mui/material/styles';
-import { Box } from '@mui/material';
+import { Theme } from "@mui/material/styles";
+import { Box } from "@mui/material";
 
 
 // project import
 // project import
-import MainCard, { MainCardProps } from 'components/MainCard';
+import MainCard, { MainCardProps } from "@/components/MainCard";
 
 
 // ==============================|| AUTHENTICATION - CARD WRAPPER ||============================== //
 // ==============================|| AUTHENTICATION - CARD WRAPPER ||============================== //
 
 
@@ -12,9 +12,9 @@ const AuthCard = ({ children, ...other }: MainCardProps) => (
     sx={{
     sx={{
       maxWidth: { xs: 400, lg: 475 },
       maxWidth: { xs: 400, lg: 475 },
       margin: { xs: 2.5, md: 3 },
       margin: { xs: 2.5, md: 3 },
-      '& > *': {
+      "& > *": {
         flexGrow: 1,
         flexGrow: 1,
-        flexBasis: '50%'
+        flexBasis: "50%"
       }
       }
     }}
     }}
     content={false}
     content={false}

+ 9 - 9
src/sections/auth/AuthWrapper.tsx

@@ -1,15 +1,15 @@
-import { ReactNode } from 'react';
+import { ReactNode } from "react";
 
 
 // material-ui
 // material-ui
-import { Box, Grid } from '@mui/material';
+import { Box, Grid } from "@mui/material";
 
 
 // project import
 // project import
-import AuthFooter from 'components/cards/AuthFooter';
-import Logo from 'components/logo';
-import AuthCard from './AuthCard';
+import AuthFooter from "@/components/cards/AuthFooter";
+import Logo from "@/components/logo";
+import AuthCard from "./AuthCard";
 
 
 // assets
 // assets
-import AuthBackground from 'assets/images/auth/AuthBackground';
+import AuthBackground from "@/assets/images/auth/AuthBackground";
 
 
 interface Props {
 interface Props {
   children: ReactNode;
   children: ReactNode;
@@ -18,14 +18,14 @@ interface Props {
 // ==============================|| AUTHENTICATION - WRAPPER ||============================== //
 // ==============================|| AUTHENTICATION - WRAPPER ||============================== //
 
 
 const AuthWrapper = ({ children }: Props) => (
 const AuthWrapper = ({ children }: Props) => (
-  <Box sx={{ minHeight: '100vh' }}>
+  <Box sx={{ minHeight: "100vh" }}>
     <AuthBackground />
     <AuthBackground />
     <Grid
     <Grid
       container
       container
       direction="column"
       direction="column"
       justifyContent="flex-end"
       justifyContent="flex-end"
       sx={{
       sx={{
-        minHeight: '100vh'
+        minHeight: "100vh"
       }}
       }}
     >
     >
       <Grid item xs={12} sx={{ ml: 3, mt: 3 }}>
       <Grid item xs={12} sx={{ ml: 3, mt: 3 }}>
@@ -38,7 +38,7 @@ const AuthWrapper = ({ children }: Props) => (
           container
           container
           justifyContent="center"
           justifyContent="center"
           alignItems="center"
           alignItems="center"
-          sx={{ minHeight: { xs: 'calc(100vh - 210px)', sm: 'calc(100vh - 134px)', md: 'calc(100vh - 112px)' } }}
+          sx={{ minHeight: { xs: "calc(100vh - 210px)", sm: "calc(100vh - 134px)", md: "calc(100vh - 112px)" } }}
         >
         >
           <Grid item>
           <Grid item>
             <AuthCard>{children}</AuthCard>
             <AuthCard>{children}</AuthCard>

+ 17 - 13
src/sections/auth/auth-forms/AuthCodeVerification.tsx

@@ -1,14 +1,14 @@
-import { useState } from 'react';
+import { useState } from "react";
 
 
 // material-ui
 // material-ui
-import { useTheme } from '@mui/material/styles';
-import { Button, Grid, Stack, Typography } from '@mui/material';
+import { useTheme } from "@mui/material/styles";
+import { Button, Grid, Stack, Typography } from "@mui/material";
 
 
 // third-party
 // third-party
-import OtpInput from 'react18-input-otp';
+import OtpInput from "react18-input-otp";
 
 
 // project import
 // project import
-import AnimateButton from 'components/@extended/AnimateButton';
+import AnimateButton from "@/components/@extended/AnimateButton";
 
 
 // ============================|| STATIC - CODE VERIFICATION ||============================ //
 // ============================|| STATIC - CODE VERIFICATION ||============================ //
 
 
@@ -16,7 +16,7 @@ const AuthCodeVerification = () => {
   const theme = useTheme();
   const theme = useTheme();
   const [otp, setOtp] = useState<string>();
   const [otp, setOtp] = useState<string>();
 
 
-  const borderColor = theme.palette.mode === 'dark' ? theme.palette.grey[200] : theme.palette.grey[300];
+  const borderColor = theme.palette.mode === "dark" ? theme.palette.grey[200] : theme.palette.grey[300];
 
 
   return (
   return (
     <Grid container spacing={3}>
     <Grid container spacing={3}>
@@ -25,19 +25,19 @@ const AuthCodeVerification = () => {
           value={otp}
           value={otp}
           onChange={(otp: string) => setOtp(otp)}
           onChange={(otp: string) => setOtp(otp)}
           numInputs={4}
           numInputs={4}
-          containerStyle={{ justifyContent: 'space-between' }}
+          containerStyle={{ justifyContent: "space-between" }}
           inputStyle={{
           inputStyle={{
-            width: '100%',
-            margin: '8px',
-            padding: '10px',
+            width: "100%",
+            margin: "8px",
+            padding: "10px",
             border: `1px solid ${borderColor}`,
             border: `1px solid ${borderColor}`,
             borderRadius: 4,
             borderRadius: 4,
-            ':hover': {
+            ":hover": {
               borderColor: theme.palette.primary.main
               borderColor: theme.palette.primary.main
             }
             }
           }}
           }}
           focusStyle={{
           focusStyle={{
-            outline: 'none',
+            outline: "none",
             boxShadow: theme.customShadows.primary,
             boxShadow: theme.customShadows.primary,
             border: `1px solid ${theme.palette.primary.main}`
             border: `1px solid ${theme.palette.primary.main}`
           }}
           }}
@@ -53,7 +53,11 @@ const AuthCodeVerification = () => {
       <Grid item xs={12}>
       <Grid item xs={12}>
         <Stack direction="row" justifyContent="space-between" alignItems="baseline">
         <Stack direction="row" justifyContent="space-between" alignItems="baseline">
           <Typography>Did not receive the email? Check your spam filter, or</Typography>
           <Typography>Did not receive the email? Check your spam filter, or</Typography>
-          <Typography variant="body1" sx={{ minWidth: 85, ml: 2, textDecoration: 'none', cursor: 'pointer' }} color="primary">
+          <Typography
+            variant="body1"
+            sx={{ minWidth: 85, ml: 2, textDecoration: "none", cursor: "pointer" }}
+            color="primary"
+          >
             Resend code
             Resend code
           </Typography>
           </Typography>
         </Stack>
         </Stack>

+ 24 - 16
src/sections/auth/auth-forms/AuthForgotPassword.tsx

@@ -1,18 +1,18 @@
-import { useNavigate } from 'react-router-dom';
-import { useDispatch } from 'react-redux';
+import { useNavigate } from "react-router-dom";
+import { useDispatch } from "react-redux";
 
 
 // material-ui
 // material-ui
-import { Button, FormHelperText, Grid, InputLabel, OutlinedInput, Stack, Typography } from '@mui/material';
+import { Button, FormHelperText, Grid, InputLabel, OutlinedInput, Stack, Typography } from "@mui/material";
 
 
 // third party
 // third party
-import * as Yup from 'yup';
-import { Formik } from 'formik';
+import * as Yup from "yup";
+import { Formik } from "formik";
 
 
 // project import
 // project import
-import useAuth from 'hooks/useAuth';
-import useScriptRef from 'hooks/useScriptRef';
-import AnimateButton from 'components/@extended/AnimateButton';
-import { openSnackbar } from 'store/reducers/snackbar';
+import useAuth from "@/hooks/useAuth";
+import useScriptRef from "@/hooks/useScriptRef";
+import AnimateButton from "@/components/@extended/AnimateButton";
+import { openSnackbar } from "@/store/reducers/snackbar";
 
 
 // ============================|| FIREBASE - FORGOT PASSWORD ||============================ //
 // ============================|| FIREBASE - FORGOT PASSWORD ||============================ //
 
 
@@ -27,11 +27,11 @@ const AuthForgotPassword = () => {
     <>
     <>
       <Formik
       <Formik
         initialValues={{
         initialValues={{
-          email: '',
+          email: "",
           submit: null
           submit: null
         }}
         }}
         validationSchema={Yup.object().shape({
         validationSchema={Yup.object().shape({
-          email: Yup.string().email('Must be a valid email').max(255).required('Email is required')
+          email: Yup.string().email("Must be a valid email").max(255).required("Email is required")
         })}
         })}
         onSubmit={async (values, { setErrors, setStatus, setSubmitting }) => {
         onSubmit={async (values, { setErrors, setStatus, setSubmitting }) => {
           try {
           try {
@@ -42,16 +42,16 @@ const AuthForgotPassword = () => {
                 dispatch(
                 dispatch(
                   openSnackbar({
                   openSnackbar({
                     open: true,
                     open: true,
-                    message: 'Check mail for reset password link',
-                    variant: 'alert',
+                    message: "Check mail for reset password link",
+                    variant: "alert",
                     alert: {
                     alert: {
-                      color: 'success'
+                      color: "success"
                     },
                     },
                     close: false
                     close: false
                   })
                   })
                 );
                 );
                 setTimeout(() => {
                 setTimeout(() => {
-                  navigate(isLoggedIn ? '/auth/check-mail' : '/check-mail', { replace: true });
+                  navigate(isLoggedIn ? "/auth/check-mail" : "/check-mail", { replace: true });
                 }, 1500);
                 }, 1500);
 
 
                 // WARNING: do not set any formik state here as formik might be already destroyed here. You may get following error by doing so.
                 // WARNING: do not set any formik state here as formik might be already destroyed here. You may get following error by doing so.
@@ -110,7 +110,15 @@ const AuthForgotPassword = () => {
               </Grid>
               </Grid>
               <Grid item xs={12}>
               <Grid item xs={12}>
                 <AnimateButton>
                 <AnimateButton>
-                  <Button disableElevation disabled={isSubmitting} fullWidth size="large" type="submit" variant="contained" color="primary">
+                  <Button
+                    disableElevation
+                    disabled={isSubmitting}
+                    fullWidth
+                    size="large"
+                    type="submit"
+                    variant="contained"
+                    color="primary"
+                  >
                     Send Password Reset Email
                     Send Password Reset Email
                   </Button>
                   </Button>
                 </AnimateButton>
                 </AnimateButton>

+ 33 - 21
src/sections/auth/auth-forms/AuthLogin.tsx

@@ -1,5 +1,5 @@
-import React from 'react';
-import { Link as RouterLink } from 'react-router-dom';
+import React from "react";
+import { Link as RouterLink } from "react-router-dom";
 
 
 // material-ui
 // material-ui
 import {
 import {
@@ -15,21 +15,21 @@ import {
   OutlinedInput,
   OutlinedInput,
   Stack,
   Stack,
   Typography
   Typography
-} from '@mui/material';
+} from "@mui/material";
 
 
 // third party
 // third party
-import * as Yup from 'yup';
-import { Formik } from 'formik';
+import * as Yup from "yup";
+import { Formik } from "formik";
 
 
 // project import
 // project import
-import useAuth from 'hooks/useAuth';
-import useScriptRef from 'hooks/useScriptRef';
-import FirebaseSocial from './FirebaseSocial';
-import IconButton from 'components/@extended/IconButton';
-import AnimateButton from 'components/@extended/AnimateButton';
+import useAuth from "@/hooks/useAuth";
+import useScriptRef from "@/hooks/useScriptRef";
+import FirebaseSocial from "./FirebaseSocial";
+import IconButton from "@/components/@extended/IconButton";
+import AnimateButton from "@/components/@extended/AnimateButton";
 
 
 // assets
 // assets
-import { EyeOutlined, EyeInvisibleOutlined } from '@ant-design/icons';
+import { EyeOutlined, EyeInvisibleOutlined } from "@ant-design/icons";
 
 
 // ============================|| FIREBASE - LOGIN ||============================ //
 // ============================|| FIREBASE - LOGIN ||============================ //
 
 
@@ -50,7 +50,7 @@ const AuthLogin = () => {
   };
   };
 
 
   const onKeyDown = (keyEvent: any) => {
   const onKeyDown = (keyEvent: any) => {
-    if (keyEvent.getModifierState('CapsLock')) {
+    if (keyEvent.getModifierState("CapsLock")) {
       setCapsWarning(true);
       setCapsWarning(true);
     } else {
     } else {
       setCapsWarning(false);
       setCapsWarning(false);
@@ -61,13 +61,13 @@ const AuthLogin = () => {
     <>
     <>
       <Formik
       <Formik
         initialValues={{
         initialValues={{
-          email: 'info@codedthemes.com',
-          password: '123456',
+          email: "info@codedthemes.com",
+          password: "123456",
           submit: null
           submit: null
         }}
         }}
         validationSchema={Yup.object().shape({
         validationSchema={Yup.object().shape({
-          email: Yup.string().email('Must be a valid email').max(255).required('Email is required'),
-          password: Yup.string().max(255).required('Password is required')
+          email: Yup.string().email("Must be a valid email").max(255).required("Email is required"),
+          password: Yup.string().max(255).required("Password is required")
         })}
         })}
         onSubmit={async (values, { setErrors, setStatus, setSubmitting }) => {
         onSubmit={async (values, { setErrors, setStatus, setSubmitting }) => {
           try {
           try {
@@ -123,10 +123,10 @@ const AuthLogin = () => {
                   <InputLabel htmlFor="password-login">Password</InputLabel>
                   <InputLabel htmlFor="password-login">Password</InputLabel>
                   <OutlinedInput
                   <OutlinedInput
                     fullWidth
                     fullWidth
-                    color={capsWarning ? 'warning' : 'primary'}
+                    color={capsWarning ? "warning" : "primary"}
                     error={Boolean(touched.password && errors.password)}
                     error={Boolean(touched.password && errors.password)}
                     id="-password-login"
                     id="-password-login"
-                    type={showPassword ? 'text' : 'password'}
+                    type={showPassword ? "text" : "password"}
                     value={values.password}
                     value={values.password}
                     name="password"
                     name="password"
                     onBlur={(event: React.FocusEvent<any, Element>) => {
                     onBlur={(event: React.FocusEvent<any, Element>) => {
@@ -151,7 +151,11 @@ const AuthLogin = () => {
                     placeholder="Enter password"
                     placeholder="Enter password"
                   />
                   />
                   {capsWarning && (
                   {capsWarning && (
-                    <Typography variant="caption" sx={{ color: 'warning.main' }} id="warning-helper-text-password-login">
+                    <Typography
+                      variant="caption"
+                      sx={{ color: "warning.main" }}
+                      id="warning-helper-text-password-login"
+                    >
                       Caps lock on!
                       Caps lock on!
                     </Typography>
                     </Typography>
                   )}
                   )}
@@ -180,7 +184,7 @@ const AuthLogin = () => {
                   <Link
                   <Link
                     variant="h6"
                     variant="h6"
                     component={RouterLink}
                     component={RouterLink}
-                    to={isLoggedIn ? '/auth/forgot-password' : '/forgot-password'}
+                    to={isLoggedIn ? "/auth/forgot-password" : "/forgot-password"}
                     color="text.primary"
                     color="text.primary"
                   >
                   >
                     Forgot Password?
                     Forgot Password?
@@ -194,7 +198,15 @@ const AuthLogin = () => {
               )}
               )}
               <Grid item xs={12}>
               <Grid item xs={12}>
                 <AnimateButton>
                 <AnimateButton>
-                  <Button disableElevation disabled={isSubmitting} fullWidth size="large" type="submit" variant="contained" color="primary">
+                  <Button
+                    disableElevation
+                    disabled={isSubmitting}
+                    fullWidth
+                    size="large"
+                    type="submit"
+                    variant="contained"
+                    color="primary"
+                  >
                     Login
                     Login
                   </Button>
                   </Button>
                 </AnimateButton>
                 </AnimateButton>

+ 34 - 26
src/sections/auth/auth-forms/AuthRegister.tsx

@@ -1,5 +1,5 @@
-import { useEffect, useState, SyntheticEvent } from 'react';
-import { Link as RouterLink } from 'react-router-dom';
+import { useEffect, useState, SyntheticEvent } from "react";
+import { Link as RouterLink } from "react-router-dom";
 
 
 // material-ui
 // material-ui
 import {
 import {
@@ -15,25 +15,25 @@ import {
   OutlinedInput,
   OutlinedInput,
   Stack,
   Stack,
   Typography
   Typography
-} from '@mui/material';
+} from "@mui/material";
 
 
 // third party
 // third party
-import * as Yup from 'yup';
-import { Formik } from 'formik';
+import * as Yup from "yup";
+import { Formik } from "formik";
 
 
 // project import
 // project import
-import useAuth from 'hooks/useAuth';
-import useScriptRef from 'hooks/useScriptRef';
-import IconButton from 'components/@extended/IconButton';
-import AnimateButton from 'components/@extended/AnimateButton';
-import FirebaseSocial from './FirebaseSocial';
-import { strengthColor, strengthIndicator } from 'utils/password-strength';
+import useAuth from "@/hooks/useAuth";
+import useScriptRef from "@/hooks/useScriptRef";
+import IconButton from "@/components/@extended/IconButton";
+import AnimateButton from "@/components/@extended/AnimateButton";
+import FirebaseSocial from "./FirebaseSocial";
+import { strengthColor, strengthIndicator } from "@/utils/password-strength";
 
 
 // types
 // types
-import { StringColorProps } from 'types/password';
+import { StringColorProps } from "@/types/password";
 
 
 // assets
 // assets
-import { EyeOutlined, EyeInvisibleOutlined } from '@ant-design/icons';
+import { EyeOutlined, EyeInvisibleOutlined } from "@ant-design/icons";
 
 
 // ============================|| FIREBASE - REGISTER ||============================ //
 // ============================|| FIREBASE - REGISTER ||============================ //
 
 
@@ -57,25 +57,25 @@ const AuthRegister = () => {
   };
   };
 
 
   useEffect(() => {
   useEffect(() => {
-    changePassword('');
+    changePassword("");
   }, []);
   }, []);
 
 
   return (
   return (
     <>
     <>
       <Formik
       <Formik
         initialValues={{
         initialValues={{
-          firstname: '',
-          lastname: '',
-          email: '',
-          company: '',
-          password: '',
+          firstname: "",
+          lastname: "",
+          email: "",
+          company: "",
+          password: "",
           submit: null
           submit: null
         }}
         }}
         validationSchema={Yup.object().shape({
         validationSchema={Yup.object().shape({
-          firstname: Yup.string().max(255).required('First Name is required'),
-          lastname: Yup.string().max(255).required('Last Name is required'),
-          email: Yup.string().email('Must be a valid email').max(255).required('Email is required'),
-          password: Yup.string().max(255).required('Password is required')
+          firstname: Yup.string().max(255).required("First Name is required"),
+          lastname: Yup.string().max(255).required("Last Name is required"),
+          email: Yup.string().email("Must be a valid email").max(255).required("Email is required"),
+          password: Yup.string().max(255).required("Password is required")
         })}
         })}
         onSubmit={async (values, { setErrors, setStatus, setSubmitting }) => {
         onSubmit={async (values, { setErrors, setStatus, setSubmitting }) => {
           try {
           try {
@@ -198,7 +198,7 @@ const AuthRegister = () => {
                     fullWidth
                     fullWidth
                     error={Boolean(touched.password && errors.password)}
                     error={Boolean(touched.password && errors.password)}
                     id="password-signup"
                     id="password-signup"
-                    type={showPassword ? 'text' : 'password'}
+                    type={showPassword ? "text" : "password"}
                     value={values.password}
                     value={values.password}
                     name="password"
                     name="password"
                     onBlur={handleBlur}
                     onBlur={handleBlur}
@@ -231,7 +231,7 @@ const AuthRegister = () => {
                 <FormControl fullWidth sx={{ mt: 2 }}>
                 <FormControl fullWidth sx={{ mt: 2 }}>
                   <Grid container spacing={2} alignItems="center">
                   <Grid container spacing={2} alignItems="center">
                     <Grid item>
                     <Grid item>
-                      <Box sx={{ bgcolor: level?.color, width: 85, height: 8, borderRadius: '7px' }} />
+                      <Box sx={{ bgcolor: level?.color, width: 85, height: 8, borderRadius: "7px" }} />
                     </Grid>
                     </Grid>
                     <Grid item>
                     <Grid item>
                       <Typography variant="subtitle1" fontSize="0.75rem">
                       <Typography variant="subtitle1" fontSize="0.75rem">
@@ -260,7 +260,15 @@ const AuthRegister = () => {
               )}
               )}
               <Grid item xs={12}>
               <Grid item xs={12}>
                 <AnimateButton>
                 <AnimateButton>
-                  <Button disableElevation disabled={isSubmitting} fullWidth size="large" type="submit" variant="contained" color="primary">
+                  <Button
+                    disableElevation
+                    disabled={isSubmitting}
+                    fullWidth
+                    size="large"
+                    type="submit"
+                    variant="contained"
+                    color="primary"
+                  >
                     Create Account
                     Create Account
                   </Button>
                   </Button>
                 </AnimateButton>
                 </AnimateButton>

+ 36 - 28
src/sections/auth/auth-forms/AuthResetPassword.tsx

@@ -1,6 +1,6 @@
-import { useEffect, useState, SyntheticEvent } from 'react';
-import { useNavigate } from 'react-router-dom';
-import { useDispatch } from 'react-redux';
+import { useEffect, useState, SyntheticEvent } from "react";
+import { useNavigate } from "react-router-dom";
+import { useDispatch } from "react-redux";
 
 
 // material-ui
 // material-ui
 import {
 import {
@@ -14,25 +14,25 @@ import {
   OutlinedInput,
   OutlinedInput,
   Stack,
   Stack,
   Typography
   Typography
-} from '@mui/material';
+} from "@mui/material";
 
 
 // third party
 // third party
-import * as Yup from 'yup';
-import { Formik } from 'formik';
+import * as Yup from "yup";
+import { Formik } from "formik";
 
 
 // project import
 // project import
-import useAuth from 'hooks/useAuth';
-import useScriptRef from 'hooks/useScriptRef';
-import IconButton from 'components/@extended/IconButton';
-import AnimateButton from 'components/@extended/AnimateButton';
-import { strengthColor, strengthIndicator } from 'utils/password-strength';
-import { openSnackbar } from 'store/reducers/snackbar';
+import useAuth from "@/hooks/useAuth";
+import useScriptRef from "@/hooks/useScriptRef";
+import IconButton from "@/components/@extended/IconButton";
+import AnimateButton from "@/components/@extended/AnimateButton";
+import { strengthColor, strengthIndicator } from "@/utils/password-strength";
+import { openSnackbar } from "@/store/reducers/snackbar";
 
 
 // types
 // types
-import { StringColorProps } from 'types/password';
+import { StringColorProps } from "@/types/password";
 
 
 // assets
 // assets
-import { EyeOutlined, EyeInvisibleOutlined } from '@ant-design/icons';
+import { EyeOutlined, EyeInvisibleOutlined } from "@ant-design/icons";
 
 
 // ============================|| STATIC - RESET PASSWORD ||============================ //
 // ============================|| STATIC - RESET PASSWORD ||============================ //
 
 
@@ -59,24 +59,24 @@ const AuthResetPassword = () => {
   };
   };
 
 
   useEffect(() => {
   useEffect(() => {
-    changePassword('');
+    changePassword("");
   }, []);
   }, []);
 
 
   return (
   return (
     <>
     <>
       <Formik
       <Formik
         initialValues={{
         initialValues={{
-          password: '',
-          confirmPassword: '',
+          password: "",
+          confirmPassword: "",
           submit: null
           submit: null
         }}
         }}
         validationSchema={Yup.object().shape({
         validationSchema={Yup.object().shape({
-          password: Yup.string().max(255).required('Password is required'),
+          password: Yup.string().max(255).required("Password is required"),
           confirmPassword: Yup.string()
           confirmPassword: Yup.string()
-            .required('Confirm Password is required')
-            .when('password', {
+            .required("Confirm Password is required")
+            .when("password", {
               is: (val: string) => !!(val && val.length > 0),
               is: (val: string) => !!(val && val.length > 0),
-              then: Yup.string().oneOf([Yup.ref('password')], 'Both Password must be match!')
+              then: Yup.string().oneOf([Yup.ref("password")], "Both Password must be match!")
             })
             })
         })}
         })}
         onSubmit={async (values, { setErrors, setStatus, setSubmitting }) => {
         onSubmit={async (values, { setErrors, setStatus, setSubmitting }) => {
@@ -89,17 +89,17 @@ const AuthResetPassword = () => {
               dispatch(
               dispatch(
                 openSnackbar({
                 openSnackbar({
                   open: true,
                   open: true,
-                  message: 'Successfuly reset password.',
-                  variant: 'alert',
+                  message: "Successfuly reset password.",
+                  variant: "alert",
                   alert: {
                   alert: {
-                    color: 'success'
+                    color: "success"
                   },
                   },
                   close: false
                   close: false
                 })
                 })
               );
               );
 
 
               setTimeout(() => {
               setTimeout(() => {
-                navigate(isLoggedIn ? '/auth/login' : '/login', { replace: true });
+                navigate(isLoggedIn ? "/auth/login" : "/login", { replace: true });
               }, 1500);
               }, 1500);
             }
             }
           } catch (err: any) {
           } catch (err: any) {
@@ -122,7 +122,7 @@ const AuthResetPassword = () => {
                     fullWidth
                     fullWidth
                     error={Boolean(touched.password && errors.password)}
                     error={Boolean(touched.password && errors.password)}
                     id="password-reset"
                     id="password-reset"
-                    type={showPassword ? 'text' : 'password'}
+                    type={showPassword ? "text" : "password"}
                     value={values.password}
                     value={values.password}
                     name="password"
                     name="password"
                     onBlur={handleBlur}
                     onBlur={handleBlur}
@@ -154,7 +154,7 @@ const AuthResetPassword = () => {
                 <FormControl fullWidth sx={{ mt: 2 }}>
                 <FormControl fullWidth sx={{ mt: 2 }}>
                   <Grid container spacing={2} alignItems="center">
                   <Grid container spacing={2} alignItems="center">
                     <Grid item>
                     <Grid item>
-                      <Box sx={{ bgcolor: level?.color, width: 85, height: 8, borderRadius: '7px' }} />
+                      <Box sx={{ bgcolor: level?.color, width: 85, height: 8, borderRadius: "7px" }} />
                     </Grid>
                     </Grid>
                     <Grid item>
                     <Grid item>
                       <Typography variant="subtitle1" fontSize="0.75rem">
                       <Typography variant="subtitle1" fontSize="0.75rem">
@@ -193,7 +193,15 @@ const AuthResetPassword = () => {
               )}
               )}
               <Grid item xs={12}>
               <Grid item xs={12}>
                 <AnimateButton>
                 <AnimateButton>
-                  <Button disableElevation disabled={isSubmitting} fullWidth size="large" type="submit" variant="contained" color="primary">
+                  <Button
+                    disableElevation
+                    disabled={isSubmitting}
+                    fullWidth
+                    size="large"
+                    type="submit"
+                    variant="contained"
+                    color="primary"
+                  >
                     Reset Password
                     Reset Password
                   </Button>
                   </Button>
                 </AnimateButton>
                 </AnimateButton>

+ 12 - 12
src/sections/auth/auth-forms/FirebaseSocial.tsx

@@ -1,20 +1,20 @@
 // material-ui
 // material-ui
-import { useTheme } from '@mui/material/styles';
-import { useMediaQuery, Button, Stack } from '@mui/material';
+import { useTheme } from "@mui/material/styles";
+import { useMediaQuery, Button, Stack } from "@mui/material";
 
 
 // project import
 // project import
-import useAuth from 'hooks/useAuth';
+import useAuth from "@/hooks/useAuth";
 
 
 // assets
 // assets
-import Google from 'assets/images/icons/google.svg';
-import Twitter from 'assets/images/icons/twitter.svg';
-import Facebook from 'assets/images/icons/facebook.svg';
+import Google from "@/assets/images/icons/google.svg";
+import Twitter from "@/assets/images/icons/twitter.svg";
+import Facebook from "@/assets/images/icons/facebook.svg";
 
 
 // ==============================|| FIREBASE - SOCIAL BUTTON ||============================== //
 // ==============================|| FIREBASE - SOCIAL BUTTON ||============================== //
 
 
 const FirebaseSocial = () => {
 const FirebaseSocial = () => {
   const theme = useTheme();
   const theme = useTheme();
-  const matchDownSM = useMediaQuery(theme.breakpoints.down('sm'));
+  const matchDownSM = useMediaQuery(theme.breakpoints.down("sm"));
 
 
   // @ts-ignore
   // @ts-ignore
   const { firebaseFacebookSignIn, firebaseGoogleSignIn, firebaseTwitterSignIn } = useAuth();
   const { firebaseFacebookSignIn, firebaseGoogleSignIn, firebaseTwitterSignIn } = useAuth();
@@ -46,8 +46,8 @@ const FirebaseSocial = () => {
     <Stack
     <Stack
       direction="row"
       direction="row"
       spacing={matchDownSM ? 1 : 2}
       spacing={matchDownSM ? 1 : 2}
-      justifyContent={matchDownSM ? 'space-around' : 'space-between'}
-      sx={{ '& .MuiButton-startIcon': { mr: matchDownSM ? 0 : 1, ml: matchDownSM ? 0 : -0.5 } }}
+      justifyContent={matchDownSM ? "space-around" : "space-between"}
+      sx={{ "& .MuiButton-startIcon": { mr: matchDownSM ? 0 : 1, ml: matchDownSM ? 0 : -0.5 } }}
     >
     >
       <Button
       <Button
         variant="outlined"
         variant="outlined"
@@ -56,7 +56,7 @@ const FirebaseSocial = () => {
         startIcon={<img src={Google} alt="Google" />}
         startIcon={<img src={Google} alt="Google" />}
         onClick={googleHandler}
         onClick={googleHandler}
       >
       >
-        {!matchDownSM && 'Google'}
+        {!matchDownSM && "Google"}
       </Button>
       </Button>
       <Button
       <Button
         variant="outlined"
         variant="outlined"
@@ -65,7 +65,7 @@ const FirebaseSocial = () => {
         startIcon={<img src={Twitter} alt="Twitter" />}
         startIcon={<img src={Twitter} alt="Twitter" />}
         onClick={twitterHandler}
         onClick={twitterHandler}
       >
       >
-        {!matchDownSM && 'Twitter'}
+        {!matchDownSM && "Twitter"}
       </Button>
       </Button>
       <Button
       <Button
         variant="outlined"
         variant="outlined"
@@ -74,7 +74,7 @@ const FirebaseSocial = () => {
         startIcon={<img src={Facebook} alt="Facebook" />}
         startIcon={<img src={Facebook} alt="Facebook" />}
         onClick={facebookHandler}
         onClick={facebookHandler}
       >
       >
-        {!matchDownSM && 'Facebook'}
+        {!matchDownSM && "Facebook"}
       </Button>
       </Button>
     </Stack>
     </Stack>
   );
   );

+ 0 - 5
src/setupTests.ts

@@ -1,5 +0,0 @@
-// jest-dom adds custom jest matchers for asserting on DOM nodes.
-// allows you to do things like:
-// expect(element).toHaveTextContent(/react/i)
-// learn more: https://github.com/testing-library/jest-dom
-import '@testing-library/jest-dom';

+ 2 - 2
src/store/reducers/auth.ts

@@ -1,8 +1,8 @@
 // action - state management
 // action - state management
-import { REGISTER, LOGIN, LOGOUT } from './actions';
+import { REGISTER, LOGIN, LOGOUT } from "./actions";
 
 
 // types
 // types
-import { AuthProps, AuthActionProps } from 'types/auth';
+import { AuthProps, AuthActionProps } from "@/types/auth";
 
 
 // initial state
 // initial state
 export const initialState: AuthProps = {
 export const initialState: AuthProps = {

+ 5 - 5
src/store/reducers/menu.ts

@@ -1,11 +1,11 @@
 // types
 // types
-import { MenuProps } from 'types/menu';
-import { createSlice } from '@reduxjs/toolkit';
+import { MenuProps } from "@/types/menu";
+import { createSlice } from "@reduxjs/toolkit";
 
 
 // initial state
 // initial state
 const initialState: MenuProps = {
 const initialState: MenuProps = {
-  openItem: ['dashboard'],
-  openComponent: 'buttons',
+  openItem: ["dashboard"],
+  openComponent: "buttons",
   drawerOpen: false,
   drawerOpen: false,
   componentDrawerOpen: true
   componentDrawerOpen: true
 };
 };
@@ -13,7 +13,7 @@ const initialState: MenuProps = {
 // ==============================|| SLICE - MENU ||============================== //
 // ==============================|| SLICE - MENU ||============================== //
 
 
 const menu = createSlice({
 const menu = createSlice({
-  name: 'menu',
+  name: "menu",
   initialState,
   initialState,
   reducers: {
   reducers: {
     activeItem(state, action) {
     activeItem(state, action) {

+ 10 - 10
src/store/reducers/snackbar.ts

@@ -1,22 +1,22 @@
-import { createSlice } from '@reduxjs/toolkit';
+import { createSlice } from "@reduxjs/toolkit";
 
 
 // types
 // types
-import { SnackbarProps } from 'types/snackbar';
+import { SnackbarProps } from "@/types/snackbar";
 
 
 const initialState: SnackbarProps = {
 const initialState: SnackbarProps = {
   action: false,
   action: false,
   open: false,
   open: false,
-  message: 'Note archived',
+  message: "Note archived",
   anchorOrigin: {
   anchorOrigin: {
-    vertical: 'bottom',
-    horizontal: 'right'
+    vertical: "bottom",
+    horizontal: "right"
   },
   },
-  variant: 'default',
+  variant: "default",
   alert: {
   alert: {
-    color: 'primary',
-    variant: 'filled'
+    color: "primary",
+    variant: "filled"
   },
   },
-  transition: 'Fade',
+  transition: "Fade",
   close: true,
   close: true,
   actionButton: false
   actionButton: false
 };
 };
@@ -24,7 +24,7 @@ const initialState: SnackbarProps = {
 // ==============================|| SLICE - SNACKBAR ||============================== //
 // ==============================|| SLICE - SNACKBAR ||============================== //
 
 
 const snackbar = createSlice({
 const snackbar = createSlice({
-  name: 'snackbar',
+  name: "snackbar",
   initialState,
   initialState,
   reducers: {
   reducers: {
     openSnackbar(state, action) {
     openSnackbar(state, action) {

+ 9 - 9
src/themes/index.tsx

@@ -1,18 +1,18 @@
-import { ReactNode, useMemo } from 'react';
+import { ReactNode, useMemo } from "react";
 
 
 // material-ui
 // material-ui
-import { CssBaseline, StyledEngineProvider } from '@mui/material';
-import { createTheme, ThemeOptions, ThemeProvider, Theme, TypographyVariantsOptions } from '@mui/material/styles';
+import { CssBaseline, StyledEngineProvider } from "@mui/material";
+import { createTheme, ThemeOptions, ThemeProvider, Theme, TypographyVariantsOptions } from "@mui/material/styles";
 
 
 // project import
 // project import
-import useConfig from 'hooks/useConfig';
-import Palette from './palette';
-import Typography from './typography';
-import CustomShadows from './shadows';
-import componentsOverride from './overrides';
+import useConfig from "@/hooks/useConfig";
+import Palette from "./palette";
+import Typography from "./typography";
+import CustomShadows from "./shadows";
+import componentsOverride from "./overrides";
 
 
 // types
 // types
-import { CustomShadowProps } from 'types/theme';
+import { CustomShadowProps } from "@/types/theme";
 
 
 // types
 // types
 type ThemeCustomizationProps = {
 type ThemeCustomizationProps = {

+ 23 - 23
src/themes/overrides/Alert.ts

@@ -1,11 +1,11 @@
 // material-ui
 // material-ui
-import { alpha, Theme } from '@mui/material/styles';
+import { alpha, Theme } from "@mui/material/styles";
 
 
 // project import
 // project import
-import getColors from 'utils/getColors';
+import getColors from "@/utils/getColors";
 
 
 // types
 // types
-import { ExtendedStyleProps } from 'types/extended';
+import { ExtendedStyleProps } from "@/types/extended";
 
 
 // ==============================|| ALERT - COLORS ||============================== //
 // ==============================|| ALERT - COLORS ||============================== //
 
 
@@ -16,7 +16,7 @@ function getColorStyle({ color, theme }: ExtendedStyleProps) {
   return {
   return {
     borderColor: alpha(light, 0.5),
     borderColor: alpha(light, 0.5),
     backgroundColor: lighter,
     backgroundColor: lighter,
-    '& .MuiAlert-icon': {
+    "& .MuiAlert-icon": {
       color: main
       color: main
     }
     }
   };
   };
@@ -25,17 +25,17 @@ function getColorStyle({ color, theme }: ExtendedStyleProps) {
 // ==============================|| OVERRIDES - ALERT ||============================== //
 // ==============================|| OVERRIDES - ALERT ||============================== //
 
 
 export default function Alert(theme: Theme) {
 export default function Alert(theme: Theme) {
-  const primaryDashed = getColorStyle({ color: 'primary', theme });
+  const primaryDashed = getColorStyle({ color: "primary", theme });
 
 
   return {
   return {
     MuiAlert: {
     MuiAlert: {
       styleOverrides: {
       styleOverrides: {
         root: {
         root: {
           color: theme.palette.text.primary,
           color: theme.palette.text.primary,
-          fontSize: '0.875rem'
+          fontSize: "0.875rem"
         },
         },
         icon: {
         icon: {
-          fontSize: '1rem'
+          fontSize: "1rem"
         },
         },
         message: {
         message: {
           padding: 0,
           padding: 0,
@@ -45,30 +45,30 @@ export default function Alert(theme: Theme) {
           color: theme.palette.grey[0]
           color: theme.palette.grey[0]
         },
         },
         border: {
         border: {
-          padding: '10px 16px',
-          border: '1px solid',
+          padding: "10px 16px",
+          border: "1px solid",
           ...primaryDashed,
           ...primaryDashed,
-          '&.MuiAlert-borderPrimary': getColorStyle({ color: 'primary', theme }),
-          '&.MuiAlert-borderSecondary': getColorStyle({ color: 'secondary', theme }),
-          '&.MuiAlert-borderError': getColorStyle({ color: 'error', theme }),
-          '&.MuiAlert-borderSuccess': getColorStyle({ color: 'success', theme }),
-          '&.MuiAlert-borderInfo': getColorStyle({ color: 'info', theme }),
-          '&.MuiAlert-borderWarning': getColorStyle({ color: 'warning', theme })
+          "&.MuiAlert-borderPrimary": getColorStyle({ color: "primary", theme }),
+          "&.MuiAlert-borderSecondary": getColorStyle({ color: "secondary", theme }),
+          "&.MuiAlert-borderError": getColorStyle({ color: "error", theme }),
+          "&.MuiAlert-borderSuccess": getColorStyle({ color: "success", theme }),
+          "&.MuiAlert-borderInfo": getColorStyle({ color: "info", theme }),
+          "&.MuiAlert-borderWarning": getColorStyle({ color: "warning", theme })
         },
         },
         action: {
         action: {
-          '& .MuiButton-root': {
+          "& .MuiButton-root": {
             padding: 2,
             padding: 2,
-            height: 'auto',
-            fontSize: '0.75rem',
+            height: "auto",
+            fontSize: "0.75rem",
             marginTop: -2
             marginTop: -2
           },
           },
-          '& .MuiIconButton-root': {
-            width: 'auto',
-            height: 'auto',
+          "& .MuiIconButton-root": {
+            width: "auto",
+            height: "auto",
             padding: 2,
             padding: 2,
             marginRight: 6,
             marginRight: 6,
-            '& .MuiSvgIcon-root': {
-              fontSize: '1rem'
+            "& .MuiSvgIcon-root": {
+              fontSize: "1rem"
             }
             }
           }
           }
         }
         }

+ 10 - 10
src/themes/overrides/Badge.ts

@@ -1,11 +1,11 @@
 // material-ui
 // material-ui
-import { Theme } from '@mui/material/styles';
+import { Theme } from "@mui/material/styles";
 
 
 // project import
 // project import
-import getColors from 'utils/getColors';
+import getColors from "@/utils/getColors";
 
 
 // types
 // types
-import { ExtendedStyleProps } from 'types/extended';
+import { ExtendedStyleProps } from "@/types/extended";
 
 
 // ==============================|| BADGE - COLORS ||============================== //
 // ==============================|| BADGE - COLORS ||============================== //
 
 
@@ -22,7 +22,7 @@ function getColorStyle({ color, theme }: ExtendedStyleProps) {
 // ==============================|| OVERRIDES - BADGE ||============================== //
 // ==============================|| OVERRIDES - BADGE ||============================== //
 
 
 export default function Badge(theme: Theme) {
 export default function Badge(theme: Theme) {
-  const defaultLightBadge = getColorStyle({ color: 'primary', theme });
+  const defaultLightBadge = getColorStyle({ color: "primary", theme });
 
 
   return {
   return {
     MuiBadge: {
     MuiBadge: {
@@ -34,12 +34,12 @@ export default function Badge(theme: Theme) {
         },
         },
         light: {
         light: {
           ...defaultLightBadge,
           ...defaultLightBadge,
-          '&.MuiBadge-colorPrimary': getColorStyle({ color: 'primary', theme }),
-          '&.MuiBadge-colorSecondary': getColorStyle({ color: 'secondary', theme }),
-          '&.MuiBadge-colorError': getColorStyle({ color: 'error', theme }),
-          '&.MuiBadge-colorInfo': getColorStyle({ color: 'info', theme }),
-          '&.MuiBadge-colorSuccess': getColorStyle({ color: 'success', theme }),
-          '&.MuiBadge-colorWarning': getColorStyle({ color: 'warning', theme })
+          "&.MuiBadge-colorPrimary": getColorStyle({ color: "primary", theme }),
+          "&.MuiBadge-colorSecondary": getColorStyle({ color: "secondary", theme }),
+          "&.MuiBadge-colorError": getColorStyle({ color: "error", theme }),
+          "&.MuiBadge-colorInfo": getColorStyle({ color: "info", theme }),
+          "&.MuiBadge-colorSuccess": getColorStyle({ color: "success", theme }),
+          "&.MuiBadge-colorWarning": getColorStyle({ color: "warning", theme })
         }
         }
       }
       }
     }
     }

+ 71 - 71
src/themes/overrides/Button.ts

@@ -1,12 +1,12 @@
 // material-ui
 // material-ui
-import { alpha, Theme } from '@mui/material/styles';
+import { alpha, Theme } from "@mui/material/styles";
 
 
 // project import
 // project import
-import getColors from 'utils/getColors';
-import getShadow from 'utils/getShadow';
+import getColors from "@/utils/getColors";
+import getShadow from "@/utils/getShadow";
 
 
 // types
 // types
-import { ButtonVariantProps, ExtendedStyleProps } from 'types/extended';
+import { ButtonVariantProps, ExtendedStyleProps } from "@/types/extended";
 
 
 // ==============================|| BUTTON - COLORS ||============================== //
 // ==============================|| BUTTON - COLORS ||============================== //
 
 
@@ -22,62 +22,62 @@ function getColorStyle({ variant, color, theme }: ButtonStyleProps) {
   const shadows = getShadow(theme, buttonShadow);
   const shadows = getShadow(theme, buttonShadow);
 
 
   const commonShadow = {
   const commonShadow = {
-    '&::after': {
+    "&::after": {
       boxShadow: `0 0 5px 5px ${alpha(main, 0.9)}`
       boxShadow: `0 0 5px 5px ${alpha(main, 0.9)}`
     },
     },
-    '&:active::after': {
+    "&:active::after": {
       boxShadow: `0 0 0 0 ${alpha(main, 0.9)}`
       boxShadow: `0 0 0 0 ${alpha(main, 0.9)}`
     },
     },
-    '&:focus-visible': {
+    "&:focus-visible": {
       outline: `2px solid ${dark}`,
       outline: `2px solid ${dark}`,
       outlineOffset: 2
       outlineOffset: 2
     }
     }
   };
   };
 
 
   switch (variant) {
   switch (variant) {
-    case 'contained':
+    case "contained":
       return {
       return {
-        '&:hover': {
+        "&:hover": {
           backgroundColor: dark
           backgroundColor: dark
         },
         },
         ...commonShadow
         ...commonShadow
       };
       };
-    case 'shadow':
+    case "shadow":
       return {
       return {
         color: contrastText,
         color: contrastText,
         backgroundColor: main,
         backgroundColor: main,
         boxShadow: shadows,
         boxShadow: shadows,
-        '&:hover': {
-          boxShadow: 'none',
+        "&:hover": {
+          boxShadow: "none",
           backgroundColor: dark
           backgroundColor: dark
         },
         },
         ...commonShadow
         ...commonShadow
       };
       };
-    case 'outlined':
+    case "outlined":
       return {
       return {
         borderColor: main,
         borderColor: main,
-        '&:hover': {
+        "&:hover": {
           color: dark,
           color: dark,
-          backgroundColor: 'transparent',
+          backgroundColor: "transparent",
           borderColor: dark
           borderColor: dark
         },
         },
         ...commonShadow
         ...commonShadow
       };
       };
-    case 'dashed':
+    case "dashed":
       return {
       return {
         color: main,
         color: main,
         borderColor: main,
         borderColor: main,
         backgroundColor: lighter,
         backgroundColor: lighter,
-        '&:hover': {
+        "&:hover": {
           color: dark,
           color: dark,
           borderColor: dark
           borderColor: dark
         },
         },
         ...commonShadow
         ...commonShadow
       };
       };
-    case 'text':
+    case "text":
     default:
     default:
       return {
       return {
-        '&:hover': {
+        "&:hover": {
           color: dark,
           color: dark,
           backgroundColor: lighter
           backgroundColor: lighter
         },
         },
@@ -89,17 +89,17 @@ function getColorStyle({ variant, color, theme }: ButtonStyleProps) {
 // ==============================|| OVERRIDES - BUTTON ||============================== //
 // ==============================|| OVERRIDES - BUTTON ||============================== //
 
 
 export default function Button(theme: Theme) {
 export default function Button(theme: Theme) {
-  const primaryDashed = getColorStyle({ variant: 'dashed', color: 'primary', theme });
-  const primaryShadow = getColorStyle({ variant: 'shadow', color: 'primary', theme });
+  const primaryDashed = getColorStyle({ variant: "dashed", color: "primary", theme });
+  const primaryShadow = getColorStyle({ variant: "shadow", color: "primary", theme });
 
 
   const disabledStyle = {
   const disabledStyle = {
-    '&.Mui-disabled': {
+    "&.Mui-disabled": {
       backgroundColor: theme.palette.grey[200]
       backgroundColor: theme.palette.grey[200]
     }
     }
   };
   };
   const iconStyle = {
   const iconStyle = {
-    '&>*:nth-of-type(1)': {
-      fontSize: 'inherit'
+    "&>*:nth-of-type(1)": {
+      fontSize: "inherit"
     }
     }
   };
   };
 
 
@@ -111,26 +111,26 @@ export default function Button(theme: Theme) {
       styleOverrides: {
       styleOverrides: {
         root: {
         root: {
           fontWeight: 400,
           fontWeight: 400,
-          '&::after': {
+          "&::after": {
             content: '""',
             content: '""',
-            display: 'block',
-            position: 'absolute',
+            display: "block",
+            position: "absolute",
             left: 0,
             left: 0,
             top: 0,
             top: 0,
-            width: '100%',
-            height: '100%',
+            width: "100%",
+            height: "100%",
             borderRadius: 4,
             borderRadius: 4,
             opacity: 0,
             opacity: 0,
-            transition: 'all 0.5s'
+            transition: "all 0.5s"
           },
           },
 
 
-          '&:active::after': {
-            position: 'absolute',
+          "&:active::after": {
+            position: "absolute",
             borderRadius: 4,
             borderRadius: 4,
             left: 0,
             left: 0,
             top: 0,
             top: 0,
             opacity: 1,
             opacity: 1,
-            transition: '0s'
+            transition: "0s"
           }
           }
         },
         },
         contained: {
         contained: {
@@ -140,9 +140,9 @@ export default function Button(theme: Theme) {
           ...disabledStyle
           ...disabledStyle
         },
         },
         text: {
         text: {
-          boxShadow: 'none',
-          '&:hover': {
-            boxShadow: 'none'
+          boxShadow: "none",
+          "&:hover": {
+            boxShadow: "none"
           }
           }
         },
         },
         endIcon: {
         endIcon: {
@@ -152,15 +152,15 @@ export default function Button(theme: Theme) {
           ...iconStyle
           ...iconStyle
         },
         },
         dashed: {
         dashed: {
-          border: '1px dashed',
+          border: "1px dashed",
           ...primaryDashed,
           ...primaryDashed,
-          '&.MuiButton-dashedPrimary': getColorStyle({ variant: 'dashed', color: 'primary', theme }),
-          '&.MuiButton-dashedSecondary': getColorStyle({ variant: 'dashed', color: 'secondary', theme }),
-          '&.MuiButton-dashedError': getColorStyle({ variant: 'dashed', color: 'error', theme }),
-          '&.MuiButton-dashedSuccess': getColorStyle({ variant: 'dashed', color: 'success', theme }),
-          '&.MuiButton-dashedInfo': getColorStyle({ variant: 'dashed', color: 'info', theme }),
-          '&.MuiButton-dashedWarning': getColorStyle({ variant: 'dashed', color: 'warning', theme }),
-          '&.Mui-disabled': {
+          "&.MuiButton-dashedPrimary": getColorStyle({ variant: "dashed", color: "primary", theme }),
+          "&.MuiButton-dashedSecondary": getColorStyle({ variant: "dashed", color: "secondary", theme }),
+          "&.MuiButton-dashedError": getColorStyle({ variant: "dashed", color: "error", theme }),
+          "&.MuiButton-dashedSuccess": getColorStyle({ variant: "dashed", color: "success", theme }),
+          "&.MuiButton-dashedInfo": getColorStyle({ variant: "dashed", color: "info", theme }),
+          "&.MuiButton-dashedWarning": getColorStyle({ variant: "dashed", color: "warning", theme }),
+          "&.Mui-disabled": {
             color: `${theme.palette.grey[300]} !important`,
             color: `${theme.palette.grey[300]} !important`,
             borderColor: `${theme.palette.grey[400]} !important`,
             borderColor: `${theme.palette.grey[400]} !important`,
             backgroundColor: `${theme.palette.grey[200]} !important`
             backgroundColor: `${theme.palette.grey[200]} !important`
@@ -168,40 +168,40 @@ export default function Button(theme: Theme) {
         },
         },
         shadow: {
         shadow: {
           ...primaryShadow,
           ...primaryShadow,
-          '&.MuiButton-shadowPrimary': getColorStyle({ variant: 'shadow', color: 'primary', theme }),
-          '&.MuiButton-shadowSecondary': getColorStyle({ variant: 'shadow', color: 'secondary', theme }),
-          '&.MuiButton-shadowError': getColorStyle({ variant: 'shadow', color: 'error', theme }),
-          '&.MuiButton-shadowSuccess': getColorStyle({ variant: 'shadow', color: 'success', theme }),
-          '&.MuiButton-shadowInfo': getColorStyle({ variant: 'shadow', color: 'info', theme }),
-          '&.MuiButton-shadowWarning': getColorStyle({ variant: 'shadow', color: 'warning', theme }),
-          '&.Mui-disabled': {
+          "&.MuiButton-shadowPrimary": getColorStyle({ variant: "shadow", color: "primary", theme }),
+          "&.MuiButton-shadowSecondary": getColorStyle({ variant: "shadow", color: "secondary", theme }),
+          "&.MuiButton-shadowError": getColorStyle({ variant: "shadow", color: "error", theme }),
+          "&.MuiButton-shadowSuccess": getColorStyle({ variant: "shadow", color: "success", theme }),
+          "&.MuiButton-shadowInfo": getColorStyle({ variant: "shadow", color: "info", theme }),
+          "&.MuiButton-shadowWarning": getColorStyle({ variant: "shadow", color: "warning", theme }),
+          "&.Mui-disabled": {
             color: `${theme.palette.grey[300]} !important`,
             color: `${theme.palette.grey[300]} !important`,
             borderColor: `${theme.palette.grey[400]} !important`,
             borderColor: `${theme.palette.grey[400]} !important`,
             backgroundColor: `${theme.palette.grey[200]} !important`
             backgroundColor: `${theme.palette.grey[200]} !important`
           }
           }
         },
         },
-        containedPrimary: getColorStyle({ variant: 'contained', color: 'primary', theme }),
-        containedSecondary: getColorStyle({ variant: 'contained', color: 'secondary', theme }),
-        containedError: getColorStyle({ variant: 'contained', color: 'error', theme }),
-        containedSuccess: getColorStyle({ variant: 'contained', color: 'success', theme }),
-        containedInfo: getColorStyle({ variant: 'contained', color: 'info', theme }),
-        containedWarning: getColorStyle({ variant: 'contained', color: 'warning', theme }),
-        outlinedPrimary: getColorStyle({ variant: 'outlined', color: 'primary', theme }),
-        outlinedSecondary: getColorStyle({ variant: 'outlined', color: 'secondary', theme }),
-        outlinedError: getColorStyle({ variant: 'outlined', color: 'error', theme }),
-        outlinedSuccess: getColorStyle({ variant: 'outlined', color: 'success', theme }),
-        outlinedInfo: getColorStyle({ variant: 'outlined', color: 'info', theme }),
-        outlinedWarning: getColorStyle({ variant: 'outlined', color: 'warning', theme }),
-        textPrimary: getColorStyle({ variant: 'text', color: 'primary', theme }),
-        textSecondary: getColorStyle({ variant: 'text', color: 'secondary', theme }),
-        textError: getColorStyle({ variant: 'text', color: 'error', theme }),
-        textSuccess: getColorStyle({ variant: 'text', color: 'success', theme }),
-        textInfo: getColorStyle({ variant: 'text', color: 'info', theme }),
-        textWarning: getColorStyle({ variant: 'text', color: 'warning', theme }),
+        containedPrimary: getColorStyle({ variant: "contained", color: "primary", theme }),
+        containedSecondary: getColorStyle({ variant: "contained", color: "secondary", theme }),
+        containedError: getColorStyle({ variant: "contained", color: "error", theme }),
+        containedSuccess: getColorStyle({ variant: "contained", color: "success", theme }),
+        containedInfo: getColorStyle({ variant: "contained", color: "info", theme }),
+        containedWarning: getColorStyle({ variant: "contained", color: "warning", theme }),
+        outlinedPrimary: getColorStyle({ variant: "outlined", color: "primary", theme }),
+        outlinedSecondary: getColorStyle({ variant: "outlined", color: "secondary", theme }),
+        outlinedError: getColorStyle({ variant: "outlined", color: "error", theme }),
+        outlinedSuccess: getColorStyle({ variant: "outlined", color: "success", theme }),
+        outlinedInfo: getColorStyle({ variant: "outlined", color: "info", theme }),
+        outlinedWarning: getColorStyle({ variant: "outlined", color: "warning", theme }),
+        textPrimary: getColorStyle({ variant: "text", color: "primary", theme }),
+        textSecondary: getColorStyle({ variant: "text", color: "secondary", theme }),
+        textError: getColorStyle({ variant: "text", color: "error", theme }),
+        textSuccess: getColorStyle({ variant: "text", color: "success", theme }),
+        textInfo: getColorStyle({ variant: "text", color: "info", theme }),
+        textWarning: getColorStyle({ variant: "text", color: "warning", theme }),
         sizeExtraSmall: {
         sizeExtraSmall: {
           minWidth: 56,
           minWidth: 56,
-          fontSize: '0.625rem',
-          padding: '2px 8px'
+          fontSize: "0.625rem",
+          padding: "2px 8px"
         }
         }
       }
       }
     }
     }

+ 42 - 37
src/themes/overrides/Checkbox.tsx

@@ -1,15 +1,15 @@
 // material-ui
 // material-ui
-import { Theme } from '@mui/material/styles';
-import { Box, CheckboxProps } from '@mui/material';
+import { Theme } from "@mui/material/styles";
+import { Box, CheckboxProps } from "@mui/material";
 
 
 // project import
 // project import
-import getColors from 'utils/getColors';
+import getColors from "@/utils/getColors";
 
 
 // assets
 // assets
-import { CheckSquareFilled, MinusSquareFilled } from '@ant-design/icons';
+import { CheckSquareFilled, MinusSquareFilled } from "@ant-design/icons";
 
 
 // types
 // types
-import { ExtendedStyleProps } from 'types/extended';
+import { ExtendedStyleProps } from "@/types/extended";
 
 
 // ==============================|| RADIO - COLORS ||============================== //
 // ==============================|| RADIO - COLORS ||============================== //
 
 
@@ -18,13 +18,13 @@ function getColorStyle({ color, theme }: ExtendedStyleProps) {
   const { lighter, main, dark } = colors;
   const { lighter, main, dark } = colors;
 
 
   return {
   return {
-    '&:hover': {
+    "&:hover": {
       backgroundColor: lighter,
       backgroundColor: lighter,
-      '& .icon': {
+      "& .icon": {
         borderColor: main
         borderColor: main
       }
       }
     },
     },
-    '&.Mui-focusVisible': {
+    "&.Mui-focusVisible": {
       outline: `2px solid ${dark}`,
       outline: `2px solid ${dark}`,
       outlineOffset: -4
       outlineOffset: -4
     }
     }
@@ -39,13 +39,13 @@ interface CheckboxSizeProps {
   position: number;
   position: number;
 }
 }
 
 
-function getSizeStyle(size?: CheckboxProps['size']): CheckboxSizeProps {
+function getSizeStyle(size?: CheckboxProps["size"]): CheckboxSizeProps {
   switch (size) {
   switch (size) {
-    case 'small':
+    case "small":
       return { size: 16, fontSize: 1, position: 1 };
       return { size: 16, fontSize: 1, position: 1 };
-    case 'large':
+    case "large":
       return { size: 24, fontSize: 1.6, position: 2 };
       return { size: 24, fontSize: 1.6, position: 2 };
-    case 'medium':
+    case "medium":
     default:
     default:
       return { size: 20, fontSize: 1.35, position: 2 };
       return { size: 20, fontSize: 1.35, position: 2 };
   }
   }
@@ -53,14 +53,14 @@ function getSizeStyle(size?: CheckboxProps['size']): CheckboxSizeProps {
 
 
 // ==============================|| CHECKBOX - STYLE ||============================== //
 // ==============================|| CHECKBOX - STYLE ||============================== //
 
 
-function checkboxStyle(size?: CheckboxProps['size']) {
+function checkboxStyle(size?: CheckboxProps["size"]) {
   const sizes: CheckboxSizeProps = getSizeStyle(size);
   const sizes: CheckboxSizeProps = getSizeStyle(size);
 
 
   return {
   return {
-    '& .icon': {
+    "& .icon": {
       width: sizes.size,
       width: sizes.size,
       height: sizes.size,
       height: sizes.size,
-      '& .filled': {
+      "& .filled": {
         fontSize: `${sizes.fontSize}rem`,
         fontSize: `${sizes.fontSize}rem`,
         top: -sizes.position,
         top: -sizes.position,
         left: -sizes.position
         left: -sizes.position
@@ -77,21 +77,26 @@ export default function Checkbox(theme: Theme) {
   return {
   return {
     MuiCheckbox: {
     MuiCheckbox: {
       defaultProps: {
       defaultProps: {
-        className: 'size-small',
-        icon: <Box className="icon" sx={{ width: 16, height: 16, border: '1px solid', borderColor: 'inherit', borderRadius: 0.25 }} />,
+        className: "size-small",
+        icon: (
+          <Box
+            className="icon"
+            sx={{ width: 16, height: 16, border: "1px solid", borderColor: "inherit", borderRadius: 0.25 }}
+          />
+        ),
         checkedIcon: (
         checkedIcon: (
           <Box
           <Box
             className="icon"
             className="icon"
             sx={{
             sx={{
               width: 16,
               width: 16,
               height: 16,
               height: 16,
-              border: '1px solid',
-              borderColor: 'inherit',
+              border: "1px solid",
+              borderColor: "inherit",
               borderRadius: 0.25,
               borderRadius: 0.25,
-              position: 'relative'
+              position: "relative"
             }}
             }}
           >
           >
-            <CheckSquareFilled className="filled" style={{ position: 'absolute' }} />
+            <CheckSquareFilled className="filled" style={{ position: "absolute" }} />
           </Box>
           </Box>
         ),
         ),
         indeterminateIcon: (
         indeterminateIcon: (
@@ -100,13 +105,13 @@ export default function Checkbox(theme: Theme) {
             sx={{
             sx={{
               width: 16,
               width: 16,
               height: 16,
               height: 16,
-              border: '1px solid',
-              borderColor: 'inherit',
+              border: "1px solid",
+              borderColor: "inherit",
               borderRadius: 0.25,
               borderRadius: 0.25,
-              position: 'relative'
+              position: "relative"
             }}
             }}
           >
           >
-            <MinusSquareFilled className="filled" style={{ position: 'absolute' }} />
+            <MinusSquareFilled className="filled" style={{ position: "absolute" }} />
           </Box>
           </Box>
         )
         )
       },
       },
@@ -114,22 +119,22 @@ export default function Checkbox(theme: Theme) {
         root: {
         root: {
           borderRadius: 0,
           borderRadius: 0,
           color: palette.secondary[300],
           color: palette.secondary[300],
-          '&.size-small': {
-            ...checkboxStyle('small')
+          "&.size-small": {
+            ...checkboxStyle("small")
           },
           },
-          '&.size-medium': {
-            ...checkboxStyle('medium')
+          "&.size-medium": {
+            ...checkboxStyle("medium")
           },
           },
-          '&.size-large': {
-            ...checkboxStyle('large')
+          "&.size-large": {
+            ...checkboxStyle("large")
           }
           }
         },
         },
-        colorPrimary: getColorStyle({ color: 'primary', theme }),
-        colorSecondary: getColorStyle({ color: 'secondary', theme }),
-        colorSuccess: getColorStyle({ color: 'success', theme }),
-        colorWarning: getColorStyle({ color: 'warning', theme }),
-        colorInfo: getColorStyle({ color: 'info', theme }),
-        colorError: getColorStyle({ color: 'error', theme })
+        colorPrimary: getColorStyle({ color: "primary", theme }),
+        colorSecondary: getColorStyle({ color: "secondary", theme }),
+        colorSuccess: getColorStyle({ color: "success", theme }),
+        colorWarning: getColorStyle({ color: "warning", theme }),
+        colorInfo: getColorStyle({ color: "info", theme }),
+        colorError: getColorStyle({ color: "error", theme })
       }
       }
     }
     }
   };
   };

+ 29 - 29
src/themes/overrides/Chip.ts

@@ -1,11 +1,11 @@
 // material-ui
 // material-ui
-import { Theme } from '@mui/material/styles';
+import { Theme } from "@mui/material/styles";
 
 
 // project import
 // project import
-import getColors from 'utils/getColors';
+import getColors from "@/utils/getColors";
 
 
 // types
 // types
-import { ExtendedStyleProps } from 'types/extended';
+import { ExtendedStyleProps } from "@/types/extended";
 
 
 // ==============================|| CHIP - COLORS ||============================== //
 // ==============================|| CHIP - COLORS ||============================== //
 
 
@@ -14,7 +14,7 @@ function getColor({ color, theme }: ExtendedStyleProps) {
   const { dark } = colors;
   const { dark } = colors;
 
 
   return {
   return {
-    '&.Mui-focusVisible': {
+    "&.Mui-focusVisible": {
       outline: `2px solid ${dark}`,
       outline: `2px solid ${dark}`,
       outlineOffset: 2
       outlineOffset: 2
     }
     }
@@ -29,9 +29,9 @@ function getColorStyle({ color, theme }: ExtendedStyleProps) {
     color: main,
     color: main,
     backgroundColor: lighter,
     backgroundColor: lighter,
     borderColor: light,
     borderColor: light,
-    '& .MuiChip-deleteIcon': {
+    "& .MuiChip-deleteIcon": {
       color: main,
       color: main,
-      '&:hover': {
+      "&:hover": {
         color: light
         color: light
       }
       }
     }
     }
@@ -41,44 +41,44 @@ function getColorStyle({ color, theme }: ExtendedStyleProps) {
 // ==============================|| OVERRIDES - CHIP ||============================== //
 // ==============================|| OVERRIDES - CHIP ||============================== //
 
 
 export default function Chip(theme: Theme) {
 export default function Chip(theme: Theme) {
-  const defaultLightChip = getColorStyle({ color: 'secondary', theme });
+  const defaultLightChip = getColorStyle({ color: "secondary", theme });
   return {
   return {
     MuiChip: {
     MuiChip: {
       styleOverrides: {
       styleOverrides: {
         root: {
         root: {
           borderRadius: 4,
           borderRadius: 4,
-          '&:active': {
-            boxShadow: 'none'
+          "&:active": {
+            boxShadow: "none"
           },
           },
-          '&.MuiChip-colorPrimary': getColor({ color: 'primary', theme }),
-          '&.MuiChip-colorSecondary': getColor({ color: 'secondary', theme }),
-          '&.MuiChip-colorError': getColor({ color: 'error', theme }),
-          '&.MuiChip-colorInfo': getColor({ color: 'info', theme }),
-          '&.MuiChip-colorSuccess': getColor({ color: 'success', theme }),
-          '&.MuiChip-colorWarning': getColor({ color: 'warning', theme })
+          "&.MuiChip-colorPrimary": getColor({ color: "primary", theme }),
+          "&.MuiChip-colorSecondary": getColor({ color: "secondary", theme }),
+          "&.MuiChip-colorError": getColor({ color: "error", theme }),
+          "&.MuiChip-colorInfo": getColor({ color: "info", theme }),
+          "&.MuiChip-colorSuccess": getColor({ color: "success", theme }),
+          "&.MuiChip-colorWarning": getColor({ color: "warning", theme })
         },
         },
         sizeLarge: {
         sizeLarge: {
-          fontSize: '1rem',
+          fontSize: "1rem",
           height: 40
           height: 40
         },
         },
         light: {
         light: {
           ...defaultLightChip,
           ...defaultLightChip,
-          '&.MuiChip-lightPrimary': getColorStyle({ color: 'primary', theme }),
-          '&.MuiChip-lightSecondary': getColorStyle({ color: 'secondary', theme }),
-          '&.MuiChip-lightError': getColorStyle({ color: 'error', theme }),
-          '&.MuiChip-lightInfo': getColorStyle({ color: 'info', theme }),
-          '&.MuiChip-lightSuccess': getColorStyle({ color: 'success', theme }),
-          '&.MuiChip-lightWarning': getColorStyle({ color: 'warning', theme })
+          "&.MuiChip-lightPrimary": getColorStyle({ color: "primary", theme }),
+          "&.MuiChip-lightSecondary": getColorStyle({ color: "secondary", theme }),
+          "&.MuiChip-lightError": getColorStyle({ color: "error", theme }),
+          "&.MuiChip-lightInfo": getColorStyle({ color: "info", theme }),
+          "&.MuiChip-lightSuccess": getColorStyle({ color: "success", theme }),
+          "&.MuiChip-lightWarning": getColorStyle({ color: "warning", theme })
         },
         },
         combined: {
         combined: {
-          border: '1px solid',
+          border: "1px solid",
           ...defaultLightChip,
           ...defaultLightChip,
-          '&.MuiChip-combinedPrimary': getColorStyle({ color: 'primary', theme }),
-          '&.MuiChip-combinedSecondary': getColorStyle({ color: 'secondary', theme }),
-          '&.MuiChip-combinedError': getColorStyle({ color: 'error', theme }),
-          '&.MuiChip-combinedInfo': getColorStyle({ color: 'info', theme }),
-          '&.MuiChip-combinedSuccess': getColorStyle({ color: 'success', theme }),
-          '&.MuiChip-combinedWarning': getColorStyle({ color: 'warning', theme })
+          "&.MuiChip-combinedPrimary": getColorStyle({ color: "primary", theme }),
+          "&.MuiChip-combinedSecondary": getColorStyle({ color: "secondary", theme }),
+          "&.MuiChip-combinedError": getColorStyle({ color: "error", theme }),
+          "&.MuiChip-combinedInfo": getColorStyle({ color: "info", theme }),
+          "&.MuiChip-combinedSuccess": getColorStyle({ color: "success", theme }),
+          "&.MuiChip-combinedWarning": getColorStyle({ color: "warning", theme })
         }
         }
       }
       }
     }
     }

+ 27 - 27
src/themes/overrides/Fab.ts

@@ -1,12 +1,12 @@
 // material-ui
 // material-ui
-import { alpha, Theme } from '@mui/material/styles';
+import { alpha, Theme } from "@mui/material/styles";
 
 
 // project import
 // project import
-import getColors from 'utils/getColors';
-import getShadow from 'utils/getShadow';
+import getColors from "@/utils/getColors";
+import getShadow from "@/utils/getShadow";
 
 
 // types
 // types
-import { ExtendedStyleProps } from 'types/extended';
+import { ExtendedStyleProps } from "@/types/extended";
 
 
 // ==============================|| BUTTON - COLORS ||============================== //
 // ==============================|| BUTTON - COLORS ||============================== //
 
 
@@ -21,20 +21,20 @@ function getColorStyle({ color, theme }: ExtendedStyleProps) {
     color: contrastText,
     color: contrastText,
     backgroundColor: main,
     backgroundColor: main,
     boxShadow: shadows,
     boxShadow: shadows,
-    '&:hover': {
-      boxShadow: 'none',
+    "&:hover": {
+      boxShadow: "none",
       backgroundColor: dark
       backgroundColor: dark
     },
     },
-    '&:focus-visible': {
+    "&:focus-visible": {
       outline: `2px solid ${dark}`,
       outline: `2px solid ${dark}`,
       outlineOffset: 2
       outlineOffset: 2
     },
     },
-    '&::after': {
-      borderRadius: '50px',
+    "&::after": {
+      borderRadius: "50px",
       boxShadow: `0 0 5px 5px ${alpha(main, 0.9)}`
       boxShadow: `0 0 5px 5px ${alpha(main, 0.9)}`
     },
     },
-    '&:active::after': {
-      borderRadius: '50px',
+    "&:active::after": {
+      borderRadius: "50px",
       boxShadow: `0 0 0 0 ${alpha(main, 0.9)}`
       boxShadow: `0 0 0 0 ${alpha(main, 0.9)}`
     }
     }
   };
   };
@@ -48,35 +48,35 @@ export default function Button(theme: Theme) {
       styleOverrides: {
       styleOverrides: {
         root: {
         root: {
           fontWeight: 400,
           fontWeight: 400,
-          '&.Mui-disabled': {
+          "&.Mui-disabled": {
             backgroundColor: theme.palette.grey[200]
             backgroundColor: theme.palette.grey[200]
           },
           },
-          '&.MuiFab-primary': getColorStyle({ color: 'primary', theme }),
-          '&.MuiFab-secondary': getColorStyle({ color: 'secondary', theme }),
-          '&.Mui-error': getColorStyle({ color: 'error', theme }),
-          '&.MuiFab-success': getColorStyle({ color: 'success', theme }),
-          '&.MuiFab-info': getColorStyle({ color: 'info', theme }),
-          '&.MuiFab-warning': getColorStyle({ color: 'warning', theme }),
-          '&::after': {
+          "&.MuiFab-primary": getColorStyle({ color: "primary", theme }),
+          "&.MuiFab-secondary": getColorStyle({ color: "secondary", theme }),
+          "&.Mui-error": getColorStyle({ color: "error", theme }),
+          "&.MuiFab-success": getColorStyle({ color: "success", theme }),
+          "&.MuiFab-info": getColorStyle({ color: "info", theme }),
+          "&.MuiFab-warning": getColorStyle({ color: "warning", theme }),
+          "&::after": {
             content: '""',
             content: '""',
-            display: 'block',
-            position: 'absolute',
+            display: "block",
+            position: "absolute",
             left: 0,
             left: 0,
             top: 0,
             top: 0,
-            width: '100%',
-            height: '100%',
+            width: "100%",
+            height: "100%",
             borderRadius: 4,
             borderRadius: 4,
             opacity: 0,
             opacity: 0,
-            transition: 'all 0.5s'
+            transition: "all 0.5s"
           },
           },
 
 
-          '&:active::after': {
-            position: 'absolute',
+          "&:active::after": {
+            position: "absolute",
             borderRadius: 4,
             borderRadius: 4,
             left: 0,
             left: 0,
             top: 0,
             top: 0,
             opacity: 1,
             opacity: 1,
-            transition: '0s'
+            transition: "0s"
           }
           }
         }
         }
       }
       }

+ 18 - 18
src/themes/overrides/OutlinedInput.ts

@@ -1,10 +1,10 @@
 // material-ui
 // material-ui
-import { Theme } from '@mui/material/styles';
-import { ColorProps } from 'types/extended';
+import { Theme } from "@mui/material/styles";
+import { ColorProps } from "@/types/extended";
 
 
 // project import
 // project import
-import getColors from 'utils/getColors';
-import getShadow from 'utils/getShadow';
+import getColors from "@/utils/getColors";
+import getShadow from "@/utils/getShadow";
 
 
 // types
 // types
 interface Props {
 interface Props {
@@ -21,12 +21,12 @@ function getColor({ variant, theme }: Props) {
   const shadows = getShadow(theme, `${variant}`);
   const shadows = getShadow(theme, `${variant}`);
 
 
   return {
   return {
-    '&:hover .MuiOutlinedInput-notchedOutline': {
+    "&:hover .MuiOutlinedInput-notchedOutline": {
       borderColor: light
       borderColor: light
     },
     },
-    '&.Mui-focused': {
+    "&.Mui-focused": {
       boxShadow: shadows,
       boxShadow: shadows,
-      '& .MuiOutlinedInput-notchedOutline': {
+      "& .MuiOutlinedInput-notchedOutline": {
         border: `1px solid ${light}`
         border: `1px solid ${light}`
       }
       }
     }
     }
@@ -40,28 +40,28 @@ export default function OutlinedInput(theme: Theme) {
     MuiOutlinedInput: {
     MuiOutlinedInput: {
       styleOverrides: {
       styleOverrides: {
         input: {
         input: {
-          padding: '10.5px 14px 10.5px 12px'
+          padding: "10.5px 14px 10.5px 12px"
         },
         },
         notchedOutline: {
         notchedOutline: {
-          borderColor: theme.palette.mode === 'dark' ? theme.palette.grey[200] : theme.palette.grey[300]
+          borderColor: theme.palette.mode === "dark" ? theme.palette.grey[200] : theme.palette.grey[300]
         },
         },
         root: {
         root: {
-          ...getColor({ variant: 'primary', theme }),
-          '&.Mui-error': {
-            ...getColor({ variant: 'error', theme })
+          ...getColor({ variant: "primary", theme }),
+          "&.Mui-error": {
+            ...getColor({ variant: "error", theme })
           }
           }
         },
         },
         inputSizeSmall: {
         inputSizeSmall: {
-          padding: '7.5px 8px 7.5px 12px'
+          padding: "7.5px 8px 7.5px 12px"
         },
         },
         inputMultiline: {
         inputMultiline: {
           padding: 0
           padding: 0
         },
         },
-        colorSecondary: getColor({ variant: 'secondary', theme }),
-        colorError: getColor({ variant: 'error', theme }),
-        colorWarning: getColor({ variant: 'warning', theme }),
-        colorInfo: getColor({ variant: 'info', theme }),
-        colorSuccess: getColor({ variant: 'success', theme })
+        colorSecondary: getColor({ variant: "secondary", theme }),
+        colorError: getColor({ variant: "error", theme }),
+        colorWarning: getColor({ variant: "warning", theme }),
+        colorInfo: getColor({ variant: "info", theme }),
+        colorSuccess: getColor({ variant: "success", theme })
       }
       }
     }
     }
   };
   };

+ 53 - 49
src/themes/overrides/PaginationItem.ts

@@ -1,17 +1,17 @@
 // material-ui
 // material-ui
-import { Theme } from '@mui/material/styles';
-import { PaginationProps } from '@mui/material';
+import { Theme } from "@mui/material/styles";
+import { PaginationProps } from "@mui/material";
 
 
 // project import
 // project import
-import getColors from 'utils/getColors';
+import getColors from "@/utils/getColors";
 
 
 // types
 // types
-import { ExtendedStyleProps } from 'types/extended';
+import { ExtendedStyleProps } from "@/types/extended";
 
 
 // ==============================|| PAGINATION ITEM - COLORS ||============================== //
 // ==============================|| PAGINATION ITEM - COLORS ||============================== //
 
 
 interface PaginationStyleProps extends ExtendedStyleProps {
 interface PaginationStyleProps extends ExtendedStyleProps {
-  variant: PaginationProps['variant'];
+  variant: PaginationProps["variant"];
 }
 }
 
 
 function getColorStyle({ variant, color, theme }: PaginationStyleProps) {
 function getColorStyle({ variant, color, theme }: PaginationStyleProps) {
@@ -19,40 +19,40 @@ function getColorStyle({ variant, color, theme }: PaginationStyleProps) {
   const { lighter, light, dark, main, contrastText } = colors;
   const { lighter, light, dark, main, contrastText } = colors;
 
 
   const focusStyle = {
   const focusStyle = {
-    '&:focus-visible': {
+    "&:focus-visible": {
       outline: `2px solid ${dark}`,
       outline: `2px solid ${dark}`,
       outlineOffset: 2,
       outlineOffset: 2,
-      ...(variant === 'text' && {
+      ...(variant === "text" && {
         backgroundColor: theme.palette.background.paper
         backgroundColor: theme.palette.background.paper
       })
       })
     }
     }
   };
   };
 
 
   switch (variant) {
   switch (variant) {
-    case 'combined':
-    case 'contained':
+    case "combined":
+    case "contained":
       return {
       return {
         color: contrastText,
         color: contrastText,
         backgroundColor: main,
         backgroundColor: main,
-        '&:hover': {
+        "&:hover": {
           backgroundColor: light
           backgroundColor: light
         },
         },
         ...focusStyle
         ...focusStyle
       };
       };
-    case 'outlined':
+    case "outlined":
       return {
       return {
         borderColor: main,
         borderColor: main,
-        '&:hover': {
+        "&:hover": {
           backgroundColor: lighter,
           backgroundColor: lighter,
           borderColor: light
           borderColor: light
         },
         },
         ...focusStyle
         ...focusStyle
       };
       };
-    case 'text':
+    case "text":
     default:
     default:
       return {
       return {
         color: main,
         color: main,
-        '&:hover': {
+        "&:hover": {
           backgroundColor: main,
           backgroundColor: main,
           color: lighter
           color: lighter
         },
         },
@@ -68,59 +68,63 @@ export default function PaginationItem(theme: Theme) {
     MuiPaginationItem: {
     MuiPaginationItem: {
       styleOverrides: {
       styleOverrides: {
         root: {
         root: {
-          '&:focus-visible': {
+          "&:focus-visible": {
             outline: `2px solid ${theme.palette.secondary.dark}`,
             outline: `2px solid ${theme.palette.secondary.dark}`,
             outlineOffset: 2
             outlineOffset: 2
           }
           }
         },
         },
         text: {
         text: {
-          '&.Mui-selected': {
-            backgroundColor: 'transparent',
-            fontSize: '1rem',
+          "&.Mui-selected": {
+            backgroundColor: "transparent",
+            fontSize: "1rem",
             fontWeight: 500,
             fontWeight: 500,
-            '&.MuiPaginationItem-textPrimary': getColorStyle({ variant: 'text', color: 'primary', theme }),
-            '&.MuiPaginationItem-textSecondary': getColorStyle({ variant: 'text', color: 'secondary', theme }),
-            '&.MuiPaginationItem-textError': getColorStyle({ variant: 'text', color: 'error', theme }),
-            '&.MuiPaginationItem-textSuccess': getColorStyle({ variant: 'text', color: 'success', theme }),
-            '&.MuiPaginationItem-textInfo': getColorStyle({ variant: 'text', color: 'info', theme }),
-            '&.MuiPaginationItem-textWarning': getColorStyle({ variant: 'text', color: 'warning', theme })
+            "&.MuiPaginationItem-textPrimary": getColorStyle({ variant: "text", color: "primary", theme }),
+            "&.MuiPaginationItem-textSecondary": getColorStyle({ variant: "text", color: "secondary", theme }),
+            "&.MuiPaginationItem-textError": getColorStyle({ variant: "text", color: "error", theme }),
+            "&.MuiPaginationItem-textSuccess": getColorStyle({ variant: "text", color: "success", theme }),
+            "&.MuiPaginationItem-textInfo": getColorStyle({ variant: "text", color: "info", theme }),
+            "&.MuiPaginationItem-textWarning": getColorStyle({ variant: "text", color: "warning", theme })
           }
           }
         },
         },
         contained: {
         contained: {
-          '&.Mui-selected': {
-            '&.MuiPaginationItem-containedPrimary': getColorStyle({ variant: 'contained', color: 'primary', theme }),
-            '&.MuiPaginationItem-containedSecondary': getColorStyle({ variant: 'contained', color: 'secondary', theme }),
-            '&.MuiPaginationItem-containedError': getColorStyle({ variant: 'contained', color: 'error', theme }),
-            '&.MuiPaginationItem-containedSuccess': getColorStyle({ variant: 'contained', color: 'success', theme }),
-            '&.MuiPaginationItem-containedInfo': getColorStyle({ variant: 'contained', color: 'info', theme }),
-            '&.MuiPaginationItem-containedWarning': getColorStyle({ variant: 'contained', color: 'warning', theme })
+          "&.Mui-selected": {
+            "&.MuiPaginationItem-containedPrimary": getColorStyle({ variant: "contained", color: "primary", theme }),
+            "&.MuiPaginationItem-containedSecondary": getColorStyle({
+              variant: "contained",
+              color: "secondary",
+              theme
+            }),
+            "&.MuiPaginationItem-containedError": getColorStyle({ variant: "contained", color: "error", theme }),
+            "&.MuiPaginationItem-containedSuccess": getColorStyle({ variant: "contained", color: "success", theme }),
+            "&.MuiPaginationItem-containedInfo": getColorStyle({ variant: "contained", color: "info", theme }),
+            "&.MuiPaginationItem-containedWarning": getColorStyle({ variant: "contained", color: "warning", theme })
           }
           }
         },
         },
         combined: {
         combined: {
-          border: '1px solid',
+          border: "1px solid",
           borderColor: theme.palette.divider,
           borderColor: theme.palette.divider,
-          '&.MuiPaginationItem-ellipsis': {
-            border: 'none'
+          "&.MuiPaginationItem-ellipsis": {
+            border: "none"
           },
           },
-          '&.Mui-selected': {
-            '&.MuiPaginationItem-combinedPrimary': getColorStyle({ variant: 'combined', color: 'primary', theme }),
-            '&.MuiPaginationItem-combinedSecondary': getColorStyle({ variant: 'combined', color: 'secondary', theme }),
-            '&.MuiPaginationItem-combinedError': getColorStyle({ variant: 'combined', color: 'error', theme }),
-            '&.MuiPaginationItem-combinedSuccess': getColorStyle({ variant: 'combined', color: 'success', theme }),
-            '&.MuiPaginationItem-combinedInfo': getColorStyle({ variant: 'combined', color: 'info', theme }),
-            '&.MuiPaginationItem-combinedWarning': getColorStyle({ variant: 'combined', color: 'warning', theme })
+          "&.Mui-selected": {
+            "&.MuiPaginationItem-combinedPrimary": getColorStyle({ variant: "combined", color: "primary", theme }),
+            "&.MuiPaginationItem-combinedSecondary": getColorStyle({ variant: "combined", color: "secondary", theme }),
+            "&.MuiPaginationItem-combinedError": getColorStyle({ variant: "combined", color: "error", theme }),
+            "&.MuiPaginationItem-combinedSuccess": getColorStyle({ variant: "combined", color: "success", theme }),
+            "&.MuiPaginationItem-combinedInfo": getColorStyle({ variant: "combined", color: "info", theme }),
+            "&.MuiPaginationItem-combinedWarning": getColorStyle({ variant: "combined", color: "warning", theme })
           }
           }
         },
         },
         outlined: {
         outlined: {
           borderColor: theme.palette.divider,
           borderColor: theme.palette.divider,
-          '&.Mui-selected': {
-            backgroundColor: 'transparent',
-            '&.MuiPaginationItem-outlinedPrimary': getColorStyle({ variant: 'outlined', color: 'primary', theme }),
-            '&.MuiPaginationItem-outlinedSecondary': getColorStyle({ variant: 'outlined', color: 'secondary', theme }),
-            '&.MuiPaginationItem-outlinedError': getColorStyle({ variant: 'outlined', color: 'error', theme }),
-            '&.MuiPaginationItem-outlinedSuccess': getColorStyle({ variant: 'outlined', color: 'success', theme }),
-            '&.MuiPaginationItem-outlinedInfo': getColorStyle({ variant: 'outlined', color: 'info', theme }),
-            '&.MuiPaginationItem-outlinedWarning': getColorStyle({ variant: 'outlined', color: 'warning', theme })
+          "&.Mui-selected": {
+            backgroundColor: "transparent",
+            "&.MuiPaginationItem-outlinedPrimary": getColorStyle({ variant: "outlined", color: "primary", theme }),
+            "&.MuiPaginationItem-outlinedSecondary": getColorStyle({ variant: "outlined", color: "secondary", theme }),
+            "&.MuiPaginationItem-outlinedError": getColorStyle({ variant: "outlined", color: "error", theme }),
+            "&.MuiPaginationItem-outlinedSuccess": getColorStyle({ variant: "outlined", color: "success", theme }),
+            "&.MuiPaginationItem-outlinedInfo": getColorStyle({ variant: "outlined", color: "info", theme }),
+            "&.MuiPaginationItem-outlinedWarning": getColorStyle({ variant: "outlined", color: "warning", theme })
           }
           }
         }
         }
       }
       }

+ 40 - 35
src/themes/overrides/Radio.tsx

@@ -1,12 +1,12 @@
 // material-ui
 // material-ui
-import { Theme } from '@mui/material/styles';
-import { Box, CheckboxProps } from '@mui/material';
+import { Theme } from "@mui/material/styles";
+import { Box, CheckboxProps } from "@mui/material";
 
 
 // project import
 // project import
-import getColors from 'utils/getColors';
+import getColors from "@/utils/getColors";
 
 
 // types
 // types
-import { ExtendedStyleProps } from 'types/extended';
+import { ExtendedStyleProps } from "@/types/extended";
 
 
 // ==============================|| RADIO - COLORS ||============================== //
 // ==============================|| RADIO - COLORS ||============================== //
 
 
@@ -15,13 +15,13 @@ function getColorStyle({ color, theme }: ExtendedStyleProps) {
   const { lighter, main, dark } = colors;
   const { lighter, main, dark } = colors;
 
 
   return {
   return {
-    '& .dot': {
+    "& .dot": {
       backgroundColor: main
       backgroundColor: main
     },
     },
-    '&:hover': {
+    "&:hover": {
       backgroundColor: lighter
       backgroundColor: lighter
     },
     },
-    '&.Mui-focusVisible': {
+    "&.Mui-focusVisible": {
       outline: `2px solid ${dark}`,
       outline: `2px solid ${dark}`,
       outlineOffset: -4
       outlineOffset: -4
     }
     }
@@ -36,13 +36,13 @@ interface RadioSizeProps {
   position: number;
   position: number;
 }
 }
 
 
-function getSizeStyle(size?: CheckboxProps['size']): RadioSizeProps {
+function getSizeStyle(size?: CheckboxProps["size"]): RadioSizeProps {
   switch (size) {
   switch (size) {
-    case 'small':
+    case "small":
       return { size: 16, dotSize: 8, position: 3 };
       return { size: 16, dotSize: 8, position: 3 };
-    case 'large':
+    case "large":
       return { size: 24, dotSize: 12, position: 5 };
       return { size: 24, dotSize: 12, position: 5 };
-    case 'medium':
+    case "medium":
     default:
     default:
       return { size: 20, dotSize: 10, position: 4 };
       return { size: 20, dotSize: 10, position: 4 };
   }
   }
@@ -50,14 +50,14 @@ function getSizeStyle(size?: CheckboxProps['size']): RadioSizeProps {
 
 
 // ==============================|| CHECKBOX - STYLE ||============================== //
 // ==============================|| CHECKBOX - STYLE ||============================== //
 
 
-function radioStyle(size?: CheckboxProps['size']) {
+function radioStyle(size?: CheckboxProps["size"]) {
   const sizes: RadioSizeProps = getSizeStyle(size);
   const sizes: RadioSizeProps = getSizeStyle(size);
 
 
   return {
   return {
-    '& .icon': {
+    "& .icon": {
       width: sizes.size,
       width: sizes.size,
       height: sizes.size,
       height: sizes.size,
-      '& .dot': {
+      "& .dot": {
         width: sizes.dotSize,
         width: sizes.dotSize,
         height: sizes.dotSize,
         height: sizes.dotSize,
         top: sizes.position,
         top: sizes.position,
@@ -75,18 +75,23 @@ export default function Radio(theme: Theme) {
   return {
   return {
     MuiRadio: {
     MuiRadio: {
       defaultProps: {
       defaultProps: {
-        className: 'size-small',
-        icon: <Box className="icon" sx={{ width: 16, height: 16, border: '1px solid', borderColor: 'inherit', borderRadius: '50%' }} />,
+        className: "size-small",
+        icon: (
+          <Box
+            className="icon"
+            sx={{ width: 16, height: 16, border: "1px solid", borderColor: "inherit", borderRadius: "50%" }}
+          />
+        ),
         checkedIcon: (
         checkedIcon: (
           <Box
           <Box
             className="icon"
             className="icon"
             sx={{
             sx={{
               width: 16,
               width: 16,
               height: 16,
               height: 16,
-              border: '1px solid',
-              borderColor: 'inherit',
-              borderRadius: '50%',
-              position: 'relative'
+              border: "1px solid",
+              borderColor: "inherit",
+              borderRadius: "50%",
+              position: "relative"
             }}
             }}
           >
           >
             <Box
             <Box
@@ -94,9 +99,9 @@ export default function Radio(theme: Theme) {
               sx={{
               sx={{
                 width: 8,
                 width: 8,
                 height: 8,
                 height: 8,
-                backgroundColor: 'inherit',
-                borderRadius: '50%',
-                position: 'absolute',
+                backgroundColor: "inherit",
+                borderRadius: "50%",
+                position: "absolute",
                 top: 3,
                 top: 3,
                 left: 3
                 left: 3
               }}
               }}
@@ -107,22 +112,22 @@ export default function Radio(theme: Theme) {
       styleOverrides: {
       styleOverrides: {
         root: {
         root: {
           color: palette.secondary[300],
           color: palette.secondary[300],
-          '&.size-small': {
-            ...radioStyle('small')
+          "&.size-small": {
+            ...radioStyle("small")
           },
           },
-          '&.size-medium': {
-            ...radioStyle('medium')
+          "&.size-medium": {
+            ...radioStyle("medium")
           },
           },
-          '&.size-large': {
-            ...radioStyle('large')
+          "&.size-large": {
+            ...radioStyle("large")
           }
           }
         },
         },
-        colorPrimary: getColorStyle({ color: 'primary', theme }),
-        colorSecondary: getColorStyle({ color: 'secondary', theme }),
-        colorSuccess: getColorStyle({ color: 'success', theme }),
-        colorWarning: getColorStyle({ color: 'warning', theme }),
-        colorInfo: getColorStyle({ color: 'info', theme }),
-        colorError: getColorStyle({ color: 'error', theme })
+        colorPrimary: getColorStyle({ color: "primary", theme }),
+        colorSecondary: getColorStyle({ color: "secondary", theme }),
+        colorSuccess: getColorStyle({ color: "success", theme }),
+        colorWarning: getColorStyle({ color: "warning", theme }),
+        colorInfo: getColorStyle({ color: "info", theme }),
+        colorError: getColorStyle({ color: "error", theme })
       }
       }
     }
     }
   };
   };

+ 17 - 17
src/themes/overrides/Slider.ts

@@ -1,11 +1,11 @@
 // material-ui
 // material-ui
-import { Theme } from '@mui/material/styles';
+import { Theme } from "@mui/material/styles";
 
 
 // project import
 // project import
-import getColors from 'utils/getColors';
+import getColors from "@/utils/getColors";
 
 
 // types
 // types
-import { ExtendedStyleProps } from 'types/extended';
+import { ExtendedStyleProps } from "@/types/extended";
 
 
 // ==============================|| OVERRIDES - TAB ||============================== //
 // ==============================|| OVERRIDES - TAB ||============================== //
 
 
@@ -23,29 +23,29 @@ export default function Slider(theme: Theme) {
     MuiSlider: {
     MuiSlider: {
       styleOverrides: {
       styleOverrides: {
         track: {
         track: {
-          height: '1px'
+          height: "1px"
         },
         },
         thumb: {
         thumb: {
           width: 14,
           width: 14,
           height: 14,
           height: 14,
           border: `2px solid ${theme.palette.primary.main}`,
           border: `2px solid ${theme.palette.primary.main}`,
           backgroundColor: theme.palette.background.paper,
           backgroundColor: theme.palette.background.paper,
-          '&.MuiSlider-thumbColorPrimary': getColorStyle({ color: 'primary', theme }),
-          '&.MuiSlider-thumbColorSecondary': getColorStyle({ color: 'secondary', theme }),
-          '&.MuiSlider-thumbColorSuccess': getColorStyle({ color: 'success', theme }),
-          '&.MuiSlider-thumbColorWarning': getColorStyle({ color: 'warning', theme }),
-          '&.MuiSlider-thumbColorInfo': getColorStyle({ color: 'info', theme }),
-          '&.MuiSlider-thumbColorError': getColorStyle({ color: 'error', theme })
+          "&.MuiSlider-thumbColorPrimary": getColorStyle({ color: "primary", theme }),
+          "&.MuiSlider-thumbColorSecondary": getColorStyle({ color: "secondary", theme }),
+          "&.MuiSlider-thumbColorSuccess": getColorStyle({ color: "success", theme }),
+          "&.MuiSlider-thumbColorWarning": getColorStyle({ color: "warning", theme }),
+          "&.MuiSlider-thumbColorInfo": getColorStyle({ color: "info", theme }),
+          "&.MuiSlider-thumbColorError": getColorStyle({ color: "error", theme })
         },
         },
         mark: {
         mark: {
           width: 4,
           width: 4,
           height: 4,
           height: 4,
-          borderRadius: '50%',
+          borderRadius: "50%",
           border: `1px solid ${theme.palette.secondary.light}`,
           border: `1px solid ${theme.palette.secondary.light}`,
           backgroundColor: theme.palette.background.paper,
           backgroundColor: theme.palette.background.paper,
-          '&.MuiSlider-markActive': {
+          "&.MuiSlider-markActive": {
             opacity: 1,
             opacity: 1,
-            borderColor: 'inherit',
+            borderColor: "inherit",
             borderWidth: 2
             borderWidth: 2
           }
           }
         },
         },
@@ -53,14 +53,14 @@ export default function Slider(theme: Theme) {
           color: theme.palette.secondary.light
           color: theme.palette.secondary.light
         },
         },
         root: {
         root: {
-          '&.Mui-disabled': {
-            '.MuiSlider-rail': {
+          "&.Mui-disabled": {
+            ".MuiSlider-rail": {
               opacity: 0.25
               opacity: 0.25
             },
             },
-            '.MuiSlider-track': {
+            ".MuiSlider-track": {
               color: theme.palette.secondary.lighter
               color: theme.palette.secondary.lighter
             },
             },
-            '.MuiSlider-thumb': {
+            ".MuiSlider-thumb": {
               border: `2px solid ${theme.palette.secondary.lighter}`
               border: `2px solid ${theme.palette.secondary.lighter}`
             }
             }
           }
           }

+ 42 - 30
src/themes/palette.ts

@@ -1,42 +1,54 @@
 // material-ui
 // material-ui
-import { alpha, createTheme } from '@mui/material/styles';
+import { alpha, createTheme } from "@mui/material/styles";
 
 
 // third-party
 // third-party
-import { presetDarkPalettes, presetPalettes, PalettesProps } from '@ant-design/colors';
+import { presetDarkPalettes, presetPalettes, PalettesProps } from "@ant-design/colors";
 
 
 // project import
 // project import
-import ThemeOption from './theme';
+import ThemeOption from "./theme";
 
 
 // types
 // types
-import { PaletteThemeProps } from 'types/theme';
-import { PresetColor, ThemeMode } from 'types/config';
+import { PaletteThemeProps } from "@/types/theme";
+import { PresetColor, ThemeMode } from "@/types/config";
 
 
 // ==============================|| DEFAULT THEME - PALETTE  ||============================== //
 // ==============================|| DEFAULT THEME - PALETTE  ||============================== //
 
 
 const Palette = (mode: ThemeMode, presetColor: PresetColor) => {
 const Palette = (mode: ThemeMode, presetColor: PresetColor) => {
-  const colors: PalettesProps = mode === 'dark' ? presetDarkPalettes : presetPalettes;
+  const colors: PalettesProps = mode === "dark" ? presetDarkPalettes : presetPalettes;
 
 
   let greyPrimary = [
   let greyPrimary = [
-    '#ffffff',
-    '#fafafa',
-    '#f5f5f5',
-    '#f0f0f0',
-    '#d9d9d9',
-    '#bfbfbf',
-    '#8c8c8c',
-    '#595959',
-    '#262626',
-    '#141414',
-    '#000000'
+    "#ffffff",
+    "#fafafa",
+    "#f5f5f5",
+    "#f0f0f0",
+    "#d9d9d9",
+    "#bfbfbf",
+    "#8c8c8c",
+    "#595959",
+    "#262626",
+    "#141414",
+    "#000000"
   ];
   ];
-  let greyAscent = ['#fafafa', '#bfbfbf', '#434343', '#1f1f1f'];
-  let greyConstant = ['#fafafb', '#e6ebf1'];
+  let greyAscent = ["#fafafa", "#bfbfbf", "#434343", "#1f1f1f"];
+  let greyConstant = ["#fafafb", "#e6ebf1"];
 
 
-  if (mode === 'dark') {
-    greyPrimary = ['#000000', '#141414', '#1e1e1e', '#595959', '#8c8c8c', '#bfbfbf', '#d9d9d9', '#f0f0f0', '#f5f5f5', '#fafafa', '#ffffff'];
+  if (mode === "dark") {
+    greyPrimary = [
+      "#000000",
+      "#141414",
+      "#1e1e1e",
+      "#595959",
+      "#8c8c8c",
+      "#bfbfbf",
+      "#d9d9d9",
+      "#f0f0f0",
+      "#f5f5f5",
+      "#fafafa",
+      "#ffffff"
+    ];
     // greyPrimary.reverse();
     // greyPrimary.reverse();
-    greyAscent = ['#fafafa', '#bfbfbf', '#434343', '#1f1f1f'];
-    greyConstant = ['#121212', '#d3d8db'];
+    greyAscent = ["#fafafa", "#bfbfbf", "#434343", "#1f1f1f"];
+    greyConstant = ["#121212", "#d3d8db"];
   }
   }
   colors.grey = [...greyPrimary, ...greyAscent, ...greyConstant];
   colors.grey = [...greyPrimary, ...greyAscent, ...greyConstant];
 
 
@@ -46,21 +58,21 @@ const Palette = (mode: ThemeMode, presetColor: PresetColor) => {
     palette: {
     palette: {
       mode,
       mode,
       common: {
       common: {
-        black: '#000',
-        white: '#fff'
+        black: "#000",
+        white: "#fff"
       },
       },
       ...paletteColor,
       ...paletteColor,
       text: {
       text: {
-        primary: mode === 'dark' ? alpha(paletteColor.grey[900]!, 0.87) : paletteColor.grey[700],
-        secondary: mode === 'dark' ? alpha(paletteColor.grey[900]!, 0.45) : paletteColor.grey[500],
-        disabled: mode === 'dark' ? alpha(paletteColor.grey[900]!, 0.1) : paletteColor.grey[400]
+        primary: mode === "dark" ? alpha(paletteColor.grey[900]!, 0.87) : paletteColor.grey[700],
+        secondary: mode === "dark" ? alpha(paletteColor.grey[900]!, 0.45) : paletteColor.grey[500],
+        disabled: mode === "dark" ? alpha(paletteColor.grey[900]!, 0.1) : paletteColor.grey[400]
       },
       },
       action: {
       action: {
         disabled: paletteColor.grey[300]
         disabled: paletteColor.grey[300]
       },
       },
-      divider: mode === 'dark' ? alpha(paletteColor.grey[900]!, 0.05) : paletteColor.grey[200],
+      divider: mode === "dark" ? alpha(paletteColor.grey[900]!, 0.05) : paletteColor.grey[200],
       background: {
       background: {
-        paper: mode === 'dark' ? paletteColor.grey[100] : paletteColor.grey[0],
+        paper: mode === "dark" ? paletteColor.grey[100] : paletteColor.grey[0],
         default: paletteColor.grey.A50
         default: paletteColor.grey.A50
       }
       }
     }
     }

+ 4 - 4
src/themes/shadows.tsx

@@ -1,17 +1,17 @@
 // material-ui
 // material-ui
-import { alpha, Theme } from '@mui/material/styles';
+import { alpha, Theme } from "@mui/material/styles";
 
 
 // types
 // types
-import { CustomShadowProps } from 'types/theme';
+import { CustomShadowProps } from "@/types/theme";
 
 
 // ==============================|| DEFAULT THEME - CUSTOM SHADOWS  ||============================== //
 // ==============================|| DEFAULT THEME - CUSTOM SHADOWS  ||============================== //
 
 
 const CustomShadows = (theme: Theme): CustomShadowProps => ({
 const CustomShadows = (theme: Theme): CustomShadowProps => ({
   // z1: `0px 2px 8px rgba(0, 0, 0, 0.15)`,
   // z1: `0px 2px 8px rgba(0, 0, 0, 0.15)`,
-  button: theme.palette.mode === 'dark' ? `0 2px 0 rgb(0 0 0 / 5%)` : `0 2px #0000000b`,
+  button: theme.palette.mode === "dark" ? `0 2px 0 rgb(0 0 0 / 5%)` : `0 2px #0000000b`,
   text: `0 -1px 0 rgb(0 0 0 / 12%)`,
   text: `0 -1px 0 rgb(0 0 0 / 12%)`,
   z1:
   z1:
-    theme.palette.mode === 'dark'
+    theme.palette.mode === "dark"
       ? `0px 1px 1px rgb(0 0 0 / 14%), 0px 2px 1px rgb(0 0 0 / 12%), 0px 1px 3px rgb(0 0 0 / 20%)`
       ? `0px 1px 1px rgb(0 0 0 / 14%), 0px 2px 1px rgb(0 0 0 / 12%), 0px 1px 3px rgb(0 0 0 / 20%)`
       : `0px 1px 4px ${alpha(theme.palette.grey[900], 0.08)}`,
       : `0px 1px 4px ${alpha(theme.palette.grey[900], 0.08)}`,
   primary: `0 0 0 2px ${alpha(theme.palette.primary.main, 0.2)}`,
   primary: `0 0 0 2px ${alpha(theme.palette.primary.main, 0.2)}`,

+ 4 - 4
src/themes/theme/default.ts

@@ -1,7 +1,7 @@
 // types
 // types
-import { PaletteThemeProps } from 'types/theme';
-import { PalettesProps } from '@ant-design/colors';
-import { PaletteColorOptions } from '@mui/material/styles';
+import { PaletteThemeProps } from "@/types/theme";
+import { PalettesProps } from "@ant-design/colors";
+import { PaletteColorOptions } from "@mui/material/styles";
 
 
 // ==============================|| PRESET THEME - DEFAULT ||============================== //
 // ==============================|| PRESET THEME - DEFAULT ||============================== //
 
 
@@ -26,7 +26,7 @@ const Default = (colors: PalettesProps): PaletteThemeProps => {
     A700: grey[14],
     A700: grey[14],
     A800: grey[16]
     A800: grey[16]
   };
   };
-  const contrastText = '#fff';
+  const contrastText = "#fff";
 
 
   return {
   return {
     primary: {
     primary: {

+ 20 - 20
src/themes/theme/index.ts

@@ -1,38 +1,38 @@
 // project import
 // project import
-import Default from './default';
-import Theme1 from './theme1';
-import Theme2 from './theme2';
-import Theme3 from './theme3';
-import Theme4 from './theme4';
-import Theme5 from './theme5';
-import Theme6 from './theme6';
-import Theme7 from './theme7';
-import Theme8 from './theme8';
+import Default from "./default";
+import Theme1 from "./theme1";
+import Theme2 from "./theme2";
+import Theme3 from "./theme3";
+import Theme4 from "./theme4";
+import Theme5 from "./theme5";
+import Theme6 from "./theme6";
+import Theme7 from "./theme7";
+import Theme8 from "./theme8";
 
 
 // types
 // types
-import { PaletteThemeProps } from 'types/theme';
-import { PalettesProps } from '@ant-design/colors';
-import { ThemeMode, PresetColor } from 'types/config';
+import { PaletteThemeProps } from "@/types/theme";
+import { PalettesProps } from "@ant-design/colors";
+import { ThemeMode, PresetColor } from "@/types/config";
 
 
 // ==============================|| PRESET THEME - THEME SELECTOR ||============================== //
 // ==============================|| PRESET THEME - THEME SELECTOR ||============================== //
 
 
 const Theme = (colors: PalettesProps, presetColor: PresetColor, mode: ThemeMode): PaletteThemeProps => {
 const Theme = (colors: PalettesProps, presetColor: PresetColor, mode: ThemeMode): PaletteThemeProps => {
   switch (presetColor) {
   switch (presetColor) {
-    case 'theme1':
+    case "theme1":
       return Theme1(colors, mode);
       return Theme1(colors, mode);
-    case 'theme2':
+    case "theme2":
       return Theme2(colors, mode);
       return Theme2(colors, mode);
-    case 'theme3':
+    case "theme3":
       return Theme3(colors, mode);
       return Theme3(colors, mode);
-    case 'theme4':
+    case "theme4":
       return Theme4(colors, mode);
       return Theme4(colors, mode);
-    case 'theme5':
+    case "theme5":
       return Theme5(colors, mode);
       return Theme5(colors, mode);
-    case 'theme6':
+    case "theme6":
       return Theme6(colors, mode);
       return Theme6(colors, mode);
-    case 'theme7':
+    case "theme7":
       return Theme7(colors, mode);
       return Theme7(colors, mode);
-    case 'theme8':
+    case "theme8":
       return Theme8(colors, mode);
       return Theme8(colors, mode);
     default:
     default:
       return Default(colors);
       return Default(colors);

+ 38 - 16
src/themes/theme/theme1.ts

@@ -1,8 +1,8 @@
 // types
 // types
-import { PaletteThemeProps } from 'types/theme';
-import { PalettesProps } from '@ant-design/colors';
-import { PaletteColorOptions } from '@mui/material/styles';
-import { ThemeMode } from 'types/config';
+import { PaletteThemeProps } from "@/types/theme";
+import { PalettesProps } from "@ant-design/colors";
+import { PaletteColorOptions } from "@mui/material/styles";
+import { ThemeMode } from "@/types/config";
 
 
 // ==============================|| PRESET THEME - DEFAULT ||============================== //
 // ==============================|| PRESET THEME - DEFAULT ||============================== //
 
 
@@ -27,20 +27,42 @@ const Theme1 = (colors: PalettesProps, mode: ThemeMode): PaletteThemeProps => {
     A700: grey[14],
     A700: grey[14],
     A800: grey[16]
     A800: grey[16]
   };
   };
-  const contrastText = '#fff';
+  const contrastText = "#fff";
 
 
-  let primaryColors = ['#D6E4FF', '#D6E4FF', '#ADC8FF', '#84A9FF', '#6690FF', '#3366FF', '#254EDB', '#1939B7', '#102693', '#102693'];
-  let errorColors = ['#FFE7D3', '#FF805D', '#FF4528', '#DB271D', '#930C1A'];
-  let warningColors = ['#FFF6D0', '#FFCF4E', '#FFB814', '#DB970E', '#935B06'];
-  let infoColors = ['#DCF0FF', '#7EB9FF', '#549BFF', '#3D78DB', '#1A3D93'];
-  let successColors = ['#EAFCD4', '#8AE65B', '#58D62A', '#3DB81E', '#137C0D'];
+  let primaryColors = [
+    "#D6E4FF",
+    "#D6E4FF",
+    "#ADC8FF",
+    "#84A9FF",
+    "#6690FF",
+    "#3366FF",
+    "#254EDB",
+    "#1939B7",
+    "#102693",
+    "#102693"
+  ];
+  let errorColors = ["#FFE7D3", "#FF805D", "#FF4528", "#DB271D", "#930C1A"];
+  let warningColors = ["#FFF6D0", "#FFCF4E", "#FFB814", "#DB970E", "#935B06"];
+  let infoColors = ["#DCF0FF", "#7EB9FF", "#549BFF", "#3D78DB", "#1A3D93"];
+  let successColors = ["#EAFCD4", "#8AE65B", "#58D62A", "#3DB81E", "#137C0D"];
 
 
-  if (mode === 'dark') {
-    primaryColors = ['#1c2134', '#1f294d', '#243462', '#273e83', '#2c4db0', '#305bdd', '#567fe9', '#80a4f4', '#a9c5f8', '#d2e2fb'];
-    errorColors = ['#341d1b', '#b03725', '#dd3f27', '#e9664d', '#fbd6c9'];
-    warningColors = ['#342a1a', '#83631a', '#dda116', '#e9ba3a', '#fbefb5'];
-    infoColors = ['#202734', '#416fb0', '#4c88dd', '#74a8e9', '#ecf4fb'];
-    successColors = ['#1f2e1c', '#449626', '#4fba28', '#74cf4d', '#e3fbd2'];
+  if (mode === "dark") {
+    primaryColors = [
+      "#1c2134",
+      "#1f294d",
+      "#243462",
+      "#273e83",
+      "#2c4db0",
+      "#305bdd",
+      "#567fe9",
+      "#80a4f4",
+      "#a9c5f8",
+      "#d2e2fb"
+    ];
+    errorColors = ["#341d1b", "#b03725", "#dd3f27", "#e9664d", "#fbd6c9"];
+    warningColors = ["#342a1a", "#83631a", "#dda116", "#e9ba3a", "#fbefb5"];
+    infoColors = ["#202734", "#416fb0", "#4c88dd", "#74a8e9", "#ecf4fb"];
+    successColors = ["#1f2e1c", "#449626", "#4fba28", "#74cf4d", "#e3fbd2"];
   }
   }
 
 
   return {
   return {

+ 38 - 16
src/themes/theme/theme2.ts

@@ -1,8 +1,8 @@
 // types
 // types
-import { PaletteThemeProps } from 'types/theme';
-import { PalettesProps } from '@ant-design/colors';
-import { PaletteColorOptions } from '@mui/material/styles';
-import { ThemeMode } from 'types/config';
+import { PaletteThemeProps } from "@/types/theme";
+import { PalettesProps } from "@ant-design/colors";
+import { PaletteColorOptions } from "@mui/material/styles";
+import { ThemeMode } from "@/types/config";
 
 
 // ==============================|| PRESET THEME - DEFAULT ||============================== //
 // ==============================|| PRESET THEME - DEFAULT ||============================== //
 
 
@@ -27,20 +27,42 @@ const Theme2 = (colors: PalettesProps, mode: ThemeMode): PaletteThemeProps => {
     A700: grey[14],
     A700: grey[14],
     A800: grey[16]
     A800: grey[16]
   };
   };
-  const contrastText = '#fff';
+  const contrastText = "#fff";
 
 
-  let primaryColors = ['#EEEDFC', '#D5D1F8', '#B9B2F3', '#9C93EE', '#877CEA', '#7265E6', '#6A5DE3', '#5F53DF', '#5549DB', '#4237D5'];
-  let errorColors = ['#FDE8E7', '#F25E52', '#F04134', '#EE3B2F', '#E92A21'];
-  let warningColors = ['#FFF7E0', '#FFC926', '#FFBF00', '#FFB900', '#FFA900'];
-  let infoColors = ['#E0F4F5', '#26B0BA', '#00A2AE', '#009AA7', '#008694'];
-  let successColors = ['#E0F5EA', '#26B56E', '#00A854', '#00A04D', '#008D3A'];
+  let primaryColors = [
+    "#EEEDFC",
+    "#D5D1F8",
+    "#B9B2F3",
+    "#9C93EE",
+    "#877CEA",
+    "#7265E6",
+    "#6A5DE3",
+    "#5F53DF",
+    "#5549DB",
+    "#4237D5"
+  ];
+  let errorColors = ["#FDE8E7", "#F25E52", "#F04134", "#EE3B2F", "#E92A21"];
+  let warningColors = ["#FFF7E0", "#FFC926", "#FFBF00", "#FFB900", "#FFA900"];
+  let infoColors = ["#E0F4F5", "#26B0BA", "#00A2AE", "#009AA7", "#008694"];
+  let successColors = ["#E0F5EA", "#26B56E", "#00A854", "#00A04D", "#008D3A"];
 
 
-  if (mode === 'dark') {
-    primaryColors = ['#222130', '#2b2946', '#37335a', '#443e78', '#554ca0', '#655ac8', '#9186dd', '#5F53DF', '#c3baf4', '#efecfb'];
-    errorColors = ['#321d1d', '#7d2e28', '#d13c31', '#e66859', '#f8baaf'];
-    warningColors = ['#342c1a', '#836611', '#dda705', '#e9bf28', '#f8e577'];
-    infoColors = ['#1a2628', '#11595f', '#058e98', '#1ea6aa', '#64cfcb'];
-    successColors = ['#1a2721', '#115c36', '#05934c', '#1da65d', '#61ca8b'];
+  if (mode === "dark") {
+    primaryColors = [
+      "#222130",
+      "#2b2946",
+      "#37335a",
+      "#443e78",
+      "#554ca0",
+      "#655ac8",
+      "#9186dd",
+      "#5F53DF",
+      "#c3baf4",
+      "#efecfb"
+    ];
+    errorColors = ["#321d1d", "#7d2e28", "#d13c31", "#e66859", "#f8baaf"];
+    warningColors = ["#342c1a", "#836611", "#dda705", "#e9bf28", "#f8e577"];
+    infoColors = ["#1a2628", "#11595f", "#058e98", "#1ea6aa", "#64cfcb"];
+    successColors = ["#1a2721", "#115c36", "#05934c", "#1da65d", "#61ca8b"];
   }
   }
 
 
   return {
   return {

+ 38 - 16
src/themes/theme/theme3.ts

@@ -1,8 +1,8 @@
 // types
 // types
-import { PaletteThemeProps } from 'types/theme';
-import { PalettesProps } from '@ant-design/colors';
-import { PaletteColorOptions } from '@mui/material/styles';
-import { ThemeMode } from 'types/config';
+import { PaletteThemeProps } from "@/types/theme";
+import { PalettesProps } from "@ant-design/colors";
+import { PaletteColorOptions } from "@mui/material/styles";
+import { ThemeMode } from "@/types/config";
 
 
 // ==============================|| PRESET THEME - DARK GREEN THEME3 ||============================== //
 // ==============================|| PRESET THEME - DARK GREEN THEME3 ||============================== //
 
 
@@ -27,20 +27,42 @@ const Theme4 = (colors: PalettesProps, mode: ThemeMode): PaletteThemeProps => {
     A700: grey[14],
     A700: grey[14],
     A800: grey[16]
     A800: grey[16]
   };
   };
-  const contrastText = '#fff';
+  const contrastText = "#fff";
 
 
-  let primaryColors = ['#E6F3EC', '#84c297', '#5eb57d', '#3da866', '#1f9c53', '#068e44', '#006933', '#004222', '#001c0f', '#000000'];
-  let errorColors = ['#FDE8E7', '#F25E52', '#F04134', '#EE3B2F', '#E92A21'];
-  let warningColors = ['#FFF7E0', '#FFC926', '#FFBF00', '#FFB900', '#FFA900'];
-  let infoColors = ['#E0F4F5', '#26B0BA', '#00A2AE', '#009AA7', '#008694'];
-  let successColors = ['#E0F5EA', '#26B56E', '#00A854', '#00A04D', '#008D3A'];
+  let primaryColors = [
+    "#E6F3EC",
+    "#84c297",
+    "#5eb57d",
+    "#3da866",
+    "#1f9c53",
+    "#068e44",
+    "#006933",
+    "#004222",
+    "#001c0f",
+    "#000000"
+  ];
+  let errorColors = ["#FDE8E7", "#F25E52", "#F04134", "#EE3B2F", "#E92A21"];
+  let warningColors = ["#FFF7E0", "#FFC926", "#FFBF00", "#FFB900", "#FFA900"];
+  let infoColors = ["#E0F4F5", "#26B0BA", "#00A2AE", "#009AA7", "#008694"];
+  let successColors = ["#E0F5EA", "#26B56E", "#00A854", "#00A04D", "#008D3A"];
 
 
-  if (mode === 'dark') {
-    primaryColors = ['#1a231f', '#173123', '#174029', '#13502f', '#0e6737', '#0a7d3e', '#1f8f4e', '#3ba162', '#5cb07a', '#82bf95'];
-    errorColors = ['#321d1d', '#7d2e28', '#d13c31', '#e66859', '#f8baaf'];
-    warningColors = ['#342c1a', '#836611', '#dda705', '#e9bf28', '#f8e577'];
-    infoColors = ['#1a2628', '#11595f', '#058e98', '#1ea6aa', '#64cfcb'];
-    successColors = ['#1a2721', '#115c36', '#05934c', '#1da65d', '#61ca8b'];
+  if (mode === "dark") {
+    primaryColors = [
+      "#1a231f",
+      "#173123",
+      "#174029",
+      "#13502f",
+      "#0e6737",
+      "#0a7d3e",
+      "#1f8f4e",
+      "#3ba162",
+      "#5cb07a",
+      "#82bf95"
+    ];
+    errorColors = ["#321d1d", "#7d2e28", "#d13c31", "#e66859", "#f8baaf"];
+    warningColors = ["#342c1a", "#836611", "#dda705", "#e9bf28", "#f8e577"];
+    infoColors = ["#1a2628", "#11595f", "#058e98", "#1ea6aa", "#64cfcb"];
+    successColors = ["#1a2721", "#115c36", "#05934c", "#1da65d", "#61ca8b"];
   }
   }
 
 
   return {
   return {

+ 38 - 16
src/themes/theme/theme4.ts

@@ -1,8 +1,8 @@
 // types
 // types
-import { PaletteThemeProps } from 'types/theme';
-import { PalettesProps } from '@ant-design/colors';
-import { PaletteColorOptions } from '@mui/material/styles';
-import { ThemeMode } from 'types/config';
+import { PaletteThemeProps } from "@/types/theme";
+import { PalettesProps } from "@ant-design/colors";
+import { PaletteColorOptions } from "@mui/material/styles";
+import { ThemeMode } from "@/types/config";
 
 
 // ==============================|| PRESET THEME - DARK BLUE THEME4 ||============================== //
 // ==============================|| PRESET THEME - DARK BLUE THEME4 ||============================== //
 
 
@@ -27,20 +27,42 @@ const Theme4 = (colors: PalettesProps, mode: ThemeMode): PaletteThemeProps => {
     A700: grey[14],
     A700: grey[14],
     A800: grey[16]
     A800: grey[16]
   };
   };
-  const contrastText = '#fff';
+  const contrastText = "#fff";
 
 
-  let primaryColors = ['#f0f6ff', '#edf4ff', '#bed3f7', '#8faeeb', '#6488de', '#3c64d0', '#2947ab', '#192f85', '#0d1b5e', '#070e38'];
-  let errorColors = ['#FDE8E7', '#F25E52', '#F04134', '#EE3B2F', '#E92A21'];
-  let warningColors = ['#FFF7E0', '#FFC926', '#FFBF00', '#FFB900', '#FFA900'];
-  let infoColors = ['#E0F4F5', '#26B0BA', '#00A2AE', '#009AA7', '#008694'];
-  let successColors = ['#E0F5EA', '#26B56E', '#00A854', '#00A04D', '#008D3A'];
+  let primaryColors = [
+    "#f0f6ff",
+    "#edf4ff",
+    "#bed3f7",
+    "#8faeeb",
+    "#6488de",
+    "#3c64d0",
+    "#2947ab",
+    "#192f85",
+    "#0d1b5e",
+    "#070e38"
+  ];
+  let errorColors = ["#FDE8E7", "#F25E52", "#F04134", "#EE3B2F", "#E92A21"];
+  let warningColors = ["#FFF7E0", "#FFC926", "#FFBF00", "#FFB900", "#FFA900"];
+  let infoColors = ["#E0F4F5", "#26B0BA", "#00A2AE", "#009AA7", "#008694"];
+  let successColors = ["#E0F5EA", "#26B56E", "#00A854", "#00A04D", "#008D3A"];
 
 
-  if (mode === 'dark') {
-    primaryColors = ['#1d212d', '#212841', '#273353', '#2c3e6e', '#324c92', '#385ab5', '#5d7dcb', '#89a7e1', '#b9cef0', '#e9f0fb'];
-    errorColors = ['#321d1d', '#7d2e28', '#d13c31', '#e66859', '#f8baaf'];
-    warningColors = ['#342c1a', '#836611', '#dda705', '#e9bf28', '#f8e577'];
-    infoColors = ['#1a2628', '#11595f', '#058e98', '#1ea6aa', '#64cfcb'];
-    successColors = ['#1a2721', '#115c36', '#05934c', '#1da65d', '#61ca8b'];
+  if (mode === "dark") {
+    primaryColors = [
+      "#1d212d",
+      "#212841",
+      "#273353",
+      "#2c3e6e",
+      "#324c92",
+      "#385ab5",
+      "#5d7dcb",
+      "#89a7e1",
+      "#b9cef0",
+      "#e9f0fb"
+    ];
+    errorColors = ["#321d1d", "#7d2e28", "#d13c31", "#e66859", "#f8baaf"];
+    warningColors = ["#342c1a", "#836611", "#dda705", "#e9bf28", "#f8e577"];
+    infoColors = ["#1a2628", "#11595f", "#058e98", "#1ea6aa", "#64cfcb"];
+    successColors = ["#1a2721", "#115c36", "#05934c", "#1da65d", "#61ca8b"];
   }
   }
 
 
   return {
   return {

+ 38 - 16
src/themes/theme/theme5.ts

@@ -1,8 +1,8 @@
 // types
 // types
-import { PaletteThemeProps } from 'types/theme';
-import { PalettesProps } from '@ant-design/colors';
-import { PaletteColorOptions } from '@mui/material/styles';
-import { ThemeMode } from 'types/config';
+import { PaletteThemeProps } from "@/types/theme";
+import { PalettesProps } from "@ant-design/colors";
+import { PaletteColorOptions } from "@mui/material/styles";
+import { ThemeMode } from "@/types/config";
 
 
 // ==============================|| PRESET THEME - ORANGE THEME5 ||============================== //
 // ==============================|| PRESET THEME - ORANGE THEME5 ||============================== //
 
 
@@ -27,20 +27,42 @@ const Theme5 = (colors: PalettesProps, mode: ThemeMode): PaletteThemeProps => {
     A700: grey[14],
     A700: grey[14],
     A800: grey[16]
     A800: grey[16]
   };
   };
-  const contrastText = '#fff';
+  const contrastText = "#fff";
 
 
-  let primaryColors = ['#fff4e6', '#ffdfb8', '#ffc98f', '#ffb066', '#ff943d', '#f27013', '#cc5206', '#a63a00', '#802800', '#591900'];
-  let errorColors = ['#FDE8E7', '#F25E52', '#F04134', '#EE3B2F', '#E92A21'];
-  let warningColors = ['#FFF7E0', '#FFC926', '#FFBF00', '#FFB900', '#FFA900'];
-  let infoColors = ['#E0F4F5', '#26B0BA', '#00A2AE', '#009AA7', '#008694'];
-  let successColors = ['#E0F5EA', '#26B56E', '#00A854', '#00A04D', '#008D3A'];
+  let primaryColors = [
+    "#fff4e6",
+    "#ffdfb8",
+    "#ffc98f",
+    "#ffb066",
+    "#ff943d",
+    "#f27013",
+    "#cc5206",
+    "#a63a00",
+    "#802800",
+    "#591900"
+  ];
+  let errorColors = ["#FDE8E7", "#F25E52", "#F04134", "#EE3B2F", "#E92A21"];
+  let warningColors = ["#FFF7E0", "#FFC926", "#FFBF00", "#FFB900", "#FFA900"];
+  let infoColors = ["#E0F4F5", "#26B0BA", "#00A2AE", "#009AA7", "#008694"];
+  let successColors = ["#E0F5EA", "#26B56E", "#00A854", "#00A04D", "#008D3A"];
 
 
-  if (mode === 'dark') {
-    primaryColors = ['#32221a', '#4a2b18', '#5e371b', '#7d4319', '#a85317', '#d26415', '#e9883a', '#f4a962', '#f8c48c', '#fbdbb5'];
-    errorColors = ['#321d1d', '#7d2e28', '#d13c31', '#e66859', '#f8baaf'];
-    warningColors = ['#342c1a', '#836611', '#dda705', '#e9bf28', '#f8e577'];
-    infoColors = ['#1a2628', '#11595f', '#058e98', '#1ea6aa', '#64cfcb'];
-    successColors = ['#1a2721', '#115c36', '#05934c', '#1da65d', '#61ca8b'];
+  if (mode === "dark") {
+    primaryColors = [
+      "#32221a",
+      "#4a2b18",
+      "#5e371b",
+      "#7d4319",
+      "#a85317",
+      "#d26415",
+      "#e9883a",
+      "#f4a962",
+      "#f8c48c",
+      "#fbdbb5"
+    ];
+    errorColors = ["#321d1d", "#7d2e28", "#d13c31", "#e66859", "#f8baaf"];
+    warningColors = ["#342c1a", "#836611", "#dda705", "#e9bf28", "#f8e577"];
+    infoColors = ["#1a2628", "#11595f", "#058e98", "#1ea6aa", "#64cfcb"];
+    successColors = ["#1a2721", "#115c36", "#05934c", "#1da65d", "#61ca8b"];
   }
   }
 
 
   return {
   return {

+ 38 - 16
src/themes/theme/theme6.ts

@@ -1,8 +1,8 @@
 // types
 // types
-import { PaletteThemeProps } from 'types/theme';
-import { PalettesProps } from '@ant-design/colors';
-import { PaletteColorOptions } from '@mui/material/styles';
-import { ThemeMode } from 'types/config';
+import { PaletteThemeProps } from "@/types/theme";
+import { PalettesProps } from "@ant-design/colors";
+import { PaletteColorOptions } from "@mui/material/styles";
+import { ThemeMode } from "@/types/config";
 
 
 // ==============================|| PRESET THEME - TEAL THEME6 ||============================== //
 // ==============================|| PRESET THEME - TEAL THEME6 ||============================== //
 
 
@@ -27,20 +27,42 @@ const Theme6 = (colors: PalettesProps, mode: ThemeMode): PaletteThemeProps => {
     A700: grey[14],
     A700: grey[14],
     A800: grey[16]
     A800: grey[16]
   };
   };
-  const contrastText = '#fff';
+  const contrastText = "#fff";
 
 
-  let primaryColors = ['#e1f0ef', '#c8e3e2', '#9ad6d6', '#71c6c9', '#4bb5bd', '#2aa1af', '#1a7b8a', '#0e5563', '#06323d', '#021217'];
-  let errorColors = ['#FDE8E7', '#F25E52', '#F04134', '#EE3B2F', '#E92A21'];
-  let warningColors = ['#FFF7E0', '#FFC926', '#FFBF00', '#FFB900', '#FFA900'];
-  let infoColors = ['#E0F4F5', '#26B0BA', '#00A2AE', '#009AA7', '#008694'];
-  let successColors = ['#E0F5EA', '#26B56E', '#00A854', '#00A04D', '#008D3A'];
+  let primaryColors = [
+    "#e1f0ef",
+    "#c8e3e2",
+    "#9ad6d6",
+    "#71c6c9",
+    "#4bb5bd",
+    "#2aa1af",
+    "#1a7b8a",
+    "#0e5563",
+    "#06323d",
+    "#021217"
+  ];
+  let errorColors = ["#FDE8E7", "#F25E52", "#F04134", "#EE3B2F", "#E92A21"];
+  let warningColors = ["#FFF7E0", "#FFC926", "#FFBF00", "#FFB900", "#FFA900"];
+  let infoColors = ["#E0F4F5", "#26B0BA", "#00A2AE", "#009AA7", "#008694"];
+  let successColors = ["#E0F5EA", "#26B56E", "#00A854", "#00A04D", "#008D3A"];
 
 
-  if (mode === 'dark') {
-    primaryColors = ['#1c2628', '#1d3539', '#22454a', '#23595f', '#26737c', '#288d99', '#47a6ad', '#6dbec0', '#96d0d0', '#c5dfde'];
-    errorColors = ['#321d1d', '#7d2e28', '#d13c31', '#e66859', '#f8baaf'];
-    warningColors = ['#342c1a', '#836611', '#dda705', '#e9bf28', '#f8e577'];
-    infoColors = ['#1a2628', '#11595f', '#058e98', '#1ea6aa', '#64cfcb'];
-    successColors = ['#1a2721', '#115c36', '#05934c', '#1da65d', '#61ca8b'];
+  if (mode === "dark") {
+    primaryColors = [
+      "#1c2628",
+      "#1d3539",
+      "#22454a",
+      "#23595f",
+      "#26737c",
+      "#288d99",
+      "#47a6ad",
+      "#6dbec0",
+      "#96d0d0",
+      "#c5dfde"
+    ];
+    errorColors = ["#321d1d", "#7d2e28", "#d13c31", "#e66859", "#f8baaf"];
+    warningColors = ["#342c1a", "#836611", "#dda705", "#e9bf28", "#f8e577"];
+    infoColors = ["#1a2628", "#11595f", "#058e98", "#1ea6aa", "#64cfcb"];
+    successColors = ["#1a2721", "#115c36", "#05934c", "#1da65d", "#61ca8b"];
   }
   }
 
 
   return {
   return {

+ 38 - 16
src/themes/theme/theme7.ts

@@ -1,8 +1,8 @@
 // types
 // types
-import { PaletteThemeProps } from 'types/theme';
-import { PalettesProps } from '@ant-design/colors';
-import { PaletteColorOptions } from '@mui/material/styles';
-import { ThemeMode } from 'types/config';
+import { PaletteThemeProps } from "@/types/theme";
+import { PalettesProps } from "@ant-design/colors";
+import { PaletteColorOptions } from "@mui/material/styles";
+import { ThemeMode } from "@/types/config";
 
 
 // ==============================|| PRESET THEME - GREEN THEME7 ||============================== //
 // ==============================|| PRESET THEME - GREEN THEME7 ||============================== //
 
 
@@ -27,20 +27,42 @@ const Theme7 = (colors: PalettesProps, mode: ThemeMode): PaletteThemeProps => {
     A700: grey[14],
     A700: grey[14],
     A800: grey[16]
     A800: grey[16]
   };
   };
-  const contrastText = '#fff';
+  const contrastText = "#fff";
 
 
-  let primaryColors = ['#d1e8d99c', '#8cdba9', '#63cf8e', '#3ec277', '#1db564', '#00a854', '#008245', '#005c34', '#003620', '#000f0a'];
-  let errorColors = ['#FDE8E7', '#F25E52', '#F04134', '#EE3B2F', '#E92A21'];
-  let warningColors = ['#FFF7E0', '#FFC926', '#FFBF00', '#FFB900', '#FFA900'];
-  let infoColors = ['#E0F4F5', '#26B0BA', '#00A2AE', '#009AA7', '#008694'];
-  let successColors = ['#E0F5EA', '#26B56E', '#00A854', '#00A04D', '#008D3A'];
+  let primaryColors = [
+    "#d1e8d99c",
+    "#8cdba9",
+    "#63cf8e",
+    "#3ec277",
+    "#1db564",
+    "#00a854",
+    "#008245",
+    "#005c34",
+    "#003620",
+    "#000f0a"
+  ];
+  let errorColors = ["#FDE8E7", "#F25E52", "#F04134", "#EE3B2F", "#E92A21"];
+  let warningColors = ["#FFF7E0", "#FFC926", "#FFBF00", "#FFB900", "#FFA900"];
+  let infoColors = ["#E0F4F5", "#26B0BA", "#00A2AE", "#009AA7", "#008694"];
+  let successColors = ["#E0F5EA", "#26B56E", "#00A854", "#00A04D", "#008D3A"];
 
 
-  if (mode === 'dark') {
-    primaryColors = ['#1a2721', '#173728', '#15472e', '#115c36', '#0b7841', '#05934c', '#1da65d', '#3cba73', '#61ca8b', '#8ad7a6'];
-    errorColors = ['#321d1d', '#7d2e28', '#d13c31', '#e66859', '#f8baaf'];
-    warningColors = ['#342c1a', '#836611', '#dda705', '#e9bf28', '#f8e577'];
-    infoColors = ['#1a2628', '#11595f', '#058e98', '#1ea6aa', '#64cfcb'];
-    successColors = ['#1a2721', '#115c36', '#05934c', '#1da65d', '#61ca8b'];
+  if (mode === "dark") {
+    primaryColors = [
+      "#1a2721",
+      "#173728",
+      "#15472e",
+      "#115c36",
+      "#0b7841",
+      "#05934c",
+      "#1da65d",
+      "#3cba73",
+      "#61ca8b",
+      "#8ad7a6"
+    ];
+    errorColors = ["#321d1d", "#7d2e28", "#d13c31", "#e66859", "#f8baaf"];
+    warningColors = ["#342c1a", "#836611", "#dda705", "#e9bf28", "#f8e577"];
+    infoColors = ["#1a2628", "#11595f", "#058e98", "#1ea6aa", "#64cfcb"];
+    successColors = ["#1a2721", "#115c36", "#05934c", "#1da65d", "#61ca8b"];
   }
   }
 
 
   return {
   return {

Деякі файли не було показано, через те що забагато файлів було змінено