491 lines
37 KiB
JavaScript
491 lines
37 KiB
JavaScript
module.exports=[17815,a=>{"use strict";a.s(["default",()=>b]);let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/src/components/blog/BlogSearch.tsx <module evaluation> from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/components/blog/BlogSearch.tsx <module evaluation>","default")},84047,a=>{"use strict";a.s(["default",()=>b]);let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/src/components/blog/BlogSearch.tsx from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/components/blog/BlogSearch.tsx","default")},36107,a=>{"use strict";a.i(17815);var b=a.i(84047);a.n(b)},67932,a=>{"use strict";var b=a.i(7997);a.i(70396);var c=a.i(73727),d=a.i(95936),e=a.i(3236),f=a.i(19218),g=a.i(4329),h=a.i(36107);function i({current:a}){let c=(0,g.getRecentPosts)(5).filter(b=>b.slug!==a?.slug).slice(0,4),f=(0,g.getCategories)();return(0,b.jsxs)("aside",{className:"dm-blog-sidebar","aria-label":"Blog sidebar",children:[(0,b.jsxs)("section",{className:"dm-blog-widget",children:[(0,b.jsx)("h2",{className:"dm-blog-widget-title",children:"Search"}),(0,b.jsx)(h.default,{})]}),(0,b.jsxs)("section",{className:"dm-blog-widget",children:[(0,b.jsx)("h2",{className:"dm-blog-widget-title",children:"Recent Posts"}),(0,b.jsx)("ul",{className:"dm-blog-recent",children:c.map(a=>(0,b.jsx)("li",{children:(0,b.jsxs)(d.default,{href:`/blog/${a.slug}`,className:"dm-blog-recent-item",children:[(0,b.jsx)("span",{className:"dm-blog-recent-thumb",children:(0,b.jsx)(e.default,{src:a.image,alt:a.title,fill:!0,sizes:"62px",style:{objectFit:"cover"}})}),(0,b.jsxs)("span",{className:"dm-blog-recent-meta",children:[(0,b.jsx)("span",{className:"dm-blog-recent-title",children:a.title}),(0,b.jsx)("time",{dateTime:a.date,className:"dm-blog-recent-date",children:(0,g.formatDate)(a.date)})]})]})},a.slug))})]}),(0,b.jsxs)("section",{className:"dm-blog-widget",children:[(0,b.jsx)("h2",{className:"dm-blog-widget-title",children:"Categories"}),(0,b.jsx)("ul",{className:"dm-blog-categories",children:f.map(a=>(0,b.jsx)("li",{children:(0,b.jsxs)(d.default,{href:"/blog",className:"dm-blog-category-item",children:[(0,b.jsx)("span",{children:a.name}),(0,b.jsx)("span",{className:"dm-blog-category-count",children:a.count})]})},a.name))})]}),(0,b.jsxs)("section",{className:"dm-blog-widget dm-blog-cta-card",children:[(0,b.jsx)("h2",{className:"dm-blog-cta-title",children:"Planning delivery routes?"}),(0,b.jsx)("p",{className:"dm-blog-cta-text",children:"Talk to us about reducing wasted distance, missed windows, and avoidable vehicle time."}),(0,b.jsxs)(d.default,{href:"/contact",className:"dm-blog-cta-btn",children:["Contact Us",(0,b.jsxs)("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,b.jsx)("line",{x1:"5",y1:"12",x2:"19",y2:"12"}),(0,b.jsx)("polyline",{points:"12 5 19 12 12 19"})]})]})]})]})}function j({block:a}){switch(a.type){case"paragraph":return(0,b.jsx)("p",{className:"dm-article-p",children:a.text});case"heading":return 2===a.level?(0,b.jsx)("h2",{className:"dm-article-h2",children:a.text}):(0,b.jsx)("h3",{className:"dm-article-h3",children:a.text});case"list":return a.ordered?(0,b.jsx)("ol",{className:"dm-article-ol",children:a.items.map((a,c)=>(0,b.jsx)("li",{children:a},c))}):(0,b.jsx)("ul",{className:"dm-article-ul",children:a.items.map((a,c)=>(0,b.jsx)("li",{children:a},c))});case"quote":return(0,b.jsxs)("blockquote",{className:"dm-article-quote",children:[(0,b.jsx)("p",{children:a.text}),a.cite&&(0,b.jsx)("cite",{children:a.cite})]});case"image":return(0,b.jsxs)("figure",{className:"dm-article-figure",children:[(0,b.jsx)("span",{className:"dm-article-figure-img",children:(0,b.jsx)(e.default,{src:a.src,alt:a.alt,fill:!0,sizes:"(max-width: 768px) 100vw, 760px",style:{objectFit:"cover"}})}),a.caption&&(0,b.jsx)("figcaption",{children:a.caption})]});default:return null}}function k({post:a}){let c=(0,g.estimateReadingTime)(a),e={backgroundImage:`url(${a.image})`,"--hero-overlay":"linear-gradient(180deg, rgba(0,0,0,0.38) 0%, rgba(0,0,0,0.46) 55%, rgba(0,0,0,0.60) 100%)"};return(0,b.jsxs)("article",{className:"dm-single-blog",children:[(0,b.jsx)("link",{rel:"preload",as:"image",href:a.image}),(0,b.jsx)("style",{dangerouslySetInnerHTML:{__html:l}}),(0,b.jsx)("div",{className:"custom-standard-hero-container",children:(0,b.jsx)("div",{className:"custom-standard-hero-card dm-banner-card",style:e,children:(0,b.jsxs)("div",{className:"e-con-inner dm-banner-inner",children:[(0,b.jsx)("span",{className:"dm-banner-category",children:a.category}),(0,b.jsx)("h1",{className:"dm-banner-title",children:a.title})]})})}),(0,b.jsxs)("div",{className:"dm-blog-wrap",children:[(0,b.jsxs)("div",{className:"dm-meta-bar",children:[(0,b.jsx)("nav",{className:"dm-meta-breadcrumb","aria-label":"Breadcrumb",children:(0,b.jsxs)("ol",{children:[(0,b.jsx)("li",{children:(0,b.jsx)(d.default,{href:"/",children:"Home"})}),(0,b.jsx)("li",{"aria-hidden":"true",className:"dm-meta-sep",children:"/"}),(0,b.jsx)("li",{children:(0,b.jsx)(d.default,{href:"/blog",children:"Blog"})}),(0,b.jsx)("li",{"aria-hidden":"true",className:"dm-meta-sep",children:"/"}),(0,b.jsx)("li",{"aria-current":"page",className:"dm-meta-current",children:a.title})]})}),(0,b.jsxs)("div",{className:"dm-meta-items",children:[(0,b.jsxs)("span",{className:"dm-meta-item dm-meta-author",children:[(0,b.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,b.jsx)("path",{d:"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}),(0,b.jsx)("circle",{cx:"12",cy:"7",r:"4"})]}),a.author]}),(0,b.jsxs)("span",{className:"dm-meta-item",children:[(0,b.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,b.jsx)("rect",{x:"3",y:"4",width:"18",height:"18",rx:"2"}),(0,b.jsx)("line",{x1:"16",y1:"2",x2:"16",y2:"6"}),(0,b.jsx)("line",{x1:"8",y1:"2",x2:"8",y2:"6"}),(0,b.jsx)("line",{x1:"3",y1:"10",x2:"21",y2:"10"})]}),(0,b.jsx)("time",{dateTime:a.date,children:(0,g.formatDate)(a.date)})]}),(0,b.jsxs)("span",{className:"dm-meta-item",children:[(0,b.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,b.jsx)("circle",{cx:"12",cy:"12",r:"9"}),(0,b.jsx)("polyline",{points:"12 7 12 12 15 14"})]}),c," min read"]})]})]}),(0,b.jsxs)("div",{className:"dm-blog-layout",children:[(0,b.jsxs)("div",{className:"dm-blog-main",children:[(0,b.jsx)("p",{className:"dm-blog-intro",children:a.intro}),(0,b.jsx)("div",{className:"dm-article-body",children:a.content.map((a,c)=>(0,b.jsx)(f.ScrollReveal,{delay:0,duration:.6,yOffset:20,children:(0,b.jsx)(j,{block:a})},c))})]}),(0,b.jsx)("div",{className:"dm-blog-aside-wrap",children:(0,b.jsx)(i,{current:a})})]})]})]})}let l=`
|
||
.dm-single-blog {
|
||
--dm-red: #c01227;
|
||
--dm-red-hover: #e31d32;
|
||
--dm-radius-card: 22px;
|
||
--dm-radius-img: 20px;
|
||
--dm-radius-badge: 8px;
|
||
--dm-shadow-card: 0 4px 24px rgba(15, 23, 42, 0.05);
|
||
--dm-border: 1px solid rgba(15, 23, 42, 0.09);
|
||
--dm-space-p: 24px;
|
||
--dm-space-h: 32px;
|
||
--dm-space-img: 32px;
|
||
--dm-space-quote: 40px;
|
||
--dm-sticky-top: 138px;
|
||
--dm-measure: min(1100px, 100%);
|
||
font-family: var(--font-manrope), sans-serif;
|
||
}
|
||
|
||
/* Heading normalization. Beat the global theme's .elementor-kit-5 h1-h6
|
||
(120/80/60px UPPERCASE) rules with !important on our own classes. */
|
||
.dm-single-blog :where(h1, h2, h3, h4, h5, h6) {
|
||
font-family: var(--font-manrope), sans-serif !important;
|
||
text-transform: none !important;
|
||
font-style: normal !important;
|
||
font-weight: 800;
|
||
}
|
||
/* Neutralize the theme's .elementor-kit-5 a (red color + underline,
|
||
specificity 0-1-1) so blog links keep our colors and never get underlined. */
|
||
.dm-single-blog a { text-decoration: none !important; }
|
||
|
||
/* Page banner: tall homepage-scale frame with only badge + title inside */
|
||
/* Compound selector (specificity 20) + !important beats the global 800px
|
||
single-class height rules so the blog banner can use viewport heights. */
|
||
.custom-standard-hero-card.dm-banner-card {
|
||
height: 90vh !important;
|
||
min-height: 85vh !important;
|
||
}
|
||
@media (max-width: 1024px) {
|
||
.custom-standard-hero-card.dm-banner-card { height: 80vh !important; min-height: 75vh !important; }
|
||
}
|
||
@media (max-width: 600px) {
|
||
.custom-standard-hero-card.dm-banner-card { height: 78vh !important; min-height: 72vh !important; }
|
||
}
|
||
|
||
.dm-banner-inner {
|
||
position: relative; width: 100%; height: 100%;
|
||
display: flex; flex-direction: column; align-items: center; justify-content: center;
|
||
text-align: center; gap: clamp(22px, 2.6vw, 34px);
|
||
padding: clamp(48px, 8vh, 96px) clamp(20px, 5vw, 48px);
|
||
}
|
||
|
||
.dm-banner-category {
|
||
display: inline-block; background: var(--dm-red); color: #fff;
|
||
font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.6px;
|
||
padding: 9px 18px; border-radius: 999px; box-shadow: 0 8px 22px rgba(192,18,39,0.45);
|
||
}
|
||
.dm-banner-title {
|
||
font-family: var(--font-manrope), sans-serif !important;
|
||
font-size: clamp(34px, 5vw, 60px) !important; font-weight: 850 !important;
|
||
line-height: 1.16 !important; letter-spacing: -1.2px !important;
|
||
color: #ffffff !important; margin: 0; max-width: 820px;
|
||
text-wrap: balance; text-shadow: 0 2px 30px rgba(0,0,0,0.38);
|
||
}
|
||
@media (max-width: 1024px) { .dm-banner-title { font-size: clamp(32px, 6vw, 48px) !important; max-width: 90%; } }
|
||
@media (max-width: 600px) { .dm-banner-title { font-size: clamp(28px, 8vw, 38px) !important; max-width: 90%; } }
|
||
|
||
/* Content wrap begins immediately below the banner */
|
||
/* Shared content container: the SAME max-width + horizontal padding is used
|
||
by BlogPostFooter (.dm-blog-footer-inner) so the article body, headings,
|
||
images, Prev/Next, Related Articles and the CTA banner all align to one
|
||
grid with identical left/right edges. Keep both in sync. */
|
||
.dm-blog-wrap {
|
||
max-width: 1280px; margin: 0 auto;
|
||
/* 20px mobile padding floor → 40px on desktop; matches the footer container. */
|
||
padding: clamp(14px, 2vw, 26px) clamp(20px, 4vw, 40px) 0;
|
||
}
|
||
@media (max-width: 767px) {
|
||
.dm-blog-wrap {
|
||
padding-left: 16px;
|
||
padding-right: 16px;
|
||
}
|
||
}
|
||
|
||
/* ── Article meta bar (directly under the hero) ── */
|
||
.dm-meta-bar {
|
||
display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px 24px;
|
||
padding: clamp(20px, 2.6vw, 30px) 0; margin-bottom: clamp(26px, 3vw, 44px);
|
||
border-bottom: 1px solid rgba(15,23,42,0.10);
|
||
}
|
||
.dm-meta-breadcrumb ol {
|
||
list-style: none; display: flex; flex-wrap: wrap; align-items: center;
|
||
gap: 8px; margin: 0; padding: 0; font-size: 13px; font-weight: 600; color: #64748b;
|
||
}
|
||
.dm-meta-breadcrumb a { color: #64748b !important; text-decoration: none; transition: color .2s ease; }
|
||
.dm-meta-breadcrumb a:hover { color: var(--dm-red) !important; }
|
||
.dm-meta-sep { color: #cbd5e1; }
|
||
.dm-meta-current {
|
||
color: #0f172a; font-weight: 700;
|
||
max-width: min(40ch, 46vw); overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
|
||
}
|
||
@media (max-width: 600px) { .dm-meta-current { max-width: 56vw; } }
|
||
.dm-meta-items { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; }
|
||
.dm-meta-item {
|
||
display: inline-flex; align-items: center; gap: 7px;
|
||
font-size: 13.5px; font-weight: 600; color: #475569;
|
||
}
|
||
.dm-meta-item svg { color: var(--dm-red); flex: 0 0 auto; }
|
||
.dm-meta-author { color: #0f172a; font-weight: 700; }
|
||
@media (max-width: 600px) { .dm-meta-bar { gap: 12px; } }
|
||
.dm-blog-layout {
|
||
display: grid; grid-template-columns: minmax(0,1fr) 320px;
|
||
/* Tighter gap gives the reading column more room next to the 320px sidebar. */
|
||
gap: clamp(28px, 3vw, 56px); align-items: start;
|
||
}
|
||
@media (max-width: 1024px) {
|
||
.dm-blog-layout { grid-template-columns: 1fr; gap: 48px; }
|
||
/* Single-column (tablet/mobile): cap the reading column and centre it so the
|
||
article never sits left-aligned with a large empty right gutter. */
|
||
.dm-blog-main { max-width: 900px; margin-inline: auto; }
|
||
}
|
||
.dm-blog-main { min-width: 0; }
|
||
|
||
/* ── Intro lead ── */
|
||
.dm-blog-intro {
|
||
max-width: var(--dm-measure);
|
||
font-size: clamp(18px, 1.5vw, 20px); line-height: 1.65; font-weight: 500;
|
||
color: #475569; margin: 0 0 clamp(26px, 3vw, 38px); padding-left: 20px;
|
||
border-left: 3px solid var(--dm-red);
|
||
}
|
||
|
||
/* ── Article body ── */
|
||
.dm-article-body { max-width: var(--dm-measure); }
|
||
.dm-article-p {
|
||
font-size: 18px !important; line-height: 1.8 !important; color: #334155; font-weight: 450;
|
||
margin: 0 0 var(--dm-space-p);
|
||
}
|
||
.dm-article-h2 {
|
||
font-size: clamp(23px, 2vw, 30px) !important; font-weight: 800 !important; letter-spacing: -.3px !important;
|
||
color: #0f172a !important; line-height: 1.3 !important; margin: 48px 0 var(--dm-space-h);
|
||
text-wrap: balance;
|
||
}
|
||
/* Each article block is wrapped in its OWN ScrollReveal <div>, so a bare
|
||
:first-child rule matched every heading (each is the only child of its
|
||
wrapper) and zeroed its top margin, collapsing the gap above every
|
||
section heading. Scope the reset to only the article body's first block. */
|
||
.dm-article-body > :first-child :where(.dm-article-h2, .dm-article-h3),
|
||
.dm-article-body > .dm-article-h2:first-child,
|
||
.dm-article-body > .dm-article-h3:first-child { margin-top: 0; }
|
||
.dm-article-h3 {
|
||
font-size: clamp(19px, 1.5vw, 23px) !important; font-weight: 800 !important; letter-spacing: -.2px !important;
|
||
color: #1e293b !important; line-height: 1.34 !important; margin: 40px 0 18px;
|
||
text-wrap: balance;
|
||
}
|
||
@media (max-width: 600px) {
|
||
.dm-article-p { font-size: 16px !important; }
|
||
.dm-article-ul li, .dm-article-ol li { font-size: 15.5px; }
|
||
.dm-article-h2 { font-size: clamp(22px, 6vw, 28px) !important; margin-top: 38px; }
|
||
.dm-article-h3 { font-size: clamp(18px, 5vw, 22px) !important; }
|
||
}
|
||
|
||
.dm-article-ul, .dm-article-ol {
|
||
/* Top margin (was 0) separates the list from the paragraph above it;
|
||
matching bottom margin keeps it clear of the next heading/paragraph.
|
||
Slightly larger than --dm-space-p so the list reads as its own block. */
|
||
margin: clamp(26px, 2.4vw, 32px) 0 clamp(26px, 2.4vw, 32px);
|
||
padding-left: 2px; list-style: none;
|
||
display: flex; flex-direction: column; gap: 15px;
|
||
}
|
||
/* Prefixed with .dm-article-body so these beat the theme's global
|
||
".logico-front-end ul li:before" fontello-glyph bullet (specificity 0,1,3),
|
||
which otherwise replaces our clean red dot with a misaligned checkmark glyph
|
||
and adds its own 1.7em indent. */
|
||
.dm-article-body .dm-article-ul li, .dm-article-body .dm-article-ol li {
|
||
position: relative; padding-left: 34px;
|
||
font-size: 17px; line-height: 1.65; color: #334155; font-weight: 450;
|
||
}
|
||
.dm-article-body .dm-article-ul li::before {
|
||
content: ""; position: absolute; left: 7px; top: 10px;
|
||
width: 8px; height: 8px; border-radius: 50%; background: var(--dm-red);
|
||
/* kill any inherited fontello glyph from the global rule */
|
||
font-size: 0; line-height: 0;
|
||
}
|
||
.dm-article-ol { counter-reset: dm-li; }
|
||
.dm-article-body .dm-article-ol li { counter-increment: dm-li; }
|
||
.dm-article-body .dm-article-ol li::before {
|
||
content: counter(dm-li); position: absolute; left: 0; top: 0;
|
||
width: 24px; height: 24px; border-radius: 7px;
|
||
background: rgba(192,18,39,0.10); color: var(--dm-red);
|
||
font-size: 12px; font-weight: 800; display: flex; align-items: center; justify-content: center;
|
||
}
|
||
|
||
/* ── Quote ── */
|
||
.dm-article-quote {
|
||
position: relative; margin: var(--dm-space-quote) 0; padding: 30px 32px 30px 64px;
|
||
background: linear-gradient(135deg, #fbf2f3 0%, #fdf7f8 100%);
|
||
border-left: 4px solid var(--dm-red); border-radius: 0 18px 18px 0;
|
||
box-shadow: 0 8px 28px rgba(192, 18, 39, 0.06);
|
||
}
|
||
.dm-article-quote::before {
|
||
content: "\\201C"; position: absolute; left: 22px; top: 8px;
|
||
font-family: Georgia, "Times New Roman", serif;
|
||
font-size: 64px; line-height: 1; color: rgba(192, 18, 39, 0.28); font-weight: 700;
|
||
}
|
||
.dm-article-quote p {
|
||
font-size: clamp(19px, 2vw, 23px); line-height: 1.5; font-weight: 600;
|
||
font-style: italic; color: #1e293b; margin: 0;
|
||
}
|
||
.dm-article-quote cite {
|
||
display: block; margin-top: 16px; font-size: 13px; font-weight: 700;
|
||
font-style: normal; color: var(--dm-red); text-transform: uppercase; letter-spacing: .6px;
|
||
}
|
||
@media (max-width: 600px) { .dm-article-quote { padding: 26px 22px; } .dm-article-quote::before { display: none; } }
|
||
|
||
/* ── Images ── */
|
||
.dm-article-figure { margin: var(--dm-space-img) 0; }
|
||
.dm-article-figure-img {
|
||
position: relative; display: block; width: 100%; aspect-ratio: 16 / 9;
|
||
border-radius: var(--dm-radius-img); overflow: hidden; box-shadow: 0 14px 34px rgba(15,23,42,0.10);
|
||
}
|
||
.dm-article-figure figcaption {
|
||
margin-top: 14px; font-size: 13.5px; color: #94a3b8; font-weight: 500;
|
||
text-align: center; font-style: italic;
|
||
}
|
||
|
||
/* ── Sidebar ── */
|
||
.dm-blog-aside-wrap { position: relative; }
|
||
.dm-blog-sidebar {
|
||
display: flex; flex-direction: column; gap: 18px;
|
||
position: sticky; top: var(--dm-sticky-top);
|
||
}
|
||
@media (max-width: 1024px) { .dm-blog-sidebar { position: static; gap: 20px; } }
|
||
|
||
.dm-blog-widget {
|
||
background: #fff; border: var(--dm-border); border-radius: var(--dm-radius-card);
|
||
padding: 20px; box-shadow: var(--dm-shadow-card);
|
||
}
|
||
.dm-blog-widget-title {
|
||
font-size: 13px !important; font-weight: 700 !important; text-transform: uppercase !important;
|
||
letter-spacing: .8px !important; line-height: 1.35 !important; color: #0f172a !important;
|
||
margin: 0 0 15px; padding: 0 0 12px;
|
||
border-bottom: 1px solid rgba(15,23,42,0.08);
|
||
overflow: visible; white-space: normal; word-break: normal;
|
||
}
|
||
|
||
/* Search */
|
||
.dm-sr-only {
|
||
position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
|
||
overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0;
|
||
}
|
||
.dm-blog-search { position: relative; }
|
||
.dm-blog-search-form { position: relative; }
|
||
.dm-blog-search-input {
|
||
width: 100%; height: 46px; border: 1.5px solid #e2e8f0; border-radius: 12px;
|
||
padding: 0 42px 0 15px; font-size: 14px; font-family: inherit; color: #0f172a;
|
||
background: #f8fafc; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease;
|
||
}
|
||
.dm-blog-search-input::placeholder { color: #9c9c9c; }
|
||
.dm-blog-search-input:focus {
|
||
outline: none; border-color: var(--dm-red); background: #fff;
|
||
box-shadow: 0 0 0 3px rgba(192,18,39,0.11);
|
||
}
|
||
.dm-blog-search-icon {
|
||
position: absolute; right: 14px; top: 50%; transform: translateY(-50%);
|
||
color: #94a3b8; pointer-events: none; display: flex;
|
||
}
|
||
.dm-blog-search-results {
|
||
position: absolute; z-index: 20; top: calc(100% + 8px); left: 0; right: 0;
|
||
background: #fff; border: 1px solid rgba(15,23,42,0.10); border-radius: 14px;
|
||
box-shadow: 0 18px 42px rgba(15,23,42,0.14); overflow: hidden;
|
||
}
|
||
.dm-blog-search-results ul { list-style: none; margin: 0; padding: 6px; }
|
||
.dm-blog-search-result {
|
||
display: flex; flex-direction: column; gap: 3px; padding: 10px 12px;
|
||
border-radius: 10px; text-decoration: none; transition: background .15s ease;
|
||
}
|
||
.dm-blog-search-result:hover { background: #f8fafc; }
|
||
.dm-blog-search-result-cat {
|
||
font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .8px; color: var(--dm-red);
|
||
}
|
||
.dm-blog-search-result-title { font-size: 13.5px; font-weight: 600; color: #1e293b; line-height: 1.35; }
|
||
.dm-blog-search-empty { margin: 0; padding: 14px 12px; font-size: 13px; color: #64748b; }
|
||
|
||
/* Recent posts */
|
||
.dm-blog-recent { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 15px; }
|
||
.dm-blog-recent-item { display: flex; gap: 13px; align-items: center; text-decoration: none; }
|
||
.dm-blog-recent-thumb {
|
||
position: relative; flex: 0 0 62px; width: 62px; height: 62px;
|
||
border-radius: 13px; overflow: hidden; background: #f1f5f9;
|
||
}
|
||
.dm-blog-recent-meta { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
|
||
.dm-blog-recent-title {
|
||
font-size: 13.5px; font-weight: 700; color: #1e293b; line-height: 1.35;
|
||
display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
|
||
transition: color .2s ease;
|
||
}
|
||
.dm-blog-recent-item:hover .dm-blog-recent-title { color: var(--dm-red); }
|
||
.dm-blog-recent-date { font-size: 11.5px; font-weight: 600; color: #94a3b8; }
|
||
|
||
/* Categories */
|
||
.dm-blog-categories { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
|
||
.dm-blog-category-item {
|
||
display: flex; align-items: center; justify-content: space-between; gap: 10px;
|
||
padding: 11px 2px; text-decoration: none; font-size: 14px; font-weight: 600; color: #334155 !important;
|
||
border-bottom: 1px solid rgba(15,23,42,0.06); transition: color .2s ease, padding-left .2s ease;
|
||
}
|
||
.dm-blog-categories li:last-child .dm-blog-category-item { border-bottom: none; }
|
||
.dm-blog-category-item:hover { color: var(--dm-red); padding-left: 6px; }
|
||
.dm-blog-category-item > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
||
.dm-blog-category-count {
|
||
flex: 0 0 auto; font-size: 11px; font-weight: 800; color: #94a3b8; background: #f1f5f9;
|
||
min-width: 24px; height: 22px; border-radius: 7px; display: inline-flex;
|
||
align-items: center; justify-content: center; padding: 0 7px;
|
||
}
|
||
|
||
/* CTA card */
|
||
.dm-blog-cta-card { background: #1f1f1f; border-color: #1f1f1f; }
|
||
.dm-blog-cta-title { font-size: 18px !important; font-weight: 800 !important; color: #fff !important; line-height: 1.32 !important; margin: 0 0 10px; letter-spacing: -.2px !important; }
|
||
.dm-blog-cta-text { font-size: 13.5px; line-height: 1.6; color: #c7c7c7; margin: 0 0 20px; font-weight: 450; }
|
||
.dm-blog-cta-btn {
|
||
display: inline-flex; align-items: center; gap: 8px;
|
||
background: var(--dm-red); color: #fff !important; font-size: 13.5px; font-weight: 700;
|
||
padding: 12px 22px; border-radius: 12px; text-decoration: none;
|
||
transition: background .2s ease, transform .2s ease;
|
||
}
|
||
.dm-blog-cta-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); }
|
||
`;function m({slug:a}){let{prev:c,next:h}=(0,g.getAdjacentPosts)(a),i=(0,g.getRelatedPosts)(a,3);return(0,b.jsxs)("section",{className:"dm-blog-footer","aria-label":"More articles",children:[(0,b.jsx)("style",{dangerouslySetInnerHTML:{__html:n}}),(0,b.jsxs)("div",{className:"dm-blog-footer-inner",children:[(c||h)&&(0,b.jsxs)("nav",{className:"dm-prevnext","aria-label":"Article navigation",children:[c?(0,b.jsxs)(d.default,{href:`/blog/${c.slug}`,className:"dm-prevnext-card dm-prevnext-prev",children:[(0,b.jsx)("span",{className:"dm-prevnext-thumb",children:(0,b.jsx)(e.default,{src:c.image,alt:c.title,fill:!0,sizes:"80px",style:{objectFit:"cover"}})}),(0,b.jsxs)("span",{className:"dm-prevnext-text",children:[(0,b.jsxs)("span",{className:"dm-prevnext-label",children:[(0,b.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,b.jsx)("line",{x1:"19",y1:"12",x2:"5",y2:"12"}),(0,b.jsx)("polyline",{points:"12 19 5 12 12 5"})]}),"Previous"]}),(0,b.jsx)("span",{className:"dm-prevnext-cat",children:c.category}),(0,b.jsx)("span",{className:"dm-prevnext-title",children:c.title})]})]}):(0,b.jsx)("span",{className:"dm-prevnext-placeholder"}),h?(0,b.jsxs)(d.default,{href:`/blog/${h.slug}`,className:"dm-prevnext-card dm-prevnext-next",children:[(0,b.jsxs)("span",{className:"dm-prevnext-text",children:[(0,b.jsxs)("span",{className:"dm-prevnext-label",children:["Next",(0,b.jsxs)("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,b.jsx)("line",{x1:"5",y1:"12",x2:"19",y2:"12"}),(0,b.jsx)("polyline",{points:"12 5 19 12 12 19"})]})]}),(0,b.jsx)("span",{className:"dm-prevnext-cat",children:h.category}),(0,b.jsx)("span",{className:"dm-prevnext-title",children:h.title})]}),(0,b.jsx)("span",{className:"dm-prevnext-thumb",children:(0,b.jsx)(e.default,{src:h.image,alt:h.title,fill:!0,sizes:"80px",style:{objectFit:"cover"}})})]}):(0,b.jsx)("span",{className:"dm-prevnext-placeholder"})]}),i.length>0&&(0,b.jsxs)("div",{className:"dm-related",children:[(0,b.jsx)("h2",{className:"dm-related-heading",children:"Related Articles"}),(0,b.jsx)("div",{className:"dm-related-grid",children:i.map((a,c)=>(0,b.jsx)(f.ScrollReveal,{delay:.08*c,duration:.7,yOffset:30,children:(0,b.jsxs)(d.default,{href:`/blog/${a.slug}`,className:"dm-related-card",children:[(0,b.jsxs)("div",{className:"dm-related-img",children:[(0,b.jsx)(e.default,{src:a.image,alt:a.title,fill:!0,sizes:"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw",style:{objectFit:"cover"}}),(0,b.jsx)("span",{className:"dm-related-badge",children:a.category})]}),(0,b.jsxs)("div",{className:"dm-related-body",children:[(0,b.jsx)("h3",{className:"dm-related-card-title",children:a.title}),(0,b.jsx)("p",{className:"dm-related-card-excerpt",children:a.excerpt}),(0,b.jsxs)("span",{className:"dm-related-readmore",children:["Read More",(0,b.jsxs)("svg",{className:"dm-related-readmore-arrow",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,b.jsx)("line",{x1:"5",y1:"12",x2:"19",y2:"12"}),(0,b.jsx)("polyline",{points:"12 5 19 12 12 19"})]})]})]})]})},a.slug))})]}),(0,b.jsxs)("div",{className:"dm-blog-contact-cta",children:[(0,b.jsxs)("div",{className:"dm-blog-contact-cta-content",children:[(0,b.jsx)("span",{className:"dm-blog-contact-eyebrow",children:"Let's talk logistics"}),(0,b.jsx)("h2",{className:"dm-blog-contact-title",children:"Ready to move smarter with Doormile?"}),(0,b.jsx)("p",{className:"dm-blog-contact-sub",children:"Tell us about your fleet and routes — we'll show you where the distance, vehicles and emissions are hiding."})]}),(0,b.jsxs)(d.default,{href:"/contact",className:"dm-blog-contact-btn",children:["Get in Touch",(0,b.jsxs)("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,b.jsx)("line",{x1:"5",y1:"12",x2:"19",y2:"12"}),(0,b.jsx)("polyline",{points:"12 5 19 12 12 19"})]})]})]})]})]})}let n=`
|
||
.dm-blog-footer {
|
||
font-family: var(--font-manrope), sans-serif; --dm-red: #c01227; --dm-red-hover: #e31d32;
|
||
/* The global theme applies 72px top/bottom section padding — strip it so the
|
||
inner container is the single source of vertical rhythm (no double gap). */
|
||
padding: 0 !important;
|
||
}
|
||
/* Neutralize the global theme's 120/80/60px UPPERCASE heading rules */
|
||
.dm-blog-footer :where(h1, h2, h3, h4, h5, h6) {
|
||
font-family: var(--font-manrope), sans-serif !important;
|
||
text-transform: none !important;
|
||
font-style: normal !important;
|
||
font-weight: 800;
|
||
}
|
||
/* Neutralize the theme's .elementor-kit-5 a (red color + underline) */
|
||
.dm-blog-footer a { text-decoration: none !important; }
|
||
/* Shared content container — mirrors SingleBlog's .dm-blog-wrap (same 1280px
|
||
max-width + 20→40px horizontal padding) so Prev/Next, Related and the CTA
|
||
align to the exact same left/right edges as the article body above.
|
||
Vertical rhythm: ~64px from the article end to the Prev/Next divider, then a
|
||
consistent ~64–72px section→section gap (no 120px+ voids). */
|
||
.dm-blog-footer-inner {
|
||
max-width: 1280px; margin: 0 auto;
|
||
/* Compact vertical rhythm on an 8px system. Top padding sets the
|
||
article→Prev/Next gap (~24–32px); the inter-section gap sets the
|
||
Prev/Next→Related gap (~32–48px). No large arbitrary voids. */
|
||
/* Minimal bottom padding — the global site footer already contributes its
|
||
own 20px top inset, so the CTA banner sits close to it without a void. */
|
||
padding: clamp(24px, 3vw, 32px) clamp(20px, 4vw, 40px) clamp(8px, 1.5vw, 16px);
|
||
display: flex; flex-direction: column; gap: clamp(32px, 4vw, 48px);
|
||
}
|
||
@media (max-width: 767px) {
|
||
.dm-blog-footer-inner {
|
||
padding-left: 16px;
|
||
padding-right: 16px;
|
||
}
|
||
}
|
||
|
||
/* Prev / Next */
|
||
.dm-prevnext {
|
||
display: grid; grid-template-columns: 1fr 1fr; gap: 20px;
|
||
/* Halved from 40px: tight divider→cards spacing without crowding. */
|
||
padding-top: clamp(16px, 2vw, 24px); border-top: 1px solid rgba(15,23,42,0.08);
|
||
}
|
||
@media (max-width: 640px) { .dm-prevnext { grid-template-columns: 1fr; } }
|
||
.dm-prevnext-placeholder { display: block; }
|
||
.dm-prevnext-card {
|
||
display: flex; gap: 16px; align-items: center; padding: 16px;
|
||
background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px;
|
||
text-decoration: none; transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease;
|
||
}
|
||
.dm-prevnext-card:hover {
|
||
transform: translateY(-4px); border-color: rgba(192,18,39,0.2);
|
||
box-shadow: 0 16px 34px rgba(192,18,39,0.10);
|
||
}
|
||
.dm-prevnext-thumb {
|
||
position: relative; flex: 0 0 80px; width: 80px; height: 80px;
|
||
border-radius: 16px; overflow: hidden; background: #f1f5f9;
|
||
}
|
||
.dm-prevnext-text { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
|
||
.dm-prevnext-next { text-align: right; }
|
||
.dm-prevnext-next .dm-prevnext-text { align-items: flex-end; }
|
||
.dm-prevnext-label {
|
||
display: inline-flex; align-items: center; gap: 6px;
|
||
font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; color: var(--dm-red);
|
||
}
|
||
.dm-prevnext-cat { font-size: 11px; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: .5px; }
|
||
.dm-prevnext-title {
|
||
font-size: 15.5px; font-weight: 700; color: #1e293b; line-height: 1.4;
|
||
display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
|
||
transition: color .2s ease;
|
||
}
|
||
.dm-prevnext-card:hover .dm-prevnext-title { color: var(--dm-red); }
|
||
|
||
/* Related */
|
||
.dm-related-heading {
|
||
font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 850 !important; letter-spacing: -.4px !important;
|
||
line-height: 1.25 !important; color: #0f172a !important; margin: 0 0 24px;
|
||
}
|
||
.dm-related-grid {
|
||
display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px;
|
||
}
|
||
@media (max-width: 1024px) { .dm-related-grid { grid-template-columns: repeat(2, 1fr); } }
|
||
@media (max-width: 700px) { .dm-related-grid { grid-template-columns: 1fr; gap: 24px; } }
|
||
|
||
.dm-related-card {
|
||
display: flex; flex-direction: column; height: 100%;
|
||
background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px;
|
||
overflow: hidden; box-shadow: 0 4px 24px rgba(15,23,42,0.05); text-decoration: none;
|
||
transition: transform .4s cubic-bezier(0.2,0.8,0.2,1), box-shadow .4s ease, border-color .4s ease;
|
||
}
|
||
.dm-related-card:hover {
|
||
transform: translateY(-8px); box-shadow: 0 22px 44px rgba(192,18,39,0.13);
|
||
border-color: rgba(192,18,39,0.2);
|
||
}
|
||
.dm-related-img {
|
||
position: relative; width: 100%; aspect-ratio: 16 / 10; overflow: hidden; background: #f1f5f9;
|
||
}
|
||
.dm-related-img img { transition: transform .5s cubic-bezier(0.2,0.8,0.2,1); }
|
||
.dm-related-card:hover .dm-related-img img { transform: scale(1.05); }
|
||
.dm-related-badge {
|
||
position: absolute; top: 14px; left: 14px; z-index: 5; background: var(--dm-red); color: #fff;
|
||
font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.2px;
|
||
padding: 5px 11px; border-radius: 8px; box-shadow: 0 4px 12px rgba(192,18,39,0.25);
|
||
}
|
||
.dm-related-body { display: flex; flex-direction: column; flex: 1; padding: 22px; }
|
||
.dm-related-card-title {
|
||
font-size: 17px !important; font-weight: 800 !important; color: #1e293b !important; line-height: 1.4 !important;
|
||
letter-spacing: -.2px !important; margin: 0 0 10px;
|
||
display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
|
||
transition: color .2s ease;
|
||
}
|
||
.dm-related-card:hover .dm-related-card-title { color: var(--dm-red); }
|
||
.dm-related-card-excerpt {
|
||
font-size: 13.5px; font-weight: 500; color: #64748b; line-height: 1.6; margin: 0 0 18px;
|
||
display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
|
||
}
|
||
.dm-related-readmore {
|
||
margin-top: auto; display: inline-flex; align-items: center; gap: 7px;
|
||
font-size: 12.5px; font-weight: 800; color: var(--dm-red);
|
||
text-transform: uppercase; letter-spacing: .6px;
|
||
}
|
||
.dm-related-readmore-arrow { transition: transform .3s cubic-bezier(0.2,0.8,0.2,1); }
|
||
.dm-related-card:hover .dm-related-readmore-arrow { transform: translateX(5px); }
|
||
|
||
/* Contact CTA banner */
|
||
.dm-blog-contact-cta {
|
||
display: flex; align-items: center; justify-content: space-between; gap: 32px;
|
||
flex-wrap: wrap;
|
||
background: linear-gradient(135deg, #1a1a1a 0%, #2d1417 100%);
|
||
border-radius: 30px; padding: clamp(32px, 4vw, 56px);
|
||
position: relative; overflow: hidden;
|
||
}
|
||
.dm-blog-contact-cta::after {
|
||
content: ""; position: absolute; right: -80px; top: -80px; width: 300px; height: 300px;
|
||
background: radial-gradient(circle, rgba(192,18,39,0.40), transparent 70%);
|
||
pointer-events: none;
|
||
}
|
||
.dm-blog-contact-cta-content { position: relative; z-index: 1; max-width: 640px; }
|
||
.dm-blog-contact-eyebrow {
|
||
display: inline-block; font-size: 12px; font-weight: 800; text-transform: uppercase;
|
||
letter-spacing: 1.4px; color: #ff8088; margin-bottom: 14px;
|
||
}
|
||
.dm-blog-contact-title {
|
||
font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 800 !important; line-height: 1.25 !important;
|
||
letter-spacing: -.3px !important; color: #ffffff !important; margin: 0 0 12px; text-wrap: balance;
|
||
}
|
||
.dm-blog-contact-sub {
|
||
font-size: 15.5px; line-height: 1.65; color: #e2e2e2; margin: 0; font-weight: 450;
|
||
}
|
||
.dm-blog-contact-btn {
|
||
position: relative; z-index: 1; flex-shrink: 0;
|
||
display: inline-flex; align-items: center; justify-content: center; gap: 10px;
|
||
background: var(--dm-red); color: #fff !important; font-size: 15px; font-weight: 700;
|
||
padding: 16px 32px; border-radius: 16px; text-decoration: none;
|
||
box-shadow: 0 10px 26px rgba(192,18,39,0.34);
|
||
transition: background .2s ease, transform .2s ease;
|
||
}
|
||
.dm-blog-contact-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); }
|
||
@media (max-width: 720px) {
|
||
.dm-blog-contact-cta { flex-direction: column; align-items: flex-start; gap: 26px; }
|
||
.dm-blog-contact-btn { width: 100%; }
|
||
}
|
||
`;async function o({params:a}){let{slug:b}=await a,c=(0,g.getPostBySlug)(b);if(!c)return{title:"Article Not Found – Doormile"};let d=`${g.SITE_URL}/blog/${c.slug}`,e=`${g.SITE_URL}${c.image}`;return{title:`${c.title} – Doormile`,description:c.excerpt,keywords:[c.category,"last-mile logistics","EV fleet","MileTruth","route optimisation"],authors:[{name:c.author}],alternates:{canonical:d},openGraph:{type:"article",title:c.title,description:c.excerpt,url:d,siteName:"Doormile",images:[{url:e,alt:c.title}],publishedTime:new Date(`${c.date}T00:00:00Z`).toISOString(),authors:[c.author]},twitter:{card:"summary_large_image",title:c.title,description:c.excerpt,images:[e]}}}async function p({params:a}){let{slug:d}=await a,e=(0,g.getPostBySlug)(d);e||(0,c.notFound)();let f=`${g.SITE_URL}/blog/${e.slug}`,h={"@context":"https://schema.org","@type":"Article",headline:e.title,description:e.excerpt,image:[`${g.SITE_URL}${e.image}`],datePublished:new Date(`${e.date}T00:00:00Z`).toISOString(),dateModified:new Date(`${e.date}T00:00:00Z`).toISOString(),author:{"@type":"Organization",name:e.author,url:g.SITE_URL},publisher:{"@type":"Organization",name:"Doormile",logo:{"@type":"ImageObject",url:`${g.SITE_URL}/images/cropped-image-2.png`}},mainEntityOfPage:{"@type":"WebPage","@id":f},articleSection:e.category},i={"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"Home",item:g.SITE_URL},{"@type":"ListItem",position:2,name:"Blog",item:`${g.SITE_URL}/blog`},{"@type":"ListItem",position:3,name:e.title,item:f}]};return(0,b.jsxs)("div",{className:"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none",children:[(0,b.jsx)("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:JSON.stringify(h)}}),(0,b.jsx)("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:JSON.stringify(i)}}),(0,b.jsx)("div",{className:"content",children:(0,b.jsxs)("div",{className:"content-inner",children:[(0,b.jsx)(k,{post:e}),(0,b.jsx)(m,{slug:e.slug})]})})]})}a.s(["default",0,p,"generateMetadata",0,o,"generateStaticParams",0,function(){return(0,g.getAllSlugs)().map(a=>({slug:a}))}],67932)},7014,a=>{a.n(a.i(67932))}];
|
||
|
||
//# sourceMappingURL=src_0nu2mva._.js.map
|