@burdenoff/microfe-movethewheels 2026.626.2 → 2026.703.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.
Files changed (135) hide show
  1. package/dist/{AIAssistantPage-AvsMbunM.js → AIAssistantPage-C3cPsWt-.js} +100 -73
  2. package/dist/AnalyticsPage-Dz6g2MvK.js +215 -0
  3. package/dist/{CreateOrderPage-CjlnEtk3.js → CreateOrderPage-C5iwnjp4.js} +36 -67
  4. package/dist/CustomerDetailsPage-B6nwFyLO.js +406 -0
  5. package/dist/{CustomersPage-CGGfD4ki.js → CustomersPage-2Y05LVyh.js} +26 -28
  6. package/dist/{DashboardPage-D2HRqwg9.js → DashboardPage-BVjQi0EB.js} +85 -83
  7. package/dist/{DataTable-CD9ZhpLB.js → DataTable-DmciIKKM.js} +3 -3
  8. package/dist/DriverDetailsPage-CN3WQ0B9.js +507 -0
  9. package/dist/{DriversPage-DKiynISH.js → DriversPage-B0Zpx8OQ.js} +25 -27
  10. package/dist/{FinancePage-Vg8WPs38.js → FinancePage-DEDykSOP.js} +9 -9
  11. package/dist/FleetPage-DqkFi3s3.js +365 -0
  12. package/dist/FormError-BlOjnXOq.js +15 -0
  13. package/dist/ImportExportPage-DKJRCezl.js +290 -0
  14. package/dist/InventoryPage-DwfgCUQq.js +253 -0
  15. package/dist/{LiveTrackingPage-DQ1q4Id3.js → LiveTrackingPage-DCX-K-LR.js} +60 -56
  16. package/dist/MarketplacePage-CIQ97_zp.js +247 -0
  17. package/dist/{MetricCard-B7yMyvMX.js → MetricCard-BY0QrMD4.js} +1 -1
  18. package/dist/{OrderDetailsPage-CFASgsYX.js → OrderDetailsPage-DYiZ-9UK.js} +83 -85
  19. package/dist/{OrdersListPage-BHeT8S5o.js → OrdersListPage-BjDlCKJd.js} +31 -33
  20. package/dist/{PageLayout-D3N8MCTm.js → PageLayout-D4LDHJJq.js} +483 -422
  21. package/dist/ProductDetailsPage-C9uOiYLp.js +350 -0
  22. package/dist/{ProductsPage--xEpbQ8A.js → ProductsPage-C1G9h7Xd.js} +22 -24
  23. package/dist/ReportsPage-Zp53q3_8.js +284 -0
  24. package/dist/RouteDetailsPage-DUStXSf9.js +531 -0
  25. package/dist/RoutesPage-DMfoicM1.js +144 -0
  26. package/dist/SettingsPage-Bn-v0mbQ.js +421 -0
  27. package/dist/StatusBadge-BZurYHMy.js +152 -0
  28. package/dist/{TrackingPage-CcRc_dva.js → TrackingPage-W-jtdM3Y.js} +59 -61
  29. package/dist/VehicleDetailsPage-Bceo5oz3.js +410 -0
  30. package/dist/{VehiclesPage-UlxPWP9K.js → VehiclesPage-VBtOep91.js} +20 -22
  31. package/dist/WarehouseDetailsPage-L_6sWigM.js +493 -0
  32. package/dist/{WarehousesPage-CuTO-OPp.js → WarehousesPage-DCbXXXWE.js} +16 -18
  33. package/dist/{arrow-left-CBpZKkpq.js → arrow-left-n48Y-Wis.js} +1 -1
  34. package/dist/{box-CAaiElsb.js → box-D9Pal4HM.js} +1 -1
  35. package/dist/{chart-column-D1Ym15-S.js → chart-column-BFIJysDR.js} +1 -1
  36. package/dist/{chevron-right-BIFGi0UA.js → chevron-right-EMIIyyJ1.js} +1 -1
  37. package/dist/{circle-alert-DjmNo5_L.js → circle-alert-iY24lSlp.js} +1 -1
  38. package/dist/{circle-check-big-CjuPVo3_.js → circle-check-big-w0TrLKMF.js} +1 -1
  39. package/dist/{clock-BjkdnddD.js → clock-DJZtdl8u.js} +1 -1
  40. package/dist/{dollar-sign-IB4O0wuQ.js → dollar-sign-CgKQRz_e.js} +1 -1
  41. package/dist/{download-Dpa9vqoG.js → download-DRXxoiQR.js} +1 -1
  42. package/dist/{file-text-C8Uioy11.js → file-text-DWWY6_f5.js} +1 -1
  43. package/dist/{filter-Da5OZaHI.js → filter-DloLC2eE.js} +1 -1
  44. package/dist/index.js +186 -162
  45. package/dist/{map-_Per4sT9.js → map-CkJaULb2.js} +1 -1
  46. package/dist/{map-pin-BSaf5IDL.js → map-pin-BGiCvyCs.js} +1 -1
  47. package/dist/{navigation-DaTbrhw2.js → navigation-D36prnAn.js} +1 -1
  48. package/dist/{package-BE7U0wQE.js → package-BChUzpJS.js} +1 -1
  49. package/dist/{phone-DV4StZiA.js → phone-Ac9s3mo_.js} +1 -1
  50. package/dist/{plus-Dl1rLeJR.js → plus-Z76q-FZm.js} +1 -1
  51. package/dist/{refresh-cw-CWfERAit.js → refresh-cw-DKt6f5T6.js} +1 -1
  52. package/dist/{save-XH8vydOn.js → save-CojywNhG.js} +1 -1
  53. package/dist/{search-OxoIiL_C.js → search-CDGefqb3.js} +1 -1
  54. package/dist/{square-pen-hLIbFQFV.js → square-pen-CopE9GmB.js} +1 -1
  55. package/dist/{star-YsVV3MNQ.js → star-nHlLjDKR.js} +1 -1
  56. package/dist/{store-RCBl7HB-.js → store-BR9Voi5E.js} +1 -1
  57. package/dist/trash-2-BKhar6Hs.js +32 -0
  58. package/dist/{trending-up-C-85AwGT.js → trending-up-Dohgd4t_.js} +1 -1
  59. package/dist/{triangle-alert-BOhfGgmh.js → triangle-alert-i-XQL9Rd.js} +1 -1
  60. package/dist/{truck-CtDjNFbi.js → truck-C0v_hbLR.js} +1 -1
  61. package/dist/{useAnalytics-ph7eTIK6.js → useAnalytics-DS8n0xgg.js} +40 -40
  62. package/dist/useAssistant-D4v3oxD3.js +84 -0
  63. package/dist/{useCustomers-bS3a4ytk.js → useCustomers-BmTNGxiI.js} +24 -24
  64. package/dist/{useFleet-BdETplNE.js → useFleet-DKqXZ16m.js} +133 -109
  65. package/dist/useImportExport-DHr-SWSw.js +55 -0
  66. package/dist/{useInventory-Dwn18FPz.js → useInventory-DkyiVY_A.js} +95 -75
  67. package/dist/{useOrders-D_3_hGMp.js → useOrders-Cfk1GLiq.js} +42 -42
  68. package/dist/useReports-CTqZr-AB.js +78 -0
  69. package/dist/{useRoutes-v4aBaS-E.js → useRoutes-BQWO607N.js} +31 -31
  70. package/dist/useSettings-CkDH_-gM.js +81 -0
  71. package/dist/{useTracking-De2KIUNu.js → useTracking-B-va1kO3.js} +22 -22
  72. package/dist/{user-Dz5TJZFs.js → user-jyFU3lXk.js} +1 -1
  73. package/dist/{users-g2N0eL-Z.js → users-DZ-ilS6B.js} +1 -1
  74. package/dist/{warehouse-D3WWDeTX.js → warehouse-6m5kXMLu.js} +1 -1
  75. package/dist/{wrench-CmxY1n4I.js → wrench-CANXWxF-.js} +1 -1
  76. package/package.json +1 -1
  77. package/src/movethewheels/MoveTheWheelsRoutes.tsx +31 -3
  78. package/src/movethewheels/components/FormError.tsx +25 -0
  79. package/src/movethewheels/components/StatusBadge.tsx +18 -37
  80. package/src/movethewheels/constants/index.ts +67 -26
  81. package/src/movethewheels/hooks/index.ts +12 -0
  82. package/src/movethewheels/hooks/useAnalytics.ts +20 -6
  83. package/src/movethewheels/hooks/useAssistant.ts +74 -0
  84. package/src/movethewheels/hooks/useFleet.ts +170 -59
  85. package/src/movethewheels/hooks/useImportExport.ts +101 -0
  86. package/src/movethewheels/hooks/useInventory.ts +107 -0
  87. package/src/movethewheels/hooks/useReports.ts +158 -0
  88. package/src/movethewheels/hooks/useSettings.ts +120 -0
  89. package/src/movethewheels/pages/AIAssistantPage.tsx +53 -15
  90. package/src/movethewheels/pages/AnalyticsPage.tsx +67 -64
  91. package/src/movethewheels/pages/CustomerDetailsPage.tsx +154 -21
  92. package/src/movethewheels/pages/CustomersPage.tsx +1 -1
  93. package/src/movethewheels/pages/DashboardPage.tsx +42 -22
  94. package/src/movethewheels/pages/DriverDetailsPage.tsx +160 -3
  95. package/src/movethewheels/pages/DriversPage.tsx +6 -2
  96. package/src/movethewheels/pages/FleetPage.tsx +96 -38
  97. package/src/movethewheels/pages/ImportExportPage.tsx +174 -68
  98. package/src/movethewheels/pages/InventoryPage.tsx +66 -28
  99. package/src/movethewheels/pages/LiveTrackingPage.tsx +12 -3
  100. package/src/movethewheels/pages/MarketplacePage.tsx +87 -45
  101. package/src/movethewheels/pages/OrderDetailsPage.tsx +2 -2
  102. package/src/movethewheels/pages/ProductDetailsPage.tsx +146 -3
  103. package/src/movethewheels/pages/ProductsPage.tsx +5 -1
  104. package/src/movethewheels/pages/ReportsPage.tsx +194 -90
  105. package/src/movethewheels/pages/RouteDetailsPage.tsx +290 -36
  106. package/src/movethewheels/pages/RoutesPage.tsx +4 -9
  107. package/src/movethewheels/pages/SettingsPage.tsx +234 -56
  108. package/src/movethewheels/pages/TrackingPage.tsx +6 -6
  109. package/src/movethewheels/pages/VehicleDetailsPage.tsx +158 -2
  110. package/src/movethewheels/pages/VehiclesPage.tsx +5 -1
  111. package/src/movethewheels/pages/WarehouseDetailsPage.tsx +224 -2
  112. package/src/movethewheels/pages/WarehousesPage.tsx +5 -1
  113. package/src/movethewheels/providers/MoveTheWheelsProvider.tsx +7 -6
  114. package/src/movethewheels/store/movethewheelsStore.ts +1 -1
  115. package/dist/AnalyticsPage-CCLfHgQZ.js +0 -212
  116. package/dist/CustomerDetailsPage-I6cdDHUi.js +0 -265
  117. package/dist/DriverDetailsPage-rg_pGNuP.js +0 -330
  118. package/dist/FleetPage-DddXt8r8.js +0 -332
  119. package/dist/ImportExportPage-BW6qO3kc.js +0 -248
  120. package/dist/InventoryPage-rMGuaJN-.js +0 -222
  121. package/dist/MarketplacePage-DKrXAv62.js +0 -219
  122. package/dist/ProductDetailsPage-CFGcbaHo.js +0 -195
  123. package/dist/ReportsPage-Bb7_90rK.js +0 -235
  124. package/dist/RouteDetailsPage-CVtDVb1N.js +0 -282
  125. package/dist/RoutesPage-s57PtgcQ.js +0 -163
  126. package/dist/SettingsPage-BYNCBOpN.js +0 -298
  127. package/dist/StatusBadge-CijYQXtb.js +0 -209
  128. package/dist/VehicleDetailsPage-3YDMPsPs.js +0 -220
  129. package/dist/WarehouseDetailsPage-Db7KeN-d.js +0 -238
  130. package/dist/graphqlClient-CdJyR_ed.js +0 -55
  131. package/dist/navigation-BgnOfsVd.js +0 -6
  132. package/dist/route-Dp9JiN_E.js +0 -51
  133. package/dist/settings-3Rw5NwFF.js +0 -28
  134. package/src/movethewheels/constants/mockData.ts +0 -1342
  135. /package/dist/{formatters-_vJlC-47.js → formatters-CF2S2l1m.js} +0 -0
@@ -1,222 +0,0 @@
1
- import { M as e, a as t, d as n, f as r, i, l as a, u as o } from "./PageLayout-D3N8MCTm.js";
2
- import { t as s } from "./chevron-right-BIFGi0UA.js";
3
- import { t as c } from "./package-BE7U0wQE.js";
4
- import { t as l } from "./plus-Dl1rLeJR.js";
5
- import { t as u } from "./triangle-alert-BOhfGgmh.js";
6
- import { t as d } from "./warehouse-D3WWDeTX.js";
7
- import { r as f } from "./graphqlClient-CdJyR_ed.js";
8
- import { n as p, t as m } from "./useInventory-Dwn18FPz.js";
9
- import { r as h, t as g } from "./MetricCard-B7yMyvMX.js";
10
- import { n as _ } from "./formatters-_vJlC-47.js";
11
- import { t as v } from "./navigation-BgnOfsVd.js";
12
- import { jsx as y, jsxs as b } from "react/jsx-runtime";
13
- import { CTAOverflowMenu as x, EmphasisPanel as S, PagePurpose as C } from "@burdenoff/fe-libs/ui";
14
- import { useI18n as w } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
15
- //#region src/movethewheels/pages/InventoryPage.tsx
16
- function T() {
17
- let { t: T } = w(), E = (e, t) => {
18
- let n = T(e);
19
- return n === e ? t : n;
20
- }, { basePath: D, navigate: O } = f(), { inventory: k, products: A, warehouses: j } = m(), { stats: M } = p(), N = (e) => O?.(v(D, e)), P = k.filter((e) => e.availableQuantity <= e.reorderLevel);
21
- return /* @__PURE__ */ b(i, {
22
- title: E("movethewheels.inventory.title", "Inventory"),
23
- subtitle: E("movethewheels.inventory.subtitle", "Manage your products and warehouses"),
24
- icon: /* @__PURE__ */ y(c, { size: 24 }),
25
- headerActions: /* @__PURE__ */ y(x, {
26
- primary: {
27
- label: E("movethewheels.inventory.actions.addProduct", "Add Product"),
28
- icon: /* @__PURE__ */ y(l, { size: 16 }),
29
- onSelect: () => {}
30
- },
31
- actions: [{
32
- label: E("movethewheels.inventory.actions.products", "Products"),
33
- onSelect: () => N("inventory/products")
34
- }, {
35
- label: E("movethewheels.inventory.actions.warehouses", "Warehouses"),
36
- onSelect: () => N("inventory/warehouses")
37
- }]
38
- }),
39
- children: [
40
- /* @__PURE__ */ y(C, {
41
- icon: /* @__PURE__ */ y(c, { size: 18 }),
42
- children: E("movethewheels.inventory.purpose", "A real-time view of what you have and where. Track stock value and quantities across warehouses, catch low-stock items before they run out, and drill into products or warehouses to manage what you can promise on an order.")
43
- }),
44
- /* @__PURE__ */ b(h, {
45
- columns: 4,
46
- children: [
47
- /* @__PURE__ */ y(g, {
48
- label: E("movethewheels.inventory.metrics.totalProducts", "Total Products"),
49
- value: M.totalProducts,
50
- icon: /* @__PURE__ */ y(c, { size: 20 }),
51
- onClick: () => N("inventory/products")
52
- }),
53
- /* @__PURE__ */ y(g, {
54
- label: E("movethewheels.inventory.metrics.totalItems", "Total Items"),
55
- value: M.totalItems.toLocaleString(),
56
- icon: /* @__PURE__ */ y(c, { size: 20 })
57
- }),
58
- /* @__PURE__ */ y(g, {
59
- label: E("movethewheels.inventory.metrics.inventoryValue", "Inventory Value"),
60
- value: _(M.totalValue),
61
- icon: /* @__PURE__ */ y(c, { size: 20 })
62
- }),
63
- /* @__PURE__ */ y(g, {
64
- label: E("movethewheels.inventory.metrics.warehouses", "Warehouses"),
65
- value: M.totalWarehouses,
66
- icon: /* @__PURE__ */ y(d, { size: 20 }),
67
- onClick: () => N("inventory/warehouses")
68
- })
69
- ]
70
- }),
71
- P.length > 0 && /* @__PURE__ */ b(S, {
72
- className: "space-y-4",
73
- children: [/* @__PURE__ */ b("h2", {
74
- className: "flex items-center gap-2 text-base font-semibold text-status-warning-text",
75
- children: [
76
- /* @__PURE__ */ y(u, { size: 18 }),
77
- E("movethewheels.inventory.lowStock.title", "Low Stock Alert"),
78
- " (",
79
- P.length,
80
- " ",
81
- E("movethewheels.inventory.lowStock.items", "items"),
82
- ")"
83
- ]
84
- }), /* @__PURE__ */ y("div", { children: /* @__PURE__ */ y("div", {
85
- className: "space-y-3",
86
- children: P.slice(0, 5).map((e) => {
87
- let t = A.find((t) => t.id === e.productId);
88
- return /* @__PURE__ */ b("div", {
89
- className: "flex items-center justify-between p-3 bg-status-warning-bg/10 rounded-lg",
90
- children: [/* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("p", {
91
- className: "font-medium",
92
- children: t?.name || E("movethewheels.inventory.lowStock.unknownProduct", "Unknown Product")
93
- }), /* @__PURE__ */ b("p", {
94
- className: "text-sm text-text-secondary",
95
- children: [
96
- E("movethewheels.inventory.lowStock.sku", "SKU:"),
97
- " ",
98
- t?.sku
99
- ]
100
- })] }), /* @__PURE__ */ b("div", {
101
- className: "text-right",
102
- children: [/* @__PURE__ */ b("p", {
103
- className: "font-medium text-status-warning-text",
104
- children: [
105
- e.availableQuantity,
106
- " ",
107
- E("movethewheels.inventory.lowStock.left", "left")
108
- ]
109
- }), /* @__PURE__ */ b("p", {
110
- className: "text-sm text-text-secondary",
111
- children: [
112
- E("movethewheels.inventory.lowStock.reorderAt", "Reorder at:"),
113
- " ",
114
- e.reorderLevel
115
- ]
116
- })]
117
- })]
118
- }, e.id);
119
- })
120
- }) })]
121
- }),
122
- /* @__PURE__ */ b("div", {
123
- className: "grid grid-cols-1 lg:grid-cols-2 gap-6",
124
- children: [/* @__PURE__ */ y(t, {
125
- title: E("movethewheels.inventory.warehouses.title", "Warehouses"),
126
- actions: /* @__PURE__ */ b(o, {
127
- variant: "ghost",
128
- size: "sm",
129
- onClick: () => N("inventory/warehouses"),
130
- children: [
131
- E("movethewheels.inventory.common.viewAll", "View all"),
132
- " ",
133
- /* @__PURE__ */ y(s, { size: 16 })
134
- ]
135
- }),
136
- children: /* @__PURE__ */ y(n, { children: /* @__PURE__ */ y(r, {
137
- className: "p-0",
138
- children: /* @__PURE__ */ y("div", {
139
- className: "divide-y",
140
- children: j.map((t) => /* @__PURE__ */ y("div", {
141
- className: "p-4 hover:bg-bg-sunken/50 cursor-pointer",
142
- onClick: () => N(`inventory/warehouses/${t.id}`),
143
- children: /* @__PURE__ */ b("div", {
144
- className: "flex items-center justify-between",
145
- children: [/* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("p", {
146
- className: "font-medium",
147
- children: t.name
148
- }), /* @__PURE__ */ b("p", {
149
- className: "text-sm text-text-secondary",
150
- children: [
151
- t.address.city,
152
- ", ",
153
- t.address.state
154
- ]
155
- })] }), /* @__PURE__ */ b("div", {
156
- className: "text-right",
157
- children: [/* @__PURE__ */ y(a, {
158
- variant: t.isActive ? "default" : "secondary",
159
- children: t.isActive ? E("movethewheels.inventory.warehouses.active", "Active") : E("movethewheels.inventory.warehouses.inactive", "Inactive")
160
- }), /* @__PURE__ */ b("div", {
161
- className: "mt-2",
162
- children: [/* @__PURE__ */ y("p", {
163
- className: "text-xs text-text-secondary",
164
- children: E("movethewheels.inventory.warehouses.utilization", "Utilization")
165
- }), /* @__PURE__ */ y(e, {
166
- value: t.capacity.usedSpace / t.capacity.totalSpace * 100,
167
- className: "w-24 h-2"
168
- })]
169
- })]
170
- })]
171
- })
172
- }, t.id))
173
- })
174
- }) })
175
- }), /* @__PURE__ */ y(t, {
176
- title: E("movethewheels.inventory.products.title", "Recent Products"),
177
- actions: /* @__PURE__ */ b(o, {
178
- variant: "ghost",
179
- size: "sm",
180
- onClick: () => N("inventory/products"),
181
- children: [
182
- E("movethewheels.inventory.common.viewAll", "View all"),
183
- " ",
184
- /* @__PURE__ */ y(s, { size: 16 })
185
- ]
186
- }),
187
- children: /* @__PURE__ */ y(n, { children: /* @__PURE__ */ y(r, {
188
- className: "p-0",
189
- children: /* @__PURE__ */ y("div", {
190
- className: "divide-y",
191
- children: A.slice(0, 5).map((e) => /* @__PURE__ */ y("div", {
192
- className: "p-4 hover:bg-bg-sunken/50 cursor-pointer",
193
- onClick: () => N(`inventory/products/${e.id}`),
194
- children: /* @__PURE__ */ b("div", {
195
- className: "flex items-center justify-between",
196
- children: [/* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("p", {
197
- className: "font-medium",
198
- children: e.name
199
- }), /* @__PURE__ */ y("p", {
200
- className: "text-sm text-text-secondary",
201
- children: e.sku
202
- })] }), /* @__PURE__ */ b("div", {
203
- className: "text-right",
204
- children: [/* @__PURE__ */ y("p", {
205
- className: "font-medium",
206
- children: _(e.value)
207
- }), /* @__PURE__ */ y(a, {
208
- variant: "outline",
209
- children: e.category
210
- })]
211
- })]
212
- })
213
- }, e.id))
214
- })
215
- }) })
216
- })]
217
- })
218
- ]
219
- });
220
- }
221
- //#endregion
222
- export { T as default };
@@ -1,219 +0,0 @@
1
- import { A as e, d as t, f as n, g as r, h as i, i as a, l as o, u as s } from "./PageLayout-D3N8MCTm.js";
2
- import { t as c } from "./clock-BjkdnddD.js";
3
- import { t as l } from "./filter-Da5OZaHI.js";
4
- import { t as u } from "./map-pin-BSaf5IDL.js";
5
- import { t as d } from "./search-OxoIiL_C.js";
6
- import { t as f } from "./star-YsVV3MNQ.js";
7
- import { t as p } from "./store-RCBl7HB-.js";
8
- import { r as m, t as h } from "./graphqlClient-CdJyR_ed.js";
9
- import { n as g } from "./formatters-_vJlC-47.js";
10
- import { useCallback as _, useEffect as v, useMemo as y, useState as b } from "react";
11
- import { jsx as x, jsxs as S } from "react/jsx-runtime";
12
- import { EmphasisPanel as C, IllustratedEmptyState as w, PagePurpose as T } from "@burdenoff/fe-libs/ui";
13
- //#region src/movethewheels/pages/MarketplacePage.tsx
14
- var E = "\n query ListServiceProviders($filter: ServiceProviderFilterInput, $pagination: PaginationInput) {\n serviceProviders(filter: $filter, pagination: $pagination) {\n id\n name\n type\n description\n rating\n isVerified\n isActive\n services\n contactInfo\n }\n }\n", D = "\n query ListServiceOfferings($filter: ServiceOfferingFilterInput, $pagination: PaginationInput) {\n serviceOfferings(filter: $filter, pagination: $pagination) {\n id\n providerId\n name\n description\n category\n price\n currency\n availability\n provider {\n id\n name\n type\n rating\n }\n }\n }\n";
15
- function O() {
16
- let { apiGatewayUrl: O, authToken: k, workspaceToken: A, workspaceId: j, tenantId: M, currentUser: N } = m(), [P, F] = b([]), [I, L] = b([]), [R, z] = b(""), B = y(() => ({
17
- apiGatewayUrl: O,
18
- authToken: k,
19
- workspaceToken: A,
20
- workspaceId: j,
21
- tenantId: M,
22
- actorId: N?.id
23
- }), [
24
- O,
25
- k,
26
- A,
27
- j,
28
- M,
29
- N?.id
30
- ]), V = _(async () => {
31
- let [e, t] = await Promise.all([h(B, E, { pagination: {
32
- limit: 200,
33
- offset: 0
34
- } }), h(B, D, { pagination: {
35
- limit: 200,
36
- offset: 0
37
- } })]);
38
- F(e.serviceProviders), L(t.serviceOfferings);
39
- }, [B]);
40
- v(() => {
41
- V();
42
- }, [V]);
43
- let H = y(() => {
44
- let e = R.trim().toLowerCase();
45
- return e ? P.filter((t) => t.name.toLowerCase().includes(e) || (t.description ?? "").toLowerCase().includes(e) || t.type.toLowerCase().includes(e)) : P;
46
- }, [P, R]), U = y(() => {
47
- let e = R.trim().toLowerCase();
48
- return e ? I.filter((t) => t.name.toLowerCase().includes(e) || (t.description ?? "").toLowerCase().includes(e) || (t.category ?? "").toLowerCase().includes(e)) : I;
49
- }, [I, R]);
50
- return /* @__PURE__ */ S(a, {
51
- title: "Marketplace",
52
- subtitle: "Find logistics service providers",
53
- icon: /* @__PURE__ */ x(p, { size: 24 }),
54
- headerActions: /* @__PURE__ */ S(s, {
55
- variant: "outline",
56
- children: [/* @__PURE__ */ x(l, { size: 16 }), " Filters"]
57
- }),
58
- children: [
59
- /* @__PURE__ */ x(T, {
60
- icon: /* @__PURE__ */ x(p, { size: 18 }),
61
- children: "Don't own every leg of the journey? Find vetted third-party logistics providers and service offerings here — compare ratings, verification status and pricing, then engage a partner to cover routes, warehousing or specialised handling you can't do in-house."
62
- }),
63
- /* @__PURE__ */ x(t, { children: /* @__PURE__ */ x(n, {
64
- className: "p-4",
65
- children: /* @__PURE__ */ S("div", {
66
- className: "relative",
67
- children: [/* @__PURE__ */ x(d, {
68
- className: "absolute left-3 top-1/2 -translate-y-1/2 text-text-secondary",
69
- size: 20
70
- }), /* @__PURE__ */ x(e, {
71
- placeholder: "Search services, providers, locations...",
72
- className: "pl-10",
73
- value: R,
74
- onChange: (e) => z(e.target.value)
75
- })]
76
- })
77
- }) }),
78
- /* @__PURE__ */ S("div", {
79
- className: "grid grid-cols-1 lg:grid-cols-3 gap-6",
80
- children: [/* @__PURE__ */ S("div", {
81
- className: "lg:col-span-2 space-y-4",
82
- children: [
83
- /* @__PURE__ */ S("h3", {
84
- className: "font-semibold",
85
- children: [
86
- "Service Providers (",
87
- H.length,
88
- ")"
89
- ]
90
- }),
91
- H.length === 0 && /* @__PURE__ */ x(t, { children: /* @__PURE__ */ x(n, {
92
- className: "p-0",
93
- children: /* @__PURE__ */ x(w, {
94
- illustration: R.trim() ? "empty-search" : "empty-people",
95
- title: R.trim() ? "No providers match your search" : "No providers yet",
96
- description: R.trim() ? "Try a different search term to find logistics partners." : "Verified logistics service providers will appear here as they join the marketplace."
97
- })
98
- }) }),
99
- H.map((e) => /* @__PURE__ */ x(t, {
100
- className: "hover:shadow-md transition-shadow cursor-pointer",
101
- children: /* @__PURE__ */ x(n, {
102
- className: "p-6",
103
- children: /* @__PURE__ */ S("div", {
104
- className: "flex items-start justify-between",
105
- children: [/* @__PURE__ */ S("div", { children: [
106
- /* @__PURE__ */ S("div", {
107
- className: "flex items-center gap-2",
108
- children: [
109
- /* @__PURE__ */ x("h4", {
110
- className: "font-semibold text-lg",
111
- children: e.name
112
- }),
113
- e.isVerified && /* @__PURE__ */ x(o, {
114
- variant: "default",
115
- children: "Verified"
116
- }),
117
- /* @__PURE__ */ x(o, {
118
- variant: e.isActive ? "default" : "secondary",
119
- children: e.isActive ? "active" : "inactive"
120
- })
121
- ]
122
- }),
123
- /* @__PURE__ */ x("p", {
124
- className: "text-text-secondary mt-1",
125
- children: e.description
126
- }),
127
- /* @__PURE__ */ S("div", {
128
- className: "flex items-center gap-4 mt-3 text-sm text-text-secondary",
129
- children: [
130
- /* @__PURE__ */ S("span", {
131
- className: "flex items-center gap-1",
132
- children: [
133
- /* @__PURE__ */ x(f, {
134
- size: 14,
135
- className: "text-yellow-500 fill-yellow-500"
136
- }),
137
- " ",
138
- e.rating ?? 0
139
- ]
140
- }),
141
- /* @__PURE__ */ S("span", {
142
- className: "flex items-center gap-1",
143
- children: [
144
- /* @__PURE__ */ x(u, { size: 14 }),
145
- " ",
146
- e.type
147
- ]
148
- }),
149
- /* @__PURE__ */ S("span", {
150
- className: "flex items-center gap-1",
151
- children: [/* @__PURE__ */ x(c, { size: 14 }), " Listed"]
152
- })
153
- ]
154
- })
155
- ] }), /* @__PURE__ */ S("div", {
156
- className: "text-right",
157
- children: [/* @__PURE__ */ x("p", {
158
- className: "text-sm text-text-secondary",
159
- children: "Services"
160
- }), /* @__PURE__ */ x("p", {
161
- className: "text-lg font-bold",
162
- children: Array.isArray(e.services) ? e.services.length : 0
163
- })]
164
- })]
165
- })
166
- })
167
- }, e.id))
168
- ]
169
- }), /* @__PURE__ */ S(C, {
170
- className: "space-y-4",
171
- children: [
172
- /* @__PURE__ */ x("h3", {
173
- className: "text-base font-semibold text-text-primary",
174
- children: "Popular Services"
175
- }),
176
- U.length === 0 && /* @__PURE__ */ x(w, {
177
- illustration: R.trim() ? "empty-search" : "empty-generic",
178
- title: R.trim() ? "No matching services" : "No services listed yet",
179
- description: R.trim() ? "Adjust your search to discover service offerings." : "Service offerings from providers will be listed here."
180
- }),
181
- U.map((e) => /* @__PURE__ */ S(t, { children: [/* @__PURE__ */ x(i, { children: /* @__PURE__ */ x(r, {
182
- className: "text-base",
183
- children: e.name
184
- }) }), /* @__PURE__ */ S(n, { children: [
185
- /* @__PURE__ */ x("p", {
186
- className: "text-sm text-text-secondary mb-3",
187
- children: e.description
188
- }),
189
- /* @__PURE__ */ S("div", {
190
- className: "flex flex-wrap gap-1 mb-3",
191
- children: [/* @__PURE__ */ x(o, {
192
- variant: "outline",
193
- className: "text-xs",
194
- children: e.category ?? "general"
195
- }), /* @__PURE__ */ x(o, {
196
- variant: "outline",
197
- className: "text-xs",
198
- children: e.provider?.name ?? "provider"
199
- })]
200
- }),
201
- /* @__PURE__ */ S("div", {
202
- className: "flex items-center justify-between",
203
- children: [/* @__PURE__ */ x("span", {
204
- className: "font-bold",
205
- children: g(e.price)
206
- }), /* @__PURE__ */ x("span", {
207
- className: "text-sm text-text-secondary",
208
- children: e.currency
209
- })]
210
- })
211
- ] })] }, e.id))
212
- ]
213
- })]
214
- })
215
- ]
216
- });
217
- }
218
- //#endregion
219
- export { O as default };
@@ -1,195 +0,0 @@
1
- import { d as e, f as t, g as n, h as r, i, it as a, l as o, n as s, r as c, u as l } from "./PageLayout-D3N8MCTm.js";
2
- import { t as u } from "./arrow-left-CBpZKkpq.js";
3
- import { t as d } from "./box-CAaiElsb.js";
4
- import { t as f } from "./dollar-sign-IB4O0wuQ.js";
5
- import { t as p } from "./package-BE7U0wQE.js";
6
- import { t as m } from "./square-pen-hLIbFQFV.js";
7
- import { r as h } from "./graphqlClient-CdJyR_ed.js";
8
- import { r as g } from "./useInventory-Dwn18FPz.js";
9
- import { n as _ } from "./formatters-_vJlC-47.js";
10
- import { t as v } from "./navigation-BgnOfsVd.js";
11
- import { useParams as y } from "react-router-dom";
12
- import { jsx as b, jsxs as x } from "react/jsx-runtime";
13
- import { EmphasisPanel as S, NextSteps as C, PagePurpose as w } from "@burdenoff/fe-libs/ui";
14
- //#region node_modules/lucide-react/dist/esm/icons/tag.js
15
- var T = a("Tag", [["path", {
16
- d: "M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",
17
- key: "vktsd0"
18
- }], ["circle", {
19
- cx: "7.5",
20
- cy: "7.5",
21
- r: ".5",
22
- fill: "currentColor",
23
- key: "kqv944"
24
- }]]);
25
- //#endregion
26
- //#region src/movethewheels/pages/ProductDetailsPage.tsx
27
- function E() {
28
- let { productId: a } = y(), { basePath: E, navigate: D } = h(), { product: O, isLoading: k, error: A, refetch: j } = g(a), M = () => D?.(v(E, "inventory/products")), N = (e) => D?.(v(E, e));
29
- return k ? /* @__PURE__ */ b(c, { message: "Loading product details..." }) : A || !O ? /* @__PURE__ */ b(s, {
30
- title: "Product not found",
31
- onRetry: j
32
- }) : /* @__PURE__ */ x(i, {
33
- title: O.name,
34
- subtitle: `SKU: ${O.sku}`,
35
- icon: /* @__PURE__ */ b(p, { size: 24 }),
36
- headerActions: /* @__PURE__ */ x("div", {
37
- className: "flex gap-2",
38
- children: [/* @__PURE__ */ x(l, {
39
- variant: "outline",
40
- onClick: M,
41
- children: [/* @__PURE__ */ b(u, { size: 16 }), " Back"]
42
- }), /* @__PURE__ */ x(l, { children: [/* @__PURE__ */ b(m, { size: 16 }), " Edit"] })]
43
- }),
44
- headerContent: /* @__PURE__ */ x("div", {
45
- className: "flex gap-2",
46
- children: [
47
- /* @__PURE__ */ b(o, {
48
- variant: "outline",
49
- children: O.category
50
- }),
51
- O.brand && /* @__PURE__ */ b(o, {
52
- variant: "secondary",
53
- children: O.brand
54
- }),
55
- O.fragile && /* @__PURE__ */ b(o, {
56
- variant: "destructive",
57
- children: "Fragile"
58
- }),
59
- O.hazardous && /* @__PURE__ */ b(o, {
60
- variant: "destructive",
61
- children: "Hazardous"
62
- }),
63
- O.temperatureControlled && /* @__PURE__ */ b(o, {
64
- variant: "secondary",
65
- children: "Temp Controlled"
66
- })
67
- ]
68
- }),
69
- children: [
70
- /* @__PURE__ */ b(w, {
71
- icon: /* @__PURE__ */ b(p, { size: 18 }),
72
- children: "The catalog record for this item — its dimensions, weight, value and handling flags. These drive how it's packed, priced and routed, so keep them accurate before adding the product to an order or stocking it in a warehouse."
73
- }),
74
- /* @__PURE__ */ b(C, {
75
- storageKey: "movethewheels-product-details",
76
- steps: [{
77
- id: "order",
78
- label: "Add this product to an order",
79
- description: "Include it on a new delivery.",
80
- icon: /* @__PURE__ */ b(p, { size: 16 }),
81
- onClick: () => N("orders/new")
82
- }, {
83
- id: "edit",
84
- label: "Edit product details",
85
- description: "Update dimensions, value or handling flags.",
86
- icon: /* @__PURE__ */ b(T, { size: 16 }),
87
- onClick: () => {}
88
- }]
89
- }),
90
- /* @__PURE__ */ x("div", {
91
- className: "grid grid-cols-1 lg:grid-cols-3 gap-6",
92
- children: [/* @__PURE__ */ x("div", {
93
- className: "lg:col-span-2 space-y-6",
94
- children: [
95
- /* @__PURE__ */ x(e, { children: [/* @__PURE__ */ b(r, { children: /* @__PURE__ */ b(n, { children: "Description" }) }), /* @__PURE__ */ b(t, { children: /* @__PURE__ */ b("p", { children: O.description }) })] }),
96
- /* @__PURE__ */ x(e, { children: [/* @__PURE__ */ b(r, { children: /* @__PURE__ */ x(n, {
97
- className: "flex items-center gap-2",
98
- children: [/* @__PURE__ */ b(d, { size: 18 }), " Dimensions & Weight"]
99
- }) }), /* @__PURE__ */ b(t, { children: /* @__PURE__ */ x("div", {
100
- className: "grid grid-cols-2 md:grid-cols-4 gap-4",
101
- children: [
102
- /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("p", {
103
- className: "text-sm text-text-secondary",
104
- children: "Length"
105
- }), /* @__PURE__ */ x("p", {
106
- className: "text-2xl font-bold",
107
- children: [O.dimensions.length, /* @__PURE__ */ x("span", {
108
- className: "text-sm font-normal",
109
- children: [" ", O.dimensions.unit]
110
- })]
111
- })] }),
112
- /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("p", {
113
- className: "text-sm text-text-secondary",
114
- children: "Width"
115
- }), /* @__PURE__ */ x("p", {
116
- className: "text-2xl font-bold",
117
- children: [O.dimensions.width, /* @__PURE__ */ x("span", {
118
- className: "text-sm font-normal",
119
- children: [" ", O.dimensions.unit]
120
- })]
121
- })] }),
122
- /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("p", {
123
- className: "text-sm text-text-secondary",
124
- children: "Height"
125
- }), /* @__PURE__ */ x("p", {
126
- className: "text-2xl font-bold",
127
- children: [O.dimensions.height, /* @__PURE__ */ x("span", {
128
- className: "text-sm font-normal",
129
- children: [" ", O.dimensions.unit]
130
- })]
131
- })] }),
132
- /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("p", {
133
- className: "text-sm text-text-secondary",
134
- children: "Weight"
135
- }), /* @__PURE__ */ x("p", {
136
- className: "text-2xl font-bold",
137
- children: [O.weight, /* @__PURE__ */ b("span", {
138
- className: "text-sm font-normal",
139
- children: " kg"
140
- })]
141
- })] })
142
- ]
143
- }) })] }),
144
- O.attributes.length > 0 && /* @__PURE__ */ x(e, { children: [/* @__PURE__ */ b(r, { children: /* @__PURE__ */ x(n, {
145
- className: "flex items-center gap-2",
146
- children: [/* @__PURE__ */ b(T, { size: 18 }), " Attributes"]
147
- }) }), /* @__PURE__ */ b(t, { children: /* @__PURE__ */ b("div", {
148
- className: "grid grid-cols-2 md:grid-cols-3 gap-4",
149
- children: O.attributes.map((e, t) => /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("p", {
150
- className: "text-sm text-text-secondary",
151
- children: e.name
152
- }), /* @__PURE__ */ b("p", {
153
- className: "font-medium",
154
- children: e.value
155
- })] }, t))
156
- }) })] })
157
- ]
158
- }), /* @__PURE__ */ x("div", {
159
- className: "space-y-6",
160
- children: [/* @__PURE__ */ x(S, { children: [
161
- /* @__PURE__ */ x("h2", {
162
- className: "flex items-center gap-2 text-base font-semibold text-text-primary mb-3",
163
- children: [/* @__PURE__ */ b(f, { size: 18 }), " Pricing"]
164
- }),
165
- /* @__PURE__ */ b("p", {
166
- className: "text-3xl font-bold",
167
- children: _(O.value)
168
- }),
169
- /* @__PURE__ */ b("p", {
170
- className: "text-sm text-text-secondary",
171
- children: "Unit price"
172
- })
173
- ] }), /* @__PURE__ */ x(e, { children: [/* @__PURE__ */ b(r, { children: /* @__PURE__ */ b(n, { children: "Identifiers" }) }), /* @__PURE__ */ x(t, {
174
- className: "space-y-3",
175
- children: [/* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("p", {
176
- className: "text-sm text-text-secondary",
177
- children: "SKU"
178
- }), /* @__PURE__ */ b("p", {
179
- className: "font-mono",
180
- children: O.sku
181
- })] }), O.barcode && /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("p", {
182
- className: "text-sm text-text-secondary",
183
- children: "Barcode"
184
- }), /* @__PURE__ */ b("p", {
185
- className: "font-mono",
186
- children: O.barcode
187
- })] })]
188
- })] })]
189
- })]
190
- })
191
- ]
192
- });
193
- }
194
- //#endregion
195
- export { E as default };