@burdenoff/microfe-movethewheels 2026.1031.3 → 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 (58) hide show
  1. package/dist/MoveTheWheelsRoot.js +136 -127
  2. package/dist/MoveTheWheelsRoutes.js +140 -135
  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 +56 -0
  9. package/dist/hooks/useOrderDispatch.js +17 -17
  10. package/dist/movethewheels/pages/SettingsPage.d.ts +1 -0
  11. package/dist/movethewheels/providers/ModuleSettingsProvider.d.ts +17 -0
  12. package/dist/movethewheels/utils/formatters.d.ts +23 -3
  13. package/dist/movethewheels/utils/moduleSettings.d.ts +52 -0
  14. package/dist/node_modules/lucide-react/dist/esm/icons/bell.js +11 -0
  15. package/dist/node_modules/lucide-react/dist/esm/icons/key-round.js +14 -0
  16. package/dist/node_modules/lucide-react/dist/esm/icons/plug.js +22 -0
  17. package/dist/node_modules/lucide-react/dist/esm/icons/rotate-ccw.js +11 -0
  18. package/dist/node_modules/lucide-react/dist/esm/icons/settings.js +13 -0
  19. package/dist/pages/AnalyticsPage.js +27 -27
  20. package/dist/pages/CreateOrderPage.js +340 -317
  21. package/dist/pages/CustomerDetailsPage.js +246 -246
  22. package/dist/pages/CustomersPage.js +19 -19
  23. package/dist/pages/DashboardPage.js +24 -24
  24. package/dist/pages/DeliveryCapturePage.js +74 -74
  25. package/dist/pages/DriverDetailsPage.js +337 -337
  26. package/dist/pages/DriversPage.js +26 -26
  27. package/dist/pages/FinancePage.js +26 -26
  28. package/dist/pages/InventoryPage.js +28 -28
  29. package/dist/pages/LiveTrackingPage.js +108 -108
  30. package/dist/pages/MarketplacePage.js +44 -44
  31. package/dist/pages/OrderDetailsPage.js +306 -306
  32. package/dist/pages/OrdersListPage.js +27 -27
  33. package/dist/pages/ProductDetailsPage.js +89 -89
  34. package/dist/pages/ProductsPage.js +73 -73
  35. package/dist/pages/RouteDetailsPage.js +282 -285
  36. package/dist/pages/RoutesPage.js +78 -78
  37. package/dist/pages/SettingsPage.js +459 -0
  38. package/dist/pages/TrackingPage.js +41 -41
  39. package/dist/pages/VehicleDetailsPage.js +207 -207
  40. package/dist/pages/VehiclesPage.js +17 -16
  41. package/dist/pages/WarehouseDetailsPage.js +132 -132
  42. package/dist/providers/ModuleSettingsProvider.js +74 -0
  43. package/dist/utils/formatters.js +53 -26
  44. package/dist/utils/moduleSettings.js +132 -0
  45. package/package.json +3 -2
  46. package/src/generated/tracking-quality-operations.ts +62 -0
  47. package/src/movethewheels/MoveTheWheelsRoot.tsx +14 -3
  48. package/src/movethewheels/MoveTheWheelsRoutes.tsx +9 -0
  49. package/src/movethewheels/pages/CreateOrderPage.tsx +38 -6
  50. package/src/movethewheels/pages/ProductsPage.tsx +2 -2
  51. package/src/movethewheels/pages/RouteDetailsPage.tsx +3 -6
  52. package/src/movethewheels/pages/RoutesPage.tsx +2 -2
  53. package/src/movethewheels/pages/SettingsPage.tsx +516 -0
  54. package/src/movethewheels/pages/VehicleDetailsPage.tsx +4 -2
  55. package/src/movethewheels/pages/VehiclesPage.tsx +2 -1
  56. package/src/movethewheels/providers/ModuleSettingsProvider.tsx +133 -0
  57. package/src/movethewheels/utils/formatters.ts +69 -10
  58. package/src/movethewheels/utils/moduleSettings.ts +224 -0
@@ -12,14 +12,14 @@ import { Star as u } from "../node_modules/lucide-react/dist/esm/icons/star.js";
12
12
  import { Store as d } from "../node_modules/lucide-react/dist/esm/icons/store.js";
13
13
  import { Trash2 as f } from "../node_modules/lucide-react/dist/esm/icons/trash-2.js";
14
14
  import { Truck as p } from "../node_modules/lucide-react/dist/esm/icons/truck.js";
15
- import { Badge as m, Button as h, Card as g, CardContent as _, Input as v, Select as y, SelectContent as b, SelectItem as x, SelectTrigger as S, SelectValue as C, Skeleton as w } from "../components/ui.js";
16
- import { PageLayout as ee } from "../components/PageLayout.js";
17
- import { MetricCard as T, MetricGrid as te } from "../components/MetricCard.js";
15
+ import { formatCurrency as m } from "../utils/formatters.js";
16
+ import { Badge as h, Button as g, Card as _, CardContent as v, Input as y, Select as b, SelectContent as x, SelectItem as S, SelectTrigger as C, SelectValue as ee, Skeleton as w } from "../components/ui.js";
17
+ import { PageLayout as te } from "../components/PageLayout.js";
18
+ import { MetricCard as T, MetricGrid as ne } from "../components/MetricCard.js";
18
19
  import { FormError as E } from "../components/FormError.js";
19
- import { Notice as ne, useNotice as re } from "../components/Notice.js";
20
- import { formatCurrency as D } from "../utils/formatters.js";
21
- import { useDebouncedValue as ie } from "../hooks/useDebouncedValue.js";
22
- import { PROVIDER_TYPES as ae, humanizeEnum as O, useMarketplaceActions as oe, useMarketplaceStats as se, useProviderOfferings as k, useServiceProviders as ce, useShipmentOptions as A } from "../hooks/useMarketplace.js";
20
+ import { Notice as re, useNotice as ie } from "../components/Notice.js";
21
+ import { useDebouncedValue as ae } from "../hooks/useDebouncedValue.js";
22
+ import { PROVIDER_TYPES as oe, humanizeEnum as D, useMarketplaceActions as se, useMarketplaceStats as O, useProviderOfferings as k, useServiceProviders as ce, useShipmentOptions as A } from "../hooks/useMarketplace.js";
23
23
  import { AssignShipmentDialog as le, OfferingDialog as ue, ProviderDialog as de } from "../components/marketplace/MarketplaceDialogs.js";
24
24
  import { useState as j } from "react";
25
25
  import { jsx as M, jsxs as N } from "react/jsx-runtime";
@@ -52,7 +52,7 @@ function L({ provider: e, refreshKey: t, onAdd: n, onEdit: r, onDelete: i }) {
52
52
  " shipment",
53
53
  u === 1 ? "" : "s"
54
54
  ]
55
- }), /* @__PURE__ */ N(h, {
55
+ }), /* @__PURE__ */ N(g, {
56
56
  size: "sm",
57
57
  variant: "outline",
58
58
  onClick: n,
@@ -83,7 +83,7 @@ function L({ provider: e, refreshKey: t, onAdd: n, onEdit: r, onDelete: i }) {
83
83
  }),
84
84
  /* @__PURE__ */ N("p", {
85
85
  className: "text-xs text-text-secondary",
86
- children: [O(e.category), e.transitDays == null ? "" : ` · ${e.transitDays} day transit`]
86
+ children: [D(e.category), e.transitDays == null ? "" : ` · ${e.transitDays} day transit`]
87
87
  }),
88
88
  e.description ? /* @__PURE__ */ M("p", {
89
89
  className: "mt-1 text-xs text-text-secondary",
@@ -95,20 +95,20 @@ function L({ provider: e, refreshKey: t, onAdd: n, onEdit: r, onDelete: i }) {
95
95
  children: [
96
96
  /* @__PURE__ */ M("span", {
97
97
  className: "text-sm font-medium",
98
- children: e.price == null ? "Price on request" : `${D(e.price, e.currency)}${e.pricingUnit ? ` / ${e.pricingUnit}` : ""}`
98
+ children: e.price == null ? "Price on request" : `${m(e.price, e.currency)}${e.pricingUnit ? ` / ${e.pricingUnit}` : ""}`
99
99
  }),
100
- /* @__PURE__ */ M(m, {
100
+ /* @__PURE__ */ M(h, {
101
101
  variant: I(e.availability),
102
- children: O(e.availability)
102
+ children: D(e.availability)
103
103
  }),
104
- /* @__PURE__ */ M(h, {
104
+ /* @__PURE__ */ M(g, {
105
105
  size: "icon",
106
106
  variant: "ghost",
107
107
  "aria-label": `Edit ${e.name}`,
108
108
  onClick: () => r(e),
109
109
  children: /* @__PURE__ */ M(o, { size: 14 })
110
110
  }),
111
- /* @__PURE__ */ M(h, {
111
+ /* @__PURE__ */ M(g, {
112
112
  size: "icon",
113
113
  variant: "ghost",
114
114
  "aria-label": `Remove ${e.name}`,
@@ -122,10 +122,10 @@ function L({ provider: e, refreshKey: t, onAdd: n, onEdit: r, onDelete: i }) {
122
122
  ]
123
123
  });
124
124
  }
125
- function me({ provider: a, expanded: c, refreshKey: l, onToggle: d, onEdit: v, onDelete: y, onAssign: b, onAddOffering: x, onEditOffering: S, onDeleteOffering: C }) {
126
- return /* @__PURE__ */ M(g, {
125
+ function me({ provider: a, expanded: c, refreshKey: l, onToggle: d, onEdit: m, onDelete: y, onAssign: b, onAddOffering: x, onEditOffering: S, onDeleteOffering: C }) {
126
+ return /* @__PURE__ */ M(_, {
127
127
  "data-testid": "mtw-provider-card",
128
- children: /* @__PURE__ */ N(_, {
128
+ children: /* @__PURE__ */ N(v, {
129
129
  className: "p-5",
130
130
  children: [
131
131
  /* @__PURE__ */ N("div", {
@@ -140,15 +140,15 @@ function me({ provider: a, expanded: c, refreshKey: l, onToggle: d, onEdit: v, o
140
140
  className: "text-base font-semibold",
141
141
  children: a.name
142
142
  }),
143
- a.isVerified ? /* @__PURE__ */ N(m, {
143
+ a.isVerified ? /* @__PURE__ */ N(h, {
144
144
  variant: "default",
145
145
  className: "gap-1",
146
146
  children: [/* @__PURE__ */ M(e, { size: 12 }), "Verified"]
147
- }) : /* @__PURE__ */ M(m, {
147
+ }) : /* @__PURE__ */ M(h, {
148
148
  variant: "outline",
149
149
  children: "Unverified"
150
150
  }),
151
- a.isActive ? null : /* @__PURE__ */ M(m, {
151
+ a.isActive ? null : /* @__PURE__ */ M(h, {
152
152
  variant: "secondary",
153
153
  children: "Inactive"
154
154
  })
@@ -156,7 +156,7 @@ function me({ provider: a, expanded: c, refreshKey: l, onToggle: d, onEdit: v, o
156
156
  }),
157
157
  /* @__PURE__ */ N("p", {
158
158
  className: "text-sm text-text-secondary",
159
- children: [O(a.type), a.rating == null ? null : /* @__PURE__ */ N("span", {
159
+ children: [D(a.type), a.rating == null ? null : /* @__PURE__ */ N("span", {
160
160
  className: "ml-2 inline-flex items-center gap-1",
161
161
  children: [/* @__PURE__ */ M(u, {
162
162
  size: 13,
@@ -172,7 +172,7 @@ function me({ provider: a, expanded: c, refreshKey: l, onToggle: d, onEdit: v, o
172
172
  }), /* @__PURE__ */ N("div", {
173
173
  className: "flex flex-wrap items-center gap-2",
174
174
  children: [
175
- /* @__PURE__ */ N(h, {
175
+ /* @__PURE__ */ N(g, {
176
176
  size: "sm",
177
177
  onClick: b,
178
178
  children: [/* @__PURE__ */ M(p, {
@@ -180,14 +180,14 @@ function me({ provider: a, expanded: c, refreshKey: l, onToggle: d, onEdit: v, o
180
180
  className: "mr-1"
181
181
  }), "Assign to shipment"]
182
182
  }),
183
- /* @__PURE__ */ M(h, {
183
+ /* @__PURE__ */ M(g, {
184
184
  size: "icon",
185
185
  variant: "ghost",
186
186
  "aria-label": `Edit ${a.name}`,
187
- onClick: v,
187
+ onClick: m,
188
188
  children: /* @__PURE__ */ M(o, { size: 16 })
189
189
  }),
190
- /* @__PURE__ */ M(h, {
190
+ /* @__PURE__ */ M(g, {
191
191
  size: "icon",
192
192
  variant: "ghost",
193
193
  "aria-label": `Remove ${a.name}`,
@@ -216,7 +216,7 @@ function me({ provider: a, expanded: c, refreshKey: l, onToggle: d, onEdit: v, o
216
216
  }),
217
217
  a.services.length > 0 ? /* @__PURE__ */ M("div", {
218
218
  className: "mt-3 flex flex-wrap gap-1.5",
219
- children: a.services.map((e) => /* @__PURE__ */ M(m, {
219
+ children: a.services.map((e) => /* @__PURE__ */ M(h, {
220
220
  variant: "secondary",
221
221
  children: e
222
222
  }, e))
@@ -245,7 +245,7 @@ function me({ provider: a, expanded: c, refreshKey: l, onToggle: d, onEdit: v, o
245
245
  });
246
246
  }
247
247
  function R() {
248
- let t = oe(), { message: n, notify: r } = re(), [i, o] = j(null), [s, f] = j(""), p = ie(s), [m, D] = j(F), [k, A] = j(!1), [I, L] = j(0), [R, he] = j(0), [ge, z] = j(null), [B, V] = j({
248
+ let t = se(), { message: n, notify: r } = ie(), [i, o] = j(null), [s, f] = j(""), p = ae(s), [m, h] = j(F), [k, A] = j(!1), [I, L] = j(0), [R, he] = j(0), [ge, z] = j(null), [B, V] = j({
249
249
  open: !1,
250
250
  provider: null
251
251
  }), [H, U] = j({
@@ -263,7 +263,7 @@ function R() {
263
263
  },
264
264
  limit: P,
265
265
  offset: I * P
266
- }), Y = se(R), X = Math.max(1, Math.ceil(q / P)), Z = () => {
266
+ }), Y = O(R), X = Math.max(1, Math.ceil(q / P)), Z = () => {
267
267
  he((e) => e + 1), ve();
268
268
  }, Q = (e) => {
269
269
  o(null), r(e), Z();
@@ -280,7 +280,7 @@ function R() {
280
280
  o(e instanceof Error ? e.message : "Could not remove the offering.");
281
281
  }
282
282
  }, $ = !!p.trim() || m !== F || k;
283
- return /* @__PURE__ */ N(ee, {
283
+ return /* @__PURE__ */ N(te, {
284
284
  title: "Marketplace",
285
285
  subtitle: Y ? `${Y.providers} service providers` : "Service providers",
286
286
  icon: /* @__PURE__ */ M(d, { size: 24 }),
@@ -304,9 +304,9 @@ function R() {
304
304
  icon: /* @__PURE__ */ M(d, { size: 18 }),
305
305
  children: "Your directory of vetted carriers, 3PLs, warehouses and specialists. When you are short of capacity, find a provider here and make it a shipment's carrier instead of buying assets."
306
306
  }),
307
- /* @__PURE__ */ M(ne, { message: n }),
307
+ /* @__PURE__ */ M(re, { message: n }),
308
308
  /* @__PURE__ */ M(E, { message: i }),
309
- /* @__PURE__ */ N(te, {
309
+ /* @__PURE__ */ N(ne, {
310
310
  columns: 4,
311
311
  children: [
312
312
  /* @__PURE__ */ M(T, {
@@ -338,7 +338,7 @@ function R() {
338
338
  /* @__PURE__ */ N("div", {
339
339
  className: "flex flex-col gap-3 sm:flex-row sm:items-center",
340
340
  children: [
341
- /* @__PURE__ */ M(v, {
341
+ /* @__PURE__ */ M(y, {
342
342
  "aria-label": "Search providers",
343
343
  placeholder: "Search by name, service or area…",
344
344
  value: s,
@@ -347,24 +347,24 @@ function R() {
347
347
  },
348
348
  className: "sm:max-w-sm"
349
349
  }),
350
- /* @__PURE__ */ N(y, {
350
+ /* @__PURE__ */ N(b, {
351
351
  value: m,
352
352
  onValueChange: (e) => {
353
- D(e), L(0);
353
+ h(e), L(0);
354
354
  },
355
- children: [/* @__PURE__ */ M(S, {
355
+ children: [/* @__PURE__ */ M(C, {
356
356
  "aria-label": "Provider type",
357
357
  className: "sm:w-56",
358
- children: /* @__PURE__ */ M(C, {})
359
- }), /* @__PURE__ */ N(b, { children: [/* @__PURE__ */ M(x, {
358
+ children: /* @__PURE__ */ M(ee, {})
359
+ }), /* @__PURE__ */ N(x, { children: [/* @__PURE__ */ M(S, {
360
360
  value: F,
361
361
  children: "All provider types"
362
- }), ae.map((e) => /* @__PURE__ */ M(x, {
362
+ }), oe.map((e) => /* @__PURE__ */ M(S, {
363
363
  value: e,
364
- children: O(e)
364
+ children: D(e)
365
365
  }, e))] })]
366
366
  }),
367
- /* @__PURE__ */ N(h, {
367
+ /* @__PURE__ */ N(g, {
368
368
  variant: k ? "default" : "outline",
369
369
  onClick: () => {
370
370
  A((e) => !e), L(0);
@@ -381,7 +381,7 @@ function R() {
381
381
  _e && K.length === 0 ? /* @__PURE__ */ N("div", {
382
382
  className: "grid gap-4",
383
383
  children: [/* @__PURE__ */ M(w, { className: "h-32 w-full" }), /* @__PURE__ */ M(w, { className: "h-32 w-full" })]
384
- }) : K.length === 0 && !J ? /* @__PURE__ */ M(g, { children: /* @__PURE__ */ N(_, {
384
+ }) : K.length === 0 && !J ? /* @__PURE__ */ M(_, { children: /* @__PURE__ */ N(v, {
385
385
  className: "flex flex-col items-center gap-3 p-10 text-center",
386
386
  children: [
387
387
  /* @__PURE__ */ M(d, {
@@ -396,7 +396,7 @@ function R() {
396
396
  className: "max-w-md text-sm text-text-secondary",
397
397
  children: $ ? "Try a different search or clear the filters." : "Add the carriers, 3PLs and warehouses you work with so your team can find capacity in one place."
398
398
  }),
399
- $ ? null : /* @__PURE__ */ N(h, {
399
+ $ ? null : /* @__PURE__ */ N(g, {
400
400
  onClick: () => V({
401
401
  open: !0,
402
402
  provider: null
@@ -451,13 +451,13 @@ function R() {
451
451
  ]
452
452
  }), /* @__PURE__ */ N("div", {
453
453
  className: "flex gap-2",
454
- children: [/* @__PURE__ */ M(h, {
454
+ children: [/* @__PURE__ */ M(g, {
455
455
  variant: "outline",
456
456
  size: "sm",
457
457
  disabled: I === 0,
458
458
  onClick: () => L((e) => e - 1),
459
459
  children: "Previous"
460
- }), /* @__PURE__ */ M(h, {
460
+ }), /* @__PURE__ */ M(g, {
461
461
  variant: "outline",
462
462
  size: "sm",
463
463
  disabled: I + 1 >= X,