diff --git a/frontend/package-lock.json b/frontend/package-lock.json index ce6ca71..21282a3 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -158,6 +158,7 @@ "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", @@ -540,6 +541,7 @@ } ], "license": "MIT", + "peer": true, "engines": { "node": ">=20.19.0" }, @@ -588,6 +590,7 @@ } ], "license": "MIT", + "peer": true, "engines": { "node": ">=20.19.0" } @@ -2095,8 +2098,7 @@ "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/babel__core": { "version": "7.20.5", @@ -2243,6 +2245,7 @@ "integrity": "sha512-F0R/h2+dsy5wJAUe3tAU6oqa2qbWY5TpNfL/RGmo1y38hiyO1w3x2jPtt76wmuaJI4DQnOBu21cNXQ2STIUUWg==", "devOptional": true, "license": "MIT", + "peer": true, "dependencies": { "undici-types": "~6.21.0" } @@ -2253,6 +2256,7 @@ "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", "devOptional": true, "license": "MIT", + "peer": true, "dependencies": { "csstype": "^3.2.2" } @@ -2263,6 +2267,7 @@ "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", "dev": true, "license": "MIT", + "peer": true, "peerDependencies": { "@types/react": "^19.2.0" } @@ -2308,6 +2313,7 @@ "integrity": "sha512-30ScMRHIAD33JJQkgfGW1t8CURZtjc2JpTrq5n2HFhOefbAhb7ucc7xJwdWcrEtqUIYJ73Nybpsggii6GtAHjA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.57.2", "@typescript-eslint/types": "8.57.2", @@ -2659,6 +2665,7 @@ "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -2709,7 +2716,6 @@ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -2897,6 +2903,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -3349,8 +3356,7 @@ "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/dunder-proto": { "version": "1.0.1", @@ -3531,6 +3537,7 @@ "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -4320,6 +4327,7 @@ "integrity": "sha512-0+MoQNYyr2rBHqO1xilltfDjV9G7ymYGlAUazgcDLQaUf8JDHbuGwsxN6U9qWaElZ4w1B2r7yEGIL3GdeW3Rug==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@acemir/cssom": "^0.9.31", "@asamuzakjp/dom-selector": "^6.8.1", @@ -4723,7 +4731,6 @@ "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", "dev": true, "license": "MIT", - "peer": true, "bin": { "lz-string": "bin/bin.js" } @@ -4964,6 +4971,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -5022,7 +5030,6 @@ "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", @@ -5038,7 +5045,6 @@ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10" }, @@ -5075,6 +5081,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -5084,6 +5091,7 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz", "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==", "license": "MIT", + "peer": true, "dependencies": { "scheduler": "^0.27.0" }, @@ -5103,6 +5111,7 @@ "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz", "integrity": "sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==", "license": "MIT", + "peer": true, "dependencies": { "@types/use-sync-external-store": "^0.0.6", "use-sync-external-store": "^1.4.0" @@ -5217,7 +5226,8 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/redux-thunk": { "version": "3.1.0", @@ -5580,6 +5590,7 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -5682,6 +5693,7 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", "license": "MIT", + "peer": true, "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", @@ -5967,6 +5979,7 @@ "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", "dev": true, "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index dc45f28..c8b7a9c 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1,3 +1,22 @@ +import { createBrowserRouter, RouterProvider } from 'react-router-dom'; +import Home from './pages/Home/Home'; +import Signup from './pages/auth/Signup/Signup'; +import Login from './pages/auth/Login/Login'; +import ForgotPassword from './pages/auth/ForgotPassword/ForgotPassword'; +import CompanyDashboard from './pages/dashboard/Company/CompanyDashboard'; +import Shipments from './pages/Shipments/Shipments'; +import ShipmentDetail from './pages/Shipment/ShipmentDetail'; +import BlockchainLedger from './pages/BlockchainLedger/BlockchainLedger'; +import Settlements from './pages/Settlements/Settlements'; +import Analytics from './pages/Analytics/Analytics'; +import Settings from './pages/Settings/Settings'; +import UserManagement from './pages/dashboard/Company/UserManagement/UserManagement'; +import CompanySettings from './pages/dashboard/Company/Settings/CompanySettings'; +import HelpCenter from './pages/HelpCenter/HelpCenter'; +import CreateShipment from './pages/dashboard/Company/CreateShipment/CreateShipment'; +import DashboardLayout from './components/layout/DashboardLayout'; +import ProtectedRoute from './components/auth/ProtectedRoute/ProtectedRoute'; +import './App.css'; import { createBrowserRouter, RouterProvider } from "react-router-dom"; import Home from "./pages/Home/Home"; import Signup from "./pages/auth/Signup/Signup"; @@ -59,6 +78,11 @@ const router = createBrowserRouter([ element: , }, { + path: '/dashboard/shipments/:id', + element: , + }, + { + path: '/dashboard/shipments/create', path: "/dashboard/shipments/:id", element: , }, diff --git a/frontend/src/components/ui/StatusBadge/StatusBadge.css b/frontend/src/components/ui/StatusBadge/StatusBadge.css new file mode 100644 index 0000000..e14a8ba --- /dev/null +++ b/frontend/src/components/ui/StatusBadge/StatusBadge.css @@ -0,0 +1,29 @@ +.status-badge { + display: inline-block; + padding: 4px 10px; + border-radius: 99px; + font-size: 11px; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.025em; +} + +.status-in-transit { + background-color: rgba(59, 130, 246, 0.1); + color: #60a5fa; +} + +.status-delivered { + background-color: rgba(16, 185, 129, 0.1); + color: #34d399; +} + +.status-pending { + background-color: rgba(245, 158, 11, 0.1); + color: #fbbf24; +} + +.status-cancelled { + background-color: rgba(239, 68, 68, 0.1); + color: #f87171; +} \ No newline at end of file diff --git a/frontend/src/components/ui/StatusBadge/StatusBadge.tsx b/frontend/src/components/ui/StatusBadge/StatusBadge.tsx new file mode 100644 index 0000000..491ccc4 --- /dev/null +++ b/frontend/src/components/ui/StatusBadge/StatusBadge.tsx @@ -0,0 +1,50 @@ +import React from 'react'; +import './StatusBadge.css'; + +export type ShipmentStatus = + | 'In Transit' + | 'Delivered' + | 'Pending Approval' + | 'Cancelled' + | 'Picked Up' + | 'At Checkpoint' + | 'Out for Delivery'; + +export interface StatusBadgeProps { + status: ShipmentStatus; + className?: string; +} + +export const StatusBadge: React.FC = ({ + status, + className = '' +}) => { + const getStatusClassName = (status: ShipmentStatus): string => { + switch (status) { + case 'In Transit': + case 'Picked Up': + case 'At Checkpoint': + case 'Out for Delivery': + return 'status-in-transit'; + case 'Delivered': + return 'status-delivered'; + case 'Pending Approval': + return 'status-pending'; + case 'Cancelled': + return 'status-cancelled'; + default: + return 'status-in-transit'; + } + }; + + return ( + + {status} + + ); +}; + +export default StatusBadge; \ No newline at end of file diff --git a/frontend/src/components/ui/StatusBadge/index.ts b/frontend/src/components/ui/StatusBadge/index.ts new file mode 100644 index 0000000..66736cf --- /dev/null +++ b/frontend/src/components/ui/StatusBadge/index.ts @@ -0,0 +1,2 @@ +export { StatusBadge, type StatusBadgeProps, type ShipmentStatus } from './StatusBadge'; +export { default } from './StatusBadge'; \ No newline at end of file diff --git a/frontend/src/pages/Shipment/ShipmentDetail.tsx b/frontend/src/pages/Shipment/ShipmentDetail.tsx index af56ca5..ac1cfee 100644 --- a/frontend/src/pages/Shipment/ShipmentDetail.tsx +++ b/frontend/src/pages/Shipment/ShipmentDetail.tsx @@ -1,4 +1,62 @@ import React from 'react'; +import { useParams } from 'react-router-dom'; +import ShipmentHeader from './sections/ShipmentHeader/ShipmentHeader'; +import { ShipmentStatus } from '../../components/ui/StatusBadge'; + +// Mock data for demonstration +const MOCK_SHIPMENT_DATA = { + id: 'SHP-2024-001234', + status: 'In Transit' as ShipmentStatus, + sender: { + name: 'Acme Corporation', + address: '123 Business Ave, New York, NY 10001', + }, + receiver: { + name: 'Global Logistics Ltd', + address: '456 Commerce St, Los Angeles, CA 90210', + }, + createdAt: '2024-04-15T10:30:00Z', + expectedDelivery: '2024-04-22T16:00:00Z', +}; + +const ShipmentDetail: React.FC = () => { + const { id } = useParams<{ id: string }>(); + + // In a real app, you would fetch shipment data based on the ID + const shipmentData = MOCK_SHIPMENT_DATA; + + const handleTrack = () => { + console.log('Tracking shipment:', id); + // Implement tracking functionality + }; + + const handleDownloadProof = () => { + console.log('Downloading proof for shipment:', id); + // Implement download proof functionality + }; + + const handleShare = () => { + console.log('Sharing shipment:', id); + // Implement share functionality + }; + + return ( +
+ + + {/* Additional shipment detail sections would go here */} +
+ Additional shipment details and tracking information will be displayed here. import MilestoneTimeline from './sections/MilestoneTimeline/MilestoneTimeline'; import { Milestone } from './sections/MilestoneTimeline/types'; @@ -78,6 +136,7 @@ const ShipmentDetail: React.FC = () => { ); }; +export default ShipmentDetail; // Simple Package icon for the background decoration const Package = ({ className }: { className?: string }) => ( diff --git a/frontend/src/pages/Shipment/sections/ShipmentHeader/ShipmentHeader.css b/frontend/src/pages/Shipment/sections/ShipmentHeader/ShipmentHeader.css new file mode 100644 index 0000000..23f7747 --- /dev/null +++ b/frontend/src/pages/Shipment/sections/ShipmentHeader/ShipmentHeader.css @@ -0,0 +1,242 @@ +.shipment-header { + background-color: var(--bg-card); + border: 1px solid var(--border-color); + border-radius: 16px; + padding: 24px; + margin-bottom: 24px; +} + +.shipment-header-content { + display: grid; + grid-template-columns: auto 1fr auto; + gap: 32px; + align-items: start; +} + +/* Left Section - Shipment ID and Status */ +.shipment-header-left { + min-width: 200px; +} + +.shipment-id-section { + display: flex; + flex-direction: column; + gap: 12px; +} + +.shipment-id { + font-size: 28px; + font-weight: 700; + color: var(--text-primary); + margin: 0; + letter-spacing: -0.025em; +} + +/* Center Section - Parties and Dates */ +.shipment-header-center { + display: flex; + flex-direction: column; + gap: 24px; + min-width: 0; /* Allow shrinking */ +} + +.shipment-parties { + display: flex; + align-items: center; + gap: 24px; +} + +.party-info { + flex: 1; + min-width: 0; /* Allow text truncation */ +} + +.party-label { + font-size: 12px; + font-weight: 600; + color: var(--text-secondary); + text-transform: uppercase; + letter-spacing: 0.05em; + margin: 0 0 8px 0; +} + +.party-name { + font-size: 16px; + font-weight: 600; + color: var(--text-primary); + margin: 0 0 4px 0; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.party-address { + font-size: 14px; + color: var(--text-secondary); + margin: 0; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.route-arrow { + color: var(--accent-blue); + flex-shrink: 0; +} + +.shipment-dates { + display: flex; + gap: 32px; +} + +.date-info { + display: flex; + flex-direction: column; + gap: 4px; +} + +.date-label { + font-size: 12px; + font-weight: 600; + color: var(--text-secondary); + text-transform: uppercase; + letter-spacing: 0.05em; +} + +.date-value { + font-size: 14px; + font-weight: 500; + color: var(--text-primary); +} + +/* Right Section - Action Buttons */ +.shipment-header-right { + min-width: 200px; +} + +.action-buttons { + display: flex; + flex-direction: column; + gap: 8px; +} + +.action-btn { + display: flex; + align-items: center; + gap: 8px; + padding: 10px 16px; + border-radius: 8px; + font-size: 14px; + font-weight: 500; + border: none; + cursor: pointer; + transition: all 0.2s ease; + white-space: nowrap; +} + +.action-btn:hover { + transform: translateY(-1px); +} + +.action-btn:active { + transform: translateY(0); +} + +.action-btn.primary { + background-color: var(--accent-blue); + color: white; +} + +.action-btn.primary:hover { + background-color: #2563eb; +} + +.action-btn.secondary { + background-color: transparent; + color: var(--text-secondary); + border: 1px solid var(--border-color); +} + +.action-btn.secondary:hover { + background-color: var(--bg-card-header); + color: var(--text-primary); + border-color: var(--accent-blue); +} + +/* Mobile Responsive */ +@media (max-width: 1024px) { + .shipment-header-content { + grid-template-columns: 1fr; + gap: 24px; + } + + .shipment-header-left { + min-width: auto; + } + + .shipment-id-section { + flex-direction: row; + align-items: center; + justify-content: space-between; + } + + .shipment-parties { + flex-direction: column; + gap: 16px; + align-items: stretch; + } + + .route-arrow { + align-self: center; + transform: rotate(90deg); + } + + .party-info { + text-align: center; + } + + .party-name, + .party-address { + white-space: normal; + overflow: visible; + text-overflow: unset; + } + + .shipment-dates { + justify-content: space-between; + } + + .shipment-header-right { + min-width: auto; + } + + .action-buttons { + flex-direction: row; + gap: 12px; + } + + .action-btn { + flex: 1; + justify-content: center; + } +} + +@media (max-width: 640px) { + .shipment-header { + padding: 16px; + } + + .shipment-id { + font-size: 24px; + } + + .shipment-dates { + flex-direction: column; + gap: 16px; + } + + .action-buttons { + flex-direction: column; + gap: 8px; + } +} \ No newline at end of file diff --git a/frontend/src/pages/Shipment/sections/ShipmentHeader/ShipmentHeader.tsx b/frontend/src/pages/Shipment/sections/ShipmentHeader/ShipmentHeader.tsx new file mode 100644 index 0000000..c8e6bbf --- /dev/null +++ b/frontend/src/pages/Shipment/sections/ShipmentHeader/ShipmentHeader.tsx @@ -0,0 +1,121 @@ +import React from 'react'; +import { Download, Share2, MapPin } from 'lucide-react'; +import { StatusBadge, ShipmentStatus } from '../../../../components/ui/StatusBadge/StatusBadge'; +import './ShipmentHeader.css'; + +export interface ShipmentHeaderProps { + shipmentId: string; + status: ShipmentStatus; + sender: { + name: string; + address: string; + }; + receiver: { + name: string; + address: string; + }; + createdAt: string; + expectedDelivery: string; + onTrack?: () => void; + onDownloadProof?: () => void; + onShare?: () => void; +} + +export const ShipmentHeader: React.FC = ({ + shipmentId, + status, + sender, + receiver, + createdAt, + expectedDelivery, + onTrack = () => console.log('Track clicked'), + onDownloadProof = () => console.log('Download Proof clicked'), + onShare = () => console.log('Share clicked'), +}) => { + const formatDate = (dateString: string): string => { + const date = new Date(dateString); + return date.toLocaleDateString('en-US', { + year: 'numeric', + month: 'short', + day: 'numeric', + }); + }; + + return ( +
+
+ {/* Left Section - Shipment ID and Status */} +
+
+

#{shipmentId}

+ +
+
+ + {/* Center Section - Sender and Receiver Details */} +
+
+
+

From

+

{sender.name}

+

{sender.address}

+
+ +
+ +
+ +
+

To

+

{receiver.name}

+

{receiver.address}

+
+
+ +
+
+ Created: + {formatDate(createdAt)} +
+
+ Expected Delivery: + {formatDate(expectedDelivery)} +
+
+
+ + {/* Right Section - Action Buttons */} +
+
+ + + +
+
+
+ + ); +}; + +export default ShipmentHeader; \ No newline at end of file diff --git a/frontend/tsconfig.tsbuildinfo b/frontend/tsconfig.tsbuildinfo index 561f1a0..2bb3d2c 100644 --- a/frontend/tsconfig.tsbuildinfo +++ b/frontend/tsconfig.tsbuildinfo @@ -1 +1,3 @@ -{"root":["./src/app.tsx","./src/main.tsx","./src/vite-env.d.ts","./src/landingpage/landingpage.tsx","./src/landingpage/sections/hero/hero.tsx","./src/landingpage/sections/howitworks/howitworks.tsx","./src/landingpage/sections/whynavin/whynavin.tsx","./src/components/index.ts","./src/components/button/button.tsx","./src/components/button/index.ts","./src/components/card/card.tsx","./src/components/card/index.ts","./src/components/errorboundary/errorboundary.tsx","./src/components/navbar/navbar.tsx","./src/components/navbar/index.ts","./src/components/auth/protectedroute/protectedroute.test.tsx","./src/components/auth/protectedroute/protectedroute.tsx","./src/components/auth/protectedroute/index.ts","./src/components/auth/walletconnectbutton/walletconnectbutton.tsx","./src/components/auth/walletconnectbutton/index.ts","./src/components/common/breadcrumb/breadcrumb.tsx","./src/components/common/breadcrumb/index.ts","./src/components/common/breadcrumb/types.ts","./src/components/common/datatable/datatable.example.tsx","./src/components/common/datatable/datatable.tsx","./src/components/common/datatable/index.ts","./src/components/common/datatable/types.ts","./src/components/common/emptystate/emptystate.tsx","./src/components/common/emptystate/index.ts","./src/components/common/emptystate/types.ts","./src/components/common/modal/modal.tsx","./src/components/common/modal/index.ts","./src/components/common/pagination/pagination.example.tsx","./src/components/common/pagination/pagination.tsx","./src/components/common/pagination/index.ts","./src/components/common/pagination/types.ts","./src/components/common/statusbadge/statusbadge.tsx","./src/components/common/statusbadge/index.ts","./src/components/common/statusbadge/statusbadgevariants.ts","./src/components/dashboard/charts/deliverysuccesschart/deliverysuccesschart.test.tsx","./src/components/dashboard/charts/deliverysuccesschart/deliverysuccesschart.tsx","./src/components/dashboard/charts/deliverysuccesschart/index.ts","./src/components/dashboard/charts/deliverysuccesschart/mockdeliverydata.ts","./src/components/dashboard/charts/shipmentvolumechart/shipmentvolumechart.test.tsx","./src/components/dashboard/charts/shipmentvolumechart/shipmentvolumechart.tsx","./src/components/dashboard/charts/shipmentvolumechart/index.ts","./src/components/dashboard/charts/shipmentvolumechart/mockvolumedata.ts","./src/components/dashboard/statcard/statcard.tsx","./src/components/dashboard/statcard/index.ts","./src/components/layout/dashboardlayout.tsx","./src/components/layout/sidebar/sidebar.tsx","./src/components/layout/sidebar/index.ts","./src/components/layout/topheader/topheader.tsx","./src/components/layout/topheader/index.ts","./src/components/notifications/notificationdropdown/notificationdropdown.test.tsx","./src/components/notifications/notificationdropdown/notificationdropdown.tsx","./src/components/notifications/notificationdropdown/index.ts","./src/components/notifications/toast/toast.test.tsx","./src/components/notifications/toast/toast.tsx","./src/components/shipment/deliveryconfirmation/deliveryconfirmation.test.tsx","./src/components/shipment/deliveryconfirmation/deliveryconfirmation.tsx","./src/components/shipment/statusupdate/statusupdate.test.tsx","./src/components/shipment/statusupdate/statusupdate.tsx","./src/components/shipment/statusupdate/index.ts","./src/components/shipment/trackingtimeline/trackingtimeline.example.tsx","./src/components/shipment/trackingtimeline/trackingtimeline.test.tsx","./src/components/shipment/trackingtimeline/trackingtimeline.tsx","./src/components/shipment/trackingtimeline/index.ts","./src/context/toastcontext.tsx","./src/hooks/index.ts","./src/hooks/useauth.ts","./src/pages/analytics/analytics.tsx","./src/pages/blockchainledger/blockchainledger.tsx","./src/pages/componentdemos/paginationdemo/paginationdemo.tsx","./src/pages/helpcenter/helpcenter.tsx","./src/pages/home/home.tsx","./src/pages/landingpage/sections/features/features.tsx","./src/pages/notifications/notificationspage.tsx","./src/pages/payments/paymentdetailmodal/paymentdetailmodal.tsx","./src/pages/payments/paymenthistory/paymenthistory.tsx","./src/pages/payments/paymentsummarycards/paymentsummarycards.tsx","./src/pages/payments/paymentsummarycards/index.ts","./src/pages/settings/settings.tsx","./src/pages/settings/notificationpreferences/notificationpreferences.test.tsx","./src/pages/settings/notificationpreferences/notificationpreferences.tsx","./src/pages/settlements/settlements.tsx","./src/pages/shipment/shipmentdetail.tsx","./src/pages/shipment/sections/milestonetimeline/milestonetimeline.tsx","./src/pages/shipment/sections/milestonetimeline/types.ts","./src/pages/shipmentdetail/shipmentdetail.tsx","./src/pages/shipmentdetail/index.ts","./src/pages/shipmentdetail/deliveryproofupload/deliveryproofupload.tsx","./src/pages/shipmentdetail/milestonetimeline/milestonetimeline.example.tsx","./src/pages/shipmentdetail/milestonetimeline/milestonetimeline.test.tsx","./src/pages/shipmentdetail/milestonetimeline/milestonetimeline.tsx","./src/pages/shipmentdetail/paymentstatus/paymentstatus.tsx","./src/pages/shipmentdetail/sensordatacards/sensordatacards.tsx","./src/pages/shipmentdetail/shipmentdetailheader/shipmentdetailheader.tsx","./src/pages/shipmentdetail/shipmentdetailheader/index.ts","./src/pages/shipmentdetail/shipmentmap/shipmentmap.test.tsx","./src/pages/shipmentdetail/shipmentmap/shipmentmap.tsx","./src/pages/shipments/shipments.tsx","./src/pages/auth/forgotpassword/forgotpassword.tsx","./src/pages/auth/login/login.tsx","./src/pages/auth/signup/signup.tsx","./src/pages/dashboard/dashboard.tsx","./src/pages/dashboard/company/companydashboard.tsx","./src/pages/dashboard/company/createshipment/createshipment.tsx","./src/pages/dashboard/company/recentshipments/recentshipments.test.tsx","./src/pages/dashboard/company/recentshipments/recentshipments.tsx","./src/pages/dashboard/company/recentshipments/mockshipments.ts","./src/pages/dashboard/company/settings/companysettings.tsx","./src/pages/dashboard/company/usermanagement/usermanagement.tsx","./src/pages/dashboard/customer/customerdashboard.tsx","./src/pages/dashboard/customer/activeshipments/activeshipments.test.tsx","./src/pages/dashboard/customer/activeshipments/activeshipments.tsx","./src/pages/dashboard/customer/profile/customerprofile.tsx","./src/pages/dashboard/customer/shipmenthistory/shipmenthistory.tsx","./src/services/api/client.ts","./src/services/api/index.ts","./src/services/api/endpoints/auth.ts","./src/services/api/endpoints/shipments.ts","./src/services/api/interceptors/authinterceptor.ts","./src/services/api/interceptors/errorinterceptor.ts","./src/test/app.test.tsx","./src/test/setup.ts"],"version":"5.9.3"} \ No newline at end of file +{"root":["./src/app.tsx","./src/main.tsx","./src/vite-env.d.ts","./src/landingpage/landingpage.tsx","./src/landingpage/sections/hero/hero.tsx","./src/landingpage/sections/howitworks/howitworks.tsx","./src/landingpage/sections/whynavin/whynavin.tsx","./src/components/navbar/navbar.tsx","./src/components/auth/protectedroute/protectedroute.test.tsx","./src/components/auth/protectedroute/protectedroute.tsx","./src/components/auth/walletconnectbutton/walletconnectbutton.tsx","./src/components/dashboard/charts/deliverysuccesschart/deliverysuccesschart.test.tsx","./src/components/dashboard/charts/deliverysuccesschart/deliverysuccesschart.tsx","./src/components/dashboard/charts/deliverysuccesschart/mockdeliverydata.ts","./src/components/dashboard/charts/shipmentvolumechart/shipmentvolumechart.test.tsx","./src/components/dashboard/charts/shipmentvolumechart/shipmentvolumechart.tsx","./src/components/dashboard/charts/shipmentvolumechart/mockvolumedata.ts","./src/components/layout/dashboardlayout.tsx","./src/components/layout/topheader/topheader.tsx","./src/components/shipment/statusupdate/statusupdate.test.tsx","./src/components/shipment/statusupdate/statusupdate.tsx","./src/components/shipment/trackingtimeline/trackingtimeline.example.tsx","./src/components/shipment/trackingtimeline/trackingtimeline.test.tsx","./src/components/shipment/trackingtimeline/trackingtimeline.tsx","./src/components/ui/statusbadge/statusbadge.tsx","./src/components/ui/statusbadge/index.ts","./src/hooks/useauth.ts","./src/pages/analytics/analytics.tsx","./src/pages/blockchainledger/blockchainledger.tsx","./src/pages/helpcenter/helpcenter.tsx","./src/pages/home/home.tsx","./src/pages/landingpage/sections/features/features.tsx","./src/pages/settings/settings.tsx","./src/pages/settlements/settlements.tsx","./src/pages/shipment/shipmentdetail.tsx","./src/pages/shipment/sections/shipmentheader/shipmentheader.tsx","./src/pages/shipments/shipments.tsx","./src/pages/auth/forgotpassword/forgotpassword.tsx","./src/pages/auth/login/login.tsx","./src/pages/auth/signup/signup.tsx","./src/pages/dashboard/dashboard.tsx","./src/pages/dashboard/company/companydashboard.tsx","./src/pages/dashboard/company/createshipment/createshipment.tsx","./src/pages/dashboard/company/recentshipments/recentshipments.test.tsx","./src/pages/dashboard/company/recentshipments/recentshipments.tsx","./src/pages/dashboard/company/recentshipments/mockshipments.ts","./src/pages/dashboard/company/settings/companysettings.tsx","./src/pages/dashboard/company/usermanagement/usermanagement.tsx","./src/pages/dashboard/customer/customerdashboard.tsx","./src/pages/dashboard/customer/activeshipments/activeshipments.tsx","./src/test/app.test.tsx","./src/test/setup.ts"],"version":"5.9.3"} +{"root":["./src/app.tsx","./src/main.tsx","./src/vite-env.d.ts","./src/landingpage/landingpage.tsx","./src/landingpage/sections/hero/hero.tsx","./src/landingpage/sections/howitworks/howitworks.tsx","./src/landingpage/sections/whynavin/whynavin.tsx","./src/components/index.ts","./src/components/button/button.tsx","./src/components/button/index.ts","./src/components/card/card.tsx","./src/components/card/index.ts","./src/components/errorboundary/errorboundary.tsx","./src/components/navbar/navbar.tsx","./src/components/navbar/index.ts","./src/components/auth/protectedroute/protectedroute.test.tsx","./src/components/auth/protectedroute/protectedroute.tsx","./src/components/auth/protectedroute/index.ts","./src/components/auth/walletconnectbutton/walletconnectbutton.tsx","./src/components/auth/walletconnectbutton/index.ts","./src/components/common/breadcrumb/breadcrumb.tsx","./src/components/common/breadcrumb/index.ts","./src/components/common/breadcrumb/types.ts","./src/components/common/datatable/datatable.example.tsx","./src/components/common/datatable/datatable.tsx","./src/components/common/datatable/index.ts","./src/components/common/datatable/types.ts","./src/components/common/emptystate/emptystate.tsx","./src/components/common/emptystate/index.ts","./src/components/common/emptystate/types.ts","./src/components/common/modal/modal.tsx","./src/components/common/modal/index.ts","./src/components/common/pagination/pagination.example.tsx","./src/components/common/pagination/pagination.tsx","./src/components/common/pagination/index.ts","./src/components/common/pagination/types.ts","./src/components/common/statusbadge/statusbadge.tsx","./src/components/common/statusbadge/index.ts","./src/components/common/statusbadge/statusbadgevariants.ts","./src/components/dashboard/charts/deliverysuccesschart/deliverysuccesschart.test.tsx","./src/components/dashboard/charts/deliverysuccesschart/deliverysuccesschart.tsx","./src/components/dashboard/charts/deliverysuccesschart/index.ts","./src/components/dashboard/charts/deliverysuccesschart/mockdeliverydata.ts","./src/components/dashboard/charts/shipmentvolumechart/shipmentvolumechart.test.tsx","./src/components/dashboard/charts/shipmentvolumechart/shipmentvolumechart.tsx","./src/components/dashboard/charts/shipmentvolumechart/index.ts","./src/components/dashboard/charts/shipmentvolumechart/mockvolumedata.ts","./src/components/dashboard/statcard/statcard.tsx","./src/components/dashboard/statcard/index.ts","./src/components/layout/dashboardlayout.tsx","./src/components/layout/sidebar/sidebar.tsx","./src/components/layout/sidebar/index.ts","./src/components/layout/topheader/topheader.tsx","./src/components/layout/topheader/index.ts","./src/components/notifications/notificationdropdown/notificationdropdown.test.tsx","./src/components/notifications/notificationdropdown/notificationdropdown.tsx","./src/components/notifications/notificationdropdown/index.ts","./src/components/notifications/toast/toast.test.tsx","./src/components/notifications/toast/toast.tsx","./src/components/shipment/deliveryconfirmation/deliveryconfirmation.test.tsx","./src/components/shipment/deliveryconfirmation/deliveryconfirmation.tsx","./src/components/shipment/statusupdate/statusupdate.test.tsx","./src/components/shipment/statusupdate/statusupdate.tsx","./src/components/shipment/statusupdate/index.ts","./src/components/shipment/trackingtimeline/trackingtimeline.example.tsx","./src/components/shipment/trackingtimeline/trackingtimeline.test.tsx","./src/components/shipment/trackingtimeline/trackingtimeline.tsx","./src/components/shipment/trackingtimeline/index.ts","./src/context/toastcontext.tsx","./src/hooks/index.ts","./src/hooks/useauth.ts","./src/pages/analytics/analytics.tsx","./src/pages/blockchainledger/blockchainledger.tsx","./src/pages/componentdemos/paginationdemo/paginationdemo.tsx","./src/pages/helpcenter/helpcenter.tsx","./src/pages/home/home.tsx","./src/pages/landingpage/sections/features/features.tsx","./src/pages/notifications/notificationspage.tsx","./src/pages/payments/paymentdetailmodal/paymentdetailmodal.tsx","./src/pages/payments/paymenthistory/paymenthistory.tsx","./src/pages/payments/paymentsummarycards/paymentsummarycards.tsx","./src/pages/payments/paymentsummarycards/index.ts","./src/pages/settings/settings.tsx","./src/pages/settings/notificationpreferences/notificationpreferences.test.tsx","./src/pages/settings/notificationpreferences/notificationpreferences.tsx","./src/pages/settlements/settlements.tsx","./src/pages/shipmentdetail/shipmentdetail.tsx","./src/pages/shipmentdetail/index.ts","./src/pages/shipmentdetail/deliveryproofupload/deliveryproofupload.tsx","./src/pages/shipmentdetail/milestonetimeline/milestonetimeline.example.tsx","./src/pages/shipmentdetail/milestonetimeline/milestonetimeline.test.tsx","./src/pages/shipmentdetail/milestonetimeline/milestonetimeline.tsx","./src/pages/shipmentdetail/paymentstatus/paymentstatus.tsx","./src/pages/shipmentdetail/sensordatacards/sensordatacards.tsx","./src/pages/shipmentdetail/shipmentdetailheader/shipmentdetailheader.tsx","./src/pages/shipmentdetail/shipmentdetailheader/index.ts","./src/pages/shipmentdetail/shipmentmap/shipmentmap.test.tsx","./src/pages/shipmentdetail/shipmentmap/shipmentmap.tsx","./src/pages/shipments/shipments.tsx","./src/pages/auth/forgotpassword/forgotpassword.tsx","./src/pages/auth/login/login.tsx","./src/pages/auth/signup/signup.tsx","./src/pages/dashboard/dashboard.tsx","./src/pages/dashboard/company/companydashboard.tsx","./src/pages/dashboard/company/createshipment/createshipment.tsx","./src/pages/dashboard/company/recentshipments/recentshipments.test.tsx","./src/pages/dashboard/company/recentshipments/recentshipments.tsx","./src/pages/dashboard/company/recentshipments/mockshipments.ts","./src/pages/dashboard/company/settings/companysettings.tsx","./src/pages/dashboard/company/usermanagement/usermanagement.tsx","./src/pages/dashboard/customer/customerdashboard.tsx","./src/pages/dashboard/customer/activeshipments/activeshipments.test.tsx","./src/pages/dashboard/customer/activeshipments/activeshipments.tsx","./src/pages/dashboard/customer/profile/customerprofile.tsx","./src/pages/dashboard/customer/shipmenthistory/shipmenthistory.tsx","./src/services/api/client.ts","./src/services/api/index.ts","./src/services/api/endpoints/auth.ts","./src/services/api/endpoints/shipments.ts","./src/services/api/interceptors/authinterceptor.ts","./src/services/api/interceptors/errorinterceptor.ts","./src/test/app.test.tsx","./src/test/setup.ts"],"version":"5.9.3"} +{"root":["./src/app.tsx","./src/main.tsx","./src/vite-env.d.ts","./src/landingpage/landingpage.tsx","./src/landingpage/sections/hero/hero.tsx","./src/landingpage/sections/howitworks/howitworks.tsx","./src/landingpage/sections/whynavin/whynavin.tsx","./src/components/index.ts","./src/components/button/button.tsx","./src/components/button/index.ts","./src/components/card/card.tsx","./src/components/card/index.ts","./src/components/errorboundary/errorboundary.tsx","./src/components/navbar/navbar.tsx","./src/components/navbar/index.ts","./src/components/auth/protectedroute/protectedroute.test.tsx","./src/components/auth/protectedroute/protectedroute.tsx","./src/components/auth/protectedroute/index.ts","./src/components/auth/walletconnectbutton/walletconnectbutton.tsx","./src/components/auth/walletconnectbutton/index.ts","./src/components/common/breadcrumb/breadcrumb.tsx","./src/components/common/breadcrumb/index.ts","./src/components/common/breadcrumb/types.ts","./src/components/common/datatable/datatable.example.tsx","./src/components/common/datatable/datatable.tsx","./src/components/common/datatable/index.ts","./src/components/common/datatable/types.ts","./src/components/common/emptystate/emptystate.tsx","./src/components/common/emptystate/index.ts","./src/components/common/emptystate/types.ts","./src/components/common/modal/modal.tsx","./src/components/common/modal/index.ts","./src/components/common/pagination/pagination.example.tsx","./src/components/common/pagination/pagination.tsx","./src/components/common/pagination/index.ts","./src/components/common/pagination/types.ts","./src/components/common/statusbadge/statusbadge.tsx","./src/components/common/statusbadge/index.ts","./src/components/common/statusbadge/statusbadgevariants.ts","./src/components/dashboard/charts/deliverysuccesschart/deliverysuccesschart.test.tsx","./src/components/dashboard/charts/deliverysuccesschart/deliverysuccesschart.tsx","./src/components/dashboard/charts/deliverysuccesschart/index.ts","./src/components/dashboard/charts/deliverysuccesschart/mockdeliverydata.ts","./src/components/dashboard/charts/shipmentvolumechart/shipmentvolumechart.test.tsx","./src/components/dashboard/charts/shipmentvolumechart/shipmentvolumechart.tsx","./src/components/dashboard/charts/shipmentvolumechart/index.ts","./src/components/dashboard/charts/shipmentvolumechart/mockvolumedata.ts","./src/components/dashboard/statcard/statcard.tsx","./src/components/dashboard/statcard/index.ts","./src/components/layout/dashboardlayout.tsx","./src/components/layout/sidebar/sidebar.tsx","./src/components/layout/sidebar/index.ts","./src/components/layout/topheader/topheader.tsx","./src/components/layout/topheader/index.ts","./src/components/notifications/notificationdropdown/notificationdropdown.test.tsx","./src/components/notifications/notificationdropdown/notificationdropdown.tsx","./src/components/notifications/notificationdropdown/index.ts","./src/components/notifications/toast/toast.test.tsx","./src/components/notifications/toast/toast.tsx","./src/components/shipment/deliveryconfirmation/deliveryconfirmation.test.tsx","./src/components/shipment/deliveryconfirmation/deliveryconfirmation.tsx","./src/components/shipment/statusupdate/statusupdate.test.tsx","./src/components/shipment/statusupdate/statusupdate.tsx","./src/components/shipment/statusupdate/index.ts","./src/components/shipment/trackingtimeline/trackingtimeline.example.tsx","./src/components/shipment/trackingtimeline/trackingtimeline.test.tsx","./src/components/shipment/trackingtimeline/trackingtimeline.tsx","./src/components/shipment/trackingtimeline/index.ts","./src/context/toastcontext.tsx","./src/hooks/index.ts","./src/hooks/useauth.ts","./src/pages/analytics/analytics.tsx","./src/pages/blockchainledger/blockchainledger.tsx","./src/pages/componentdemos/paginationdemo/paginationdemo.tsx","./src/pages/helpcenter/helpcenter.tsx","./src/pages/home/home.tsx","./src/pages/landingpage/sections/features/features.tsx","./src/pages/notifications/notificationspage.tsx","./src/pages/payments/paymentdetailmodal/paymentdetailmodal.tsx","./src/pages/payments/paymenthistory/paymenthistory.tsx","./src/pages/payments/paymentsummarycards/paymentsummarycards.tsx","./src/pages/payments/paymentsummarycards/index.ts","./src/pages/settings/settings.tsx","./src/pages/settings/notificationpreferences/notificationpreferences.test.tsx","./src/pages/settings/notificationpreferences/notificationpreferences.tsx","./src/pages/settlements/settlements.tsx","./src/pages/shipment/shipmentdetail.tsx","./src/pages/shipment/sections/milestonetimeline/milestonetimeline.tsx","./src/pages/shipment/sections/milestonetimeline/types.ts","./src/pages/shipmentdetail/shipmentdetail.tsx","./src/pages/shipmentdetail/index.ts","./src/pages/shipmentdetail/deliveryproofupload/deliveryproofupload.tsx","./src/pages/shipmentdetail/milestonetimeline/milestonetimeline.example.tsx","./src/pages/shipmentdetail/milestonetimeline/milestonetimeline.test.tsx","./src/pages/shipmentdetail/milestonetimeline/milestonetimeline.tsx","./src/pages/shipmentdetail/paymentstatus/paymentstatus.tsx","./src/pages/shipmentdetail/sensordatacards/sensordatacards.tsx","./src/pages/shipmentdetail/shipmentdetailheader/shipmentdetailheader.tsx","./src/pages/shipmentdetail/shipmentdetailheader/index.ts","./src/pages/shipmentdetail/shipmentmap/shipmentmap.test.tsx","./src/pages/shipmentdetail/shipmentmap/shipmentmap.tsx","./src/pages/shipments/shipments.tsx","./src/pages/auth/forgotpassword/forgotpassword.tsx","./src/pages/auth/login/login.tsx","./src/pages/auth/signup/signup.tsx","./src/pages/dashboard/dashboard.tsx","./src/pages/dashboard/company/companydashboard.tsx","./src/pages/dashboard/company/createshipment/createshipment.tsx","./src/pages/dashboard/company/recentshipments/recentshipments.test.tsx","./src/pages/dashboard/company/recentshipments/recentshipments.tsx","./src/pages/dashboard/company/recentshipments/mockshipments.ts","./src/pages/dashboard/company/settings/companysettings.tsx","./src/pages/dashboard/company/usermanagement/usermanagement.tsx","./src/pages/dashboard/customer/customerdashboard.tsx","./src/pages/dashboard/customer/activeshipments/activeshipments.test.tsx","./src/pages/dashboard/customer/activeshipments/activeshipments.tsx","./src/pages/dashboard/customer/profile/customerprofile.tsx","./src/pages/dashboard/customer/shipmenthistory/shipmenthistory.tsx","./src/services/api/client.ts","./src/services/api/index.ts","./src/services/api/endpoints/auth.ts","./src/services/api/endpoints/shipments.ts","./src/services/api/interceptors/authinterceptor.ts","./src/services/api/interceptors/errorinterceptor.ts","./src/test/app.test.tsx","./src/test/setup.ts"],"version":"5.9.3"}