@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
@@ -1,493 +0,0 @@
1
- import { A as e, F as t, I as n, L as r, M as i, P as a, R as o, d as s, f as c, g as l, h as u, i as d, j as f, l as p, lt as m, n as h, r as g, st as _, u as v } from "./PageLayout-h_q9l8af.js";
2
- import { t as y } from "./arrow-left-XOzFvBFD.js";
3
- import { t as b } from "./box-BX4WyCLv.js";
4
- import { t as x } from "./clock-DrZOQD8h.js";
5
- import { t as S } from "./map-pin-BGbmEGn3.js";
6
- import { t as C } from "./save-h9dzHwJE.js";
7
- import { t as w } from "./square-pen-DT5srCPD.js";
8
- import { t as T } from "./users-BRV9-2nV.js";
9
- import { t as E } from "./warehouse-CmIAl0_w.js";
10
- import { o as D, t as O } from "./useInventory-BtBGnOC2.js";
11
- import { t as k } from "./FormError-CWjGwOW8.js";
12
- import { t as A } from "./formatters-FWJDwTFv.js";
13
- import { useState as j } from "react";
14
- import { useParams as M } from "react-router-dom";
15
- import { jsx as N, jsxs as P } from "react/jsx-runtime";
16
- import { EmphasisPanel as F, NextSteps as I, PagePurpose as L } from "@burdenoff/fe-libs/ui";
17
- //#region src/movethewheels/pages/WarehouseDetailsPage.tsx
18
- var R = [
19
- {
20
- value: "DISTRIBUTION",
21
- label: "Distribution"
22
- },
23
- {
24
- value: "FULFILLMENT",
25
- label: "Fulfillment"
26
- },
27
- {
28
- value: "COLD_STORAGE",
29
- label: "Cold Storage"
30
- },
31
- {
32
- value: "CROSS_DOCK",
33
- label: "Cross-Dock"
34
- },
35
- {
36
- value: "RETAIL",
37
- label: "Retail"
38
- }
39
- ];
40
- function z() {
41
- let { basePath: i, navigate: p } = _(), { createWarehouse: h } = O(), [g, b] = j({
42
- code: "",
43
- name: "",
44
- type: "DISTRIBUTION",
45
- street: "",
46
- city: "",
47
- state: "",
48
- postalCode: "",
49
- country: "USA",
50
- totalCapacity: ""
51
- }), [x, w] = j(!1), [T, D] = j(null), A = () => p?.(m(i, "inventory/warehouses")), M = (e, t) => b((n) => ({
52
- ...n,
53
- [e]: t
54
- })), I = async (e) => {
55
- if (e.preventDefault(), !g.code.trim() || !g.name.trim()) {
56
- D("Warehouse code and name are required.");
57
- return;
58
- }
59
- if (!g.street.trim() || !g.city.trim()) {
60
- D("A street and city are required for the warehouse address.");
61
- return;
62
- }
63
- w(!0), D(null);
64
- try {
65
- let e = g.totalCapacity.trim() ? Number(g.totalCapacity) : void 0, t = await h({
66
- code: g.code.trim(),
67
- name: g.name.trim(),
68
- type: g.type,
69
- address: {
70
- street: g.street.trim(),
71
- city: g.city.trim(),
72
- state: g.state.trim(),
73
- postalCode: g.postalCode.trim(),
74
- country: g.country.trim()
75
- },
76
- totalCapacity: e !== void 0 && !Number.isNaN(e) ? e : void 0
77
- });
78
- p?.(m(i, `inventory/warehouses/${t.id}`));
79
- } catch (e) {
80
- console.error("Failed to create warehouse:", e), D(e instanceof Error ? e.message : "Failed to create warehouse. Please try again."), w(!1);
81
- }
82
- };
83
- return /* @__PURE__ */ P(d, {
84
- title: "Add Warehouse",
85
- subtitle: "Register a storage and fulfilment site",
86
- icon: /* @__PURE__ */ N(E, { size: 24 }),
87
- headerActions: /* @__PURE__ */ P("div", {
88
- className: "flex gap-2",
89
- children: [/* @__PURE__ */ P(v, {
90
- variant: "outline",
91
- onClick: A,
92
- disabled: x,
93
- children: [/* @__PURE__ */ N(y, { size: 16 }), " Cancel"]
94
- }), /* @__PURE__ */ P(v, {
95
- onClick: I,
96
- disabled: x,
97
- children: [
98
- /* @__PURE__ */ N(C, { size: 16 }),
99
- " ",
100
- x ? "Saving..." : "Add Warehouse"
101
- ]
102
- })]
103
- }),
104
- children: [/* @__PURE__ */ N(L, {
105
- icon: /* @__PURE__ */ N(E, { size: 18 }),
106
- children: "Add a warehouse so you can store inventory and fulfil orders from it. A code, name, type and location get it on the network — set a total capacity to track utilization."
107
- }), /* @__PURE__ */ P("form", {
108
- onSubmit: I,
109
- className: "max-w-2xl space-y-6",
110
- children: [
111
- /* @__PURE__ */ N(k, { message: T }),
112
- /* @__PURE__ */ P(F, { children: [/* @__PURE__ */ N("h2", {
113
- className: "text-base font-semibold text-text-primary mb-4",
114
- children: "Warehouse Details"
115
- }), /* @__PURE__ */ P("div", {
116
- className: "space-y-4",
117
- children: [/* @__PURE__ */ P("div", {
118
- className: "grid grid-cols-1 md:grid-cols-3 gap-4",
119
- children: [
120
- /* @__PURE__ */ P("div", {
121
- className: "space-y-2",
122
- children: [/* @__PURE__ */ P(f, {
123
- htmlFor: "code",
124
- children: ["Code ", /* @__PURE__ */ N("span", {
125
- className: "text-status-error-text",
126
- children: "*"
127
- })]
128
- }), /* @__PURE__ */ N(e, {
129
- id: "code",
130
- value: g.code,
131
- onChange: (e) => M("code", e.target.value),
132
- placeholder: "WH-SF-01",
133
- required: !0
134
- })]
135
- }),
136
- /* @__PURE__ */ P("div", {
137
- className: "space-y-2",
138
- children: [/* @__PURE__ */ P(f, {
139
- htmlFor: "name",
140
- children: ["Name ", /* @__PURE__ */ N("span", {
141
- className: "text-status-error-text",
142
- children: "*"
143
- })]
144
- }), /* @__PURE__ */ N(e, {
145
- id: "name",
146
- value: g.name,
147
- onChange: (e) => M("name", e.target.value),
148
- placeholder: "San Francisco DC",
149
- required: !0
150
- })]
151
- }),
152
- /* @__PURE__ */ P("div", {
153
- className: "space-y-2",
154
- children: [/* @__PURE__ */ P(f, {
155
- htmlFor: "type",
156
- children: ["Type ", /* @__PURE__ */ N("span", {
157
- className: "text-status-error-text",
158
- children: "*"
159
- })]
160
- }), /* @__PURE__ */ P(a, {
161
- value: g.type,
162
- onValueChange: (e) => M("type", e),
163
- children: [/* @__PURE__ */ N(r, {
164
- id: "type",
165
- children: /* @__PURE__ */ N(o, {})
166
- }), /* @__PURE__ */ N(t, { children: R.map((e) => /* @__PURE__ */ N(n, {
167
- value: e.value,
168
- children: e.label
169
- }, e.value)) })]
170
- })]
171
- })
172
- ]
173
- }), /* @__PURE__ */ P("div", {
174
- className: "space-y-2",
175
- children: [/* @__PURE__ */ N(f, {
176
- htmlFor: "totalCapacity",
177
- children: "Total Capacity (sq ft)"
178
- }), /* @__PURE__ */ N(e, {
179
- id: "totalCapacity",
180
- type: "number",
181
- min: "0",
182
- value: g.totalCapacity,
183
- onChange: (e) => M("totalCapacity", e.target.value),
184
- placeholder: "50000"
185
- })]
186
- })]
187
- })] }),
188
- /* @__PURE__ */ P(s, { children: [/* @__PURE__ */ N(u, { children: /* @__PURE__ */ P(l, {
189
- className: "flex items-center gap-2",
190
- children: [
191
- /* @__PURE__ */ N(S, { size: 18 }),
192
- " Address ",
193
- /* @__PURE__ */ N("span", {
194
- className: "text-status-error-text",
195
- children: "*"
196
- })
197
- ]
198
- }) }), /* @__PURE__ */ P(c, {
199
- className: "space-y-4",
200
- children: [
201
- /* @__PURE__ */ P("div", {
202
- className: "space-y-2",
203
- children: [/* @__PURE__ */ N(f, {
204
- htmlFor: "street",
205
- children: "Street"
206
- }), /* @__PURE__ */ N(e, {
207
- id: "street",
208
- value: g.street,
209
- onChange: (e) => M("street", e.target.value),
210
- placeholder: "500 Industrial Way"
211
- })]
212
- }),
213
- /* @__PURE__ */ P("div", {
214
- className: "grid grid-cols-1 md:grid-cols-2 gap-4",
215
- children: [/* @__PURE__ */ P("div", {
216
- className: "space-y-2",
217
- children: [/* @__PURE__ */ N(f, {
218
- htmlFor: "city",
219
- children: "City"
220
- }), /* @__PURE__ */ N(e, {
221
- id: "city",
222
- value: g.city,
223
- onChange: (e) => M("city", e.target.value),
224
- placeholder: "San Francisco"
225
- })]
226
- }), /* @__PURE__ */ P("div", {
227
- className: "space-y-2",
228
- children: [/* @__PURE__ */ N(f, {
229
- htmlFor: "state",
230
- children: "State"
231
- }), /* @__PURE__ */ N(e, {
232
- id: "state",
233
- value: g.state,
234
- onChange: (e) => M("state", e.target.value),
235
- placeholder: "CA"
236
- })]
237
- })]
238
- }),
239
- /* @__PURE__ */ P("div", {
240
- className: "grid grid-cols-1 md:grid-cols-2 gap-4",
241
- children: [/* @__PURE__ */ P("div", {
242
- className: "space-y-2",
243
- children: [/* @__PURE__ */ N(f, {
244
- htmlFor: "postalCode",
245
- children: "ZIP / Postal Code"
246
- }), /* @__PURE__ */ N(e, {
247
- id: "postalCode",
248
- value: g.postalCode,
249
- onChange: (e) => M("postalCode", e.target.value),
250
- placeholder: "94103"
251
- })]
252
- }), /* @__PURE__ */ P("div", {
253
- className: "space-y-2",
254
- children: [/* @__PURE__ */ N(f, {
255
- htmlFor: "country",
256
- children: "Country"
257
- }), /* @__PURE__ */ N(e, {
258
- id: "country",
259
- value: g.country,
260
- onChange: (e) => M("country", e.target.value),
261
- placeholder: "USA"
262
- })]
263
- })]
264
- })
265
- ]
266
- })] })
267
- ]
268
- })]
269
- });
270
- }
271
- function B() {
272
- let { warehouseId: e } = M(), { basePath: t, navigate: n } = _(), { warehouse: r, isLoading: a, error: o, refetch: f } = D(e), C = () => n?.(m(t, "inventory/warehouses")), O = (e) => n?.(m(t, e));
273
- if (!e) return /* @__PURE__ */ N(z, {});
274
- if (a) return /* @__PURE__ */ N(g, { message: "Loading warehouse details..." });
275
- if (o || !r) return /* @__PURE__ */ N(h, {
276
- title: "Warehouse not found",
277
- onRetry: f
278
- });
279
- let k = r.capacity.usedSpace / r.capacity.totalSpace * 100;
280
- return /* @__PURE__ */ P(d, {
281
- title: r.name,
282
- subtitle: `Code: ${r.code}`,
283
- icon: /* @__PURE__ */ N(E, { size: 24 }),
284
- headerActions: /* @__PURE__ */ P("div", {
285
- className: "flex gap-2",
286
- children: [/* @__PURE__ */ P(v, {
287
- variant: "outline",
288
- onClick: C,
289
- children: [/* @__PURE__ */ N(y, { size: 16 }), " Back"]
290
- }), /* @__PURE__ */ P(v, { children: [/* @__PURE__ */ N(w, { size: 16 }), " Edit"] })]
291
- }),
292
- headerContent: /* @__PURE__ */ P("div", {
293
- className: "flex gap-2",
294
- children: [/* @__PURE__ */ N(p, {
295
- variant: r.isActive ? "default" : "secondary",
296
- children: r.isActive ? "Active" : "Inactive"
297
- }), /* @__PURE__ */ N(p, {
298
- variant: "outline",
299
- className: "capitalize",
300
- children: r.type.replace("_", " ")
301
- })]
302
- }),
303
- children: [
304
- /* @__PURE__ */ N(L, {
305
- icon: /* @__PURE__ */ N(E, { size: 18 }),
306
- children: "A storage and fulfilment site at a glance — how full it is, its zones, operating hours, throughput and staff. Use it to decide whether this warehouse has the space and hours to fulfil an order, and where stock is running tight."
307
- }),
308
- /* @__PURE__ */ N(I, {
309
- storageKey: "movethewheels-warehouse-details",
310
- steps: [{
311
- id: "inventory",
312
- label: "Review stock here",
313
- description: "See which products are stored at this site.",
314
- icon: /* @__PURE__ */ N(b, { size: 16 }),
315
- onClick: () => O("inventory/products")
316
- }, {
317
- id: "fulfil",
318
- label: "Fulfil an order from this site",
319
- description: "Pick a pending order to ship out of this warehouse.",
320
- icon: /* @__PURE__ */ N(S, { size: 16 }),
321
- onClick: () => O("orders")
322
- }]
323
- }),
324
- /* @__PURE__ */ P("div", {
325
- className: "grid grid-cols-1 lg:grid-cols-3 gap-6",
326
- children: [/* @__PURE__ */ P("div", {
327
- className: "lg:col-span-2 space-y-6",
328
- children: [
329
- /* @__PURE__ */ P(F, { children: [/* @__PURE__ */ P("h2", {
330
- className: "flex items-center gap-2 text-base font-semibold text-text-primary mb-4",
331
- children: [/* @__PURE__ */ N(b, { size: 18 }), " Capacity"]
332
- }), /* @__PURE__ */ P("div", {
333
- className: "space-y-4",
334
- children: [/* @__PURE__ */ P("div", { children: [
335
- /* @__PURE__ */ P("div", {
336
- className: "flex justify-between text-sm mb-2",
337
- children: [/* @__PURE__ */ N("span", { children: "Space Utilization" }), /* @__PURE__ */ P("span", { children: [k.toFixed(0), "%"] })]
338
- }),
339
- /* @__PURE__ */ N(i, { value: k }),
340
- /* @__PURE__ */ P("p", {
341
- className: "text-sm text-text-secondary mt-1",
342
- children: [
343
- r.capacity.usedSpace.toLocaleString(),
344
- " /",
345
- " ",
346
- r.capacity.totalSpace.toLocaleString(),
347
- " sq ft"
348
- ]
349
- })
350
- ] }), /* @__PURE__ */ N("div", {
351
- className: "grid grid-cols-1 sm:grid-cols-2 gap-4",
352
- children: /* @__PURE__ */ P("div", { children: [/* @__PURE__ */ N("p", {
353
- className: "text-sm text-text-secondary",
354
- children: "Pallets Used"
355
- }), /* @__PURE__ */ P("p", {
356
- className: "text-2xl font-bold",
357
- children: [r.capacity.usedPallets, /* @__PURE__ */ P("span", {
358
- className: "text-sm font-normal text-text-secondary",
359
- children: [
360
- " ",
361
- "/ ",
362
- r.capacity.totalPallets
363
- ]
364
- })]
365
- })] })
366
- })]
367
- })] }),
368
- /* @__PURE__ */ P(s, { children: [/* @__PURE__ */ N(u, { children: /* @__PURE__ */ P(l, { children: [
369
- "Zones (",
370
- r.zones.length,
371
- ")"
372
- ] }) }), /* @__PURE__ */ N(c, { children: /* @__PURE__ */ N("div", {
373
- className: "space-y-3",
374
- children: r.zones.map((e) => /* @__PURE__ */ P("div", {
375
- className: "flex items-center justify-between p-3 border rounded-lg",
376
- children: [/* @__PURE__ */ P("div", { children: [/* @__PURE__ */ N("p", {
377
- className: "font-medium",
378
- children: e.name
379
- }), /* @__PURE__ */ P("p", {
380
- className: "text-sm text-text-secondary capitalize",
381
- children: [
382
- e.type,
383
- " - ",
384
- e.location
385
- ]
386
- })] }), /* @__PURE__ */ P("div", {
387
- className: "text-right",
388
- children: [/* @__PURE__ */ N(i, {
389
- value: e.currentOccupancy / e.capacity * 100,
390
- className: "w-24 h-2"
391
- }), /* @__PURE__ */ P("p", {
392
- className: "text-sm text-text-secondary",
393
- children: [
394
- e.currentOccupancy,
395
- " / ",
396
- e.capacity
397
- ]
398
- })]
399
- })]
400
- }, e.id))
401
- }) })] }),
402
- /* @__PURE__ */ P(s, { children: [/* @__PURE__ */ N(u, { children: /* @__PURE__ */ P(l, {
403
- className: "flex items-center gap-2",
404
- children: [/* @__PURE__ */ N(x, { size: 18 }), " Operating Hours"]
405
- }) }), /* @__PURE__ */ N(c, { children: /* @__PURE__ */ N("div", {
406
- className: "grid grid-cols-2 md:grid-cols-4 gap-4",
407
- children: Object.entries(r.operatingHours).map(([e, t]) => /* @__PURE__ */ P("div", { children: [/* @__PURE__ */ N("p", {
408
- className: "text-sm font-medium",
409
- children: e
410
- }), /* @__PURE__ */ N("p", {
411
- className: "text-sm text-text-secondary",
412
- children: t ? `${t.open} - ${t.close}` : "Closed"
413
- })] }, e))
414
- }) })] })
415
- ]
416
- }), /* @__PURE__ */ P("div", {
417
- className: "space-y-6",
418
- children: [
419
- /* @__PURE__ */ P(s, { children: [/* @__PURE__ */ N(u, { children: /* @__PURE__ */ P(l, {
420
- className: "flex items-center gap-2",
421
- children: [/* @__PURE__ */ N(S, { size: 18 }), " Location"]
422
- }) }), /* @__PURE__ */ N(c, { children: /* @__PURE__ */ N("p", {
423
- className: "text-sm",
424
- children: A(r.address)
425
- }) })] }),
426
- /* @__PURE__ */ P(s, { children: [/* @__PURE__ */ N(u, { children: /* @__PURE__ */ N(l, { children: "Metrics" }) }), /* @__PURE__ */ P(c, {
427
- className: "space-y-3",
428
- children: [
429
- /* @__PURE__ */ P("div", { children: [/* @__PURE__ */ N("p", {
430
- className: "text-sm text-text-secondary",
431
- children: "Throughput"
432
- }), /* @__PURE__ */ P("p", {
433
- className: "text-2xl font-bold",
434
- children: [r.metrics.throughput, /* @__PURE__ */ N("span", {
435
- className: "text-sm font-normal",
436
- children: " orders/day"
437
- })]
438
- })] }),
439
- /* @__PURE__ */ P("div", { children: [/* @__PURE__ */ N("p", {
440
- className: "text-sm text-text-secondary",
441
- children: "Accuracy"
442
- }), /* @__PURE__ */ P("p", {
443
- className: "text-2xl font-bold",
444
- children: [r.metrics.accuracy, "%"]
445
- })] }),
446
- /* @__PURE__ */ P("div", { children: [/* @__PURE__ */ N("p", {
447
- className: "text-sm text-text-secondary",
448
- children: "Productivity"
449
- }), /* @__PURE__ */ P("p", {
450
- className: "text-2xl font-bold",
451
- children: [r.metrics.productivity, "%"]
452
- })] }),
453
- /* @__PURE__ */ P("div", { children: [/* @__PURE__ */ N("p", {
454
- className: "text-sm text-text-secondary",
455
- children: "Orders Fulfilled"
456
- }), /* @__PURE__ */ N("p", {
457
- className: "text-2xl font-bold",
458
- children: r.metrics.ordersFulfilled.toLocaleString()
459
- })] })
460
- ]
461
- })] }),
462
- /* @__PURE__ */ P(s, { children: [/* @__PURE__ */ N(u, { children: /* @__PURE__ */ P(l, {
463
- className: "flex items-center gap-2",
464
- children: [
465
- /* @__PURE__ */ N(T, { size: 18 }),
466
- " Staff (",
467
- r.staff.length,
468
- ")"
469
- ]
470
- }) }), /* @__PURE__ */ N(c, { children: r.staff.length > 0 ? /* @__PURE__ */ N("div", {
471
- className: "space-y-2",
472
- children: r.staff.map((e, t) => /* @__PURE__ */ P("div", {
473
- className: "flex items-center justify-between p-2 border rounded",
474
- children: [/* @__PURE__ */ N("span", {
475
- className: "text-sm capitalize",
476
- children: e.role
477
- }), /* @__PURE__ */ N(p, {
478
- variant: "outline",
479
- children: e.shift
480
- })]
481
- }, t))
482
- }) : /* @__PURE__ */ N("p", {
483
- className: "text-text-secondary",
484
- children: "No staff assigned"
485
- }) })] })
486
- ]
487
- })]
488
- })
489
- ]
490
- });
491
- }
492
- //#endregion
493
- export { B as default };