diff --git a/__tests__/landingPage.test.tsx b/__tests__/landingPage.test.tsx new file mode 100644 index 0000000..0250b34 --- /dev/null +++ b/__tests__/landingPage.test.tsx @@ -0,0 +1,30 @@ +import React from 'react'; +import { render, screen } from '@testing-library/react'; +import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; +import Home from '@/app/page'; + +const createWrapper = () => { + const queryClient = new QueryClient({ + defaultOptions: { + queries: { + retry: false, + }, + }, + }); + + return ({ children }: { children: React.ReactNode }) => ( + {children} + ); +}; + +describe('Home landing page', () => { + it('renders the industry solutions section and dark footer content', () => { + render(, { wrapper: createWrapper() }); + + expect(screen.getByText(/Independent Carriers/i)).toBeInTheDocument(); + expect(screen.getByText(/Precision Industry Solutions/i)).toBeInTheDocument(); + expect(screen.getByRole('button', { name: /explore carriers/i })).toBeInTheDocument(); + expect(screen.getByText(/Blockchain-powered logistics infrastructure/i)).toBeInTheDocument(); + expect(screen.getByText(/All rights reserved/i)).toBeInTheDocument(); + }); +}); diff --git a/app/page.tsx b/app/page.tsx index af2d3e9..8fc9222 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,12 +1,93 @@ +import { + ArrowRight, + Clock3, + Globe, + Map, + MessageSquareText, + Package, + Play, + Send, + ShieldCheck, + Truck, + TrendingUp, +} from 'lucide-react'; import { WorkflowCards } from '@/components/deliveries/WorkflowCards'; import { ValueProps } from '@/components/landing/ValueProps'; import { CallToAction } from '@/components/landing/CallToAction'; import { TrustBar } from '@/components/landing/TrustBar'; import { PricingCards } from '@/components/pricing/PricingCards'; +const solutionFeatures = [ + { + title: 'Vetted carriers', + description: 'Built-in compliance and on-time score tracking.', + icon: Truck, + }, + { + title: 'Smart routing', + description: 'Dynamic planning across regional and national lanes.', + icon: Map, + }, + { + title: 'Secure payouts', + description: 'Escrow-backed settlements with instant verification.', + icon: ShieldCheck, + }, + { + title: 'Live visibility', + description: 'Shipment milestones stay visible to every stakeholder.', + icon: TrendingUp, + }, +]; + +const precisionCards = [ + { + title: 'Healthcare', + description: 'Temperature-controlled, time-sensitive transport.', + accent: 'from-cyan-500/25 to-sky-500/10', + }, + { + title: 'Retail & eCommerce', + description: 'Fast fulfillment from warehouse to doorstep.', + accent: 'from-violet-500/25 to-purple-500/10', + }, + { + title: 'Food & Beverage', + description: 'Freshness-first routing and shelf-life monitoring.', + accent: 'from-amber-500/25 to-orange-500/10', + }, + { + title: 'Manufacturing', + description: 'Heavy freight coordination with precise delivery windows.', + accent: 'from-emerald-500/25 to-teal-500/10', + }, +]; + +const footerColumns = [ + { + heading: 'Platform', + links: ['Deliveries', 'Drivers', 'Escrow', 'Pricing'], + }, + { + heading: 'Solutions', + links: ['Freight', 'Warehousing', 'Fleet Ops', 'Compliance'], + }, + { + heading: 'Company', + links: ['About', 'Docs', 'Contact', 'Privacy'], + }, +]; + +const socialLinks = [ + { label: 'LinkedIn', icon: Globe }, + { label: 'Twitter', icon: Send }, + { label: 'Instagram', icon: MessageSquareText }, + { label: 'YouTube', icon: Play }, +]; + export default function Home() { return ( -
+
@@ -32,7 +113,7 @@ export default function Home() {
+
+ +
+
+
+
+
+

+ Fleet coverage +

+

+ On-demand logistics across every lane. +

+
+
+ +
+
+ +
+
+

Network coverage

+

48 regions

+
+ +
+
+
+
+
+
+
+
+
+
+ +
+ {solutionFeatures.map(({ title, description, icon: Icon }) => ( +
+
+ +
+

{title}

+

{description}

+
+ ))} +
+
-