@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.
Files changed (74) hide show
  1. package/dist/MoveTheWheelsRoot.js +121 -104
  2. package/dist/MoveTheWheelsRoutes.js +142 -133
  3. package/dist/components/DocumentsCard.js +11 -11
  4. package/dist/components/ProofOfDeliveryCard.js +13 -13
  5. package/dist/components/ShipmentRiskDialog.js +24 -24
  6. package/dist/components/ShippingQuoteResults.js +46 -46
  7. package/dist/components/TrackingAlertList.js +17 -17
  8. package/dist/generated/tracking-quality-operations.d.ts +140 -0
  9. package/dist/hooks/useEntityImport.js +68 -0
  10. package/dist/hooks/useOrderDispatch.js +17 -17
  11. package/dist/movethewheels/hooks/useEntityImport.d.ts +19 -0
  12. package/dist/movethewheels/pages/ImportExportPage.d.ts +9 -0
  13. package/dist/movethewheels/pages/SettingsPage.d.ts +1 -0
  14. package/dist/movethewheels/providers/ModuleSettingsProvider.d.ts +17 -0
  15. package/dist/movethewheels/utils/entityImport.d.ts +109 -0
  16. package/dist/movethewheels/utils/formatters.d.ts +23 -3
  17. package/dist/movethewheels/utils/moduleSettings.d.ts +52 -0
  18. package/dist/node_modules/lucide-react/dist/esm/icons/arrow-down-up.js +22 -0
  19. package/dist/node_modules/lucide-react/dist/esm/icons/bell.js +11 -0
  20. package/dist/node_modules/lucide-react/dist/esm/icons/file-spreadsheet.js +30 -0
  21. package/dist/node_modules/lucide-react/dist/esm/icons/file-up.js +22 -0
  22. package/dist/node_modules/lucide-react/dist/esm/icons/key-round.js +14 -0
  23. package/dist/node_modules/lucide-react/dist/esm/icons/plug.js +22 -0
  24. package/dist/node_modules/lucide-react/dist/esm/icons/rotate-ccw.js +11 -0
  25. package/dist/node_modules/lucide-react/dist/esm/icons/settings.js +13 -0
  26. package/dist/pages/AnalyticsPage.js +27 -27
  27. package/dist/pages/CreateOrderPage.js +340 -317
  28. package/dist/pages/CustomerDetailsPage.js +246 -246
  29. package/dist/pages/CustomersPage.js +88 -79
  30. package/dist/pages/DashboardPage.js +24 -24
  31. package/dist/pages/DeliveryCapturePage.js +74 -74
  32. package/dist/pages/DriverDetailsPage.js +337 -337
  33. package/dist/pages/DriversPage.js +119 -110
  34. package/dist/pages/FinancePage.js +26 -26
  35. package/dist/pages/ImportExportPage.js +435 -0
  36. package/dist/pages/InventoryPage.js +28 -28
  37. package/dist/pages/LiveTrackingPage.js +108 -108
  38. package/dist/pages/MarketplacePage.js +44 -44
  39. package/dist/pages/OrderDetailsPage.js +306 -306
  40. package/dist/pages/OrdersListPage.js +27 -27
  41. package/dist/pages/ProductDetailsPage.js +89 -89
  42. package/dist/pages/ProductsPage.js +86 -77
  43. package/dist/pages/RouteDetailsPage.js +282 -285
  44. package/dist/pages/RoutesPage.js +78 -78
  45. package/dist/pages/SettingsPage.js +459 -0
  46. package/dist/pages/TrackingPage.js +41 -41
  47. package/dist/pages/VehicleDetailsPage.js +207 -207
  48. package/dist/pages/VehiclesPage.js +100 -90
  49. package/dist/pages/WarehouseDetailsPage.js +132 -132
  50. package/dist/pages/WarehousesPage.js +97 -88
  51. package/dist/providers/ModuleSettingsProvider.js +74 -0
  52. package/dist/utils/entityImport.js +73 -0
  53. package/dist/utils/formatters.js +53 -26
  54. package/dist/utils/moduleSettings.js +132 -0
  55. package/package.json +4 -2
  56. package/src/generated/tracking-quality-operations.ts +184 -0
  57. package/src/movethewheels/MoveTheWheelsRoot.tsx +22 -3
  58. package/src/movethewheels/MoveTheWheelsRoutes.tsx +13 -0
  59. package/src/movethewheels/hooks/useEntityImport.ts +108 -0
  60. package/src/movethewheels/pages/CreateOrderPage.tsx +38 -6
  61. package/src/movethewheels/pages/CustomersPage.tsx +6 -1
  62. package/src/movethewheels/pages/DriversPage.tsx +6 -0
  63. package/src/movethewheels/pages/ImportExportPage.tsx +483 -0
  64. package/src/movethewheels/pages/ProductsPage.tsx +16 -3
  65. package/src/movethewheels/pages/RouteDetailsPage.tsx +3 -6
  66. package/src/movethewheels/pages/RoutesPage.tsx +2 -2
  67. package/src/movethewheels/pages/SettingsPage.tsx +516 -0
  68. package/src/movethewheels/pages/VehicleDetailsPage.tsx +4 -2
  69. package/src/movethewheels/pages/VehiclesPage.tsx +8 -1
  70. package/src/movethewheels/pages/WarehousesPage.tsx +6 -1
  71. package/src/movethewheels/providers/ModuleSettingsProvider.tsx +133 -0
  72. package/src/movethewheels/utils/entityImport.ts +239 -0
  73. package/src/movethewheels/utils/formatters.ts +69 -10
  74. 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 { useAnalytics as o, useFleetAnalytics as s, useOrderAnalytics as c } from "../hooks/useAnalytics.js";
8
- import { Button as l, Card as u, CardContent as d, CardHeader as f, CardTitle as p, Progress as m } from "../components/ui.js";
9
- import { PageLayout as h } from "../components/PageLayout.js";
10
- import { MetricCard as g, MetricCardSkeleton as _, MetricGrid as v } from "../components/MetricCard.js";
11
- import { TrendChart as y } from "../components/charts/TrendChart.js";
12
- import { VolumeBar as b } from "../components/charts/VolumeBar.js";
13
- import { StatusDonut as x } from "../components/charts/StatusDonut.js";
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 } = o(), { orderData: I } = c(), { fleetData: L } = s(), { 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) => ({
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(h, {
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(u, {
41
+ P && !N ? /* @__PURE__ */ D(d, {
42
42
  className: "border-status-error-border",
43
- children: /* @__PURE__ */ O(d, {
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(l, {
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(v, {
61
+ }) : N ? /* @__PURE__ */ D(y, {
62
62
  columns: 4,
63
- children: Array.from({ length: 4 }).map((e, t) => /* @__PURE__ */ D(_, {}, t))
64
- }) : /* @__PURE__ */ O(v, {
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(g, {
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(g, {
74
+ /* @__PURE__ */ D(_, {
75
75
  treatment: "glass",
76
76
  glow: !0,
77
77
  label: "Revenue",
78
- value: S(M.overview.totalRevenue),
78
+ value: o(M.overview.totalRevenue),
79
79
  icon: /* @__PURE__ */ D(t, { size: 20 }),
80
80
  accent: "success"
81
81
  }),
82
- /* @__PURE__ */ D(g, {
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(g, {
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(u, { children: [/* @__PURE__ */ D(f, { children: /* @__PURE__ */ D(p, { children: "Order & delivery trend" }) }), /* @__PURE__ */ D(d, { children: /* @__PURE__ */ D(y, {
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(u, { children: [/* @__PURE__ */ D(f, { children: /* @__PURE__ */ D(p, { children: "Revenue by month" }) }), /* @__PURE__ */ D(d, { children: /* @__PURE__ */ D(b, {
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) => S(Number(e)),
137
+ valueFormatter: (e) => o(Number(e)),
138
138
  emptyMessage: "No revenue recorded yet"
139
- }) })] }), /* @__PURE__ */ O(u, { children: [/* @__PURE__ */ D(f, { children: /* @__PURE__ */ D(p, { children: "Orders by status" }) }), /* @__PURE__ */ D(d, { children: /* @__PURE__ */ D(x, {
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(u, { children: [/* @__PURE__ */ D(f, { children: /* @__PURE__ */ D(p, { children: "Fleet Performance" }) }), /* @__PURE__ */ O(d, {
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(m, { value: L.vehicleUtilization })] }), L.vehiclesByType.length > 0 && /* @__PURE__ */ O("div", {
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",