@burdenoff/microfe-movethewheels 2026.1031.2 → 2026.1031.4
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.
- package/dist/MoveTheWheelsRoot.js +121 -104
- package/dist/MoveTheWheelsRoutes.js +142 -133
- package/dist/components/DocumentsCard.js +11 -11
- package/dist/components/ProofOfDeliveryCard.js +13 -13
- package/dist/components/ShipmentRiskDialog.js +24 -24
- package/dist/components/ShippingQuoteResults.js +46 -46
- package/dist/components/TrackingAlertList.js +17 -17
- package/dist/generated/tracking-quality-operations.d.ts +140 -0
- package/dist/hooks/useEntityImport.js +68 -0
- package/dist/hooks/useOrderDispatch.js +17 -17
- package/dist/movethewheels/hooks/useEntityImport.d.ts +19 -0
- package/dist/movethewheels/pages/ImportExportPage.d.ts +9 -0
- package/dist/movethewheels/pages/SettingsPage.d.ts +1 -0
- package/dist/movethewheels/providers/ModuleSettingsProvider.d.ts +17 -0
- package/dist/movethewheels/utils/entityImport.d.ts +109 -0
- package/dist/movethewheels/utils/formatters.d.ts +23 -3
- package/dist/movethewheels/utils/moduleSettings.d.ts +52 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/arrow-down-up.js +22 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/bell.js +11 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/file-spreadsheet.js +30 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/file-up.js +22 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/key-round.js +14 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/plug.js +22 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/rotate-ccw.js +11 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/settings.js +13 -0
- package/dist/pages/AnalyticsPage.js +27 -27
- package/dist/pages/CreateOrderPage.js +340 -317
- package/dist/pages/CustomerDetailsPage.js +246 -246
- package/dist/pages/CustomersPage.js +88 -79
- package/dist/pages/DashboardPage.js +24 -24
- package/dist/pages/DeliveryCapturePage.js +74 -74
- package/dist/pages/DriverDetailsPage.js +337 -337
- package/dist/pages/DriversPage.js +119 -110
- package/dist/pages/FinancePage.js +26 -26
- package/dist/pages/ImportExportPage.js +435 -0
- package/dist/pages/InventoryPage.js +28 -28
- package/dist/pages/LiveTrackingPage.js +108 -108
- package/dist/pages/MarketplacePage.js +44 -44
- package/dist/pages/OrderDetailsPage.js +306 -306
- package/dist/pages/OrdersListPage.js +27 -27
- package/dist/pages/ProductDetailsPage.js +89 -89
- package/dist/pages/ProductsPage.js +86 -77
- package/dist/pages/RouteDetailsPage.js +282 -285
- package/dist/pages/RoutesPage.js +78 -78
- package/dist/pages/SettingsPage.js +459 -0
- package/dist/pages/TrackingPage.js +41 -41
- package/dist/pages/VehicleDetailsPage.js +207 -207
- package/dist/pages/VehiclesPage.js +100 -90
- package/dist/pages/WarehouseDetailsPage.js +132 -132
- package/dist/pages/WarehousesPage.js +97 -88
- package/dist/providers/ModuleSettingsProvider.js +74 -0
- package/dist/utils/entityImport.js +73 -0
- package/dist/utils/formatters.js +53 -26
- package/dist/utils/moduleSettings.js +132 -0
- package/package.json +4 -2
- package/src/generated/tracking-quality-operations.ts +184 -0
- package/src/movethewheels/MoveTheWheelsRoot.tsx +22 -3
- package/src/movethewheels/MoveTheWheelsRoutes.tsx +13 -0
- package/src/movethewheels/hooks/useEntityImport.ts +108 -0
- package/src/movethewheels/pages/CreateOrderPage.tsx +38 -6
- package/src/movethewheels/pages/CustomersPage.tsx +6 -1
- package/src/movethewheels/pages/DriversPage.tsx +6 -0
- package/src/movethewheels/pages/ImportExportPage.tsx +483 -0
- package/src/movethewheels/pages/ProductsPage.tsx +16 -3
- package/src/movethewheels/pages/RouteDetailsPage.tsx +3 -6
- package/src/movethewheels/pages/RoutesPage.tsx +2 -2
- package/src/movethewheels/pages/SettingsPage.tsx +516 -0
- package/src/movethewheels/pages/VehicleDetailsPage.tsx +4 -2
- package/src/movethewheels/pages/VehiclesPage.tsx +8 -1
- package/src/movethewheels/pages/WarehousesPage.tsx +6 -1
- package/src/movethewheels/providers/ModuleSettingsProvider.tsx +133 -0
- package/src/movethewheels/utils/entityImport.ts +239 -0
- package/src/movethewheels/utils/formatters.ts +69 -10
- package/src/movethewheels/utils/moduleSettings.ts +224 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { createLucideIcon as e } from "../createLucideIcon.js";
|
|
2
|
+
//#region node_modules/lucide-react/dist/esm/icons/file-spreadsheet.js
|
|
3
|
+
var t = e("FileSpreadsheet", [
|
|
4
|
+
["path", {
|
|
5
|
+
d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",
|
|
6
|
+
key: "1rqfz7"
|
|
7
|
+
}],
|
|
8
|
+
["path", {
|
|
9
|
+
d: "M14 2v4a2 2 0 0 0 2 2h4",
|
|
10
|
+
key: "tnqrlb"
|
|
11
|
+
}],
|
|
12
|
+
["path", {
|
|
13
|
+
d: "M8 13h2",
|
|
14
|
+
key: "yr2amv"
|
|
15
|
+
}],
|
|
16
|
+
["path", {
|
|
17
|
+
d: "M14 13h2",
|
|
18
|
+
key: "un5t4a"
|
|
19
|
+
}],
|
|
20
|
+
["path", {
|
|
21
|
+
d: "M8 17h2",
|
|
22
|
+
key: "2yhykz"
|
|
23
|
+
}],
|
|
24
|
+
["path", {
|
|
25
|
+
d: "M14 17h2",
|
|
26
|
+
key: "10kma7"
|
|
27
|
+
}]
|
|
28
|
+
]);
|
|
29
|
+
//#endregion
|
|
30
|
+
export { t as FileSpreadsheet };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { createLucideIcon as e } from "../createLucideIcon.js";
|
|
2
|
+
//#region node_modules/lucide-react/dist/esm/icons/file-up.js
|
|
3
|
+
var t = e("FileUp", [
|
|
4
|
+
["path", {
|
|
5
|
+
d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",
|
|
6
|
+
key: "1rqfz7"
|
|
7
|
+
}],
|
|
8
|
+
["path", {
|
|
9
|
+
d: "M14 2v4a2 2 0 0 0 2 2h4",
|
|
10
|
+
key: "tnqrlb"
|
|
11
|
+
}],
|
|
12
|
+
["path", {
|
|
13
|
+
d: "M12 12v6",
|
|
14
|
+
key: "3ahymv"
|
|
15
|
+
}],
|
|
16
|
+
["path", {
|
|
17
|
+
d: "m15 15-3-3-3 3",
|
|
18
|
+
key: "15xj92"
|
|
19
|
+
}]
|
|
20
|
+
]);
|
|
21
|
+
//#endregion
|
|
22
|
+
export { t as FileUp };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { createLucideIcon as e } from "../createLucideIcon.js";
|
|
2
|
+
//#region node_modules/lucide-react/dist/esm/icons/key-round.js
|
|
3
|
+
var t = e("KeyRound", [["path", {
|
|
4
|
+
d: "M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",
|
|
5
|
+
key: "1s6t7t"
|
|
6
|
+
}], ["circle", {
|
|
7
|
+
cx: "16.5",
|
|
8
|
+
cy: "7.5",
|
|
9
|
+
r: ".5",
|
|
10
|
+
fill: "currentColor",
|
|
11
|
+
key: "w0ekpg"
|
|
12
|
+
}]]);
|
|
13
|
+
//#endregion
|
|
14
|
+
export { t as KeyRound };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { createLucideIcon as e } from "../createLucideIcon.js";
|
|
2
|
+
//#region node_modules/lucide-react/dist/esm/icons/plug.js
|
|
3
|
+
var t = e("Plug", [
|
|
4
|
+
["path", {
|
|
5
|
+
d: "M12 22v-5",
|
|
6
|
+
key: "1ega77"
|
|
7
|
+
}],
|
|
8
|
+
["path", {
|
|
9
|
+
d: "M9 8V2",
|
|
10
|
+
key: "14iosj"
|
|
11
|
+
}],
|
|
12
|
+
["path", {
|
|
13
|
+
d: "M15 8V2",
|
|
14
|
+
key: "18g5xt"
|
|
15
|
+
}],
|
|
16
|
+
["path", {
|
|
17
|
+
d: "M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z",
|
|
18
|
+
key: "osxo6l"
|
|
19
|
+
}]
|
|
20
|
+
]);
|
|
21
|
+
//#endregion
|
|
22
|
+
export { t as Plug };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createLucideIcon as e } from "../createLucideIcon.js";
|
|
2
|
+
//#region node_modules/lucide-react/dist/esm/icons/rotate-ccw.js
|
|
3
|
+
var t = e("RotateCcw", [["path", {
|
|
4
|
+
d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",
|
|
5
|
+
key: "1357e3"
|
|
6
|
+
}], ["path", {
|
|
7
|
+
d: "M3 3v5h5",
|
|
8
|
+
key: "1xhq8a"
|
|
9
|
+
}]]);
|
|
10
|
+
//#endregion
|
|
11
|
+
export { t as RotateCcw };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { createLucideIcon as e } from "../createLucideIcon.js";
|
|
2
|
+
//#region node_modules/lucide-react/dist/esm/icons/settings.js
|
|
3
|
+
var t = e("Settings", [["path", {
|
|
4
|
+
d: "M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",
|
|
5
|
+
key: "1qme2f"
|
|
6
|
+
}], ["circle", {
|
|
7
|
+
cx: "12",
|
|
8
|
+
cy: "12",
|
|
9
|
+
r: "3",
|
|
10
|
+
key: "1v7zrd"
|
|
11
|
+
}]]);
|
|
12
|
+
//#endregion
|
|
13
|
+
export { t as Settings };
|
|
@@ -4,15 +4,15 @@ import { Package as n } from "../node_modules/lucide-react/dist/esm/icons/packag
|
|
|
4
4
|
import { Star as r } from "../node_modules/lucide-react/dist/esm/icons/star.js";
|
|
5
5
|
import { TrendingUp as i } from "../node_modules/lucide-react/dist/esm/icons/trending-up.js";
|
|
6
6
|
import { Users as a } from "../node_modules/lucide-react/dist/esm/icons/users.js";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
7
|
+
import { formatCurrency as o } from "../utils/formatters.js";
|
|
8
|
+
import { useAnalytics as s, useFleetAnalytics as c, useOrderAnalytics as l } from "../hooks/useAnalytics.js";
|
|
9
|
+
import { Button as u, Card as d, CardContent as f, CardHeader as p, CardTitle as m, Progress as h } from "../components/ui.js";
|
|
10
|
+
import { PageLayout as g } from "../components/PageLayout.js";
|
|
11
|
+
import { MetricCard as _, MetricCardSkeleton as v, MetricGrid as y } from "../components/MetricCard.js";
|
|
12
|
+
import { TrendChart as b } from "../components/charts/TrendChart.js";
|
|
13
|
+
import { VolumeBar as x } from "../components/charts/VolumeBar.js";
|
|
14
|
+
import { StatusDonut as S } from "../components/charts/StatusDonut.js";
|
|
14
15
|
import "../components/charts/index.js";
|
|
15
|
-
import { formatCurrency as S } from "../utils/formatters.js";
|
|
16
16
|
import { CarbonFootprintPanel as C } from "../components/CarbonFootprintPanel.js";
|
|
17
17
|
import { UpcomingDemandPanel as w } from "../components/UpcomingDemandPanel.js";
|
|
18
18
|
import { useDemandForecast as T } from "../hooks/useDemandForecast.js";
|
|
@@ -22,14 +22,14 @@ import { EmphasisPanel as k, PagePurpose as A } from "@burdenoff/fe-libs/ui";
|
|
|
22
22
|
//#region src/movethewheels/pages/AnalyticsPage.tsx
|
|
23
23
|
var j = (e) => e.replace(/_/g, " ").replace(/\b\w/g, (e) => e.toUpperCase());
|
|
24
24
|
function M() {
|
|
25
|
-
let { analytics: M, isLoading: N, error: P, refetch: F } =
|
|
25
|
+
let { analytics: M, isLoading: N, error: P, refetch: F } = s(), { orderData: I } = l(), { fleetData: L } = c(), { laneForecast: R, customerForecast: z, laneVariance: B, customerVariance: V, isLoading: H, error: U, refetch: W } = T(4, 8), G = E(() => M.trends.dailyOrders.map((e) => e.orders), [M.trends.dailyOrders]), K = E(() => M.trends.revenue.map((e) => ({
|
|
26
26
|
month: e.month,
|
|
27
27
|
revenue: e.revenue
|
|
28
28
|
})), [M.trends.revenue]), q = E(() => I.byStatus.filter((e) => e.count > 0).map((e) => ({
|
|
29
29
|
name: j(e.status),
|
|
30
30
|
value: e.count
|
|
31
31
|
})), [I.byStatus]), J = q.reduce((e, t) => e + t.value, 0);
|
|
32
|
-
return /* @__PURE__ */ O(
|
|
32
|
+
return /* @__PURE__ */ O(g, {
|
|
33
33
|
title: "Analytics",
|
|
34
34
|
subtitle: "Business performance and insights",
|
|
35
35
|
icon: /* @__PURE__ */ D(e, { size: 24 }),
|
|
@@ -38,9 +38,9 @@ function M() {
|
|
|
38
38
|
icon: /* @__PURE__ */ D(e, { size: 18 }),
|
|
39
39
|
children: "See how the operation is really performing. Track order volume, revenue, on-time rate and customer satisfaction over time so you can spot trends, find bottlenecks, and decide where to invest — whether that's more vehicles, better routes, or new customers."
|
|
40
40
|
}),
|
|
41
|
-
P && !N ? /* @__PURE__ */ D(
|
|
41
|
+
P && !N ? /* @__PURE__ */ D(d, {
|
|
42
42
|
className: "border-status-error-border",
|
|
43
|
-
children: /* @__PURE__ */ O(
|
|
43
|
+
children: /* @__PURE__ */ O(f, {
|
|
44
44
|
className: "p-6 text-center space-y-3",
|
|
45
45
|
children: [
|
|
46
46
|
/* @__PURE__ */ D("p", {
|
|
@@ -51,35 +51,35 @@ function M() {
|
|
|
51
51
|
className: "text-sm text-text-secondary",
|
|
52
52
|
children: P.message
|
|
53
53
|
}),
|
|
54
|
-
/* @__PURE__ */ D(
|
|
54
|
+
/* @__PURE__ */ D(u, {
|
|
55
55
|
variant: "outline",
|
|
56
56
|
onClick: F,
|
|
57
57
|
children: "Retry"
|
|
58
58
|
})
|
|
59
59
|
]
|
|
60
60
|
})
|
|
61
|
-
}) : N ? /* @__PURE__ */ D(
|
|
61
|
+
}) : N ? /* @__PURE__ */ D(y, {
|
|
62
62
|
columns: 4,
|
|
63
|
-
children: Array.from({ length: 4 }).map((e, t) => /* @__PURE__ */ D(
|
|
64
|
-
}) : /* @__PURE__ */ O(
|
|
63
|
+
children: Array.from({ length: 4 }).map((e, t) => /* @__PURE__ */ D(v, {}, t))
|
|
64
|
+
}) : /* @__PURE__ */ O(y, {
|
|
65
65
|
columns: 4,
|
|
66
66
|
children: [
|
|
67
|
-
/* @__PURE__ */ D(
|
|
67
|
+
/* @__PURE__ */ D(_, {
|
|
68
68
|
label: "Order Volume",
|
|
69
69
|
value: M.overview.totalOrders.toLocaleString(),
|
|
70
70
|
icon: /* @__PURE__ */ D(n, { size: 20 }),
|
|
71
71
|
accent: "brand",
|
|
72
72
|
sparklineData: G.length >= 2 ? G : void 0
|
|
73
73
|
}),
|
|
74
|
-
/* @__PURE__ */ D(
|
|
74
|
+
/* @__PURE__ */ D(_, {
|
|
75
75
|
treatment: "glass",
|
|
76
76
|
glow: !0,
|
|
77
77
|
label: "Revenue",
|
|
78
|
-
value:
|
|
78
|
+
value: o(M.overview.totalRevenue),
|
|
79
79
|
icon: /* @__PURE__ */ D(t, { size: 20 }),
|
|
80
80
|
accent: "success"
|
|
81
81
|
}),
|
|
82
|
-
/* @__PURE__ */ D(
|
|
82
|
+
/* @__PURE__ */ D(_, {
|
|
83
83
|
label: "On-Time Delivery",
|
|
84
84
|
value: `${M.overview.onTimeDeliveryRate.toFixed(1)}%`,
|
|
85
85
|
icon: /* @__PURE__ */ D(i, { size: 20 }),
|
|
@@ -92,7 +92,7 @@ function M() {
|
|
|
92
92
|
direction: "down"
|
|
93
93
|
}
|
|
94
94
|
}),
|
|
95
|
-
/* @__PURE__ */ D(
|
|
95
|
+
/* @__PURE__ */ D(_, {
|
|
96
96
|
label: "Customer Satisfaction",
|
|
97
97
|
value: M.overview.customerSatisfaction.toFixed(1),
|
|
98
98
|
icon: /* @__PURE__ */ D(r, { size: 20 }),
|
|
@@ -101,7 +101,7 @@ function M() {
|
|
|
101
101
|
})
|
|
102
102
|
]
|
|
103
103
|
}),
|
|
104
|
-
/* @__PURE__ */ O(
|
|
104
|
+
/* @__PURE__ */ O(d, { children: [/* @__PURE__ */ D(p, { children: /* @__PURE__ */ D(m, { children: "Order & delivery trend" }) }), /* @__PURE__ */ D(f, { children: /* @__PURE__ */ D(b, {
|
|
105
105
|
xKey: "date",
|
|
106
106
|
height: 300,
|
|
107
107
|
data: M.trends.dailyOrders,
|
|
@@ -125,7 +125,7 @@ function M() {
|
|
|
125
125
|
}),
|
|
126
126
|
/* @__PURE__ */ O("div", {
|
|
127
127
|
className: "grid grid-cols-1 lg:grid-cols-2 gap-6",
|
|
128
|
-
children: [/* @__PURE__ */ O(
|
|
128
|
+
children: [/* @__PURE__ */ O(d, { children: [/* @__PURE__ */ D(p, { children: /* @__PURE__ */ D(m, { children: "Revenue by month" }) }), /* @__PURE__ */ D(f, { children: /* @__PURE__ */ D(x, {
|
|
129
129
|
xKey: "month",
|
|
130
130
|
height: 280,
|
|
131
131
|
showLegend: !1,
|
|
@@ -134,9 +134,9 @@ function M() {
|
|
|
134
134
|
dataKey: "revenue",
|
|
135
135
|
name: "Revenue"
|
|
136
136
|
}],
|
|
137
|
-
valueFormatter: (e) =>
|
|
137
|
+
valueFormatter: (e) => o(Number(e)),
|
|
138
138
|
emptyMessage: "No revenue recorded yet"
|
|
139
|
-
}) })] }), /* @__PURE__ */ O(
|
|
139
|
+
}) })] }), /* @__PURE__ */ O(d, { children: [/* @__PURE__ */ D(p, { children: /* @__PURE__ */ D(m, { children: "Orders by status" }) }), /* @__PURE__ */ D(f, { children: /* @__PURE__ */ D(S, {
|
|
140
140
|
data: q,
|
|
141
141
|
height: 240,
|
|
142
142
|
centerLabel: J.toLocaleString(),
|
|
@@ -146,12 +146,12 @@ function M() {
|
|
|
146
146
|
}),
|
|
147
147
|
/* @__PURE__ */ O("div", {
|
|
148
148
|
className: "grid grid-cols-1 lg:grid-cols-2 gap-6",
|
|
149
|
-
children: [/* @__PURE__ */ O(
|
|
149
|
+
children: [/* @__PURE__ */ O(d, { children: [/* @__PURE__ */ D(p, { children: /* @__PURE__ */ D(m, { children: "Fleet Performance" }) }), /* @__PURE__ */ O(f, {
|
|
150
150
|
className: "space-y-4",
|
|
151
151
|
children: [/* @__PURE__ */ O("div", { children: [/* @__PURE__ */ O("div", {
|
|
152
152
|
className: "flex justify-between text-sm mb-1",
|
|
153
153
|
children: [/* @__PURE__ */ D("span", { children: "Vehicle Utilization" }), /* @__PURE__ */ O("span", { children: [L.vehicleUtilization.toFixed(0), "%"] })]
|
|
154
|
-
}), /* @__PURE__ */ D(
|
|
154
|
+
}), /* @__PURE__ */ D(h, { value: L.vehicleUtilization })] }), L.vehiclesByType.length > 0 && /* @__PURE__ */ O("div", {
|
|
155
155
|
className: "pt-2",
|
|
156
156
|
children: [/* @__PURE__ */ D("p", {
|
|
157
157
|
className: "text-sm text-text-secondary mb-2",
|