@burdenoff/microfe-movethewheels 2026.1026.2 → 2026.1028.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 (50) hide show
  1. package/dist/MoveTheWheelsRoot.js +126 -159
  2. package/dist/MoveTheWheelsRoutes.js +16 -32
  3. package/dist/components/ProofOfDeliveryCard.js +1 -1
  4. package/dist/components/UpcomingDemandPanel.js +1 -1
  5. package/dist/hooks/index.js +0 -3
  6. package/dist/index.js +27 -30
  7. package/dist/movethewheels/hooks/index.d.ts +0 -3
  8. package/dist/pages/ContainersPage.js +3 -3
  9. package/dist/pages/TrackingPage.js +111 -56
  10. package/package.json +2 -1
  11. package/src/movethewheels/MoveTheWheelsRoot.tsx +2 -46
  12. package/src/movethewheels/MoveTheWheelsRoutes.tsx +0 -16
  13. package/src/movethewheels/components/ProofOfDeliveryCard.tsx +1 -1
  14. package/src/movethewheels/components/UpcomingDemandPanel.tsx +2 -2
  15. package/src/movethewheels/hooks/index.ts +0 -9
  16. package/src/movethewheels/pages/ContainersPage.tsx +3 -3
  17. package/src/movethewheels/pages/TrackingPage.tsx +54 -9
  18. package/dist/hooks/useImportExport.js +0 -27
  19. package/dist/hooks/useReports.js +0 -75
  20. package/dist/hooks/useSettings.js +0 -67
  21. package/dist/movethewheels/hooks/useImportExport.d.ts +0 -23
  22. package/dist/movethewheels/hooks/useReports.d.ts +0 -39
  23. package/dist/movethewheels/hooks/useSettings.d.ts +0 -17
  24. package/dist/movethewheels/pages/ImportExportPage.d.ts +0 -8
  25. package/dist/movethewheels/pages/MarketplacePage.d.ts +0 -12
  26. package/dist/movethewheels/pages/ReportsPage.d.ts +0 -8
  27. package/dist/movethewheels/pages/SettingsPage.d.ts +0 -8
  28. package/dist/node_modules/lucide-react/dist/esm/icons/bell.js +0 -11
  29. package/dist/node_modules/lucide-react/dist/esm/icons/file-chart-column-increasing.js +0 -26
  30. package/dist/node_modules/lucide-react/dist/esm/icons/file-spreadsheet.js +0 -30
  31. package/dist/node_modules/lucide-react/dist/esm/icons/globe.js +0 -20
  32. package/dist/node_modules/lucide-react/dist/esm/icons/settings.js +0 -13
  33. package/dist/node_modules/lucide-react/dist/esm/icons/shield.js +0 -8
  34. package/dist/node_modules/lucide-react/dist/esm/icons/store.js +0 -26
  35. package/dist/node_modules/lucide-react/dist/esm/icons/webhook.js +0 -18
  36. package/dist/pages/ImportExportPage.js +0 -245
  37. package/dist/pages/MarketplacePage.js +0 -23
  38. package/dist/pages/ReportsPage.js +0 -328
  39. package/dist/pages/SettingsPage.js +0 -404
  40. package/dist/utils/download.js +0 -22
  41. package/src/movethewheels/hooks/useImportExport.ts +0 -65
  42. package/src/movethewheels/hooks/useReports.ts +0 -154
  43. package/src/movethewheels/hooks/useSettings.ts +0 -124
  44. package/src/movethewheels/pages/ImportExportPage.tsx +0 -288
  45. package/src/movethewheels/pages/MarketplacePage.tsx +0 -36
  46. package/src/movethewheels/pages/ReportsPage.tsx +0 -379
  47. package/src/movethewheels/pages/SettingsPage.tsx +0 -548
  48. package/src/operations/wspace/movethewheels/fragments/core.withdrawn.graphql +0 -59
  49. package/src/operations/wspace/movethewheels/mutations/marketplace-reports.withdrawn.graphql +0 -93
  50. package/src/operations/wspace/movethewheels/queries/marketplace-reports.withdrawn.graphql +0 -58
package/dist/index.js CHANGED
@@ -7,35 +7,32 @@ import { useInventory as _, useInventoryStats as v, useInventoryTransactions as
7
7
  import { useCustomer as E, useCustomerStats as D, useCustomers as O } from "./hooks/useCustomers.js";
8
8
  import { useAnalytics as k, useDashboardMetrics as A, useEmissionsSummary as j, useFinanceMetrics as M, useFleetAnalytics as N, useOrderAnalytics as P, usePerformanceAnalytics as F, useRevenueAnalytics as I } from "./hooks/useAnalytics.js";
9
9
  import { useDriverTracking as L, useGeofence as R, useLiveTracking as z, useOrderTracking as B, useTracking as V, useTrackingAlerts as H, useVehicleTracking as U } from "./hooks/useTracking.js";
10
- import { useReports as W } from "./hooks/useReports.js";
11
- import { useImportExport as G } from "./hooks/useImportExport.js";
12
- import { useModuleSettings as K } from "./hooks/useSettings.js";
13
- import { useEntityDocuments as q } from "./hooks/useEntityDocuments.js";
14
- import { useCaptureEpod as J, useEpod as Y, useEpodPhotoUpload as X, useEpodPhotoUrl as Z, useMyPendingEpodDeliveryJobs as Q } from "./hooks/useEpod.js";
10
+ import { useEntityDocuments as W } from "./hooks/useEntityDocuments.js";
11
+ import { useCaptureEpod as G, useEpod as K, useEpodPhotoUpload as q, useEpodPhotoUrl as J, useMyPendingEpodDeliveryJobs as Y } from "./hooks/useEpod.js";
15
12
  import "./hooks/index.js";
16
- import { MoveTheWheelsRoot as $ } from "./MoveTheWheelsRoot.js";
17
- import { useMoveTheWheelsStore as ee } from "./store/movethewheelsStore.js";
18
- import { useSandboxAssistantTransport as te } from "./services/createSandboxAssistantTransport.js";
19
- import { Avatar as ne, AvatarFallback as re, AvatarImage as ie, Badge as ae, Button as oe, Card as se, CardContent as ce, CardDescription as le, CardFooter as ue, CardHeader as de, CardTitle as fe, Checkbox as pe, Command as me, CommandEmpty as he, CommandGroup as ge, CommandInput as _e, CommandItem as ve, CommandList as ye, Dialog as be, DialogContent as xe, DialogDescription as Se, DialogFooter as Ce, DialogHeader as we, DialogTitle as Te, DialogTrigger as Ee, DropdownMenu as De, DropdownMenuContent as Oe, DropdownMenuItem as ke, DropdownMenuSeparator as Ae, DropdownMenuTrigger as je, Input as Me, Label as Ne, Popover as Pe, PopoverContent as Fe, PopoverTrigger as Ie, Progress as Le, ScrollArea as Re, Select as ze, SelectContent as Be, SelectItem as Ve, SelectTrigger as He, SelectValue as Ue, Separator as We, Skeleton as Ge, Switch as Ke, Table as qe, TableBody as Je, TableCell as Ye, TableHead as Xe, TableHeader as Ze, TableRow as Qe, Tabs as $e, TabsContent as et, TabsList as tt, TabsTrigger as nt, Textarea as rt, Tooltip as it, TooltipContent as at, TooltipProvider as ot, TooltipTrigger as st } from "./components/ui.js";
20
- import { EmptyState as ct, ErrorState as lt, LoadingState as ut, PageLayout as dt, PageSection as ft } from "./components/PageLayout.js";
21
- import { chartTokens as pt, seriesColor as mt } from "./components/charts/chartTokens.js";
22
- import { Sparkline as ht } from "./components/charts/Sparkline.js";
23
- import { MetricCard as gt, MetricCardSkeleton as _t, MetricGrid as vt } from "./components/MetricCard.js";
24
- import { GlassPanel as yt } from "./components/GlassPanel.js";
25
- import { ChartEmpty as bt, ChartTooltip as xt } from "./components/charts/ChartShell.js";
26
- import { TrendChart as St } from "./components/charts/TrendChart.js";
27
- import { VolumeBar as Ct } from "./components/charts/VolumeBar.js";
28
- import { StatusDonut as wt } from "./components/charts/StatusDonut.js";
29
- import { createCurrentIcon as Tt, createPinIcon as Et, createStopIcon as Dt, isRealCoord as Ot } from "./components/maps/leaflet-setup.js";
30
- import { MapCanvas as kt } from "./components/maps/MapCanvas.js";
31
- import { LogisticsMap as At } from "./components/maps/LogisticsMap.js";
32
- import { RouteMap as jt } from "./components/maps/RouteMap.js";
33
- import { TrackingMap as Mt } from "./components/maps/TrackingMap.js";
34
- import { PaymentStatusBadge as Nt, PriorityBadge as Pt, StatusBadge as Ft, TypeBadge as It, VehicleTypeBadge as Lt } from "./components/StatusBadge.js";
35
- import { DataTable as Rt } from "./components/DataTable.js";
36
- import { FormError as zt } from "./components/FormError.js";
37
- import { Notice as Bt, useNotice as Vt } from "./components/Notice.js";
38
- import { DocumentsCard as Ht } from "./components/DocumentsCard.js";
39
- import { CarbonFootprintPanel as Ut } from "./components/CarbonFootprintPanel.js";
13
+ import { MoveTheWheelsRoot as X } from "./MoveTheWheelsRoot.js";
14
+ import { useMoveTheWheelsStore as Z } from "./store/movethewheelsStore.js";
15
+ import { useSandboxAssistantTransport as Q } from "./services/createSandboxAssistantTransport.js";
16
+ import { Avatar as $, AvatarFallback as ee, AvatarImage as te, Badge as ne, Button as re, Card as ie, CardContent as ae, CardDescription as oe, CardFooter as se, CardHeader as ce, CardTitle as le, Checkbox as ue, Command as de, CommandEmpty as fe, CommandGroup as pe, CommandInput as me, CommandItem as he, CommandList as ge, Dialog as _e, DialogContent as ve, DialogDescription as ye, DialogFooter as be, DialogHeader as xe, DialogTitle as Se, DialogTrigger as Ce, DropdownMenu as we, DropdownMenuContent as Te, DropdownMenuItem as Ee, DropdownMenuSeparator as De, DropdownMenuTrigger as Oe, Input as ke, Label as Ae, Popover as je, PopoverContent as Me, PopoverTrigger as Ne, Progress as Pe, ScrollArea as Fe, Select as Ie, SelectContent as Le, SelectItem as Re, SelectTrigger as ze, SelectValue as Be, Separator as Ve, Skeleton as He, Switch as Ue, Table as We, TableBody as Ge, TableCell as Ke, TableHead as qe, TableHeader as Je, TableRow as Ye, Tabs as Xe, TabsContent as Ze, TabsList as Qe, TabsTrigger as $e, Textarea as et, Tooltip as tt, TooltipContent as nt, TooltipProvider as rt, TooltipTrigger as it } from "./components/ui.js";
17
+ import { EmptyState as at, ErrorState as ot, LoadingState as st, PageLayout as ct, PageSection as lt } from "./components/PageLayout.js";
18
+ import { chartTokens as ut, seriesColor as dt } from "./components/charts/chartTokens.js";
19
+ import { Sparkline as ft } from "./components/charts/Sparkline.js";
20
+ import { MetricCard as pt, MetricCardSkeleton as mt, MetricGrid as ht } from "./components/MetricCard.js";
21
+ import { GlassPanel as gt } from "./components/GlassPanel.js";
22
+ import { ChartEmpty as _t, ChartTooltip as vt } from "./components/charts/ChartShell.js";
23
+ import { TrendChart as yt } from "./components/charts/TrendChart.js";
24
+ import { VolumeBar as bt } from "./components/charts/VolumeBar.js";
25
+ import { StatusDonut as xt } from "./components/charts/StatusDonut.js";
26
+ import { createCurrentIcon as St, createPinIcon as Ct, createStopIcon as wt, isRealCoord as Tt } from "./components/maps/leaflet-setup.js";
27
+ import { MapCanvas as Et } from "./components/maps/MapCanvas.js";
28
+ import { LogisticsMap as Dt } from "./components/maps/LogisticsMap.js";
29
+ import { RouteMap as Ot } from "./components/maps/RouteMap.js";
30
+ import { TrackingMap as kt } from "./components/maps/TrackingMap.js";
31
+ import { PaymentStatusBadge as At, PriorityBadge as jt, StatusBadge as Mt, TypeBadge as Nt, VehicleTypeBadge as Pt } from "./components/StatusBadge.js";
32
+ import { DataTable as Ft } from "./components/DataTable.js";
33
+ import { FormError as It } from "./components/FormError.js";
34
+ import { Notice as Lt, useNotice as Rt } from "./components/Notice.js";
35
+ import { DocumentsCard as zt } from "./components/DocumentsCard.js";
36
+ import { CarbonFootprintPanel as Bt } from "./components/CarbonFootprintPanel.js";
40
37
  import "./components/index.js";
41
- export { ne as Avatar, re as AvatarFallback, ie as AvatarImage, ae as Badge, oe as Button, Ut as CarbonFootprintPanel, se as Card, ce as CardContent, le as CardDescription, ue as CardFooter, de as CardHeader, fe as CardTitle, bt as ChartEmpty, xt as ChartTooltip, pe as Checkbox, me as Command, he as CommandEmpty, ge as CommandGroup, _e as CommandInput, ve as CommandItem, ye as CommandList, Rt as DataTable, be as Dialog, xe as DialogContent, Se as DialogDescription, Ce as DialogFooter, we as DialogHeader, Te as DialogTitle, Ee as DialogTrigger, Ht as DocumentsCard, De as DropdownMenu, Oe as DropdownMenuContent, ke as DropdownMenuItem, Ae as DropdownMenuSeparator, je as DropdownMenuTrigger, ct as EmptyState, lt as ErrorState, zt as FormError, yt as GlassPanel, Me as Input, Ne as Label, ut as LoadingState, At as LogisticsMap, kt as MapCanvas, gt as MetricCard, _t as MetricCardSkeleton, vt as MetricGrid, $ as MoveTheWheelsRoot, Bt as Notice, dt as PageLayout, ft as PageSection, Nt as PaymentStatusBadge, Pe as Popover, Fe as PopoverContent, Ie as PopoverTrigger, Pt as PriorityBadge, Le as Progress, jt as RouteMap, Re as ScrollArea, ze as Select, Be as SelectContent, Ve as SelectItem, He as SelectTrigger, Ue as SelectValue, We as Separator, Ge as Skeleton, ht as Sparkline, Ft as StatusBadge, wt as StatusDonut, Ke as Switch, qe as Table, Je as TableBody, Ye as TableCell, Xe as TableHead, Ze as TableHeader, Qe as TableRow, $e as Tabs, et as TabsContent, tt as TabsList, nt as TabsTrigger, rt as Textarea, it as Tooltip, at as TooltipContent, ot as TooltipProvider, st as TooltipTrigger, Mt as TrackingMap, St as TrendChart, It as TypeBadge, Lt as VehicleTypeBadge, Ct as VolumeBar, pt as chartTokens, Tt as createCurrentIcon, Et as createPinIcon, Dt as createStopIcon, Ot as isRealCoord, mt as seriesColor, k as useAnalytics, J as useCaptureEpod, E as useCustomer, D as useCustomerStats, O as useCustomers, A as useDashboardMetrics, l as useDriver, u as useDriverStatusCounts, L as useDriverTracking, d as useDrivers, j as useEmissionsSummary, q as useEntityDocuments, Y as useEpod, X as useEpodPhotoUpload, Z as useEpodPhotoUrl, M as useFinanceMetrics, f as useFleet, N as useFleetAnalytics, p as useFleetStats, R as useGeofence, G as useImportExport, _ as useInventory, v as useInventoryStats, y as useInventoryTransactions, z as useLiveTracking, K as useModuleSettings, e as useMoveTheWheels, t as useMoveTheWheelsNavigate, ee as useMoveTheWheelsStore, Q as useMyPendingEpodDeliveryJobs, Vt as useNotice, o as useOrder, P as useOrderAnalytics, s as useOrderStats, B as useOrderTracking, c as useOrders, F as usePerformanceAnalytics, b as useProduct, x as useProductStockLevels, S as useProducts, W as useReports, I as useRevenueAnalytics, r as useRoute, i as useRouteStats, a as useRoutes, te as useSandboxAssistantTransport, C as useStockActions, n as useTr, V as useTracking, H as useTrackingAlerts, m as useVehicle, h as useVehicleDrivers, U as useVehicleTracking, g as useVehicles, w as useWarehouse, T as useWarehouses };
38
+ export { $ as Avatar, ee as AvatarFallback, te as AvatarImage, ne as Badge, re as Button, Bt as CarbonFootprintPanel, ie as Card, ae as CardContent, oe as CardDescription, se as CardFooter, ce as CardHeader, le as CardTitle, _t as ChartEmpty, vt as ChartTooltip, ue as Checkbox, de as Command, fe as CommandEmpty, pe as CommandGroup, me as CommandInput, he as CommandItem, ge as CommandList, Ft as DataTable, _e as Dialog, ve as DialogContent, ye as DialogDescription, be as DialogFooter, xe as DialogHeader, Se as DialogTitle, Ce as DialogTrigger, zt as DocumentsCard, we as DropdownMenu, Te as DropdownMenuContent, Ee as DropdownMenuItem, De as DropdownMenuSeparator, Oe as DropdownMenuTrigger, at as EmptyState, ot as ErrorState, It as FormError, gt as GlassPanel, ke as Input, Ae as Label, st as LoadingState, Dt as LogisticsMap, Et as MapCanvas, pt as MetricCard, mt as MetricCardSkeleton, ht as MetricGrid, X as MoveTheWheelsRoot, Lt as Notice, ct as PageLayout, lt as PageSection, At as PaymentStatusBadge, je as Popover, Me as PopoverContent, Ne as PopoverTrigger, jt as PriorityBadge, Pe as Progress, Ot as RouteMap, Fe as ScrollArea, Ie as Select, Le as SelectContent, Re as SelectItem, ze as SelectTrigger, Be as SelectValue, Ve as Separator, He as Skeleton, ft as Sparkline, Mt as StatusBadge, xt as StatusDonut, Ue as Switch, We as Table, Ge as TableBody, Ke as TableCell, qe as TableHead, Je as TableHeader, Ye as TableRow, Xe as Tabs, Ze as TabsContent, Qe as TabsList, $e as TabsTrigger, et as Textarea, tt as Tooltip, nt as TooltipContent, rt as TooltipProvider, it as TooltipTrigger, kt as TrackingMap, yt as TrendChart, Nt as TypeBadge, Pt as VehicleTypeBadge, bt as VolumeBar, ut as chartTokens, St as createCurrentIcon, Ct as createPinIcon, wt as createStopIcon, Tt as isRealCoord, dt as seriesColor, k as useAnalytics, G as useCaptureEpod, E as useCustomer, D as useCustomerStats, O as useCustomers, A as useDashboardMetrics, l as useDriver, u as useDriverStatusCounts, L as useDriverTracking, d as useDrivers, j as useEmissionsSummary, W as useEntityDocuments, K as useEpod, q as useEpodPhotoUpload, J as useEpodPhotoUrl, M as useFinanceMetrics, f as useFleet, N as useFleetAnalytics, p as useFleetStats, R as useGeofence, _ as useInventory, v as useInventoryStats, y as useInventoryTransactions, z as useLiveTracking, e as useMoveTheWheels, t as useMoveTheWheelsNavigate, Z as useMoveTheWheelsStore, Y as useMyPendingEpodDeliveryJobs, Rt as useNotice, o as useOrder, P as useOrderAnalytics, s as useOrderStats, B as useOrderTracking, c as useOrders, F as usePerformanceAnalytics, b as useProduct, x as useProductStockLevels, S as useProducts, I as useRevenueAnalytics, r as useRoute, i as useRouteStats, a as useRoutes, Q as useSandboxAssistantTransport, C as useStockActions, n as useTr, V as useTracking, H as useTrackingAlerts, m as useVehicle, h as useVehicleDrivers, U as useVehicleTracking, g as useVehicles, w as useWarehouse, T as useWarehouses };
@@ -11,8 +11,5 @@ export { useCustomers, useCustomer, useCustomerStats } from './useCustomers';
11
11
  export { useRoutes, useRoute, useRouteStats } from './useRoutes';
12
12
  export { useAnalytics, useDashboardMetrics, useRevenueAnalytics, useOrderAnalytics, useFleetAnalytics, usePerformanceAnalytics, useFinanceMetrics, type FinanceMetrics, useEmissionsSummary, type EmissionsSummary, } from './useAnalytics';
13
13
  export { useTracking, useOrderTracking, useVehicleTracking, useDriverTracking, useLiveTracking, useTrackingAlerts, useGeofence, } from './useTracking';
14
- export { useReports } from './useReports';
15
- export { useImportExport } from './useImportExport';
16
- export { useModuleSettings } from './useSettings';
17
14
  export { useEntityDocuments, type EntityDocument, type EntityDocumentType, } from './useEntityDocuments';
18
15
  export { useEpod, useMyPendingEpodDeliveryJobs, useCaptureEpod, useEpodPhotoUpload, useEpodPhotoUrl, type PendingEpodDeliveryJob, type CaptureEpodArgs, type UploadedEpodPhoto, } from './useEpod';
@@ -58,7 +58,7 @@ function S({ access: n }) {
58
58
  }),
59
59
  q && /* @__PURE__ */ p("p", {
60
60
  role: "alert",
61
- className: "mb-4 rounded-md border border-red-400 p-3",
61
+ className: "mb-4 rounded-md border border-status-error-border p-3",
62
62
  children: q
63
63
  }),
64
64
  Y && /* @__PURE__ */ p("p", {
@@ -102,7 +102,7 @@ function S({ access: n }) {
102
102
  onClick: () => {
103
103
  s.selectContainer(e.id), J(null), X(null);
104
104
  },
105
- className: `w-full rounded-md border p-3 text-left ${e.id === s.containerId ? "border-blue-500" : ""}`,
105
+ className: `w-full rounded-md border p-3 text-left ${e.id === s.containerId ? "border-action-primary-border" : ""}`,
106
106
  children: [
107
107
  /* @__PURE__ */ p("span", {
108
108
  className: "font-semibold",
@@ -233,7 +233,7 @@ function S({ access: n }) {
233
233
  type: "button",
234
234
  "aria-pressed": e.id === s.cycleId,
235
235
  disabled: G,
236
- className: `w-full rounded-md border p-3 text-left ${e.id === s.cycleId ? "border-blue-500" : ""}`,
236
+ className: `w-full rounded-md border p-3 text-left ${e.id === s.cycleId ? "border-action-primary-border" : ""}`,
237
237
  onClick: () => {
238
238
  s.selectCycle(e.id), J(null), X(null);
239
239
  },
@@ -121,69 +121,124 @@ function N() {
121
121
  title: P("movethewheels.tracking.empty.title", "Enter a tracking number"),
122
122
  description: P("movethewheels.tracking.empty.description", "Use your tracking number or order ID to see the current status of your shipment")
123
123
  }),
124
- W && /* @__PURE__ */ k("div", {
124
+ W && !U && /* @__PURE__ */ O(d, {
125
+ "data-testid": "tracking-empty-state",
126
+ children: /* @__PURE__ */ O(f, {
127
+ className: "p-6 sm:p-8",
128
+ children: /* @__PURE__ */ k("div", {
129
+ className: "flex flex-col gap-6 sm:flex-row sm:items-start",
130
+ children: [/* @__PURE__ */ O("div", {
131
+ className: "flex h-12 w-12 shrink-0 items-center justify-center rounded-full bg-bg-sunken text-text-secondary",
132
+ children: /* @__PURE__ */ O(n, { size: 24 })
133
+ }), /* @__PURE__ */ k("div", {
134
+ className: "min-w-0 flex-1",
135
+ children: [
136
+ /* @__PURE__ */ O("h2", {
137
+ className: "text-lg font-semibold text-text-primary",
138
+ children: P("movethewheels.tracking.emptyState.title", "No tracking updates yet")
139
+ }),
140
+ /* @__PURE__ */ O("p", {
141
+ className: "mt-1 text-sm text-text-secondary",
142
+ children: P("movethewheels.tracking.emptyState.description", "This order was found, but tracking updates will appear after the first shipment event.")
143
+ }),
144
+ /* @__PURE__ */ k("div", {
145
+ className: "mt-6 grid grid-cols-2 gap-4 sm:grid-cols-4",
146
+ children: [
147
+ /* @__PURE__ */ k("div", { children: [/* @__PURE__ */ O("p", {
148
+ className: "text-sm text-text-secondary",
149
+ children: P("movethewheels.tracking.emptyState.order", "Order")
150
+ }), /* @__PURE__ */ O("p", {
151
+ className: "font-medium",
152
+ children: W.orderNumber
153
+ })] }),
154
+ /* @__PURE__ */ k("div", { children: [/* @__PURE__ */ O("p", {
155
+ className: "text-sm text-text-secondary",
156
+ children: P("movethewheels.tracking.emptyState.status", "Status")
157
+ }), /* @__PURE__ */ O(y, {
158
+ status: W.status,
159
+ type: "order"
160
+ })] }),
161
+ /* @__PURE__ */ k("div", { children: [/* @__PURE__ */ O("p", {
162
+ className: "text-sm text-text-secondary",
163
+ children: P("movethewheels.tracking.details.trackingNumber", "Tracking Number")
164
+ }), /* @__PURE__ */ O("p", {
165
+ className: "font-mono font-medium",
166
+ children: W.trackingNumber || "—"
167
+ })] }),
168
+ /* @__PURE__ */ k("div", { children: [/* @__PURE__ */ O("p", {
169
+ className: "text-sm text-text-secondary",
170
+ children: P("movethewheels.tracking.details.items", "Items")
171
+ }), /* @__PURE__ */ k("p", {
172
+ className: "font-medium",
173
+ children: [
174
+ W.items.length,
175
+ " ",
176
+ P("movethewheels.tracking.details.itemsSuffix", "items")
177
+ ]
178
+ })] })
179
+ ]
180
+ })
181
+ ]
182
+ })]
183
+ })
184
+ })
185
+ }),
186
+ W && U && /* @__PURE__ */ k("div", {
125
187
  className: "grid grid-cols-1 lg:grid-cols-3 gap-6",
126
188
  children: [/* @__PURE__ */ k("div", {
127
189
  className: "lg:col-span-2 space-y-6",
128
190
  children: [
129
- /* @__PURE__ */ k(j, { children: [
130
- /* @__PURE__ */ k("div", {
131
- className: "flex items-center justify-between mb-4",
132
- children: [/* @__PURE__ */ k("h2", {
133
- className: "flex items-center gap-2 text-base font-semibold text-text-primary",
191
+ /* @__PURE__ */ k(j, { children: [/* @__PURE__ */ k("div", {
192
+ className: "flex items-center justify-between mb-4",
193
+ children: [/* @__PURE__ */ k("h2", {
194
+ className: "flex items-center gap-2 text-base font-semibold text-text-primary",
195
+ children: [
196
+ /* @__PURE__ */ O(i, { size: 20 }),
197
+ P("movethewheels.tracking.orderLabel", "Order"),
198
+ " ",
199
+ W.orderNumber
200
+ ]
201
+ }), /* @__PURE__ */ O(y, {
202
+ status: W.status,
203
+ type: "order"
204
+ })]
205
+ }), /* @__PURE__ */ k("div", {
206
+ className: "grid grid-cols-2 md:grid-cols-4 gap-4",
207
+ children: [
208
+ /* @__PURE__ */ k("div", { children: [/* @__PURE__ */ O("p", {
209
+ className: "text-sm text-text-secondary",
210
+ children: P("movethewheels.tracking.details.trackingNumber", "Tracking Number")
211
+ }), /* @__PURE__ */ O("p", {
212
+ className: "font-mono font-medium",
213
+ children: W.trackingNumber || "—"
214
+ })] }),
215
+ /* @__PURE__ */ k("div", { children: [/* @__PURE__ */ O("p", {
216
+ className: "text-sm text-text-secondary",
217
+ children: P("movethewheels.tracking.details.estimatedDelivery", "Estimated Delivery")
218
+ }), /* @__PURE__ */ O("p", {
219
+ className: "font-medium",
220
+ children: U?.estimatedArrival ? x(U.estimatedArrival, "full") : W.scheduledDelivery ? x(W.scheduledDelivery, "full") : P("movethewheels.tracking.details.tbd", "TBD")
221
+ })] }),
222
+ /* @__PURE__ */ k("div", { children: [/* @__PURE__ */ O("p", {
223
+ className: "text-sm text-text-secondary",
224
+ children: P("movethewheels.tracking.details.items", "Items")
225
+ }), /* @__PURE__ */ k("p", {
226
+ className: "font-medium",
134
227
  children: [
135
- /* @__PURE__ */ O(i, { size: 20 }),
136
- P("movethewheels.tracking.orderLabel", "Order"),
228
+ W.items.length,
137
229
  " ",
138
- W.orderNumber
230
+ P("movethewheels.tracking.details.itemsSuffix", "items")
139
231
  ]
140
- }), /* @__PURE__ */ O(y, {
141
- status: W.status,
142
- type: "order"
143
- })]
144
- }),
145
- /* @__PURE__ */ k("div", {
146
- className: "grid grid-cols-2 md:grid-cols-4 gap-4",
147
- children: [
148
- /* @__PURE__ */ k("div", { children: [/* @__PURE__ */ O("p", {
149
- className: "text-sm text-text-secondary",
150
- children: P("movethewheels.tracking.details.trackingNumber", "Tracking Number")
151
- }), /* @__PURE__ */ O("p", {
152
- className: "font-mono font-medium",
153
- children: W.trackingNumber || "—"
154
- })] }),
155
- /* @__PURE__ */ k("div", { children: [/* @__PURE__ */ O("p", {
156
- className: "text-sm text-text-secondary",
157
- children: P("movethewheels.tracking.details.estimatedDelivery", "Estimated Delivery")
158
- }), /* @__PURE__ */ O("p", {
159
- className: "font-medium",
160
- children: U?.estimatedArrival ? x(U.estimatedArrival, "full") : W.scheduledDelivery ? x(W.scheduledDelivery, "full") : P("movethewheels.tracking.details.tbd", "TBD")
161
- })] }),
162
- /* @__PURE__ */ k("div", { children: [/* @__PURE__ */ O("p", {
163
- className: "text-sm text-text-secondary",
164
- children: P("movethewheels.tracking.details.items", "Items")
165
- }), /* @__PURE__ */ k("p", {
166
- className: "font-medium",
167
- children: [
168
- W.items.length,
169
- " ",
170
- P("movethewheels.tracking.details.itemsSuffix", "items")
171
- ]
172
- })] }),
173
- /* @__PURE__ */ k("div", { children: [/* @__PURE__ */ O("p", {
174
- className: "text-sm text-text-secondary",
175
- children: P("movethewheels.tracking.details.lastUpdated", "Last Updated")
176
- }), /* @__PURE__ */ O("p", {
177
- className: "font-medium",
178
- children: U?.lastUpdated ? x(U.lastUpdated, "relative") : P("movethewheels.tracking.details.noUpdates", "No tracking updates yet")
179
- })] })
180
- ]
181
- }),
182
- !U && /* @__PURE__ */ O("p", {
183
- className: "mt-4 rounded-card border border-border-subtle bg-bg-sunken p-3 text-sm text-text-secondary",
184
- children: P("movethewheels.tracking.details.noUpdatesDescription", "The delivery was found, but no tracking updates have been recorded yet.")
185
- })
186
- ] }),
232
+ })] }),
233
+ /* @__PURE__ */ k("div", { children: [/* @__PURE__ */ O("p", {
234
+ className: "text-sm text-text-secondary",
235
+ children: P("movethewheels.tracking.details.lastUpdated", "Last Updated")
236
+ }), /* @__PURE__ */ O("p", {
237
+ className: "font-medium",
238
+ children: U?.lastUpdated ? x(U.lastUpdated, "relative") : P("movethewheels.tracking.details.noUpdates", "No tracking updates yet")
239
+ })] })
240
+ ]
241
+ })] }),
187
242
  /* @__PURE__ */ k(d, { children: [/* @__PURE__ */ O(p, { children: /* @__PURE__ */ k(m, {
188
243
  className: "flex items-center gap-2",
189
244
  children: [/* @__PURE__ */ O(r, { size: 18 }), P("movethewheels.tracking.routeMap.title", "Route map")]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burdenoff/microfe-movethewheels",
3
- "version": "2026.1026.2",
3
+ "version": "2026.1028.1",
4
4
  "description": "Burdenoff MoveTheWheels Microfrontend - Logistics & Supply Chain Management Platform",
5
5
  "type": "module",
6
6
  "files": [
@@ -77,6 +77,7 @@
77
77
  "dependencies": {
78
78
  "@apollo/client": "^4.0.11",
79
79
  "@burdenoff/fe-libs": "2026.1017.12",
80
+ "@graphql-typed-document-node/core": "^3.2.0",
80
81
  "@react-leaflet/core": "^3.0.0",
81
82
  "@tanstack/react-query": "^5.90.16",
82
83
  "@types/leaflet": "1.9.22",
@@ -16,19 +16,15 @@ import {
16
16
  Warehouse,
17
17
  Route,
18
18
  BarChart3,
19
- Settings,
20
- Store,
21
19
  Car,
22
20
  UserCheck,
23
21
  Boxes,
24
22
  ClipboardList,
25
- FileText,
26
23
  DollarSign,
27
- Globe,
28
24
  Bot,
29
25
  } from 'lucide-react';
30
26
  import { MoveTheWheelsProvider } from './providers/MoveTheWheelsProvider';
31
- import { FeatureFlagProvider, useFeatureFlag } from '@burdenoff/fe-libs/shared/feature-flags';
27
+ import { FeatureFlagProvider } from '@burdenoff/fe-libs/shared/feature-flags';
32
28
  import type { NavItem, MoveTheWheelsRootProps } from './types';
33
29
  import { MoveTheWheelsRoutes } from './MoveTheWheelsRoutes';
34
30
  import { useTr } from './hooks';
@@ -47,12 +43,6 @@ const NavRegistrar: FC<Pick<MoveTheWheelsRootProps, 'registerNavItems' | 'basePa
47
43
  }) => {
48
44
  const tr = useTr();
49
45
 
50
- // The backend has no ServiceProvider/ServiceOffering model (dropped by
51
- // migration 20260707000001_movethewheels_reuse_cleanup) — hide the
52
- // Marketplace nav entry until a serviceProviders/serviceOfferings resolver
53
- // ships. Defaults to disabled (fails closed).
54
- const marketplaceEnabled = useFeatureFlag('movethewheels.marketplace', false);
55
-
56
46
  // Helper to join paths correctly, avoiding double slashes
57
47
  const joinPath = (base: string, path: string): string => {
58
48
  const cleanBase = base.endsWith('/') ? base.slice(0, -1) : base;
@@ -292,33 +282,6 @@ const NavRegistrar: FC<Pick<MoveTheWheelsRootProps, 'registerNavItems' | 'basePa
292
282
  },
293
283
  ],
294
284
  },
295
- // Hidden until a serviceProviders/serviceOfferings backend resolver
296
- // ships — see the marketplaceEnabled flag check above.
297
- ...(marketplaceEnabled
298
- ? [
299
- {
300
- id: 'mtw-marketplace',
301
- label: tr('movethewheels.root.nav.marketplace', 'Marketplace'),
302
- path: joinPath(basePath, 'marketplace'),
303
- icon: <Store size={16} />,
304
- order: 10,
305
- },
306
- ]
307
- : []),
308
- {
309
- id: 'mtw-import-export',
310
- label: tr('movethewheels.root.nav.importExport', 'Import/Export'),
311
- path: joinPath(basePath, 'import-export'),
312
- icon: <Globe size={16} />,
313
- order: 11,
314
- },
315
- {
316
- id: 'mtw-reports',
317
- label: tr('movethewheels.root.nav.reports', 'Reports'),
318
- path: joinPath(basePath, 'reports'),
319
- icon: <FileText size={16} />,
320
- order: 12,
321
- },
322
285
  {
323
286
  id: 'mtw-ai-assistant',
324
287
  label: tr('movethewheels.root.nav.aiAssistant', 'AI Assistant'),
@@ -326,13 +289,6 @@ const NavRegistrar: FC<Pick<MoveTheWheelsRootProps, 'registerNavItems' | 'basePa
326
289
  icon: <Bot size={16} />,
327
290
  order: 13,
328
291
  },
329
- {
330
- id: 'mtw-settings',
331
- label: tr('movethewheels.root.nav.settings', 'Settings'),
332
- path: joinPath(basePath, 'settings'),
333
- icon: <Settings size={16} />,
334
- order: 99,
335
- },
336
292
  ],
337
293
  };
338
294
 
@@ -341,7 +297,7 @@ const NavRegistrar: FC<Pick<MoveTheWheelsRootProps, 'registerNavItems' | 'basePa
341
297
 
342
298
  // Return cleanup function to unregister on unmount
343
299
  return cleanup;
344
- }, [registerNavItems, basePath, marketplaceEnabled, tr]);
300
+ }, [registerNavItems, basePath, tr]);
345
301
 
346
302
  return null;
347
303
  };
@@ -79,10 +79,6 @@ const FreightEstimatePage = lazy(() => import('./pages/FreightEstimatePage'));
79
79
  const FreightInvoicePage = lazy(() => import('./pages/FreightInvoicePage'));
80
80
  const ConsolidationPage = lazy(() => import('./pages/ConsolidationPage'));
81
81
  const LogisticsProceduresPage = lazy(() => import('./pages/LogisticsProceduresPage'));
82
- const MarketplacePage = lazy(() => import('./pages/MarketplacePage'));
83
- const ImportExportPage = lazy(() => import('./pages/ImportExportPage'));
84
- const ReportsPage = lazy(() => import('./pages/ReportsPage'));
85
- const SettingsPage = lazy(() => import('./pages/SettingsPage'));
86
82
  const AIAssistantPage = lazy(() => import('./pages/AIAssistantPage'));
87
83
  const DeliveryCapturePage = lazy(() => import('./pages/DeliveryCapturePage'));
88
84
  const MultiModalShipmentPage = lazy(() => import('./pages/MultiModalShipmentPage'));
@@ -176,21 +172,9 @@ export function MoveTheWheelsRoutes() {
176
172
  <Route path="finance/freight-estimates" element={<FreightEstimatePage />} />
177
173
  <Route path="finance/freight-invoice-comparisons" element={<FreightInvoicePage />} />
178
174
 
179
- {/* Marketplace */}
180
- <Route path="marketplace" element={<MarketplacePage />} />
181
-
182
- {/* Import/Export */}
183
- <Route path="import-export" element={<ImportExportPage />} />
184
-
185
- {/* Reports */}
186
- <Route path="reports" element={<ReportsPage />} />
187
-
188
175
  {/* AI Assistant */}
189
176
  <Route path="ai-assistant" element={<AIAssistantPage />} />
190
177
 
191
- {/* Settings */}
192
- <Route path="settings" element={<SettingsPage />} />
193
-
194
178
  {/* Catch-all - friendly 404 */}
195
179
  <Route path="*" element={<MoveTheWheelsNotFound />} />
196
180
  </Routes>
@@ -100,7 +100,7 @@ export function ProofOfDeliveryCard({ deliveryJobId }: ProofOfDeliveryCardProps)
100
100
  Signature {epod.signatureType === 'typed' ? '(typed)' : '(drawn)'}
101
101
  </p>
102
102
  {epod.signatureType === 'drawn' ? (
103
- <div className="border rounded-lg p-2 inline-block bg-white">
103
+ <div className="border rounded-lg p-2 inline-block bg-bg-surface">
104
104
  <img src={epod.signatureData} alt="Recipient signature" className="h-16" />
105
105
  </div>
106
106
  ) : (
@@ -212,8 +212,8 @@ function VarianceList({ rows }: VarianceListProps) {
212
212
  const isOvershoot = row.volumeVariance > 0;
213
213
  const Icon = isOvershoot ? TrendingUp : TrendingDown;
214
214
  const tone = isOvershoot
215
- ? 'text-emerald-600 dark:text-emerald-400'
216
- : 'text-rose-600 dark:text-rose-400';
215
+ ? 'text-status-success-text'
216
+ : 'text-status-error-text';
217
217
  return (
218
218
  <li
219
219
  key={`${row.scopeType}-${row.scopeKey}-${row.periodStart}`}
@@ -73,15 +73,6 @@ export {
73
73
  useGeofence,
74
74
  } from './useTracking';
75
75
 
76
- // Reports
77
- export { useReports } from './useReports';
78
-
79
- // Import / Export
80
- export { useImportExport } from './useImportExport';
81
-
82
- // Module settings
83
- export { useModuleSettings } from './useSettings';
84
-
85
76
  // Entity documents (reuse of wspace-files-svc)
86
77
  export {
87
78
  useEntityDocuments,
@@ -142,7 +142,7 @@ function ContainerWorkbench({ access }: { access: ReturnType<typeof useShipmentP
142
142
  actual empty return and recorded return acceptance.
143
143
  </p>
144
144
  {actionError && (
145
- <p role="alert" className="mb-4 rounded-md border border-red-400 p-3">
145
+ <p role="alert" className="mb-4 rounded-md border border-status-error-border p-3">
146
146
  {actionError}
147
147
  </p>
148
148
  )}
@@ -178,7 +178,7 @@ function ContainerWorkbench({ access }: { access: ReturnType<typeof useShipmentP
178
178
  setActionError(null);
179
179
  setNotice(null);
180
180
  }}
181
- className={`w-full rounded-md border p-3 text-left ${row.id === data.containerId ? 'border-blue-500' : ''}`}
181
+ className={`w-full rounded-md border p-3 text-left ${row.id === data.containerId ? 'border-action-primary-border' : ''}`}
182
182
  >
183
183
  <span className="font-semibold">{row.containerNumber}</span>
184
184
  <br />
@@ -269,7 +269,7 @@ function ContainerWorkbench({ access }: { access: ReturnType<typeof useShipmentP
269
269
  type="button"
270
270
  aria-pressed={row.id === data.cycleId}
271
271
  disabled={busy}
272
- className={`w-full rounded-md border p-3 text-left ${row.id === data.cycleId ? 'border-blue-500' : ''}`}
272
+ className={`w-full rounded-md border p-3 text-left ${row.id === data.cycleId ? 'border-action-primary-border' : ''}`}
273
273
  onClick={() => {
274
274
  data.selectCycle(row.id);
275
275
  setActionError(null);
@@ -181,8 +181,61 @@ export default function TrackingPage() {
181
181
  />
182
182
  )}
183
183
 
184
+ {/* Order found, but tracking has not started yet */}
185
+ {order && !tracking && (
186
+ <Card data-testid="tracking-empty-state">
187
+ <CardContent className="p-6 sm:p-8">
188
+ <div className="flex flex-col gap-6 sm:flex-row sm:items-start">
189
+ <div className="flex h-12 w-12 shrink-0 items-center justify-center rounded-full bg-bg-sunken text-text-secondary">
190
+ <Clock size={24} />
191
+ </div>
192
+ <div className="min-w-0 flex-1">
193
+ <h2 className="text-lg font-semibold text-text-primary">
194
+ {t('movethewheels.tracking.emptyState.title', 'No tracking updates yet')}
195
+ </h2>
196
+ <p className="mt-1 text-sm text-text-secondary">
197
+ {t(
198
+ 'movethewheels.tracking.emptyState.description',
199
+ 'This order was found, but tracking updates will appear after the first shipment event.'
200
+ )}
201
+ </p>
202
+ <div className="mt-6 grid grid-cols-2 gap-4 sm:grid-cols-4">
203
+ <div>
204
+ <p className="text-sm text-text-secondary">
205
+ {t('movethewheels.tracking.emptyState.order', 'Order')}
206
+ </p>
207
+ <p className="font-medium">{order.orderNumber}</p>
208
+ </div>
209
+ <div>
210
+ <p className="text-sm text-text-secondary">
211
+ {t('movethewheels.tracking.emptyState.status', 'Status')}
212
+ </p>
213
+ <StatusBadge status={order.status} type="order" />
214
+ </div>
215
+ <div>
216
+ <p className="text-sm text-text-secondary">
217
+ {t('movethewheels.tracking.details.trackingNumber', 'Tracking Number')}
218
+ </p>
219
+ <p className="font-mono font-medium">{order.trackingNumber || '—'}</p>
220
+ </div>
221
+ <div>
222
+ <p className="text-sm text-text-secondary">
223
+ {t('movethewheels.tracking.details.items', 'Items')}
224
+ </p>
225
+ <p className="font-medium">
226
+ {order.items.length}{' '}
227
+ {t('movethewheels.tracking.details.itemsSuffix', 'items')}
228
+ </p>
229
+ </div>
230
+ </div>
231
+ </div>
232
+ </div>
233
+ </CardContent>
234
+ </Card>
235
+ )}
236
+
184
237
  {/* Tracking Results */}
185
- {order && (
238
+ {order && tracking && (
186
239
  <div className="grid grid-cols-1 lg:grid-cols-3 gap-6">
187
240
  {/* Main Tracking Info */}
188
241
  <div className="lg:col-span-2 space-y-6">
@@ -233,14 +286,6 @@ export default function TrackingPage() {
233
286
  </p>
234
287
  </div>
235
288
  </div>
236
- {!tracking && (
237
- <p className="mt-4 rounded-card border border-border-subtle bg-bg-sunken p-3 text-sm text-text-secondary">
238
- {t(
239
- 'movethewheels.tracking.details.noUpdatesDescription',
240
- 'The delivery was found, but no tracking updates have been recorded yet.'
241
- )}
242
- </p>
243
- )}
244
289
  </EmphasisPanel>
245
290
 
246
291
  {/* Route Map — real origin/destination + tracking trail + live position */}
@@ -1,27 +0,0 @@
1
- import { useCallback as e, useState as t } from "react";
2
- //#region src/movethewheels/hooks/useImportExport.ts
3
- function n() {
4
- let [n, r] = t(!1), [i, a] = t(null), o = e(async (e) => {
5
- r(!0), a(null);
6
- try {
7
- return await e();
8
- } catch (e) {
9
- let t = e instanceof Error ? e : /* @__PURE__ */ Error("Import/export failed");
10
- throw a(t), t;
11
- } finally {
12
- r(!1);
13
- }
14
- }, []);
15
- return {
16
- exportData: e(async (e, t) => o(async () => {
17
- throw Error(`Export for "${e}" is not available: the import/export surface was withdrawn from the service.`);
18
- }), [o]),
19
- importData: e(async (e, t) => o(async () => {
20
- throw Error(`Import for "${e}" is not available: the import surface was withdrawn from the service.`);
21
- }), [o]),
22
- isBusy: n,
23
- error: i
24
- };
25
- }
26
- //#endregion
27
- export { n as useImportExport };