@burdenoff/microfe-movethewheels 2026.1031.2 → 2026.1031.4

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 (74) hide show
  1. package/dist/MoveTheWheelsRoot.js +121 -104
  2. package/dist/MoveTheWheelsRoutes.js +142 -133
  3. package/dist/components/DocumentsCard.js +11 -11
  4. package/dist/components/ProofOfDeliveryCard.js +13 -13
  5. package/dist/components/ShipmentRiskDialog.js +24 -24
  6. package/dist/components/ShippingQuoteResults.js +46 -46
  7. package/dist/components/TrackingAlertList.js +17 -17
  8. package/dist/generated/tracking-quality-operations.d.ts +140 -0
  9. package/dist/hooks/useEntityImport.js +68 -0
  10. package/dist/hooks/useOrderDispatch.js +17 -17
  11. package/dist/movethewheels/hooks/useEntityImport.d.ts +19 -0
  12. package/dist/movethewheels/pages/ImportExportPage.d.ts +9 -0
  13. package/dist/movethewheels/pages/SettingsPage.d.ts +1 -0
  14. package/dist/movethewheels/providers/ModuleSettingsProvider.d.ts +17 -0
  15. package/dist/movethewheels/utils/entityImport.d.ts +109 -0
  16. package/dist/movethewheels/utils/formatters.d.ts +23 -3
  17. package/dist/movethewheels/utils/moduleSettings.d.ts +52 -0
  18. package/dist/node_modules/lucide-react/dist/esm/icons/arrow-down-up.js +22 -0
  19. package/dist/node_modules/lucide-react/dist/esm/icons/bell.js +11 -0
  20. package/dist/node_modules/lucide-react/dist/esm/icons/file-spreadsheet.js +30 -0
  21. package/dist/node_modules/lucide-react/dist/esm/icons/file-up.js +22 -0
  22. package/dist/node_modules/lucide-react/dist/esm/icons/key-round.js +14 -0
  23. package/dist/node_modules/lucide-react/dist/esm/icons/plug.js +22 -0
  24. package/dist/node_modules/lucide-react/dist/esm/icons/rotate-ccw.js +11 -0
  25. package/dist/node_modules/lucide-react/dist/esm/icons/settings.js +13 -0
  26. package/dist/pages/AnalyticsPage.js +27 -27
  27. package/dist/pages/CreateOrderPage.js +340 -317
  28. package/dist/pages/CustomerDetailsPage.js +246 -246
  29. package/dist/pages/CustomersPage.js +88 -79
  30. package/dist/pages/DashboardPage.js +24 -24
  31. package/dist/pages/DeliveryCapturePage.js +74 -74
  32. package/dist/pages/DriverDetailsPage.js +337 -337
  33. package/dist/pages/DriversPage.js +119 -110
  34. package/dist/pages/FinancePage.js +26 -26
  35. package/dist/pages/ImportExportPage.js +435 -0
  36. package/dist/pages/InventoryPage.js +28 -28
  37. package/dist/pages/LiveTrackingPage.js +108 -108
  38. package/dist/pages/MarketplacePage.js +44 -44
  39. package/dist/pages/OrderDetailsPage.js +306 -306
  40. package/dist/pages/OrdersListPage.js +27 -27
  41. package/dist/pages/ProductDetailsPage.js +89 -89
  42. package/dist/pages/ProductsPage.js +86 -77
  43. package/dist/pages/RouteDetailsPage.js +282 -285
  44. package/dist/pages/RoutesPage.js +78 -78
  45. package/dist/pages/SettingsPage.js +459 -0
  46. package/dist/pages/TrackingPage.js +41 -41
  47. package/dist/pages/VehicleDetailsPage.js +207 -207
  48. package/dist/pages/VehiclesPage.js +100 -90
  49. package/dist/pages/WarehouseDetailsPage.js +132 -132
  50. package/dist/pages/WarehousesPage.js +97 -88
  51. package/dist/providers/ModuleSettingsProvider.js +74 -0
  52. package/dist/utils/entityImport.js +73 -0
  53. package/dist/utils/formatters.js +53 -26
  54. package/dist/utils/moduleSettings.js +132 -0
  55. package/package.json +4 -2
  56. package/src/generated/tracking-quality-operations.ts +184 -0
  57. package/src/movethewheels/MoveTheWheelsRoot.tsx +22 -3
  58. package/src/movethewheels/MoveTheWheelsRoutes.tsx +13 -0
  59. package/src/movethewheels/hooks/useEntityImport.ts +108 -0
  60. package/src/movethewheels/pages/CreateOrderPage.tsx +38 -6
  61. package/src/movethewheels/pages/CustomersPage.tsx +6 -1
  62. package/src/movethewheels/pages/DriversPage.tsx +6 -0
  63. package/src/movethewheels/pages/ImportExportPage.tsx +483 -0
  64. package/src/movethewheels/pages/ProductsPage.tsx +16 -3
  65. package/src/movethewheels/pages/RouteDetailsPage.tsx +3 -6
  66. package/src/movethewheels/pages/RoutesPage.tsx +2 -2
  67. package/src/movethewheels/pages/SettingsPage.tsx +516 -0
  68. package/src/movethewheels/pages/VehicleDetailsPage.tsx +4 -2
  69. package/src/movethewheels/pages/VehiclesPage.tsx +8 -1
  70. package/src/movethewheels/pages/WarehousesPage.tsx +6 -1
  71. package/src/movethewheels/providers/ModuleSettingsProvider.tsx +133 -0
  72. package/src/movethewheels/utils/entityImport.ts +239 -0
  73. package/src/movethewheels/utils/formatters.ts +69 -10
  74. package/src/movethewheels/utils/moduleSettings.ts +224 -0
@@ -3,97 +3,106 @@ import { Download as t } from "../node_modules/lucide-react/dist/esm/icons/downl
3
3
  import { Plus as n } from "../node_modules/lucide-react/dist/esm/icons/plus.js";
4
4
  import { RefreshCw as r } from "../node_modules/lucide-react/dist/esm/icons/refresh-cw.js";
5
5
  import { Star as i } from "../node_modules/lucide-react/dist/esm/icons/star.js";
6
- import { Users as a } from "../node_modules/lucide-react/dist/esm/icons/users.js";
7
- import { joinPath as o } from "../utils/navigation.js";
8
- import { useMoveTheWheels as s } from "../providers/MoveTheWheelsProvider.js";
9
- import { useCustomerStats as c, useCustomers as l } from "../hooks/useCustomers.js";
10
- import { Avatar as u, AvatarFallback as d, Button as f } from "../components/ui.js";
11
- import { PageLayout as p } from "../components/PageLayout.js";
12
- import { MetricCard as m, MetricGrid as h } from "../components/MetricCard.js";
13
- import { TypeBadge as g } from "../components/StatusBadge.js";
14
- import { DataTable as _ } from "../components/DataTable.js";
15
- import { formatDate as v } from "../utils/formatters.js";
16
- import { useDebouncedValue as y } from "../hooks/useDebouncedValue.js";
17
- import { useEntityExport as b } from "../hooks/useEntityExport.js";
18
- import { ExportStatusBanner as x } from "../components/ExportStatusBanner.js";
19
- import { useState as S } from "react";
20
- import { jsx as C, jsxs as w } from "react/jsx-runtime";
21
- import { CTAOverflowMenu as T, PagePurpose as E } from "@burdenoff/fe-libs/ui";
6
+ import { Upload as a } from "../node_modules/lucide-react/dist/esm/icons/upload.js";
7
+ import { Users as o } from "../node_modules/lucide-react/dist/esm/icons/users.js";
8
+ import { joinPath as s } from "../utils/navigation.js";
9
+ import { useMoveTheWheels as c } from "../providers/MoveTheWheelsProvider.js";
10
+ import { formatDate as l } from "../utils/formatters.js";
11
+ import { useCustomerStats as u, useCustomers as d } from "../hooks/useCustomers.js";
12
+ import { Avatar as f, AvatarFallback as p, Button as m } from "../components/ui.js";
13
+ import { PageLayout as h } from "../components/PageLayout.js";
14
+ import { MetricCard as g, MetricGrid as _ } from "../components/MetricCard.js";
15
+ import { TypeBadge as v } from "../components/StatusBadge.js";
16
+ import { DataTable as y } from "../components/DataTable.js";
17
+ import { useDebouncedValue as b } from "../hooks/useDebouncedValue.js";
18
+ import { useEntityExport as x } from "../hooks/useEntityExport.js";
19
+ import { ExportStatusBanner as S } from "../components/ExportStatusBanner.js";
20
+ import { useState as C } from "react";
21
+ import { jsx as w, jsxs as T } from "react/jsx-runtime";
22
+ import { CTAOverflowMenu as E, PagePurpose as D } from "@burdenoff/fe-libs/ui";
22
23
  //#region src/movethewheels/pages/CustomersPage.tsx
23
- function D() {
24
- let { basePath: D, navigate: O } = s(), { state: k, isExporting: A, startExport: j, dismiss: M } = b("customers", "customer"), [N, P] = S(0), [F, I] = S(25), [L, R] = S(""), z = y(L), { customers: B, totalCustomers: V, hasMore: H, isLoading: U, error: W, refetch: G } = l({
25
- limit: F,
26
- offset: N * F,
27
- filters: { search: z }
28
- }), { stats: K } = c(), q = (e) => O?.(o(D, e));
29
- return /* @__PURE__ */ w(p, {
24
+ function O() {
25
+ let { basePath: O, navigate: k } = c(), { state: A, isExporting: j, startExport: M, dismiss: N } = x("customers", "customer"), [P, F] = C(0), [I, L] = C(25), [R, z] = C(""), B = b(R), { customers: V, totalCustomers: H, hasMore: U, isLoading: W, error: G, refetch: K } = d({
26
+ limit: I,
27
+ offset: P * I,
28
+ filters: { search: B }
29
+ }), { stats: q } = u(), J = (e) => k?.(s(O, e));
30
+ return /* @__PURE__ */ T(h, {
30
31
  title: "Customers",
31
- subtitle: `${K.total} customers`,
32
- icon: /* @__PURE__ */ C(a, { size: 24 }),
33
- headerActions: /* @__PURE__ */ C(T, {
32
+ subtitle: `${q.total} customers`,
33
+ icon: /* @__PURE__ */ w(o, { size: 24 }),
34
+ headerActions: /* @__PURE__ */ w(E, {
34
35
  primary: {
35
36
  label: "Add Customer",
36
- icon: /* @__PURE__ */ C(n, { size: 16 }),
37
- onSelect: () => q("customers/new")
37
+ icon: /* @__PURE__ */ w(n, { size: 16 }),
38
+ onSelect: () => J("customers/new")
38
39
  },
39
- actions: [{
40
- label: "Refresh",
41
- icon: /* @__PURE__ */ C(r, { size: 16 }),
42
- onSelect: () => G()
43
- }, {
44
- label: A ? "Exporting…" : "Export",
45
- icon: /* @__PURE__ */ C(t, { size: 16 }),
46
- onSelect: j
47
- }]
40
+ actions: [
41
+ {
42
+ label: "Refresh",
43
+ icon: /* @__PURE__ */ w(r, { size: 16 }),
44
+ onSelect: () => K()
45
+ },
46
+ {
47
+ label: "Import",
48
+ icon: /* @__PURE__ */ w(a, { size: 16 }),
49
+ onSelect: () => J("import-export?entity=CUSTOMER")
50
+ },
51
+ {
52
+ label: j ? "Exporting…" : "Export",
53
+ icon: /* @__PURE__ */ w(t, { size: 16 }),
54
+ onSelect: M
55
+ }
56
+ ]
48
57
  }),
49
58
  children: [
50
- /* @__PURE__ */ C(E, {
51
- icon: /* @__PURE__ */ C(a, { size: 18 }),
59
+ /* @__PURE__ */ w(D, {
60
+ icon: /* @__PURE__ */ w(o, { size: 18 }),
52
61
  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."
53
62
  }),
54
- /* @__PURE__ */ C(x, {
55
- state: k,
56
- onDismiss: M
63
+ /* @__PURE__ */ w(S, {
64
+ state: A,
65
+ onDismiss: N
57
66
  }),
58
- /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("p", {
67
+ /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
59
68
  className: "mb-3 text-sm font-medium text-text-secondary",
60
69
  children: "Customer base at a glance"
61
- }), /* @__PURE__ */ w(h, {
70
+ }), /* @__PURE__ */ T(_, {
62
71
  columns: 3,
63
72
  children: [
64
- /* @__PURE__ */ C(m, {
73
+ /* @__PURE__ */ w(g, {
65
74
  label: "Total customers",
66
- value: K.total,
67
- icon: /* @__PURE__ */ C(a, { size: 20 }),
75
+ value: q.total,
76
+ icon: /* @__PURE__ */ w(o, { size: 20 }),
68
77
  accent: "brand"
69
78
  }),
70
- /* @__PURE__ */ C(m, {
79
+ /* @__PURE__ */ w(g, {
71
80
  label: "Avg. rating",
72
- value: K.avgRating > 0 ? K.avgRating.toFixed(1) : "—",
73
- icon: /* @__PURE__ */ C(i, { size: 20 }),
81
+ value: q.avgRating > 0 ? q.avgRating.toFixed(1) : "—",
82
+ icon: /* @__PURE__ */ w(i, { size: 20 }),
74
83
  accent: "success",
75
84
  subtitle: "Across all customers"
76
85
  }),
77
- /* @__PURE__ */ C(m, {
86
+ /* @__PURE__ */ w(g, {
78
87
  label: "Business accounts",
79
- value: K.b2b,
80
- icon: /* @__PURE__ */ C(e, { size: 20 }),
88
+ value: q.b2b,
89
+ icon: /* @__PURE__ */ w(e, { size: 20 }),
81
90
  accent: "blue",
82
91
  subtitle: "B2B relationships"
83
92
  })
84
93
  ]
85
94
  })] }),
86
- /* @__PURE__ */ C(_, {
95
+ /* @__PURE__ */ w(y, {
87
96
  columns: [
88
97
  {
89
98
  id: "customer",
90
99
  header: "Customer",
91
- cell: (e) => /* @__PURE__ */ w("div", {
100
+ cell: (e) => /* @__PURE__ */ T("div", {
92
101
  className: "flex items-center gap-3",
93
- children: [/* @__PURE__ */ C(u, { children: /* @__PURE__ */ C(d, { children: e.name.split(" ").map((e) => e[0]).join("") }) }), /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("p", {
102
+ children: [/* @__PURE__ */ w(f, { children: /* @__PURE__ */ w(p, { children: e.name.split(" ").map((e) => e[0]).join("") }) }), /* @__PURE__ */ T("div", { children: [/* @__PURE__ */ w("p", {
94
103
  className: "font-medium",
95
104
  children: e.name
96
- }), /* @__PURE__ */ C("p", {
105
+ }), /* @__PURE__ */ w("p", {
97
106
  className: "text-sm text-text-secondary",
98
107
  children: e.email
99
108
  })] })]
@@ -103,7 +112,7 @@ function D() {
103
112
  id: "type",
104
113
  header: "Type",
105
114
  accessorKey: "type",
106
- cell: (e) => /* @__PURE__ */ C(g, { type: e.type })
115
+ cell: (e) => /* @__PURE__ */ w(v, { type: e.type })
107
116
  },
108
117
  {
109
118
  id: "company",
@@ -124,12 +133,12 @@ function D() {
124
133
  {
125
134
  id: "rating",
126
135
  header: "Rating",
127
- cell: (e) => /* @__PURE__ */ w("div", {
136
+ cell: (e) => /* @__PURE__ */ T("div", {
128
137
  className: "flex items-center gap-1",
129
- children: [/* @__PURE__ */ C(i, {
138
+ children: [/* @__PURE__ */ w(i, {
130
139
  size: 14,
131
140
  className: "text-status-warning-text fill-current"
132
- }), /* @__PURE__ */ C("span", { children: e.rating === void 0 ? "Not provided" : e.rating.toFixed(1) })]
141
+ }), /* @__PURE__ */ w("span", { children: e.rating === void 0 ? "Not provided" : e.rating.toFixed(1) })]
133
142
  })
134
143
  },
135
144
  {
@@ -137,13 +146,13 @@ function D() {
137
146
  header: "Created",
138
147
  accessorKey: "createdAt",
139
148
  sortable: !0,
140
- cell: (e) => v(e.createdAt, "short")
149
+ cell: (e) => l(e.createdAt, "short")
141
150
  }
142
151
  ],
143
- data: B,
144
- isLoading: U,
145
- error: W,
146
- onRetry: G,
152
+ data: V,
153
+ isLoading: W,
154
+ error: G,
155
+ onRetry: K,
147
156
  searchable: !0,
148
157
  searchPlaceholder: "Search customers...",
149
158
  searchFields: [
@@ -151,26 +160,26 @@ function D() {
151
160
  "email",
152
161
  "company"
153
162
  ],
154
- searchQuery: L,
163
+ searchQuery: R,
155
164
  onSearchQueryChange: (e) => {
156
- R(e), P(0);
165
+ z(e), F(0);
157
166
  },
158
- onRowClick: (e) => q(`customers/${e.id}`),
167
+ onRowClick: (e) => J(`customers/${e.id}`),
159
168
  getRowId: (e) => e.id,
160
- pageIndex: N,
161
- pageSize: F,
162
- onPageChange: P,
169
+ pageIndex: P,
170
+ pageSize: I,
171
+ onPageChange: F,
163
172
  onPageSizeChange: (e) => {
164
- I(e), P(0);
173
+ L(e), F(0);
165
174
  },
166
- totalItems: V,
167
- hasNextPage: H,
175
+ totalItems: H,
176
+ hasNextPage: U,
168
177
  emptyIllustration: "empty-people",
169
178
  emptyTitle: "No customers yet",
170
179
  emptyDescription: "Add your first customer to start booking deliveries for them.",
171
- emptyAction: /* @__PURE__ */ w(f, {
172
- onClick: () => q("customers/new"),
173
- children: [/* @__PURE__ */ C(n, {
180
+ emptyAction: /* @__PURE__ */ T(m, {
181
+ onClick: () => J("customers/new"),
182
+ children: [/* @__PURE__ */ w(n, {
174
183
  size: 16,
175
184
  className: "mr-1.5"
176
185
  }), "Add Customer"]
@@ -180,4 +189,4 @@ function D() {
180
189
  });
181
190
  }
182
191
  //#endregion
183
- export { D as default };
192
+ export { O as default };
@@ -11,20 +11,20 @@ import { Truck as l } from "../node_modules/lucide-react/dist/esm/icons/truck.js
11
11
  import { Users as ee } from "../node_modules/lucide-react/dist/esm/icons/users.js";
12
12
  import { joinPath as te } from "../utils/navigation.js";
13
13
  import { useMoveTheWheels as u } from "../providers/MoveTheWheelsProvider.js";
14
- import { useOrderStats as d, useOrders as f } from "../hooks/useOrders.js";
15
- import { useFleetStats as p } from "../hooks/useFleet.js";
16
- import { useAnalytics as ne, useDashboardMetrics as re } from "../hooks/useAnalytics.js";
17
- import { useLiveTracking as ie, useTrackingAlerts as m } from "../hooks/useTracking.js";
18
- import { Badge as h, Button as g, Card as _, CardContent as v, CardHeader as y, CardTitle as b, Progress as x } from "../components/ui.js";
19
- import { PageLayout as ae, PageSection as S } from "../components/PageLayout.js";
14
+ import { formatCurrency as d, formatDate as f } from "../utils/formatters.js";
15
+ import { useOrderStats as p, useOrders as ne } from "../hooks/useOrders.js";
16
+ import { useFleetStats as re } from "../hooks/useFleet.js";
17
+ import { useAnalytics as ie, useDashboardMetrics as m } from "../hooks/useAnalytics.js";
18
+ import { useLiveTracking as ae, useTrackingAlerts as oe } from "../hooks/useTracking.js";
19
+ import { Badge as h, Button as g, Card as _, CardContent as v, CardHeader as y, CardTitle as b, Progress as se } from "../components/ui.js";
20
+ import { PageLayout as x, PageSection as S } from "../components/PageLayout.js";
20
21
  import { MetricCard as C, MetricGrid as w } from "../components/MetricCard.js";
21
- import { VolumeBar as oe } from "../components/charts/VolumeBar.js";
22
+ import { VolumeBar as T } from "../components/charts/VolumeBar.js";
22
23
  import "../components/charts/index.js";
23
- import { LogisticsMap as T } from "../components/maps/LogisticsMap.js";
24
+ import { LogisticsMap as E } from "../components/maps/LogisticsMap.js";
24
25
  import "../components/maps/index.js";
25
- import { StatusBadge as E } from "../components/StatusBadge.js";
26
- import { formatCurrency as D, formatDate as O } from "../utils/formatters.js";
27
- import { TrackingAlertList as se } from "../components/TrackingAlertList.js";
26
+ import { StatusBadge as D } from "../components/StatusBadge.js";
27
+ import { TrackingAlertList as O } from "../components/TrackingAlertList.js";
28
28
  import { deliveryMarkerStatus as ce, firstRealLatLng as le } from "../utils/mapMarkers.js";
29
29
  import { useMemo as k } from "react";
30
30
  import { jsx as A, jsxs as j } from "react/jsx-runtime";
@@ -46,7 +46,7 @@ function L() {
46
46
  let { t: L } = M(), R = (e, t) => {
47
47
  let n = L(e);
48
48
  return n === e ? t : n;
49
- }, { basePath: z, navigate: B } = u(), { metrics: V } = re(), { analytics: H } = ne(), { orders: U } = f({ limit: 5 }), { stats: W } = d(), { stats: G } = p(), { activeDeliveries: K } = ie(), { unacknowledgedAlerts: q, acknowledgeAlert: ue, refetch: de } = m(), J = k(() => H.trends.dailyOrders.map((e) => e.orders), [H.trends.dailyOrders]), Y = k(() => H.trends.dailyOrders.map((e) => e.deliveries), [H.trends.dailyOrders]), X = k(() => H.trends.revenue.map((e) => e.revenue), [H.trends.revenue]), fe = k(() => H.trends.dailyOrders.slice(-7), [H.trends.dailyOrders]), pe = k(() => K.flatMap((e) => {
49
+ }, { basePath: z, navigate: B } = u(), { metrics: V } = m(), { analytics: H } = ie(), { orders: U } = ne({ limit: 5 }), { stats: W } = p(), { stats: G } = re(), { activeDeliveries: K } = ae(), { unacknowledgedAlerts: q, acknowledgeAlert: ue, refetch: de } = oe(), J = k(() => H.trends.dailyOrders.map((e) => e.orders), [H.trends.dailyOrders]), Y = k(() => H.trends.dailyOrders.map((e) => e.deliveries), [H.trends.dailyOrders]), X = k(() => H.trends.revenue.map((e) => e.revenue), [H.trends.revenue]), fe = k(() => H.trends.dailyOrders.slice(-7), [H.trends.dailyOrders]), pe = k(() => K.flatMap((e) => {
50
50
  if (!e.order) return [];
51
51
  let t = le(e.vehicle?.currentLocation, e.driver?.currentLocation, e.tracking?.currentLocation);
52
52
  return t ? [{
@@ -62,7 +62,7 @@ function L() {
62
62
  }, $ = (e, t) => {
63
63
  (e.key === "Enter" || e.key === " ") && (e.preventDefault(), t());
64
64
  };
65
- return /* @__PURE__ */ j(ae, {
65
+ return /* @__PURE__ */ j(x, {
66
66
  hero: !0,
67
67
  titleAccent: R("movethewheels.dashboard.title", "Dashboard"),
68
68
  title: R("movethewheels.dashboard.title", "Dashboard"),
@@ -129,7 +129,7 @@ function L() {
129
129
  treatment: "glass",
130
130
  glow: !0,
131
131
  label: R("movethewheels.dashboard.metrics.revenue", "Revenue"),
132
- value: D(V.revenue.total),
132
+ value: d(V.revenue.total),
133
133
  icon: /* @__PURE__ */ A(r, { size: 20 }),
134
134
  accent: "success",
135
135
  sparklineData: X.length >= 2 ? X : void 0,
@@ -159,7 +159,7 @@ function L() {
159
159
  })]
160
160
  }), /* @__PURE__ */ A(v, {
161
161
  className: "p-0",
162
- children: /* @__PURE__ */ A(T, {
162
+ children: /* @__PURE__ */ A(E, {
163
163
  markers: pe,
164
164
  height: 460,
165
165
  emptyMessage: K.length === 0 ? R("movethewheels.dashboard.liveMap.noActive", "No active deliveries right now") : R("movethewheels.dashboard.liveMap.awaitingGps", "Awaiting live GPS positions for active deliveries")
@@ -181,7 +181,7 @@ function L() {
181
181
  children: q.length
182
182
  })
183
183
  ]
184
- }) }), /* @__PURE__ */ A(v, { children: q.length > 0 ? /* @__PURE__ */ A(se, {
184
+ }) }), /* @__PURE__ */ A(v, { children: q.length > 0 ? /* @__PURE__ */ A(O, {
185
185
  alerts: q,
186
186
  limit: 4,
187
187
  t: R,
@@ -218,7 +218,7 @@ function L() {
218
218
  ]
219
219
  }), /* @__PURE__ */ A("p", {
220
220
  className: "text-xs text-text-secondary",
221
- children: O(e.updatedAt ?? e.createdAt, "relative")
221
+ children: f(e.updatedAt ?? e.createdAt, "relative")
222
222
  })]
223
223
  })]
224
224
  }, e.id))
@@ -228,7 +228,7 @@ function L() {
228
228
  }) })] })]
229
229
  })]
230
230
  }),
231
- /* @__PURE__ */ j(_, { children: [/* @__PURE__ */ A(y, { children: /* @__PURE__ */ A(b, { children: R("movethewheels.dashboard.weeklyVolume.title", "Weekly order volume") }) }), /* @__PURE__ */ A(v, { children: /* @__PURE__ */ A(oe, {
231
+ /* @__PURE__ */ j(_, { children: [/* @__PURE__ */ A(y, { children: /* @__PURE__ */ A(b, { children: R("movethewheels.dashboard.weeklyVolume.title", "Weekly order volume") }) }), /* @__PURE__ */ A(v, { children: /* @__PURE__ */ A(T, {
232
232
  xKey: "date",
233
233
  height: 240,
234
234
  data: fe,
@@ -253,7 +253,7 @@ function L() {
253
253
  /* @__PURE__ */ A(C, {
254
254
  size: "sm",
255
255
  label: R("movethewheels.dashboard.stats.avgOrderValue", "Avg Order Value"),
256
- value: D(V.revenue.avgOrderValue)
256
+ value: d(V.revenue.avgOrderValue)
257
257
  }),
258
258
  /* @__PURE__ */ A(C, {
259
259
  size: "sm",
@@ -303,13 +303,13 @@ function L() {
303
303
  children: e.customerInfo.name
304
304
  })] }), /* @__PURE__ */ j("div", {
305
305
  className: "text-right",
306
- children: [/* @__PURE__ */ A(E, {
306
+ children: [/* @__PURE__ */ A(D, {
307
307
  status: e.status,
308
308
  type: "order",
309
309
  size: "sm"
310
310
  }), /* @__PURE__ */ A("p", {
311
311
  className: "text-sm text-text-secondary mt-1",
312
- children: D(e.pricing.total)
312
+ children: d(e.pricing.total)
313
313
  })]
314
314
  })]
315
315
  })
@@ -352,7 +352,7 @@ function L() {
352
352
  children: e.driver?.fullName || R("movethewheels.dashboard.activeDeliveries.unassigned", "Unassigned")
353
353
  })] }), /* @__PURE__ */ j("div", {
354
354
  className: "text-right",
355
- children: [/* @__PURE__ */ A(E, {
355
+ children: [/* @__PURE__ */ A(D, {
356
356
  status: e.order.status,
357
357
  type: "order",
358
358
  size: "sm"
@@ -361,7 +361,7 @@ function L() {
361
361
  children: [
362
362
  R("movethewheels.dashboard.activeDeliveries.eta", "ETA:"),
363
363
  " ",
364
- e.estimatedArrival ? O(e.estimatedArrival, "time") : R("movethewheels.dashboard.activeDeliveries.na", "N/A")
364
+ e.estimatedArrival ? f(e.estimatedArrival, "time") : R("movethewheels.dashboard.activeDeliveries.na", "N/A")
365
365
  ]
366
366
  })]
367
367
  })]
@@ -431,7 +431,7 @@ function L() {
431
431
  children: [/* @__PURE__ */ j("div", {
432
432
  className: "flex justify-between text-sm",
433
433
  children: [/* @__PURE__ */ A("span", { children: R("movethewheels.dashboard.fleetStatus.vehicleUtilization", "Vehicle Utilization") }), /* @__PURE__ */ j("span", { children: [G.utilization.toFixed(0), "%"] })]
434
- }), /* @__PURE__ */ A(x, { value: G.utilization })]
434
+ }), /* @__PURE__ */ A(se, { value: G.utilization })]
435
435
  }), /* @__PURE__ */ j("div", {
436
436
  className: "grid grid-cols-2 gap-4 text-sm",
437
437
  children: [