first commit

This commit is contained in:
2026-05-28 16:17:56 +05:30
parent 319e6f32d3
commit 43dd4cef12
256 changed files with 182186 additions and 93 deletions

35
src/app/about-us/page.tsx Normal file
View File

@@ -0,0 +1,35 @@
import React from "react";
import AboutHero from "@/components/sections/AboutHero";
import TheDoormileWay from "@/components/sections/TheDoormileWay";
import EVLogisticSection from "@/components/sections/EVLogisticSection";
import WomenSection from "@/components/sections/WomenSection";
import CompetitiveEdge from "@/components/sections/CompetitiveEdge";
import IntelligenceGrid from "@/components/sections/IntelligenceGrid";
import OurTeam from "@/components/sections/OurTeam";
import AboutCTA from "@/components/sections/AboutCTA";
export const metadata = {
title: "About Us Doormile",
description: "Meet the best crew and operators behind Doormile. Explore our roadmap, competitive edge, and operational excellence in EV and last-mile logistics.",
};
export default function AboutUsPage() {
return (
<div className="content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none">
<div className="content">
<div className="content-inner">
<div data-elementor-type="wp-page" data-elementor-id="86" className="elementor elementor-86">
<AboutHero />
<TheDoormileWay />
<EVLogisticSection />
<WomenSection />
<CompetitiveEdge />
<IntelligenceGrid />
<OurTeam />
<AboutCTA />
</div>
</div>
</div>
</div>
);
}

23
src/app/blog/page.tsx Normal file
View File

@@ -0,0 +1,23 @@
import React from "react";
import BlogsHero from "@/components/sections/BlogsHero";
import BlogGrid from "@/components/sections/BlogGrid";
export const metadata = {
title: "Blog Doormile",
description: "Insights and logistics intelligence from the team behind Doormile. Learn how AI is transforming EV planning and last-mile operations.",
};
export default function BlogPage() {
return (
<div className="content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none">
<div className="content">
<div className="content-inner">
<div data-elementor-type="wp-page" data-elementor-id="104" className="elementor elementor-104">
<BlogsHero />
<BlogGrid />
</div>
</div>
</div>
</div>
);
}

25
src/app/contact/page.tsx Normal file
View File

@@ -0,0 +1,25 @@
import React from "react";
import ContactsHero from "@/components/sections/ContactsHero";
import ContactForm from "@/components/sections/ContactForm";
import ContactMap from "@/components/sections/ContactMap";
export const metadata = {
title: "Contact Us Doormile",
description: "Get in touch with Doormile's last-mile logistics team. Call us, email, visit our Gachibowli, Hyderabad office, or drop a message.",
};
export default function ContactPage() {
return (
<div className="content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none">
<div className="content">
<div className="content-inner">
<div data-elementor-type="wp-page" data-elementor-id="41" className="elementor elementor-41">
<ContactsHero />
<ContactForm />
<ContactMap />
</div>
</div>
</div>
</div>
);
}

View File

@@ -1,26 +1,402 @@
@import "tailwindcss";
/* Tailwind utilities ONLY — preflight/base and components are disabled so production Elementor/WordPress CSS controls body, typography, colors, spacing, and resets. */
@import "tailwindcss/utilities";
:root {
--background: #ffffff;
--foreground: #171717;
}
@media (min-width: 1025px) {
#masthead .elementor-element.elementor-element-466de1b {
top: 5px !important;
padding: 0 28px !important;
}
@theme inline {
--color-background: var(--background);
--color-foreground: var(--foreground);
--font-sans: var(--font-geist-sans);
--font-mono: var(--font-geist-mono);
}
#masthead .elementor-element.elementor-element-e052838 {
margin-left: 1.4% !important;
border-radius: 28px !important;
background: rgba(31, 31, 31, 0.82) !important;
}
@media (prefers-color-scheme: dark) {
:root {
--background: #0a0a0a;
--foreground: #ededed;
#masthead .elementor-element.elementor-element-d681ece {
align-items: center !important;
min-height: 104px !important;
}
#masthead .elementor-element.elementor-element-472172e {
padding-top: 18px !important;
padding-bottom: 18px !important;
}
#masthead .elementor-element.elementor-element-846e53d .hfe-site-logo .hfe-site-logo-container img {
width: 190px !important;
height: auto !important;
margin-left: 24px !important;
}
#masthead .elementor-element.elementor-element-e44ee7e,
#masthead .elementor-element.elementor-element-f961133 {
padding-top: 14px !important;
padding-bottom: 14px !important;
}
#masthead .elementor-element.elementor-element-0b7bf6f > .elementor-widget-container {
padding: 0 42px !important;
border-radius: 22px !important;
}
#masthead .elementor-element.elementor-element-0b7bf6f .header-menu-container .main-menu > li > a {
padding-top: 15px !important;
padding-bottom: 16px !important;
font-size: 15px !important;
line-height: 1.2 !important;
}
#masthead .header-menu-container .main-menu {
gap: 18px !important;
}
#masthead .elementor-element.elementor-element-cabdb09 a.header-button {
min-width: 185px !important;
min-height: 58px !important;
padding: 0 34px !important;
border-radius: 24px !important;
font-size: 18px !important;
line-height: 58px !important;
}
#masthead .elementor-element.elementor-element-466de1b.dm-header-scrolled {
top: 0 !important;
}
}
body {
background: var(--background);
color: var(--foreground);
font-family: Arial, Helvetica, sans-serif;
.dm-contact-section {
position: relative;
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(420px, 48%);
min-height: 720px;
margin: 0;
overflow: hidden;
background: #1f1f1f;
color: #fff;
}
.dm-contact-left {
position: relative;
min-width: 0;
padding: clamp(48px, 5vw, 76px) clamp(28px, 5vw, 72px);
overflow: hidden;
}
.dm-contact-map {
position: absolute;
left: -5%;
bottom: -1%;
z-index: 0;
width: min(980px, 112%);
max-width: none;
opacity: 0.34;
pointer-events: none;
user-select: none;
}
.dm-contact-kicker,
.dm-contact-title,
.dm-contact-copy,
.dm-contact-info {
position: relative;
z-index: 1;
}
.dm-contact-kicker {
margin: 0 0 clamp(44px, 5vw, 64px);
color: #fff;
font-size: clamp(16px, 1.2vw, 20px);
font-weight: 600;
line-height: 1.2;
}
.dm-contact-title {
max-width: 850px;
margin: 0;
color: #fff;
font-size: clamp(44px, 5.2vw, 86px);
font-weight: 400;
line-height: 1.18;
letter-spacing: 0;
text-transform: uppercase;
}
.dm-contact-copy {
margin: clamp(36px, 4.5vw, 58px) 0 0;
color: rgba(255, 255, 255, 0.92);
font-size: clamp(18px, 1.55vw, 26px);
font-weight: 400;
line-height: 1.45;
}
.dm-contact-info {
display: grid;
grid-template-columns: minmax(180px, 0.85fr) minmax(260px, 1.45fr);
gap: clamp(32px, 5vw, 74px);
max-width: 860px;
margin-top: clamp(72px, 7vw, 114px);
}
.dm-contact-info-item h3 {
margin: 0 0 32px;
color: #fff;
font-size: clamp(18px, 1.5vw, 25px);
font-weight: 800;
line-height: 1.2;
}
.dm-contact-info-item p {
margin: 0;
color: #fff;
font-size: clamp(17px, 1.35vw, 24px);
font-weight: 500;
line-height: 1.6;
}
.dm-contact-card {
align-self: stretch;
min-width: 0;
margin: 22px 34px 0 0;
padding: clamp(72px, 7vw, 132px) clamp(42px, 7.2vw, 150px) clamp(50px, 5.5vw, 82px);
border-radius: 34px 34px 0 0;
background: #fff;
color: #1b1b1b;
}
.dm-contact-card h3 {
margin: 0 0 clamp(44px, 5vw, 68px);
color: #1b1b1b;
font-size: clamp(34px, 2.6vw, 45px);
font-weight: 800;
line-height: 1.1;
letter-spacing: 0;
}
.dm-contact-form {
display: flex;
flex-direction: column;
gap: 28px;
}
.dm-contact-form label {
display: block;
margin: 0;
}
.dm-contact-form label > span {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
.dm-contact-form input,
.dm-contact-form textarea {
width: 100%;
margin: 0;
border: 1.5px solid #a9a9a9;
border-radius: 14px;
background: #fff;
color: #1b1b1b;
font-family: inherit;
font-size: clamp(17px, 1.05vw, 20px);
font-weight: 500;
line-height: 1.4;
outline: none;
box-shadow: none;
transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.dm-contact-form input {
height: 72px;
padding: 0 28px;
}
.dm-contact-form textarea {
min-height: 250px;
padding: 24px 28px;
resize: vertical;
}
.dm-contact-form input::placeholder,
.dm-contact-form textarea::placeholder {
color: #9c9c9c;
opacity: 1;
}
.dm-contact-form input:focus,
.dm-contact-form textarea:focus {
border-color: #c01227;
box-shadow: 0 0 0 3px rgba(192, 18, 39, 0.11);
}
.dm-contact-status {
margin: -6px 0 0;
font-size: 15px;
font-weight: 700;
line-height: 1.4;
}
.dm-contact-status-success {
color: #247a3d;
}
.dm-contact-status-error {
color: #c01227;
}
.dm-contact-submit {
display: inline-flex;
align-items: stretch;
align-self: flex-start;
height: 72px;
margin-top: 26px;
padding: 0;
overflow: hidden;
border: 1.5px solid #e31d32;
border-radius: 14px;
background: #fff;
color: #2d2d2d;
font-family: inherit;
font-size: clamp(16px, 1.02vw, 19px);
font-weight: 800;
line-height: 1;
cursor: pointer;
transition: transform 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}
.dm-contact-submit span:first-child {
display: inline-flex;
align-items: center;
justify-content: center;
min-width: 220px;
padding: 0 34px;
}
.dm-contact-submit-icon {
position: relative;
display: inline-flex;
width: 70px;
min-width: 70px;
background: #c01227;
}
.dm-contact-submit-icon::before,
.dm-contact-submit-icon::after {
position: absolute;
content: "";
background: #fff;
}
.dm-contact-submit-icon::before {
top: 35px;
left: 23px;
width: 28px;
height: 3px;
transform: rotate(-45deg);
transform-origin: right center;
}
.dm-contact-submit-icon::after {
top: 25px;
right: 25px;
width: 16px;
height: 16px;
border-top: 3px solid #fff;
border-right: 3px solid #fff;
background: transparent;
}
.dm-contact-submit:hover,
.dm-contact-submit:focus-visible {
transform: translateY(-1px);
border-color: #c01227;
color: #111;
}
.dm-contact-submit:disabled {
cursor: wait;
opacity: 0.72;
}
@media (max-width: 1200px) {
.dm-contact-section {
grid-template-columns: 1fr;
}
.dm-contact-left {
min-height: 640px;
}
.dm-contact-card {
margin: 0 28px 40px;
border-radius: 28px;
}
}
@media (max-width: 720px) {
.dm-contact-left {
min-height: auto;
padding: 42px 22px 58px;
}
.dm-contact-title {
font-size: clamp(38px, 12vw, 58px);
}
.dm-contact-info {
grid-template-columns: 1fr;
gap: 42px;
margin-top: 54px;
}
.dm-contact-info-item h3 {
margin-bottom: 18px;
}
.dm-contact-card {
margin: 0 16px 32px;
padding: 44px 22px 34px;
border-radius: 24px;
}
.dm-contact-card h3 {
margin-bottom: 34px;
}
.dm-contact-form {
gap: 20px;
}
.dm-contact-form input {
height: 60px;
padding: 0 20px;
}
.dm-contact-form textarea {
min-height: 190px;
padding: 20px;
}
.dm-contact-submit {
width: 100%;
height: 64px;
}
.dm-contact-submit span:first-child {
flex: 1 1 auto;
min-width: 0;
padding: 0 22px;
}
.dm-contact-submit-icon {
width: 64px;
min-width: 64px;
}
}

View File

@@ -0,0 +1,25 @@
import React from "react";
import HowItWorksHero from "../../components/sections/HowItWorksHero";
import Miles3 from "../../components/sections/Miles3";
import TheDoormileWay from "../../components/sections/TheDoormileWay";
export const metadata = {
title: "How It Works Doormile",
description: "See how Doormile connects first, mid, and last mile into a seamless delivery experience powered by MileTruth™ AI.",
};
export default function HowItWorksPage() {
return (
<div className="content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none">
<div className="content">
<div className="content-inner">
<div data-elementor-type="wp-page" data-elementor-id="59" className="elementor elementor-59">
<HowItWorksHero />
<Miles3 />
<TheDoormileWay />
</div>
</div>
</div>
</div>
);
}

View File

@@ -1,20 +1,26 @@
import type { Metadata } from "next";
import { Geist, Geist_Mono } from "next/font/google";
import { Manrope } from "next/font/google";
import "./globals.css";
import Header from "@/components/layout/Header";
import Footer from "@/components/layout/Footer";
import BodyClasses from "@/components/layout/BodyClasses";
import BodyOverlay from "@/components/layout/BodyOverlay";
import { HeaderUIProvider } from "@/components/layout/HeaderUIProvider";
import { SHARED_BODY_CLASSES } from "@/lib/bodyClasses";
const geistSans = Geist({
variable: "--font-geist-sans",
subsets: ["latin"],
});
const geistMono = Geist_Mono({
variable: "--font-geist-mono",
const manrope = Manrope({
subsets: ["latin"],
variable: "--font-manrope",
weight: ["300", "400", "500", "600", "700", "800"],
});
export const metadata: Metadata = {
title: "Create Next App",
description: "Generated by create next app",
title: "Doormile — Last-Mile Logistics Intelligence",
description: "Doormile powers last-mile logistics with MileTruth™ AI, providing connected miles, SLA protection, and carrier management.",
robots: {
index: true,
follow: true,
},
};
export default function RootLayout({
@@ -23,11 +29,51 @@ export default function RootLayout({
children: React.ReactNode;
}>) {
return (
<html
lang="en"
className={`${geistSans.variable} ${geistMono.variable} h-full antialiased`}
>
<body className="min-h-full flex flex-col">{children}</body>
<html lang="en-US" className={manrope.variable}>
<head>
{/* FontAwesome icons */}
<link
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"
/>
{/* Load WordPress & Elementor compiled styles from public folder */}
<link rel="stylesheet" href="/css/vendor/vendor-elementor-generated-globals.css" />
<link rel="stylesheet" href="/css/vendor/vendor-elementor-base.css" />
<link rel="stylesheet" href="/css/vendor/vendor-elementor-custom.min.css" />
<link rel="stylesheet" href="/css/vendor/vendor-theme-core.css" />
<link rel="stylesheet" href="/css/vendor/vendor-global-overrides.css" />
<link rel="stylesheet" href="/css/vendor/vendor-layout-main.css" />
<link rel="stylesheet" href="/css/vendor/vendor-responsive-laptops.css" />
<link rel="stylesheet" href="/css/vendor/vendor-elementor-hfe.css" />
<link rel="stylesheet" href="/css/vendor/vendor-icons-fontello-load.css" />
<link rel="stylesheet" href="/css/vendor/vendor-icons-fontello.css" />
<link rel="stylesheet" href="/css/custom-frontend.min.css" />
<link rel="stylesheet" href="/css/all-inlined-head-styles.css" />
</head>
{/*
Production DOM (index.php + header.php):
body
├─ body-overlay (direct child of body — index.php line 6 / header.php line 5)
├─ body-container (header.php line 14)
│ └─ #page.hfeed.site (header.php line 15)
│ ├─ header#masthead
│ ├─ content-wrapper (children)
│ └─ footer
SSR ships body with shared WP/Elementor classes; BodyClasses (client) refines per route.
*/}
<body className={SHARED_BODY_CLASSES}>
<BodyClasses />
<HeaderUIProvider>
<BodyOverlay />
<div className="body-container">
<div id="page" className="hfeed site">
<Header />
{children}
<Footer />
</div>
</div>
</HeaderUIProvider>
</body>
</html>
);
}

View File

@@ -0,0 +1,27 @@
import React from "react";
import MileTruthHero from "../../components/sections/MileTruthHero";
import Workflow1 from "../../components/sections/Workflow1";
import Workflow2 from "../../components/sections/Workflow2";
import Workflow3 from "../../components/sections/Workflow3";
export const metadata = {
title: "MileTruth Doormile",
description: "Optimizes every stage of the delivery journey for maximum efficiency. Explore the only AI built exclusively for logistics.",
};
export default function MileTruthPage() {
return (
<div className="content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none">
<div className="content">
<div className="content-inner">
<div data-elementor-type="wp-page" data-elementor-id="59" className="elementor elementor-59">
<MileTruthHero />
<Workflow1 />
<Workflow2 />
<Workflow3 />
</div>
</div>
</div>
</div>
);
}

View File

@@ -1,65 +1,37 @@
import Image from "next/image";
import React from "react";
import type { Metadata } from "next";
import IndexHero from "@/components/sections/IndexHero";
import StatsBar from "@/components/sections/StatsBar";
import TheProblem from "@/components/sections/TheProblem";
import MarqueeTicker from "@/components/sections/MarqueeTicker";
import ConnectedLogistics from "@/components/sections/ConnectedLogistics";
import TheDoormileWay from "@/components/sections/TheDoormileWay";
import EVSection from "@/components/sections/EVSection";
import IndustrySolutions from "@/components/sections/IndustrySolutions";
export const metadata: Metadata = {
title: "Doormile — Last-Mile Logistics Intelligence",
description:
"Doormile helps logistics companies track every mile with MileTruth™ AI. Real-time SLA protection and connected miles visibility.",
};
export default function Home() {
return (
<div className="flex flex-col flex-1 items-center justify-center bg-zinc-50 font-sans dark:bg-black">
<main className="flex flex-1 w-full max-w-3xl flex-col items-center justify-between py-32 px-16 bg-white dark:bg-black sm:items-start">
<Image
className="dark:invert"
src="/next.svg"
alt="Next.js logo"
width={100}
height={20}
priority
/>
<div className="flex flex-col items-center gap-6 text-center sm:items-start sm:text-left">
<h1 className="max-w-xs text-3xl font-semibold leading-10 tracking-tight text-black dark:text-zinc-50">
To get started, edit the page.tsx file.
</h1>
<p className="max-w-md text-lg leading-8 text-zinc-600 dark:text-zinc-400">
Looking for a starting point or more instructions? Head over to{" "}
<a
href="https://vercel.com/templates?framework=next.js&utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app"
className="font-medium text-zinc-950 dark:text-zinc-50"
>
Templates
</a>{" "}
or the{" "}
<a
href="https://nextjs.org/learn?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app"
className="font-medium text-zinc-950 dark:text-zinc-50"
>
Learning
</a>{" "}
center.
</p>
<div className="content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none">
<div className="content">
<div className="content-inner">
<div data-elementor-type="wp-page" data-elementor-id="61" className="elementor elementor-61">
<IndexHero />
<StatsBar />
<TheProblem />
<MarqueeTicker />
<ConnectedLogistics />
<TheDoormileWay />
<EVSection />
<IndustrySolutions />
</div>
</div>
<div className="flex flex-col gap-4 text-base font-medium sm:flex-row">
<a
className="flex h-12 w-full items-center justify-center gap-2 rounded-full bg-foreground px-5 text-background transition-colors hover:bg-[#383838] dark:hover:bg-[#ccc] md:w-[158px]"
href="https://vercel.com/new?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app"
target="_blank"
rel="noopener noreferrer"
>
<Image
className="dark:invert"
src="/vercel.svg"
alt="Vercel logomark"
width={16}
height={16}
/>
Deploy Now
</a>
<a
className="flex h-12 w-full items-center justify-center rounded-full border border-solid border-black/[.08] px-5 transition-colors hover:border-transparent hover:bg-black/[.04] dark:border-white/[.145] dark:hover:bg-[#1a1a1a] md:w-[158px]"
href="https://nextjs.org/docs?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app"
target="_blank"
rel="noopener noreferrer"
>
Documentation
</a>
</div>
</main>
</div>
</div>
);
}

View File

@@ -0,0 +1,65 @@
import React from "react";
import SolutionsHero from "@/components/sections/SolutionsHero";
import SolutionCard1 from "@/components/sections/SolutionCard1";
export const metadata = {
title: "Solutions Doormile",
description: "Discover how Doormile's connected logistics platform serves diverse industries (FMCG, Pharma, and Enterprise) with tailored solutions.",
};
export default function SolutionsPage() {
return (
<>
<style dangerouslySetInnerHTML={{ __html: `
/* Fix "Why Businesses Choose Doormile" section — anchor absolute image left, push content right */
.elementor-element.elementor-element-ead59d3 {
position: relative;
overflow: hidden;
}
.elementor-element.elementor-element-f35119c {
position: absolute !important;
left: -2% !important;
top: 50% !important;
transform: translateY(-50%) !important;
width: 48% !important;
max-width: 520px !important;
opacity: 0.18 !important;
z-index: 0 !important;
pointer-events: none;
}
.elementor-element.elementor-element-56ecbb3 {
position: relative !important;
z-index: 1 !important;
width: 55% !important;
max-width: 55% !important;
margin-left: auto !important;
margin-right: 4% !important;
}
.elementor-element.elementor-element-56ecbb3 .e-con-inner {
max-width: 100% !important;
padding-left: 0 !important;
padding-right: 0 !important;
}
@media (max-width: 1020px) {
.elementor-element.elementor-element-f35119c { display: none !important; }
.elementor-element.elementor-element-56ecbb3 {
width: 100% !important;
max-width: 100% !important;
margin: 0 !important;
}
}
`}} />
<div className="content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none">
<div className="content">
<div className="content-inner">
<div data-elementor-type="wp-page" data-elementor-id="59" className="elementor elementor-59">
<SolutionsHero />
<SolutionCard1 />
</div>
</div>
</div>
</div>
</>
);
}