@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.
Files changed (120) hide show
  1. package/dist/{AIAssistantPage-AvsMbunM.js → AIAssistantPage-C3ovZ0Fh.js} +100 -73
  2. package/dist/AnalyticsPage-O8SpY-V4.js +215 -0
  3. package/dist/{CreateOrderPage-CjlnEtk3.js → CreateOrderPage-CB1_-_mN.js} +33 -35
  4. package/dist/{CustomerDetailsPage-I6cdDHUi.js → CustomerDetailsPage-BaeKEI1D.js} +42 -44
  5. package/dist/{CustomersPage-CGGfD4ki.js → CustomersPage-DRaLuHMC.js} +26 -28
  6. package/dist/{DashboardPage-D2HRqwg9.js → DashboardPage-DPjhNfKB.js} +85 -83
  7. package/dist/{DataTable-CD9ZhpLB.js → DataTable-DmciIKKM.js} +3 -3
  8. package/dist/{DriverDetailsPage-rg_pGNuP.js → DriverDetailsPage-CSSQTOzn.js} +52 -54
  9. package/dist/{DriversPage-DKiynISH.js → DriversPage-C2Bk0w4Q.js} +24 -26
  10. package/dist/{FinancePage-Vg8WPs38.js → FinancePage-lmp0Sdsw.js} +9 -9
  11. package/dist/FleetPage-DZn5pIqd.js +365 -0
  12. package/dist/ImportExportPage-BIUJZc7O.js +290 -0
  13. package/dist/InventoryPage-Cxh1zYJd.js +253 -0
  14. package/dist/{LiveTrackingPage-DQ1q4Id3.js → LiveTrackingPage-BY1yAkIt.js} +60 -56
  15. package/dist/MarketplacePage-RMuL17EA.js +247 -0
  16. package/dist/{MetricCard-B7yMyvMX.js → MetricCard-7aYgzZHK.js} +1 -1
  17. package/dist/{OrderDetailsPage-CFASgsYX.js → OrderDetailsPage-C2Mf4KSy.js} +83 -85
  18. package/dist/{OrdersListPage-BHeT8S5o.js → OrdersListPage-BrPBtnhp.js} +31 -33
  19. package/dist/{PageLayout-D3N8MCTm.js → PageLayout-D4LDHJJq.js} +483 -422
  20. package/dist/{ProductDetailsPage-CFGcbaHo.js → ProductDetailsPage-CezzzZcj.js} +27 -29
  21. package/dist/{ProductsPage--xEpbQ8A.js → ProductsPage-I5DilIoY.js} +21 -23
  22. package/dist/ReportsPage-BDXNmUng.js +284 -0
  23. package/dist/RouteDetailsPage-BcomL20M.js +263 -0
  24. package/dist/RoutesPage-lqX9ylHP.js +144 -0
  25. package/dist/SettingsPage-CQVIOaNs.js +421 -0
  26. package/dist/StatusBadge-NpTeHVlw.js +152 -0
  27. package/dist/{TrackingPage-CcRc_dva.js → TrackingPage-BXrjz7V8.js} +59 -61
  28. package/dist/{VehicleDetailsPage-3YDMPsPs.js → VehicleDetailsPage-DZjLcJgr.js} +40 -42
  29. package/dist/{VehiclesPage-UlxPWP9K.js → VehiclesPage-6W39XT5W.js} +19 -21
  30. package/dist/{WarehouseDetailsPage-Db7KeN-d.js → WarehouseDetailsPage-C10pgRGW.js} +38 -40
  31. package/dist/{WarehousesPage-CuTO-OPp.js → WarehousesPage-CHvBqNaQ.js} +15 -17
  32. package/dist/{arrow-left-CBpZKkpq.js → arrow-left-n48Y-Wis.js} +1 -1
  33. package/dist/{box-CAaiElsb.js → box-D9Pal4HM.js} +1 -1
  34. package/dist/{chart-column-D1Ym15-S.js → chart-column-BFIJysDR.js} +1 -1
  35. package/dist/{chevron-right-BIFGi0UA.js → chevron-right-EMIIyyJ1.js} +1 -1
  36. package/dist/{circle-alert-DjmNo5_L.js → circle-alert-iY24lSlp.js} +1 -1
  37. package/dist/{circle-check-big-CjuPVo3_.js → circle-check-big-w0TrLKMF.js} +1 -1
  38. package/dist/{clock-BjkdnddD.js → clock-DJZtdl8u.js} +1 -1
  39. package/dist/{dollar-sign-IB4O0wuQ.js → dollar-sign-CgKQRz_e.js} +1 -1
  40. package/dist/{download-Dpa9vqoG.js → download-DRXxoiQR.js} +1 -1
  41. package/dist/{file-text-C8Uioy11.js → file-text-DWWY6_f5.js} +1 -1
  42. package/dist/{filter-Da5OZaHI.js → filter-DloLC2eE.js} +1 -1
  43. package/dist/index.js +119 -111
  44. package/dist/{map-_Per4sT9.js → map-CkJaULb2.js} +1 -1
  45. package/dist/{map-pin-BSaf5IDL.js → map-pin-BGiCvyCs.js} +1 -1
  46. package/dist/{navigation-DaTbrhw2.js → navigation-D36prnAn.js} +1 -1
  47. package/dist/{package-BE7U0wQE.js → package-BChUzpJS.js} +1 -1
  48. package/dist/{phone-DV4StZiA.js → phone-Ac9s3mo_.js} +1 -1
  49. package/dist/{plus-Dl1rLeJR.js → plus-Z76q-FZm.js} +1 -1
  50. package/dist/{refresh-cw-CWfERAit.js → refresh-cw-DKt6f5T6.js} +1 -1
  51. package/dist/{save-XH8vydOn.js → save-CojywNhG.js} +1 -1
  52. package/dist/{search-OxoIiL_C.js → search-CDGefqb3.js} +1 -1
  53. package/dist/{square-pen-hLIbFQFV.js → square-pen-CopE9GmB.js} +1 -1
  54. package/dist/{star-YsVV3MNQ.js → star-nHlLjDKR.js} +1 -1
  55. package/dist/{store-RCBl7HB-.js → store-BR9Voi5E.js} +1 -1
  56. package/dist/{trending-up-C-85AwGT.js → trending-up-B7W-GL6P.js} +1 -1
  57. package/dist/{triangle-alert-BOhfGgmh.js → triangle-alert-BonHFFNz.js} +1 -1
  58. package/dist/{truck-CtDjNFbi.js → truck-DrlfSpRC.js} +1 -1
  59. package/dist/{useAnalytics-ph7eTIK6.js → useAnalytics-CgdzUfY_.js} +40 -40
  60. package/dist/useAssistant-D4v3oxD3.js +84 -0
  61. package/dist/{useCustomers-bS3a4ytk.js → useCustomers-QrlozybF.js} +24 -24
  62. package/dist/{useFleet-BdETplNE.js → useFleet-DiAC-IiH.js} +70 -67
  63. package/dist/useImportExport-BLMnAKCC.js +55 -0
  64. package/dist/{useInventory-Dwn18FPz.js → useInventory-DKoks37x.js} +33 -33
  65. package/dist/{useOrders-D_3_hGMp.js → useOrders-D3UZVy8Y.js} +42 -42
  66. package/dist/useReports-Puq4DCH9.js +78 -0
  67. package/dist/{useRoutes-v4aBaS-E.js → useRoutes-Do57LvRb.js} +31 -31
  68. package/dist/useSettings-CkDH_-gM.js +81 -0
  69. package/dist/{useTracking-De2KIUNu.js → useTracking-GJify4HN.js} +22 -22
  70. package/dist/{user-Dz5TJZFs.js → user-CjSoudeu.js} +1 -1
  71. package/dist/{users-g2N0eL-Z.js → users-BAM4gHTn.js} +1 -1
  72. package/dist/{warehouse-D3WWDeTX.js → warehouse-C7MSr47B.js} +1 -1
  73. package/dist/{wrench-CmxY1n4I.js → wrench-CANXWxF-.js} +1 -1
  74. package/package.json +1 -1
  75. package/src/movethewheels/MoveTheWheelsRoutes.tsx +27 -3
  76. package/src/movethewheels/components/StatusBadge.tsx +18 -37
  77. package/src/movethewheels/constants/index.ts +67 -26
  78. package/src/movethewheels/hooks/index.ts +12 -0
  79. package/src/movethewheels/hooks/useAnalytics.ts +20 -6
  80. package/src/movethewheels/hooks/useAssistant.ts +74 -0
  81. package/src/movethewheels/hooks/useFleet.ts +63 -59
  82. package/src/movethewheels/hooks/useImportExport.ts +101 -0
  83. package/src/movethewheels/hooks/useReports.ts +158 -0
  84. package/src/movethewheels/hooks/useSettings.ts +120 -0
  85. package/src/movethewheels/pages/AIAssistantPage.tsx +53 -15
  86. package/src/movethewheels/pages/AnalyticsPage.tsx +67 -64
  87. package/src/movethewheels/pages/CustomerDetailsPage.tsx +1 -1
  88. package/src/movethewheels/pages/CustomersPage.tsx +1 -1
  89. package/src/movethewheels/pages/DashboardPage.tsx +42 -22
  90. package/src/movethewheels/pages/DriverDetailsPage.tsx +1 -1
  91. package/src/movethewheels/pages/DriversPage.tsx +1 -1
  92. package/src/movethewheels/pages/FleetPage.tsx +96 -38
  93. package/src/movethewheels/pages/ImportExportPage.tsx +174 -68
  94. package/src/movethewheels/pages/InventoryPage.tsx +66 -28
  95. package/src/movethewheels/pages/LiveTrackingPage.tsx +12 -3
  96. package/src/movethewheels/pages/MarketplacePage.tsx +87 -45
  97. package/src/movethewheels/pages/OrderDetailsPage.tsx +2 -2
  98. package/src/movethewheels/pages/ReportsPage.tsx +194 -90
  99. package/src/movethewheels/pages/RouteDetailsPage.tsx +5 -11
  100. package/src/movethewheels/pages/RoutesPage.tsx +4 -9
  101. package/src/movethewheels/pages/SettingsPage.tsx +234 -56
  102. package/src/movethewheels/pages/TrackingPage.tsx +6 -6
  103. package/src/movethewheels/providers/MoveTheWheelsProvider.tsx +7 -6
  104. package/src/movethewheels/store/movethewheelsStore.ts +1 -1
  105. package/dist/AnalyticsPage-CCLfHgQZ.js +0 -212
  106. package/dist/FleetPage-DddXt8r8.js +0 -332
  107. package/dist/ImportExportPage-BW6qO3kc.js +0 -248
  108. package/dist/InventoryPage-rMGuaJN-.js +0 -222
  109. package/dist/MarketplacePage-DKrXAv62.js +0 -219
  110. package/dist/ReportsPage-Bb7_90rK.js +0 -235
  111. package/dist/RouteDetailsPage-CVtDVb1N.js +0 -282
  112. package/dist/RoutesPage-s57PtgcQ.js +0 -163
  113. package/dist/SettingsPage-BYNCBOpN.js +0 -298
  114. package/dist/StatusBadge-CijYQXtb.js +0 -209
  115. package/dist/graphqlClient-CdJyR_ed.js +0 -55
  116. package/dist/navigation-BgnOfsVd.js +0 -6
  117. package/dist/route-Dp9JiN_E.js +0 -51
  118. package/dist/settings-3Rw5NwFF.js +0 -28
  119. package/src/movethewheels/constants/mockData.ts +0 -1342
  120. /package/dist/{formatters-_vJlC-47.js → formatters-DhKZ-eA1.js} +0 -0
@@ -1,212 +0,0 @@
1
- import { M as e, d as t, f as n, g as r, h as i, i as a } from "./PageLayout-D3N8MCTm.js";
2
- import { t as o } from "./chart-column-D1Ym15-S.js";
3
- import { t as s } from "./dollar-sign-IB4O0wuQ.js";
4
- import { t as c } from "./package-BE7U0wQE.js";
5
- import { t as l } from "./trending-up-C-85AwGT.js";
6
- import { t as u } from "./truck-CtDjNFbi.js";
7
- import { t as d } from "./users-g2N0eL-Z.js";
8
- import { i as f, r as p, t as m } from "./useAnalytics-ph7eTIK6.js";
9
- import { r as h, t as g } from "./MetricCard-B7yMyvMX.js";
10
- import { n as _ } from "./formatters-_vJlC-47.js";
11
- import { jsx as v, jsxs as y } from "react/jsx-runtime";
12
- import { EmphasisPanel as b, PagePurpose as x } from "@burdenoff/fe-libs/ui";
13
- //#region src/movethewheels/pages/AnalyticsPage.tsx
14
- function S() {
15
- let { analytics: S } = m(), { orderData: C } = f(), { fleetData: w } = p();
16
- return /* @__PURE__ */ y(a, {
17
- title: "Analytics",
18
- subtitle: "Business performance and insights",
19
- icon: /* @__PURE__ */ v(o, { size: 24 }),
20
- children: [
21
- /* @__PURE__ */ v(x, {
22
- icon: /* @__PURE__ */ v(o, { size: 18 }),
23
- children: "See how the operation is really performing. Track order volume, revenue, on-time rate and customer satisfaction over time so you can spot trends, find bottlenecks, and decide where to invest — whether that's more vehicles, better routes, or new customers."
24
- }),
25
- /* @__PURE__ */ y(h, {
26
- columns: 5,
27
- children: [
28
- /* @__PURE__ */ v(g, {
29
- label: "Total Orders",
30
- value: S.overview.totalOrders.toLocaleString(),
31
- icon: /* @__PURE__ */ v(c, { size: 20 }),
32
- change: "+8.2%",
33
- changeType: "positive",
34
- trend: "up"
35
- }),
36
- /* @__PURE__ */ v(g, {
37
- treatment: "glass",
38
- glow: !0,
39
- label: "Revenue",
40
- value: _(S.overview.totalRevenue),
41
- icon: /* @__PURE__ */ v(s, { size: 20 }),
42
- change: "+12.5%",
43
- changeType: "positive",
44
- trend: "up"
45
- }),
46
- /* @__PURE__ */ v(g, {
47
- label: "Active Vehicles",
48
- value: S.overview.activeVehicles,
49
- icon: /* @__PURE__ */ v(u, { size: 20 })
50
- }),
51
- /* @__PURE__ */ v(g, {
52
- label: "On-Time Rate",
53
- value: `${S.overview.onTimeDeliveryRate}%`,
54
- icon: /* @__PURE__ */ v(l, { size: 20 }),
55
- changeType: S.overview.onTimeDeliveryRate >= 90 ? "positive" : "negative"
56
- }),
57
- /* @__PURE__ */ v(g, {
58
- label: "Satisfaction",
59
- value: S.overview.customerSatisfaction.toFixed(1),
60
- icon: /* @__PURE__ */ v(d, { size: 20 }),
61
- subtitle: "out of 5"
62
- })
63
- ]
64
- }),
65
- /* @__PURE__ */ y("div", {
66
- className: "grid grid-cols-1 lg:grid-cols-2 gap-6",
67
- children: [/* @__PURE__ */ y(t, { children: [/* @__PURE__ */ v(i, { children: /* @__PURE__ */ v(r, { children: "Order Trends" }) }), /* @__PURE__ */ y(n, { children: [/* @__PURE__ */ v("div", {
68
- className: "h-64 flex items-center justify-center bg-bg-sunken/50 rounded-lg",
69
- children: /* @__PURE__ */ y("div", {
70
- className: "text-center text-text-secondary",
71
- children: [
72
- /* @__PURE__ */ v(o, {
73
- size: 48,
74
- className: "mx-auto mb-2 opacity-50"
75
- }),
76
- /* @__PURE__ */ v("p", { children: "Order trend chart" }),
77
- /* @__PURE__ */ v("p", {
78
- className: "text-xs",
79
- children: "(Chart library integration needed)"
80
- })
81
- ]
82
- })
83
- }), /* @__PURE__ */ v("div", {
84
- className: "mt-4 grid grid-cols-4 gap-2",
85
- children: C.trends.slice(-4).map((e) => /* @__PURE__ */ y("div", {
86
- className: "text-center p-2 bg-bg-sunken/50 rounded",
87
- children: [/* @__PURE__ */ v("p", {
88
- className: "text-xs text-text-secondary",
89
- children: e.date.split("-").slice(1).join("/")
90
- }), /* @__PURE__ */ v("p", {
91
- className: "font-medium",
92
- children: e.orders
93
- })]
94
- }, e.date))
95
- })] })] }), /* @__PURE__ */ y(t, { children: [/* @__PURE__ */ v(i, { children: /* @__PURE__ */ v(r, { children: "Revenue Trends" }) }), /* @__PURE__ */ y(n, { children: [/* @__PURE__ */ v("div", {
96
- className: "h-64 flex items-center justify-center bg-bg-sunken/50 rounded-lg",
97
- children: /* @__PURE__ */ y("div", {
98
- className: "text-center text-text-secondary",
99
- children: [/* @__PURE__ */ v(l, {
100
- size: 48,
101
- className: "mx-auto mb-2 opacity-50"
102
- }), /* @__PURE__ */ v("p", { children: "Revenue trend chart" })]
103
- })
104
- }), /* @__PURE__ */ v("div", {
105
- className: "mt-4 grid grid-cols-5 gap-2",
106
- children: S.trends.revenue.map((e) => /* @__PURE__ */ y("div", {
107
- className: "text-center p-2 bg-bg-sunken/50 rounded",
108
- children: [/* @__PURE__ */ v("p", {
109
- className: "text-xs text-text-secondary",
110
- children: e.month
111
- }), /* @__PURE__ */ y("p", {
112
- className: "font-medium text-sm",
113
- children: [_(e.revenue / 1e3), "k"]
114
- })]
115
- }, e.month))
116
- })] })] })]
117
- }),
118
- /* @__PURE__ */ y("div", {
119
- className: "grid grid-cols-1 lg:grid-cols-3 gap-6",
120
- children: [
121
- /* @__PURE__ */ y(t, { children: [/* @__PURE__ */ v(i, { children: /* @__PURE__ */ v(r, { children: "Orders by Status" }) }), /* @__PURE__ */ v(n, {
122
- className: "space-y-3",
123
- children: C.byStatus.filter((e) => e.count > 0).map(({ status: t, count: n }) => /* @__PURE__ */ y("div", {
124
- className: "flex items-center justify-between",
125
- children: [/* @__PURE__ */ v("span", {
126
- className: "text-sm capitalize",
127
- children: t.replace("_", " ")
128
- }), /* @__PURE__ */ y("div", {
129
- className: "flex items-center gap-2",
130
- children: [/* @__PURE__ */ v(e, {
131
- value: n / S.overview.totalOrders * 100,
132
- className: "w-20 h-2"
133
- }), /* @__PURE__ */ v("span", {
134
- className: "font-medium w-8 text-right",
135
- children: n
136
- })]
137
- })]
138
- }, t))
139
- })] }),
140
- /* @__PURE__ */ y(t, { children: [/* @__PURE__ */ v(i, { children: /* @__PURE__ */ v(r, { children: "Fleet Performance" }) }), /* @__PURE__ */ y(n, {
141
- className: "space-y-4",
142
- children: [
143
- /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ y("div", {
144
- className: "flex justify-between text-sm mb-1",
145
- children: [/* @__PURE__ */ v("span", { children: "Vehicle Utilization" }), /* @__PURE__ */ y("span", { children: [w.vehicleUtilization.toFixed(0), "%"] })]
146
- }), /* @__PURE__ */ v(e, { value: w.vehicleUtilization })] }),
147
- /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ y("div", {
148
- className: "flex justify-between text-sm mb-1",
149
- children: [/* @__PURE__ */ v("span", { children: "Avg Fuel Level" }), /* @__PURE__ */ y("span", { children: [w.avgFuelLevel.toFixed(0), "%"] })]
150
- }), /* @__PURE__ */ v(e, { value: w.avgFuelLevel })] }),
151
- /* @__PURE__ */ y("div", {
152
- className: "pt-2",
153
- children: [/* @__PURE__ */ v("p", {
154
- className: "text-sm text-text-secondary mb-2",
155
- children: "Vehicles by Type"
156
- }), w.vehiclesByType.map(({ type: e, count: t }) => /* @__PURE__ */ y("div", {
157
- className: "flex justify-between text-sm py-1",
158
- children: [/* @__PURE__ */ v("span", {
159
- className: "capitalize",
160
- children: e
161
- }), /* @__PURE__ */ v("span", {
162
- className: "font-medium",
163
- children: t
164
- })]
165
- }, e))]
166
- })
167
- ]
168
- })] }),
169
- /* @__PURE__ */ y(b, {
170
- className: "space-y-4",
171
- children: [
172
- /* @__PURE__ */ v("h2", {
173
- className: "text-base font-semibold text-text-primary",
174
- children: "Performance Metrics"
175
- }),
176
- /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("p", {
177
- className: "text-sm text-text-secondary",
178
- children: "On-Time Pickup"
179
- }), /* @__PURE__ */ y("p", {
180
- className: "text-2xl font-bold",
181
- children: [S.performance.onTimePickup, "%"]
182
- })] }),
183
- /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("p", {
184
- className: "text-sm text-text-secondary",
185
- children: "On-Time Delivery"
186
- }), /* @__PURE__ */ y("p", {
187
- className: "text-2xl font-bold",
188
- children: [S.performance.onTimeDelivery, "%"]
189
- })] }),
190
- /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("p", {
191
- className: "text-sm text-text-secondary",
192
- children: "Damaged Items"
193
- }), /* @__PURE__ */ y("p", {
194
- className: "text-2xl font-bold text-status-success-text",
195
- children: [S.performance.damagedItems, "%"]
196
- })] }),
197
- /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v("p", {
198
- className: "text-sm text-text-secondary",
199
- children: "Driver Ratings"
200
- }), /* @__PURE__ */ y("p", {
201
- className: "text-2xl font-bold",
202
- children: [S.performance.driverRatings, "/5"]
203
- })] })
204
- ]
205
- })
206
- ]
207
- })
208
- ]
209
- });
210
- }
211
- //#endregion
212
- export { S as default };
@@ -1,332 +0,0 @@
1
- import { M as e, a as t, d as n, f as r, g as i, h as a, i as o, o as s, s as c, u as l } from "./PageLayout-D3N8MCTm.js";
2
- import { t as u } from "./chevron-right-BIFGi0UA.js";
3
- import { n as d, t as f } from "./wrench-CmxY1n4I.js";
4
- import { t as p } from "./star-YsVV3MNQ.js";
5
- import { t as m } from "./truck-CtDjNFbi.js";
6
- import { t as h } from "./users-g2N0eL-Z.js";
7
- import { r as g } from "./graphqlClient-CdJyR_ed.js";
8
- import { i as _, n as v, o as y } from "./useFleet-BdETplNE.js";
9
- import { r as b, t as x } from "./MetricCard-B7yMyvMX.js";
10
- import { a as S, r as C } from "./StatusBadge-CijYQXtb.js";
11
- import { t as w } from "./navigation-BgnOfsVd.js";
12
- import { jsx as T, jsxs as E } from "react/jsx-runtime";
13
- import { CTAOverflowMenu as D, EmphasisPanel as O, NextSteps as k, PagePurpose as A } from "@burdenoff/fe-libs/ui";
14
- import { useI18n as j } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
15
- //#region src/movethewheels/pages/FleetPage.tsx
16
- function M() {
17
- let { t: M } = j(), N = (e, t) => {
18
- let n = M(e);
19
- return n === e ? t : n;
20
- }, { basePath: P, navigate: F } = g(), { stats: I } = _(), { vehicles: L } = y(), { drivers: R } = v(), z = (e) => {
21
- F && F(w(P, e));
22
- };
23
- return /* @__PURE__ */ E(o, {
24
- title: N("movethewheels.fleet.title", "Fleet Management"),
25
- subtitle: N("movethewheels.fleet.subtitle", "Manage your vehicles and drivers"),
26
- icon: /* @__PURE__ */ T(m, { size: 24 }),
27
- headerActions: /* @__PURE__ */ T(D, {
28
- primary: {
29
- label: N("movethewheels.fleet.actions.allVehicles", "All Vehicles"),
30
- icon: /* @__PURE__ */ T(m, { size: 16 }),
31
- onSelect: () => z("fleet/vehicles")
32
- },
33
- actions: [{
34
- label: N("movethewheels.fleet.actions.allDrivers", "All Drivers"),
35
- icon: /* @__PURE__ */ T(h, { size: 16 }),
36
- onSelect: () => z("fleet/drivers")
37
- }]
38
- }),
39
- children: [
40
- /* @__PURE__ */ T(A, {
41
- icon: /* @__PURE__ */ T(m, { size: 18 }),
42
- children: N("movethewheels.fleet.purpose", "Your command center for vehicles and drivers. See utilization at a glance, keep an eye on availability and ratings, and act on maintenance alerts so you always have road-ready capacity to fulfil orders.")
43
- }),
44
- /* @__PURE__ */ T(k, {
45
- storageKey: "movethewheels-fleet",
46
- steps: [
47
- {
48
- id: "vehicles",
49
- label: N("movethewheels.fleet.nextSteps.vehicles", "Review your vehicles"),
50
- description: N("movethewheels.fleet.nextSteps.vehiclesDesc", "Check capacity, fuel and maintenance status across the fleet."),
51
- icon: /* @__PURE__ */ T(m, { size: 16 }),
52
- onClick: () => z("fleet/vehicles")
53
- },
54
- {
55
- id: "drivers",
56
- label: N("movethewheels.fleet.nextSteps.drivers", "Review your drivers"),
57
- description: N("movethewheels.fleet.nextSteps.driversDesc", "See availability, ratings and delivery history before assigning work."),
58
- icon: /* @__PURE__ */ T(h, { size: 16 }),
59
- onClick: () => z("fleet/drivers")
60
- },
61
- {
62
- id: "assign",
63
- label: N("movethewheels.fleet.nextSteps.assign", "Assign capacity to orders"),
64
- description: N("movethewheels.fleet.nextSteps.assignDesc", "Open an order to assign an available vehicle and driver."),
65
- icon: /* @__PURE__ */ T(u, { size: 16 }),
66
- onClick: () => z("orders")
67
- }
68
- ]
69
- }),
70
- /* @__PURE__ */ E(b, {
71
- columns: 4,
72
- children: [
73
- /* @__PURE__ */ T(x, {
74
- label: N("movethewheels.fleet.metrics.totalVehicles", "Total Vehicles"),
75
- value: I.totalVehicles,
76
- icon: /* @__PURE__ */ T(m, { size: 20 }),
77
- subtitle: `${I.vehiclesByStatus.available} ${N("movethewheels.fleet.metrics.available", "available")}`,
78
- onClick: () => z("fleet/vehicles")
79
- }),
80
- /* @__PURE__ */ T(x, {
81
- label: N("movethewheels.fleet.metrics.totalDrivers", "Total Drivers"),
82
- value: I.totalDrivers,
83
- icon: /* @__PURE__ */ T(h, { size: 20 }),
84
- subtitle: `${I.driversByStatus.available} ${N("movethewheels.fleet.metrics.available", "available")}`,
85
- onClick: () => z("fleet/drivers")
86
- }),
87
- /* @__PURE__ */ T(x, {
88
- treatment: "glass",
89
- glow: !0,
90
- label: N("movethewheels.fleet.metrics.utilization", "Fleet Utilization"),
91
- value: `${I.utilization.toFixed(0)}%`,
92
- icon: /* @__PURE__ */ T(m, { size: 20 }),
93
- changeType: I.utilization >= 70 ? "positive" : "neutral"
94
- }),
95
- /* @__PURE__ */ T(x, {
96
- label: N("movethewheels.fleet.metrics.avgDriverRating", "Avg Driver Rating"),
97
- value: I.avgDriverRating.toFixed(1),
98
- icon: /* @__PURE__ */ T(p, { size: 20 }),
99
- subtitle: N("movethewheels.fleet.metrics.outOfFive", "out of 5"),
100
- changeType: I.avgDriverRating >= 4.5 ? "positive" : "neutral"
101
- })
102
- ]
103
- }),
104
- /* @__PURE__ */ E("div", {
105
- className: "grid grid-cols-1 lg:grid-cols-2 gap-6",
106
- children: [/* @__PURE__ */ T(t, {
107
- title: N("movethewheels.fleet.vehicles.title", "Vehicles"),
108
- actions: /* @__PURE__ */ E(l, {
109
- variant: "ghost",
110
- size: "sm",
111
- onClick: () => z("fleet/vehicles"),
112
- children: [
113
- N("movethewheels.fleet.common.viewAll", "View all"),
114
- " ",
115
- /* @__PURE__ */ T(u, { size: 16 })
116
- ]
117
- }),
118
- children: /* @__PURE__ */ T(n, { children: /* @__PURE__ */ T(r, {
119
- className: "p-0",
120
- children: /* @__PURE__ */ T("div", {
121
- className: "divide-y",
122
- children: L.slice(0, 5).map((t) => /* @__PURE__ */ T("div", {
123
- className: "p-4 hover:bg-bg-sunken/50 cursor-pointer transition-colors",
124
- onClick: () => z(`fleet/vehicles/${t.id}`),
125
- children: /* @__PURE__ */ E("div", {
126
- className: "flex items-center justify-between",
127
- children: [/* @__PURE__ */ E("div", {
128
- className: "flex items-center gap-3",
129
- children: [/* @__PURE__ */ T("div", {
130
- className: "w-10 h-10 rounded-lg bg-action-primary-bg/10 flex items-center justify-center",
131
- children: /* @__PURE__ */ T(m, {
132
- size: 20,
133
- className: "text-primary"
134
- })
135
- }), /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ E("div", {
136
- className: "flex items-center gap-2",
137
- children: [/* @__PURE__ */ T("span", {
138
- className: "font-medium",
139
- children: t.vehicleNumber
140
- }), /* @__PURE__ */ T(S, {
141
- type: t.type,
142
- size: "sm"
143
- })]
144
- }), /* @__PURE__ */ E("p", {
145
- className: "text-sm text-text-secondary",
146
- children: [
147
- t.make,
148
- " ",
149
- t.model,
150
- " (",
151
- t.year,
152
- ")"
153
- ]
154
- })] })]
155
- }), /* @__PURE__ */ E("div", {
156
- className: "text-right",
157
- children: [/* @__PURE__ */ T(C, {
158
- status: t.status,
159
- type: "vehicle",
160
- size: "sm"
161
- }), t.fuelLevel !== void 0 && /* @__PURE__ */ E("div", {
162
- className: "mt-2 flex items-center gap-2",
163
- children: [
164
- /* @__PURE__ */ T(d, {
165
- size: 12,
166
- className: "text-text-secondary"
167
- }),
168
- /* @__PURE__ */ T(e, {
169
- value: t.fuelLevel,
170
- className: "w-16 h-2"
171
- }),
172
- /* @__PURE__ */ E("span", {
173
- className: "text-xs text-text-secondary",
174
- children: [t.fuelLevel, "%"]
175
- })
176
- ]
177
- })]
178
- })]
179
- })
180
- }, t.id))
181
- })
182
- }) })
183
- }), /* @__PURE__ */ T(t, {
184
- title: N("movethewheels.fleet.drivers.title", "Drivers"),
185
- actions: /* @__PURE__ */ E(l, {
186
- variant: "ghost",
187
- size: "sm",
188
- onClick: () => z("fleet/drivers"),
189
- children: [
190
- N("movethewheels.fleet.common.viewAll", "View all"),
191
- " ",
192
- /* @__PURE__ */ T(u, { size: 16 })
193
- ]
194
- }),
195
- children: /* @__PURE__ */ T(n, { children: /* @__PURE__ */ T(r, {
196
- className: "p-0",
197
- children: /* @__PURE__ */ T("div", {
198
- className: "divide-y",
199
- children: R.slice(0, 5).map((e) => /* @__PURE__ */ T("div", {
200
- className: "p-4 hover:bg-bg-sunken/50 cursor-pointer transition-colors",
201
- onClick: () => z(`fleet/drivers/${e.id}`),
202
- children: /* @__PURE__ */ E("div", {
203
- className: "flex items-center justify-between",
204
- children: [/* @__PURE__ */ E("div", {
205
- className: "flex items-center gap-3",
206
- children: [/* @__PURE__ */ T(s, { children: /* @__PURE__ */ T(c, { children: e.fullName.split(" ").map((e) => e[0]).join("") }) }), /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
207
- className: "font-medium",
208
- children: e.fullName
209
- }), /* @__PURE__ */ E("p", {
210
- className: "text-sm text-text-secondary",
211
- children: [
212
- e.employeeId,
213
- " - ",
214
- e.completedOrders,
215
- " ",
216
- N("movethewheels.fleet.drivers.deliveries", "deliveries")
217
- ]
218
- })] })]
219
- }), /* @__PURE__ */ E("div", {
220
- className: "text-right",
221
- children: [/* @__PURE__ */ T(C, {
222
- status: e.status,
223
- type: "driver",
224
- size: "sm"
225
- }), /* @__PURE__ */ E("div", {
226
- className: "mt-1 flex items-center gap-1 justify-end",
227
- children: [/* @__PURE__ */ T(p, {
228
- size: 12,
229
- className: "text-yellow-500 fill-yellow-500"
230
- }), /* @__PURE__ */ T("span", {
231
- className: "text-sm font-medium",
232
- children: e.ratings.overall.toFixed(1)
233
- })]
234
- })]
235
- })]
236
- })
237
- }, e.id))
238
- })
239
- }) })
240
- })]
241
- }),
242
- /* @__PURE__ */ E("div", {
243
- className: "grid grid-cols-1 md:grid-cols-2 gap-6",
244
- children: [/* @__PURE__ */ E(O, {
245
- className: "space-y-4",
246
- children: [/* @__PURE__ */ T("h2", {
247
- className: "text-base font-semibold text-text-primary",
248
- children: N("movethewheels.fleet.status.vehicleTitle", "Vehicle Status")
249
- }), /* @__PURE__ */ T("div", {
250
- className: "space-y-4",
251
- children: Object.entries(I.vehiclesByStatus).map(([t, n]) => /* @__PURE__ */ E("div", {
252
- className: "flex items-center justify-between",
253
- children: [/* @__PURE__ */ T("div", {
254
- className: "flex items-center gap-3",
255
- children: /* @__PURE__ */ T(C, {
256
- status: t,
257
- type: "vehicle"
258
- })
259
- }), /* @__PURE__ */ E("div", {
260
- className: "flex items-center gap-3",
261
- children: [/* @__PURE__ */ T("span", {
262
- className: "font-medium",
263
- children: n
264
- }), /* @__PURE__ */ T(e, {
265
- value: n / I.totalVehicles * 100,
266
- className: "w-24 h-2"
267
- })]
268
- })]
269
- }, t))
270
- })]
271
- }), /* @__PURE__ */ E(n, { children: [/* @__PURE__ */ T(a, { children: /* @__PURE__ */ T(i, { children: N("movethewheels.fleet.status.driverTitle", "Driver Status") }) }), /* @__PURE__ */ T(r, { children: /* @__PURE__ */ T("div", {
272
- className: "space-y-4",
273
- children: Object.entries(I.driversByStatus).map(([t, n]) => /* @__PURE__ */ E("div", {
274
- className: "flex items-center justify-between",
275
- children: [/* @__PURE__ */ T("div", {
276
- className: "flex items-center gap-3",
277
- children: /* @__PURE__ */ T(C, {
278
- status: t,
279
- type: "driver"
280
- })
281
- }), /* @__PURE__ */ E("div", {
282
- className: "flex items-center gap-3",
283
- children: [/* @__PURE__ */ T("span", {
284
- className: "font-medium",
285
- children: n
286
- }), /* @__PURE__ */ T(e, {
287
- value: n / I.totalDrivers * 100,
288
- className: "w-24 h-2"
289
- })]
290
- })]
291
- }, t))
292
- }) })] })]
293
- }),
294
- I.vehiclesByStatus.maintenance > 0 && /* @__PURE__ */ E(n, {
295
- className: "border-status-warning-border",
296
- children: [/* @__PURE__ */ T(a, { children: /* @__PURE__ */ E(i, {
297
- className: "flex items-center gap-2 text-status-warning-text",
298
- children: [/* @__PURE__ */ T(f, { size: 18 }), N("movethewheels.fleet.maintenance.title", "Maintenance Required")]
299
- }) }), /* @__PURE__ */ T(r, { children: /* @__PURE__ */ T("div", {
300
- className: "space-y-3",
301
- children: L.filter((e) => e.status === "maintenance").map((e) => /* @__PURE__ */ E("div", {
302
- className: "flex items-center justify-between p-3 bg-status-warning-bg/10 rounded-lg",
303
- children: [/* @__PURE__ */ E("div", {
304
- className: "flex items-center gap-3",
305
- children: [/* @__PURE__ */ T(m, {
306
- size: 20,
307
- className: "text-status-warning-text"
308
- }), /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
309
- className: "font-medium",
310
- children: e.vehicleNumber
311
- }), /* @__PURE__ */ E("p", {
312
- className: "text-sm text-text-secondary",
313
- children: [
314
- e.make,
315
- " ",
316
- e.model
317
- ]
318
- })] })]
319
- }), /* @__PURE__ */ T(l, {
320
- variant: "outline",
321
- size: "sm",
322
- onClick: () => z(`fleet/vehicles/${e.id}`),
323
- children: N("movethewheels.fleet.maintenance.viewDetails", "View Details")
324
- })]
325
- }, e.id))
326
- }) })]
327
- })
328
- ]
329
- });
330
- }
331
- //#endregion
332
- export { M as default };