@burdenoff/microfe-movethewheels 2026.703.3 → 2026.703.5

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 (173) hide show
  1. package/dist/{AIAssistantPage-C3cPsWt-.js → AIAssistantPage-D2gaEL1U.js} +16 -15
  2. package/dist/AnalyticsPage-DZMlEoBi.js +194 -0
  3. package/dist/CreateOrderPage-CWHx8yys.js +490 -0
  4. package/dist/CustomerDetailsPage-nR4oZ_ju.js +615 -0
  5. package/dist/CustomersPage-Bbvwvn8k.js +205 -0
  6. package/dist/DashboardPage-DrEhNf7N.js +542 -0
  7. package/dist/DataTable-CqMUD4er.js +340 -0
  8. package/dist/DocumentsCard-edDkgnJj.js +169 -0
  9. package/dist/DriverDetailsPage-whEMOWs9.js +490 -0
  10. package/dist/DriversPage-CHF2ZEzd.js +221 -0
  11. package/dist/FinancePage-Dn9GrW-1.js +175 -0
  12. package/dist/{FleetPage-DqkFi3s3.js → FleetPage-CrtGPy-p.js} +36 -35
  13. package/dist/{FormError-BlOjnXOq.js → FormError-BKcb_wT-.js} +1 -1
  14. package/dist/{ImportExportPage-DKJRCezl.js → ImportExportPage-WYdwZomZ.js} +52 -72
  15. package/dist/InventoryPage-l5A1f753.js +259 -0
  16. package/dist/LiveTrackingPage-DhEaNKZ4.js +429 -0
  17. package/dist/MarketplacePage-B9RYOb1Y.js +426 -0
  18. package/dist/MetricCard-y3bWHKUQ.js +191 -0
  19. package/dist/Notice-DOO-tjpV.js +46 -0
  20. package/dist/OrderDetailsPage-CwYHwk1K.js +584 -0
  21. package/dist/OrdersListPage-DhZJoQeI.js +386 -0
  22. package/dist/{PageLayout-D4LDHJJq.js → PageLayout-BniRJaQ6.js} +1 -1
  23. package/dist/{ProductDetailsPage-C9uOiYLp.js → ProductDetailsPage-1Gm9JKy0.js} +56 -56
  24. package/dist/ProductsPage-C8sn-1tN.js +186 -0
  25. package/dist/ReportsPage-D1tb0dcz.js +377 -0
  26. package/dist/RouteDetailsPage-CkMyR9b_.js +610 -0
  27. package/dist/{RoutesPage-DMfoicM1.js → RoutesPage-QkENzsE5.js} +58 -47
  28. package/dist/{SettingsPage-Bn-v0mbQ.js → SettingsPage-DV3_tU_X.js} +16 -38
  29. package/dist/Sparkline-K2RMJ58u.js +16729 -0
  30. package/dist/{StatusBadge-BZurYHMy.js → StatusBadge-BNHXYvZx.js} +7 -7
  31. package/dist/TrackingPage-BZrg4RCu.js +368 -0
  32. package/dist/VehicleDetailsPage-D-8XPZ2G.js +393 -0
  33. package/dist/VehiclesPage-D5BELbtM.js +184 -0
  34. package/dist/{WarehouseDetailsPage-L_6sWigM.js → WarehouseDetailsPage-Cmg-8Frn.js} +70 -70
  35. package/dist/WarehousesPage-C1Y1M867.js +182 -0
  36. package/dist/{arrow-left-n48Y-Wis.js → arrow-left-ClW4Isj7.js} +1 -1
  37. package/dist/arrow-right-CmKOmIkh.js +11 -0
  38. package/dist/arrow-up-BJijRLAZ.js +17 -0
  39. package/dist/{box-D9Pal4HM.js → box-BT3NsRQP.js} +1 -1
  40. package/dist/boxes-B_OGvQiW.js +54 -0
  41. package/dist/{chart-column-BFIJysDR.js → chart-column-DQTTdUPk.js} +1 -1
  42. package/dist/charts-Tj_PPTfA.js +2018 -0
  43. package/dist/chevron-left-B1rZyWWb.js +8 -0
  44. package/dist/{chevron-right-EMIIyyJ1.js → chevron-right-BIcwUJZq.js} +1 -1
  45. package/dist/chunk-BdsCSvBP.js +20 -0
  46. package/dist/{circle-alert-iY24lSlp.js → circle-alert-CNkuDNc6.js} +1 -1
  47. package/dist/circle-check-Cs1OVjtV.js +13 -0
  48. package/dist/{circle-check-big-w0TrLKMF.js → circle-check-big-C-p4eNwn.js} +1 -1
  49. package/dist/{clock-DJZtdl8u.js → clock-dRGG4rkF.js} +1 -1
  50. package/dist/{dollar-sign-CgKQRz_e.js → dollar-sign-B6RoYHHz.js} +1 -1
  51. package/dist/{download-DRXxoiQR.js → download-DP04iWTd.js} +1 -1
  52. package/dist/{file-text-DWWY6_f5.js → file-text-BuDx4hZp.js} +1 -1
  53. package/dist/{filter-DloLC2eE.js → filter-BD483_8g.js} +1 -1
  54. package/dist/{wrench-CANXWxF-.js → fuel-DLH1ag04.js} +3 -6
  55. package/dist/index.css +2 -0
  56. package/dist/index.js +150 -172
  57. package/dist/{map-CkJaULb2.js → map-DNQn9fyY.js} +1 -1
  58. package/dist/{map-pin-BGiCvyCs.js → map-pin-CqN1bbT1.js} +1 -1
  59. package/dist/mapMarkers-NCV9MRKR.js +28 -0
  60. package/dist/maps-yzLqiK_C.js +5070 -0
  61. package/dist/{navigation-D36prnAn.js → navigation-CgGUt2tR.js} +1 -1
  62. package/dist/{package-BChUzpJS.js → package-DmRF7iQD.js} +1 -1
  63. package/dist/{phone-Ac9s3mo_.js → phone-Cl32EXKW.js} +1 -1
  64. package/dist/{plus-Z76q-FZm.js → plus-DlANgOFx.js} +1 -1
  65. package/dist/{refresh-cw-DKt6f5T6.js → refresh-cw-rW59D4b7.js} +1 -1
  66. package/dist/route-CWjPrtAN.js +22 -0
  67. package/dist/{save-CojywNhG.js → save-UDlog7hg.js} +1 -1
  68. package/dist/{search-CDGefqb3.js → search-DNIG5Ck7.js} +1 -1
  69. package/dist/{square-pen-CopE9GmB.js → square-pen-BcfB3Grd.js} +1 -1
  70. package/dist/{star-nHlLjDKR.js → star-CVZHFwDx.js} +1 -1
  71. package/dist/{store-BR9Voi5E.js → store-bwnmCK9f.js} +1 -1
  72. package/dist/{trash-2-BKhar6Hs.js → trash-2-B80G12d4.js} +1 -1
  73. package/dist/{trending-up-Dohgd4t_.js → trending-up-CH4R4KOa.js} +1 -1
  74. package/dist/{triangle-alert-i-XQL9Rd.js → triangle-alert-CmS8AUU6.js} +1 -1
  75. package/dist/{truck-C0v_hbLR.js → truck-9rLDncav.js} +1 -1
  76. package/dist/upload-DanJY1Vo.js +21 -0
  77. package/dist/{useAssistant-D4v3oxD3.js → useAssistant-CnEwkTLm.js} +11 -28
  78. package/dist/{useCustomers-BmTNGxiI.js → useCustomers-ChJao1ET.js} +30 -27
  79. package/dist/{useFleet-DKqXZ16m.js → useFleet-g5Yri0G8.js} +82 -70
  80. package/dist/{useImportExport-DHr-SWSw.js → useImportExport-MYwIT3rE.js} +1 -1
  81. package/dist/{useInventory-DkyiVY_A.js → useInventory-BSOn-R1c.js} +84 -39
  82. package/dist/{useOrders-Cfk1GLiq.js → useOrders-BSiqo61w.js} +59 -48
  83. package/dist/{useReports-CTqZr-AB.js → useReports-fWESfsF9.js} +41 -35
  84. package/dist/{useRoutes-BQWO607N.js → useRoutes-zD8Yp323.js} +50 -42
  85. package/dist/{useSettings-CkDH_-gM.js → useSettings-B1lsWeZ1.js} +6 -6
  86. package/dist/{useTracking-B-va1kO3.js → useTracking-BKG0I2ln.js} +3 -3
  87. package/dist/{user-jyFU3lXk.js → user-DU51el3m.js} +1 -1
  88. package/dist/user-check-IMhk-qkX.js +20 -0
  89. package/dist/{users-DZ-ilS6B.js → users-B8KhJBGg.js} +1 -1
  90. package/dist/{warehouse-6m5kXMLu.js → warehouse-CcMMioeY.js} +1 -1
  91. package/dist/wrench-Dg-sgH2e.js +8 -0
  92. package/dist/x-C4ObLVEa.js +11 -0
  93. package/package.json +5 -1
  94. package/src/movethewheels/components/DataTable.tsx +252 -84
  95. package/src/movethewheels/components/DocumentsCard.tsx +102 -0
  96. package/src/movethewheels/components/GlassPanel.tsx +71 -0
  97. package/src/movethewheels/components/MetricCard.tsx +171 -73
  98. package/src/movethewheels/components/Notice.tsx +61 -0
  99. package/src/movethewheels/components/StatusBadge.tsx +7 -6
  100. package/src/movethewheels/components/charts/ChartShell.tsx +78 -0
  101. package/src/movethewheels/components/charts/Sparkline.tsx +85 -0
  102. package/src/movethewheels/components/charts/StatusDonut.tsx +115 -0
  103. package/src/movethewheels/components/charts/TrendChart.tsx +179 -0
  104. package/src/movethewheels/components/charts/VolumeBar.tsx +97 -0
  105. package/src/movethewheels/components/charts/chartTokens.ts +43 -0
  106. package/src/movethewheels/components/charts/index.ts +9 -0
  107. package/src/movethewheels/components/index.ts +51 -1
  108. package/src/movethewheels/components/maps/LogisticsMap.tsx +94 -0
  109. package/src/movethewheels/components/maps/MapCanvas.tsx +118 -0
  110. package/src/movethewheels/components/maps/RouteMap.tsx +71 -0
  111. package/src/movethewheels/components/maps/TrackingMap.tsx +102 -0
  112. package/src/movethewheels/components/maps/index.ts +16 -0
  113. package/src/movethewheels/components/maps/leaflet-setup.ts +124 -0
  114. package/src/movethewheels/components/maps/map-markers.css +121 -0
  115. package/src/movethewheels/hooks/index.ts +9 -0
  116. package/src/movethewheels/hooks/useAnalytics.ts +109 -4
  117. package/src/movethewheels/hooks/useCustomers.ts +11 -4
  118. package/src/movethewheels/hooks/useEntityDocuments.ts +132 -0
  119. package/src/movethewheels/hooks/useFleet.ts +26 -7
  120. package/src/movethewheels/hooks/useInventory.ts +70 -7
  121. package/src/movethewheels/hooks/useOrders.ts +32 -2
  122. package/src/movethewheels/hooks/useReports.ts +14 -4
  123. package/src/movethewheels/hooks/useRoutes.ts +20 -3
  124. package/src/movethewheels/pages/AnalyticsPage.tsx +93 -73
  125. package/src/movethewheels/pages/CreateOrderPage.tsx +48 -20
  126. package/src/movethewheels/pages/CustomerDetailsPage.tsx +239 -33
  127. package/src/movethewheels/pages/CustomersPage.tsx +53 -28
  128. package/src/movethewheels/pages/DashboardPage.tsx +238 -12
  129. package/src/movethewheels/pages/DriverDetailsPage.tsx +17 -31
  130. package/src/movethewheels/pages/DriversPage.tsx +59 -31
  131. package/src/movethewheels/pages/FinancePage.tsx +103 -82
  132. package/src/movethewheels/pages/InventoryPage.tsx +15 -3
  133. package/src/movethewheels/pages/LiveTrackingPage.tsx +124 -16
  134. package/src/movethewheels/pages/MarketplacePage.tsx +265 -50
  135. package/src/movethewheels/pages/OrderDetailsPage.tsx +214 -10
  136. package/src/movethewheels/pages/OrdersListPage.tsx +118 -47
  137. package/src/movethewheels/pages/ProductsPage.tsx +52 -28
  138. package/src/movethewheels/pages/ReportsPage.tsx +88 -4
  139. package/src/movethewheels/pages/RouteDetailsPage.tsx +119 -19
  140. package/src/movethewheels/pages/RoutesPage.tsx +22 -6
  141. package/src/movethewheels/pages/SettingsPage.tsx +5 -21
  142. package/src/movethewheels/pages/TrackingPage.tsx +76 -6
  143. package/src/movethewheels/pages/VehicleDetailsPage.tsx +4 -34
  144. package/src/movethewheels/pages/VehiclesPage.tsx +58 -27
  145. package/src/movethewheels/pages/WarehouseDetailsPage.tsx +1 -1
  146. package/src/movethewheels/pages/WarehousesPage.tsx +47 -36
  147. package/src/movethewheels/types/index.ts +9 -1
  148. package/src/movethewheels/utils/download.ts +62 -0
  149. package/src/movethewheels/utils/mapMarkers.ts +58 -0
  150. package/dist/AnalyticsPage-Dz6g2MvK.js +0 -215
  151. package/dist/CreateOrderPage-C5iwnjp4.js +0 -479
  152. package/dist/CustomerDetailsPage-B6nwFyLO.js +0 -406
  153. package/dist/CustomersPage-BKxMS1AV.js +0 -161
  154. package/dist/DashboardPage-BVjQi0EB.js +0 -387
  155. package/dist/DataTable-DmciIKKM.js +0 -249
  156. package/dist/DriverDetailsPage-CN3WQ0B9.js +0 -507
  157. package/dist/DriversPage-CH9rjQC-.js +0 -165
  158. package/dist/FinancePage-DEDykSOP.js +0 -158
  159. package/dist/InventoryPage-e0ze63iX.js +0 -253
  160. package/dist/LiveTrackingPage-DCX-K-LR.js +0 -379
  161. package/dist/MarketplacePage-CIQ97_zp.js +0 -247
  162. package/dist/MetricCard-BY0QrMD4.js +0 -146
  163. package/dist/OrderDetailsPage-DYiZ-9UK.js +0 -429
  164. package/dist/OrdersListPage-Cn90P1Xx.js +0 -307
  165. package/dist/ProductsPage-QJfHHpqB.js +0 -169
  166. package/dist/ReportsPage-Zp53q3_8.js +0 -284
  167. package/dist/RouteDetailsPage-DUStXSf9.js +0 -531
  168. package/dist/TrackingPage-W-jtdM3Y.js +0 -325
  169. package/dist/VehicleDetailsPage-Bceo5oz3.js +0 -410
  170. package/dist/VehiclesPage-ApKThYeG.js +0 -165
  171. package/dist/WarehousesPage-DCbXXXWE.js +0 -162
  172. package/dist/useAnalytics-DS8n0xgg.js +0 -297
  173. /package/dist/{formatters-CF2S2l1m.js → formatters-FWJDwTFv.js} +0 -0
@@ -1,12 +1,13 @@
1
- import { A as e, N as t, d as n, f as r, g as i, h as a, i as o, l as s, lt as c, u as l } from "./PageLayout-D4LDHJJq.js";
2
- import { n as u, r as d, t as f } from "./useAssistant-D4v3oxD3.js";
3
- import { t as p } from "./circle-alert-iY24lSlp.js";
4
- import { t as m } from "./trending-up-Dohgd4t_.js";
1
+ import { A as e, N as t, d as n, f as r, g as i, h as a, i as o, l as s, u as c, ut as l } from "./PageLayout-BniRJaQ6.js";
2
+ import { n as u, t as d } from "./useAssistant-CnEwkTLm.js";
3
+ import { t as f } from "./circle-alert-CNkuDNc6.js";
4
+ import { t as p } from "./route-CWjPrtAN.js";
5
+ import { t as m } from "./trending-up-CH4R4KOa.js";
5
6
  import { useState as h } from "react";
6
7
  import { jsx as g, jsxs as _ } from "react/jsx-runtime";
7
8
  import { GlassCard as v, PagePurpose as y } from "@burdenoff/fe-libs/ui";
8
9
  //#region node_modules/lucide-react/dist/esm/icons/lightbulb.js
9
- var b = c("Lightbulb", [
10
+ var b = l("Lightbulb", [
10
11
  ["path", {
11
12
  d: "M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",
12
13
  key: "1gvzjb"
@@ -19,13 +20,13 @@ var b = c("Lightbulb", [
19
20
  d: "M10 22h4",
20
21
  key: "ceow96"
21
22
  }]
22
- ]), x = c("Send", [["path", {
23
+ ]), x = l("Send", [["path", {
23
24
  d: "M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",
24
25
  key: "1ffxy3"
25
26
  }], ["path", {
26
27
  d: "m21.854 2.147-10.94 10.939",
27
28
  key: "12cjpa"
28
- }]]), S = c("Sparkles", [
29
+ }]]), S = l("Sparkles", [
29
30
  ["path", {
30
31
  d: "M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z",
31
32
  key: "4pj2yx"
@@ -50,12 +51,12 @@ var b = c("Lightbulb", [
50
51
  //#endregion
51
52
  //#region src/movethewheels/pages/AIAssistantPage.tsx
52
53
  function C() {
53
- let { ask: c, isLoading: C } = f(), [w, T] = h(""), [E, D] = h([{
54
+ let { ask: l, isLoading: C } = d(), [w, T] = h(""), [E, D] = h([{
54
55
  role: "assistant",
55
56
  content: "Hello! I'm your logistics assistant. Ask me about your orders, deliveries, fleet or inventory and I'll answer from your live operational data."
56
57
  }]), O = [
57
58
  {
58
- icon: u,
59
+ icon: p,
59
60
  text: "Optimize today's delivery routes",
60
61
  category: "Route Planning"
61
62
  },
@@ -65,7 +66,7 @@ function C() {
65
66
  category: "Analytics"
66
67
  },
67
68
  {
68
- icon: p,
69
+ icon: f,
69
70
  text: "Identify potential delivery delays",
70
71
  category: "Alerts"
71
72
  },
@@ -88,7 +89,7 @@ function C() {
88
89
  content: t
89
90
  }]);
90
91
  try {
91
- let e = await c(t);
92
+ let e = await l(t);
92
93
  D((t) => [...t, {
93
94
  role: "assistant",
94
95
  content: e.answer
@@ -107,9 +108,9 @@ function C() {
107
108
  return /* @__PURE__ */ _(o, {
108
109
  title: "AI Assistant",
109
110
  subtitle: "Intelligent logistics support",
110
- icon: /* @__PURE__ */ g(d, { size: 24 }),
111
+ icon: /* @__PURE__ */ g(u, { size: 24 }),
111
112
  children: [/* @__PURE__ */ g(y, {
112
- icon: /* @__PURE__ */ g(d, { size: 18 }),
113
+ icon: /* @__PURE__ */ g(u, { size: 18 }),
113
114
  children: "Ask plain-English questions about your operation and get answers backed by your own data. Use it to optimize routes, forecast demand, spot likely delays, and run what-if scenarios (e.g. “what if I add two vehicles?”) — like having a logistics analyst on call."
114
115
  }), /* @__PURE__ */ _("div", {
115
116
  className: "grid grid-cols-1 lg:grid-cols-3 gap-6",
@@ -169,7 +170,7 @@ function C() {
169
170
  placeholder: "Ask me anything about your logistics operations...",
170
171
  disabled: C,
171
172
  onKeyPress: (e) => e.key === "Enter" && j()
172
- }), /* @__PURE__ */ g(l, {
173
+ }), /* @__PURE__ */ g(c, {
173
174
  onClick: j,
174
175
  disabled: C || !w.trim(),
175
176
  children: /* @__PURE__ */ g(x, { size: 16 })
@@ -183,7 +184,7 @@ function C() {
183
184
  children: [
184
185
  /* @__PURE__ */ _(n, { children: [/* @__PURE__ */ g(a, { children: /* @__PURE__ */ g(i, { children: "Quick Actions" }) }), /* @__PURE__ */ g(r, {
185
186
  className: "space-y-2",
186
- children: O.map((e, t) => /* @__PURE__ */ _(l, {
187
+ children: O.map((e, t) => /* @__PURE__ */ _(c, {
187
188
  variant: "outline",
188
189
  className: "w-full justify-start text-left h-auto py-3",
189
190
  disabled: C,
@@ -0,0 +1,194 @@
1
+ import { M as e, d as t, f as n, g as r, h as i, i as a, u as o } from "./PageLayout-BniRJaQ6.js";
2
+ import { t as s } from "./chart-column-DQTTdUPk.js";
3
+ import { t as c } from "./dollar-sign-B6RoYHHz.js";
4
+ import { t as l } from "./package-DmRF7iQD.js";
5
+ import { t as u } from "./star-CVZHFwDx.js";
6
+ import { t as d } from "./trending-up-CH4R4KOa.js";
7
+ import { t as f } from "./users-B8KhJBGg.js";
8
+ import { l as p, n as m, o as h, r as g, t as _, u as v } from "./charts-Tj_PPTfA.js";
9
+ import { n as y, r as b, t as x } from "./MetricCard-y3bWHKUQ.js";
10
+ import { n as S } from "./formatters-FWJDwTFv.js";
11
+ import { useMemo as C } from "react";
12
+ import { jsx as w, jsxs as T } from "react/jsx-runtime";
13
+ import { EmphasisPanel as E, PagePurpose as D } from "@burdenoff/fe-libs/ui";
14
+ //#region src/movethewheels/pages/AnalyticsPage.tsx
15
+ var O = (e) => e.replace(/_/g, " ").replace(/\b\w/g, (e) => e.toUpperCase());
16
+ function k() {
17
+ let { analytics: k, isLoading: A, error: j, refetch: M } = h(), { orderData: N } = v(), { fleetData: P } = p(), F = C(() => k.trends.dailyOrders.map((e) => e.orders), [k.trends.dailyOrders]), I = C(() => k.trends.revenue.map((e) => ({
18
+ month: e.month,
19
+ revenue: e.revenue
20
+ })), [k.trends.revenue]), L = C(() => N.byStatus.filter((e) => e.count > 0).map((e) => ({
21
+ name: O(e.status),
22
+ value: e.count
23
+ })), [N.byStatus]), R = L.reduce((e, t) => e + t.value, 0);
24
+ return /* @__PURE__ */ T(a, {
25
+ title: "Analytics",
26
+ subtitle: "Business performance and insights",
27
+ icon: /* @__PURE__ */ w(s, { size: 24 }),
28
+ children: [
29
+ /* @__PURE__ */ w(D, {
30
+ icon: /* @__PURE__ */ w(s, { size: 18 }),
31
+ 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."
32
+ }),
33
+ j && !A ? /* @__PURE__ */ w(t, {
34
+ className: "border-status-error-border",
35
+ children: /* @__PURE__ */ T(n, {
36
+ className: "p-6 text-center space-y-3",
37
+ children: [
38
+ /* @__PURE__ */ w("p", {
39
+ className: "text-status-error-text font-medium",
40
+ children: "Couldn't load analytics"
41
+ }),
42
+ /* @__PURE__ */ w("p", {
43
+ className: "text-sm text-text-secondary",
44
+ children: j.message
45
+ }),
46
+ /* @__PURE__ */ w(o, {
47
+ variant: "outline",
48
+ onClick: M,
49
+ children: "Retry"
50
+ })
51
+ ]
52
+ })
53
+ }) : A ? /* @__PURE__ */ w(b, {
54
+ columns: 4,
55
+ children: Array.from({ length: 4 }).map((e, t) => /* @__PURE__ */ w(y, {}, t))
56
+ }) : /* @__PURE__ */ T(b, {
57
+ columns: 4,
58
+ children: [
59
+ /* @__PURE__ */ w(x, {
60
+ label: "Order Volume",
61
+ value: k.overview.totalOrders.toLocaleString(),
62
+ icon: /* @__PURE__ */ w(l, { size: 20 }),
63
+ accent: "brand",
64
+ sparklineData: F.length >= 2 ? F : void 0
65
+ }),
66
+ /* @__PURE__ */ w(x, {
67
+ treatment: "glass",
68
+ glow: !0,
69
+ label: "Revenue",
70
+ value: S(k.overview.totalRevenue),
71
+ icon: /* @__PURE__ */ w(c, { size: 20 }),
72
+ accent: "success"
73
+ }),
74
+ /* @__PURE__ */ w(x, {
75
+ label: "On-Time Delivery",
76
+ value: `${k.overview.onTimeDeliveryRate.toFixed(1)}%`,
77
+ icon: /* @__PURE__ */ w(d, { size: 20 }),
78
+ accent: "blue",
79
+ delta: k.overview.onTimeDeliveryRate >= 90 ? {
80
+ value: "On target",
81
+ direction: "up"
82
+ } : {
83
+ value: "Below 90%",
84
+ direction: "down"
85
+ }
86
+ }),
87
+ /* @__PURE__ */ w(x, {
88
+ label: "Customer Satisfaction",
89
+ value: k.overview.customerSatisfaction.toFixed(1),
90
+ icon: /* @__PURE__ */ w(u, { size: 20 }),
91
+ accent: "warning",
92
+ subtitle: "out of 5"
93
+ })
94
+ ]
95
+ }),
96
+ /* @__PURE__ */ T(t, { children: [/* @__PURE__ */ w(i, { children: /* @__PURE__ */ w(r, { children: "Order & delivery trend" }) }), /* @__PURE__ */ w(n, { children: /* @__PURE__ */ w(g, {
97
+ xKey: "date",
98
+ height: 300,
99
+ data: k.trends.dailyOrders,
100
+ series: [{
101
+ dataKey: "orders",
102
+ name: "Orders"
103
+ }, {
104
+ dataKey: "deliveries",
105
+ name: "Deliveries"
106
+ }],
107
+ emptyMessage: "No order trend recorded yet"
108
+ }) })] }),
109
+ /* @__PURE__ */ T("div", {
110
+ className: "grid grid-cols-1 lg:grid-cols-2 gap-6",
111
+ children: [/* @__PURE__ */ T(t, { children: [/* @__PURE__ */ w(i, { children: /* @__PURE__ */ w(r, { children: "Revenue by month" }) }), /* @__PURE__ */ w(n, { children: /* @__PURE__ */ w(m, {
112
+ xKey: "month",
113
+ height: 280,
114
+ showLegend: !1,
115
+ data: I,
116
+ series: [{
117
+ dataKey: "revenue",
118
+ name: "Revenue"
119
+ }],
120
+ valueFormatter: (e) => S(Number(e)),
121
+ emptyMessage: "No revenue recorded yet"
122
+ }) })] }), /* @__PURE__ */ T(t, { children: [/* @__PURE__ */ w(i, { children: /* @__PURE__ */ w(r, { children: "Orders by status" }) }), /* @__PURE__ */ w(n, { children: /* @__PURE__ */ w(_, {
123
+ data: L,
124
+ height: 240,
125
+ centerLabel: R.toLocaleString(),
126
+ centerSubLabel: "orders",
127
+ emptyMessage: "No orders to break down yet"
128
+ }) })] })]
129
+ }),
130
+ /* @__PURE__ */ T("div", {
131
+ className: "grid grid-cols-1 lg:grid-cols-2 gap-6",
132
+ children: [/* @__PURE__ */ T(t, { children: [/* @__PURE__ */ w(i, { children: /* @__PURE__ */ w(r, { children: "Fleet Performance" }) }), /* @__PURE__ */ T(n, {
133
+ className: "space-y-4",
134
+ children: [/* @__PURE__ */ T("div", { children: [/* @__PURE__ */ T("div", {
135
+ className: "flex justify-between text-sm mb-1",
136
+ children: [/* @__PURE__ */ w("span", { children: "Vehicle Utilization" }), /* @__PURE__ */ T("span", { children: [P.vehicleUtilization.toFixed(0), "%"] })]
137
+ }), /* @__PURE__ */ w(e, { value: P.vehicleUtilization })] }), P.vehiclesByType.length > 0 && /* @__PURE__ */ T("div", {
138
+ className: "pt-2",
139
+ children: [/* @__PURE__ */ w("p", {
140
+ className: "text-sm text-text-secondary mb-2",
141
+ children: "Vehicles by Type"
142
+ }), P.vehiclesByType.map(({ type: e, count: t }) => /* @__PURE__ */ T("div", {
143
+ className: "flex justify-between text-sm py-1",
144
+ children: [/* @__PURE__ */ w("span", {
145
+ className: "capitalize",
146
+ children: e
147
+ }), /* @__PURE__ */ w("span", {
148
+ className: "font-medium",
149
+ children: t
150
+ })]
151
+ }, e))]
152
+ })]
153
+ })] }), /* @__PURE__ */ T(E, {
154
+ className: "space-y-4",
155
+ children: [
156
+ /* @__PURE__ */ w("h2", {
157
+ className: "text-base font-semibold text-text-primary",
158
+ children: "Performance Metrics"
159
+ }),
160
+ /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
161
+ className: "text-sm text-text-secondary",
162
+ children: "On-Time Delivery"
163
+ }), /* @__PURE__ */ T("p", {
164
+ className: "text-2xl font-bold",
165
+ children: [k.performance.onTimeDelivery.toFixed(1), "%"]
166
+ })] }),
167
+ /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
168
+ className: "text-sm text-text-secondary",
169
+ children: "Customer Satisfaction"
170
+ }), /* @__PURE__ */ T("p", {
171
+ className: "text-2xl font-bold",
172
+ children: [k.overview.customerSatisfaction.toFixed(1), "/5"]
173
+ })] }),
174
+ /* @__PURE__ */ T("div", {
175
+ className: "flex items-center gap-2",
176
+ children: [/* @__PURE__ */ w(f, {
177
+ size: 16,
178
+ className: "text-text-secondary"
179
+ }), /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
180
+ className: "text-sm text-text-secondary",
181
+ children: "Driver Ratings"
182
+ }), /* @__PURE__ */ T("p", {
183
+ className: "text-2xl font-bold",
184
+ children: [k.performance.driverRatings.toFixed(1), "/5"]
185
+ })] })]
186
+ })
187
+ ]
188
+ })]
189
+ })
190
+ ]
191
+ });
192
+ }
193
+ //#endregion
194
+ export { k as default };