"use client"; import { useEffect, useRef } from "react"; import { ScrollReveal, StaggerChildren } from "@/animations/Reveal"; const CAPABILITIES = [ { title: "Demand Forecasting", desc: "AI-driven forward projection of cargo demand, preemptively positioning aircraft and ground capacity.", icon: ( ), }, { title: "Dynamic Pricing", desc: "Real-time rate adjustments that track market capacity fluctuations and optimize yield.", icon: ( ), }, { title: "Route Optimization", desc: "Dynamic scheduling for ground EV pickups and flights that bypasses congestion for the fastest path.", icon: ( ), }, { title: "Load Balancing", desc: "Automated weight-and-balance modeling for optimal, safe aircraft load layout within minutes.", icon: ( ), }, { title: "Predictive Maintenance", desc: "Continuous telemetry monitoring triggers preemptive alerts, drastically reducing aircraft downtime.", icon: ( ), }, { title: "Real-Time Tracking", desc: "End-to-end sensor monitoring keeps shippers, airline, and EV operators updated on exact shipment state.", icon: ( ), }, ]; export default function WingsMileTruth() { const canvasRef = useRef(null); useEffect(() => { const canvas = canvasRef.current; if (!canvas) return; const ctx = canvas.getContext("2d"); if (!ctx) return; const reduced = window.matchMedia?.("(prefers-reduced-motion: reduce)").matches; let width = (canvas.width = canvas.offsetWidth); let height = (canvas.height = canvas.offsetHeight); const handleResize = () => { width = canvas.width = canvas.offsetWidth; height = canvas.height = canvas.offsetHeight; }; window.addEventListener("resize", handleResize); const nodes = [ { x: 0.12, y: 0.5 }, { x: 0.34, y: 0.25 }, { x: 0.56, y: 0.65 }, { x: 0.78, y: 0.3 }, { x: 0.92, y: 0.6 }, ]; const particles = [ { from: 0, to: 1, t: 0, speed: 0.006 }, { from: 1, to: 2, t: 0.4, speed: 0.005 }, { from: 2, to: 3, t: 0.15, speed: 0.007 }, { from: 3, to: 4, t: 0.6, speed: 0.005 }, ]; let raf: number; const draw = () => { ctx.clearRect(0, 0, width, height); ctx.lineWidth = 1.5; ctx.setLineDash([6, 6]); ctx.strokeStyle = "rgba(200, 16, 46, 0.16)"; ctx.beginPath(); for (let i = 0; i < nodes.length - 1; i++) { ctx.moveTo(nodes[i].x * width, nodes[i].y * height); ctx.lineTo(nodes[i + 1].x * width, nodes[i + 1].y * height); } ctx.stroke(); ctx.setLineDash([]); if (!reduced) { particles.forEach((p) => { p.t += p.speed; if (p.t >= 1) p.t = 0; const a = nodes[p.from]; const b = nodes[p.to]; const x = a.x * width + (b.x * width - a.x * width) * p.t; const y = a.y * height + (b.y * height - a.y * height) * p.t; ctx.beginPath(); ctx.arc(x, y, 3.5, 0, Math.PI * 2); ctx.fillStyle = "#c8102e"; ctx.shadowColor = "#c8102e"; ctx.shadowBlur = 10; ctx.fill(); ctx.shadowBlur = 0; }); } nodes.forEach((n) => { const x = n.x * width; const y = n.y * height; ctx.beginPath(); ctx.arc(x, y, 7, 0, Math.PI * 2); ctx.fillStyle = "rgba(200, 16, 46, 0.1)"; ctx.fill(); ctx.beginPath(); ctx.arc(x, y, 3, 0, Math.PI * 2); ctx.fillStyle = "rgba(255, 255, 255, 0.25)"; ctx.fill(); }); if (!reduced) raf = requestAnimationFrame(draw); }; draw(); return () => { window.removeEventListener("resize", handleResize); if (raf) cancelAnimationFrame(raf); }; }, []); return ( <> / MileTruth™ AI / The intelligence layer behind every delivery {CAPABILITIES.map((c) => ( {c.icon} {c.title} {c.desc} ))} Digital Twin of the Logistics Network A live virtual model of every ground vehicle, terminal, and flight — simulating what-if scenarios before bottlenecks ever form. SaaS Ready > ); }
{c.desc}
A live virtual model of every ground vehicle, terminal, and flight — simulating what-if scenarios before bottlenecks ever form.