@burdenoff/microfe-movethewheels 2026.703.7 → 2026.704.1

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 (117) hide show
  1. package/dist/{AIAssistantPage-B7FGmmKT.js → AIAssistantPage-MWJLAMN_.js} +5 -5
  2. package/dist/{AnalyticsPage-DXduj5KB.js → AnalyticsPage-900jpV2T.js} +9 -9
  3. package/dist/{CreateOrderPage-DuJJQ16b.js → CreateOrderPage-CXbhJLLz.js} +164 -139
  4. package/dist/{CustomerDetailsPage-C98SKw7Z.js → CustomerDetailsPage-CHzg75Q5.js} +16 -16
  5. package/dist/{CustomersPage-s8hK55JL.js → CustomersPage-CwtVspuq.js} +11 -11
  6. package/dist/{DashboardPage-BsEgcKEN.js → DashboardPage-BoswH3ec.js} +17 -17
  7. package/dist/{DataTable-Da7yHjM1.js → DataTable-CmdZd6iV.js} +7 -7
  8. package/dist/{DocumentsCard-CziaTJhP.js → DocumentsCard-y2ybnAlu.js} +4 -4
  9. package/dist/DriverDetailsPage-CPO0G8Ki.js +518 -0
  10. package/dist/{DriversPage-Duy_ITG6.js → DriversPage-6Z61dpDI.js} +11 -11
  11. package/dist/{FinancePage-BZtPTpmT.js → FinancePage-DYadOUzC.js} +9 -9
  12. package/dist/{FleetPage-DJfzoHbs.js → FleetPage-qWRj7WFO.js} +10 -10
  13. package/dist/{FormError-CWjGwOW8.js → FormError-D4T5FWZA.js} +1 -1
  14. package/dist/{ImportExportPage-DJ77GK_7.js → ImportExportPage-BhWGfbH3.js} +6 -6
  15. package/dist/{InventoryPage-Dpnwk_N3.js → InventoryPage-DbR4Z--d.js} +10 -10
  16. package/dist/{LiveTrackingPage-CLlvsP1B.js → LiveTrackingPage-5U68u3oA.js} +10 -10
  17. package/dist/{MarketplacePage-d99r-v6p.js → MarketplacePage-DMH0HNDH.js} +9 -9
  18. package/dist/{MetricCard-DA5ZqAVl.js → MetricCard-CqU5WsyW.js} +2 -2
  19. package/dist/{Notice-kkjV2rLR.js → Notice-BrXJ85dA.js} +2 -2
  20. package/dist/{OrderDetailsPage-BePtkyN0.js → OrderDetailsPage-DRYifXm9.js} +28 -24
  21. package/dist/{OrdersListPage-Csy_KScx.js → OrdersListPage-DvICveRv.js} +14 -14
  22. package/dist/{PageLayout-h_q9l8af.js → PageLayout-j9Zw3wBN.js} +579 -561
  23. package/dist/ProductDetailsPage-CWgcRqGR.js +375 -0
  24. package/dist/{ProductsPage-B4jWJ5bv.js → ProductsPage-CokwDOR2.js} +9 -9
  25. package/dist/{ReportsPage-ALRYfXtz.js → ReportsPage-MU8F9DQC.js} +9 -9
  26. package/dist/RouteDetailsPage-BHQbFgI9.js +642 -0
  27. package/dist/{RoutesPage-CQHCDInT.js → RoutesPage-Dqd5Don6.js} +7 -7
  28. package/dist/{SettingsPage-BYBRrlGe.js → SettingsPage-_6SIlcBX.js} +4 -4
  29. package/dist/{Sparkline-Q-6bJ24J.js → Sparkline-DTGdlxUH.js} +1 -1
  30. package/dist/{StatusBadge-1W2p8fEi.js → StatusBadge-BfiF-nNI.js} +1 -1
  31. package/dist/{TrackingPage-CFndTIyk.js → TrackingPage-Cg0tYGJe.js} +11 -11
  32. package/dist/VehicleDetailsPage-BbZlCFPo.js +417 -0
  33. package/dist/{VehiclesPage-ClkfFZxL.js → VehiclesPage-BfBEyXGs.js} +12 -12
  34. package/dist/WarehouseDetailsPage-DxNhiaoI.js +515 -0
  35. package/dist/{WarehousesPage-kNba6cr3.js → WarehousesPage-M3NaBT0z.js} +8 -8
  36. package/dist/{arrow-left-XOzFvBFD.js → arrow-left-1dVWv2dg.js} +1 -1
  37. package/dist/{arrow-right-CRrwlvFe.js → arrow-right-PUCNATnk.js} +1 -1
  38. package/dist/{arrow-up-ClFaLPly.js → arrow-up-VQuGMABN.js} +1 -1
  39. package/dist/{box-BX4WyCLv.js → box-DW1KNP8j.js} +1 -1
  40. package/dist/{boxes-R3nq5f0_.js → boxes-D6I00XqA.js} +1 -1
  41. package/dist/{chart-column-BgF8J9bx.js → chart-column-BwQ5H9ol.js} +1 -1
  42. package/dist/{charts-BS_OnWc6.js → charts-Dv_zxP7L.js} +2 -2
  43. package/dist/{chevron-left-D3hcLQ1g.js → chevron-left-DzNxoaBG.js} +1 -1
  44. package/dist/{chevron-right-BpfSrzQF.js → chevron-right-CKm3ZC1T.js} +1 -1
  45. package/dist/{circle-alert-CLqT8iCQ.js → circle-alert-CtBm6oIb.js} +1 -1
  46. package/dist/{circle-check-CWLAr_8f.js → circle-check-B_Y7FDyR.js} +1 -1
  47. package/dist/{circle-check-big-Dsuz8dJ2.js → circle-check-big-H5pLiMBW.js} +1 -1
  48. package/dist/{clock-DrZOQD8h.js → clock-B4-qjGuB.js} +1 -1
  49. package/dist/{dollar-sign-CJfKfYul.js → dollar-sign-CYGHy2oS.js} +1 -1
  50. package/dist/{download-C-yNvUiL.js → download-BJonq2ty.js} +1 -1
  51. package/dist/{file-text-m2SyQgBo.js → file-text-C-cZx58r.js} +1 -1
  52. package/dist/{filter-uA6govE9.js → filter-B_S6WOqr.js} +1 -1
  53. package/dist/{fuel-BroSIBo1.js → fuel-Cjt6IxKr.js} +1 -1
  54. package/dist/index.js +53 -33
  55. package/dist/{map-BzwQ__kD.js → map-CO0aWUae.js} +1 -1
  56. package/dist/{map-pin-BGbmEGn3.js → map-pin-BISLzLwb.js} +1 -1
  57. package/dist/{maps-DpIuSSmg.js → maps-CtfuCAmh.js} +1 -1
  58. package/dist/{navigation-CjKGLL9T.js → navigation-BFki5UJz.js} +1 -1
  59. package/dist/{package-D36cKFvu.js → package-UyaWiALC.js} +1 -1
  60. package/dist/{phone-mMZFHd1Z.js → phone-Bav_V7rR.js} +1 -1
  61. package/dist/{plus-DY5R-c1j.js → plus-Bk_G-lFC.js} +1 -1
  62. package/dist/{refresh-cw-DyOLYuDU.js → refresh-cw-C4-jecjy.js} +1 -1
  63. package/dist/{route-CuaZ1wU3.js → route-WpCP6F1x.js} +1 -1
  64. package/dist/{save-h9dzHwJE.js → save-CcfoIn2J.js} +1 -1
  65. package/dist/{search-stTGSec-.js → search-C3YRxW9e.js} +1 -1
  66. package/dist/{square-pen-DT5srCPD.js → square-pen-Dr1X-P2s.js} +1 -1
  67. package/dist/{star-gp4yO3PF.js → star-1Ixfuzai.js} +1 -1
  68. package/dist/{store-DJZDAvCY.js → store-BwU935v5.js} +1 -1
  69. package/dist/{trash-2-DwcjTxYE.js → trash-2-CC4KugEJ.js} +1 -1
  70. package/dist/{trending-up-2q2sPVsb.js → trending-up-1brglj1E.js} +1 -1
  71. package/dist/{triangle-alert-CU60xaOi.js → triangle-alert-Dh56Yu3-.js} +1 -1
  72. package/dist/{truck-ByZxqZhI.js → truck-DxhtLfkG.js} +1 -1
  73. package/dist/{upload-CWor1uj3.js → upload-CLf0JLXW.js} +1 -1
  74. package/dist/{useAssistant-uoc8wjr0.js → useAssistant-B9qBtRKm.js} +1 -1
  75. package/dist/{useCustomers-BPPhQXSH.js → useCustomers-BQ4AIEAT.js} +1 -1
  76. package/dist/{useFleet-CT_iW2V9.js → useFleet-BfA_-VUW.js} +101 -72
  77. package/dist/{useImportExport-BG0Cg_D9.js → useImportExport-7-O8noRJ.js} +1 -1
  78. package/dist/{useInventory-BtBGnOC2.js → useInventory-BO7TSgq_.js} +99 -73
  79. package/dist/{useOrders-BC-1mCc0.js → useOrders-B5FV0kcz.js} +1 -1
  80. package/dist/{useReports-Cx8blThR.js → useReports-hUXb8ryJ.js} +1 -1
  81. package/dist/{useRoutes-8fw8oO6y.js → useRoutes-C_ZCYJ_h.js} +1 -1
  82. package/dist/{useSettings-Do5WSUaI.js → useSettings-BNNzQs_B.js} +2 -2
  83. package/dist/{useTracking-Dogilo5C.js → useTracking-7nd_XOSL.js} +3 -3
  84. package/dist/{user-Dr_JS2FF.js → user-B1IjWJtn.js} +1 -1
  85. package/dist/{user-check-CBSiMH6I.js → user-check-Cx6fHHll.js} +1 -1
  86. package/dist/{users-BRV9-2nV.js → users-BKmsb79k.js} +1 -1
  87. package/dist/{warehouse-CmIAl0_w.js → warehouse-DE1irFyJ.js} +1 -1
  88. package/dist/{wrench-6U-BTSbg.js → wrench-DTJGFs17.js} +1 -1
  89. package/dist/{x-DX8sZrkd.js → x-CvsUGJy1.js} +1 -1
  90. package/package.json +1 -1
  91. package/src/movethewheels/MoveTheWheelsRoutes.tsx +5 -0
  92. package/src/movethewheels/components/GlassPanel.tsx +1 -3
  93. package/src/movethewheels/components/MetricCard.tsx +16 -3
  94. package/src/movethewheels/components/charts/StatusDonut.tsx +2 -6
  95. package/src/movethewheels/components/charts/TrendChart.tsx +2 -6
  96. package/src/movethewheels/components/maps/LogisticsMap.tsx +1 -4
  97. package/src/movethewheels/components/maps/RouteMap.tsx +3 -5
  98. package/src/movethewheels/components/maps/TrackingMap.tsx +11 -2
  99. package/src/movethewheels/hooks/useFleet.ts +113 -0
  100. package/src/movethewheels/hooks/useInventory.ts +86 -0
  101. package/src/movethewheels/hooks/useSettings.ts +8 -1
  102. package/src/movethewheels/pages/CreateOrderPage.tsx +48 -6
  103. package/src/movethewheels/pages/CustomerDetailsPage.tsx +3 -2
  104. package/src/movethewheels/pages/DriverDetailsPage.tsx +58 -20
  105. package/src/movethewheels/pages/OrderDetailsPage.tsx +2 -1
  106. package/src/movethewheels/pages/ProductDetailsPage.tsx +51 -15
  107. package/src/movethewheels/pages/RouteDetailsPage.tsx +51 -7
  108. package/src/movethewheels/pages/VehicleDetailsPage.tsx +53 -17
  109. package/src/movethewheels/pages/VehiclesPage.tsx +9 -1
  110. package/src/movethewheels/pages/WarehouseDetailsPage.tsx +49 -11
  111. package/src/movethewheels/types/index.ts +3 -0
  112. package/src/movethewheels/utils/graphqlClient.ts +51 -1
  113. package/dist/DriverDetailsPage-CBzAmM6s.js +0 -490
  114. package/dist/ProductDetailsPage-BMlRoR9E.js +0 -350
  115. package/dist/RouteDetailsPage-Btb1MSIS.js +0 -610
  116. package/dist/VehicleDetailsPage-DNLrMljV.js +0 -393
  117. package/dist/WarehouseDetailsPage-CAQFz7l_.js +0 -493
@@ -0,0 +1,375 @@
1
+ import { A as e, d as t, f as n, g as r, h as i, i as a, j as o, l as s, lt as c, n as l, r as u, st as d, u as f, ut as p } from "./PageLayout-j9Zw3wBN.js";
2
+ import { t as m } from "./arrow-left-1dVWv2dg.js";
3
+ import { t as h } from "./box-DW1KNP8j.js";
4
+ import { t as g } from "./dollar-sign-CYGHy2oS.js";
5
+ import { t as _ } from "./package-UyaWiALC.js";
6
+ import { t as v } from "./save-CcfoIn2J.js";
7
+ import { t as y } from "./square-pen-Dr1X-P2s.js";
8
+ import { r as b, t as x } from "./useInventory-BO7TSgq_.js";
9
+ import { t as S } from "./FormError-D4T5FWZA.js";
10
+ import { n as C } from "./formatters-FWJDwTFv.js";
11
+ import { useEffect as w, useState as T } from "react";
12
+ import { useLocation as E, useParams as D } from "react-router-dom";
13
+ import { jsx as O, jsxs as k } from "react/jsx-runtime";
14
+ import { EmphasisPanel as A, NextSteps as j, PagePurpose as M } from "@burdenoff/fe-libs/ui";
15
+ //#region node_modules/lucide-react/dist/esm/icons/tag.js
16
+ var N = p("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 P({ editId: t }) {
29
+ let { basePath: n, navigate: r } = d(), { createProduct: i, updateProduct: s } = x(), { product: l } = b(t), u = !!t, [p, h] = T({
30
+ name: "",
31
+ sku: "",
32
+ category: "",
33
+ brand: "",
34
+ weight: ""
35
+ }), [g, y] = T(!1), [C, E] = T(null);
36
+ w(() => {
37
+ t && l && h({
38
+ name: l.name ?? "",
39
+ sku: l.sku ?? "",
40
+ category: l.category ?? "",
41
+ brand: l.brand ?? "",
42
+ weight: l.weight == null ? "" : String(l.weight)
43
+ });
44
+ }, [t, l]);
45
+ let D = () => r?.(c(n, "inventory/products")), j = async (e) => {
46
+ if (e.preventDefault(), !p.name.trim() || !p.sku.trim()) {
47
+ E("Product name and SKU are required.");
48
+ return;
49
+ }
50
+ y(!0), E(null);
51
+ try {
52
+ let e = p.weight.trim() ? Number(p.weight) : void 0;
53
+ if (u && t) {
54
+ let i = await s(t, {
55
+ name: p.name.trim(),
56
+ sku: p.sku.trim(),
57
+ category: p.category.trim() || void 0,
58
+ brand: p.brand.trim() || void 0,
59
+ weight: e !== void 0 && !Number.isNaN(e) ? e : void 0
60
+ });
61
+ r?.(c(n, `inventory/products/${i.id}`));
62
+ } else {
63
+ let t = await i({
64
+ name: p.name.trim(),
65
+ sku: p.sku.trim(),
66
+ category: p.category.trim() || void 0,
67
+ brand: p.brand.trim() || void 0,
68
+ weight: e !== void 0 && !Number.isNaN(e) ? e : void 0
69
+ });
70
+ r?.(c(n, `inventory/products/${t.id}`));
71
+ }
72
+ } catch (e) {
73
+ console.error("Failed to create product:", e), E(e instanceof Error ? e.message : "Failed to create product. Please try again."), y(!1);
74
+ }
75
+ };
76
+ return /* @__PURE__ */ k(a, {
77
+ title: u ? "Edit Product" : "Add Product",
78
+ subtitle: "Add an item to your catalog",
79
+ icon: /* @__PURE__ */ O(_, { size: 24 }),
80
+ headerActions: /* @__PURE__ */ k("div", {
81
+ className: "flex gap-2",
82
+ children: [/* @__PURE__ */ k(f, {
83
+ variant: "outline",
84
+ onClick: D,
85
+ disabled: g,
86
+ children: [/* @__PURE__ */ O(m, { size: 16 }), " Cancel"]
87
+ }), /* @__PURE__ */ k(f, {
88
+ onClick: j,
89
+ disabled: g,
90
+ children: [
91
+ /* @__PURE__ */ O(v, { size: 16 }),
92
+ " ",
93
+ u ? g ? "Saving..." : "Save Changes" : g ? "Saving..." : "Add Product"
94
+ ]
95
+ })]
96
+ }),
97
+ children: [/* @__PURE__ */ O(M, {
98
+ icon: /* @__PURE__ */ O(_, { size: 18 }),
99
+ 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."
100
+ }), /* @__PURE__ */ k("form", {
101
+ onSubmit: j,
102
+ className: "max-w-2xl space-y-6",
103
+ children: [/* @__PURE__ */ O(S, { message: C }), /* @__PURE__ */ k(A, { children: [/* @__PURE__ */ O("h2", {
104
+ className: "text-base font-semibold text-text-primary mb-4",
105
+ children: "Product Details"
106
+ }), /* @__PURE__ */ k("div", {
107
+ className: "space-y-4",
108
+ children: [/* @__PURE__ */ k("div", {
109
+ className: "grid grid-cols-1 md:grid-cols-2 gap-4",
110
+ children: [/* @__PURE__ */ k("div", {
111
+ className: "space-y-2",
112
+ children: [/* @__PURE__ */ k(o, {
113
+ htmlFor: "name",
114
+ children: ["Name ", /* @__PURE__ */ O("span", {
115
+ className: "text-status-error-text",
116
+ children: "*"
117
+ })]
118
+ }), /* @__PURE__ */ O(e, {
119
+ id: "name",
120
+ value: p.name,
121
+ onChange: (e) => h((t) => ({
122
+ ...t,
123
+ name: e.target.value
124
+ })),
125
+ placeholder: "Wireless Headphones",
126
+ required: !0
127
+ })]
128
+ }), /* @__PURE__ */ k("div", {
129
+ className: "space-y-2",
130
+ children: [/* @__PURE__ */ k(o, {
131
+ htmlFor: "sku",
132
+ children: ["SKU ", /* @__PURE__ */ O("span", {
133
+ className: "text-status-error-text",
134
+ children: "*"
135
+ })]
136
+ }), /* @__PURE__ */ O(e, {
137
+ id: "sku",
138
+ value: p.sku,
139
+ onChange: (e) => h((t) => ({
140
+ ...t,
141
+ sku: e.target.value
142
+ })),
143
+ placeholder: "SKU-001",
144
+ required: !0
145
+ })]
146
+ })]
147
+ }), /* @__PURE__ */ k("div", {
148
+ className: "grid grid-cols-1 md:grid-cols-3 gap-4",
149
+ children: [
150
+ /* @__PURE__ */ k("div", {
151
+ className: "space-y-2",
152
+ children: [/* @__PURE__ */ O(o, {
153
+ htmlFor: "category",
154
+ children: "Category"
155
+ }), /* @__PURE__ */ O(e, {
156
+ id: "category",
157
+ value: p.category,
158
+ onChange: (e) => h((t) => ({
159
+ ...t,
160
+ category: e.target.value
161
+ })),
162
+ placeholder: "Electronics"
163
+ })]
164
+ }),
165
+ /* @__PURE__ */ k("div", {
166
+ className: "space-y-2",
167
+ children: [/* @__PURE__ */ O(o, {
168
+ htmlFor: "brand",
169
+ children: "Brand"
170
+ }), /* @__PURE__ */ O(e, {
171
+ id: "brand",
172
+ value: p.brand,
173
+ onChange: (e) => h((t) => ({
174
+ ...t,
175
+ brand: e.target.value
176
+ })),
177
+ placeholder: "Acme"
178
+ })]
179
+ }),
180
+ /* @__PURE__ */ k("div", {
181
+ className: "space-y-2",
182
+ children: [/* @__PURE__ */ O(o, {
183
+ htmlFor: "weight",
184
+ children: "Weight (kg)"
185
+ }), /* @__PURE__ */ O(e, {
186
+ id: "weight",
187
+ type: "number",
188
+ min: "0",
189
+ step: "0.01",
190
+ value: p.weight,
191
+ onChange: (e) => h((t) => ({
192
+ ...t,
193
+ weight: e.target.value
194
+ })),
195
+ placeholder: "0.5"
196
+ })]
197
+ })
198
+ ]
199
+ })]
200
+ })] })]
201
+ })]
202
+ });
203
+ }
204
+ function F() {
205
+ let { productId: e } = D(), { basePath: o, navigate: p } = d(), { product: v, isLoading: x, error: S, refetch: w } = b(e), T = E().pathname.endsWith("/edit"), F = () => p?.(c(o, "inventory/products")), I = (e) => p?.(c(o, e));
206
+ return e ? T ? /* @__PURE__ */ O(P, { editId: e }) : x ? /* @__PURE__ */ O(u, { message: "Loading product details..." }) : S || !v ? /* @__PURE__ */ O(l, {
207
+ title: "Product not found",
208
+ onRetry: w
209
+ }) : /* @__PURE__ */ k(a, {
210
+ title: v.name,
211
+ subtitle: `SKU: ${v.sku}`,
212
+ icon: /* @__PURE__ */ O(_, { size: 24 }),
213
+ headerActions: /* @__PURE__ */ k("div", {
214
+ className: "flex gap-2",
215
+ children: [/* @__PURE__ */ k(f, {
216
+ variant: "outline",
217
+ onClick: F,
218
+ children: [/* @__PURE__ */ O(m, { size: 16 }), " Back"]
219
+ }), /* @__PURE__ */ k(f, {
220
+ onClick: () => p?.(c(o, `inventory/products/${e}/edit`)),
221
+ children: [/* @__PURE__ */ O(y, { size: 16 }), " Edit"]
222
+ })]
223
+ }),
224
+ headerContent: /* @__PURE__ */ k("div", {
225
+ className: "flex gap-2",
226
+ children: [
227
+ /* @__PURE__ */ O(s, {
228
+ variant: "outline",
229
+ children: v.category
230
+ }),
231
+ v.brand && /* @__PURE__ */ O(s, {
232
+ variant: "secondary",
233
+ children: v.brand
234
+ }),
235
+ v.fragile && /* @__PURE__ */ O(s, {
236
+ variant: "destructive",
237
+ children: "Fragile"
238
+ }),
239
+ v.hazardous && /* @__PURE__ */ O(s, {
240
+ variant: "destructive",
241
+ children: "Hazardous"
242
+ }),
243
+ v.temperatureControlled && /* @__PURE__ */ O(s, {
244
+ variant: "secondary",
245
+ children: "Temp Controlled"
246
+ })
247
+ ]
248
+ }),
249
+ children: [
250
+ /* @__PURE__ */ O(M, {
251
+ icon: /* @__PURE__ */ O(_, { size: 18 }),
252
+ 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."
253
+ }),
254
+ /* @__PURE__ */ O(j, {
255
+ storageKey: "movethewheels-product-details",
256
+ steps: [{
257
+ id: "order",
258
+ label: "Add this product to an order",
259
+ description: "Include it on a new delivery.",
260
+ icon: /* @__PURE__ */ O(_, { size: 16 }),
261
+ onClick: () => I("orders/new")
262
+ }, {
263
+ id: "edit",
264
+ label: "Edit product details",
265
+ description: "Update dimensions, value or handling flags.",
266
+ icon: /* @__PURE__ */ O(N, { size: 16 }),
267
+ onClick: () => {}
268
+ }]
269
+ }),
270
+ /* @__PURE__ */ k("div", {
271
+ className: "grid grid-cols-1 lg:grid-cols-3 gap-6",
272
+ children: [/* @__PURE__ */ k("div", {
273
+ className: "lg:col-span-2 space-y-6",
274
+ children: [
275
+ /* @__PURE__ */ k(t, { children: [/* @__PURE__ */ O(i, { children: /* @__PURE__ */ O(r, { children: "Description" }) }), /* @__PURE__ */ O(n, { children: /* @__PURE__ */ O("p", { children: v.description }) })] }),
276
+ /* @__PURE__ */ k(t, { children: [/* @__PURE__ */ O(i, { children: /* @__PURE__ */ k(r, {
277
+ className: "flex items-center gap-2",
278
+ children: [/* @__PURE__ */ O(h, { size: 18 }), " Dimensions & Weight"]
279
+ }) }), /* @__PURE__ */ O(n, { children: /* @__PURE__ */ k("div", {
280
+ className: "grid grid-cols-2 md:grid-cols-4 gap-4",
281
+ children: [
282
+ /* @__PURE__ */ k("div", { children: [/* @__PURE__ */ O("p", {
283
+ className: "text-sm text-text-secondary",
284
+ children: "Length"
285
+ }), /* @__PURE__ */ k("p", {
286
+ className: "text-2xl font-bold",
287
+ children: [v.dimensions.length, /* @__PURE__ */ k("span", {
288
+ className: "text-sm font-normal",
289
+ children: [" ", v.dimensions.unit]
290
+ })]
291
+ })] }),
292
+ /* @__PURE__ */ k("div", { children: [/* @__PURE__ */ O("p", {
293
+ className: "text-sm text-text-secondary",
294
+ children: "Width"
295
+ }), /* @__PURE__ */ k("p", {
296
+ className: "text-2xl font-bold",
297
+ children: [v.dimensions.width, /* @__PURE__ */ k("span", {
298
+ className: "text-sm font-normal",
299
+ children: [" ", v.dimensions.unit]
300
+ })]
301
+ })] }),
302
+ /* @__PURE__ */ k("div", { children: [/* @__PURE__ */ O("p", {
303
+ className: "text-sm text-text-secondary",
304
+ children: "Height"
305
+ }), /* @__PURE__ */ k("p", {
306
+ className: "text-2xl font-bold",
307
+ children: [v.dimensions.height, /* @__PURE__ */ k("span", {
308
+ className: "text-sm font-normal",
309
+ children: [" ", v.dimensions.unit]
310
+ })]
311
+ })] }),
312
+ /* @__PURE__ */ k("div", { children: [/* @__PURE__ */ O("p", {
313
+ className: "text-sm text-text-secondary",
314
+ children: "Weight"
315
+ }), /* @__PURE__ */ k("p", {
316
+ className: "text-2xl font-bold",
317
+ children: [v.weight, /* @__PURE__ */ O("span", {
318
+ className: "text-sm font-normal",
319
+ children: " kg"
320
+ })]
321
+ })] })
322
+ ]
323
+ }) })] }),
324
+ v.attributes.length > 0 && /* @__PURE__ */ k(t, { children: [/* @__PURE__ */ O(i, { children: /* @__PURE__ */ k(r, {
325
+ className: "flex items-center gap-2",
326
+ children: [/* @__PURE__ */ O(N, { size: 18 }), " Attributes"]
327
+ }) }), /* @__PURE__ */ O(n, { children: /* @__PURE__ */ O("div", {
328
+ className: "grid grid-cols-2 md:grid-cols-3 gap-4",
329
+ children: v.attributes.map((e, t) => /* @__PURE__ */ k("div", { children: [/* @__PURE__ */ O("p", {
330
+ className: "text-sm text-text-secondary",
331
+ children: e.name
332
+ }), /* @__PURE__ */ O("p", {
333
+ className: "font-medium",
334
+ children: e.value
335
+ })] }, t))
336
+ }) })] })
337
+ ]
338
+ }), /* @__PURE__ */ k("div", {
339
+ className: "space-y-6",
340
+ children: [/* @__PURE__ */ k(A, { children: [
341
+ /* @__PURE__ */ k("h2", {
342
+ className: "flex items-center gap-2 text-base font-semibold text-text-primary mb-3",
343
+ children: [/* @__PURE__ */ O(g, { size: 18 }), " Pricing"]
344
+ }),
345
+ /* @__PURE__ */ O("p", {
346
+ className: "text-3xl font-bold",
347
+ children: C(v.value)
348
+ }),
349
+ /* @__PURE__ */ O("p", {
350
+ className: "text-sm text-text-secondary",
351
+ children: "Unit price"
352
+ })
353
+ ] }), /* @__PURE__ */ k(t, { children: [/* @__PURE__ */ O(i, { children: /* @__PURE__ */ O(r, { children: "Identifiers" }) }), /* @__PURE__ */ k(n, {
354
+ className: "space-y-3",
355
+ children: [/* @__PURE__ */ k("div", { children: [/* @__PURE__ */ O("p", {
356
+ className: "text-sm text-text-secondary",
357
+ children: "SKU"
358
+ }), /* @__PURE__ */ O("p", {
359
+ className: "font-mono",
360
+ children: v.sku
361
+ })] }), v.barcode && /* @__PURE__ */ k("div", { children: [/* @__PURE__ */ O("p", {
362
+ className: "text-sm text-text-secondary",
363
+ children: "Barcode"
364
+ }), /* @__PURE__ */ O("p", {
365
+ className: "font-mono",
366
+ children: v.barcode
367
+ })] })]
368
+ })] })]
369
+ })]
370
+ })
371
+ ]
372
+ }) : /* @__PURE__ */ O(P, {});
373
+ }
374
+ //#endregion
375
+ export { F as default };
@@ -1,12 +1,12 @@
1
- import { i as e, l as t, lt as n, st as r, ut as i } from "./PageLayout-h_q9l8af.js";
2
- import { t as a } from "./DataTable-Da7yHjM1.js";
3
- import { t as o } from "./download-C-yNvUiL.js";
4
- import { t as s } from "./package-D36cKFvu.js";
5
- import { t as c } from "./plus-DY5R-c1j.js";
6
- import { t as l } from "./refresh-cw-DyOLYuDU.js";
7
- import { t as u } from "./triangle-alert-CU60xaOi.js";
8
- import { a as d, i as f } from "./useInventory-BtBGnOC2.js";
9
- import { r as p, t as m } from "./MetricCard-DA5ZqAVl.js";
1
+ import { i as e, l as t, lt as n, st as r, ut as i } from "./PageLayout-j9Zw3wBN.js";
2
+ import { t as a } from "./DataTable-CmdZd6iV.js";
3
+ import { t as o } from "./download-BJonq2ty.js";
4
+ import { t as s } from "./package-UyaWiALC.js";
5
+ import { t as c } from "./plus-Bk_G-lFC.js";
6
+ import { t as l } from "./refresh-cw-C4-jecjy.js";
7
+ import { t as u } from "./triangle-alert-Dh56Yu3-.js";
8
+ import { a as d, i as f } from "./useInventory-BO7TSgq_.js";
9
+ import { r as p, t as m } from "./MetricCard-CqU5WsyW.js";
10
10
  import { n as h } from "./formatters-FWJDwTFv.js";
11
11
  import { useState as g } from "react";
12
12
  import { jsx as _, jsxs as v } from "react/jsx-runtime";
@@ -1,12 +1,12 @@
1
- import { B as e, F as t, I as n, L as r, P as i, R as a, d as o, f as s, g as c, h as l, i as u, l as d, u as f, ut as p } from "./PageLayout-h_q9l8af.js";
2
- import { t as m } from "./chevron-left-D3hcLQ1g.js";
3
- import { t as h } from "./chevron-right-BpfSrzQF.js";
4
- import { t as ee } from "./clock-DrZOQD8h.js";
5
- import { t as te } from "./download-C-yNvUiL.js";
6
- import { t as g } from "./filter-uA6govE9.js";
7
- import { t as _ } from "./plus-DY5R-c1j.js";
8
- import { n as v, o as y } from "./charts-BS_OnWc6.js";
9
- import { t as b } from "./useReports-Cx8blThR.js";
1
+ import { B as e, F as t, I as n, L as r, P as i, R as a, d as o, f as s, g as c, h as l, i as u, l as d, u as f, ut as p } from "./PageLayout-j9Zw3wBN.js";
2
+ import { t as m } from "./chevron-left-DzNxoaBG.js";
3
+ import { t as h } from "./chevron-right-CKm3ZC1T.js";
4
+ import { t as ee } from "./clock-B4-qjGuB.js";
5
+ import { t as te } from "./download-BJonq2ty.js";
6
+ import { t as g } from "./filter-B_S6WOqr.js";
7
+ import { t as _ } from "./plus-Bk_G-lFC.js";
8
+ import { n as v, o as y } from "./charts-Dv_zxP7L.js";
9
+ import { t as b } from "./useReports-hUXb8ryJ.js";
10
10
  import { r as x } from "./formatters-FWJDwTFv.js";
11
11
  import { useState as S } from "react";
12
12
  import { jsx as C, jsxs as w } from "react/jsx-runtime";