@burdenoff/microfe-movethewheels 2026.626.2 → 2026.703.2

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 (135) hide show
  1. package/dist/{AIAssistantPage-AvsMbunM.js → AIAssistantPage-C3cPsWt-.js} +100 -73
  2. package/dist/AnalyticsPage-Dz6g2MvK.js +215 -0
  3. package/dist/{CreateOrderPage-CjlnEtk3.js → CreateOrderPage-C5iwnjp4.js} +36 -67
  4. package/dist/CustomerDetailsPage-B6nwFyLO.js +406 -0
  5. package/dist/{CustomersPage-CGGfD4ki.js → CustomersPage-2Y05LVyh.js} +26 -28
  6. package/dist/{DashboardPage-D2HRqwg9.js → DashboardPage-BVjQi0EB.js} +85 -83
  7. package/dist/{DataTable-CD9ZhpLB.js → DataTable-DmciIKKM.js} +3 -3
  8. package/dist/DriverDetailsPage-CN3WQ0B9.js +507 -0
  9. package/dist/{DriversPage-DKiynISH.js → DriversPage-B0Zpx8OQ.js} +25 -27
  10. package/dist/{FinancePage-Vg8WPs38.js → FinancePage-DEDykSOP.js} +9 -9
  11. package/dist/FleetPage-DqkFi3s3.js +365 -0
  12. package/dist/FormError-BlOjnXOq.js +15 -0
  13. package/dist/ImportExportPage-DKJRCezl.js +290 -0
  14. package/dist/InventoryPage-DwfgCUQq.js +253 -0
  15. package/dist/{LiveTrackingPage-DQ1q4Id3.js → LiveTrackingPage-DCX-K-LR.js} +60 -56
  16. package/dist/MarketplacePage-CIQ97_zp.js +247 -0
  17. package/dist/{MetricCard-B7yMyvMX.js → MetricCard-BY0QrMD4.js} +1 -1
  18. package/dist/{OrderDetailsPage-CFASgsYX.js → OrderDetailsPage-DYiZ-9UK.js} +83 -85
  19. package/dist/{OrdersListPage-BHeT8S5o.js → OrdersListPage-BjDlCKJd.js} +31 -33
  20. package/dist/{PageLayout-D3N8MCTm.js → PageLayout-D4LDHJJq.js} +483 -422
  21. package/dist/ProductDetailsPage-C9uOiYLp.js +350 -0
  22. package/dist/{ProductsPage--xEpbQ8A.js → ProductsPage-C1G9h7Xd.js} +22 -24
  23. package/dist/ReportsPage-Zp53q3_8.js +284 -0
  24. package/dist/RouteDetailsPage-DUStXSf9.js +531 -0
  25. package/dist/RoutesPage-DMfoicM1.js +144 -0
  26. package/dist/SettingsPage-Bn-v0mbQ.js +421 -0
  27. package/dist/StatusBadge-BZurYHMy.js +152 -0
  28. package/dist/{TrackingPage-CcRc_dva.js → TrackingPage-W-jtdM3Y.js} +59 -61
  29. package/dist/VehicleDetailsPage-Bceo5oz3.js +410 -0
  30. package/dist/{VehiclesPage-UlxPWP9K.js → VehiclesPage-VBtOep91.js} +20 -22
  31. package/dist/WarehouseDetailsPage-L_6sWigM.js +493 -0
  32. package/dist/{WarehousesPage-CuTO-OPp.js → WarehousesPage-DCbXXXWE.js} +16 -18
  33. package/dist/{arrow-left-CBpZKkpq.js → arrow-left-n48Y-Wis.js} +1 -1
  34. package/dist/{box-CAaiElsb.js → box-D9Pal4HM.js} +1 -1
  35. package/dist/{chart-column-D1Ym15-S.js → chart-column-BFIJysDR.js} +1 -1
  36. package/dist/{chevron-right-BIFGi0UA.js → chevron-right-EMIIyyJ1.js} +1 -1
  37. package/dist/{circle-alert-DjmNo5_L.js → circle-alert-iY24lSlp.js} +1 -1
  38. package/dist/{circle-check-big-CjuPVo3_.js → circle-check-big-w0TrLKMF.js} +1 -1
  39. package/dist/{clock-BjkdnddD.js → clock-DJZtdl8u.js} +1 -1
  40. package/dist/{dollar-sign-IB4O0wuQ.js → dollar-sign-CgKQRz_e.js} +1 -1
  41. package/dist/{download-Dpa9vqoG.js → download-DRXxoiQR.js} +1 -1
  42. package/dist/{file-text-C8Uioy11.js → file-text-DWWY6_f5.js} +1 -1
  43. package/dist/{filter-Da5OZaHI.js → filter-DloLC2eE.js} +1 -1
  44. package/dist/index.js +186 -162
  45. package/dist/{map-_Per4sT9.js → map-CkJaULb2.js} +1 -1
  46. package/dist/{map-pin-BSaf5IDL.js → map-pin-BGiCvyCs.js} +1 -1
  47. package/dist/{navigation-DaTbrhw2.js → navigation-D36prnAn.js} +1 -1
  48. package/dist/{package-BE7U0wQE.js → package-BChUzpJS.js} +1 -1
  49. package/dist/{phone-DV4StZiA.js → phone-Ac9s3mo_.js} +1 -1
  50. package/dist/{plus-Dl1rLeJR.js → plus-Z76q-FZm.js} +1 -1
  51. package/dist/{refresh-cw-CWfERAit.js → refresh-cw-DKt6f5T6.js} +1 -1
  52. package/dist/{save-XH8vydOn.js → save-CojywNhG.js} +1 -1
  53. package/dist/{search-OxoIiL_C.js → search-CDGefqb3.js} +1 -1
  54. package/dist/{square-pen-hLIbFQFV.js → square-pen-CopE9GmB.js} +1 -1
  55. package/dist/{star-YsVV3MNQ.js → star-nHlLjDKR.js} +1 -1
  56. package/dist/{store-RCBl7HB-.js → store-BR9Voi5E.js} +1 -1
  57. package/dist/trash-2-BKhar6Hs.js +32 -0
  58. package/dist/{trending-up-C-85AwGT.js → trending-up-Dohgd4t_.js} +1 -1
  59. package/dist/{triangle-alert-BOhfGgmh.js → triangle-alert-i-XQL9Rd.js} +1 -1
  60. package/dist/{truck-CtDjNFbi.js → truck-C0v_hbLR.js} +1 -1
  61. package/dist/{useAnalytics-ph7eTIK6.js → useAnalytics-DS8n0xgg.js} +40 -40
  62. package/dist/useAssistant-D4v3oxD3.js +84 -0
  63. package/dist/{useCustomers-bS3a4ytk.js → useCustomers-BmTNGxiI.js} +24 -24
  64. package/dist/{useFleet-BdETplNE.js → useFleet-DKqXZ16m.js} +133 -109
  65. package/dist/useImportExport-DHr-SWSw.js +55 -0
  66. package/dist/{useInventory-Dwn18FPz.js → useInventory-DkyiVY_A.js} +95 -75
  67. package/dist/{useOrders-D_3_hGMp.js → useOrders-Cfk1GLiq.js} +42 -42
  68. package/dist/useReports-CTqZr-AB.js +78 -0
  69. package/dist/{useRoutes-v4aBaS-E.js → useRoutes-BQWO607N.js} +31 -31
  70. package/dist/useSettings-CkDH_-gM.js +81 -0
  71. package/dist/{useTracking-De2KIUNu.js → useTracking-B-va1kO3.js} +22 -22
  72. package/dist/{user-Dz5TJZFs.js → user-jyFU3lXk.js} +1 -1
  73. package/dist/{users-g2N0eL-Z.js → users-DZ-ilS6B.js} +1 -1
  74. package/dist/{warehouse-D3WWDeTX.js → warehouse-6m5kXMLu.js} +1 -1
  75. package/dist/{wrench-CmxY1n4I.js → wrench-CANXWxF-.js} +1 -1
  76. package/package.json +1 -1
  77. package/src/movethewheels/MoveTheWheelsRoutes.tsx +31 -3
  78. package/src/movethewheels/components/FormError.tsx +25 -0
  79. package/src/movethewheels/components/StatusBadge.tsx +18 -37
  80. package/src/movethewheels/constants/index.ts +67 -26
  81. package/src/movethewheels/hooks/index.ts +12 -0
  82. package/src/movethewheels/hooks/useAnalytics.ts +20 -6
  83. package/src/movethewheels/hooks/useAssistant.ts +74 -0
  84. package/src/movethewheels/hooks/useFleet.ts +170 -59
  85. package/src/movethewheels/hooks/useImportExport.ts +101 -0
  86. package/src/movethewheels/hooks/useInventory.ts +107 -0
  87. package/src/movethewheels/hooks/useReports.ts +158 -0
  88. package/src/movethewheels/hooks/useSettings.ts +120 -0
  89. package/src/movethewheels/pages/AIAssistantPage.tsx +53 -15
  90. package/src/movethewheels/pages/AnalyticsPage.tsx +67 -64
  91. package/src/movethewheels/pages/CustomerDetailsPage.tsx +154 -21
  92. package/src/movethewheels/pages/CustomersPage.tsx +1 -1
  93. package/src/movethewheels/pages/DashboardPage.tsx +42 -22
  94. package/src/movethewheels/pages/DriverDetailsPage.tsx +160 -3
  95. package/src/movethewheels/pages/DriversPage.tsx +6 -2
  96. package/src/movethewheels/pages/FleetPage.tsx +96 -38
  97. package/src/movethewheels/pages/ImportExportPage.tsx +174 -68
  98. package/src/movethewheels/pages/InventoryPage.tsx +66 -28
  99. package/src/movethewheels/pages/LiveTrackingPage.tsx +12 -3
  100. package/src/movethewheels/pages/MarketplacePage.tsx +87 -45
  101. package/src/movethewheels/pages/OrderDetailsPage.tsx +2 -2
  102. package/src/movethewheels/pages/ProductDetailsPage.tsx +146 -3
  103. package/src/movethewheels/pages/ProductsPage.tsx +5 -1
  104. package/src/movethewheels/pages/ReportsPage.tsx +194 -90
  105. package/src/movethewheels/pages/RouteDetailsPage.tsx +290 -36
  106. package/src/movethewheels/pages/RoutesPage.tsx +4 -9
  107. package/src/movethewheels/pages/SettingsPage.tsx +234 -56
  108. package/src/movethewheels/pages/TrackingPage.tsx +6 -6
  109. package/src/movethewheels/pages/VehicleDetailsPage.tsx +158 -2
  110. package/src/movethewheels/pages/VehiclesPage.tsx +5 -1
  111. package/src/movethewheels/pages/WarehouseDetailsPage.tsx +224 -2
  112. package/src/movethewheels/pages/WarehousesPage.tsx +5 -1
  113. package/src/movethewheels/providers/MoveTheWheelsProvider.tsx +7 -6
  114. package/src/movethewheels/store/movethewheelsStore.ts +1 -1
  115. package/dist/AnalyticsPage-CCLfHgQZ.js +0 -212
  116. package/dist/CustomerDetailsPage-I6cdDHUi.js +0 -265
  117. package/dist/DriverDetailsPage-rg_pGNuP.js +0 -330
  118. package/dist/FleetPage-DddXt8r8.js +0 -332
  119. package/dist/ImportExportPage-BW6qO3kc.js +0 -248
  120. package/dist/InventoryPage-rMGuaJN-.js +0 -222
  121. package/dist/MarketplacePage-DKrXAv62.js +0 -219
  122. package/dist/ProductDetailsPage-CFGcbaHo.js +0 -195
  123. package/dist/ReportsPage-Bb7_90rK.js +0 -235
  124. package/dist/RouteDetailsPage-CVtDVb1N.js +0 -282
  125. package/dist/RoutesPage-s57PtgcQ.js +0 -163
  126. package/dist/SettingsPage-BYNCBOpN.js +0 -298
  127. package/dist/StatusBadge-CijYQXtb.js +0 -209
  128. package/dist/VehicleDetailsPage-3YDMPsPs.js +0 -220
  129. package/dist/WarehouseDetailsPage-Db7KeN-d.js +0 -238
  130. package/dist/graphqlClient-CdJyR_ed.js +0 -55
  131. package/dist/navigation-BgnOfsVd.js +0 -6
  132. package/dist/route-Dp9JiN_E.js +0 -51
  133. package/dist/settings-3Rw5NwFF.js +0 -28
  134. package/src/movethewheels/constants/mockData.ts +0 -1342
  135. /package/dist/{formatters-_vJlC-47.js → formatters-CF2S2l1m.js} +0 -0
@@ -1,265 +0,0 @@
1
- import { d as e, f as t, g as n, h as r, i, it as a, l as o, n as s, r as c, u as l } from "./PageLayout-D3N8MCTm.js";
2
- import { t as u } from "./arrow-left-CBpZKkpq.js";
3
- import { t as d } from "./file-text-C8Uioy11.js";
4
- import { n as f, t as p } from "./phone-DV4StZiA.js";
5
- import { t as m } from "./map-pin-BSaf5IDL.js";
6
- import { t as h } from "./square-pen-hLIbFQFV.js";
7
- import { t as g } from "./star-YsVV3MNQ.js";
8
- import { t as _ } from "./users-g2N0eL-Z.js";
9
- import { r as v } from "./graphqlClient-CdJyR_ed.js";
10
- import { t as y } from "./useCustomers-bS3a4ytk.js";
11
- import { i as b } from "./StatusBadge-CijYQXtb.js";
12
- import { r as x, t as S } from "./formatters-_vJlC-47.js";
13
- import { t as C } from "./navigation-BgnOfsVd.js";
14
- import { useParams as w } from "react-router-dom";
15
- import { jsx as T, jsxs as E } from "react/jsx-runtime";
16
- import { EmphasisPanel as D, NextSteps as O, PagePurpose as k } from "@burdenoff/fe-libs/ui";
17
- //#region node_modules/lucide-react/dist/esm/icons/building.js
18
- var A = a("Building", [
19
- ["rect", {
20
- width: "16",
21
- height: "20",
22
- x: "4",
23
- y: "2",
24
- rx: "2",
25
- ry: "2",
26
- key: "76otgf"
27
- }],
28
- ["path", {
29
- d: "M9 22v-4h6v4",
30
- key: "r93iot"
31
- }],
32
- ["path", {
33
- d: "M8 6h.01",
34
- key: "1dz90k"
35
- }],
36
- ["path", {
37
- d: "M16 6h.01",
38
- key: "1x0f13"
39
- }],
40
- ["path", {
41
- d: "M12 6h.01",
42
- key: "1vi96p"
43
- }],
44
- ["path", {
45
- d: "M12 10h.01",
46
- key: "1nrarc"
47
- }],
48
- ["path", {
49
- d: "M12 14h.01",
50
- key: "1etili"
51
- }],
52
- ["path", {
53
- d: "M16 10h.01",
54
- key: "1m94wz"
55
- }],
56
- ["path", {
57
- d: "M16 14h.01",
58
- key: "1gbofw"
59
- }],
60
- ["path", {
61
- d: "M8 10h.01",
62
- key: "19clt8"
63
- }],
64
- ["path", {
65
- d: "M8 14h.01",
66
- key: "6423bh"
67
- }]
68
- ]);
69
- //#endregion
70
- //#region src/movethewheels/pages/CustomerDetailsPage.tsx
71
- function j() {
72
- let { customerId: a } = w(), { basePath: j, navigate: M } = v(), { customer: N, isLoading: P, error: F, refetch: I } = y(a), L = () => M?.(C(j, "customers")), R = (e) => M?.(C(j, e));
73
- return a ? P ? /* @__PURE__ */ T(c, { message: "Loading customer details..." }) : F || !N ? /* @__PURE__ */ T(s, {
74
- title: "Customer not found",
75
- onRetry: I
76
- }) : /* @__PURE__ */ E(i, {
77
- title: N.name,
78
- subtitle: N.company || N.email,
79
- icon: /* @__PURE__ */ T(_, { size: 24 }),
80
- headerActions: /* @__PURE__ */ E("div", {
81
- className: "flex gap-2",
82
- children: [/* @__PURE__ */ E(l, {
83
- variant: "outline",
84
- onClick: L,
85
- children: [/* @__PURE__ */ T(u, { size: 16 }), " Back"]
86
- }), /* @__PURE__ */ E(l, { children: [/* @__PURE__ */ T(h, { size: 16 }), " Edit"] })]
87
- }),
88
- headerContent: /* @__PURE__ */ E("div", {
89
- className: "flex items-center gap-4",
90
- children: [
91
- /* @__PURE__ */ T(b, { type: N.type }),
92
- /* @__PURE__ */ T(o, {
93
- variant: N.isActive ? "default" : "secondary",
94
- children: N.isActive ? "Active" : "Inactive"
95
- }),
96
- /* @__PURE__ */ E("div", {
97
- className: "flex items-center gap-1",
98
- children: [/* @__PURE__ */ T(g, {
99
- size: 16,
100
- className: "text-yellow-500 fill-yellow-500"
101
- }), /* @__PURE__ */ T("span", {
102
- className: "font-medium",
103
- children: N.rating.toFixed(1)
104
- })]
105
- })
106
- ]
107
- }),
108
- children: [
109
- /* @__PURE__ */ T(k, {
110
- icon: /* @__PURE__ */ T(_, { size: 18 }),
111
- 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
- }),
113
- /* @__PURE__ */ T(O, {
114
- storageKey: "movethewheels-customer-details",
115
- steps: [{
116
- id: "new-order",
117
- label: "Book a delivery for this customer",
118
- description: "Start a new order pre-filled for this account.",
119
- icon: /* @__PURE__ */ T(d, { size: 16 }),
120
- onClick: () => R("orders/new")
121
- }, {
122
- id: "edit",
123
- label: "Update contact details",
124
- description: "Keep email, phone and address current.",
125
- icon: /* @__PURE__ */ T(h, { size: 16 }),
126
- onClick: () => {}
127
- }]
128
- }),
129
- /* @__PURE__ */ E("div", {
130
- className: "grid grid-cols-1 lg:grid-cols-3 gap-6",
131
- children: [/* @__PURE__ */ E("div", {
132
- className: "lg:col-span-2 space-y-6",
133
- children: [
134
- /* @__PURE__ */ E(D, { children: [/* @__PURE__ */ T("h2", {
135
- className: "text-base font-semibold text-text-primary mb-4",
136
- children: "Contact Information"
137
- }), /* @__PURE__ */ E("div", {
138
- className: "grid grid-cols-1 md:grid-cols-2 gap-6",
139
- children: [/* @__PURE__ */ E("div", {
140
- className: "space-y-4",
141
- children: [/* @__PURE__ */ E("div", {
142
- className: "flex items-center gap-3",
143
- children: [/* @__PURE__ */ T(f, {
144
- size: 18,
145
- className: "text-text-secondary"
146
- }), /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
147
- className: "text-sm text-text-secondary",
148
- children: "Email"
149
- }), /* @__PURE__ */ T("p", {
150
- className: "font-medium",
151
- children: N.email
152
- })] })]
153
- }), /* @__PURE__ */ E("div", {
154
- className: "flex items-center gap-3",
155
- children: [/* @__PURE__ */ T(p, {
156
- size: 18,
157
- className: "text-text-secondary"
158
- }), /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
159
- className: "text-sm text-text-secondary",
160
- children: "Phone"
161
- }), /* @__PURE__ */ T("p", {
162
- className: "font-medium",
163
- children: N.phone
164
- })] })]
165
- })]
166
- }), /* @__PURE__ */ E("div", {
167
- className: "space-y-4",
168
- children: [N.company && /* @__PURE__ */ E("div", {
169
- className: "flex items-center gap-3",
170
- children: [/* @__PURE__ */ T(A, {
171
- size: 18,
172
- className: "text-text-secondary"
173
- }), /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
174
- className: "text-sm text-text-secondary",
175
- children: "Company"
176
- }), /* @__PURE__ */ T("p", {
177
- className: "font-medium",
178
- children: N.company
179
- })] })]
180
- }), N.website && /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
181
- className: "text-sm text-text-secondary",
182
- children: "Website"
183
- }), /* @__PURE__ */ T("a", {
184
- href: N.website,
185
- className: "text-primary hover:underline",
186
- children: N.website
187
- })] })]
188
- })]
189
- })] }),
190
- /* @__PURE__ */ E(e, { children: [/* @__PURE__ */ T(r, { children: /* @__PURE__ */ E(n, {
191
- className: "flex items-center gap-2",
192
- children: [/* @__PURE__ */ T(m, { size: 18 }), " Address"]
193
- }) }), /* @__PURE__ */ T(t, { children: /* @__PURE__ */ T("p", { children: S(N.address) }) })] }),
194
- N.notes && /* @__PURE__ */ E(e, { children: [/* @__PURE__ */ T(r, { children: /* @__PURE__ */ E(n, {
195
- className: "flex items-center gap-2",
196
- children: [/* @__PURE__ */ T(d, { size: 18 }), " Notes"]
197
- }) }), /* @__PURE__ */ T(t, { children: /* @__PURE__ */ T("p", { children: N.notes }) })] })
198
- ]
199
- }), /* @__PURE__ */ E("div", {
200
- className: "space-y-6",
201
- children: [/* @__PURE__ */ E(e, { children: [/* @__PURE__ */ T(r, { children: /* @__PURE__ */ T(n, { children: "Business Details" }) }), /* @__PURE__ */ E(t, {
202
- className: "space-y-3",
203
- children: [
204
- N.businessLicense && /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
205
- className: "text-sm text-text-secondary",
206
- children: "Business License"
207
- }), /* @__PURE__ */ T("p", {
208
- className: "font-mono",
209
- children: N.businessLicense
210
- })] }),
211
- N.taxId && /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
212
- className: "text-sm text-text-secondary",
213
- children: "Tax ID"
214
- }), /* @__PURE__ */ T("p", {
215
- className: "font-mono",
216
- children: N.taxId
217
- })] }),
218
- /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
219
- className: "text-sm text-text-secondary",
220
- children: "Preferred Contact"
221
- }), /* @__PURE__ */ T("p", {
222
- className: "capitalize",
223
- children: N.preferredContactMethod
224
- })] }),
225
- /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
226
- className: "text-sm text-text-secondary",
227
- children: "Marketing Opt-in"
228
- }), /* @__PURE__ */ T(o, {
229
- variant: N.marketingOptIn ? "default" : "secondary",
230
- children: N.marketingOptIn ? "Yes" : "No"
231
- })] })
232
- ]
233
- })] }), /* @__PURE__ */ E(e, { children: [/* @__PURE__ */ T(r, { children: /* @__PURE__ */ T(n, { children: "Account Info" }) }), /* @__PURE__ */ E(t, {
234
- className: "space-y-3",
235
- children: [/* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
236
- className: "text-sm text-text-secondary",
237
- children: "Created"
238
- }), /* @__PURE__ */ T("p", { children: x(N.createdAt, "full") })] }), /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
239
- className: "text-sm text-text-secondary",
240
- children: "Last Updated"
241
- }), /* @__PURE__ */ T("p", { children: x(N.updatedAt, "relative") })] })]
242
- })] })]
243
- })]
244
- })
245
- ]
246
- }) : /* @__PURE__ */ T(i, {
247
- title: "New Customer",
248
- subtitle: "Add a new customer",
249
- icon: /* @__PURE__ */ T(_, { size: 24 }),
250
- headerActions: /* @__PURE__ */ E(l, {
251
- variant: "outline",
252
- onClick: L,
253
- children: [/* @__PURE__ */ T(u, { size: 16 }), " Back"]
254
- }),
255
- children: /* @__PURE__ */ T(e, { children: /* @__PURE__ */ T(t, {
256
- className: "p-8 text-center",
257
- children: /* @__PURE__ */ T("p", {
258
- className: "text-text-secondary",
259
- children: "Customer creation form would go here"
260
- })
261
- }) })
262
- });
263
- }
264
- //#endregion
265
- export { j as default };
@@ -1,330 +0,0 @@
1
- import { M as e, d as t, f as n, g as r, h as i, i as a, l as o, n as s, r as c, u as l } from "./PageLayout-D3N8MCTm.js";
2
- import { t as u } from "./arrow-left-CBpZKkpq.js";
3
- import { t as d } from "./clock-BjkdnddD.js";
4
- import { t as f } from "./dollar-sign-IB4O0wuQ.js";
5
- import { t as p } from "./file-text-C8Uioy11.js";
6
- import { t as m } from "./map-pin-BSaf5IDL.js";
7
- import { t as h } from "./square-pen-hLIbFQFV.js";
8
- import { t as g } from "./star-YsVV3MNQ.js";
9
- import { t as _ } from "./users-g2N0eL-Z.js";
10
- import { r as v } from "./graphqlClient-CdJyR_ed.js";
11
- import { t as y } from "./useFleet-BdETplNE.js";
12
- import { r as b } from "./StatusBadge-CijYQXtb.js";
13
- import { n as x, r as S } from "./formatters-_vJlC-47.js";
14
- import { t as C } from "./navigation-BgnOfsVd.js";
15
- import { useParams as w } from "react-router-dom";
16
- import { jsx as T, jsxs as E } from "react/jsx-runtime";
17
- import { EmphasisPanel as D, NextSteps as O, PagePurpose as k } from "@burdenoff/fe-libs/ui";
18
- //#region src/movethewheels/pages/DriverDetailsPage.tsx
19
- function A() {
20
- let { driverId: A } = w(), { basePath: j, navigate: M } = v(), { driver: N, isLoading: P, error: F, refetch: I } = y(A), L = () => M?.(C(j, "fleet/drivers")), R = (e) => M?.(C(j, e));
21
- return P ? /* @__PURE__ */ T(c, { message: "Loading driver details..." }) : F || !N ? /* @__PURE__ */ T(s, {
22
- title: "Driver not found",
23
- onRetry: I
24
- }) : /* @__PURE__ */ E(a, {
25
- title: N.fullName,
26
- subtitle: `Employee ID: ${N.employeeId}`,
27
- icon: /* @__PURE__ */ T(_, { size: 24 }),
28
- headerActions: /* @__PURE__ */ E("div", {
29
- className: "flex gap-2",
30
- children: [/* @__PURE__ */ E(l, {
31
- variant: "outline",
32
- onClick: L,
33
- children: [/* @__PURE__ */ T(u, { size: 16 }), " Back"]
34
- }), /* @__PURE__ */ E(l, { children: [/* @__PURE__ */ T(h, { size: 16 }), " Edit"] })]
35
- }),
36
- headerContent: /* @__PURE__ */ E("div", {
37
- className: "flex items-center gap-4",
38
- children: [/* @__PURE__ */ T(b, {
39
- status: N.status,
40
- type: "driver"
41
- }), /* @__PURE__ */ E("div", {
42
- className: "flex items-center gap-1",
43
- children: [
44
- /* @__PURE__ */ T(g, {
45
- size: 16,
46
- className: "text-yellow-500 fill-yellow-500"
47
- }),
48
- /* @__PURE__ */ T("span", {
49
- className: "font-medium",
50
- children: N.ratings.overall.toFixed(1)
51
- }),
52
- /* @__PURE__ */ E("span", {
53
- className: "text-text-secondary",
54
- children: [
55
- "(",
56
- N.ratings.totalRatings,
57
- " ratings)"
58
- ]
59
- })
60
- ]
61
- })]
62
- }),
63
- children: [
64
- /* @__PURE__ */ T(k, {
65
- icon: /* @__PURE__ */ T(_, { size: 18 }),
66
- children: "A driver's full profile — performance ratings, working hours, documents, earnings and live location. Use it to confirm someone is road-ready and compliant before assigning them an order or route."
67
- }),
68
- /* @__PURE__ */ T(O, {
69
- storageKey: "movethewheels-driver-details",
70
- steps: [
71
- {
72
- id: "assign",
73
- label: "Assign to an order",
74
- description: "Hand a pending delivery to this driver.",
75
- icon: /* @__PURE__ */ T(m, { size: 16 }),
76
- onClick: () => R("orders")
77
- },
78
- {
79
- id: "routes",
80
- label: "Plan their route",
81
- description: "Batch nearby drop-offs into an optimized itinerary.",
82
- icon: /* @__PURE__ */ T(d, { size: 16 }),
83
- onClick: () => R("routes")
84
- },
85
- {
86
- id: "edit",
87
- label: "Update driver record",
88
- description: "Refresh documents, shift or compliance details.",
89
- icon: /* @__PURE__ */ T(h, { size: 16 }),
90
- onClick: () => {}
91
- }
92
- ]
93
- }),
94
- /* @__PURE__ */ E("div", {
95
- className: "grid grid-cols-1 lg:grid-cols-3 gap-6",
96
- children: [/* @__PURE__ */ E("div", {
97
- className: "lg:col-span-2 space-y-6",
98
- children: [
99
- /* @__PURE__ */ E(D, { children: [/* @__PURE__ */ E("h2", {
100
- className: "flex items-center gap-2 text-base font-semibold text-text-primary mb-4",
101
- children: [/* @__PURE__ */ T(g, { size: 18 }), " Ratings"]
102
- }), /* @__PURE__ */ T("div", {
103
- className: "grid grid-cols-2 md:grid-cols-3 gap-4",
104
- children: [
105
- {
106
- label: "Punctuality",
107
- value: N.ratings.punctuality
108
- },
109
- {
110
- label: "Communication",
111
- value: N.ratings.communication
112
- },
113
- {
114
- label: "Handling",
115
- value: N.ratings.carefulHandling
116
- },
117
- {
118
- label: "Professionalism",
119
- value: N.ratings.professionalism
120
- },
121
- {
122
- label: "On-Time Delivery",
123
- value: N.ratings.onTimeDelivery
124
- }
125
- ].map((t) => /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
126
- className: "text-sm text-text-secondary",
127
- children: t.label
128
- }), /* @__PURE__ */ E("div", {
129
- className: "flex items-center gap-2 mt-1",
130
- children: [/* @__PURE__ */ T(e, {
131
- value: t.value * 20,
132
- className: "flex-1 h-2"
133
- }), /* @__PURE__ */ T("span", {
134
- className: "text-sm font-medium",
135
- children: t.value.toFixed(1)
136
- })]
137
- })] }, t.label))
138
- })] }),
139
- /* @__PURE__ */ E(t, { children: [/* @__PURE__ */ T(i, { children: /* @__PURE__ */ E(r, {
140
- className: "flex items-center gap-2",
141
- children: [/* @__PURE__ */ T(d, { size: 18 }), " Working Hours"]
142
- }) }), /* @__PURE__ */ T(n, { children: /* @__PURE__ */ E("div", {
143
- className: "grid grid-cols-2 md:grid-cols-4 gap-4",
144
- children: [
145
- /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
146
- className: "text-sm text-text-secondary",
147
- children: "Shift"
148
- }), /* @__PURE__ */ E("p", {
149
- className: "font-medium",
150
- children: [
151
- N.workingHours.startTime,
152
- " - ",
153
- N.workingHours.endTime
154
- ]
155
- })] }),
156
- /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
157
- className: "text-sm text-text-secondary",
158
- children: "Working Days"
159
- }), /* @__PURE__ */ E("p", {
160
- className: "font-medium",
161
- children: [N.workingHours.workingDays.length, " days/week"]
162
- })] }),
163
- /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
164
- className: "text-sm text-text-secondary",
165
- children: "Hours Today"
166
- }), /* @__PURE__ */ E("p", {
167
- className: "font-medium",
168
- children: [
169
- N.workingHours.currentHoursToday,
170
- "h / ",
171
- N.workingHours.maxHoursPerDay,
172
- "h"
173
- ]
174
- })] }),
175
- /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
176
- className: "text-sm text-text-secondary",
177
- children: "Hours This Week"
178
- }), /* @__PURE__ */ E("p", {
179
- className: "font-medium",
180
- children: [
181
- N.workingHours.currentHoursThisWeek,
182
- "h /",
183
- " ",
184
- N.workingHours.maxHoursPerWeek,
185
- "h"
186
- ]
187
- })] })
188
- ]
189
- }) })] }),
190
- /* @__PURE__ */ E(t, { children: [/* @__PURE__ */ T(i, { children: /* @__PURE__ */ E(r, {
191
- className: "flex items-center gap-2",
192
- children: [/* @__PURE__ */ T(p, { size: 18 }), " Documents"]
193
- }) }), /* @__PURE__ */ T(n, { children: /* @__PURE__ */ E("div", {
194
- className: "space-y-3",
195
- children: [/* @__PURE__ */ E("div", {
196
- className: "flex items-center justify-between p-3 border rounded-lg",
197
- children: [/* @__PURE__ */ E("div", { children: [
198
- /* @__PURE__ */ T("p", {
199
- className: "font-medium",
200
- children: "Driver's License"
201
- }),
202
- /* @__PURE__ */ E("p", {
203
- className: "text-sm text-text-secondary",
204
- children: [
205
- N.licenseNumber,
206
- " - ",
207
- N.licenseType
208
- ]
209
- }),
210
- /* @__PURE__ */ E("p", {
211
- className: "text-sm text-text-secondary",
212
- children: ["Expires: ", S(N.licenseExpiry)]
213
- })
214
- ] }), /* @__PURE__ */ T(o, {
215
- variant: "default",
216
- children: "Valid"
217
- })]
218
- }), N.documents.map((e) => /* @__PURE__ */ E("div", {
219
- className: "flex items-center justify-between p-3 border rounded-lg",
220
- children: [/* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
221
- className: "font-medium capitalize",
222
- children: e.type.replace("_", " ")
223
- }), /* @__PURE__ */ E("p", {
224
- className: "text-sm text-text-secondary",
225
- children: ["Expires: ", S(e.expiryDate)]
226
- })] }), /* @__PURE__ */ T(o, {
227
- variant: e.verified ? "default" : "secondary",
228
- children: e.verified ? "Verified" : "Pending"
229
- })]
230
- }, e.id))]
231
- }) })] })
232
- ]
233
- }), /* @__PURE__ */ E("div", {
234
- className: "space-y-6",
235
- children: [
236
- /* @__PURE__ */ E(t, { children: [/* @__PURE__ */ T(i, { children: /* @__PURE__ */ T(r, { children: "Statistics" }) }), /* @__PURE__ */ E(n, {
237
- className: "space-y-4",
238
- children: [
239
- /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
240
- className: "text-sm text-text-secondary",
241
- children: "Total Deliveries"
242
- }), /* @__PURE__ */ T("p", {
243
- className: "text-2xl font-bold",
244
- children: N.completedOrders.toLocaleString()
245
- })] }),
246
- /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
247
- className: "text-sm text-text-secondary",
248
- children: "Today's Deliveries"
249
- }), /* @__PURE__ */ T("p", {
250
- className: "text-2xl font-bold",
251
- children: N.todayOrders
252
- })] }),
253
- /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
254
- className: "text-sm text-text-secondary",
255
- children: "Join Date"
256
- }), /* @__PURE__ */ T("p", {
257
- className: "font-medium",
258
- children: S(N.joinDate)
259
- })] })
260
- ]
261
- })] }),
262
- /* @__PURE__ */ E(t, { children: [/* @__PURE__ */ T(i, { children: /* @__PURE__ */ E(r, {
263
- className: "flex items-center gap-2",
264
- children: [/* @__PURE__ */ T(f, { size: 18 }), " Earnings"]
265
- }) }), /* @__PURE__ */ E(n, {
266
- className: "space-y-3",
267
- children: [
268
- /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
269
- className: "text-sm text-text-secondary",
270
- children: "Total Earnings"
271
- }), /* @__PURE__ */ T("p", {
272
- className: "text-2xl font-bold",
273
- children: x(N.earnings.totalEarnings)
274
- })] }),
275
- /* @__PURE__ */ E("div", {
276
- className: "grid grid-cols-2 gap-3",
277
- children: [/* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
278
- className: "text-sm text-text-secondary",
279
- children: "This Week"
280
- }), /* @__PURE__ */ T("p", {
281
- className: "font-medium",
282
- children: x(N.earnings.weeklyEarnings)
283
- })] }), /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
284
- className: "text-sm text-text-secondary",
285
- children: "This Month"
286
- }), /* @__PURE__ */ T("p", {
287
- className: "font-medium",
288
- children: x(N.earnings.monthlyEarnings)
289
- })] })]
290
- }),
291
- /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
292
- className: "text-sm text-text-secondary",
293
- children: "Base Salary"
294
- }), /* @__PURE__ */ E("p", {
295
- className: "font-medium",
296
- children: [x(N.baseSalary), "/year"]
297
- })] })
298
- ]
299
- })] }),
300
- N.currentLocation && /* @__PURE__ */ E(t, { children: [/* @__PURE__ */ T(i, { children: /* @__PURE__ */ E(r, {
301
- className: "flex items-center gap-2",
302
- children: [/* @__PURE__ */ T(m, { size: 18 }), " Current Location"]
303
- }) }), /* @__PURE__ */ E(n, { children: [/* @__PURE__ */ T("p", {
304
- className: "text-sm",
305
- children: N.currentLocation.address || "Location updating..."
306
- }), /* @__PURE__ */ E("p", {
307
- className: "text-xs text-text-secondary mt-1",
308
- children: ["Updated ", S(N.currentLocation.timestamp || /* @__PURE__ */ new Date(), "relative")]
309
- })] })] }),
310
- /* @__PURE__ */ E(t, { children: [/* @__PURE__ */ T(i, { children: /* @__PURE__ */ T(r, { children: "Compliance Status" }) }), /* @__PURE__ */ T(n, {
311
- className: "space-y-2",
312
- children: Object.entries(N.compliance).filter(([e]) => e !== "lastUpdate").map(([e, t]) => /* @__PURE__ */ E("div", {
313
- className: "flex items-center justify-between",
314
- children: [/* @__PURE__ */ T("span", {
315
- className: "text-sm capitalize",
316
- children: e.replace(/([A-Z])/g, " $1")
317
- }), /* @__PURE__ */ T(o, {
318
- variant: t ? "default" : "destructive",
319
- children: t ? "Compliant" : "Non-compliant"
320
- })]
321
- }, e))
322
- })] })
323
- ]
324
- })]
325
- })
326
- ]
327
- });
328
- }
329
- //#endregion
330
- export { A as default };