diff --git a/next.config.ts b/next.config.ts
index e708fa1..c23ed1f 100644
--- a/next.config.ts
+++ b/next.config.ts
@@ -2,6 +2,15 @@ import type { NextConfig } from "next";
import path from "path";
const nextConfig: NextConfig = {
+ async redirects() {
+ return [
+ {
+ source: "/air-freight",
+ destination: "/doormile-wings",
+ permanent: true,
+ },
+ ];
+ },
turbopack: {
root: path.resolve(__dirname),
},
diff --git a/src/app/air-freight/page.tsx b/src/app/air-freight/page.tsx
index c10fff9..420fe24 100644
--- a/src/app/air-freight/page.tsx
+++ b/src/app/air-freight/page.tsx
@@ -1,62 +1,15 @@
-import AirFreightHero from "@/components/sections/AirFreightHero";
-import AirFreightServices from "@/components/sections/AirFreightServices";
-import AirFreightAdvantages from "@/components/sections/AirFreightAdvantages";
-import AirFreightCoverage from "@/components/sections/AirFreightCoverage";
-import AirFreightWorkflow from "@/components/sections/AirFreightWorkflow";
-import AirFreightFleet from "@/components/sections/AirFreightFleet";
-import AirFreightBenefits from "@/components/sections/AirFreightBenefits";
-import AirFreightBanner from "@/components/sections/AirFreightBanner";
-import AirFreightFAQ from "@/components/sections/AirFreightFAQ";
-import AirFreightCTA from "@/components/sections/AirFreightCTA";
+import { permanentRedirect } from "next/navigation";
export const metadata = {
- title: "Air Freight – Doormile",
- description: "Doormile Air Freight delivers precision cargo solutions — express air cargo, charter freight, cold chain, and customs clearance — across domestic and international trade lanes.",
alternates: {
- canonical: "https://doormile.com/air-freight",
+ canonical: "https://doormile.com/doormile-wings",
},
- openGraph: {
- title: "Air Freight – Doormile",
- description: "Precision air cargo solutions across India and 60+ countries. Guaranteed transit times, real-time tracking, and full customs management from a single partner.",
- url: "https://doormile.com/air-freight",
- siteName: "Doormile",
- type: "website",
- images: [
- {
- url: "https://doormile.com/images/air-freight-slide-1.jpg",
- width: 1200,
- height: 630,
- alt: "Doormile Air Freight – precision cargo solutions",
- },
- ],
- },
- twitter: {
- card: "summary_large_image",
- title: "Air Freight – Doormile",
- description: "Precision air cargo solutions across India and 60+ countries. Guaranteed transit times, real-time tracking, full customs management.",
- images: ["https://doormile.com/images/air-freight-slide-1.jpg"],
+ robots: {
+ index: false,
+ follow: true,
},
};
-export default function AirFreightPage() {
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
+export default function AirFreightRedirectPage() {
+ permanentRedirect("/doormile-wings");
}
diff --git a/src/app/doormile-wings/page.tsx b/src/app/doormile-wings/page.tsx
new file mode 100644
index 0000000..aecbfcd
--- /dev/null
+++ b/src/app/doormile-wings/page.tsx
@@ -0,0 +1,62 @@
+import AirFreightHero from "@/components/sections/AirFreightHero";
+import AirFreightServices from "@/components/sections/AirFreightServices";
+import AirFreightAdvantages from "@/components/sections/AirFreightAdvantages";
+import AirFreightCoverage from "@/components/sections/AirFreightCoverage";
+import AirFreightWorkflow from "@/components/sections/AirFreightWorkflow";
+import AirFreightFleet from "@/components/sections/AirFreightFleet";
+import AirFreightBenefits from "@/components/sections/AirFreightBenefits";
+import AirFreightBanner from "@/components/sections/AirFreightBanner";
+import AirFreightFAQ from "@/components/sections/AirFreightFAQ";
+import AirFreightCTA from "@/components/sections/AirFreightCTA";
+
+export const metadata = {
+ title: "Doormile Wings – Doormile",
+ description: "Doormile Wings delivers precision cargo solutions — express air cargo, charter capacity, cold chain, and customs clearance — across domestic and international trade lanes.",
+ alternates: {
+ canonical: "https://doormile.com/doormile-wings",
+ },
+ openGraph: {
+ title: "Doormile Wings – Doormile",
+ description: "Precision air cargo solutions across India and 60+ countries. Guaranteed transit times, real-time tracking, and full customs management from a single partner.",
+ url: "https://doormile.com/doormile-wings",
+ siteName: "Doormile",
+ type: "website",
+ images: [
+ {
+ url: "https://doormile.com/images/air-freight-slide-1.jpg",
+ width: 1200,
+ height: 630,
+ alt: "Doormile Wings precision cargo solutions",
+ },
+ ],
+ },
+ twitter: {
+ card: "summary_large_image",
+ title: "Doormile Wings – Doormile",
+ description: "Precision air cargo solutions across India and 60+ countries. Guaranteed transit times, real-time tracking, full customs management.",
+ images: ["https://doormile.com/images/air-freight-slide-1.jpg"],
+ },
+};
+
+export default function AirFreightPage() {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/src/app/express/page.tsx b/src/app/express/page.tsx
new file mode 100644
index 0000000..2149cb5
--- /dev/null
+++ b/src/app/express/page.tsx
@@ -0,0 +1,133 @@
+import type { Metadata } from "next";
+import Link from "next/link";
+
+export const metadata: Metadata = {
+ title: "Express – Doormile",
+ description: "Doormile Express — a fast-lane logistics service for time-critical shipments. Coming soon.",
+ alternates: {
+ canonical: "https://doormile.com/express",
+ },
+ robots: {
+ index: false,
+ follow: true,
+ },
+};
+
+export default function ExpressPage() {
+ return (
+
+
+
+
+
+ Solutions / Express
+
+ Doormile Express is on its way
+
+
+ We're building a fast-lane logistics service for time-critical shipments.
+ Check back soon, or explore what Doormile already delivers today.
+
+
+
+ Explore Doormile Wings
+
+
+ Get notified when we launch →
+
+
+
+
+
+
+
+ {/* Self-contained placeholder styling, scoped to .express-coming-soon.
+ Re-declares --logico-dark-text-color/--logico-light-text-color/
+ --logico-accent-color locally: the sitewide :root fallback is the
+ light-theme value (dark text on white), which would render near-
+ black text on this dark section without the override. */}
+
+
+ );
+}
diff --git a/src/app/globals.css b/src/app/globals.css
index e2633c3..fdd23f6 100644
--- a/src/app/globals.css
+++ b/src/app/globals.css
@@ -980,9 +980,9 @@ body {
width: 100%;
}
-/* Air Freight hero frame: the generic vendor CSS assigns 32px padding to
+/* Doormile Wings hero frame: the generic vendor CSS assigns 32px padding to
.elementor-element-741f56c on all pages; Home's frame is 20px (scoped
- to .elementor-61). Scope the same 20px frame to the Air Freight hero so
+ to .elementor-61). Scope the same 20px frame to the Doormile Wings hero so
the card alignment matches Home and Solutions exactly. */
@media (min-width: 1025px) {
.af-hero-page.elementor-element-741f56c {
diff --git a/src/app/sitemap.ts b/src/app/sitemap.ts
index f19a841..8261278 100644
--- a/src/app/sitemap.ts
+++ b/src/app/sitemap.ts
@@ -33,7 +33,7 @@ export default function sitemap(): MetadataRoute.Sitemap {
priority: 0.8,
},
{
- url: `${BASE_URL}/air-freight`,
+ url: `${BASE_URL}/doormile-wings`,
lastModified: now,
changeFrequency: "monthly",
priority: 0.8,
diff --git a/src/components/layout/Footer.tsx b/src/components/layout/Footer.tsx
index 5f28f15..be2167a 100644
--- a/src/components/layout/Footer.tsx
+++ b/src/components/layout/Footer.tsx
@@ -459,7 +459,7 @@ export default function Footer() {
- Doormile Wings
+ Doormile Wings
About Us
diff --git a/src/components/layout/Header.tsx b/src/components/layout/Header.tsx
index 5129252..b68994f 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 { MouseEvent, useEffect, useState } from "react";
+import { KeyboardEvent, FocusEvent, MouseEvent, useEffect, useState } from "react";
import Link from "next/link";
import Image from "next/image";
import { usePathname } from "next/navigation";
@@ -19,7 +19,8 @@ const CURRENT_PAGE_MAP: Record = {
"/how-it-works": "how-it-works",
"/miletruth": "miletruth",
"/solutions": "solutions",
- "/air-freight": "air-freight",
+ "/doormile-wings": "doormile-wings",
+ "/express": "express",
"/about-us": "about",
"/blog": "blogs",
};
@@ -29,8 +30,9 @@ const CURRENT_PAGE_ALIASES: Record = {
home: ["home"],
"how-it-works": ["how-it-works", "how-its-works"],
miletruth: ["miletruth"],
- solutions: ["solutions"],
- "air-freight": ["air-freight"],
+ // Solutions is a normal nav page and also owns the Wings/Express dropdown.
+ solutions: ["solutions", "doormile-wings", "express"],
+ "doormile-wings": ["doormile-wings"],
about: ["about", "about-us", "women"],
blogs: ["blogs"],
};
@@ -62,7 +64,7 @@ export default function Header() {
targetId: string,
shouldCloseMenu = false,
) => {
- if (shouldCloseMenu) closeAll();
+ if (shouldCloseMenu) closeMobileMenu();
if (pathname !== targetPath) return;
@@ -80,6 +82,23 @@ export default function Header() {
const [visibleScrolled, setVisibleScrolled] = useState(false);
const [isScrolled, setIsScrolled] = useState(false);
+ // Solutions dropdown (desktop) / accordion (mobile). Local to Header —
+ // unlike isMenuOpen/isSidebarOpen (HeaderUIProvider), no sibling component
+ // needs to read this.
+ const [isDesktopSolutionsOpen, setDesktopSolutionsOpen] = useState(false);
+ const [isMobileSolutionsOpen, setMobileSolutionsOpen] = useState(false);
+
+ // Collapse the accordion whenever the off-canvas menu closes, so it isn't
+ // left expanded the next time the menu opens.
+ const closeMobileMenu = () => {
+ setMobileSolutionsOpen(false);
+ closeAll();
+ };
+ const toggleMobileMenu = () => {
+ setMobileSolutionsOpen(false);
+ toggleMenu();
+ };
+
useEffect(() => {
const handle = requestAnimationFrame(() => {
setVisibleScrolled(true);
@@ -444,11 +463,44 @@ export default function Header() {
handleNavClick(event, "/miletruth", "miletruth")}>MileTruth™ AI
Time-critical shipments handled with the highest priority. Guaranteed next-flight-out scheduling, same-day airport handoff, and binding SLA commitments on every air cargo booking.
Our IATA-certified team manages special commodity requirements including temperature control, security packaging, and regulatory documentation for every cargo category.
diff --git a/src/components/sections/AirFreightWorkflow.tsx b/src/components/sections/AirFreightWorkflow.tsx
index a605977..7773beb 100644
--- a/src/components/sections/AirFreightWorkflow.tsx
+++ b/src/components/sections/AirFreightWorkflow.tsx
@@ -4,7 +4,7 @@ import { ScrollReveal } from "@/animations/Reveal";
const ICON_BOXES = [
{
- title: "Express Air Freight",
+ title: "Doormile Wings Express",
desc: "Time-critical shipments handled with next-flight-out scheduling and binding SLA commitments. Priority customs processing at every origin and destination airport.",
},
{
@@ -190,7 +190,7 @@ export default function AirFreightWorkflow() {