diff --git a/.scannerwork/.sonar_lock b/.scannerwork/.sonar_lock new file mode 100644 index 00000000..e69de29b diff --git a/.scannerwork/report-task.txt b/.scannerwork/report-task.txt new file mode 100644 index 00000000..df1f2fb1 --- /dev/null +++ b/.scannerwork/report-task.txt @@ -0,0 +1,6 @@ +projectKey=pms-react +serverUrl=https://sonar.marcoaiot.com +serverVersion=25.5.0.107428 +dashboardUrl=https://sonar.marcoaiot.com/dashboard?id=pms-react +ceTaskId=ad6ba36a-08cb-400b-903e-94f173cac03f +ceTaskUrl=https://sonar.marcoaiot.com/api/ce/task?id=ad6ba36a-08cb-400b-903e-94f173cac03f diff --git a/package-lock.json b/package-lock.json index 75c151b9..dfe50b1b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37,6 +37,7 @@ "react-router-dom": "^6.20.1", "react-toastify": "^11.0.2", "sort-by": "^1.2.0", + "swiper": "^11.2.10", "xlsx": "^0.18.5", "zod": "^3.24.1" }, @@ -5547,6 +5548,24 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/swiper": { + "version": "11.2.10", + "resolved": "https://registry.npmjs.org/swiper/-/swiper-11.2.10.tgz", + "integrity": "sha512-RMeVUUjTQH+6N3ckimK93oxz6Sn5la4aDlgPzB+rBrG/smPdCTicXyhxa+woIpopz+jewEloiEE3lKo1h9w2YQ==", + "funding": [ + { + "type": "patreon", + "url": "https://www.patreon.com/swiperjs" + }, + { + "type": "open_collective", + "url": "http://opencollective.com/swiper" + } + ], + "engines": { + "node": ">= 4.7.0" + } + }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", diff --git a/package.json b/package.json index 33e1f019..02c59115 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ "react-router-dom": "^6.20.1", "react-toastify": "^11.0.2", "sort-by": "^1.2.0", + "swiper": "^11.2.10", "xlsx": "^0.18.5", "zod": "^3.24.1" }, diff --git a/public/assets/css/default.css b/public/assets/css/default.css index 2abd37ee..db070129 100644 --- a/public/assets/css/default.css +++ b/public/assets/css/default.css @@ -30,9 +30,7 @@ width: 45px; } -.app-brand-logo-login { - width: 100px; -} + .app-brand-logo-border { border: 1px solid #d5d5d5; @@ -164,3 +162,24 @@ thead tr { border-top: 1px solid white; } + +.app-brand-logo-login { + max-width: 50px; /* default for mobile */ + height: auto; /* keep aspect ratio */ +} + + +/* Tablet and up (≥768px) */ +@media (min-width: 768px) { + .app-brand-logo-login { + max-width: 60px; + } +} + +/* Desktop and up (≥1200px) */ +@media (min-width: 1200px) { + .app-brand-logo-login { + max-width: 80px; + } +} + diff --git a/public/assets/vendor/css/core.css b/public/assets/vendor/css/core.css index 6e3d5d14..9be75669 100644 --- a/public/assets/vendor/css/core.css +++ b/public/assets/vendor/css/core.css @@ -32544,3 +32544,29 @@ body:not(.modal-open) .layout-content-navbar .layout-navbar { var(--bs-dark-contrast) ); } + +/* App colors classes */ +.bg-gray-60{ + background-color:var(--bs-gray-60) +} +.text-gray-60{ + color:var(--bs-gray-60) +} +.bg-blue { + background-color:var(--bs-blue) +} +.text-blue{ + color:var(--bs-blue) +} +.bg-indigo { + background-color:var(--bs-indigo) +} +.text-indigo{ + color:var(--bs-indigo) +} +.bg-red { + background-color:var(--bs-red) +} +.text-red{ + color:var(--bs-red) +} \ No newline at end of file diff --git a/public/img/front-pages/backgrounds/cta-bg-dark.png b/public/img/front-pages/backgrounds/cta-bg-dark.png new file mode 100644 index 00000000..7c4e84ae Binary files /dev/null and b/public/img/front-pages/backgrounds/cta-bg-dark.png differ diff --git a/public/img/front-pages/backgrounds/cta-bg-light.png b/public/img/front-pages/backgrounds/cta-bg-light.png new file mode 100644 index 00000000..f2cdb6fb Binary files /dev/null and b/public/img/front-pages/backgrounds/cta-bg-light.png differ diff --git a/public/img/front-pages/backgrounds/footer-bg-dark.png b/public/img/front-pages/backgrounds/footer-bg-dark.png new file mode 100644 index 00000000..150c6ee6 Binary files /dev/null and b/public/img/front-pages/backgrounds/footer-bg-dark.png differ diff --git a/public/img/front-pages/backgrounds/footer-bg-light.png b/public/img/front-pages/backgrounds/footer-bg-light.png new file mode 100644 index 00000000..ff217349 Binary files /dev/null and b/public/img/front-pages/backgrounds/footer-bg-light.png differ diff --git a/public/img/front-pages/backgrounds/footer-bg.png b/public/img/front-pages/backgrounds/footer-bg.png new file mode 100644 index 00000000..5890f0d6 Binary files /dev/null and b/public/img/front-pages/backgrounds/footer-bg.png differ diff --git a/public/img/front-pages/backgrounds/hero-bg.png b/public/img/front-pages/backgrounds/hero-bg.png new file mode 100644 index 00000000..7d175c58 Binary files /dev/null and b/public/img/front-pages/backgrounds/hero-bg.png differ diff --git a/public/img/front-pages/branding/logo-1.png b/public/img/front-pages/branding/logo-1.png new file mode 100644 index 00000000..7f551d70 Binary files /dev/null and b/public/img/front-pages/branding/logo-1.png differ diff --git a/public/img/front-pages/branding/logo-2.png b/public/img/front-pages/branding/logo-2.png new file mode 100644 index 00000000..5e3f2698 Binary files /dev/null and b/public/img/front-pages/branding/logo-2.png differ diff --git a/public/img/front-pages/branding/logo-3.png b/public/img/front-pages/branding/logo-3.png new file mode 100644 index 00000000..e854e939 Binary files /dev/null and b/public/img/front-pages/branding/logo-3.png differ diff --git a/public/img/front-pages/branding/logo-4.png b/public/img/front-pages/branding/logo-4.png new file mode 100644 index 00000000..6c5d3f3c Binary files /dev/null and b/public/img/front-pages/branding/logo-4.png differ diff --git a/public/img/front-pages/branding/logo-5.png b/public/img/front-pages/branding/logo-5.png new file mode 100644 index 00000000..bf3cc14e Binary files /dev/null and b/public/img/front-pages/branding/logo-5.png differ diff --git a/public/img/front-pages/branding/logo-6.png b/public/img/front-pages/branding/logo-6.png new file mode 100644 index 00000000..99980b2a Binary files /dev/null and b/public/img/front-pages/branding/logo-6.png differ diff --git a/public/img/front-pages/branding/logo_1-dark.png b/public/img/front-pages/branding/logo_1-dark.png new file mode 100644 index 00000000..cb1a58d2 Binary files /dev/null and b/public/img/front-pages/branding/logo_1-dark.png differ diff --git a/public/img/front-pages/branding/logo_1-light.png b/public/img/front-pages/branding/logo_1-light.png new file mode 100644 index 00000000..e0308e90 Binary files /dev/null and b/public/img/front-pages/branding/logo_1-light.png differ diff --git a/public/img/front-pages/branding/logo_2-dark.png b/public/img/front-pages/branding/logo_2-dark.png new file mode 100644 index 00000000..f5e92478 Binary files /dev/null and b/public/img/front-pages/branding/logo_2-dark.png differ diff --git a/public/img/front-pages/branding/logo_2-light.png b/public/img/front-pages/branding/logo_2-light.png new file mode 100644 index 00000000..719e6103 Binary files /dev/null and b/public/img/front-pages/branding/logo_2-light.png differ diff --git a/public/img/front-pages/branding/logo_3-dark.png b/public/img/front-pages/branding/logo_3-dark.png new file mode 100644 index 00000000..27c68e49 Binary files /dev/null and b/public/img/front-pages/branding/logo_3-dark.png differ diff --git a/public/img/front-pages/branding/logo_3-light.png b/public/img/front-pages/branding/logo_3-light.png new file mode 100644 index 00000000..5ec4f174 Binary files /dev/null and b/public/img/front-pages/branding/logo_3-light.png differ diff --git a/public/img/front-pages/branding/logo_4-dark.png b/public/img/front-pages/branding/logo_4-dark.png new file mode 100644 index 00000000..3e5bfc3d Binary files /dev/null and b/public/img/front-pages/branding/logo_4-dark.png differ diff --git a/public/img/front-pages/branding/logo_4-light.png b/public/img/front-pages/branding/logo_4-light.png new file mode 100644 index 00000000..0929f535 Binary files /dev/null and b/public/img/front-pages/branding/logo_4-light.png differ diff --git a/public/img/front-pages/branding/logo_5-dark.png b/public/img/front-pages/branding/logo_5-dark.png new file mode 100644 index 00000000..34342001 Binary files /dev/null and b/public/img/front-pages/branding/logo_5-dark.png differ diff --git a/public/img/front-pages/branding/logo_5-light.png b/public/img/front-pages/branding/logo_5-light.png new file mode 100644 index 00000000..deb1071f Binary files /dev/null and b/public/img/front-pages/branding/logo_5-light.png differ diff --git a/public/img/front-pages/icons/Join-community-arrow.png b/public/img/front-pages/icons/Join-community-arrow.png new file mode 100644 index 00000000..9bde454a Binary files /dev/null and b/public/img/front-pages/icons/Join-community-arrow.png differ diff --git a/public/img/front-pages/icons/check-warning.svg b/public/img/front-pages/icons/check-warning.svg new file mode 100644 index 00000000..4c16161c --- /dev/null +++ b/public/img/front-pages/icons/check-warning.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/img/front-pages/icons/check.svg b/public/img/front-pages/icons/check.svg new file mode 100644 index 00000000..59b5961e --- /dev/null +++ b/public/img/front-pages/icons/check.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/img/front-pages/icons/contact-border.png b/public/img/front-pages/icons/contact-border.png new file mode 100644 index 00000000..1eb721d6 Binary files /dev/null and b/public/img/front-pages/icons/contact-border.png differ diff --git a/public/img/front-pages/icons/diamond-info.svg b/public/img/front-pages/icons/diamond-info.svg new file mode 100644 index 00000000..5f24f9ef --- /dev/null +++ b/public/img/front-pages/icons/diamond-info.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/public/img/front-pages/icons/facebook.svg b/public/img/front-pages/icons/facebook.svg new file mode 100644 index 00000000..42672a2d --- /dev/null +++ b/public/img/front-pages/icons/facebook.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/img/front-pages/icons/github.svg b/public/img/front-pages/icons/github.svg new file mode 100644 index 00000000..75bdf8d1 --- /dev/null +++ b/public/img/front-pages/icons/github.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/img/front-pages/icons/instagram.svg b/public/img/front-pages/icons/instagram.svg new file mode 100644 index 00000000..9a6830c8 --- /dev/null +++ b/public/img/front-pages/icons/instagram.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/public/img/front-pages/icons/keyboard.svg b/public/img/front-pages/icons/keyboard.svg new file mode 100644 index 00000000..dd6b8775 --- /dev/null +++ b/public/img/front-pages/icons/keyboard.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/img/front-pages/icons/laptop.svg b/public/img/front-pages/icons/laptop.svg new file mode 100644 index 00000000..befca175 --- /dev/null +++ b/public/img/front-pages/icons/laptop.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/img/front-pages/icons/paper-airplane.png b/public/img/front-pages/icons/paper-airplane.png new file mode 100644 index 00000000..a4911dc4 Binary files /dev/null and b/public/img/front-pages/icons/paper-airplane.png differ diff --git a/public/img/front-pages/icons/paper.svg b/public/img/front-pages/icons/paper.svg new file mode 100644 index 00000000..6d933f2a --- /dev/null +++ b/public/img/front-pages/icons/paper.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/img/front-pages/icons/plane.png b/public/img/front-pages/icons/plane.png new file mode 100644 index 00000000..497cc1e4 Binary files /dev/null and b/public/img/front-pages/icons/plane.png differ diff --git a/public/img/front-pages/icons/pricing-plans-arrow.png b/public/img/front-pages/icons/pricing-plans-arrow.png new file mode 100644 index 00000000..ed8f60bb Binary files /dev/null and b/public/img/front-pages/icons/pricing-plans-arrow.png differ diff --git a/public/img/front-pages/icons/rocket.svg b/public/img/front-pages/icons/rocket.svg new file mode 100644 index 00000000..700323aa --- /dev/null +++ b/public/img/front-pages/icons/rocket.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/img/front-pages/icons/section-title-icon.png b/public/img/front-pages/icons/section-title-icon.png new file mode 100644 index 00000000..6e8d1730 Binary files /dev/null and b/public/img/front-pages/icons/section-title-icon.png differ diff --git a/public/img/front-pages/icons/shuttle-rocket.png b/public/img/front-pages/icons/shuttle-rocket.png new file mode 100644 index 00000000..154b17e7 Binary files /dev/null and b/public/img/front-pages/icons/shuttle-rocket.png differ diff --git a/public/img/front-pages/icons/twitter.svg b/public/img/front-pages/icons/twitter.svg new file mode 100644 index 00000000..78fa4dc2 --- /dev/null +++ b/public/img/front-pages/icons/twitter.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/img/front-pages/icons/user-success.svg b/public/img/front-pages/icons/user-success.svg new file mode 100644 index 00000000..32d4b3bb --- /dev/null +++ b/public/img/front-pages/icons/user-success.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/public/img/front-pages/icons/user.svg b/public/img/front-pages/icons/user.svg new file mode 100644 index 00000000..af4eac79 --- /dev/null +++ b/public/img/front-pages/icons/user.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/img/front-pages/landing-page/apple-icon.png b/public/img/front-pages/landing-page/apple-icon.png new file mode 100644 index 00000000..82527801 Binary files /dev/null and b/public/img/front-pages/landing-page/apple-icon.png differ diff --git a/public/img/front-pages/landing-page/contact-customer-service.png b/public/img/front-pages/landing-page/contact-customer-service.png new file mode 100644 index 00000000..4e5aaaad Binary files /dev/null and b/public/img/front-pages/landing-page/contact-customer-service.png differ diff --git a/public/img/front-pages/landing-page/cta-dashboard.png b/public/img/front-pages/landing-page/cta-dashboard.png new file mode 100644 index 00000000..9dcb642f Binary files /dev/null and b/public/img/front-pages/landing-page/cta-dashboard.png differ diff --git a/public/img/front-pages/landing-page/dashboard-light-01.png b/public/img/front-pages/landing-page/dashboard-light-01.png new file mode 100644 index 00000000..8e1d4956 Binary files /dev/null and b/public/img/front-pages/landing-page/dashboard-light-01.png differ diff --git a/public/img/front-pages/landing-page/dashboard-light-02.png b/public/img/front-pages/landing-page/dashboard-light-02.png new file mode 100644 index 00000000..ede59aed Binary files /dev/null and b/public/img/front-pages/landing-page/dashboard-light-02.png differ diff --git a/public/img/front-pages/landing-page/dashboard-light-03.png b/public/img/front-pages/landing-page/dashboard-light-03.png new file mode 100644 index 00000000..1e45e519 Binary files /dev/null and b/public/img/front-pages/landing-page/dashboard-light-03.png differ diff --git a/public/img/front-pages/landing-page/dashboard-light-04.png b/public/img/front-pages/landing-page/dashboard-light-04.png new file mode 100644 index 00000000..998d30ea Binary files /dev/null and b/public/img/front-pages/landing-page/dashboard-light-04.png differ diff --git a/public/img/front-pages/landing-page/dashboard-light-05.png b/public/img/front-pages/landing-page/dashboard-light-05.png new file mode 100644 index 00000000..c7e6f5ac Binary files /dev/null and b/public/img/front-pages/landing-page/dashboard-light-05.png differ diff --git a/public/img/front-pages/landing-page/dashboard-light-06.png b/public/img/front-pages/landing-page/dashboard-light-06.png new file mode 100644 index 00000000..386d7289 Binary files /dev/null and b/public/img/front-pages/landing-page/dashboard-light-06.png differ diff --git a/public/img/front-pages/landing-page/dashboard-light-07.png b/public/img/front-pages/landing-page/dashboard-light-07.png new file mode 100644 index 00000000..b358f986 Binary files /dev/null and b/public/img/front-pages/landing-page/dashboard-light-07.png differ diff --git a/public/img/front-pages/landing-page/dashboard-light-08.png b/public/img/front-pages/landing-page/dashboard-light-08.png new file mode 100644 index 00000000..2ae124a9 Binary files /dev/null and b/public/img/front-pages/landing-page/dashboard-light-08.png differ diff --git a/public/img/front-pages/landing-page/faq-boy-with-logos.png b/public/img/front-pages/landing-page/faq-boy-with-logos.png new file mode 100644 index 00000000..b64dbfcc Binary files /dev/null and b/public/img/front-pages/landing-page/faq-boy-with-logos.png differ diff --git a/public/img/front-pages/landing-page/google-play-icon.png b/public/img/front-pages/landing-page/google-play-icon.png new file mode 100644 index 00000000..117bcb16 Binary files /dev/null and b/public/img/front-pages/landing-page/google-play-icon.png differ diff --git a/public/img/front-pages/landing-page/hero-dashboard-dark.png b/public/img/front-pages/landing-page/hero-dashboard-dark.png new file mode 100644 index 00000000..e035ae98 Binary files /dev/null and b/public/img/front-pages/landing-page/hero-dashboard-dark.png differ diff --git a/public/img/front-pages/landing-page/hero-dashboard-light1.png b/public/img/front-pages/landing-page/hero-dashboard-light1.png new file mode 100644 index 00000000..b4f5fe55 Binary files /dev/null and b/public/img/front-pages/landing-page/hero-dashboard-light1.png differ diff --git a/public/img/front-pages/landing-page/hero-elements-dark.png b/public/img/front-pages/landing-page/hero-elements-dark.png new file mode 100644 index 00000000..af1f5506 Binary files /dev/null and b/public/img/front-pages/landing-page/hero-elements-dark.png differ diff --git a/public/img/front-pages/landing-page/hero-elements-light.png b/public/img/front-pages/landing-page/hero-elements-light.png new file mode 100644 index 00000000..99f88901 Binary files /dev/null and b/public/img/front-pages/landing-page/hero-elements-light.png differ diff --git a/public/img/front-pages/landing-page/team-member-1.png b/public/img/front-pages/landing-page/team-member-1.png new file mode 100644 index 00000000..2a007f12 Binary files /dev/null and b/public/img/front-pages/landing-page/team-member-1.png differ diff --git a/public/img/front-pages/landing-page/team-member-2.png b/public/img/front-pages/landing-page/team-member-2.png new file mode 100644 index 00000000..b1b7e7c0 Binary files /dev/null and b/public/img/front-pages/landing-page/team-member-2.png differ diff --git a/public/img/front-pages/landing-page/team-member-3.png b/public/img/front-pages/landing-page/team-member-3.png new file mode 100644 index 00000000..805b2825 Binary files /dev/null and b/public/img/front-pages/landing-page/team-member-3.png differ diff --git a/public/img/front-pages/landing-page/team-member-4.png b/public/img/front-pages/landing-page/team-member-4.png new file mode 100644 index 00000000..8718f3c1 Binary files /dev/null and b/public/img/front-pages/landing-page/team-member-4.png differ diff --git a/public/img/front-pages/misc/checkout-image.png b/public/img/front-pages/misc/checkout-image.png new file mode 100644 index 00000000..720bfc48 Binary files /dev/null and b/public/img/front-pages/misc/checkout-image.png differ diff --git a/public/img/front-pages/misc/nav-item-col-img.png b/public/img/front-pages/misc/nav-item-col-img.png new file mode 100644 index 00000000..5e51e3be Binary files /dev/null and b/public/img/front-pages/misc/nav-item-col-img.png differ diff --git a/public/img/front-pages/misc/product-image.png b/public/img/front-pages/misc/product-image.png new file mode 100644 index 00000000..25f511b9 Binary files /dev/null and b/public/img/front-pages/misc/product-image.png differ diff --git a/public/img/illustrations/girl-unlock-password-light.png b/public/img/illustrations/girl-unlock-password-light.png new file mode 100644 index 00000000..18f4b274 Binary files /dev/null and b/public/img/illustrations/girl-unlock-password-light.png differ diff --git a/public/img/illustrations/registration.jpg b/public/img/illustrations/registration.jpg new file mode 100644 index 00000000..69cf7b8e Binary files /dev/null and b/public/img/illustrations/registration.jpg differ diff --git a/public/img/illustrations/worker_01.svg b/public/img/illustrations/worker_01.svg new file mode 100644 index 00000000..2170c2f4 --- /dev/null +++ b/public/img/illustrations/worker_01.svg @@ -0,0 +1,4955 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/img/illustrations/worker_02.jpg b/public/img/illustrations/worker_02.jpg new file mode 100644 index 00000000..274c55c3 Binary files /dev/null and b/public/img/illustrations/worker_02.jpg differ diff --git a/public/img/illustrations/worker_02.svg b/public/img/illustrations/worker_02.svg new file mode 100644 index 00000000..c673e01c --- /dev/null +++ b/public/img/illustrations/worker_02.svg @@ -0,0 +1,1117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/img/illustrations/worker_03.jpg b/public/img/illustrations/worker_03.jpg new file mode 100644 index 00000000..99c9be24 Binary files /dev/null and b/public/img/illustrations/worker_03.jpg differ diff --git a/public/img/illustrations/worker_03.png b/public/img/illustrations/worker_03.png new file mode 100644 index 00000000..d5fdab98 Binary files /dev/null and b/public/img/illustrations/worker_03.png differ diff --git a/public/img/illustrations/worker_03.svg b/public/img/illustrations/worker_03.svg new file mode 100644 index 00000000..ee552ecf --- /dev/null +++ b/public/img/illustrations/worker_03.svg @@ -0,0 +1,383 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/components/Directory/CardViewDirectory.jsx b/src/components/Directory/CardViewDirectory.jsx index b623ef0e..21ceea84 100644 --- a/src/components/Directory/CardViewDirectory.jsx +++ b/src/components/Directory/CardViewDirectory.jsx @@ -25,8 +25,9 @@ const CardViewDirectory = ({
{ if (IsActive) { setIsOpenModalNote(true); @@ -89,10 +90,11 @@ const CardViewDirectory = ({ )} {!IsActive && ( { setDirActions({ action: false, id: contact.id }); @@ -113,8 +115,9 @@ const CardViewDirectory = ({
{ if (IsActive) { setIsOpenModalNote(true); @@ -126,7 +129,7 @@ const CardViewDirectory = ({ {contact.designation && (
  • - +
  • {contact.designation} diff --git a/src/components/common/GlobalModal/CreateIssue.jsx b/src/components/common/GlobalModal/CreateIssue.jsx index 9d090df8..faa13600 100644 --- a/src/components/common/GlobalModal/CreateIssue.jsx +++ b/src/components/common/GlobalModal/CreateIssue.jsx @@ -1,172 +1,179 @@ -import React,{useState} from "react"; +import React, { useState } from "react"; import CommentEditor from "./CommentEditor"; import ReactQuill from "react-quill"; import "react-quill/dist/quill.snow.css"; import "./CommentEditor.css"; const jiraModules = { - toolbar: [ - ["bold", "italic", "underline", "strike"], - ["link", "code"], - [{ list: "bullet" }], - ], - }; - - const jiraFormats = [ - "bold", - "italic", - "underline", - "strike", - "link", - "code", - "list", - ]; - -const CreateIssue = () => -{ - const [value, setValue] = useState(""); + toolbar: [ + ["bold", "italic", "underline", "strike"], + ["link", "code"], + [{ list: "bullet" }], + ], +}; + +const jiraFormats = [ + "bold", + "italic", + "underline", + "strike", + "link", + "code", + "list", +]; + +const CreateIssue = () => { + const [value, setValue] = useState(""); return ( - -
    -
    -
    -
    - {masterFeatures && (
    )} -
    - Preview -
    +
    + Preview +
    {hasNext && ( )}
    - -
    Uploaded By : {fullName}
    -
    Date : {date}
    -
    Uploaded By : {buildingName} {floorName} - {workAreaName || "Unknown"} {activityName}
    -
    comment : {batchComment}
    - - +
    + {" "} + {" "} + Uploaded By : {" "} + {fullName} +
    +
    + {" "} + {" "} + Date : {" "} + {date} +
    +
    + {" "} + {" "} + Uploaded By : {" "} + + {buildingName} {floorName}{" "} + + {workAreaName || "Unknown"}{" "} + {activityName} + +
    +
    + {" "} + {" "} + comment : {" "} + {batchComment} +
    ); }; -export default ImagePop; \ No newline at end of file +export default ImagePop; diff --git a/src/pages/Home/LandingPage.css b/src/pages/Home/LandingPage.css new file mode 100644 index 00000000..70b8e283 --- /dev/null +++ b/src/pages/Home/LandingPage.css @@ -0,0 +1,649 @@ +.section-py { + padding: 6.25rem 0; +} +@media (max-width: 1199.98px) { + .section-py { + padding: 4rem 0; + } +} +@media (max-width: 767.98px) { + .section-py { + padding: 3rem 0; + } +} + +.first-section-pt { + padding-top: 11.28rem; +} +@media (max-width: 1199.98px) { + .first-section-pt { + padding-top: 7.5rem; + } +} + +.card[class*="card-hover-border-"] { + transition: all 0.2s ease-in-out; +} + +.banner-bg-img { + position: absolute; + top: 0; + left: 0; + height: 100%; + width: 100%; + object-fit: cover; + object-position: left; +} + +.section-title-img { + height: 100%; + width: 120%; + inset-inline-start: -12%; + top: 10px; +} + +/* .light-style body { + background-color: #fff; +} */ + +.dark-style body { + background-color: #2b2c40; +} + +nav.layout-navbar { + /* backdrop-filter: unset; */ + /* background-color: transparent !important; */ +} + +nav.layout-navbar::before { + position: absolute; + display: block; + block-size: 100%; + content: ""; + inline-size: 100%; + inset-block-start: 0; + inset-inline-start: 0; +} + +nav.layout-navbar .navbar.landing-navbar { + --bs-front-navbar-bg: rgba(var(--bs-paper-bg-rgb), 0.38); + --bs-front-navbar-border-color: rgba(var(--bs-paper-bg-rgb), 0.68); + border: 2px solid var(--bs-front-navbar-border-color); + background-color: var(--bs-front-navbar-bg); + margin-block-start: 1rem; + padding-block: 0.614rem; + transform: unset; + transition: all 0.2s ease-in-out; + border-radius: 0.375rem; +} + +nav.layout-navbar.navbar-active::after { + backdrop-filter: saturate(100%) blur(6px); + -webkit-backdrop-filter: saturate(100%) blur(6px); +} + +.navbar.landing-navbar { + box-shadow: none; + transition: all 0.2s ease-in-out; + transform: unset !important; + padding-top: 0.614rem; + padding-bottom: 0.614rem; + margin-top: 1rem; + border-width: 2px; + border-style: solid; + border-radius: 0.375rem; +} +.navbar.landing-navbar .navbar-nav .nav-link { + padding: 0.5rem 0.625rem; + margin-inline-end: 0.625rem; +} +@media (max-width: 1199.98px) { + .navbar.landing-navbar .navbar-nav .nav-link { + padding-left: 0.5rem; + padding-right: 0.5rem; + margin-inline-end: 0; + } +} +.navbar.landing-navbar .navbar-nav .nav-item:last-child .nav-link { + margin-inline-end: 0; +} +@media (min-width: 992px) { + .navbar.landing-navbar .navbar-nav .nav-item.mega-dropdown > .dropdown-menu { + max-width: 1300px; + inset-inline-start: 50% !important; + transform: translateX(-50%); + top: 100%; + } +} +@media (max-width: 991.98px) { + .navbar.landing-navbar .navbar-nav .nav-item.mega-dropdown > .dropdown-menu { + background: transparent; + box-shadow: none; + border: none; + } +} +.navbar.landing-navbar + .navbar-nav + .nav-item.mega-dropdown + > .dropdown-menu + .mega-dropdown-link { + padding-left: 0; + padding-right: 0; + margin: 0; + font-weight: 400; +} +.navbar.landing-navbar + .navbar-nav + .nav-item.mega-dropdown + > .dropdown-menu + .mega-dropdown-link + i { + font-size: 1rem; + font-weight: 700; + margin-top: -0.125rem; +} +.navbar.landing-navbar .navbar-nav .nav-item .nav-img-col, +.navbar.landing-navbar .navbar-nav .nav-item .nav-img-col img { + border-radius: 0.625rem; +} +@media (max-width: 991.98px) { + .navbar.landing-navbar .landing-menu-overlay { + position: fixed; + display: none; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(34, 48, 62, 0.78); + transition: all 0.2s ease-in-out; + z-index: 9998; + } + .navbar.landing-navbar .landing-nav-menu { + position: fixed; + display: block !important; + height: 100%; + max-width: 300px; + width: 80%; + padding: 1rem; + inset-inline-start: -100%; + top: 0; + overflow-y: auto; + transition: all 0.3s ease-in-out; + z-index: 9999; + } + .navbar.landing-navbar .landing-nav-menu.show { + inset-inline-start: 0; + } + .navbar.landing-navbar .landing-nav-menu.show ~ .landing-menu-overlay { + display: block; + } +} + +.light-style .layout-navbar .navbar.landing-navbar { + border-color: rgba(255, 255, 255, 100); + background: rgba(255, 255, 255, 50); +} +.light-style .layout-navbar .navbar.landing-navbar .navbar-nav .nav-link { + color: #384551; +} +.light-style + .layout-navbar + .navbar.landing-navbar + .navbar-nav + .show + > .nav-link, +.light-style + .layout-navbar + .navbar.landing-navbar + .navbar-nav + .active + > .nav-link, +.light-style .layout-navbar .navbar.landing-navbar .navbar-nav .nav-link.show, +.light-style + .layout-navbar + .navbar.landing-navbar + .navbar-nav + .nav-link.active { + color: #696cff !important; +} +.light-style + .layout-navbar + .navbar.landing-navbar + .navbar-nav + .nav-item.mega-dropdown + > .dropdown-menu + .mega-dropdown-link + i { + color: #646e78; +} +@media (max-width: 991.98px) { + .light-style .layout-navbar .navbar.landing-navbar .landing-nav-menu { + background-color: #fff; + } +} +.light-style .layout-navbar.navbar-active .navbar.landing-navbar { + background: #fff; + box-shadow: 0 0.125rem 0.375rem 0 rgba(34, 48, 62, 0.08); +} +.light-style .layout-navbar .menu-text { + color: #384551; +} + +.dark-style .layout-navbar .navbar.landing-navbar { + border-color: rgba(65, 65, 95, 0.68); + background-color: rgba(65, 65, 95, 0.38); +} +.dark-style .layout-navbar .navbar.landing-navbar .navbar-nav .nav-link { + color: #d5d5e2; +} +.dark-style .layout-navbar .navbar.landing-navbar .navbar-nav .show > .nav-link, +.dark-style + .layout-navbar + .navbar.landing-navbar + .navbar-nav + .active + > .nav-link, +.dark-style .layout-navbar .navbar.landing-navbar .navbar-nav .nav-link.show, +.dark-style .layout-navbar .navbar.landing-navbar .navbar-nav .nav-link.active { + color: #696cff !important; +} +.dark-style + .layout-navbar + .navbar.landing-navbar + .navbar-nav + .nav-item.mega-dropdown + > .dropdown-menu + .mega-dropdown-link + i { + color: #b2b2c4; +} +@media (max-width: 991.98px) { + .dark-style .layout-navbar .navbar.landing-navbar .landing-nav-menu { + background-color: #2b2c40; + } +} +.dark-style .layout-navbar .navbar .menu-text { + color: #d5d5e2; +} +.dark-style .layout-navbar.navbar-active .navbar.landing-navbar { + background: #2b2c40; + border-color: #2b2c40; + box-shadow: 0 0.125rem 0.375rem 0 rgba(20, 20, 29, 0.2); +} + +@media (min-width: 992px) { + [dir="rtl"] + .navbar.landing-navbar + .navbar-nav + .nav-item.mega-dropdown + > .dropdown-menu { + transform: translateX(50%); + } +} + +.landing-footer .footer-link, +.landing-footer .footer-text { + color: #fff; + opacity: 0.78; +} +.landing-footer .footer-title { + color: #fff; + opacity: 0.92; +} +.landing-footer .footer-bottom-text { + color: #d3d4dc; +} +.landing-footer .footer-bottom { + background-color: #282c3e; +} +.landing-footer .footer-link { + transition: all 0.2s ease-in-out; +} +.landing-footer .footer-link:hover { + opacity: 1; +} +.landing-footer .footer-top { + padding-top: 3.3rem; + padding-bottom: 2.3rem; + border-top-left-radius: 3.75rem; + border-top-right-radius: 3.75rem; +} +@media (max-width: 767.98px) { + .landing-footer .footer-top { + padding: 3rem 0; + } +} +.landing-footer .footer-top .footer-bg { + object-position: center; +} +@media (min-width: 992px) { + .landing-footer .footer-logo-description { + max-width: 385px; + } +} +.landing-footer .footer-form { + max-width: 22.25rem; +} +.landing-footer .footer-form input { + background-color: transparent; + border-color: #4e4f6c; + color: #fff; +} +.landing-footer .footer-form input:hover:not([disabled]):not([focus]) { + border-color: #4e4f6c; +} +.landing-footer .footer-form input::placeholder { + color: rgba(255, 255, 255, 0.5); +} +.landing-footer .footer-form label { + color: #d5d5e2; +} + +.section-py { + padding: 6.25rem 0; +} +@media (max-width: 1199.98px) { + .section-py { + padding: 5rem 0; + } +} +@media (max-width: 767.98px) { + .section-py { + padding: 3rem 0; + } +} + +.landing-hero { + border-radius: 0 0 3.5rem 3.5rem; + padding-top: 10.2rem; +} +.landing-hero::after { + content: ""; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: -1; +} +@media (min-width: 992px) { + .landing-hero .hero-text-box { + max-width: 34.375rem; + margin: 0 auto; + } +} +.landing-hero .hero-title { + background: linear-gradient( + to right, + #28c76f 0%, + #5a4aff 47.92%, + #ff3739 100% + ); + background-size: 200% auto; + color: #384551; + font-size: calc(1.3875rem + 1.65vw); + background-clip: text; + line-height: 1.2; + text-fill-color: transparent; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + animation: shine 2s ease-in-out infinite alternate; +} +@media (min-width: 1200px) { + .landing-hero .hero-title { + font-size: 2.625rem; + } +} +.landing-hero .landing-hero-btn .hero-btn-item { + inset-inline-start: -94%; + top: 65%; +} +.landing-hero .hero-animation-img { + margin-bottom: -32rem; +} +.animation-img { + border: 1px soid red; +} +@media (max-width: 1199.98px) { + .landing-hero .hero-animation-img { + margin-bottom: -20rem; + } +} +@media (max-width: 575.98px) { + .landing-hero .hero-animation-img { + margin-bottom: -10rem; + } +} +.landing-hero .hero-animation-img .hero-dashboard-img { + width: 80%; + margin: 0 auto; + will-change: transform; + transform-style: preserve-3d; + transition: all 0.1s; +} +.landing-hero .hero-animation-img .hero-dashboard-img img { + width: 100%; +} + +.landing-hero-blank { + padding-top: 26rem; +} +@media (max-width: 1199.98px) { + .landing-hero-blank { + padding-top: 15rem; + } +} +@media (max-width: 575.98px) { + .landing-hero-blank { + padding-top: 7rem; + } +} + +@keyframes shine { + 0% { + background-position: 0% 50%; + } + 80% { + background-position: 50% 90%; + } + 100% { + background-position: 91% 100%; + } +} +.landing-features + .features-icon-wrapper + .features-icon-box + .features-icon-description { + max-width: 19.25rem; + margin: 0 auto; +} + +.landing-reviews { + border-top-left-radius: 3.75rem; + border-top-right-radius: 3.75rem; +} +.landing-reviews .swiper-reviews-carousel .swiper-button-prev, +.landing-reviews .swiper-reviews-carousel .swiper-button-next { + display: none; +} +.landing-reviews .swiper-reviews-carousel .swiper-slide { + height: auto; + padding: 0.8125rem; +} +.landing-reviews .swiper-reviews-carousel .client-logo { + height: 1.375rem; + object-fit: contain; +} +.landing-reviews .swiper-logo-carousel { + padding-bottom: 6.25rem; +} +.landing-reviews .swiper-logo-carousel .swiper { + max-width: 45rem; +} +.landing-reviews .swiper-logo-carousel .swiper .swiper-slide { + display: flex; + justify-content: center; +} +.landing-reviews .swiper-logo-carousel .swiper .client-logo { + max-height: 2.5rem; + max-width: 95%; + object-fit: contain; +} + +.landing-team .card, +.landing-team .card .team-image-box { + border-top-left-radius: 5.625rem; + border-top-right-radius: 1.25rem; +} +.landing-team .card .card-body { + border-bottom-left-radius: 0.375rem; + border-bottom-right-radius: 0.375rem; +} +.landing-team .team-image-box { + height: 11.5625rem; +} +.landing-team .team-image-box .card-img-position { + height: 15rem; + transform: translateX(-50%); + max-width: 100%; + object-fit: cover; +} +@media (max-width: 991.98px) { + .landing-team .team-image-box .card-img-position { + height: 13rem; + } +} +@media (max-width: 575.98px) { + .landing-team .team-image-box { + height: 11rem; + } +} +.landing-team .card .team-media-icons i { + transition: all 0.2s ease-in-out; +} + +.landing-pricing { + border-radius: 3.75rem; +} +.landing-pricing .pricing-plans-item { + inset-inline-end: -56%; + bottom: -0.5rem; +} +@media (max-width: 767.98px) { + .landing-pricing .pricing-plans-item { + inset-inline-end: 0; + bottom: 1rem; + } +} +.landing-pricing .pricing-list .badge.badge-center { + width: 1rem; + height: 1rem; +} +.landing-pricing .pricing-list .badge.badge-center i { + margin-top: -5px; +} +.landing-pricing .price-yearly-toggle { + position: absolute; + top: 0; + left: 50%; + transform: translateX(-50%); +} +.landing-pricing .card .card-header, +.landing-pricing .card .card-body { + padding: 2rem; + padding-top: 3rem; +} + +.landing-faq { + border-top-left-radius: 3.75rem; + border-top-right-radius: 3.75rem; +} +.landing-faq .faq-image { + max-width: 20rem; + width: 80%; +} + +.landing-cta .cta-title { + font-size: 2.125rem; +} +@media (max-width: 767.98px) { + .landing-cta .cta-title { + font-size: 1.8rem; + } +} + +.landing-contact .text-heading { + overflow-wrap: anywhere; +} +.landing-contact .contact-img-box, +.landing-contact .contact-img-box .contact-img { + border-radius: 3.75rem 0.375rem 0.375rem 0.375rem; +} +.landing-contact .contact-img-box .contact-border-img { + inset-block-start: -2.5rem; + inset-inline-start: -2.8125rem; +} + +.light-style .landing-hero { + background: linear-gradient(138.18deg, #eae8fd 0%, #fce5e6 94.44%); +} +.light-style .landing-hero::after { + background-color: #fff; +} + +.dark-style .landing-hero { + background: #1e2130; +} +.dark-style .landing-hero::after { + background-color: #2b2c40; +} + +[dir="rtl"] .landing-reviews-btns { + display: flex; + justify-content: flex-end; + flex-direction: row-reverse; + gap: 1rem; +} +[dir="rtl"] .landing-team .team-image-box .card-img-position { + transform: translateX(50%) !important; +} +[dir="rtl"] .landing-pricing .switch .switch-label { + padding-right: 0; +} +[dir="rtl"] .landing-pricing .switch .switch-label:first-child { + padding-left: 0.5rem; +} +[dir="rtl"] .landing-pricing .switch .switch-input ~ .switch-label { + padding-right: 3rem; +} +[dir="rtl"] .landing-contact .contact-img-box { + border-radius: 0.375rem 3.75rem 0.375rem 0.375rem; +} +[dir="rtl"] .landing-contact .contact-img-box::before { + inset-block-start: -1.875rem; + inset-inline-start: -3.125rem; + transform: rotate(90deg); +} + +.swiper { + width: 100%; + height: 100%; +} + +.swiper-slide { + text-align: center; + font-size: 18px; + background: #444; + + /* Center slide text vertically */ + display: flex; + justify-content: center; + align-items: center; +} + +.swiper-slide img { + display: block; + width: 100%; + height: 100%; + object-fit: cover; +} diff --git a/src/pages/Home/LandingPage.jsx b/src/pages/Home/LandingPage.jsx new file mode 100644 index 00000000..36e3f4da --- /dev/null +++ b/src/pages/Home/LandingPage.jsx @@ -0,0 +1,1595 @@ +import { noop } from "@tanstack/react-query"; +import "./LandingPage.css"; +import { Link } from "react-router-dom"; + +import { Swiper, SwiperSlide } from "swiper/react"; +// import required modules +import { Autoplay, Pagination, Navigation } from "swiper/modules"; +// Import Swiper styles +import "swiper/css"; +import "swiper/css/navigation"; + +const LandingPage = () => { + return ( +
    + + {/* Navbar: End */} + + {/* Sections:Start */} + +
    + {/* Hero: Start */} +
    +
    +
    +
    +

    + One dashboard to manage all your businesses +

    +

    + Production-ready & easy to use Admin Template +
    + for Reliability and Customizability. +

    +
    + {/* + Join community + Join community arrow + */} + + Get early access + + + Request a Demo + +
    +
    + +
    +
    +
    +
    + {/* Hero: End */} + + {/* Useful features: Start */} +
    +
    +
    + Useful Features +
    +

    + + Everything you need + laptop charging + + to start your next project +

    +

    + Not just a set of tools, the package includes ready-to-deploy + conceptual application. +

    +
    +
    +
    + laptop charging +
    +
    Quality Code
    +

    + Code structure that all developers will easily understand and + fall in love with. +

    +
    +
    +
    + transition up +
    +
    Continuous Updates
    +

    + Free updates for the next 12 months, including new demos and + features. +

    +
    +
    +
    + edit +
    +
    Stater-Kit
    +

    + Start your project quickly without having to remove + unnecessary features. +

    +
    +
    +
    + 3d select solid +
    +
    API Ready
    +

    + Just change the endpoint and see your own data loaded within + seconds. +

    +
    +
    +
    + user +
    +
    Excellent Support
    +

    + An easy-to-follow doc with lots of references and code + examples. +

    +
    +
    +
    + keyboard +
    +
    Well Documented
    +

    + An easy-to-follow doc with lots of references and code + examples. +

    +
    +
    +
    +
    + {/* Useful features: End */} + + {/* Our great team: Start */} +
    +
    +
    + Our Great Team +
    +

    + + Supported + laptop charging + + by Real People +

    +

    + Who is behind these great-looking interfaces? +

    +
    +
    +
    +
    + human image +
    +
    +
    Sophie Gilbert
    +

    Project Manager

    +
    +
    +
    +
    +
    +
    + human image +
    +
    +
    Paul Miles
    +

    UI Designer

    +
    +
    +
    +
    +
    +
    + human image +
    +
    +
    Nannie Ford
    +

    Development Lead

    +
    +
    +
    +
    +
    +
    + human image +
    +
    +
    Chris Watkins
    +

    Marketing Manager

    +
    +
    +
    +
    +
    +
    + {/* Our great team: End */} + + {/* Pricing plans: Start */} +
    +
    +
    + Pricing Plans +
    +

    + + Tailored pricing plans + laptop charging + + designed for you +

    +

    + All plans include 40+ advanced tools and features to boost your + product. +
    + Choose the best plan to fit your needs. +

    +
    +
    + +
    + pricing plans arrow + Save 25% +
    +
    +
    +
    + {/* Basic Plan: Start */} +
    +
    +
    +
    + paper airplane icon +

    Basic

    +
    + + $19 + + + $14 + + /mo +
    +
    +
    + $ 168 / year +
    +
    +
    +
    +
    +
      +
    • +
      + + + + Timeline +
      +
    • +
    • +
      + + + + Basic search +
      +
    • +
    • +
      + + + + Live chat widget +
      +
    • +
    • +
      + + + + Email marketing +
      +
    • +
    • +
      + + + + Custom Forms +
      +
    • +
    • +
      + + + + Traffic analytics +
      +
    • +
    • +
      + + + + Basic Support +
      +
    • +
    + +
    +
    +
    + {/* Basic Plan: End */} + + {/* Favourite Plan: Start */} +
    +
    +
    +
    + plane icon +

    Team

    +
    + + $29 + + + $22 + + /mo +
    +
    +
    + $ 264 / year +
    +
    +
    +
    +
    +
      +
    • +
      + + + + Everything in basic +
      +
    • +
    • +
      + + + + Timeline with database +
      +
    • +
    • +
      + + + + Advanced search +
      +
    • +
    • +
      + + + + Marketing automation +
      +
    • +
    • +
      + + + + Advanced chatbot +
      +
    • +
    • +
      + + + + Campaign management +
      +
    • +
    • +
      + + + + Collaboration tools +
      +
    • +
    + +
    +
    +
    + {/* Favourite Plan: End */} + + {/* Standard Plan: Start */} +
    +
    +
    +
    + shuttle rocket icon +

    Enterprise

    +
    + + $49 + + + $37 + + /mo +
    +
    +
    + $ 444 / year +
    +
    +
    +
    +
    +
      +
    • +
      + + + + Everything in premium +
      +
    • +
    • +
      + + + + Timeline with database +
      +
    • +
    • +
      + + + + Fuzzy search +
      +
    • +
    • +
      + + + + A/B testing sanbox +
      +
    • +
    • +
      + + + + Custom permissions +
      +
    • +
    • +
      + + + + Social media automation +
      +
    • +
    • +
      + + + + Sales automation tools +
      +
    • +
    + +
    +
    +
    + {/* Standard Plan: End */} +
    +
    +
    + {/* Pricing plans: End */} + + {/* Fun facts: Start */} +
    +
    +
    +
    +
    +
    + laptop +

    7.1k+

    +

    + Support Tickets +
    + Resolved +

    +
    +
    +
    +
    +
    +
    + laptop +

    50k+

    +

    + Join creatives +
    + community +

    +
    +
    +
    +
    +
    +
    + laptop +

    4.8/5

    +

    + Highly Rated +
    + Products +

    +
    +
    +
    +
    +
    +
    + laptop +

    100%

    +

    + Money Back +
    + Guarantee +

    +
    +
    +
    +
    +
    +
    + {/* Fun facts: End */} + + {/* FAQ: Start */} +
    +
    +
    + FAQ +
    +

    + Frequently asked + + questions + laptop charging + +

    +

    + Browse through these FAQs to find answers to commonly asked + questions. +

    +
    +
    +
    + faq boy with logos +
    +
    +
    +
    +
    +

    + +

    + +
    +
    + Lemon drops chocolate cake gummies carrot cake chupa + chups muffin topping. Sesame snaps icing marzipan gummi + bears macaroon dragée danish caramels powder. Bear claw + dragée pastry topping soufflé. Wafer gummi bears + marshmallow pastry pie. +
    +
    +
    +
    +

    + +

    +
    +
    + Dessert ice cream donut oat cake jelly-o pie sugar plum + cheesecake. Bear claw dragée oat cake dragée ice cream + halvah tootsie roll. Danish cake oat cake pie macaroon + tart donut gummies. Jelly beans candy canes carrot cake. + Fruitcake chocolate chupa chups. +
    +
    +
    +
    +

    + +

    +
    +
    + Regular license can be used for end products that do not + charge users for access or service(access is free and + there will be no monthly subscription fee). Single + regular license can be used for single end product and + end product can be used by you or your client. If you + want to sell end product to multiple clients then you + will need to purchase separate license for each client. + The same rule applies if you want to use the same end + product on multiple domains(unique setup). For more info + on regular license you can check official description. +
    +
    +
    +
    +

    + +

    +
    +
    + Lorem ipsum dolor sit amet consectetur adipisicing elit. + Nobis et aliquid quaerat possimus maxime! Mollitia + reprehenderit neque repellat deleniti delectus + architecto dolorum maxime, blanditiis earum ea, incidunt + quam possimus cumque. +
    +
    +
    +
    +

    + +

    +
    +
    + Lorem ipsum dolor sit amet consectetur, adipisicing + elit. Sequi molestias exercitationem ab cum nemo facere + voluptates veritatis quia, eveniet veniam at et + repudiandae mollitia ipsam quasi labore enim architecto + non! +
    +
    +
    +
    +
    +
    +
    +
    + {/* FAQ: End */} + + {/* CTA: Start */} +
    + cta image +
    +
    + Contact US +
    + +
    +
    +
    + {" "} +

    + + Let's work + laptop charging + + together +

    +

    + Any question or remark? just write us a message +

    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    +
    +

    Phone

    +
    + + +1234 568 963 + +
    +
    +
    +
    +
    +
    +
    +

    + Ready to Get Started? +

    +
    + Start your project with a 14-day free trial +
    + + Get Started + {" "} + + Request a Demo + +
    +
    +
    + hero elements +
    +
    +
    +
    + {/* CTA: End */} + + {/* Contact Us: Start */} +
    +
    +
    + Contact US +
    +

    + + Let's work + laptop charging + + together +

    +

    + Any question or remark? just write us a message +

    +
    +
    +
    + contact border + contact customer service +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    +
    +

    Phone

    +
    + + +1234 568 963 + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +

    Send a message

    +

    + If you would like to discuss anything related to payment, + account, licensing, +
    + partnerships, or have pre-sales questions, you’re at the + right place. +

    +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + {/* Contact Us: End */} +
    + + {/* / Sections:End */} + + {/* Footer: Start */} + + {/* Footer: End */} +
    + ); +}; +export default LandingPage; diff --git a/src/pages/TermsAndConditions/LegalInfoCard.jsx b/src/pages/TermsAndConditions/LegalInfoCard.jsx index baa5d3da..cd7c9e05 100644 --- a/src/pages/TermsAndConditions/LegalInfoCard.jsx +++ b/src/pages/TermsAndConditions/LegalInfoCard.jsx @@ -4,25 +4,10 @@ const LegalInfoPage = () => { return ( <>
    MARCO SECURE SOLUTIONS @@ -41,7 +26,7 @@ const LegalInfoPage = () => { overflowY: 'auto', flexGrow: 1, - marginBottom: '2rem', // Adds space below the card + marginBottom: '2rem', }} >

    Terms & Conditions

    diff --git a/src/pages/authentication/AuthWrapper.jsx b/src/pages/authentication/AuthWrapper.jsx index c065bac2..5c8f0eb9 100644 --- a/src/pages/authentication/AuthWrapper.jsx +++ b/src/pages/authentication/AuthWrapper.jsx @@ -4,17 +4,17 @@ import "./page-auth.css"; export const AuthWrapper = ({ children }) => { return (
    -
    + {/*
    -
    +
    */}
    -
    +
    - + marco-logo { /> -
    + {/*
    */} {children}
    -
    -
    + //
    + //
    ); -}; +}; \ No newline at end of file diff --git a/src/pages/authentication/ForgotPasswordPage.jsx b/src/pages/authentication/ForgotPasswordPage.jsx index 508b7a56..8a6fc608 100644 --- a/src/pages/authentication/ForgotPasswordPage.jsx +++ b/src/pages/authentication/ForgotPasswordPage.jsx @@ -1,89 +1,88 @@ import { useState } from "react"; -import {Link} from "react-router-dom"; +import { Link } from "react-router-dom"; import { AuthWrapper } from "./AuthWrapper" import "./page-auth.css"; import AuthRepository from "../../repositories/AuthRepository"; import showToast from "../../services/toastService"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; -import {z} from "zod"; +import { z } from "zod"; -const forgotPassSceham = z.object( { +const forgotPassSceham = z.object({ email: z.string().email(), -} ) +}) const ForgotPasswordPage = () => { - const[loding,setLoading] = useState(false) + const [loding, setLoading] = useState(false) - const {register, + const { register, handleSubmit, formState: { errors }, reset, - getValues } = useForm( { - resolver: zodResolver( forgotPassSceham ), - defaultValues: { - email:"" - } - }) + getValues } = useForm({ + resolver: zodResolver(forgotPassSceham), + defaultValues: { + email: "" + } + }) - const onSubmit = async (data) => - { - try - { + const onSubmit = async (data) => { + try { setLoading(true) - const response = await AuthRepository.forgotPassword(data) - if ( response.data && response.success ) - showToast( "verification email has been sent to your registered email address", "success" ) + const response = await AuthRepository.forgotPassword(data) + if (response.data && response.success) + showToast("verification email has been sent to your registered email address", "success") reset() - setLoading( false ) - } catch ( err ) - { + setLoading(false) + } catch (err) { reset() - if(err.response.status === 404){ - showToast( "verification email has been sent to your registered email address", "success" ) - }else{ - showToast("Something wrong","error") - } - + if (err.response.status === 404) { + showToast("verification email has been sent to your registered email address", "success") + } else { + showToast("Something wrong", "error") + } + setLoading(false) } } return ( - -

    Forgot Password? 🔒

    -

    - Enter your email and we'll send you instructions to reset your password -

    -
    -
    - - - {errors.email && ( -
    - {errors.email.message} -
    - )} -
    - -
    -
    +
    +
    +

    Forgot Password? 🔒

    +

    + Enter your email and we'll send you instructions to reset your password +

    + +
    +
    + + + {errors.email && ( +
    + {errors.email.message} +
    + )} +
    + +
    +
    { Back to login
    - + + {/* Footer Text */} + +
    +
    ); }; -export default ForgotPasswordPage; +export default ForgotPasswordPage; \ No newline at end of file diff --git a/src/pages/authentication/LoginPage.jsx b/src/pages/authentication/LoginPage.jsx index ce99c9cf..ab898b4c 100644 --- a/src/pages/authentication/LoginPage.jsx +++ b/src/pages/authentication/LoginPage.jsx @@ -1,70 +1,54 @@ import { useEffect, useState } from "react"; -import { Link } from "react-router-dom"; -import { AuthWrapper } from "./AuthWrapper"; -import { useNavigate } from "react-router-dom"; -import "./page-auth.css"; +import { Link, useNavigate } from "react-router-dom"; import AuthRepository from "../../repositories/AuthRepository"; import showToast from "../../services/toastService"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { z } from "zod"; +import { AuthWrapper } from "./AuthWrapper"; const LoginPage = () => { const navigate = useNavigate(); const [loading, setLoading] = useState(false); const [hidepass, setHidepass] = useState(true); const [IsLoginWithOTP, setLoginWithOtp] = useState(false); - const [IsTriedOTPThrough, setIsTriedOTPThrough] = useState(false); const now = Date.now(); const loginSchema = IsLoginWithOTP ? z.object({ - username: z.string() - .trim() - .email({ message: "Valid email required" }), - }) + username: z.string().email({ message: "Valid email required" }), + }) : z.object({ - username: z.string() - .trim() - .email({ message: "Valid email required" }), - password: z.string() - .trim() - .min(1, { message: "Password required" }), - rememberMe: z.boolean(), - }); + username: z.string().email({ message: "Valid email required" }), + password: z.string().min(1, { message: "Password required" }), + rememberMe: z.boolean(), + }); const { register, handleSubmit, formState: { errors }, - reset, - getValues, } = useForm({ resolver: zodResolver(loginSchema), }); const onSubmit = async (data) => { setLoading(true); - try { - const username = data.username.trim(); - const password = data.password?.trim(); - if (!IsLoginWithOTP) { const userCredential = { - username, - password, + username: data.username, + password: data.password, }; - const response = await AuthRepository.login(userCredential); localStorage.setItem("jwtToken", response.data.token); localStorage.setItem("refreshToken", response.data.refreshToken); setLoading(false); - navigate("/dashboard"); + navigate("/"); } else { - await AuthRepository.sendOTP({ email: username }); + await AuthRepository.sendOTP({ email: data.username }); showToast("OTP has been sent to your email.", "success"); - localStorage.setItem("otpUsername", username); + localStorage.setItem("otpUsername", data.username); localStorage.setItem("otpSentTime", now.toString()); navigate("/auth/login-otp"); } @@ -74,7 +58,6 @@ const LoginPage = () => { } }; - useEffect(() => { const otpSentTime = localStorage.getItem("otpSentTime"); if ( @@ -86,145 +69,149 @@ const LoginPage = () => { } }, [IsLoginWithOTP]); -// useEffect(() => { -// const token = localStorage.getItem("jwtToken"); -// if (token) { -// navigate("/dashboard"); -// } -// }, [navigate]); - return ( - -

    Welcome to PMS!

    -

    - {IsLoginWithOTP - ? "Enter your email to receive a one-time password (OTP)." - : "Please sign-in to your account and start the adventure."} -

    -
    -
    - - - {errors.username && ( -
    - {errors.username.message} -
    - )} -
    +
    +
    +

    Welcome to PMS!

    +

    + {IsLoginWithOTP + ? "Enter your email to receive a one-time password (OTP)." + : "Please sign in to your account and start the adventure"} +

    - {!IsLoginWithOTP && ( - <> -
    - -
    - - + + {/* Email */} +
    + + + {errors.username && ( +
    + {errors.username.message}
    - {errors.password && ( -
    - {errors.password.message} -
    - )} -
    + )} +
    - -
    -
    - - -
    - Forgot Password? -
    - - )} - -
    - - {!IsLoginWithOTP &&
    OR
    } + {/* Password */} {!IsLoginWithOTP && ( - - )} -
    - + <> +
    + +
    + + setHidepass(!hidepass)} + > + + +
    + {errors.password && ( +
    + {errors.password.message} +
    + )} +
    -

    - New on our platform? - {IsLoginWithOTP ? ( - setLoginWithOtp(false)} + {/* Remember Me + Forgot Password */} +

    + + )} + + {/* Submit */} + + + {/* Login With OTP Button */} + {!IsLoginWithOTP && ( + <> +
    +
    or
    +
    + + + )} + + + {/* Footer Text */} + {!IsLoginWithOTP ? ( +

    + New on our platform? + + Request a Demo + +

    ) : ( - - Request a Demo - +
    + +
    )} -

    - +
    +
    ); }; -export default LoginPage; +export default LoginPage; \ No newline at end of file diff --git a/src/pages/authentication/LoginWithOtp.jsx b/src/pages/authentication/LoginWithOtp.jsx index 2157b4e1..73882b4f 100644 --- a/src/pages/authentication/LoginWithOtp.jsx +++ b/src/pages/authentication/LoginWithOtp.jsx @@ -52,7 +52,7 @@ const LoginWithOtp = () => { setLoading(false); localStorage.removeItem("otpUsername"); localStorage.removeItem("otpSentTime"); - navigate("/dashboard"); + navigate("/"); } catch (err) { showToast("Invalid or expired OTP.", "error"); @@ -123,8 +123,9 @@ const LoginWithOtp = () => { return ( - -
    + // +
    +

    Verify Your OTP

    Please enter the 4-digit code sent to your email.

    @@ -209,8 +210,9 @@ const LoginWithOtp = () => { )} +
    -
    + // ); }; diff --git a/src/pages/authentication/MainForgetPage.jsx b/src/pages/authentication/MainForgetPage.jsx new file mode 100644 index 00000000..caae1016 --- /dev/null +++ b/src/pages/authentication/MainForgetPage.jsx @@ -0,0 +1,26 @@ +import React from "react"; +// import LoginPage from "./LoginPage"; +import ForgotPasswordPage from "./ForgotPasswordPage"; + +const MainForgetPage = () => { + return ( + <> +
    +
    +
    + Login image +
    +
    + +
    + + ); +}; +export default MainForgetPage; diff --git a/src/pages/authentication/MainLogin.jsx b/src/pages/authentication/MainLogin.jsx new file mode 100644 index 00000000..03575f40 --- /dev/null +++ b/src/pages/authentication/MainLogin.jsx @@ -0,0 +1,24 @@ +import React from "react"; +import LoginPage from "./LoginPage"; +const MainLogin = () => { + return ( + <> +
    +
    +
    + Login image +
    +
    + +
    + + ); +}; +export default MainLogin; diff --git a/src/pages/authentication/MainLoginWithOTPPage.jsx b/src/pages/authentication/MainLoginWithOTPPage.jsx new file mode 100644 index 00000000..53b9fec7 --- /dev/null +++ b/src/pages/authentication/MainLoginWithOTPPage.jsx @@ -0,0 +1,26 @@ +import React from 'react' +import LoginWithOtp from './LoginWithOtp' + +const MainLoginWithOTPPage = () => { + return ( + <> +
    +
    +
    + Login image +
    +
    + +
    + + ) +} + +export default MainLoginWithOTPPage \ No newline at end of file diff --git a/src/pages/authentication/MainRegisterPage.jsx b/src/pages/authentication/MainRegisterPage.jsx new file mode 100644 index 00000000..a2a1a5ca --- /dev/null +++ b/src/pages/authentication/MainRegisterPage.jsx @@ -0,0 +1,25 @@ +import React from "react"; +import RegisterPage from "./RegisterPage"; + +const MainRegisterPage = () => { + return ( + <> +
    +
    +
    + Login image +
    +
    + +
    + + ); +}; +export default MainRegisterPage; diff --git a/src/pages/authentication/MainResetPasswordPage.jsx b/src/pages/authentication/MainResetPasswordPage.jsx new file mode 100644 index 00000000..36fd71e6 --- /dev/null +++ b/src/pages/authentication/MainResetPasswordPage.jsx @@ -0,0 +1,26 @@ +import React from 'react' +import ResetPasswordPage from './ResetPassword' + +const MainResetPasswordPage = () => { + return ( + <> +
    +
    +
    + Login image +
    +
    + +
    + + ) +} + +export default MainResetPasswordPage \ No newline at end of file diff --git a/src/pages/authentication/RegisterPage.jsx b/src/pages/authentication/RegisterPage.jsx index 16517816..65b7d619 100644 --- a/src/pages/authentication/RegisterPage.jsx +++ b/src/pages/authentication/RegisterPage.jsx @@ -37,28 +37,33 @@ const registerSchema = z.object({ const RegisterPage = () => { const [registered, setRegristered] = useState(false); const [industries, setIndustries] = useState([]); + const [Loading,setLoading] = useState(false) const { register, handleSubmit, - formState: { errors }, + formState: { errors },reset } = useForm({ resolver: zodResolver(registerSchema), }); const onSubmit = async (data) => { try { + setLoading(true) const response = await MarketRepository.requestDemo(data); - showToast("Your Registration SuccessFully !"); + showToast("Your request has been sent successfully. Please stay in touch!"); setRegristered(true); + setLoading(false) + reset() } catch (error) { showToast(error.message, "error"); + setLoading(false) } }; useEffect(() => { fetchIndustries(); }, []); - useEffect(() => {}, [industries]); + useEffect(() => { }, [industries]); const fetchIndustries = async () => { try { @@ -71,23 +76,27 @@ const RegisterPage = () => { }; return ( <> - {!registered && ( - -

    Adventure starts here 🚀

    + +
    +
    + +

    Adventure starts here

    Make your app management easy and fun!

    -
    + +
    +
    {
    )}
    -
    +
    {
    )}
    -
    +
    +
    -
    -
    {errors.contactPerson && (
    {
    )}
    -
    +
    -
    -
    {errors.contactNumber && (
    {
    )}
    -
    +
    -
    -
    {errors.about && (
    {
    )}
    -
    +
    -
    -
    {errors.oragnizationSize && (
    {
    )}
    -
    +
    -
    -
    {errors.industryId && (
    {
    )}
    -
    +
    { {...register("terms")} /> +
    {errors.terms && (
    { )}

    - Already have an account? + Already have an account? - + Back to login

    - - )} - {registered && ( - -
    Thank you for contacting us
    -

    We will get back to you soon

    - - - Back to login - -
    - )} +
    +
    ); }; -export default RegisterPage; +export default RegisterPage; \ No newline at end of file diff --git a/src/pages/authentication/ResetPasswordPage.jsx b/src/pages/authentication/ResetPassword.jsx similarity index 94% rename from src/pages/authentication/ResetPasswordPage.jsx rename to src/pages/authentication/ResetPassword.jsx index 21b03df0..9c7ab0d2 100644 --- a/src/pages/authentication/ResetPasswordPage.jsx +++ b/src/pages/authentication/ResetPassword.jsx @@ -33,7 +33,7 @@ const resetPasswordSchema = z path: ["confirmPassword"], }); -const ResetPasswordPage = () => { +const ResetPassword = () => { const [searchParams] = useSearchParams(); const [loading, setLoading] = useState(false); const [hidepass, setHidepass] = useState(true); @@ -67,7 +67,6 @@ const ResetPasswordPage = () => { navigate("/auth/login", { replace: true }); // setLoading(false); } catch (error) { - debugger; setLoading(false); if (error?.response?.status === 400) { showToast("Please check valid Credentials", "error"); @@ -94,7 +93,8 @@ const ResetPasswordPage = () => { ); } return ( - +
    +

    Reset Password? 🔒

    Enter your email and new password to update.

    { className="mb-3" onSubmit={handleSubmit(onSubmitResetPassword)} > -
    +
    @@ -124,9 +124,9 @@ const ResetPasswordPage = () => { )}
    -
    +
    -
    @@ -238,8 +238,9 @@ const ResetPasswordPage = () => { Back to login
    - +
    +
    ); }; -export default ResetPasswordPage; +export default ResetPassword; diff --git a/src/pages/authentication/page-auth.css b/src/pages/authentication/page-auth.css index 86ceb214..8492495b 100644 --- a/src/pages/authentication/page-auth.css +++ b/src/pages/authentication/page-auth.css @@ -18,6 +18,7 @@ } .authentication-wrapper.authentication-cover .authentication-inner { height: 100vh; + background-color: #fff; } .authentication-wrapper.authentication-basic .authentication-inner { max-width: 400px; diff --git a/src/pages/employee/EmployeeList.jsx b/src/pages/employee/EmployeeList.jsx index c7f3abd9..002c205d 100644 --- a/src/pages/employee/EmployeeList.jsx +++ b/src/pages/employee/EmployeeList.jsx @@ -18,7 +18,7 @@ import { VIEW_ALL_EMPLOYEES, VIEW_TEAM_MEMBERS, } from "../../utils/constants"; -import { clearCacheKey, useSelectedProject } from "../../slices/apiDataManager"; +import { clearCacheKey, useSelectedproject } from "../../slices/apiDataManager"; import { useHasUserPermission } from "../../hooks/useHasUserPermission"; import SuspendEmp from "../../components/Employee/SuspendEmp"; // Keep if you use SuspendEmp import { @@ -41,7 +41,7 @@ const EmployeeList = () => { // const selectedProjectId = useSelector( // (store) => store.localVariables.projectId // ); - const selectedProjectId = useSelectedProject(); + const selectedProjectId = useSelectedproject(); const { projectNames, loading: projectLoading, fetchData } = useProjectName(); const dispatch = useDispatch(); @@ -177,12 +177,10 @@ const EmployeeList = () => { useEffect(() => { if (!loading && Array.isArray(employees)) { const sorted = [...employees].sort((a, b) => { - const nameA = `${a.firstName || ""}${a.middleName || ""}${ - a.lastName || "" - }`.toLowerCase(); - const nameB = `${b.firstName || ""}${b.middleName || ""}${ - b.lastName || "" - }`.toLowerCase(); + const nameA = `${a.firstName || ""}${a.middleName || ""}${a.lastName || "" + }`.toLowerCase(); + const nameB = `${b.firstName || ""}${b.middleName || ""}${b.lastName || "" + }`.toLowerCase(); return nameA?.localeCompare(nameB); }); @@ -261,26 +259,37 @@ const EmployeeList = () => { )} {IsDeleteModalOpen && ( - - suspendEmployee({ - employeeId: selectedEmpFordelete.id, - active: !selectedEmpFordelete.isActive, - }) - } - onClose={() => setIsDeleteModalOpen(false)} - loading={employeeLodaing} - /> +
    + + suspendEmployee({ + employeeId: selectedEmpFordelete.id, + active: !selectedEmpFordelete.isActive, + }) + } + onClose={() => setIsDeleteModalOpen(false)} + loading={employeeLodaing} + /> +
    )}
    @@ -414,11 +423,14 @@ const EmployeeList = () => { {/* Add Employee Button */} {Manage_Employee && ( )}
    @@ -559,7 +571,9 @@ const EmployeeList = () => { diff --git a/src/router/AppRoutes.jsx b/src/router/AppRoutes.jsx index ac51c80a..feb9e05f 100644 --- a/src/router/AppRoutes.jsx +++ b/src/router/AppRoutes.jsx @@ -1,4 +1,3 @@ -// AppRoutes.jsx import React from "react"; import { createBrowserRouter, RouterProvider, Outlet } from "react-router-dom"; @@ -10,7 +9,6 @@ import HomeLayout from "../layouts/HomeLayout"; import LoginPage from "../pages/authentication/LoginPage"; import RegisterPage from "../pages/authentication/RegisterPage"; import ForgotPasswordPage from "../pages/authentication/ForgotPasswordPage"; -import ResetPasswordPage from "../pages/authentication/ResetPasswordPage"; import ChangePasswordPage from "../pages/authentication/ChangePassword"; // Home & Protected Pages @@ -38,24 +36,25 @@ import LegalInfoCard from "../pages/TermsAndConditions/LegalInfoCard"; import ProtectedRoute from "./ProtectedRoute"; import Directory from "../pages/Directory/Directory"; import LoginWithOtp from "../pages/authentication/LoginWithOtp"; -import TenantPage from "../pages/Tenant/TenantPage"; -import CreateTenant from "../pages/Tenant/CreateTenant"; import ExpensePage from "../pages/Expense/ExpensePage"; -import TenantDetails from "../pages/Tenant/TenantDetails"; -import SelfTenantDetails from "../pages/Tenant/SelfTenantDetails"; -import SuperTenantDetails from "../pages/Tenant/SuperTenantDetails"; -import DocumentPage from "../pages/Documents/DocumentPage"; +import LandingPage from "../pages/Home/LandingPage"; +import MainLogin from "../pages/authentication/MainLogin"; +import MainLoginWithOTPPage from "../pages/authentication/MainLoginWithOTPPage"; +import MainRegisterPage from "../pages/authentication/MainRegisterPage"; +import MainForgetPage from "../pages/authentication/MainForgetPage"; +import MainResetPasswordPage from "../pages/authentication/MainResetPasswordPage"; const router = createBrowserRouter( [ + // { path: "/", element: }, { element: , children: [ - { path: "/auth/login", element: }, - { path: "/auth/login-otp", element: }, - { path: "/market/enquire", element: }, - { path: "/auth/forgot-password", element: }, - { path: "/reset-password", element: }, + { path: "/auth/login", element: }, + { path: "/auth/login-otp", element: }, + { path: "/auth/reqest/demo", element: }, + { path: "/auth/forgot-password", element: }, + { path: "/reset-password", element: }, { path: "/legal-info", element: }, { path: "/auth/changepassword", element: }, ], @@ -68,9 +67,7 @@ const router = createBrowserRouter( element: , children: [ { path: "/", element: }, - { path: "/dashboard", element: }, { path: "/projects", element: }, - { path: "/document", element: }, { path: "/projects/details", element: }, { path: "/project/manage/:projectId", element: }, { path: "/employees", element: }, @@ -86,10 +83,6 @@ const router = createBrowserRouter( { path: "/gallary", element: }, { path: "/expenses", element: }, { path: "/masters", element: }, - { path: "/tenants", element: }, - { path: "/tenants/new-tenant", element: }, - { path: "/tenant/:tenantId", element: }, - { path: "/tenant/self", element: }, { path: "/help/support", element: }, { path: "/help/docs", element: }, { path: "/help/connect", element: },