@burdenoff/microfe-movethewheels 2026.626.2 → 2026.703.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.
- package/dist/{AIAssistantPage-AvsMbunM.js → AIAssistantPage-C3ovZ0Fh.js} +100 -73
- package/dist/AnalyticsPage-O8SpY-V4.js +215 -0
- package/dist/{CreateOrderPage-CjlnEtk3.js → CreateOrderPage-CB1_-_mN.js} +33 -35
- package/dist/{CustomerDetailsPage-I6cdDHUi.js → CustomerDetailsPage-BaeKEI1D.js} +42 -44
- package/dist/{CustomersPage-CGGfD4ki.js → CustomersPage-DRaLuHMC.js} +26 -28
- package/dist/{DashboardPage-D2HRqwg9.js → DashboardPage-DPjhNfKB.js} +85 -83
- package/dist/{DataTable-CD9ZhpLB.js → DataTable-DmciIKKM.js} +3 -3
- package/dist/{DriverDetailsPage-rg_pGNuP.js → DriverDetailsPage-CSSQTOzn.js} +52 -54
- package/dist/{DriversPage-DKiynISH.js → DriversPage-C2Bk0w4Q.js} +24 -26
- package/dist/{FinancePage-Vg8WPs38.js → FinancePage-lmp0Sdsw.js} +9 -9
- package/dist/FleetPage-DZn5pIqd.js +365 -0
- package/dist/ImportExportPage-BIUJZc7O.js +290 -0
- package/dist/InventoryPage-Cxh1zYJd.js +253 -0
- package/dist/{LiveTrackingPage-DQ1q4Id3.js → LiveTrackingPage-BY1yAkIt.js} +60 -56
- package/dist/MarketplacePage-RMuL17EA.js +247 -0
- package/dist/{MetricCard-B7yMyvMX.js → MetricCard-7aYgzZHK.js} +1 -1
- package/dist/{OrderDetailsPage-CFASgsYX.js → OrderDetailsPage-C2Mf4KSy.js} +83 -85
- package/dist/{OrdersListPage-BHeT8S5o.js → OrdersListPage-BrPBtnhp.js} +31 -33
- package/dist/{PageLayout-D3N8MCTm.js → PageLayout-D4LDHJJq.js} +483 -422
- package/dist/{ProductDetailsPage-CFGcbaHo.js → ProductDetailsPage-CezzzZcj.js} +27 -29
- package/dist/{ProductsPage--xEpbQ8A.js → ProductsPage-I5DilIoY.js} +21 -23
- package/dist/ReportsPage-BDXNmUng.js +284 -0
- package/dist/RouteDetailsPage-BcomL20M.js +263 -0
- package/dist/RoutesPage-lqX9ylHP.js +144 -0
- package/dist/SettingsPage-CQVIOaNs.js +421 -0
- package/dist/StatusBadge-NpTeHVlw.js +152 -0
- package/dist/{TrackingPage-CcRc_dva.js → TrackingPage-BXrjz7V8.js} +59 -61
- package/dist/{VehicleDetailsPage-3YDMPsPs.js → VehicleDetailsPage-DZjLcJgr.js} +40 -42
- package/dist/{VehiclesPage-UlxPWP9K.js → VehiclesPage-6W39XT5W.js} +19 -21
- package/dist/{WarehouseDetailsPage-Db7KeN-d.js → WarehouseDetailsPage-C10pgRGW.js} +38 -40
- package/dist/{WarehousesPage-CuTO-OPp.js → WarehousesPage-CHvBqNaQ.js} +15 -17
- package/dist/{arrow-left-CBpZKkpq.js → arrow-left-n48Y-Wis.js} +1 -1
- package/dist/{box-CAaiElsb.js → box-D9Pal4HM.js} +1 -1
- package/dist/{chart-column-D1Ym15-S.js → chart-column-BFIJysDR.js} +1 -1
- package/dist/{chevron-right-BIFGi0UA.js → chevron-right-EMIIyyJ1.js} +1 -1
- package/dist/{circle-alert-DjmNo5_L.js → circle-alert-iY24lSlp.js} +1 -1
- package/dist/{circle-check-big-CjuPVo3_.js → circle-check-big-w0TrLKMF.js} +1 -1
- package/dist/{clock-BjkdnddD.js → clock-DJZtdl8u.js} +1 -1
- package/dist/{dollar-sign-IB4O0wuQ.js → dollar-sign-CgKQRz_e.js} +1 -1
- package/dist/{download-Dpa9vqoG.js → download-DRXxoiQR.js} +1 -1
- package/dist/{file-text-C8Uioy11.js → file-text-DWWY6_f5.js} +1 -1
- package/dist/{filter-Da5OZaHI.js → filter-DloLC2eE.js} +1 -1
- package/dist/index.js +119 -111
- package/dist/{map-_Per4sT9.js → map-CkJaULb2.js} +1 -1
- package/dist/{map-pin-BSaf5IDL.js → map-pin-BGiCvyCs.js} +1 -1
- package/dist/{navigation-DaTbrhw2.js → navigation-D36prnAn.js} +1 -1
- package/dist/{package-BE7U0wQE.js → package-BChUzpJS.js} +1 -1
- package/dist/{phone-DV4StZiA.js → phone-Ac9s3mo_.js} +1 -1
- package/dist/{plus-Dl1rLeJR.js → plus-Z76q-FZm.js} +1 -1
- package/dist/{refresh-cw-CWfERAit.js → refresh-cw-DKt6f5T6.js} +1 -1
- package/dist/{save-XH8vydOn.js → save-CojywNhG.js} +1 -1
- package/dist/{search-OxoIiL_C.js → search-CDGefqb3.js} +1 -1
- package/dist/{square-pen-hLIbFQFV.js → square-pen-CopE9GmB.js} +1 -1
- package/dist/{star-YsVV3MNQ.js → star-nHlLjDKR.js} +1 -1
- package/dist/{store-RCBl7HB-.js → store-BR9Voi5E.js} +1 -1
- package/dist/{trending-up-C-85AwGT.js → trending-up-B7W-GL6P.js} +1 -1
- package/dist/{triangle-alert-BOhfGgmh.js → triangle-alert-BonHFFNz.js} +1 -1
- package/dist/{truck-CtDjNFbi.js → truck-DrlfSpRC.js} +1 -1
- package/dist/{useAnalytics-ph7eTIK6.js → useAnalytics-CgdzUfY_.js} +40 -40
- package/dist/useAssistant-D4v3oxD3.js +84 -0
- package/dist/{useCustomers-bS3a4ytk.js → useCustomers-QrlozybF.js} +24 -24
- package/dist/{useFleet-BdETplNE.js → useFleet-DiAC-IiH.js} +70 -67
- package/dist/useImportExport-BLMnAKCC.js +55 -0
- package/dist/{useInventory-Dwn18FPz.js → useInventory-DKoks37x.js} +33 -33
- package/dist/{useOrders-D_3_hGMp.js → useOrders-D3UZVy8Y.js} +42 -42
- package/dist/useReports-Puq4DCH9.js +78 -0
- package/dist/{useRoutes-v4aBaS-E.js → useRoutes-Do57LvRb.js} +31 -31
- package/dist/useSettings-CkDH_-gM.js +81 -0
- package/dist/{useTracking-De2KIUNu.js → useTracking-GJify4HN.js} +22 -22
- package/dist/{user-Dz5TJZFs.js → user-CjSoudeu.js} +1 -1
- package/dist/{users-g2N0eL-Z.js → users-BAM4gHTn.js} +1 -1
- package/dist/{warehouse-D3WWDeTX.js → warehouse-C7MSr47B.js} +1 -1
- package/dist/{wrench-CmxY1n4I.js → wrench-CANXWxF-.js} +1 -1
- package/package.json +1 -1
- package/src/movethewheels/MoveTheWheelsRoutes.tsx +27 -3
- package/src/movethewheels/components/StatusBadge.tsx +18 -37
- package/src/movethewheels/constants/index.ts +67 -26
- package/src/movethewheels/hooks/index.ts +12 -0
- package/src/movethewheels/hooks/useAnalytics.ts +20 -6
- package/src/movethewheels/hooks/useAssistant.ts +74 -0
- package/src/movethewheels/hooks/useFleet.ts +63 -59
- package/src/movethewheels/hooks/useImportExport.ts +101 -0
- package/src/movethewheels/hooks/useReports.ts +158 -0
- package/src/movethewheels/hooks/useSettings.ts +120 -0
- package/src/movethewheels/pages/AIAssistantPage.tsx +53 -15
- package/src/movethewheels/pages/AnalyticsPage.tsx +67 -64
- package/src/movethewheels/pages/CustomerDetailsPage.tsx +1 -1
- package/src/movethewheels/pages/CustomersPage.tsx +1 -1
- package/src/movethewheels/pages/DashboardPage.tsx +42 -22
- package/src/movethewheels/pages/DriverDetailsPage.tsx +1 -1
- package/src/movethewheels/pages/DriversPage.tsx +1 -1
- package/src/movethewheels/pages/FleetPage.tsx +96 -38
- package/src/movethewheels/pages/ImportExportPage.tsx +174 -68
- package/src/movethewheels/pages/InventoryPage.tsx +66 -28
- package/src/movethewheels/pages/LiveTrackingPage.tsx +12 -3
- package/src/movethewheels/pages/MarketplacePage.tsx +87 -45
- package/src/movethewheels/pages/OrderDetailsPage.tsx +2 -2
- package/src/movethewheels/pages/ReportsPage.tsx +194 -90
- package/src/movethewheels/pages/RouteDetailsPage.tsx +5 -11
- package/src/movethewheels/pages/RoutesPage.tsx +4 -9
- package/src/movethewheels/pages/SettingsPage.tsx +234 -56
- package/src/movethewheels/pages/TrackingPage.tsx +6 -6
- package/src/movethewheels/providers/MoveTheWheelsProvider.tsx +7 -6
- package/src/movethewheels/store/movethewheelsStore.ts +1 -1
- package/dist/AnalyticsPage-CCLfHgQZ.js +0 -212
- package/dist/FleetPage-DddXt8r8.js +0 -332
- package/dist/ImportExportPage-BW6qO3kc.js +0 -248
- package/dist/InventoryPage-rMGuaJN-.js +0 -222
- package/dist/MarketplacePage-DKrXAv62.js +0 -219
- package/dist/ReportsPage-Bb7_90rK.js +0 -235
- package/dist/RouteDetailsPage-CVtDVb1N.js +0 -282
- package/dist/RoutesPage-s57PtgcQ.js +0 -163
- package/dist/SettingsPage-BYNCBOpN.js +0 -298
- package/dist/StatusBadge-CijYQXtb.js +0 -209
- package/dist/graphqlClient-CdJyR_ed.js +0 -55
- package/dist/navigation-BgnOfsVd.js +0 -6
- package/dist/route-Dp9JiN_E.js +0 -51
- package/dist/settings-3Rw5NwFF.js +0 -28
- package/src/movethewheels/constants/mockData.ts +0 -1342
- /package/dist/{formatters-_vJlC-47.js → formatters-DhKZ-eA1.js} +0 -0
|
@@ -1,20 +1,18 @@
|
|
|
1
|
-
import { A as e, F as t, I as n, L as r, P as i, Q as a, R as o,
|
|
2
|
-
import { t as
|
|
3
|
-
import { t as
|
|
4
|
-
import { t as
|
|
5
|
-
import { t as
|
|
6
|
-
import { t as
|
|
7
|
-
import { t as
|
|
8
|
-
import { r as
|
|
9
|
-
import { r as
|
|
10
|
-
import { r as E } from "./useCustomers-bS3a4ytk.js";
|
|
11
|
-
import { t as D } from "./navigation-BgnOfsVd.js";
|
|
1
|
+
import { A as e, F as t, I as n, L as r, P as i, Q as a, R as o, ct as s, d as c, f as l, g as u, h as d, i as f, j as p, lt as m, ot as h, t as g, u as _, z as v } from "./PageLayout-D4LDHJJq.js";
|
|
2
|
+
import { t as y } from "./arrow-left-n48Y-Wis.js";
|
|
3
|
+
import { t as b } from "./map-pin-BGiCvyCs.js";
|
|
4
|
+
import { t as x } from "./package-BChUzpJS.js";
|
|
5
|
+
import { t as S } from "./plus-Z76q-FZm.js";
|
|
6
|
+
import { t as C } from "./save-CojywNhG.js";
|
|
7
|
+
import { t as w } from "./users-BAM4gHTn.js";
|
|
8
|
+
import { r as T, t as E } from "./useOrders-D3UZVy8Y.js";
|
|
9
|
+
import { r as D } from "./useCustomers-QrlozybF.js";
|
|
12
10
|
import { useState as O } from "react";
|
|
13
11
|
import { useParams as k } from "react-router-dom";
|
|
14
12
|
import { jsx as A, jsxs as j } from "react/jsx-runtime";
|
|
15
13
|
import { EmphasisPanel as M, NextSteps as N, PagePurpose as P } from "@burdenoff/fe-libs/ui";
|
|
16
14
|
//#region node_modules/lucide-react/dist/esm/icons/trash-2.js
|
|
17
|
-
var F =
|
|
15
|
+
var F = m("Trash2", [
|
|
18
16
|
["path", {
|
|
19
17
|
d: "M3 6h18",
|
|
20
18
|
key: "d0wm0j"
|
|
@@ -45,7 +43,7 @@ var F = f("Trash2", [
|
|
|
45
43
|
//#endregion
|
|
46
44
|
//#region src/movethewheels/pages/CreateOrderPage.tsx
|
|
47
45
|
function I() {
|
|
48
|
-
let { orderId:
|
|
46
|
+
let { orderId: m } = k(), { basePath: I, navigate: L } = h(), { order: R } = E(m), { createOrder: z } = T(), { customers: B } = D({ limit: 100 }), V = !!m && !!R, [H, U] = O({
|
|
49
47
|
customerId: R?.customerId || "",
|
|
50
48
|
orderType: R?.orderType || "b2c",
|
|
51
49
|
priority: R?.priority || "normal",
|
|
@@ -66,7 +64,7 @@ function I() {
|
|
|
66
64
|
items: R?.items || [],
|
|
67
65
|
specialInstructions: R?.specialInstructions || ""
|
|
68
66
|
}), [W, G] = O(!1), K = () => {
|
|
69
|
-
L && L(
|
|
67
|
+
L && L(s(I, "orders"));
|
|
70
68
|
}, q = async (e) => {
|
|
71
69
|
e.preventDefault(), G(!0);
|
|
72
70
|
try {
|
|
@@ -141,25 +139,25 @@ function I() {
|
|
|
141
139
|
} : r)
|
|
142
140
|
}));
|
|
143
141
|
};
|
|
144
|
-
return /* @__PURE__ */ j(
|
|
142
|
+
return /* @__PURE__ */ j(f, {
|
|
145
143
|
title: V ? "Edit Order" : "Create Order",
|
|
146
144
|
subtitle: V ? `Editing ${R?.orderNumber}` : "Create a new delivery order",
|
|
147
|
-
icon: /* @__PURE__ */ A(
|
|
145
|
+
icon: /* @__PURE__ */ A(x, { size: 24 }),
|
|
148
146
|
headerActions: /* @__PURE__ */ j("div", {
|
|
149
147
|
className: "flex gap-2",
|
|
150
|
-
children: [/* @__PURE__ */ j(
|
|
148
|
+
children: [/* @__PURE__ */ j(_, {
|
|
151
149
|
variant: "outline",
|
|
152
150
|
onClick: K,
|
|
153
|
-
children: [/* @__PURE__ */ A(
|
|
154
|
-
}), /* @__PURE__ */ j(
|
|
151
|
+
children: [/* @__PURE__ */ A(y, { size: 16 }), "Cancel"]
|
|
152
|
+
}), /* @__PURE__ */ j(_, {
|
|
155
153
|
onClick: q,
|
|
156
154
|
disabled: W,
|
|
157
|
-
children: [/* @__PURE__ */ A(
|
|
155
|
+
children: [/* @__PURE__ */ A(C, { size: 16 }), W ? "Saving..." : V ? "Save Changes" : "Create Order"]
|
|
158
156
|
})]
|
|
159
157
|
}),
|
|
160
158
|
children: [
|
|
161
159
|
/* @__PURE__ */ A(P, {
|
|
162
|
-
icon: /* @__PURE__ */ A(
|
|
160
|
+
icon: /* @__PURE__ */ A(x, { size: 18 }),
|
|
163
161
|
children: V ? "Update this delivery before it goes out — change the customer, addresses, items or handling notes, then save." : "Book a new delivery in a few steps: choose who it’s for, set pickup and drop-off addresses, list what’s being shipped, and add any handling notes. Once created it joins the orders pipeline ready to assign and track."
|
|
164
162
|
}),
|
|
165
163
|
/* @__PURE__ */ A(N, {
|
|
@@ -169,7 +167,7 @@ function I() {
|
|
|
169
167
|
id: "customer",
|
|
170
168
|
label: "Pick the customer first",
|
|
171
169
|
description: "Their saved contact details auto-fill the order.",
|
|
172
|
-
icon: /* @__PURE__ */ A(
|
|
170
|
+
icon: /* @__PURE__ */ A(w, { size: 16 }),
|
|
173
171
|
done: !!H.customerId,
|
|
174
172
|
onClick: () => document.getElementById("customer")?.focus()
|
|
175
173
|
},
|
|
@@ -177,7 +175,7 @@ function I() {
|
|
|
177
175
|
id: "addresses",
|
|
178
176
|
label: "Set pickup & delivery addresses",
|
|
179
177
|
description: "Where the shipment is collected and dropped off.",
|
|
180
|
-
icon: /* @__PURE__ */ A(
|
|
178
|
+
icon: /* @__PURE__ */ A(b, { size: 16 }),
|
|
181
179
|
done: !!H.pickupAddress.street && !!H.deliveryAddress.street,
|
|
182
180
|
onClick: () => document.getElementById("pickupStreet")?.focus()
|
|
183
181
|
},
|
|
@@ -185,7 +183,7 @@ function I() {
|
|
|
185
183
|
id: "items",
|
|
186
184
|
label: "Add the items to ship",
|
|
187
185
|
description: "List each product with its quantity and value.",
|
|
188
|
-
icon: /* @__PURE__ */ A(
|
|
186
|
+
icon: /* @__PURE__ */ A(x, { size: 16 }),
|
|
189
187
|
done: H.items.length > 0,
|
|
190
188
|
onClick: X
|
|
191
189
|
}
|
|
@@ -281,7 +279,7 @@ function I() {
|
|
|
281
279
|
})] }),
|
|
282
280
|
/* @__PURE__ */ j("div", {
|
|
283
281
|
className: "grid grid-cols-1 md:grid-cols-2 gap-6",
|
|
284
|
-
children: [/* @__PURE__ */ j(
|
|
282
|
+
children: [/* @__PURE__ */ j(c, { children: [/* @__PURE__ */ A(d, { children: /* @__PURE__ */ A(u, { children: "Pickup Address" }) }), /* @__PURE__ */ j(l, {
|
|
285
283
|
className: "space-y-4",
|
|
286
284
|
children: [
|
|
287
285
|
/* @__PURE__ */ j("div", {
|
|
@@ -349,7 +347,7 @@ function I() {
|
|
|
349
347
|
})]
|
|
350
348
|
})
|
|
351
349
|
]
|
|
352
|
-
})] }), /* @__PURE__ */ j(
|
|
350
|
+
})] }), /* @__PURE__ */ j(c, { children: [/* @__PURE__ */ A(d, { children: /* @__PURE__ */ A(u, { children: "Delivery Address" }) }), /* @__PURE__ */ j(l, {
|
|
353
351
|
className: "space-y-4",
|
|
354
352
|
children: [
|
|
355
353
|
/* @__PURE__ */ j("div", {
|
|
@@ -419,31 +417,31 @@ function I() {
|
|
|
419
417
|
]
|
|
420
418
|
})] })]
|
|
421
419
|
}),
|
|
422
|
-
/* @__PURE__ */ j(
|
|
420
|
+
/* @__PURE__ */ j(c, { children: [/* @__PURE__ */ j(d, {
|
|
423
421
|
className: "flex flex-row items-center justify-between",
|
|
424
|
-
children: [/* @__PURE__ */ A(
|
|
422
|
+
children: [/* @__PURE__ */ A(u, { children: "Order Items" }), /* @__PURE__ */ j(_, {
|
|
425
423
|
type: "button",
|
|
426
424
|
variant: "outline",
|
|
427
425
|
size: "sm",
|
|
428
426
|
onClick: X,
|
|
429
|
-
children: [/* @__PURE__ */ A(
|
|
427
|
+
children: [/* @__PURE__ */ A(S, { size: 16 }), "Add Item"]
|
|
430
428
|
})]
|
|
431
|
-
}), /* @__PURE__ */ A(
|
|
429
|
+
}), /* @__PURE__ */ A(l, { children: H.items.length === 0 ? /* @__PURE__ */ A(g, {
|
|
432
430
|
illustration: "empty-files",
|
|
433
431
|
title: "No items added yet",
|
|
434
432
|
description: "Add the products this order will ship — each with a name, SKU, quantity and value.",
|
|
435
|
-
action: /* @__PURE__ */ j(
|
|
433
|
+
action: /* @__PURE__ */ j(_, {
|
|
436
434
|
type: "button",
|
|
437
435
|
variant: "outline",
|
|
438
436
|
onClick: X,
|
|
439
|
-
children: [/* @__PURE__ */ A(
|
|
437
|
+
children: [/* @__PURE__ */ A(S, {
|
|
440
438
|
size: 16,
|
|
441
439
|
className: "mr-1.5"
|
|
442
440
|
}), "Add your first item"]
|
|
443
441
|
})
|
|
444
442
|
}) : /* @__PURE__ */ A("div", {
|
|
445
443
|
className: "space-y-4",
|
|
446
|
-
children: H.items.map((t, n) => /* @__PURE__ */ j("div", { children: [n > 0 && /* @__PURE__ */ A(
|
|
444
|
+
children: H.items.map((t, n) => /* @__PURE__ */ j("div", { children: [n > 0 && /* @__PURE__ */ A(v, { className: "my-4" }), /* @__PURE__ */ j("div", {
|
|
447
445
|
className: "grid grid-cols-1 md:grid-cols-6 gap-4",
|
|
448
446
|
children: [
|
|
449
447
|
/* @__PURE__ */ j("div", {
|
|
@@ -483,7 +481,7 @@ function I() {
|
|
|
483
481
|
}),
|
|
484
482
|
/* @__PURE__ */ A("div", {
|
|
485
483
|
className: "flex items-end",
|
|
486
|
-
children: /* @__PURE__ */ A(
|
|
484
|
+
children: /* @__PURE__ */ A(_, {
|
|
487
485
|
type: "button",
|
|
488
486
|
variant: "ghost",
|
|
489
487
|
size: "icon",
|
|
@@ -495,7 +493,7 @@ function I() {
|
|
|
495
493
|
]
|
|
496
494
|
})] }, t.id))
|
|
497
495
|
}) })] }),
|
|
498
|
-
/* @__PURE__ */ j(
|
|
496
|
+
/* @__PURE__ */ j(c, { children: [/* @__PURE__ */ A(d, { children: /* @__PURE__ */ A(u, { children: "Special Instructions" }) }), /* @__PURE__ */ A(l, { children: /* @__PURE__ */ A(a, {
|
|
499
497
|
value: H.specialInstructions,
|
|
500
498
|
onChange: (e) => J("specialInstructions", e.target.value),
|
|
501
499
|
placeholder: "Any special handling or delivery instructions...",
|
|
@@ -1,21 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as
|
|
3
|
-
import { t as
|
|
4
|
-
import { n as
|
|
5
|
-
import { t as
|
|
6
|
-
import { t as
|
|
7
|
-
import { t as
|
|
8
|
-
import { t as
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import { r as x, t as S } from "./formatters-_vJlC-47.js";
|
|
13
|
-
import { t as C } from "./navigation-BgnOfsVd.js";
|
|
1
|
+
import { ct as e, d as t, f as n, g as r, h as i, i as a, l as o, lt as s, n as c, ot as l, r as u, u as d } from "./PageLayout-D4LDHJJq.js";
|
|
2
|
+
import { t as f } from "./arrow-left-n48Y-Wis.js";
|
|
3
|
+
import { t as p } from "./file-text-DWWY6_f5.js";
|
|
4
|
+
import { n as m, t as h } from "./phone-Ac9s3mo_.js";
|
|
5
|
+
import { t as g } from "./map-pin-BGiCvyCs.js";
|
|
6
|
+
import { t as _ } from "./square-pen-CopE9GmB.js";
|
|
7
|
+
import { t as v } from "./star-nHlLjDKR.js";
|
|
8
|
+
import { t as y } from "./users-BAM4gHTn.js";
|
|
9
|
+
import { t as b } from "./useCustomers-QrlozybF.js";
|
|
10
|
+
import { i as x } from "./StatusBadge-NpTeHVlw.js";
|
|
11
|
+
import { r as S, t as C } from "./formatters-DhKZ-eA1.js";
|
|
14
12
|
import { useParams as w } from "react-router-dom";
|
|
15
13
|
import { jsx as T, jsxs as E } from "react/jsx-runtime";
|
|
16
14
|
import { EmphasisPanel as D, NextSteps as O, PagePurpose as k } from "@burdenoff/fe-libs/ui";
|
|
17
15
|
//#region node_modules/lucide-react/dist/esm/icons/building.js
|
|
18
|
-
var A =
|
|
16
|
+
var A = s("Building", [
|
|
19
17
|
["rect", {
|
|
20
18
|
width: "16",
|
|
21
19
|
height: "20",
|
|
@@ -69,35 +67,35 @@ var A = a("Building", [
|
|
|
69
67
|
//#endregion
|
|
70
68
|
//#region src/movethewheels/pages/CustomerDetailsPage.tsx
|
|
71
69
|
function j() {
|
|
72
|
-
let { customerId:
|
|
73
|
-
return
|
|
70
|
+
let { customerId: s } = w(), { basePath: j, navigate: M } = l(), { customer: N, isLoading: P, error: F, refetch: I } = b(s), L = () => M?.(e(j, "customers")), R = (t) => M?.(e(j, t));
|
|
71
|
+
return s ? P ? /* @__PURE__ */ T(u, { message: "Loading customer details..." }) : F || !N ? /* @__PURE__ */ T(c, {
|
|
74
72
|
title: "Customer not found",
|
|
75
73
|
onRetry: I
|
|
76
|
-
}) : /* @__PURE__ */ E(
|
|
74
|
+
}) : /* @__PURE__ */ E(a, {
|
|
77
75
|
title: N.name,
|
|
78
76
|
subtitle: N.company || N.email,
|
|
79
|
-
icon: /* @__PURE__ */ T(
|
|
77
|
+
icon: /* @__PURE__ */ T(y, { size: 24 }),
|
|
80
78
|
headerActions: /* @__PURE__ */ E("div", {
|
|
81
79
|
className: "flex gap-2",
|
|
82
|
-
children: [/* @__PURE__ */ E(
|
|
80
|
+
children: [/* @__PURE__ */ E(d, {
|
|
83
81
|
variant: "outline",
|
|
84
82
|
onClick: L,
|
|
85
|
-
children: [/* @__PURE__ */ T(
|
|
86
|
-
}), /* @__PURE__ */ E(
|
|
83
|
+
children: [/* @__PURE__ */ T(f, { size: 16 }), " Back"]
|
|
84
|
+
}), /* @__PURE__ */ E(d, { children: [/* @__PURE__ */ T(_, { size: 16 }), " Edit"] })]
|
|
87
85
|
}),
|
|
88
86
|
headerContent: /* @__PURE__ */ E("div", {
|
|
89
87
|
className: "flex items-center gap-4",
|
|
90
88
|
children: [
|
|
91
|
-
/* @__PURE__ */ T(
|
|
89
|
+
/* @__PURE__ */ T(x, { type: N.type }),
|
|
92
90
|
/* @__PURE__ */ T(o, {
|
|
93
91
|
variant: N.isActive ? "default" : "secondary",
|
|
94
92
|
children: N.isActive ? "Active" : "Inactive"
|
|
95
93
|
}),
|
|
96
94
|
/* @__PURE__ */ E("div", {
|
|
97
95
|
className: "flex items-center gap-1",
|
|
98
|
-
children: [/* @__PURE__ */ T(
|
|
96
|
+
children: [/* @__PURE__ */ T(v, {
|
|
99
97
|
size: 16,
|
|
100
|
-
className: "text-
|
|
98
|
+
className: "text-status-warning-text fill-current"
|
|
101
99
|
}), /* @__PURE__ */ T("span", {
|
|
102
100
|
className: "font-medium",
|
|
103
101
|
children: N.rating.toFixed(1)
|
|
@@ -107,7 +105,7 @@ function j() {
|
|
|
107
105
|
}),
|
|
108
106
|
children: [
|
|
109
107
|
/* @__PURE__ */ T(k, {
|
|
110
|
-
icon: /* @__PURE__ */ T(
|
|
108
|
+
icon: /* @__PURE__ */ T(y, { size: 18 }),
|
|
111
109
|
children: "Everything you know about this customer — how to reach them, where they are, and their account standing. Use it to confirm contact details before a delivery, check their rating, or book their next order."
|
|
112
110
|
}),
|
|
113
111
|
/* @__PURE__ */ T(O, {
|
|
@@ -116,13 +114,13 @@ function j() {
|
|
|
116
114
|
id: "new-order",
|
|
117
115
|
label: "Book a delivery for this customer",
|
|
118
116
|
description: "Start a new order pre-filled for this account.",
|
|
119
|
-
icon: /* @__PURE__ */ T(
|
|
117
|
+
icon: /* @__PURE__ */ T(p, { size: 16 }),
|
|
120
118
|
onClick: () => R("orders/new")
|
|
121
119
|
}, {
|
|
122
120
|
id: "edit",
|
|
123
121
|
label: "Update contact details",
|
|
124
122
|
description: "Keep email, phone and address current.",
|
|
125
|
-
icon: /* @__PURE__ */ T(
|
|
123
|
+
icon: /* @__PURE__ */ T(_, { size: 16 }),
|
|
126
124
|
onClick: () => {}
|
|
127
125
|
}]
|
|
128
126
|
}),
|
|
@@ -140,7 +138,7 @@ function j() {
|
|
|
140
138
|
className: "space-y-4",
|
|
141
139
|
children: [/* @__PURE__ */ E("div", {
|
|
142
140
|
className: "flex items-center gap-3",
|
|
143
|
-
children: [/* @__PURE__ */ T(
|
|
141
|
+
children: [/* @__PURE__ */ T(m, {
|
|
144
142
|
size: 18,
|
|
145
143
|
className: "text-text-secondary"
|
|
146
144
|
}), /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
|
|
@@ -152,7 +150,7 @@ function j() {
|
|
|
152
150
|
})] })]
|
|
153
151
|
}), /* @__PURE__ */ E("div", {
|
|
154
152
|
className: "flex items-center gap-3",
|
|
155
|
-
children: [/* @__PURE__ */ T(
|
|
153
|
+
children: [/* @__PURE__ */ T(h, {
|
|
156
154
|
size: 18,
|
|
157
155
|
className: "text-text-secondary"
|
|
158
156
|
}), /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
|
|
@@ -187,18 +185,18 @@ function j() {
|
|
|
187
185
|
})] })]
|
|
188
186
|
})]
|
|
189
187
|
})] }),
|
|
190
|
-
/* @__PURE__ */ E(
|
|
188
|
+
/* @__PURE__ */ E(t, { children: [/* @__PURE__ */ T(i, { children: /* @__PURE__ */ E(r, {
|
|
191
189
|
className: "flex items-center gap-2",
|
|
192
|
-
children: [/* @__PURE__ */ T(
|
|
193
|
-
}) }), /* @__PURE__ */ T(
|
|
194
|
-
N.notes && /* @__PURE__ */ E(
|
|
190
|
+
children: [/* @__PURE__ */ T(g, { size: 18 }), " Address"]
|
|
191
|
+
}) }), /* @__PURE__ */ T(n, { children: /* @__PURE__ */ T("p", { children: C(N.address) }) })] }),
|
|
192
|
+
N.notes && /* @__PURE__ */ E(t, { children: [/* @__PURE__ */ T(i, { children: /* @__PURE__ */ E(r, {
|
|
195
193
|
className: "flex items-center gap-2",
|
|
196
|
-
children: [/* @__PURE__ */ T(
|
|
197
|
-
}) }), /* @__PURE__ */ T(
|
|
194
|
+
children: [/* @__PURE__ */ T(p, { size: 18 }), " Notes"]
|
|
195
|
+
}) }), /* @__PURE__ */ T(n, { children: /* @__PURE__ */ T("p", { children: N.notes }) })] })
|
|
198
196
|
]
|
|
199
197
|
}), /* @__PURE__ */ E("div", {
|
|
200
198
|
className: "space-y-6",
|
|
201
|
-
children: [/* @__PURE__ */ E(
|
|
199
|
+
children: [/* @__PURE__ */ E(t, { children: [/* @__PURE__ */ T(i, { children: /* @__PURE__ */ T(r, { children: "Business Details" }) }), /* @__PURE__ */ E(n, {
|
|
202
200
|
className: "space-y-3",
|
|
203
201
|
children: [
|
|
204
202
|
N.businessLicense && /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
|
|
@@ -230,29 +228,29 @@ function j() {
|
|
|
230
228
|
children: N.marketingOptIn ? "Yes" : "No"
|
|
231
229
|
})] })
|
|
232
230
|
]
|
|
233
|
-
})] }), /* @__PURE__ */ E(
|
|
231
|
+
})] }), /* @__PURE__ */ E(t, { children: [/* @__PURE__ */ T(i, { children: /* @__PURE__ */ T(r, { children: "Account Info" }) }), /* @__PURE__ */ E(n, {
|
|
234
232
|
className: "space-y-3",
|
|
235
233
|
children: [/* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
|
|
236
234
|
className: "text-sm text-text-secondary",
|
|
237
235
|
children: "Created"
|
|
238
|
-
}), /* @__PURE__ */ T("p", { children:
|
|
236
|
+
}), /* @__PURE__ */ T("p", { children: S(N.createdAt, "full") })] }), /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
|
|
239
237
|
className: "text-sm text-text-secondary",
|
|
240
238
|
children: "Last Updated"
|
|
241
|
-
}), /* @__PURE__ */ T("p", { children:
|
|
239
|
+
}), /* @__PURE__ */ T("p", { children: S(N.updatedAt, "relative") })] })]
|
|
242
240
|
})] })]
|
|
243
241
|
})]
|
|
244
242
|
})
|
|
245
243
|
]
|
|
246
|
-
}) : /* @__PURE__ */ T(
|
|
244
|
+
}) : /* @__PURE__ */ T(a, {
|
|
247
245
|
title: "New Customer",
|
|
248
246
|
subtitle: "Add a new customer",
|
|
249
|
-
icon: /* @__PURE__ */ T(
|
|
250
|
-
headerActions: /* @__PURE__ */ E(
|
|
247
|
+
icon: /* @__PURE__ */ T(y, { size: 24 }),
|
|
248
|
+
headerActions: /* @__PURE__ */ E(d, {
|
|
251
249
|
variant: "outline",
|
|
252
250
|
onClick: L,
|
|
253
|
-
children: [/* @__PURE__ */ T(
|
|
251
|
+
children: [/* @__PURE__ */ T(f, { size: 16 }), " Back"]
|
|
254
252
|
}),
|
|
255
|
-
children: /* @__PURE__ */ T(
|
|
253
|
+
children: /* @__PURE__ */ T(t, { children: /* @__PURE__ */ T(n, {
|
|
256
254
|
className: "p-8 text-center",
|
|
257
255
|
children: /* @__PURE__ */ T("p", {
|
|
258
256
|
className: "text-text-secondary",
|
|
@@ -1,43 +1,41 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as
|
|
3
|
-
import { t as
|
|
4
|
-
import { t as
|
|
5
|
-
import { t as
|
|
6
|
-
import { t as
|
|
7
|
-
import { t as
|
|
8
|
-
import { r as
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import { r as m } from "./formatters-_vJlC-47.js";
|
|
12
|
-
import { t as h } from "./navigation-BgnOfsVd.js";
|
|
1
|
+
import { ct as e, i as t, l as n, o as r, ot as i, s as a, u as o } from "./PageLayout-D4LDHJJq.js";
|
|
2
|
+
import { t as s } from "./DataTable-DmciIKKM.js";
|
|
3
|
+
import { t as c } from "./download-DRXxoiQR.js";
|
|
4
|
+
import { t as l } from "./plus-Z76q-FZm.js";
|
|
5
|
+
import { t as u } from "./refresh-cw-DKt6f5T6.js";
|
|
6
|
+
import { t as d } from "./star-nHlLjDKR.js";
|
|
7
|
+
import { t as f } from "./users-BAM4gHTn.js";
|
|
8
|
+
import { r as p } from "./useCustomers-QrlozybF.js";
|
|
9
|
+
import { i as m } from "./StatusBadge-NpTeHVlw.js";
|
|
10
|
+
import { r as h } from "./formatters-DhKZ-eA1.js";
|
|
13
11
|
import { jsx as g, jsxs as _ } from "react/jsx-runtime";
|
|
14
12
|
import { CTAOverflowMenu as v, EmphasisPanel as y, PagePurpose as b } from "@burdenoff/fe-libs/ui";
|
|
15
13
|
//#region src/movethewheels/pages/CustomersPage.tsx
|
|
16
14
|
function x() {
|
|
17
|
-
let { basePath: x, navigate: S } =
|
|
18
|
-
return /* @__PURE__ */ _(
|
|
15
|
+
let { basePath: x, navigate: S } = i(), { customers: C, totalCustomers: w, isLoading: T, refetch: E } = p({ limit: 100 }), D = (t) => S?.(e(x, t));
|
|
16
|
+
return /* @__PURE__ */ _(t, {
|
|
19
17
|
title: "Customers",
|
|
20
18
|
subtitle: `${w} customers`,
|
|
21
|
-
icon: /* @__PURE__ */ g(
|
|
19
|
+
icon: /* @__PURE__ */ g(f, { size: 24 }),
|
|
22
20
|
headerActions: /* @__PURE__ */ g(v, {
|
|
23
21
|
primary: {
|
|
24
22
|
label: "Add Customer",
|
|
25
|
-
icon: /* @__PURE__ */ g(
|
|
23
|
+
icon: /* @__PURE__ */ g(l, { size: 16 }),
|
|
26
24
|
onSelect: () => D("customers/new")
|
|
27
25
|
},
|
|
28
26
|
actions: [{
|
|
29
27
|
label: "Refresh",
|
|
30
|
-
icon: /* @__PURE__ */ g(
|
|
28
|
+
icon: /* @__PURE__ */ g(u, { size: 16 }),
|
|
31
29
|
onSelect: () => E()
|
|
32
30
|
}, {
|
|
33
31
|
label: "Export",
|
|
34
|
-
icon: /* @__PURE__ */ g(
|
|
32
|
+
icon: /* @__PURE__ */ g(c, { size: 16 }),
|
|
35
33
|
onSelect: () => {}
|
|
36
34
|
}]
|
|
37
35
|
}),
|
|
38
36
|
children: [
|
|
39
37
|
/* @__PURE__ */ g(b, {
|
|
40
|
-
icon: /* @__PURE__ */ g(
|
|
38
|
+
icon: /* @__PURE__ */ g(f, { size: 18 }),
|
|
41
39
|
children: "The businesses and individuals you deliver for. Keep contact details, locations and satisfaction ratings here, and open a customer to see their order history before booking the next shipment."
|
|
42
40
|
}),
|
|
43
41
|
/* @__PURE__ */ _(y, { children: [/* @__PURE__ */ g("p", {
|
|
@@ -69,14 +67,14 @@ function x() {
|
|
|
69
67
|
})] })
|
|
70
68
|
]
|
|
71
69
|
})] }),
|
|
72
|
-
/* @__PURE__ */ g(
|
|
70
|
+
/* @__PURE__ */ g(s, {
|
|
73
71
|
columns: [
|
|
74
72
|
{
|
|
75
73
|
id: "customer",
|
|
76
74
|
header: "Customer",
|
|
77
75
|
cell: (e) => /* @__PURE__ */ _("div", {
|
|
78
76
|
className: "flex items-center gap-3",
|
|
79
|
-
children: [/* @__PURE__ */ g(
|
|
77
|
+
children: [/* @__PURE__ */ g(r, { children: /* @__PURE__ */ g(a, { children: e.name.split(" ").map((e) => e[0]).join("") }) }), /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("p", {
|
|
80
78
|
className: "font-medium",
|
|
81
79
|
children: e.name
|
|
82
80
|
}), /* @__PURE__ */ g("p", {
|
|
@@ -89,7 +87,7 @@ function x() {
|
|
|
89
87
|
id: "type",
|
|
90
88
|
header: "Type",
|
|
91
89
|
accessorKey: "type",
|
|
92
|
-
cell: (e) => /* @__PURE__ */ g(
|
|
90
|
+
cell: (e) => /* @__PURE__ */ g(m, { type: e.type })
|
|
93
91
|
},
|
|
94
92
|
{
|
|
95
93
|
id: "company",
|
|
@@ -112,16 +110,16 @@ function x() {
|
|
|
112
110
|
header: "Rating",
|
|
113
111
|
cell: (e) => /* @__PURE__ */ _("div", {
|
|
114
112
|
className: "flex items-center gap-1",
|
|
115
|
-
children: [/* @__PURE__ */ g(
|
|
113
|
+
children: [/* @__PURE__ */ g(d, {
|
|
116
114
|
size: 14,
|
|
117
|
-
className: "text-
|
|
115
|
+
className: "text-status-warning-text fill-current"
|
|
118
116
|
}), /* @__PURE__ */ g("span", { children: e.rating.toFixed(1) })]
|
|
119
117
|
})
|
|
120
118
|
},
|
|
121
119
|
{
|
|
122
120
|
id: "status",
|
|
123
121
|
header: "Status",
|
|
124
|
-
cell: (e) => /* @__PURE__ */ g(
|
|
122
|
+
cell: (e) => /* @__PURE__ */ g(n, {
|
|
125
123
|
variant: e.isActive ? "default" : "secondary",
|
|
126
124
|
children: e.isActive ? "Active" : "Inactive"
|
|
127
125
|
})
|
|
@@ -131,7 +129,7 @@ function x() {
|
|
|
131
129
|
header: "Created",
|
|
132
130
|
accessorKey: "createdAt",
|
|
133
131
|
sortable: !0,
|
|
134
|
-
cell: (e) =>
|
|
132
|
+
cell: (e) => h(e.createdAt, "short")
|
|
135
133
|
}
|
|
136
134
|
],
|
|
137
135
|
data: C,
|
|
@@ -148,9 +146,9 @@ function x() {
|
|
|
148
146
|
emptyIllustration: "empty-people",
|
|
149
147
|
emptyTitle: "No customers yet",
|
|
150
148
|
emptyDescription: "Add your first customer to start booking deliveries for them.",
|
|
151
|
-
emptyAction: /* @__PURE__ */ _(
|
|
149
|
+
emptyAction: /* @__PURE__ */ _(o, {
|
|
152
150
|
onClick: () => D("customers/new"),
|
|
153
|
-
children: [/* @__PURE__ */ g(
|
|
151
|
+
children: [/* @__PURE__ */ g(l, {
|
|
154
152
|
size: 16,
|
|
155
153
|
className: "mr-1.5"
|
|
156
154
|
}), "Add Customer"]
|