@burdenoff/microfe-movethewheels 2026.728.1 → 2026.731.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -25,8 +25,8 @@ function u() {
25
25
  })
26
26
  });
27
27
  }
28
- var d = n(() => import("./pages/DashboardPage.js")), f = n(() => import("./pages/OrdersListPage.js")), p = n(() => import("./pages/OrderDetailsPage.js")), m = n(() => import("./pages/CreateOrderPage.js")), h = n(() => import("./pages/TrackingPage.js")), g = n(() => import("./pages/LiveTrackingPage.js")), _ = n(() => import("./pages/FleetPage.js")), v = n(() => import("./pages/VehiclesPage.js")), y = n(() => import("./pages/VehicleDetailsPage.js")), b = n(() => import("./pages/DriversPage.js")), x = n(() => import("./pages/DriverDetailsPage.js")), S = n(() => import("./pages/InventoryPage.js")), C = n(() => import("./pages/ProductsPage.js")), w = n(() => import("./pages/ProductDetailsPage.js")), T = n(() => import("./pages/WarehousesPage.js")), E = n(() => import("./pages/WarehouseDetailsPage.js")), D = n(() => import("./pages/CustomersPage.js")), O = n(() => import("./pages/CustomerDetailsPage.js")), k = n(() => import("./pages/RoutesPage.js")), A = n(() => import("./pages/RouteDetailsPage.js")), j = n(() => import("./pages/AnalyticsPage.js")), M = n(() => import("./pages/FinancePage.js")), N = n(() => import("./pages/MarketplacePage.js")), P = n(() => import("./pages/ImportExportPage.js")), F = n(() => import("./pages/ReportsPage.js")), I = n(() => import("./pages/SettingsPage.js")), L = n(() => import("./pages/AIAssistantPage.js")), R = n(() => import("./pages/DeliveryCapturePage.js"));
29
- function z() {
28
+ var d = n(() => import("./pages/DashboardPage.js")), f = n(() => import("./pages/OrdersListPage.js")), p = n(() => import("./pages/OrderDetailsPage.js")), m = n(() => import("./pages/CreateOrderPage.js")), h = n(() => import("./pages/TrackingPage.js")), g = n(() => import("./pages/LiveTrackingPage.js")), _ = n(() => import("./pages/FleetPage.js")), v = n(() => import("./pages/VehiclesPage.js")), y = n(() => import("./pages/VehicleDetailsPage.js")), b = n(() => import("./pages/DriversPage.js")), x = n(() => import("./pages/DriverDetailsPage.js")), S = n(() => import("./pages/InventoryPage.js")), C = n(() => import("./pages/ProductsPage.js")), w = n(() => import("./pages/ProductDetailsPage.js")), T = n(() => import("./pages/WarehousesPage.js")), E = n(() => import("./pages/WarehouseDetailsPage.js")), D = n(() => import("./pages/CustomersPage.js")), O = n(() => import("./pages/CustomerDetailsPage.js")), k = n(() => import("./pages/RoutesPage.js")), A = n(() => import("./pages/RouteDetailsPage.js")), j = n(() => import("./pages/AnalyticsPage.js")), M = n(() => import("./pages/FinancePage.js")), N = n(() => import("./pages/MarketplacePage.js")), P = n(() => import("./pages/ImportExportPage.js")), F = n(() => import("./pages/ReportsPage.js")), I = n(() => import("./pages/SettingsPage.js")), L = n(() => import("./pages/AIAssistantPage.js")), R = n(() => import("./pages/DeliveryCapturePage.js")), z = n(() => import("./pages/MultiModalShipmentPage.js"));
29
+ function B() {
30
30
  return /* @__PURE__ */ o(t, {
31
31
  fallback: /* @__PURE__ */ o(u, {}),
32
32
  children: /* @__PURE__ */ s(i, { children: [
@@ -62,6 +62,10 @@ function z() {
62
62
  path: "deliveries/mine",
63
63
  element: /* @__PURE__ */ o(R, {})
64
64
  }),
65
+ /* @__PURE__ */ o(r, {
66
+ path: "shipments/multi-modal",
67
+ element: /* @__PURE__ */ o(z, {})
68
+ }),
65
69
  /* @__PURE__ */ o(r, {
66
70
  path: "fleet",
67
71
  element: /* @__PURE__ */ o(_, {})
@@ -198,4 +202,4 @@ function z() {
198
202
  });
199
203
  }
200
204
  //#endregion
201
- export { z as MoveTheWheelsRoutes };
205
+ export { B as MoveTheWheelsRoutes };
@@ -0,0 +1,137 @@
1
+ import { useMoveTheWheels as e } from "../providers/MoveTheWheelsProvider.js";
2
+ import { executeGraphQL as t } from "../utils/graphqlClient.js";
3
+ import { useCallback as n, useEffect as r, useMemo as i, useState as a } from "react";
4
+ //#region src/movethewheels/hooks/useMultiModalShipments.ts
5
+ var o = "\n id\n shipmentNumber\n status\n primaryMode\n isMultiModal\n totalFreightCost\n freightCurrency\n origin\n destination\n createdAt\n legs {\n \n id\n legNumber\n mode\n status\n origin\n destination\n distanceKm\n weightKg\n lengthCm\n widthCm\n heightCm\n volumeCbm\n containerType\n containerCount\n carrierName\n chargeableWeightKg\n calculatedCost\n currency\n\n }\n", s = `
6
+ query ListMultiModalShipments($pagination: PaginationInput) {
7
+ shipments(filter: { isMultiModal: true }, pagination: $pagination) {
8
+ ${o}
9
+ }
10
+ }
11
+ `, c = "\n query CalculateFreightRate($input: FreightRateInput!) {\n calculateFreightRate(input: $input) {\n mode\n chargeableWeightKg\n ratePerUnit\n calculatedCost\n currency\n breakdown {\n label\n amount\n }\n }\n }\n", l = `
12
+ mutation PlanMultiModalShipment($input: PlanMultiModalShipmentInput!) {
13
+ planMultiModalShipment(input: $input) {
14
+ ${o}
15
+ }
16
+ }
17
+ `;
18
+ function u(e) {
19
+ return {
20
+ mode: e.mode,
21
+ origin: e.origin,
22
+ destination: e.destination,
23
+ distanceKm: e.distanceKm,
24
+ weightKg: e.weightKg,
25
+ lengthCm: e.lengthCm,
26
+ widthCm: e.widthCm,
27
+ heightCm: e.heightCm,
28
+ volumeCbm: e.volumeCbm,
29
+ containerType: e.containerType,
30
+ containerCount: e.containerCount,
31
+ carrierName: e.carrierName
32
+ };
33
+ }
34
+ function d(e) {
35
+ return {
36
+ mode: e.mode,
37
+ distanceKm: e.distanceKm,
38
+ weightKg: e.weightKg,
39
+ lengthCm: e.lengthCm,
40
+ widthCm: e.widthCm,
41
+ heightCm: e.heightCm,
42
+ volumeCbm: e.volumeCbm,
43
+ containerType: e.containerType,
44
+ containerCount: e.containerCount
45
+ };
46
+ }
47
+ function f(e) {
48
+ return {
49
+ id: e.id,
50
+ legNumber: e.legNumber,
51
+ mode: e.mode,
52
+ status: e.status,
53
+ origin: e.origin ?? {},
54
+ destination: e.destination ?? {},
55
+ distanceKm: e.distanceKm ?? void 0,
56
+ weightKg: e.weightKg ?? void 0,
57
+ lengthCm: e.lengthCm ?? void 0,
58
+ widthCm: e.widthCm ?? void 0,
59
+ heightCm: e.heightCm ?? void 0,
60
+ volumeCbm: e.volumeCbm ?? void 0,
61
+ containerType: e.containerType ?? void 0,
62
+ containerCount: e.containerCount ?? void 0,
63
+ carrierName: e.carrierName ?? void 0,
64
+ chargeableWeightKg: e.chargeableWeightKg,
65
+ calculatedCost: e.calculatedCost,
66
+ currency: e.currency
67
+ };
68
+ }
69
+ function p(e) {
70
+ return {
71
+ id: e.id,
72
+ shipmentNumber: e.shipmentNumber,
73
+ status: e.status,
74
+ primaryMode: e.primaryMode,
75
+ isMultiModal: e.isMultiModal,
76
+ totalFreightCost: e.totalFreightCost,
77
+ freightCurrency: e.freightCurrency,
78
+ origin: e.origin ?? {},
79
+ destination: e.destination ?? {},
80
+ createdAt: e.createdAt,
81
+ legs: (e.legs ?? []).map(f)
82
+ };
83
+ }
84
+ function m() {
85
+ let { apiGatewayUrl: t, authToken: n, workspaceToken: r, workspaceId: a, tenantId: o, currentUser: s } = e();
86
+ return i(() => ({
87
+ apiGatewayUrl: t,
88
+ authToken: n,
89
+ workspaceToken: r,
90
+ workspaceId: a,
91
+ tenantId: o,
92
+ actorId: s?.id
93
+ }), [
94
+ t,
95
+ n,
96
+ r,
97
+ a,
98
+ o,
99
+ s?.id
100
+ ]);
101
+ }
102
+ function h() {
103
+ let e = m(), [i, o] = a([]), [f, h] = a(!1), [g, _] = a(null), v = n(async () => {
104
+ h(!0), _(null);
105
+ try {
106
+ o((await t(e, s, { pagination: {
107
+ limit: 100,
108
+ offset: 0
109
+ } })).shipments.map(p));
110
+ } catch (e) {
111
+ _(e instanceof Error ? e : /* @__PURE__ */ Error("Failed to load multi-modal shipments"));
112
+ } finally {
113
+ h(!1);
114
+ }
115
+ }, [e]);
116
+ return r(() => {
117
+ v();
118
+ }, [v]), {
119
+ shipments: i,
120
+ isLoading: f,
121
+ error: g,
122
+ refetch: () => void v(),
123
+ calculateFreightRate: n(async (n) => (await t(e, c, { input: d(n) })).calculateFreightRate, [e]),
124
+ planMultiModalShipment: n(async (n) => {
125
+ let r = p((await t(e, l, { input: {
126
+ shipmentNumber: n.shipmentNumber,
127
+ customerId: n.customerId,
128
+ origin: n.origin,
129
+ destination: n.destination,
130
+ legs: n.legs.map(u)
131
+ } })).planMultiModalShipment);
132
+ return o((e) => [r, ...e]), r;
133
+ }, [e])
134
+ };
135
+ }
136
+ //#endregion
137
+ export { h as useMultiModalShipments };
@@ -0,0 +1,76 @@
1
+ export type TransportMode = 'ROAD' | 'AIR' | 'OCEAN' | 'RAIL';
2
+ export type ShipmentLegStatus = 'PLANNED' | 'BOOKED' | 'IN_TRANSIT' | 'ARRIVED' | 'DELIVERED' | 'CANCELLED';
3
+ export type OceanContainerType = 'LCL' | 'FCL_20FT' | 'FCL_40FT' | 'FCL_40FT_HC';
4
+ export interface FreightRateBreakdownLine {
5
+ label: string;
6
+ amount: number;
7
+ }
8
+ export interface FreightRateQuote {
9
+ mode: TransportMode;
10
+ chargeableWeightKg?: number | null;
11
+ ratePerUnit: number;
12
+ calculatedCost: number;
13
+ currency: string;
14
+ breakdown: FreightRateBreakdownLine[];
15
+ }
16
+ export interface ShipmentLegDraft {
17
+ mode: TransportMode;
18
+ origin: {
19
+ address?: string;
20
+ };
21
+ destination: {
22
+ address?: string;
23
+ };
24
+ distanceKm?: number;
25
+ weightKg?: number;
26
+ lengthCm?: number;
27
+ widthCm?: number;
28
+ heightCm?: number;
29
+ volumeCbm?: number;
30
+ containerType?: OceanContainerType;
31
+ containerCount?: number;
32
+ carrierName?: string;
33
+ }
34
+ export interface ShipmentLeg extends ShipmentLegDraft {
35
+ id: string;
36
+ legNumber: number;
37
+ status: ShipmentLegStatus;
38
+ chargeableWeightKg?: number | null;
39
+ calculatedCost?: number | null;
40
+ currency: string;
41
+ }
42
+ export interface MultiModalShipment {
43
+ id: string;
44
+ shipmentNumber: string;
45
+ status: string;
46
+ primaryMode: TransportMode;
47
+ isMultiModal: boolean;
48
+ totalFreightCost?: number | null;
49
+ freightCurrency?: string | null;
50
+ origin: {
51
+ address?: string;
52
+ };
53
+ destination: {
54
+ address?: string;
55
+ };
56
+ createdAt: string;
57
+ legs: ShipmentLeg[];
58
+ }
59
+ export declare function useMultiModalShipments(): {
60
+ shipments: MultiModalShipment[];
61
+ isLoading: boolean;
62
+ error: Error | null;
63
+ refetch: () => undefined;
64
+ calculateFreightRate: (leg: ShipmentLegDraft) => Promise<FreightRateQuote>;
65
+ planMultiModalShipment: (input: {
66
+ shipmentNumber: string;
67
+ customerId?: string;
68
+ origin: {
69
+ address?: string;
70
+ };
71
+ destination: {
72
+ address?: string;
73
+ };
74
+ legs: ShipmentLegDraft[];
75
+ }) => Promise<MultiModalShipment>;
76
+ };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Multi-Modal Freight Shipment Page (BOFF-4398)
3
+ *
4
+ * Lets an operator plan a shipment composed of multiple real transport legs
5
+ * across ROAD/AIR/OCEAN/RAIL, previewing each leg's real mode-specific rate
6
+ * before booking, then lists previously planned multi-modal shipments.
7
+ */
8
+ export default function MultiModalShipmentPage(): import("react").JSX.Element;
@@ -0,0 +1,56 @@
1
+ import { createLucideIcon as e } from "../createLucideIcon.js";
2
+ //#region node_modules/lucide-react/dist/esm/icons/calculator.js
3
+ var t = e("Calculator", [
4
+ ["rect", {
5
+ width: "16",
6
+ height: "20",
7
+ x: "4",
8
+ y: "2",
9
+ rx: "2",
10
+ key: "1nb95v"
11
+ }],
12
+ ["line", {
13
+ x1: "8",
14
+ x2: "16",
15
+ y1: "6",
16
+ y2: "6",
17
+ key: "x4nwl0"
18
+ }],
19
+ ["line", {
20
+ x1: "16",
21
+ x2: "16",
22
+ y1: "14",
23
+ y2: "18",
24
+ key: "wjye3r"
25
+ }],
26
+ ["path", {
27
+ d: "M16 10h.01",
28
+ key: "1m94wz"
29
+ }],
30
+ ["path", {
31
+ d: "M12 10h.01",
32
+ key: "1nrarc"
33
+ }],
34
+ ["path", {
35
+ d: "M8 10h.01",
36
+ key: "19clt8"
37
+ }],
38
+ ["path", {
39
+ d: "M12 14h.01",
40
+ key: "1etili"
41
+ }],
42
+ ["path", {
43
+ d: "M8 14h.01",
44
+ key: "6423bh"
45
+ }],
46
+ ["path", {
47
+ d: "M12 18h.01",
48
+ key: "mhygvu"
49
+ }],
50
+ ["path", {
51
+ d: "M8 18h.01",
52
+ key: "lrp35t"
53
+ }]
54
+ ]);
55
+ //#endregion
56
+ export { t as Calculator };
@@ -0,0 +1,8 @@
1
+ import { createLucideIcon as e } from "../createLucideIcon.js";
2
+ //#region node_modules/lucide-react/dist/esm/icons/plane.js
3
+ var t = e("Plane", [["path", {
4
+ d: "M17.8 19.2 16 11l3.5-3.5C21 6 21.5 4 21 3c-1-.5-3 0-4.5 1.5L13 8 4.8 6.2c-.5-.1-.9.1-1.1.5l-.3.5c-.2.5-.1 1 .3 1.3L9 12l-2 3H4l-1 1 3 2 2 3 1-1v-3l3-2 3.5 5.3c.3.4.8.5 1.3.3l.5-.2c.4-.3.6-.7.5-1.2z",
5
+ key: "1v9wt8"
6
+ }]]);
7
+ //#endregion
8
+ export { t as Plane };
@@ -0,0 +1,26 @@
1
+ import { createLucideIcon as e } from "../createLucideIcon.js";
2
+ //#region node_modules/lucide-react/dist/esm/icons/ship.js
3
+ var t = e("Ship", [
4
+ ["path", {
5
+ d: "M12 10.189V14",
6
+ key: "1p8cqu"
7
+ }],
8
+ ["path", {
9
+ d: "M12 2v3",
10
+ key: "qbqxhf"
11
+ }],
12
+ ["path", {
13
+ d: "M19 13V7a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v6",
14
+ key: "qpkstq"
15
+ }],
16
+ ["path", {
17
+ d: "M19.38 20A11.6 11.6 0 0 0 21 14l-8.188-3.639a2 2 0 0 0-1.624 0L3 14a11.6 11.6 0 0 0 2.81 7.76",
18
+ key: "7tigtc"
19
+ }],
20
+ ["path", {
21
+ d: "M2 21c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1s1.2 1 2.5 1c2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1",
22
+ key: "1924j5"
23
+ }]
24
+ ]);
25
+ //#endregion
26
+ export { t as Ship };
@@ -0,0 +1,30 @@
1
+ import { createLucideIcon as e } from "../createLucideIcon.js";
2
+ //#region node_modules/lucide-react/dist/esm/icons/train-front.js
3
+ var t = e("TrainFront", [
4
+ ["path", {
5
+ d: "M8 3.1V7a4 4 0 0 0 8 0V3.1",
6
+ key: "1v71zp"
7
+ }],
8
+ ["path", {
9
+ d: "m9 15-1-1",
10
+ key: "1yrq24"
11
+ }],
12
+ ["path", {
13
+ d: "m15 15 1-1",
14
+ key: "1t0d6s"
15
+ }],
16
+ ["path", {
17
+ d: "M9 19c-2.8 0-5-2.2-5-5v-4a8 8 0 0 1 16 0v4c0 2.8-2.2 5-5 5Z",
18
+ key: "1p0hjs"
19
+ }],
20
+ ["path", {
21
+ d: "m8 19-2 3",
22
+ key: "13i0xs"
23
+ }],
24
+ ["path", {
25
+ d: "m16 19 2 3",
26
+ key: "xo31yx"
27
+ }]
28
+ ]);
29
+ //#endregion
30
+ export { t as TrainFront };