diff --git a/public/css/site.css b/public/css/site.css index 59d94b6..afba797 100644 --- a/public/css/site.css +++ b/public/css/site.css @@ -507,7 +507,7 @@ body:not(.rtl) .elementor-element.elementor-element-13a7637 { } .elementor-element.elementor-element-7da6646:not(.elementor-motion-effects-element-type-background) { - background-image: url("/images/home4-banner-4.jpg"); + background-image: url("/images/bg-header-women.webp"); background-position: center center; background-repeat: no-repeat; background-size: cover; @@ -8650,7 +8650,7 @@ h1:where(.wp-block-heading).has-background, } .elementor .elementor-element.elementor-element-6c7cbcb .elementor-repeater-item-3264830 { - background-image: url("/images/home2-slide-1.jpg"); + background-image: url("/images/home2-slide-1.webp"); background-position: center; background-repeat: no-repeat; background-size: cover; @@ -8710,7 +8710,7 @@ h1:where(.wp-block-heading).has-background, } .elementor .elementor-element.elementor-element-6c7cbcb .elementor-repeater-item-6867061 { - background-image: url("/images/home2-slide-2.jpg"); + background-image: url("/images/home2-slide-2.webp"); background-position: center; background-repeat: no-repeat; background-size: cover; @@ -8833,7 +8833,7 @@ h1:where(.wp-block-heading).has-background, } .elementor .elementor-element.elementor-element-ca6bc63:not(.elementor-motion-effects-element-type-background) { - background-image: linear-gradient(to right, #00000080, #00000010), url("/images/home2-banner-1.jpg"); + background-image: linear-gradient(to right, #00000080, #00000010), url("/images/home2-banner-1.webp"); background-position: center center; background-repeat: no-repeat; background-size: cover; @@ -8952,7 +8952,7 @@ h1:where(.wp-block-heading).has-background, } .elementor .elementor-element.elementor-element-f003242:not(.elementor-motion-effects-element-type-background) { - background-image: url("/images/home2-banner-3.jpg"); + background-image: url("/images/home2-banner-3.webp"); background-position: center center; background-repeat: no-repeat; background-size: cover; @@ -10216,7 +10216,7 @@ h1:where(.wp-block-heading).has-background, } #side-panel-2f31137:before { - background-image: url("/images/bg-slide-sidebar.jpg"); + background-image: url("/images/bg-slide-sidebar.webp"); background-position: center center; background-repeat: no-repeat; background-size: cover; @@ -11406,7 +11406,7 @@ h1:where(.wp-block-heading).has-background, } .elementor-61 .elementor-element.elementor-element-6c7cbcb .elementor-repeater-item-3264830 { - background-image: url("/images/home2-slide-1.jpg"); + background-image: url("/images/home2-slide-1.webp"); background-position: bottom center; background-repeat: no-repeat; background-size: cover; @@ -11458,7 +11458,7 @@ h1:where(.wp-block-heading).has-background, } .elementor-61 .elementor-element.elementor-element-6c7cbcb .elementor-repeater-item-6867061 { - background-image: url("/images/home2-slide-2.jpg"); + background-image: url("/images/home2-slide-2.webp"); background-position: bottom center; background-repeat: no-repeat; background-size: cover; @@ -11569,7 +11569,7 @@ h1:where(.wp-block-heading).has-background, } .elementor-61 .elementor-element.elementor-element-ca6bc63:not(.elementor-motion-effects-element-type-background) { - background-image: url("/images/home2-banner-1.jpg"); + background-image: url("/images/home2-banner-1.webp"); background-position: center center; background-repeat: no-repeat; background-size: cover; @@ -11684,7 +11684,7 @@ h1:where(.wp-block-heading).has-background, } .elementor-61 .elementor-element.elementor-element-f003242:not(.elementor-motion-effects-element-type-background) { - background-image: url("/images/home2-banner-3.jpg"); + background-image: url("/images/home2-banner-3.webp"); background-position: center center; background-repeat: no-repeat; background-size: cover; @@ -14856,7 +14856,7 @@ img:is([sizes=auto i]) { } .elementor-element.elementor-element-7da6646:not(.elementor-motion-effects-element-type-background) { - background-image: url("/images/bg-header-5.png"); + background-image: url("/images/bg-header-5.webp"); background-position: center center; background-repeat: no-repeat; background-size: cover; @@ -18143,13 +18143,13 @@ img:is([sizes=auto i]){contain-intrinsic-size:3000px 1500px} /* STYLE BLOCK 50 */ .howits-hero-custom-bg.elementor-repeater-item-3264830, .howits-hero-custom-bg.elementor-repeater-item-6867061 { - background-image: linear-gradient(rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0.1)), url('/images/home1-slide-1.png') !important; + background-image: linear-gradient(rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0.1)), url('/images/home1-slide-1.webp') !important; background-position: center !important; background-repeat: no-repeat !important; background-size: cover !important; } .howits-hero-custom-bg.elementor-repeater-item-6867061 { - background-image: linear-gradient(rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0.1)), url('/images/home1-slide-2.png') !important; + background-image: linear-gradient(rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0.1)), url('/images/home1-slide-2.webp') !important; background-position: center !important; background-repeat: no-repeat !important; background-size: cover !important; diff --git a/public/images/Aravinth.webp b/public/images/Aravinth.webp new file mode 100644 index 0000000..c9e1713 Binary files /dev/null and b/public/images/Aravinth.webp differ diff --git a/public/images/Fazul.webp b/public/images/Fazul.webp new file mode 100644 index 0000000..0a0783b Binary files /dev/null and b/public/images/Fazul.webp differ diff --git a/public/images/Investor.webp b/public/images/Investor.webp new file mode 100644 index 0000000..0ad1fc8 Binary files /dev/null and b/public/images/Investor.webp differ diff --git a/public/images/Parthi.webp b/public/images/Parthi.webp new file mode 100644 index 0000000..bd5d646 Binary files /dev/null and b/public/images/Parthi.webp differ diff --git a/public/images/Suriya.webp b/public/images/Suriya.webp new file mode 100644 index 0000000..ad85b71 Binary files /dev/null and b/public/images/Suriya.webp differ diff --git a/public/images/about-bg.webp b/public/images/about-bg.webp new file mode 100644 index 0000000..951ce06 Binary files /dev/null and b/public/images/about-bg.webp differ diff --git a/public/images/b5b560fe-aab0-4fe6-9f8c-4b187c2f0e99.webp b/public/images/b5b560fe-aab0-4fe6-9f8c-4b187c2f0e99.webp new file mode 100644 index 0000000..15a6a0d Binary files /dev/null and b/public/images/b5b560fe-aab0-4fe6-9f8c-4b187c2f0e99.webp differ diff --git a/public/images/bg-header-5.webp b/public/images/bg-header-5.webp new file mode 100644 index 0000000..f26f55d Binary files /dev/null and b/public/images/bg-header-5.webp differ diff --git a/public/images/bg-header-women.webp b/public/images/bg-header-women.webp new file mode 100644 index 0000000..d7cbd4f Binary files /dev/null and b/public/images/bg-header-women.webp differ diff --git a/public/images/bg-map-women.webp b/public/images/bg-map-women.webp new file mode 100644 index 0000000..e60434c Binary files /dev/null and b/public/images/bg-map-women.webp differ diff --git a/public/images/bg-slide-sidebar.webp b/public/images/bg-slide-sidebar.webp new file mode 100644 index 0000000..8e4bb32 Binary files /dev/null and b/public/images/bg-slide-sidebar.webp differ diff --git a/public/images/blog-post-pic-14.webp b/public/images/blog-post-pic-14.webp new file mode 100644 index 0000000..8e68a2e Binary files /dev/null and b/public/images/blog-post-pic-14.webp differ diff --git a/public/images/blog-post-pic-15.webp b/public/images/blog-post-pic-15.webp new file mode 100644 index 0000000..cb9da29 Binary files /dev/null and b/public/images/blog-post-pic-15.webp differ diff --git a/public/images/blog-post-pic-17.webp b/public/images/blog-post-pic-17.webp new file mode 100644 index 0000000..6980458 Binary files /dev/null and b/public/images/blog-post-pic-17.webp differ diff --git a/public/images/blog-post-pic-3.webp b/public/images/blog-post-pic-3.webp new file mode 100644 index 0000000..df5df4e Binary files /dev/null and b/public/images/blog-post-pic-3.webp differ diff --git a/public/images/blog-post-pic-31.webp b/public/images/blog-post-pic-31.webp new file mode 100644 index 0000000..d3416ff Binary files /dev/null and b/public/images/blog-post-pic-31.webp differ diff --git a/public/images/blog-post-pic-6.webp b/public/images/blog-post-pic-6.webp new file mode 100644 index 0000000..2fb1344 Binary files /dev/null and b/public/images/blog-post-pic-6.webp differ diff --git a/public/images/blog-post-pic-8.webp b/public/images/blog-post-pic-8.webp new file mode 100644 index 0000000..d8fc17a Binary files /dev/null and b/public/images/blog-post-pic-8.webp differ diff --git a/public/images/ev-paradox.webp b/public/images/ev-paradox.webp new file mode 100644 index 0000000..29e23f7 Binary files /dev/null and b/public/images/ev-paradox.webp differ diff --git a/public/images/ev.webp b/public/images/ev.webp new file mode 100644 index 0000000..312a5ce Binary files /dev/null and b/public/images/ev.webp differ diff --git a/public/images/first-mile-approach.webp b/public/images/first-mile-approach.webp new file mode 100644 index 0000000..80ecd63 Binary files /dev/null and b/public/images/first-mile-approach.webp differ diff --git a/public/images/home-bg-1.webp b/public/images/home-bg-1.webp new file mode 100644 index 0000000..e9c26d5 Binary files /dev/null and b/public/images/home-bg-1.webp differ diff --git a/public/images/home1-slide-1.webp b/public/images/home1-slide-1.webp new file mode 100644 index 0000000..876c68b Binary files /dev/null and b/public/images/home1-slide-1.webp differ diff --git a/public/images/home1-slide-2.webp b/public/images/home1-slide-2.webp new file mode 100644 index 0000000..4bf62c6 Binary files /dev/null and b/public/images/home1-slide-2.webp differ diff --git a/public/images/home2-banner-1.webp b/public/images/home2-banner-1.webp new file mode 100644 index 0000000..2550795 Binary files /dev/null and b/public/images/home2-banner-1.webp differ diff --git a/public/images/home2-banner-3.webp b/public/images/home2-banner-3.webp new file mode 100644 index 0000000..b4cdb7e Binary files /dev/null and b/public/images/home2-banner-3.webp differ diff --git a/public/images/home2-pic-3.webp b/public/images/home2-pic-3.webp new file mode 100644 index 0000000..e5cf320 Binary files /dev/null and b/public/images/home2-pic-3.webp differ diff --git a/public/images/home2-slide-1.webp b/public/images/home2-slide-1.webp new file mode 100644 index 0000000..9b36155 Binary files /dev/null and b/public/images/home2-slide-1.webp differ diff --git a/public/images/home2-slide-2.webp b/public/images/home2-slide-2.webp new file mode 100644 index 0000000..dc2114f Binary files /dev/null and b/public/images/home2-slide-2.webp differ diff --git a/public/images/last-mile-approach.webp b/public/images/last-mile-approach.webp new file mode 100644 index 0000000..c7b745d Binary files /dev/null and b/public/images/last-mile-approach.webp differ diff --git a/public/images/mid-mile-approach.webp b/public/images/mid-mile-approach.webp new file mode 100644 index 0000000..212783e Binary files /dev/null and b/public/images/mid-mile-approach.webp differ diff --git a/public/images/mile-1.webp b/public/images/mile-1.webp new file mode 100644 index 0000000..29fe93c Binary files /dev/null and b/public/images/mile-1.webp differ diff --git a/public/images/miletruth-bg.webp b/public/images/miletruth-bg.webp new file mode 100644 index 0000000..fd3f7ce Binary files /dev/null and b/public/images/miletruth-bg.webp differ diff --git a/public/images/premium-ev-van.webp b/public/images/premium-ev-van.webp new file mode 100644 index 0000000..cf4ae79 Binary files /dev/null and b/public/images/premium-ev-van.webp differ diff --git a/public/images/tab-pic-1-solution.webp b/public/images/tab-pic-1-solution.webp new file mode 100644 index 0000000..28e54f5 Binary files /dev/null and b/public/images/tab-pic-1-solution.webp differ diff --git a/public/images/tab-pic-1.webp b/public/images/tab-pic-1.webp new file mode 100644 index 0000000..cf44d3f Binary files /dev/null and b/public/images/tab-pic-1.webp differ diff --git a/public/images/tab-pic-2-solution.webp b/public/images/tab-pic-2-solution.webp new file mode 100644 index 0000000..1de99f7 Binary files /dev/null and b/public/images/tab-pic-2-solution.webp differ diff --git a/public/images/tab-pic-2.webp b/public/images/tab-pic-2.webp new file mode 100644 index 0000000..d6d7c95 Binary files /dev/null and b/public/images/tab-pic-2.webp differ diff --git a/public/images/tab-pic-3-solution.webp b/public/images/tab-pic-3-solution.webp new file mode 100644 index 0000000..e3a8898 Binary files /dev/null and b/public/images/tab-pic-3-solution.webp differ diff --git a/public/images/tab-pic-3.webp b/public/images/tab-pic-3.webp new file mode 100644 index 0000000..1da7457 Binary files /dev/null and b/public/images/tab-pic-3.webp differ diff --git a/public/videos/workflow-2-routing.mp4 b/public/videos/workflow-2-routing.mp4 new file mode 100644 index 0000000..96939fa Binary files /dev/null and b/public/videos/workflow-2-routing.mp4 differ diff --git a/src/app/about-us/page.tsx b/src/app/about-us/page.tsx index 50f082a..aba89dc 100644 --- a/src/app/about-us/page.tsx +++ b/src/app/about-us/page.tsx @@ -15,7 +15,7 @@ export const metadata = { export default function AboutUsPage() { return ( -
+
diff --git a/src/app/blog/page.tsx b/src/app/blog/page.tsx index 8e56f3c..54c329d 100644 --- a/src/app/blog/page.tsx +++ b/src/app/blog/page.tsx @@ -9,7 +9,7 @@ export const metadata = { export default function BlogPage() { return ( -
+
diff --git a/src/app/how-it-works/page.tsx b/src/app/how-it-works/page.tsx index b159c78..39c479d 100644 --- a/src/app/how-it-works/page.tsx +++ b/src/app/how-it-works/page.tsx @@ -9,7 +9,7 @@ export const metadata = { export default function HowItWorksPage() { return ( -
+
diff --git a/src/app/layout.tsx b/src/app/layout.tsx index bab2fd0..cb4b768 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -78,12 +78,6 @@ export default function RootLayout({ purgecss.config.cjs. ~2.86 MB of vendor CSS -> ~560 KB, one request. */} - - - - - - {/* Production DOM (index.php + header.php): diff --git a/src/app/miletruth/page.tsx b/src/app/miletruth/page.tsx index 1792800..8a94372 100644 --- a/src/app/miletruth/page.tsx +++ b/src/app/miletruth/page.tsx @@ -11,7 +11,7 @@ export const metadata = { export default function MileTruthPage() { return ( -
+
diff --git a/src/app/page.tsx b/src/app/page.tsx index 7ff57ef..31f4e22 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -17,7 +17,7 @@ export const metadata: Metadata = { export default function Home() { return ( -
+
diff --git a/src/app/solutions/page.tsx b/src/app/solutions/page.tsx index 69b624e..e6ca5ee 100644 --- a/src/app/solutions/page.tsx +++ b/src/app/solutions/page.tsx @@ -50,7 +50,7 @@ export default function SolutionsPage() { } `}} /> -
+
diff --git a/src/components/layout/Header.tsx b/src/components/layout/Header.tsx index aff2ccb..18862c5 100644 --- a/src/components/layout/Header.tsx +++ b/src/components/layout/Header.tsx @@ -7,7 +7,7 @@ * Menu open/close + sidebar state is read from HeaderUIProvider so BodyOverlay (sibling at body level) can react. */ -import { useEffect, useState } from "react"; +import { MouseEvent, useEffect, useState } from "react"; import Link from "next/link"; import Image from "next/image"; import { usePathname } from "next/navigation"; @@ -44,6 +44,34 @@ export default function Header() { const dmHeaderActive = (key: string) => (CURRENT_PAGE_ALIASES[key] ?? []).includes(currentPage) ? " active" : ""; + const scrollToNavTarget = (targetId: string) => { + const target = document.getElementById(targetId); + if (target) { + target.scrollIntoView({ behavior: "smooth", block: "start" }); + return; + } + + window.scrollTo({ top: 0, behavior: "smooth" }); + }; + + const handleNavClick = ( + event: MouseEvent, + targetPath: string, + targetId: string, + shouldCloseMenu = false, + ) => { + if (shouldCloseMenu) closeAll(); + + if (pathname !== targetPath) return; + + event.preventDefault(); + const targetUrl = `${targetPath}#${targetId}`; + if (`${window.location.pathname}${window.location.hash}` !== targetUrl) { + window.history.pushState(null, "", targetUrl); + } + requestAnimationFrame(() => scrollToNavTarget(targetId)); + }; + // Mirror of header.php