@burdenoff/microfe-movethewheels 2026.703.1 → 2026.703.3

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 (72) hide show
  1. package/dist/{AIAssistantPage-C3ovZ0Fh.js → AIAssistantPage-C3cPsWt-.js} +1 -1
  2. package/dist/{AnalyticsPage-O8SpY-V4.js → AnalyticsPage-Dz6g2MvK.js} +6 -6
  3. package/dist/{CreateOrderPage-CB1_-_mN.js → CreateOrderPage-C5iwnjp4.js} +29 -58
  4. package/dist/CustomerDetailsPage-B6nwFyLO.js +406 -0
  5. package/dist/{CustomersPage-DRaLuHMC.js → CustomersPage-BKxMS1AV.js} +5 -5
  6. package/dist/{DashboardPage-DPjhNfKB.js → DashboardPage-BVjQi0EB.js} +11 -11
  7. package/dist/DriverDetailsPage-CN3WQ0B9.js +507 -0
  8. package/dist/{DriversPage-C2Bk0w4Q.js → DriversPage-CH9rjQC-.js} +6 -6
  9. package/dist/{FinancePage-lmp0Sdsw.js → FinancePage-DEDykSOP.js} +5 -5
  10. package/dist/{FleetPage-DZn5pIqd.js → FleetPage-DqkFi3s3.js} +5 -5
  11. package/dist/FormError-BlOjnXOq.js +15 -0
  12. package/dist/{ImportExportPage-BIUJZc7O.js → ImportExportPage-DKJRCezl.js} +1 -1
  13. package/dist/{InventoryPage-Cxh1zYJd.js → InventoryPage-e0ze63iX.js} +6 -6
  14. package/dist/{LiveTrackingPage-BY1yAkIt.js → LiveTrackingPage-DCX-K-LR.js} +5 -5
  15. package/dist/{MarketplacePage-RMuL17EA.js → MarketplacePage-CIQ97_zp.js} +1 -1
  16. package/dist/{OrderDetailsPage-C2Mf4KSy.js → OrderDetailsPage-DYiZ-9UK.js} +5 -5
  17. package/dist/{OrdersListPage-BrPBtnhp.js → OrdersListPage-Cn90P1Xx.js} +4 -4
  18. package/dist/ProductDetailsPage-C9uOiYLp.js +350 -0
  19. package/dist/{ProductsPage-I5DilIoY.js → ProductsPage-QJfHHpqB.js} +4 -4
  20. package/dist/{ReportsPage-BDXNmUng.js → ReportsPage-Zp53q3_8.js} +2 -2
  21. package/dist/RouteDetailsPage-DUStXSf9.js +531 -0
  22. package/dist/{RoutesPage-lqX9ylHP.js → RoutesPage-DMfoicM1.js} +3 -3
  23. package/dist/{SettingsPage-CQVIOaNs.js → SettingsPage-Bn-v0mbQ.js} +1 -1
  24. package/dist/{TrackingPage-BXrjz7V8.js → TrackingPage-W-jtdM3Y.js} +4 -4
  25. package/dist/VehicleDetailsPage-Bceo5oz3.js +410 -0
  26. package/dist/{VehiclesPage-6W39XT5W.js → VehiclesPage-ApKThYeG.js} +5 -5
  27. package/dist/WarehouseDetailsPage-L_6sWigM.js +493 -0
  28. package/dist/{WarehousesPage-CHvBqNaQ.js → WarehousesPage-DCbXXXWE.js} +3 -3
  29. package/dist/index.js +154 -138
  30. package/dist/trash-2-BKhar6Hs.js +32 -0
  31. package/dist/{useFleet-DiAC-IiH.js → useFleet-DKqXZ16m.js} +77 -56
  32. package/dist/{useInventory-DKoks37x.js → useInventory-DkyiVY_A.js} +73 -53
  33. package/dist/{useTracking-GJify4HN.js → useTracking-B-va1kO3.js} +2 -2
  34. package/package.json +1 -1
  35. package/src/movethewheels/MoveTheWheelsRoutes.tsx +4 -0
  36. package/src/movethewheels/components/FormError.tsx +25 -0
  37. package/src/movethewheels/hooks/useFleet.ts +107 -0
  38. package/src/movethewheels/hooks/useInventory.ts +107 -0
  39. package/src/movethewheels/pages/CustomerDetailsPage.tsx +153 -20
  40. package/src/movethewheels/pages/CustomersPage.tsx +1 -1
  41. package/src/movethewheels/pages/DriverDetailsPage.tsx +159 -2
  42. package/src/movethewheels/pages/DriversPage.tsx +6 -2
  43. package/src/movethewheels/pages/InventoryPage.tsx +1 -1
  44. package/src/movethewheels/pages/OrdersListPage.tsx +1 -1
  45. package/src/movethewheels/pages/ProductDetailsPage.tsx +146 -3
  46. package/src/movethewheels/pages/ProductsPage.tsx +6 -2
  47. package/src/movethewheels/pages/RouteDetailsPage.tsx +285 -25
  48. package/src/movethewheels/pages/VehicleDetailsPage.tsx +158 -2
  49. package/src/movethewheels/pages/VehiclesPage.tsx +6 -2
  50. package/src/movethewheels/pages/WarehouseDetailsPage.tsx +224 -2
  51. package/src/movethewheels/pages/WarehousesPage.tsx +5 -1
  52. package/dist/CustomerDetailsPage-BaeKEI1D.js +0 -263
  53. package/dist/DriverDetailsPage-CSSQTOzn.js +0 -328
  54. package/dist/ProductDetailsPage-CezzzZcj.js +0 -193
  55. package/dist/RouteDetailsPage-BcomL20M.js +0 -263
  56. package/dist/VehicleDetailsPage-DZjLcJgr.js +0 -218
  57. package/dist/WarehouseDetailsPage-C10pgRGW.js +0 -236
  58. /package/dist/{MetricCard-7aYgzZHK.js → MetricCard-BY0QrMD4.js} +0 -0
  59. /package/dist/{StatusBadge-NpTeHVlw.js → StatusBadge-BZurYHMy.js} +0 -0
  60. /package/dist/{formatters-DhKZ-eA1.js → formatters-CF2S2l1m.js} +0 -0
  61. /package/dist/{trending-up-B7W-GL6P.js → trending-up-Dohgd4t_.js} +0 -0
  62. /package/dist/{triangle-alert-BonHFFNz.js → triangle-alert-i-XQL9Rd.js} +0 -0
  63. /package/dist/{truck-DrlfSpRC.js → truck-C0v_hbLR.js} +0 -0
  64. /package/dist/{useAnalytics-CgdzUfY_.js → useAnalytics-DS8n0xgg.js} +0 -0
  65. /package/dist/{useCustomers-QrlozybF.js → useCustomers-BmTNGxiI.js} +0 -0
  66. /package/dist/{useImportExport-BLMnAKCC.js → useImportExport-DHr-SWSw.js} +0 -0
  67. /package/dist/{useOrders-D3UZVy8Y.js → useOrders-Cfk1GLiq.js} +0 -0
  68. /package/dist/{useReports-Puq4DCH9.js → useReports-CTqZr-AB.js} +0 -0
  69. /package/dist/{useRoutes-Do57LvRb.js → useRoutes-BQWO607N.js} +0 -0
  70. /package/dist/{user-CjSoudeu.js → user-jyFU3lXk.js} +0 -0
  71. /package/dist/{users-BAM4gHTn.js → users-DZ-ilS6B.js} +0 -0
  72. /package/dist/{warehouse-C7MSr47B.js → warehouse-6m5kXMLu.js} +0 -0
@@ -8,11 +8,11 @@ import { n as w, t as T } from "./phone-Ac9s3mo_.js";
8
8
  import { t as E } from "./map-pin-BGiCvyCs.js";
9
9
  import { t as D } from "./package-BChUzpJS.js";
10
10
  import { t as O } from "./square-pen-CopE9GmB.js";
11
- import { t as k } from "./truck-DrlfSpRC.js";
12
- import { t as A } from "./user-CjSoudeu.js";
13
- import { t as j } from "./useOrders-D3UZVy8Y.js";
14
- import { i as M, n as N, r as P, t as F } from "./StatusBadge-NpTeHVlw.js";
15
- import { n as I, r as L, t as R } from "./formatters-DhKZ-eA1.js";
11
+ import { t as k } from "./truck-C0v_hbLR.js";
12
+ import { t as A } from "./user-jyFU3lXk.js";
13
+ import { t as j } from "./useOrders-Cfk1GLiq.js";
14
+ import { i as M, n as N, r as P, t as F } from "./StatusBadge-BZurYHMy.js";
15
+ import { n as I, r as L, t as R } from "./formatters-CF2S2l1m.js";
16
16
  import { useParams as z } from "react-router-dom";
17
17
  import { jsx as B, jsxs as V } from "react/jsx-runtime";
18
18
  import { EmphasisPanel as H, NextSteps as U, PagePurpose as W } from "@burdenoff/fe-libs/ui";
@@ -5,9 +5,9 @@ import { t as m } from "./filter-DloLC2eE.js";
5
5
  import { t as h } from "./package-BChUzpJS.js";
6
6
  import { t as g } from "./plus-Z76q-FZm.js";
7
7
  import { t as _ } from "./refresh-cw-DKt6f5T6.js";
8
- import { r as v } from "./useOrders-D3UZVy8Y.js";
9
- import { i as y, n as b, r as x } from "./StatusBadge-NpTeHVlw.js";
10
- import { n as S, r as C } from "./formatters-DhKZ-eA1.js";
8
+ import { r as v } from "./useOrders-Cfk1GLiq.js";
9
+ import { i as y, n as b, r as x } from "./StatusBadge-BZurYHMy.js";
10
+ import { n as S, r as C } from "./formatters-CF2S2l1m.js";
11
11
  import { useState as w } from "react";
12
12
  import { jsx as T, jsxs as E } from "react/jsx-runtime";
13
13
  import { CTAOverflowMenu as D, EmphasisPanel as O, PagePurpose as k } from "@burdenoff/fe-libs/ui";
@@ -177,7 +177,7 @@ function j() {
177
177
  }, {
178
178
  label: M("movethewheels.orders.actions.export", "Export"),
179
179
  icon: /* @__PURE__ */ T(p, { size: 16 }),
180
- onSelect: () => {}
180
+ onSelect: () => U("import-export")
181
181
  }]
182
182
  }),
183
183
  children: [
@@ -0,0 +1,350 @@
1
+ import { A as e, ct as t, d as n, f as r, g as i, h as a, i as o, j as s, l as c, lt as l, n as u, ot as d, r as f, u as p } from "./PageLayout-D4LDHJJq.js";
2
+ import { t as m } from "./arrow-left-n48Y-Wis.js";
3
+ import { t as h } from "./box-D9Pal4HM.js";
4
+ import { t as g } from "./dollar-sign-CgKQRz_e.js";
5
+ import { t as _ } from "./package-BChUzpJS.js";
6
+ import { t as v } from "./save-CojywNhG.js";
7
+ import { t as y } from "./square-pen-CopE9GmB.js";
8
+ import { r as b, t as x } from "./useInventory-DkyiVY_A.js";
9
+ import { n as S } from "./formatters-CF2S2l1m.js";
10
+ import { t as C } from "./FormError-BlOjnXOq.js";
11
+ import { useState as w } from "react";
12
+ import { useParams as T } from "react-router-dom";
13
+ import { jsx as E, jsxs as D } from "react/jsx-runtime";
14
+ import { EmphasisPanel as O, NextSteps as k, PagePurpose as A } from "@burdenoff/fe-libs/ui";
15
+ //#region node_modules/lucide-react/dist/esm/icons/tag.js
16
+ var j = l("Tag", [["path", {
17
+ 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",
18
+ key: "vktsd0"
19
+ }], ["circle", {
20
+ cx: "7.5",
21
+ cy: "7.5",
22
+ r: ".5",
23
+ fill: "currentColor",
24
+ key: "kqv944"
25
+ }]]);
26
+ //#endregion
27
+ //#region src/movethewheels/pages/ProductDetailsPage.tsx
28
+ function M() {
29
+ let { basePath: n, navigate: r } = d(), { createProduct: i } = x(), [a, c] = w({
30
+ name: "",
31
+ sku: "",
32
+ category: "",
33
+ brand: "",
34
+ weight: ""
35
+ }), [l, u] = w(!1), [f, h] = w(null), g = () => r?.(t(n, "inventory/products")), y = async (e) => {
36
+ if (e.preventDefault(), !a.name.trim() || !a.sku.trim()) {
37
+ h("Product name and SKU are required.");
38
+ return;
39
+ }
40
+ u(!0), h(null);
41
+ try {
42
+ let e = a.weight.trim() ? Number(a.weight) : void 0, o = await i({
43
+ name: a.name.trim(),
44
+ sku: a.sku.trim(),
45
+ category: a.category.trim() || void 0,
46
+ brand: a.brand.trim() || void 0,
47
+ weight: e !== void 0 && !Number.isNaN(e) ? e : void 0
48
+ });
49
+ r?.(t(n, `inventory/products/${o.id}`));
50
+ } catch (e) {
51
+ console.error("Failed to create product:", e), h(e instanceof Error ? e.message : "Failed to create product. Please try again."), u(!1);
52
+ }
53
+ };
54
+ return /* @__PURE__ */ D(o, {
55
+ title: "Add Product",
56
+ subtitle: "Add an item to your catalog",
57
+ icon: /* @__PURE__ */ E(_, { size: 24 }),
58
+ headerActions: /* @__PURE__ */ D("div", {
59
+ className: "flex gap-2",
60
+ children: [/* @__PURE__ */ D(p, {
61
+ variant: "outline",
62
+ onClick: g,
63
+ disabled: l,
64
+ children: [/* @__PURE__ */ E(m, { size: 16 }), " Cancel"]
65
+ }), /* @__PURE__ */ D(p, {
66
+ onClick: y,
67
+ disabled: l,
68
+ children: [
69
+ /* @__PURE__ */ E(v, { size: 16 }),
70
+ " ",
71
+ l ? "Saving..." : "Add Product"
72
+ ]
73
+ })]
74
+ }),
75
+ children: [/* @__PURE__ */ E(A, {
76
+ icon: /* @__PURE__ */ E(_, { size: 18 }),
77
+ children: "Add a product so it can be added to orders and stocked in warehouses. A name and SKU are all it takes to start — category, brand and weight help with picking, pricing and routing."
78
+ }), /* @__PURE__ */ D("form", {
79
+ onSubmit: y,
80
+ className: "max-w-2xl space-y-6",
81
+ children: [/* @__PURE__ */ E(C, { message: f }), /* @__PURE__ */ D(O, { children: [/* @__PURE__ */ E("h2", {
82
+ className: "text-base font-semibold text-text-primary mb-4",
83
+ children: "Product Details"
84
+ }), /* @__PURE__ */ D("div", {
85
+ className: "space-y-4",
86
+ children: [/* @__PURE__ */ D("div", {
87
+ className: "grid grid-cols-1 md:grid-cols-2 gap-4",
88
+ children: [/* @__PURE__ */ D("div", {
89
+ className: "space-y-2",
90
+ children: [/* @__PURE__ */ D(s, {
91
+ htmlFor: "name",
92
+ children: ["Name ", /* @__PURE__ */ E("span", {
93
+ className: "text-status-error-text",
94
+ children: "*"
95
+ })]
96
+ }), /* @__PURE__ */ E(e, {
97
+ id: "name",
98
+ value: a.name,
99
+ onChange: (e) => c((t) => ({
100
+ ...t,
101
+ name: e.target.value
102
+ })),
103
+ placeholder: "Wireless Headphones",
104
+ required: !0
105
+ })]
106
+ }), /* @__PURE__ */ D("div", {
107
+ className: "space-y-2",
108
+ children: [/* @__PURE__ */ D(s, {
109
+ htmlFor: "sku",
110
+ children: ["SKU ", /* @__PURE__ */ E("span", {
111
+ className: "text-status-error-text",
112
+ children: "*"
113
+ })]
114
+ }), /* @__PURE__ */ E(e, {
115
+ id: "sku",
116
+ value: a.sku,
117
+ onChange: (e) => c((t) => ({
118
+ ...t,
119
+ sku: e.target.value
120
+ })),
121
+ placeholder: "SKU-001",
122
+ required: !0
123
+ })]
124
+ })]
125
+ }), /* @__PURE__ */ D("div", {
126
+ className: "grid grid-cols-1 md:grid-cols-3 gap-4",
127
+ children: [
128
+ /* @__PURE__ */ D("div", {
129
+ className: "space-y-2",
130
+ children: [/* @__PURE__ */ E(s, {
131
+ htmlFor: "category",
132
+ children: "Category"
133
+ }), /* @__PURE__ */ E(e, {
134
+ id: "category",
135
+ value: a.category,
136
+ onChange: (e) => c((t) => ({
137
+ ...t,
138
+ category: e.target.value
139
+ })),
140
+ placeholder: "Electronics"
141
+ })]
142
+ }),
143
+ /* @__PURE__ */ D("div", {
144
+ className: "space-y-2",
145
+ children: [/* @__PURE__ */ E(s, {
146
+ htmlFor: "brand",
147
+ children: "Brand"
148
+ }), /* @__PURE__ */ E(e, {
149
+ id: "brand",
150
+ value: a.brand,
151
+ onChange: (e) => c((t) => ({
152
+ ...t,
153
+ brand: e.target.value
154
+ })),
155
+ placeholder: "Acme"
156
+ })]
157
+ }),
158
+ /* @__PURE__ */ D("div", {
159
+ className: "space-y-2",
160
+ children: [/* @__PURE__ */ E(s, {
161
+ htmlFor: "weight",
162
+ children: "Weight (kg)"
163
+ }), /* @__PURE__ */ E(e, {
164
+ id: "weight",
165
+ type: "number",
166
+ min: "0",
167
+ step: "0.01",
168
+ value: a.weight,
169
+ onChange: (e) => c((t) => ({
170
+ ...t,
171
+ weight: e.target.value
172
+ })),
173
+ placeholder: "0.5"
174
+ })]
175
+ })
176
+ ]
177
+ })]
178
+ })] })]
179
+ })]
180
+ });
181
+ }
182
+ function N() {
183
+ let { productId: e } = T(), { basePath: s, navigate: l } = d(), { product: v, isLoading: x, error: C, refetch: w } = b(e), N = () => l?.(t(s, "inventory/products")), P = (e) => l?.(t(s, e));
184
+ return e ? x ? /* @__PURE__ */ E(f, { message: "Loading product details..." }) : C || !v ? /* @__PURE__ */ E(u, {
185
+ title: "Product not found",
186
+ onRetry: w
187
+ }) : /* @__PURE__ */ D(o, {
188
+ title: v.name,
189
+ subtitle: `SKU: ${v.sku}`,
190
+ icon: /* @__PURE__ */ E(_, { size: 24 }),
191
+ headerActions: /* @__PURE__ */ D("div", {
192
+ className: "flex gap-2",
193
+ children: [/* @__PURE__ */ D(p, {
194
+ variant: "outline",
195
+ onClick: N,
196
+ children: [/* @__PURE__ */ E(m, { size: 16 }), " Back"]
197
+ }), /* @__PURE__ */ D(p, { children: [/* @__PURE__ */ E(y, { size: 16 }), " Edit"] })]
198
+ }),
199
+ headerContent: /* @__PURE__ */ D("div", {
200
+ className: "flex gap-2",
201
+ children: [
202
+ /* @__PURE__ */ E(c, {
203
+ variant: "outline",
204
+ children: v.category
205
+ }),
206
+ v.brand && /* @__PURE__ */ E(c, {
207
+ variant: "secondary",
208
+ children: v.brand
209
+ }),
210
+ v.fragile && /* @__PURE__ */ E(c, {
211
+ variant: "destructive",
212
+ children: "Fragile"
213
+ }),
214
+ v.hazardous && /* @__PURE__ */ E(c, {
215
+ variant: "destructive",
216
+ children: "Hazardous"
217
+ }),
218
+ v.temperatureControlled && /* @__PURE__ */ E(c, {
219
+ variant: "secondary",
220
+ children: "Temp Controlled"
221
+ })
222
+ ]
223
+ }),
224
+ children: [
225
+ /* @__PURE__ */ E(A, {
226
+ icon: /* @__PURE__ */ E(_, { size: 18 }),
227
+ 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."
228
+ }),
229
+ /* @__PURE__ */ E(k, {
230
+ storageKey: "movethewheels-product-details",
231
+ steps: [{
232
+ id: "order",
233
+ label: "Add this product to an order",
234
+ description: "Include it on a new delivery.",
235
+ icon: /* @__PURE__ */ E(_, { size: 16 }),
236
+ onClick: () => P("orders/new")
237
+ }, {
238
+ id: "edit",
239
+ label: "Edit product details",
240
+ description: "Update dimensions, value or handling flags.",
241
+ icon: /* @__PURE__ */ E(j, { size: 16 }),
242
+ onClick: () => {}
243
+ }]
244
+ }),
245
+ /* @__PURE__ */ D("div", {
246
+ className: "grid grid-cols-1 lg:grid-cols-3 gap-6",
247
+ children: [/* @__PURE__ */ D("div", {
248
+ className: "lg:col-span-2 space-y-6",
249
+ children: [
250
+ /* @__PURE__ */ D(n, { children: [/* @__PURE__ */ E(a, { children: /* @__PURE__ */ E(i, { children: "Description" }) }), /* @__PURE__ */ E(r, { children: /* @__PURE__ */ E("p", { children: v.description }) })] }),
251
+ /* @__PURE__ */ D(n, { children: [/* @__PURE__ */ E(a, { children: /* @__PURE__ */ D(i, {
252
+ className: "flex items-center gap-2",
253
+ children: [/* @__PURE__ */ E(h, { size: 18 }), " Dimensions & Weight"]
254
+ }) }), /* @__PURE__ */ E(r, { children: /* @__PURE__ */ D("div", {
255
+ className: "grid grid-cols-2 md:grid-cols-4 gap-4",
256
+ children: [
257
+ /* @__PURE__ */ D("div", { children: [/* @__PURE__ */ E("p", {
258
+ className: "text-sm text-text-secondary",
259
+ children: "Length"
260
+ }), /* @__PURE__ */ D("p", {
261
+ className: "text-2xl font-bold",
262
+ children: [v.dimensions.length, /* @__PURE__ */ D("span", {
263
+ className: "text-sm font-normal",
264
+ children: [" ", v.dimensions.unit]
265
+ })]
266
+ })] }),
267
+ /* @__PURE__ */ D("div", { children: [/* @__PURE__ */ E("p", {
268
+ className: "text-sm text-text-secondary",
269
+ children: "Width"
270
+ }), /* @__PURE__ */ D("p", {
271
+ className: "text-2xl font-bold",
272
+ children: [v.dimensions.width, /* @__PURE__ */ D("span", {
273
+ className: "text-sm font-normal",
274
+ children: [" ", v.dimensions.unit]
275
+ })]
276
+ })] }),
277
+ /* @__PURE__ */ D("div", { children: [/* @__PURE__ */ E("p", {
278
+ className: "text-sm text-text-secondary",
279
+ children: "Height"
280
+ }), /* @__PURE__ */ D("p", {
281
+ className: "text-2xl font-bold",
282
+ children: [v.dimensions.height, /* @__PURE__ */ D("span", {
283
+ className: "text-sm font-normal",
284
+ children: [" ", v.dimensions.unit]
285
+ })]
286
+ })] }),
287
+ /* @__PURE__ */ D("div", { children: [/* @__PURE__ */ E("p", {
288
+ className: "text-sm text-text-secondary",
289
+ children: "Weight"
290
+ }), /* @__PURE__ */ D("p", {
291
+ className: "text-2xl font-bold",
292
+ children: [v.weight, /* @__PURE__ */ E("span", {
293
+ className: "text-sm font-normal",
294
+ children: " kg"
295
+ })]
296
+ })] })
297
+ ]
298
+ }) })] }),
299
+ v.attributes.length > 0 && /* @__PURE__ */ D(n, { children: [/* @__PURE__ */ E(a, { children: /* @__PURE__ */ D(i, {
300
+ className: "flex items-center gap-2",
301
+ children: [/* @__PURE__ */ E(j, { size: 18 }), " Attributes"]
302
+ }) }), /* @__PURE__ */ E(r, { children: /* @__PURE__ */ E("div", {
303
+ className: "grid grid-cols-2 md:grid-cols-3 gap-4",
304
+ children: v.attributes.map((e, t) => /* @__PURE__ */ D("div", { children: [/* @__PURE__ */ E("p", {
305
+ className: "text-sm text-text-secondary",
306
+ children: e.name
307
+ }), /* @__PURE__ */ E("p", {
308
+ className: "font-medium",
309
+ children: e.value
310
+ })] }, t))
311
+ }) })] })
312
+ ]
313
+ }), /* @__PURE__ */ D("div", {
314
+ className: "space-y-6",
315
+ children: [/* @__PURE__ */ D(O, { children: [
316
+ /* @__PURE__ */ D("h2", {
317
+ className: "flex items-center gap-2 text-base font-semibold text-text-primary mb-3",
318
+ children: [/* @__PURE__ */ E(g, { size: 18 }), " Pricing"]
319
+ }),
320
+ /* @__PURE__ */ E("p", {
321
+ className: "text-3xl font-bold",
322
+ children: S(v.value)
323
+ }),
324
+ /* @__PURE__ */ E("p", {
325
+ className: "text-sm text-text-secondary",
326
+ children: "Unit price"
327
+ })
328
+ ] }), /* @__PURE__ */ D(n, { children: [/* @__PURE__ */ E(a, { children: /* @__PURE__ */ E(i, { children: "Identifiers" }) }), /* @__PURE__ */ D(r, {
329
+ className: "space-y-3",
330
+ children: [/* @__PURE__ */ D("div", { children: [/* @__PURE__ */ E("p", {
331
+ className: "text-sm text-text-secondary",
332
+ children: "SKU"
333
+ }), /* @__PURE__ */ E("p", {
334
+ className: "font-mono",
335
+ children: v.sku
336
+ })] }), v.barcode && /* @__PURE__ */ D("div", { children: [/* @__PURE__ */ E("p", {
337
+ className: "text-sm text-text-secondary",
338
+ children: "Barcode"
339
+ }), /* @__PURE__ */ E("p", {
340
+ className: "font-mono",
341
+ children: v.barcode
342
+ })] })]
343
+ })] })]
344
+ })]
345
+ })
346
+ ]
347
+ }) : /* @__PURE__ */ E(M, {});
348
+ }
349
+ //#endregion
350
+ export { N as default };
@@ -4,8 +4,8 @@ import { t as a } from "./download-DRXxoiQR.js";
4
4
  import { t as o } from "./package-BChUzpJS.js";
5
5
  import { t as s } from "./plus-Z76q-FZm.js";
6
6
  import { t as c } from "./refresh-cw-DKt6f5T6.js";
7
- import { i as l } from "./useInventory-DKoks37x.js";
8
- import { n as u } from "./formatters-DhKZ-eA1.js";
7
+ import { i as l } from "./useInventory-DkyiVY_A.js";
8
+ import { n as u } from "./formatters-CF2S2l1m.js";
9
9
  import { jsx as d, jsxs as f } from "react/jsx-runtime";
10
10
  import { CTAOverflowMenu as p, EmphasisPanel as m, PagePurpose as h } from "@burdenoff/fe-libs/ui";
11
11
  //#region src/movethewheels/pages/ProductsPage.tsx
@@ -19,7 +19,7 @@ function g() {
19
19
  primary: {
20
20
  label: "Add Product",
21
21
  icon: /* @__PURE__ */ d(s, { size: 16 }),
22
- onSelect: () => {}
22
+ onSelect: () => S("inventory/products/new")
23
23
  },
24
24
  actions: [{
25
25
  label: "Refresh",
@@ -28,7 +28,7 @@ function g() {
28
28
  }, {
29
29
  label: "Export",
30
30
  icon: /* @__PURE__ */ d(a, { size: 16 }),
31
- onSelect: () => {}
31
+ onSelect: () => S("import-export")
32
32
  }]
33
33
  }),
34
34
  children: [
@@ -3,8 +3,8 @@ import { t as m } from "./clock-DJZtdl8u.js";
3
3
  import { t as h } from "./download-DRXxoiQR.js";
4
4
  import { t as g } from "./filter-DloLC2eE.js";
5
5
  import { t as _ } from "./plus-Z76q-FZm.js";
6
- import { t as v } from "./useReports-Puq4DCH9.js";
7
- import { r as y } from "./formatters-DhKZ-eA1.js";
6
+ import { t as v } from "./useReports-CTqZr-AB.js";
7
+ import { r as y } from "./formatters-CF2S2l1m.js";
8
8
  import { useState as b } from "react";
9
9
  import { jsx as x, jsxs as S } from "react/jsx-runtime";
10
10
  import { EmphasisPanel as C, IllustratedEmptyState as w, PagePurpose as T } from "@burdenoff/fe-libs/ui";