@burdenoff/microfe-movethewheels 2026.920.3 → 2026.923.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 (79) hide show
  1. package/dist/components/CarbonFootprintPanel.js +1 -1
  2. package/dist/components/CustomerPicker.js +76 -65
  3. package/dist/components/DataTable.js +140 -139
  4. package/dist/components/DocumentsCard.js +14 -8
  5. package/dist/generated/wspace-types.d.ts +2719 -8
  6. package/dist/hooks/index.js +1 -1
  7. package/dist/hooks/useAnalytics.js +21 -1
  8. package/dist/hooks/useCustomers.js +94 -78
  9. package/dist/hooks/useDebouncedValue.js +11 -0
  10. package/dist/hooks/useEntityDocuments.js +28 -18
  11. package/dist/hooks/useEpod.js +24 -17
  12. package/dist/hooks/useFleet.js +148 -125
  13. package/dist/hooks/useInventory.js +255 -186
  14. package/dist/hooks/useMultiModalShipments.js +35 -27
  15. package/dist/hooks/useOrders.js +139 -134
  16. package/dist/hooks/useRoutes.js +97 -75
  17. package/dist/hooks/useTracking.js +100 -88
  18. package/dist/index.js +6 -6
  19. package/dist/movethewheels/components/CustomerPicker.d.ts +3 -1
  20. package/dist/movethewheels/components/DataTable.d.ts +5 -1
  21. package/dist/movethewheels/hooks/useCustomers.d.ts +0 -1
  22. package/dist/movethewheels/hooks/useDebouncedValue.d.ts +1 -0
  23. package/dist/movethewheels/hooks/useEntityDocuments.d.ts +2 -0
  24. package/dist/movethewheels/hooks/useEpod.d.ts +6 -1
  25. package/dist/movethewheels/hooks/useFleet.d.ts +49 -5
  26. package/dist/movethewheels/hooks/useInventory.d.ts +24 -17
  27. package/dist/movethewheels/hooks/useMultiModalShipments.d.ts +6 -1
  28. package/dist/movethewheels/hooks/useOrders.d.ts +48 -5
  29. package/dist/movethewheels/hooks/useRoutes.d.ts +18 -1
  30. package/dist/movethewheels/hooks/useTracking.d.ts +12 -11
  31. package/dist/movethewheels/types/index.d.ts +12 -5
  32. package/dist/pages/CreateOrderPage.js +191 -129
  33. package/dist/pages/CustomersPage.js +61 -54
  34. package/dist/pages/DeliveryCapturePage.js +131 -109
  35. package/dist/pages/DriversPage.js +100 -92
  36. package/dist/pages/InventoryPage.js +239 -236
  37. package/dist/pages/MultiModalShipmentPage.js +163 -130
  38. package/dist/pages/OrderDetailsPage.js +190 -106
  39. package/dist/pages/OrdersListPage.js +66 -60
  40. package/dist/pages/ProductDetailsPage.js +241 -200
  41. package/dist/pages/ProductsPage.js +59 -52
  42. package/dist/pages/RouteDetailsPage.js +324 -293
  43. package/dist/pages/RoutesPage.js +55 -48
  44. package/dist/pages/VehiclesPage.js +63 -56
  45. package/dist/pages/WarehousesPage.js +60 -53
  46. package/package.json +1 -1
  47. package/src/generated/wspace-types.ts +3136 -8
  48. package/src/movethewheels/components/CarbonFootprintPanel.tsx +0 -1
  49. package/src/movethewheels/components/CustomerPicker.tsx +14 -0
  50. package/src/movethewheels/components/DataTable.tsx +34 -18
  51. package/src/movethewheels/components/DocumentsCard.tsx +6 -1
  52. package/src/movethewheels/components/maps/leaflet-setup.ts +1 -8
  53. package/src/movethewheels/hooks/useAnalytics.ts +27 -0
  54. package/src/movethewheels/hooks/useCustomers.ts +64 -24
  55. package/src/movethewheels/hooks/useDebouncedValue.ts +12 -0
  56. package/src/movethewheels/hooks/useEntityDocuments.ts +43 -25
  57. package/src/movethewheels/hooks/useEpod.ts +14 -7
  58. package/src/movethewheels/hooks/useFleet.ts +66 -38
  59. package/src/movethewheels/hooks/useFleetIntelligence.ts +1 -4
  60. package/src/movethewheels/hooks/useInventory.ts +211 -90
  61. package/src/movethewheels/hooks/useMultiModalShipments.ts +15 -11
  62. package/src/movethewheels/hooks/useOrders.ts +48 -14
  63. package/src/movethewheels/hooks/useRoutes.ts +81 -24
  64. package/src/movethewheels/hooks/useTracking.ts +130 -98
  65. package/src/movethewheels/pages/CreateOrderPage.tsx +93 -2
  66. package/src/movethewheels/pages/CustomersPage.tsx +11 -1
  67. package/src/movethewheels/pages/DeliveryCapturePage.tsx +31 -1
  68. package/src/movethewheels/pages/DriversPage.tsx +24 -12
  69. package/src/movethewheels/pages/InventoryPage.tsx +57 -32
  70. package/src/movethewheels/pages/MultiModalShipmentPage.tsx +52 -3
  71. package/src/movethewheels/pages/OrderDetailsPage.tsx +91 -6
  72. package/src/movethewheels/pages/OrdersListPage.tsx +20 -3
  73. package/src/movethewheels/pages/ProductDetailsPage.tsx +52 -3
  74. package/src/movethewheels/pages/ProductsPage.tsx +11 -1
  75. package/src/movethewheels/pages/RouteDetailsPage.tsx +45 -5
  76. package/src/movethewheels/pages/RoutesPage.tsx +11 -1
  77. package/src/movethewheels/pages/VehiclesPage.tsx +19 -2
  78. package/src/movethewheels/pages/WarehousesPage.tsx +11 -1
  79. package/src/movethewheels/types/index.ts +12 -5
@@ -1,27 +1,28 @@
1
1
  import { Coffee as e } from "../node_modules/lucide-react/dist/esm/icons/coffee.js";
2
2
  import { Download as t } from "../node_modules/lucide-react/dist/esm/icons/download.js";
3
3
  import { Filter as n } from "../node_modules/lucide-react/dist/esm/icons/filter.js";
4
- import { Plus as r } from "../node_modules/lucide-react/dist/esm/icons/plus.js";
5
- import { RefreshCw as i } from "../node_modules/lucide-react/dist/esm/icons/refresh-cw.js";
6
- import { Star as a } from "../node_modules/lucide-react/dist/esm/icons/star.js";
7
- import { Truck as o } from "../node_modules/lucide-react/dist/esm/icons/truck.js";
8
- import { UserCheck as s } from "../node_modules/lucide-react/dist/esm/icons/user-check.js";
9
- import { UserMinus as c } from "../node_modules/lucide-react/dist/esm/icons/user-minus.js";
10
- import { Users as l } from "../node_modules/lucide-react/dist/esm/icons/users.js";
11
- import { joinPath as u } from "../utils/navigation.js";
12
- import { useMoveTheWheels as d } from "../providers/MoveTheWheelsProvider.js";
13
- import { useDriverStatusCounts as f, useDrivers as ee, useFleetStats as te, useVehicles as p } from "../hooks/useFleet.js";
14
- import { Avatar as ne, AvatarFallback as m, Button as re, Card as ie, CardContent as h, Select as g, SelectContent as _, SelectItem as v, SelectTrigger as y, SelectValue as b } from "../components/ui.js";
15
- import { PageLayout as x } from "../components/PageLayout.js";
16
- import { MetricCard as S, MetricGrid as C } from "../components/MetricCard.js";
17
- import { StatusBadge as w } from "../components/StatusBadge.js";
18
- import { DataTable as T } from "../components/DataTable.js";
19
- import { formatDate as E } from "../utils/formatters.js";
20
- import { useMemo as D, useState as O } from "react";
21
- import { jsx as k, jsxs as A } from "react/jsx-runtime";
22
- import { CTAOverflowMenu as j, PagePurpose as M } from "@burdenoff/fe-libs/ui";
4
+ import { Plus as ee } from "../node_modules/lucide-react/dist/esm/icons/plus.js";
5
+ import { RefreshCw as r } from "../node_modules/lucide-react/dist/esm/icons/refresh-cw.js";
6
+ import { Star as i } from "../node_modules/lucide-react/dist/esm/icons/star.js";
7
+ import { Truck as te } from "../node_modules/lucide-react/dist/esm/icons/truck.js";
8
+ import { UserCheck as a } from "../node_modules/lucide-react/dist/esm/icons/user-check.js";
9
+ import { UserMinus as o } from "../node_modules/lucide-react/dist/esm/icons/user-minus.js";
10
+ import { Users as s } from "../node_modules/lucide-react/dist/esm/icons/users.js";
11
+ import { joinPath as ne } from "../utils/navigation.js";
12
+ import { useMoveTheWheels as re } from "../providers/MoveTheWheelsProvider.js";
13
+ import { useDriverStatusCounts as c, useDrivers as l, useFleetStats as u, useVehicles as d } from "../hooks/useFleet.js";
14
+ import { Avatar as f, AvatarFallback as p, Button as m, Card as h, CardContent as g, Select as _, SelectContent as v, SelectItem as y, SelectTrigger as b, SelectValue as x } from "../components/ui.js";
15
+ import { PageLayout as S } from "../components/PageLayout.js";
16
+ import { MetricCard as C, MetricGrid as ie } from "../components/MetricCard.js";
17
+ import { StatusBadge as ae } from "../components/StatusBadge.js";
18
+ import { DataTable as oe } from "../components/DataTable.js";
19
+ import { formatDate as w } from "../utils/formatters.js";
20
+ import { useDebouncedValue as se } from "../hooks/useDebouncedValue.js";
21
+ import { useMemo as T, useState as E } from "react";
22
+ import { jsx as D, jsxs as O } from "react/jsx-runtime";
23
+ import { CTAOverflowMenu as k, PagePurpose as A } from "@burdenoff/fe-libs/ui";
23
24
  //#region src/movethewheels/pages/DriversPage.tsx
24
- var N = [
25
+ var j = [
25
26
  {
26
27
  value: "all",
27
28
  label: "All statuses"
@@ -43,137 +44,139 @@ var N = [
43
44
  label: "Off duty"
44
45
  }
45
46
  ];
46
- function P() {
47
- let { basePath: P, navigate: F } = d(), [I, L] = O(0), [R, z] = O(25), [B, V] = O("all"), [H, U] = O("all"), { drivers: W, isLoading: G, error: K, refetch: q } = ee({
48
- limit: R,
49
- offset: I * R,
50
- status: B === "all" ? void 0 : B
51
- }), { stats: J } = te(), { counts: Y } = f(), { vehicles: X } = p({ limit: 500 }), ae = D(() => new Map(X.map((e) => [e.id, e.vehicleNumber])), [X]), Z = J.totalDrivers, oe = D(() => Array.from(new Set(W.map((e) => e.licenseType).filter(Boolean))).sort((e, t) => e.localeCompare(t)), [W]), se = D(() => H === "all" ? W : W.filter((e) => e.licenseType === H), [W, H]), Q = B !== "all" || H !== "all", $ = (e) => F?.(u(P, e));
52
- return /* @__PURE__ */ A(x, {
47
+ function M() {
48
+ let { basePath: M, navigate: N } = re(), [P, F] = E(0), [I, L] = E(25), [R, z] = E(""), B = se(R), [V, H] = E("all"), [U, W] = E("all"), { drivers: G, totalDrivers: K, hasMore: ce, isLoading: le, error: ue, refetch: q } = l({
49
+ limit: I,
50
+ offset: P * I,
51
+ search: B || void 0,
52
+ status: V === "all" ? void 0 : V,
53
+ licenseClass: U === "all" ? void 0 : U
54
+ }), { stats: J } = u(), { counts: Y } = c(), { vehicles: X } = d({ limit: 100 }), de = T(() => new Map(X.map((e) => [e.id, e.vehicleNumber])), [X]), Z = J.totalDrivers, fe = T(() => Array.from(new Set(G.map((e) => e.licenseType).filter(Boolean))).sort((e, t) => e.localeCompare(t)), [G]), Q = V !== "all" || U !== "all" || R.length > 0, $ = (e) => N?.(ne(M, e));
55
+ return /* @__PURE__ */ O(S, {
53
56
  title: "Drivers",
54
57
  subtitle: `${Z} drivers`,
55
- icon: /* @__PURE__ */ k(l, { size: 24 }),
56
- headerActions: /* @__PURE__ */ k(j, {
58
+ icon: /* @__PURE__ */ D(s, { size: 24 }),
59
+ headerActions: /* @__PURE__ */ D(k, {
57
60
  primary: {
58
61
  label: "Add Driver",
59
- icon: /* @__PURE__ */ k(r, { size: 16 }),
62
+ icon: /* @__PURE__ */ D(ee, { size: 16 }),
60
63
  onSelect: () => $("fleet/drivers/new")
61
64
  },
62
65
  actions: [{
63
66
  label: "Refresh",
64
- icon: /* @__PURE__ */ k(i, { size: 16 }),
67
+ icon: /* @__PURE__ */ D(r, { size: 16 }),
65
68
  onSelect: () => q()
66
69
  }, {
67
70
  label: "Export",
68
- icon: /* @__PURE__ */ k(t, { size: 16 }),
71
+ icon: /* @__PURE__ */ D(t, { size: 16 }),
69
72
  onSelect: () => $("import-export")
70
73
  }]
71
74
  }),
72
75
  children: [
73
- /* @__PURE__ */ k(M, {
74
- icon: /* @__PURE__ */ k(l, { size: 18 }),
76
+ /* @__PURE__ */ D(A, {
77
+ icon: /* @__PURE__ */ D(s, { size: 18 }),
75
78
  children: "Your delivery workforce. Track each driver's availability, rating, licence status, contact number and the vehicle they are on — open a driver to review their record before assigning them to an order or route."
76
79
  }),
77
- /* @__PURE__ */ A("div", { children: [/* @__PURE__ */ k("p", {
80
+ /* @__PURE__ */ O("div", { children: [/* @__PURE__ */ D("p", {
78
81
  className: "mb-3 text-sm font-medium text-text-secondary",
79
82
  children: "Workforce at a glance"
80
- }), /* @__PURE__ */ A(C, {
83
+ }), /* @__PURE__ */ O(ie, {
81
84
  columns: 4,
82
85
  children: [
83
- /* @__PURE__ */ k(S, {
86
+ /* @__PURE__ */ D(C, {
84
87
  label: "On duty",
85
88
  value: J.driversByStatus.available + J.driversByStatus.busy,
86
- icon: /* @__PURE__ */ k(s, { size: 20 }),
89
+ icon: /* @__PURE__ */ D(a, { size: 20 }),
87
90
  accent: "success",
88
91
  subtitle: "Available or delivering"
89
92
  }),
90
- /* @__PURE__ */ k(S, {
93
+ /* @__PURE__ */ D(C, {
91
94
  label: "On break",
92
95
  value: Y.onBreak,
93
- icon: /* @__PURE__ */ k(e, { size: 20 }),
96
+ icon: /* @__PURE__ */ D(e, { size: 20 }),
94
97
  accent: "warning",
95
98
  subtitle: "Back on shift shortly"
96
99
  }),
97
- /* @__PURE__ */ k(S, {
100
+ /* @__PURE__ */ D(C, {
98
101
  label: "Off duty",
99
102
  value: Y.offDuty,
100
- icon: /* @__PURE__ */ k(c, { size: 20 }),
103
+ icon: /* @__PURE__ */ D(o, { size: 20 }),
101
104
  accent: "neutral",
102
105
  subtitle: Y.inactive > 0 ? `${Y.inactive} inactive` : void 0
103
106
  }),
104
- /* @__PURE__ */ k(S, {
107
+ /* @__PURE__ */ D(C, {
105
108
  label: "Avg rating",
106
109
  value: J.avgDriverRating > 0 ? J.avgDriverRating.toFixed(1) : "—",
107
- icon: /* @__PURE__ */ k(a, { size: 20 }),
110
+ icon: /* @__PURE__ */ D(i, { size: 20 }),
108
111
  accent: "brand",
109
112
  subtitle: `${Z} drivers`
110
113
  })
111
114
  ]
112
115
  })] }),
113
- /* @__PURE__ */ k(ie, { children: /* @__PURE__ */ k(h, {
116
+ /* @__PURE__ */ D(h, { children: /* @__PURE__ */ D(g, {
114
117
  className: "p-4",
115
- children: /* @__PURE__ */ A("div", {
118
+ children: /* @__PURE__ */ O("div", {
116
119
  className: "flex flex-wrap items-center gap-4",
117
120
  children: [
118
- /* @__PURE__ */ A("div", {
121
+ /* @__PURE__ */ O("div", {
119
122
  className: "flex items-center gap-2",
120
- children: [/* @__PURE__ */ k(n, {
123
+ children: [/* @__PURE__ */ D(n, {
121
124
  size: 16,
122
125
  className: "text-text-secondary"
123
- }), /* @__PURE__ */ k("span", {
126
+ }), /* @__PURE__ */ D("span", {
124
127
  className: "text-sm font-medium",
125
128
  children: "Filters:"
126
129
  })]
127
130
  }),
128
- /* @__PURE__ */ A(g, {
129
- value: B,
131
+ /* @__PURE__ */ O(_, {
132
+ value: V,
130
133
  onValueChange: (e) => {
131
- V(e), L(0);
134
+ H(e), F(0);
132
135
  },
133
- children: [/* @__PURE__ */ k(y, {
136
+ children: [/* @__PURE__ */ D(b, {
134
137
  className: "w-[180px]",
135
- children: /* @__PURE__ */ k(b, { placeholder: "Status" })
136
- }), /* @__PURE__ */ k(_, { children: N.map((e) => /* @__PURE__ */ k(v, {
138
+ children: /* @__PURE__ */ D(x, { placeholder: "Status" })
139
+ }), /* @__PURE__ */ D(v, { children: j.map((e) => /* @__PURE__ */ D(y, {
137
140
  value: e.value,
138
141
  children: e.label
139
142
  }, e.value)) })]
140
143
  }),
141
- /* @__PURE__ */ A(g, {
142
- value: H,
143
- onValueChange: U,
144
- children: [/* @__PURE__ */ k(y, {
144
+ /* @__PURE__ */ O(_, {
145
+ value: U,
146
+ onValueChange: W,
147
+ children: [/* @__PURE__ */ D(b, {
145
148
  className: "w-[180px]",
146
- children: /* @__PURE__ */ k(b, { placeholder: "License class" })
147
- }), /* @__PURE__ */ A(_, { children: [/* @__PURE__ */ k(v, {
149
+ children: /* @__PURE__ */ D(x, { placeholder: "License class" })
150
+ }), /* @__PURE__ */ O(v, { children: [/* @__PURE__ */ D(y, {
148
151
  value: "all",
149
152
  children: "All licence classes"
150
- }), oe.map((e) => /* @__PURE__ */ k(v, {
153
+ }), fe.map((e) => /* @__PURE__ */ D(y, {
151
154
  value: e,
152
155
  children: e
153
156
  }, e))] })]
154
157
  }),
155
- Q && /* @__PURE__ */ k(re, {
158
+ Q && /* @__PURE__ */ D(m, {
156
159
  variant: "ghost",
157
160
  size: "sm",
158
161
  onClick: () => {
159
- V("all"), U("all"), L(0);
162
+ H("all"), W("all"), z(""), F(0);
160
163
  },
161
164
  children: "Clear filters"
162
165
  })
163
166
  ]
164
167
  })
165
168
  }) }),
166
- /* @__PURE__ */ k(T, {
169
+ /* @__PURE__ */ D(oe, {
167
170
  columns: [
168
171
  {
169
172
  id: "driver",
170
173
  header: "Driver",
171
- cell: (e) => /* @__PURE__ */ A("div", {
174
+ cell: (e) => /* @__PURE__ */ O("div", {
172
175
  className: "flex items-center gap-3",
173
- children: [/* @__PURE__ */ k(ne, { children: /* @__PURE__ */ k(m, { children: e.fullName.split(" ").map((e) => e[0]).join("") }) }), /* @__PURE__ */ A("div", { children: [/* @__PURE__ */ k("p", {
176
+ children: [/* @__PURE__ */ D(f, { children: /* @__PURE__ */ D(p, { children: e.fullName.split(" ").map((e) => e[0]).join("") }) }), /* @__PURE__ */ O("div", { children: [/* @__PURE__ */ D("p", {
174
177
  className: "font-medium",
175
178
  children: e.fullName
176
- }), /* @__PURE__ */ k("p", {
179
+ }), /* @__PURE__ */ D("p", {
177
180
  className: "text-sm text-text-secondary",
178
181
  children: e.employeeId
179
182
  })] })]
@@ -184,7 +187,7 @@ function P() {
184
187
  header: "Status",
185
188
  accessorKey: "status",
186
189
  sortable: !0,
187
- cell: (e) => /* @__PURE__ */ k(w, {
190
+ cell: (e) => /* @__PURE__ */ D(ae, {
188
191
  status: e.status,
189
192
  type: "driver"
190
193
  })
@@ -192,11 +195,11 @@ function P() {
192
195
  {
193
196
  id: "license",
194
197
  header: "License",
195
- cell: (e) => /* @__PURE__ */ A("div", {
198
+ cell: (e) => /* @__PURE__ */ O("div", {
196
199
  className: "text-sm",
197
- children: [/* @__PURE__ */ k("p", { children: e.licenseType }), /* @__PURE__ */ A("p", {
200
+ children: [/* @__PURE__ */ D("p", { children: e.licenseType }), /* @__PURE__ */ O("p", {
198
201
  className: "text-text-secondary",
199
- children: ["Exp: ", E(e.licenseExpiry, "short")]
202
+ children: ["Exp: ", w(e.licenseExpiry, "short")]
200
203
  })]
201
204
  })
202
205
  },
@@ -204,12 +207,12 @@ function P() {
204
207
  id: "phone",
205
208
  header: "Phone",
206
209
  accessorKey: "phone",
207
- cell: (e) => e.phone ? /* @__PURE__ */ k("a", {
210
+ cell: (e) => e.phone ? /* @__PURE__ */ D("a", {
208
211
  href: `tel:${e.phone}`,
209
212
  className: "text-sm hover:underline",
210
213
  onClick: (e) => e.stopPropagation(),
211
214
  children: e.phone
212
- }) : /* @__PURE__ */ k("span", {
215
+ }) : /* @__PURE__ */ D("span", {
213
216
  className: "text-sm text-text-secondary",
214
217
  children: "—"
215
218
  })
@@ -217,16 +220,16 @@ function P() {
217
220
  {
218
221
  id: "rating",
219
222
  header: "Rating",
220
- cell: (e) => e.ratings.overall > 0 ? /* @__PURE__ */ A("div", {
223
+ cell: (e) => e.ratings.overall > 0 ? /* @__PURE__ */ O("div", {
221
224
  className: "flex items-center gap-1",
222
- children: [/* @__PURE__ */ k(a, {
225
+ children: [/* @__PURE__ */ D(i, {
223
226
  size: 14,
224
227
  className: "text-status-warning-text fill-current"
225
- }), /* @__PURE__ */ k("span", {
228
+ }), /* @__PURE__ */ D("span", {
226
229
  className: "font-medium",
227
230
  children: e.ratings.overall.toFixed(1)
228
231
  })]
229
- }) : /* @__PURE__ */ k("span", {
232
+ }) : /* @__PURE__ */ D("span", {
230
233
  className: "text-sm text-text-secondary",
231
234
  children: "Not rated"
232
235
  })
@@ -235,14 +238,14 @@ function P() {
235
238
  id: "vehicle",
236
239
  header: "Assigned vehicle",
237
240
  cell: (e) => {
238
- if (!e.assignedVehicle) return /* @__PURE__ */ k("span", {
241
+ if (!e.assignedVehicle) return /* @__PURE__ */ D("span", {
239
242
  className: "text-sm text-text-secondary",
240
243
  children: "Unassigned"
241
244
  });
242
- let t = ae.get(e.assignedVehicle);
243
- return /* @__PURE__ */ A("span", {
245
+ let t = de.get(e.assignedVehicle);
246
+ return /* @__PURE__ */ O("span", {
244
247
  className: "inline-flex items-center gap-1.5 text-sm font-medium",
245
- children: [/* @__PURE__ */ k(o, {
248
+ children: [/* @__PURE__ */ D(te, {
246
249
  size: 14,
247
250
  className: "text-text-secondary"
248
251
  }), t ?? "Assigned"]
@@ -254,25 +257,30 @@ function P() {
254
257
  header: "Join Date",
255
258
  accessorKey: "joinDate",
256
259
  sortable: !0,
257
- cell: (e) => E(e.joinDate, "short")
260
+ cell: (e) => w(e.joinDate, "short")
258
261
  }
259
262
  ],
260
- data: se,
261
- isLoading: G,
262
- error: K,
263
+ data: G,
264
+ isLoading: le,
265
+ error: ue,
263
266
  onRetry: q,
264
267
  searchable: !0,
265
268
  searchPlaceholder: "Search drivers...",
266
269
  searchFields: ["fullName", "employeeId"],
270
+ searchQuery: R,
271
+ onSearchQueryChange: (e) => {
272
+ z(e), F(0);
273
+ },
267
274
  onRowClick: (e) => $(`fleet/drivers/${e.id}`),
268
275
  getRowId: (e) => e.id,
269
- pageIndex: I,
270
- pageSize: R,
271
- onPageChange: L,
276
+ pageIndex: P,
277
+ pageSize: I,
278
+ onPageChange: F,
272
279
  onPageSizeChange: (e) => {
273
- z(e), L(0);
280
+ L(e), F(0);
274
281
  },
275
- totalItems: Q ? void 0 : Z,
282
+ totalItems: K,
283
+ hasNextPage: ce,
276
284
  emptyIllustration: "empty-people",
277
285
  emptyTitle: Q ? "No drivers match these filters" : "No drivers yet",
278
286
  emptyDescription: Q ? "Clear the status or licence-class filter to see the rest of the roster." : "Add drivers to start assigning deliveries and routes."
@@ -281,4 +289,4 @@ function P() {
281
289
  });
282
290
  }
283
291
  //#endregion
284
- export { P as default };
292
+ export { M as default };