@burdenoff/microfe-movethewheels 2026.1031.3 → 2026.1031.5

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 (63) hide show
  1. package/dist/MoveTheWheelsRoot.js +136 -127
  2. package/dist/MoveTheWheelsRoutes.js +143 -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 +18 -5
  48. package/src/movethewheels/MoveTheWheelsRoutes.tsx +19 -4
  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
  59. package/dist/movethewheels/pages/AIAssistantPage.d.ts +0 -22
  60. package/dist/node_modules/lucide-react/dist/esm/icons/message-circle.js +0 -8
  61. package/dist/node_modules/lucide-react/dist/esm/icons/wallet.js +0 -11
  62. package/dist/pages/AIAssistantPage.js +0 -81
  63. package/src/movethewheels/pages/AIAssistantPage.tsx +0 -123
@@ -11,11 +11,11 @@ import { Trash2 as l } from "../node_modules/lucide-react/dist/esm/icons/trash-2
11
11
  import { Warehouse as u } from "../node_modules/lucide-react/dist/esm/icons/warehouse.js";
12
12
  import { joinPath as d } from "../utils/navigation.js";
13
13
  import { useMoveTheWheels as f } from "../providers/MoveTheWheelsProvider.js";
14
- import { useInventory as p, useProduct as m, useProductStockLevels as h } from "../hooks/useInventory.js";
15
- import { Badge as g, Button as _, Card as v, CardContent as y, CardHeader as b, CardTitle as x, Checkbox as S, Input as C, Label as w, Textarea as T } from "../components/ui.js";
16
- import { ErrorState as E, LoadingState as ee, PageLayout as D } from "../components/PageLayout.js";
14
+ import { formatCurrency as p } from "../utils/formatters.js";
15
+ import { useInventory as m, useProduct as h, useProductStockLevels as g } from "../hooks/useInventory.js";
16
+ import { Badge as _, Button as v, Card as y, CardContent as b, CardHeader as x, CardTitle as S, Checkbox as C, Input as w, Label as T, Textarea as E } from "../components/ui.js";
17
+ import { ErrorState as ee, LoadingState as te, PageLayout as D } from "../components/PageLayout.js";
17
18
  import { FormError as O } from "../components/FormError.js";
18
- import { formatCurrency as te } from "../utils/formatters.js";
19
19
  import { useRefetchOnLeaveEdit as ne } from "../hooks/useRefetchOnLeaveEdit.js";
20
20
  import { useEffect as k, useState as A } from "react";
21
21
  import { useLocation as j, useParams as re } from "react-router";
@@ -23,7 +23,7 @@ import { Fragment as ie, jsx as M, jsxs as N } from "react/jsx-runtime";
23
23
  import { EmphasisPanel as P, NextSteps as ae, PagePurpose as F, ResponsiveDialog as oe, ResponsiveDialogContent as se, ResponsiveDialogDescription as ce, ResponsiveDialogFooter as le, ResponsiveDialogHeader as ue, ResponsiveDialogTitle as de } from "@burdenoff/fe-libs/ui";
24
24
  //#region src/movethewheels/pages/ProductDetailsPage.tsx
25
25
  function I({ editId: t }) {
26
- let { basePath: n, navigate: r } = f(), { createProduct: i, updateProduct: s } = p(), { product: c } = m(t), l = !!t, [u, h] = A({
26
+ let { basePath: n, navigate: r } = f(), { createProduct: i, updateProduct: s } = m(), { product: c } = h(t), l = !!t, [u, p] = A({
27
27
  name: "",
28
28
  sku: "",
29
29
  description: "",
@@ -38,9 +38,9 @@ function I({ editId: t }) {
38
38
  hazardous: !1,
39
39
  fragile: !1,
40
40
  temperatureControlled: !1
41
- }), [g, v] = A(!1), [y, b] = A(null);
41
+ }), [g, _] = A(!1), [y, b] = A(null);
42
42
  k(() => {
43
- t && c && h({
43
+ t && c && p({
44
44
  name: c.name ?? "",
45
45
  sku: c.sku ?? "",
46
46
  description: c.description ?? "",
@@ -57,12 +57,12 @@ function I({ editId: t }) {
57
57
  temperatureControlled: c.temperatureControlled
58
58
  });
59
59
  }, [t, c]);
60
- let x = () => r?.(d(n, "inventory/products")), E = async (e) => {
60
+ let x = () => r?.(d(n, "inventory/products")), S = async (e) => {
61
61
  if (e.preventDefault(), !u.name.trim() || !u.sku.trim()) {
62
62
  b("Product name and SKU are required.");
63
63
  return;
64
64
  }
65
- v(!0), b(null);
65
+ _(!0), b(null);
66
66
  try {
67
67
  let e = (e) => {
68
68
  if (!e.trim()) return;
@@ -94,7 +94,7 @@ function I({ editId: t }) {
94
94
  r?.(d(n, `inventory/products/${e.id}`));
95
95
  }
96
96
  } catch (e) {
97
- console.error("Failed to create product:", e), b(e instanceof Error ? e.message : "Failed to create product. Please try again."), v(!1);
97
+ console.error("Failed to create product:", e), b(e instanceof Error ? e.message : "Failed to create product. Please try again."), _(!1);
98
98
  }
99
99
  };
100
100
  return /* @__PURE__ */ N(D, {
@@ -103,13 +103,13 @@ function I({ editId: t }) {
103
103
  icon: /* @__PURE__ */ M(a, { size: 24 }),
104
104
  headerActions: /* @__PURE__ */ N("div", {
105
105
  className: "flex gap-2",
106
- children: [/* @__PURE__ */ N(_, {
106
+ children: [/* @__PURE__ */ N(v, {
107
107
  variant: "outline",
108
108
  onClick: x,
109
109
  disabled: g,
110
110
  children: [/* @__PURE__ */ M(e, { size: 16 }), " Cancel"]
111
- }), /* @__PURE__ */ N(_, {
112
- onClick: E,
111
+ }), /* @__PURE__ */ N(v, {
112
+ onClick: S,
113
113
  disabled: g,
114
114
  children: [
115
115
  /* @__PURE__ */ M(o, { size: 16 }),
@@ -122,7 +122,7 @@ function I({ editId: t }) {
122
122
  icon: /* @__PURE__ */ M(a, { size: 18 }),
123
123
  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."
124
124
  }), /* @__PURE__ */ N("form", {
125
- onSubmit: E,
125
+ onSubmit: S,
126
126
  className: "max-w-2xl space-y-6",
127
127
  children: [/* @__PURE__ */ M(O, { message: y }), /* @__PURE__ */ N(P, { children: [/* @__PURE__ */ M("h2", {
128
128
  className: "text-base font-semibold text-text-primary mb-4",
@@ -134,16 +134,16 @@ function I({ editId: t }) {
134
134
  className: "grid grid-cols-1 md:grid-cols-2 gap-4",
135
135
  children: [/* @__PURE__ */ N("div", {
136
136
  className: "space-y-2",
137
- children: [/* @__PURE__ */ N(w, {
137
+ children: [/* @__PURE__ */ N(T, {
138
138
  htmlFor: "name",
139
139
  children: ["Name ", /* @__PURE__ */ M("span", {
140
140
  className: "text-status-error-text",
141
141
  children: "*"
142
142
  })]
143
- }), /* @__PURE__ */ M(C, {
143
+ }), /* @__PURE__ */ M(w, {
144
144
  id: "name",
145
145
  value: u.name,
146
- onChange: (e) => h((t) => ({
146
+ onChange: (e) => p((t) => ({
147
147
  ...t,
148
148
  name: e.target.value
149
149
  })),
@@ -152,16 +152,16 @@ function I({ editId: t }) {
152
152
  })]
153
153
  }), /* @__PURE__ */ N("div", {
154
154
  className: "space-y-2",
155
- children: [/* @__PURE__ */ N(w, {
155
+ children: [/* @__PURE__ */ N(T, {
156
156
  htmlFor: "sku",
157
157
  children: ["SKU ", /* @__PURE__ */ M("span", {
158
158
  className: "text-status-error-text",
159
159
  children: "*"
160
160
  })]
161
- }), /* @__PURE__ */ M(C, {
161
+ }), /* @__PURE__ */ M(w, {
162
162
  id: "sku",
163
163
  value: u.sku,
164
- onChange: (e) => h((t) => ({
164
+ onChange: (e) => p((t) => ({
165
165
  ...t,
166
166
  sku: e.target.value
167
167
  })),
@@ -174,13 +174,13 @@ function I({ editId: t }) {
174
174
  className: "grid grid-cols-1 md:grid-cols-3 gap-4",
175
175
  children: [/* @__PURE__ */ N("div", {
176
176
  className: "space-y-2",
177
- children: [/* @__PURE__ */ M(w, {
177
+ children: [/* @__PURE__ */ M(T, {
178
178
  htmlFor: "category",
179
179
  children: "Category"
180
- }), /* @__PURE__ */ M(C, {
180
+ }), /* @__PURE__ */ M(w, {
181
181
  id: "category",
182
182
  value: u.category,
183
- onChange: (e) => h((t) => ({
183
+ onChange: (e) => p((t) => ({
184
184
  ...t,
185
185
  category: e.target.value
186
186
  })),
@@ -188,13 +188,13 @@ function I({ editId: t }) {
188
188
  })]
189
189
  }), /* @__PURE__ */ N("div", {
190
190
  className: "space-y-2",
191
- children: [/* @__PURE__ */ M(w, {
191
+ children: [/* @__PURE__ */ M(T, {
192
192
  htmlFor: "brand",
193
193
  children: "Brand"
194
- }), /* @__PURE__ */ M(C, {
194
+ }), /* @__PURE__ */ M(w, {
195
195
  id: "brand",
196
196
  value: u.brand,
197
- onChange: (e) => h((t) => ({
197
+ onChange: (e) => p((t) => ({
198
198
  ...t,
199
199
  brand: e.target.value
200
200
  })),
@@ -204,13 +204,13 @@ function I({ editId: t }) {
204
204
  }),
205
205
  /* @__PURE__ */ N("div", {
206
206
  className: "space-y-2",
207
- children: [/* @__PURE__ */ M(w, {
207
+ children: [/* @__PURE__ */ M(T, {
208
208
  htmlFor: "description",
209
209
  children: "Description"
210
- }), /* @__PURE__ */ M(T, {
210
+ }), /* @__PURE__ */ M(E, {
211
211
  id: "description",
212
212
  value: u.description,
213
- onChange: (e) => h((t) => ({
213
+ onChange: (e) => p((t) => ({
214
214
  ...t,
215
215
  description: e.target.value
216
216
  })),
@@ -226,16 +226,16 @@ function I({ editId: t }) {
226
226
  ["height", "Height"]
227
227
  ].map(([e, t]) => /* @__PURE__ */ N("div", {
228
228
  className: "space-y-2",
229
- children: [/* @__PURE__ */ M(w, {
229
+ children: [/* @__PURE__ */ M(T, {
230
230
  htmlFor: e,
231
231
  children: t
232
- }), /* @__PURE__ */ M(C, {
232
+ }), /* @__PURE__ */ M(w, {
233
233
  id: e,
234
234
  type: "number",
235
235
  min: "0",
236
236
  step: "0.01",
237
237
  value: u[e],
238
- onChange: (t) => h((n) => ({
238
+ onChange: (t) => p((n) => ({
239
239
  ...n,
240
240
  [e]: t.target.value
241
241
  })),
@@ -243,13 +243,13 @@ function I({ editId: t }) {
243
243
  })]
244
244
  }, e)), /* @__PURE__ */ N("div", {
245
245
  className: "space-y-2",
246
- children: [/* @__PURE__ */ M(w, {
246
+ children: [/* @__PURE__ */ M(T, {
247
247
  htmlFor: "dimensionUnit",
248
248
  children: "Dimension unit"
249
- }), /* @__PURE__ */ M(C, {
249
+ }), /* @__PURE__ */ M(w, {
250
250
  id: "dimensionUnit",
251
251
  value: u.dimensionUnit,
252
- onChange: (e) => h((t) => ({
252
+ onChange: (e) => p((t) => ({
253
253
  ...t,
254
254
  dimensionUnit: e.target.value
255
255
  })),
@@ -261,16 +261,16 @@ function I({ editId: t }) {
261
261
  className: "grid grid-cols-1 md:grid-cols-2 gap-4",
262
262
  children: [/* @__PURE__ */ N("div", {
263
263
  className: "space-y-2",
264
- children: [/* @__PURE__ */ M(w, {
264
+ children: [/* @__PURE__ */ M(T, {
265
265
  htmlFor: "value",
266
266
  children: "Unit value"
267
- }), /* @__PURE__ */ M(C, {
267
+ }), /* @__PURE__ */ M(w, {
268
268
  id: "value",
269
269
  type: "number",
270
270
  min: "0",
271
271
  step: "0.01",
272
272
  value: u.value,
273
- onChange: (e) => h((t) => ({
273
+ onChange: (e) => p((t) => ({
274
274
  ...t,
275
275
  value: e.target.value
276
276
  })),
@@ -278,16 +278,16 @@ function I({ editId: t }) {
278
278
  })]
279
279
  }), /* @__PURE__ */ N("div", {
280
280
  className: "space-y-2",
281
- children: [/* @__PURE__ */ M(w, {
281
+ children: [/* @__PURE__ */ M(T, {
282
282
  htmlFor: "weight",
283
283
  children: "Weight (kg)"
284
- }), /* @__PURE__ */ M(C, {
284
+ }), /* @__PURE__ */ M(w, {
285
285
  id: "weight",
286
286
  type: "number",
287
287
  min: "0",
288
288
  step: "0.01",
289
289
  value: u.weight,
290
- onChange: (e) => h((t) => ({
290
+ onChange: (e) => p((t) => ({
291
291
  ...t,
292
292
  weight: e.target.value
293
293
  })),
@@ -303,9 +303,9 @@ function I({ editId: t }) {
303
303
  ["temperatureControlled", "Temperature controlled"]
304
304
  ].map(([e, t]) => /* @__PURE__ */ N("label", {
305
305
  className: "flex items-center gap-2 text-sm",
306
- children: [/* @__PURE__ */ M(S, {
306
+ children: [/* @__PURE__ */ M(C, {
307
307
  checked: u[e],
308
- onCheckedChange: (t) => h((n) => ({
308
+ onCheckedChange: (t) => p((n) => ({
309
309
  ...n,
310
310
  [e]: t === !0
311
311
  }))
@@ -318,54 +318,54 @@ function I({ editId: t }) {
318
318
  });
319
319
  }
320
320
  function L() {
321
- let { productId: o } = re(), { basePath: S, navigate: C } = f(), { product: w, isLoading: T, error: L, refetch: R } = m(o), { deleteProduct: fe } = p(), z = j().pathname.endsWith("/edit");
321
+ let { productId: o } = re(), { basePath: C, navigate: w } = f(), { product: T, isLoading: E, error: L, refetch: R } = h(o), { deleteProduct: fe } = m(), z = j().pathname.endsWith("/edit");
322
322
  ne(z, R);
323
- let [B, V] = A(!1), [H, U] = A(!1), [pe, W] = A(null), [G, K] = A(0), { levels: q, totalLevels: J, totalAvailable: me, hasMore: Y, isLoading: X, error: Z } = h(z ? void 0 : o, {
323
+ let [B, V] = A(!1), [H, U] = A(!1), [pe, W] = A(null), [G, K] = A(0), { levels: q, totalLevels: J, totalAvailable: me, hasMore: Y, isLoading: X, error: Z } = g(z ? void 0 : o, {
324
324
  limit: 20,
325
325
  offset: G * 20
326
326
  });
327
327
  k(() => {
328
328
  K(0);
329
329
  }, [o]);
330
- let Q = () => C?.(d(S, "inventory/products")), $ = (e) => C?.(d(S, e));
331
- return o ? z ? /* @__PURE__ */ M(I, { editId: o }) : T ? /* @__PURE__ */ M(ee, { message: "Loading product details..." }) : L || !w ? /* @__PURE__ */ M(E, {
330
+ let Q = () => w?.(d(C, "inventory/products")), $ = (e) => w?.(d(C, e));
331
+ return o ? z ? /* @__PURE__ */ M(I, { editId: o }) : E ? /* @__PURE__ */ M(te, { message: "Loading product details..." }) : L || !T ? /* @__PURE__ */ M(ee, {
332
332
  title: "Product not found",
333
333
  onRetry: R
334
334
  }) : /* @__PURE__ */ N(D, {
335
- title: w.name,
336
- subtitle: `SKU: ${w.sku}`,
335
+ title: T.name,
336
+ subtitle: `SKU: ${T.sku}`,
337
337
  icon: /* @__PURE__ */ M(a, { size: 24 }),
338
338
  headerActions: /* @__PURE__ */ N("div", {
339
339
  className: "flex gap-2",
340
- children: [/* @__PURE__ */ N(_, {
340
+ children: [/* @__PURE__ */ N(v, {
341
341
  variant: "outline",
342
342
  onClick: Q,
343
343
  children: [/* @__PURE__ */ M(e, { size: 16 }), " Back"]
344
- }), /* @__PURE__ */ N(_, {
345
- onClick: () => C?.(d(S, `inventory/products/${o}/edit`)),
344
+ }), /* @__PURE__ */ N(v, {
345
+ onClick: () => w?.(d(C, `inventory/products/${o}/edit`)),
346
346
  children: [/* @__PURE__ */ M(s, { size: 16 }), " Edit"]
347
347
  })]
348
348
  }),
349
349
  headerContent: /* @__PURE__ */ N("div", {
350
350
  className: "flex gap-2",
351
351
  children: [
352
- /* @__PURE__ */ M(g, {
352
+ /* @__PURE__ */ M(_, {
353
353
  variant: "outline",
354
- children: w.category ?? "Not provided"
354
+ children: T.category ?? "Not provided"
355
355
  }),
356
- w.brand && /* @__PURE__ */ M(g, {
356
+ T.brand && /* @__PURE__ */ M(_, {
357
357
  variant: "secondary",
358
- children: w.brand
358
+ children: T.brand
359
359
  }),
360
- w.fragile && /* @__PURE__ */ M(g, {
360
+ T.fragile && /* @__PURE__ */ M(_, {
361
361
  variant: "destructive",
362
362
  children: "Fragile"
363
363
  }),
364
- w.hazardous && /* @__PURE__ */ M(g, {
364
+ T.hazardous && /* @__PURE__ */ M(_, {
365
365
  variant: "destructive",
366
366
  children: "Hazardous"
367
367
  }),
368
- w.temperatureControlled && /* @__PURE__ */ M(g, {
368
+ T.temperatureControlled && /* @__PURE__ */ M(_, {
369
369
  variant: "secondary",
370
370
  children: "Temp Controlled"
371
371
  })
@@ -397,31 +397,31 @@ function L() {
397
397
  children: [/* @__PURE__ */ N("div", {
398
398
  className: "lg:col-span-2 space-y-6",
399
399
  children: [
400
- /* @__PURE__ */ N(v, { children: [/* @__PURE__ */ M(b, { children: /* @__PURE__ */ M(x, { children: "Description" }) }), /* @__PURE__ */ M(y, { children: /* @__PURE__ */ M("p", { children: w.description ?? "Not provided" }) })] }),
401
- /* @__PURE__ */ N(v, { children: [/* @__PURE__ */ M(b, { children: /* @__PURE__ */ N(x, {
400
+ /* @__PURE__ */ N(y, { children: [/* @__PURE__ */ M(x, { children: /* @__PURE__ */ M(S, { children: "Description" }) }), /* @__PURE__ */ M(b, { children: /* @__PURE__ */ M("p", { children: T.description ?? "Not provided" }) })] }),
401
+ /* @__PURE__ */ N(y, { children: [/* @__PURE__ */ M(x, { children: /* @__PURE__ */ N(S, {
402
402
  className: "flex items-center gap-2",
403
403
  children: [/* @__PURE__ */ M(t, { size: 18 }), " Dimensions & Weight"]
404
- }) }), /* @__PURE__ */ M(y, { children: /* @__PURE__ */ M("div", {
404
+ }) }), /* @__PURE__ */ M(b, { children: /* @__PURE__ */ M("div", {
405
405
  className: "grid grid-cols-2 md:grid-cols-4 gap-4",
406
406
  children: [
407
407
  [
408
408
  "Length",
409
- w.dimensions?.length,
410
- w.dimensions?.unit
409
+ T.dimensions?.length,
410
+ T.dimensions?.unit
411
411
  ],
412
412
  [
413
413
  "Width",
414
- w.dimensions?.width,
415
- w.dimensions?.unit
414
+ T.dimensions?.width,
415
+ T.dimensions?.unit
416
416
  ],
417
417
  [
418
418
  "Height",
419
- w.dimensions?.height,
420
- w.dimensions?.unit
419
+ T.dimensions?.height,
420
+ T.dimensions?.unit
421
421
  ],
422
422
  [
423
423
  "Weight",
424
- w.weight,
424
+ T.weight,
425
425
  "kg"
426
426
  ]
427
427
  ].map(([e, t, n]) => /* @__PURE__ */ N("div", { children: [/* @__PURE__ */ M("p", {
@@ -435,12 +435,12 @@ function L() {
435
435
  })]
436
436
  })] }, e))
437
437
  }) })] }),
438
- w.attributes.length > 0 && /* @__PURE__ */ N(v, { children: [/* @__PURE__ */ M(b, { children: /* @__PURE__ */ N(x, {
438
+ T.attributes.length > 0 && /* @__PURE__ */ N(y, { children: [/* @__PURE__ */ M(x, { children: /* @__PURE__ */ N(S, {
439
439
  className: "flex items-center gap-2",
440
440
  children: [/* @__PURE__ */ M(c, { size: 18 }), " Attributes"]
441
- }) }), /* @__PURE__ */ M(y, { children: /* @__PURE__ */ M("div", {
441
+ }) }), /* @__PURE__ */ M(b, { children: /* @__PURE__ */ M("div", {
442
442
  className: "grid grid-cols-2 md:grid-cols-3 gap-4",
443
- children: w.attributes.map((e, t) => /* @__PURE__ */ N("div", { children: [/* @__PURE__ */ M("p", {
443
+ children: T.attributes.map((e, t) => /* @__PURE__ */ N("div", { children: [/* @__PURE__ */ M("p", {
444
444
  className: "text-sm text-text-secondary",
445
445
  children: e.name
446
446
  }), /* @__PURE__ */ M("p", {
@@ -459,17 +459,17 @@ function L() {
459
459
  }),
460
460
  /* @__PURE__ */ M("p", {
461
461
  className: "text-3xl font-bold",
462
- children: w.value === void 0 ? "Not provided" : te(w.value)
462
+ children: T.value === void 0 ? "Not provided" : p(T.value)
463
463
  }),
464
464
  /* @__PURE__ */ M("p", {
465
465
  className: "text-sm text-text-secondary",
466
466
  children: "Unit price"
467
467
  })
468
468
  ] }),
469
- /* @__PURE__ */ N(v, { children: [/* @__PURE__ */ M(b, { children: /* @__PURE__ */ N(x, {
469
+ /* @__PURE__ */ N(y, { children: [/* @__PURE__ */ M(x, { children: /* @__PURE__ */ N(S, {
470
470
  className: "flex items-center gap-2",
471
471
  children: [/* @__PURE__ */ M(u, { size: 18 }), " Stock Levels"]
472
- }) }), /* @__PURE__ */ M(y, {
472
+ }) }), /* @__PURE__ */ M(b, {
473
473
  className: "space-y-3",
474
474
  children: Z ? /* @__PURE__ */ M("p", {
475
475
  className: "text-sm text-status-error-text",
@@ -482,7 +482,7 @@ function L() {
482
482
  children: [/* @__PURE__ */ M("p", {
483
483
  className: "text-sm text-text-secondary",
484
484
  children: "This item isn't stocked in any warehouse yet, so nothing can be promised on an order."
485
- }), /* @__PURE__ */ M(_, {
485
+ }), /* @__PURE__ */ M(v, {
486
486
  variant: "outline",
487
487
  size: "sm",
488
488
  onClick: () => $("inventory/warehouses"),
@@ -523,13 +523,13 @@ function L() {
523
523
  ]
524
524
  }), /* @__PURE__ */ N("div", {
525
525
  className: "flex gap-2",
526
- children: [/* @__PURE__ */ N(_, {
526
+ children: [/* @__PURE__ */ N(v, {
527
527
  variant: "outline",
528
528
  size: "sm",
529
529
  disabled: G === 0 || X,
530
530
  onClick: () => K((e) => Math.max(0, e - 1)),
531
531
  children: [/* @__PURE__ */ M(n, { size: 14 }), " Previous"]
532
- }), /* @__PURE__ */ N(_, {
532
+ }), /* @__PURE__ */ N(v, {
533
533
  variant: "outline",
534
534
  size: "sm",
535
535
  disabled: !Y || X,
@@ -550,31 +550,31 @@ function L() {
550
550
  })
551
551
  ] })
552
552
  })] }),
553
- /* @__PURE__ */ N(v, { children: [/* @__PURE__ */ M(b, { children: /* @__PURE__ */ M(x, { children: "Identifiers" }) }), /* @__PURE__ */ N(y, {
553
+ /* @__PURE__ */ N(y, { children: [/* @__PURE__ */ M(x, { children: /* @__PURE__ */ M(S, { children: "Identifiers" }) }), /* @__PURE__ */ N(b, {
554
554
  className: "space-y-3",
555
555
  children: [/* @__PURE__ */ N("div", { children: [/* @__PURE__ */ M("p", {
556
556
  className: "text-sm text-text-secondary",
557
557
  children: "SKU"
558
558
  }), /* @__PURE__ */ M("p", {
559
559
  className: "font-mono",
560
- children: w.sku
561
- })] }), w.barcode && /* @__PURE__ */ N("div", { children: [/* @__PURE__ */ M("p", {
560
+ children: T.sku
561
+ })] }), T.barcode && /* @__PURE__ */ N("div", { children: [/* @__PURE__ */ M("p", {
562
562
  className: "text-sm text-text-secondary",
563
563
  children: "Barcode"
564
564
  }), /* @__PURE__ */ M("p", {
565
565
  className: "font-mono",
566
- children: w.barcode
566
+ children: T.barcode
567
567
  })] })]
568
568
  })] }),
569
- /* @__PURE__ */ N(v, {
569
+ /* @__PURE__ */ N(y, {
570
570
  className: "border-status-error-border",
571
- children: [/* @__PURE__ */ M(b, { children: /* @__PURE__ */ N(x, {
571
+ children: [/* @__PURE__ */ M(x, { children: /* @__PURE__ */ N(S, {
572
572
  className: "flex items-center gap-2 text-status-error-text",
573
573
  children: [/* @__PURE__ */ M(l, { size: 18 }), " Delete Product"]
574
- }) }), /* @__PURE__ */ N(y, { children: [/* @__PURE__ */ M("p", {
574
+ }) }), /* @__PURE__ */ N(b, { children: [/* @__PURE__ */ M("p", {
575
575
  className: "mb-3 text-sm text-text-secondary",
576
576
  children: "Removes this catalog item. Existing inventory records may prevent deletion."
577
- }), /* @__PURE__ */ N(_, {
577
+ }), /* @__PURE__ */ N(v, {
578
578
  variant: "outline",
579
579
  className: "border-status-error-border text-status-error-text hover:bg-status-error-bg-subtle",
580
580
  onClick: () => V(!0),
@@ -590,19 +590,19 @@ function L() {
590
590
  children: /* @__PURE__ */ N(se, { children: [
591
591
  /* @__PURE__ */ N(ue, { children: [/* @__PURE__ */ M(de, { children: "Delete this product?" }), /* @__PURE__ */ N(ce, { children: [
592
592
  "This removes ",
593
- w.name,
593
+ T.name,
594
594
  " from the catalog and cannot be undone from here."
595
595
  ] })] }),
596
596
  /* @__PURE__ */ M("div", {
597
597
  className: "px-1",
598
598
  children: /* @__PURE__ */ M(O, { message: pe })
599
599
  }),
600
- /* @__PURE__ */ N(le, { children: [/* @__PURE__ */ M(_, {
600
+ /* @__PURE__ */ N(le, { children: [/* @__PURE__ */ M(v, {
601
601
  variant: "outline",
602
602
  onClick: () => V(!1),
603
603
  disabled: H,
604
604
  children: "Cancel"
605
- }), /* @__PURE__ */ M(_, {
605
+ }), /* @__PURE__ */ M(v, {
606
606
  className: "bg-status-error-text text-text-inverse hover:opacity-90",
607
607
  onClick: async () => {
608
608
  if (o) {