@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
@@ -4,91 +4,100 @@ import { Plus as n } from "../node_modules/lucide-react/dist/esm/icons/plus.js";
4
4
  import { RefreshCw as r } from "../node_modules/lucide-react/dist/esm/icons/refresh-cw.js";
5
5
  import { Thermometer as i } from "../node_modules/lucide-react/dist/esm/icons/thermometer.js";
6
6
  import { TriangleAlert as a } from "../node_modules/lucide-react/dist/esm/icons/triangle-alert.js";
7
- import { joinPath as o } from "../utils/navigation.js";
8
- import { useMoveTheWheels as s } from "../providers/MoveTheWheelsProvider.js";
9
- import { useProductStats as c, useProducts as l } from "../hooks/useInventory.js";
10
- import { Badge as u } from "../components/ui.js";
11
- import { PageLayout as d } from "../components/PageLayout.js";
12
- import { MetricCard as f, MetricGrid as p } from "../components/MetricCard.js";
13
- import { DataTable as m } from "../components/DataTable.js";
14
- import { formatCurrency as h } from "../utils/formatters.js";
15
- import { useDebouncedValue as g } from "../hooks/useDebouncedValue.js";
16
- import { useEntityExport as _ } from "../hooks/useEntityExport.js";
17
- import { ExportStatusBanner as v } from "../components/ExportStatusBanner.js";
18
- import { useState as y } from "react";
19
- import { jsx as b, jsxs as x } from "react/jsx-runtime";
20
- import { CTAOverflowMenu as S, PagePurpose as C } from "@burdenoff/fe-libs/ui";
7
+ import { Upload as o } from "../node_modules/lucide-react/dist/esm/icons/upload.js";
8
+ import { joinPath as s } from "../utils/navigation.js";
9
+ import { useMoveTheWheels as c } from "../providers/MoveTheWheelsProvider.js";
10
+ import { formatCurrency as l, formatWeight as u } from "../utils/formatters.js";
11
+ import { useProductStats as d, useProducts as f } from "../hooks/useInventory.js";
12
+ import { Badge as p } from "../components/ui.js";
13
+ import { PageLayout as m } from "../components/PageLayout.js";
14
+ import { MetricCard as h, MetricGrid as g } from "../components/MetricCard.js";
15
+ import { DataTable as _ } from "../components/DataTable.js";
16
+ import { useDebouncedValue as v } from "../hooks/useDebouncedValue.js";
17
+ import { useEntityExport as y } from "../hooks/useEntityExport.js";
18
+ import { ExportStatusBanner as b } from "../components/ExportStatusBanner.js";
19
+ import { useState as x } from "react";
20
+ import { jsx as S, jsxs as C } from "react/jsx-runtime";
21
+ import { CTAOverflowMenu as w, PagePurpose as T } from "@burdenoff/fe-libs/ui";
21
22
  //#region src/movethewheels/pages/ProductsPage.tsx
22
- function w() {
23
- let { basePath: w, navigate: T } = s(), { state: E, isExporting: D, startExport: O, dismiss: k } = _("products", "product"), [A, j] = y(0), [M, N] = y(25), [P, F] = y(""), I = g(P), { products: L, totalProducts: R, hasMore: z, isLoading: B, error: V, refetch: H } = l({
24
- limit: M,
25
- offset: A * M,
26
- search: I
27
- }), { stats: U } = c(), W = (e) => T?.(o(w, e));
28
- return /* @__PURE__ */ x(d, {
23
+ function E() {
24
+ let { basePath: E, navigate: D } = c(), { state: O, isExporting: k, startExport: A, dismiss: j } = y("products", "product"), [M, N] = x(0), [P, F] = x(25), [I, L] = x(""), R = v(I), { products: z, totalProducts: B, hasMore: V, isLoading: H, error: U, refetch: W } = f({
25
+ limit: P,
26
+ offset: M * P,
27
+ search: R
28
+ }), { stats: G } = d(), K = (e) => D?.(s(E, e));
29
+ return /* @__PURE__ */ C(m, {
29
30
  title: "Products",
30
- subtitle: `${U.total} products`,
31
- icon: /* @__PURE__ */ b(t, { size: 24 }),
32
- headerActions: /* @__PURE__ */ b(S, {
31
+ subtitle: `${G.total} products`,
32
+ icon: /* @__PURE__ */ S(t, { size: 24 }),
33
+ headerActions: /* @__PURE__ */ S(w, {
33
34
  primary: {
34
35
  label: "Add Product",
35
- icon: /* @__PURE__ */ b(n, { size: 16 }),
36
- onSelect: () => W("inventory/products/new")
36
+ icon: /* @__PURE__ */ S(n, { size: 16 }),
37
+ onSelect: () => K("inventory/products/new")
37
38
  },
38
- actions: [{
39
- label: "Refresh",
40
- icon: /* @__PURE__ */ b(r, { size: 16 }),
41
- onSelect: () => H()
42
- }, {
43
- label: D ? "Exporting…" : "Export",
44
- icon: /* @__PURE__ */ b(e, { size: 16 }),
45
- onSelect: O
46
- }]
39
+ actions: [
40
+ {
41
+ label: "Refresh",
42
+ icon: /* @__PURE__ */ S(r, { size: 16 }),
43
+ onSelect: () => W()
44
+ },
45
+ {
46
+ label: "Import",
47
+ icon: /* @__PURE__ */ S(o, { size: 16 }),
48
+ onSelect: () => K("import-export?entity=CARGO_ITEM")
49
+ },
50
+ {
51
+ label: k ? "Exporting…" : "Export",
52
+ icon: /* @__PURE__ */ S(e, { size: 16 }),
53
+ onSelect: A
54
+ }
55
+ ]
47
56
  }),
48
57
  children: [
49
- /* @__PURE__ */ b(C, {
50
- icon: /* @__PURE__ */ b(t, { size: 18 }),
58
+ /* @__PURE__ */ S(T, {
59
+ icon: /* @__PURE__ */ S(t, { size: 18 }),
51
60
  children: "The catalog of items you ship. Each product's dimensions, weight, value and handling flags (fragile, hazardous, temperature-controlled) drive how it's packed, priced and routed — keep them accurate so shipments are quoted and handled correctly."
52
61
  }),
53
- /* @__PURE__ */ b(v, {
54
- state: E,
55
- onDismiss: k
62
+ /* @__PURE__ */ S(b, {
63
+ state: O,
64
+ onDismiss: j
56
65
  }),
57
- /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("p", {
66
+ /* @__PURE__ */ C("div", { children: [/* @__PURE__ */ S("p", {
58
67
  className: "mb-3 text-sm font-medium text-text-secondary",
59
68
  children: "Catalog at a glance"
60
- }), /* @__PURE__ */ x(p, {
69
+ }), /* @__PURE__ */ C(g, {
61
70
  columns: 3,
62
71
  children: [
63
- /* @__PURE__ */ b(f, {
72
+ /* @__PURE__ */ S(h, {
64
73
  label: "Total products",
65
- value: U.total,
66
- icon: /* @__PURE__ */ b(t, { size: 20 }),
74
+ value: G.total,
75
+ icon: /* @__PURE__ */ S(t, { size: 20 }),
67
76
  accent: "brand"
68
77
  }),
69
- /* @__PURE__ */ b(f, {
78
+ /* @__PURE__ */ S(h, {
70
79
  label: "Special handling",
71
- value: U.specialHandling,
72
- icon: /* @__PURE__ */ b(a, { size: 20 }),
80
+ value: G.specialHandling,
81
+ icon: /* @__PURE__ */ S(a, { size: 20 }),
73
82
  accent: "warning",
74
83
  subtitle: "Fragile or hazardous"
75
84
  }),
76
- /* @__PURE__ */ b(f, {
85
+ /* @__PURE__ */ S(h, {
77
86
  label: "Temp-controlled",
78
- value: U.temperatureControlled,
79
- icon: /* @__PURE__ */ b(i, { size: 20 }),
87
+ value: G.temperatureControlled,
88
+ icon: /* @__PURE__ */ S(i, { size: 20 }),
80
89
  accent: "blue"
81
90
  })
82
91
  ]
83
92
  })] }),
84
- /* @__PURE__ */ b(m, {
93
+ /* @__PURE__ */ S(_, {
85
94
  columns: [
86
95
  {
87
96
  id: "sku",
88
97
  header: "SKU",
89
98
  accessorKey: "sku",
90
99
  sortable: !0,
91
- cell: (e) => /* @__PURE__ */ b("span", {
100
+ cell: (e) => /* @__PURE__ */ S("span", {
92
101
  className: "font-mono",
93
102
  children: e.sku
94
103
  })
@@ -98,10 +107,10 @@ function w() {
98
107
  header: "Product Name",
99
108
  accessorKey: "name",
100
109
  sortable: !0,
101
- cell: (e) => /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("p", {
110
+ cell: (e) => /* @__PURE__ */ C("div", { children: [/* @__PURE__ */ S("p", {
102
111
  className: "font-medium",
103
112
  children: e.name
104
- }), /* @__PURE__ */ b("p", {
113
+ }), /* @__PURE__ */ S("p", {
105
114
  className: "text-sm text-text-secondary line-clamp-1",
106
115
  children: e.description ?? "Not provided"
107
116
  })] })
@@ -111,7 +120,7 @@ function w() {
111
120
  header: "Category",
112
121
  accessorKey: "category",
113
122
  sortable: !0,
114
- cell: (e) => /* @__PURE__ */ b(u, {
123
+ cell: (e) => /* @__PURE__ */ S(p, {
115
124
  variant: "outline",
116
125
  children: e.category ?? "Not provided"
117
126
  })
@@ -126,35 +135,35 @@ function w() {
126
135
  header: "Weight",
127
136
  accessorKey: "weight",
128
137
  sortable: !0,
129
- cell: (e) => e.weight === void 0 ? "Not provided" : `${e.weight} kg`
138
+ cell: (e) => e.weight === void 0 ? "Not provided" : u(e.weight)
130
139
  },
131
140
  {
132
141
  id: "value",
133
142
  header: "Value",
134
143
  accessorKey: "value",
135
144
  sortable: !0,
136
- cell: (e) => /* @__PURE__ */ b("span", {
145
+ cell: (e) => /* @__PURE__ */ S("span", {
137
146
  className: "font-medium",
138
- children: e.value === void 0 ? "Not provided" : h(e.value)
147
+ children: e.value === void 0 ? "Not provided" : l(e.value)
139
148
  })
140
149
  },
141
150
  {
142
151
  id: "flags",
143
152
  header: "Flags",
144
- cell: (e) => /* @__PURE__ */ x("div", {
153
+ cell: (e) => /* @__PURE__ */ C("div", {
145
154
  className: "flex gap-1",
146
155
  children: [
147
- e.fragile && /* @__PURE__ */ b(u, {
156
+ e.fragile && /* @__PURE__ */ S(p, {
148
157
  variant: "destructive",
149
158
  className: "text-xs",
150
159
  children: "Fragile"
151
160
  }),
152
- e.hazardous && /* @__PURE__ */ b(u, {
161
+ e.hazardous && /* @__PURE__ */ S(p, {
153
162
  variant: "destructive",
154
163
  className: "text-xs",
155
164
  children: "Hazardous"
156
165
  }),
157
- e.temperatureControlled && /* @__PURE__ */ b(u, {
166
+ e.temperatureControlled && /* @__PURE__ */ S(p, {
158
167
  variant: "secondary",
159
168
  className: "text-xs",
160
169
  children: "Temp Control"
@@ -163,10 +172,10 @@ function w() {
163
172
  })
164
173
  }
165
174
  ],
166
- data: L,
167
- isLoading: B,
168
- error: V,
169
- onRetry: H,
175
+ data: z,
176
+ isLoading: H,
177
+ error: U,
178
+ onRetry: W,
170
179
  searchable: !0,
171
180
  searchPlaceholder: "Search products...",
172
181
  searchFields: [
@@ -174,20 +183,20 @@ function w() {
174
183
  "sku",
175
184
  "category"
176
185
  ],
177
- searchQuery: P,
186
+ searchQuery: I,
178
187
  onSearchQueryChange: (e) => {
179
- F(e), j(0);
188
+ L(e), N(0);
180
189
  },
181
- onRowClick: (e) => W(`inventory/products/${e.id}`),
190
+ onRowClick: (e) => K(`inventory/products/${e.id}`),
182
191
  getRowId: (e) => e.id,
183
- pageIndex: A,
184
- pageSize: M,
185
- onPageChange: j,
192
+ pageIndex: M,
193
+ pageSize: P,
194
+ onPageChange: N,
186
195
  onPageSizeChange: (e) => {
187
- N(e), j(0);
196
+ F(e), N(0);
188
197
  },
189
- totalItems: R,
190
- hasNextPage: z,
198
+ totalItems: B,
199
+ hasNextPage: V,
191
200
  emptyIllustration: "empty-files",
192
201
  emptyTitle: "No products yet",
193
202
  emptyDescription: "Add products to your catalog so they can be added to orders and stocked in warehouses."
@@ -196,4 +205,4 @@ function w() {
196
205
  });
197
206
  }
198
207
  //#endregion
199
- export { w as default };
208
+ export { E as default };