diff --git a/apps/edr-freight-web/backoffice/src/components/bookings/BookingRequestsHeader.tsx b/apps/edr-freight-web/backoffice/src/components/bookings/BookingRequestsHeader.tsx
index 3d6eeb398..85243be46 100644
--- a/apps/edr-freight-web/backoffice/src/components/bookings/BookingRequestsHeader.tsx
+++ b/apps/edr-freight-web/backoffice/src/components/bookings/BookingRequestsHeader.tsx
@@ -1,11 +1,10 @@
import type { ReactNode } from "react";
-import { Box, Button, Group, Paper, Stack, Text, ThemeIcon, Title } from "@mantine/core";
+import { Box, Button, Group, Paper, Stack, Text } from "@mantine/core";
import type { LucideIcon } from "lucide-react";
import {
AlertTriangle,
CheckCircle2,
Clock,
- Inbox,
LayoutList,
Plus,
RefreshCw,
@@ -55,76 +54,45 @@ export function BookingRequestsHeader({
const val = (n?: number) => (loading ? "—" : (n ?? 0));
return (
-
-
-
-
-
-
-
-
-
- Operations
-
-
- Booking Requests
-
-
- Track every booking from submission through approval, payment, and
- dispatch — prioritize what needs action.
-
-
-
-
- } onClick={onCreate}>
- Create booking
-
- }
- loading={isFetching}
- onClick={onRefresh}
- >
- Refresh
-
-
-
+
+
+ } onClick={onCreate}>
+ Create booking
+
+ }
+ loading={isFetching}
+ onClick={onRefresh}
+ >
+ Refresh
+
+
-
-
-
-
-
-
+
+
+
+
+
+
- {tabs ? : null}
-
-
+ {tabs ? : null}
+
);
}
diff --git a/apps/edr-freight-web/backoffice/src/components/overview/OverviewPageHeader.tsx b/apps/edr-freight-web/backoffice/src/components/overview/OverviewPageHeader.tsx
index dbea71656..3c2e79f75 100644
--- a/apps/edr-freight-web/backoffice/src/components/overview/OverviewPageHeader.tsx
+++ b/apps/edr-freight-web/backoffice/src/components/overview/OverviewPageHeader.tsx
@@ -1,14 +1,5 @@
-import {
- ActionIcon,
- Box,
- Group,
- SegmentedControl,
- Stack,
- Text,
- ThemeIcon,
- Title,
-} from "@mantine/core";
-import { Activity, RefreshCw } from "lucide-react";
+import { ActionIcon, Group, SegmentedControl, Text } from "@mantine/core";
+import { RefreshCw } from "lucide-react";
import type { OverviewRange } from "@/types/overview";
@@ -29,40 +20,6 @@ function formatRelativeTime(iso: string | undefined) {
return new Date(iso).toLocaleString();
}
-/** Decorative line-art locomotive + rails — faint brand tint on the right. */
-function TrainArtwork() {
- return (
-
-
-
- );
-}
-
interface OverviewPageHeaderProps {
range: OverviewRange;
onRangeChange: (range: OverviewRange) => void;
@@ -79,59 +36,31 @@ export function OverviewPageHeader({
isRefreshing,
}: OverviewPageHeaderProps) {
return (
-
-
-
-
-
-
-
-
-
-
- Freight Backoffice · Live
-
-
-
- Operations Overview
-
-
- Real-time freight performance · updated {formatRelativeTime(generatedAt)}
-
-
-
-
- onRangeChange(value as OverviewRange)}
- data={RANGE_OPTIONS}
- size="sm"
- radius="lg"
- color="green"
- />
-
-
-
-
+
+
+ Updated {formatRelativeTime(generatedAt)}
+
+
+ onRangeChange(value as OverviewRange)}
+ data={RANGE_OPTIONS}
+ size="sm"
+ radius="lg"
+ color="green"
+ />
+
+
+
-
+
);
}
diff --git a/apps/edr-freight-web/backoffice/src/pages/bookings/NewBookingPage.tsx b/apps/edr-freight-web/backoffice/src/pages/bookings/NewBookingPage.tsx
index 04c6a421d..38be6dd31 100644
--- a/apps/edr-freight-web/backoffice/src/pages/bookings/NewBookingPage.tsx
+++ b/apps/edr-freight-web/backoffice/src/pages/bookings/NewBookingPage.tsx
@@ -21,7 +21,6 @@ import {
Textarea,
TextInput,
ThemeIcon,
- Title,
Tooltip,
} from "@mantine/core";
import {
@@ -380,47 +379,16 @@ export default function NewBookingPage() {
]}
/>
- {/* Hero */}
-
-
-
-
-
-
-
-
- New booking · Staff
-
-
- Create freight booking
-
-
- Capture cargo details, container lines, and routing — saved as a draft and pushed
- into the approval workflow.
-
-
-
- }
- onClick={() => navigate("/dashboard/booking-requests")}
- >
- Back to list
-
-
-
+
+ }
+ onClick={() => navigate("/dashboard/booking-requests")}
+ >
+ Back to list
+
+
{/* LEFT — form */}
diff --git a/apps/edr-freight-web/backoffice/src/pages/trainScheduling/BatchBoardPage.tsx b/apps/edr-freight-web/backoffice/src/pages/trainScheduling/BatchBoardPage.tsx
index f5dd76e33..029c33ae2 100644
--- a/apps/edr-freight-web/backoffice/src/pages/trainScheduling/BatchBoardPage.tsx
+++ b/apps/edr-freight-web/backoffice/src/pages/trainScheduling/BatchBoardPage.tsx
@@ -13,14 +13,12 @@ import {
Stack,
Text,
ThemeIcon,
- Title,
} from "@mantine/core";
import {
AlertTriangle,
ArrowRight,
CalendarDays,
Inbox,
- LayoutGrid,
Package,
RefreshCw,
Ruler,
@@ -323,82 +321,38 @@ export default function BatchBoardPage() {
- {/* Hero — clean white */}
-
-
-
-
-
-
-
-
-
- Allocation · Live
-
-
-
-
- Batch board
-
-
- Active schedules — open a card to see EAT 3-hour batch windows, bookings,
- and live wagon allocation.
-
-
-
- }
- loading={isFetching}
- onClick={() => void refetch()}
- >
- Refresh
-
-
+
+ }
+ loading={isFetching}
+ onClick={() => void refetch()}
+ >
+ Refresh
+
+
-
-
-
-
-
-
+
+
+
+
+
{isLoading ? (
diff --git a/apps/edr-freight-web/backoffice/src/pages/trainScheduling/BatchScheduleDetailPage.tsx b/apps/edr-freight-web/backoffice/src/pages/trainScheduling/BatchScheduleDetailPage.tsx
index 520d6cb08..772bd4d32 100644
--- a/apps/edr-freight-web/backoffice/src/pages/trainScheduling/BatchScheduleDetailPage.tsx
+++ b/apps/edr-freight-web/backoffice/src/pages/trainScheduling/BatchScheduleDetailPage.tsx
@@ -33,7 +33,6 @@ import {
PlayCircle,
RefreshCw,
Ruler,
- Train,
TrainFront,
Weight,
XCircle,
@@ -540,69 +539,50 @@ export default function BatchScheduleDetailPage() {
]}
/>
- {/* Hero — clean white */}
-
-
+
-
- }
- onClick={() => navigate("/dashboard/operations/batch-board")}
- >
- Back
-
-
-
-
-
-
-
-
- {data.trainNumber ?? data.routeName ?? "Schedule"}
-
-
- {data.status}
-
-
-
- }>
- {data.scheduleDate
- ? new Intl.DateTimeFormat("en-GB", {
- weekday: "short",
- day: "2-digit",
- month: "short",
- year: "numeric",
- hour: "2-digit",
- minute: "2-digit",
- hour12: false,
- timeZone: "Africa/Addis_Ababa",
- }).format(new Date(data.scheduleDate)) + " EAT"
- : "No date"}
-
- {data.locomotive ? (
- }>
- Loco {data.locomotive.code} · {fmtTons(data.locomotive.maxPullWeightTons)} ·{" "}
- {data.locomotive.maxTrainLengthMeters} m
-
- ) : null}
-
-
+
+
+ }
+ onClick={() => navigate("/dashboard/operations/batch-board")}
+ >
+ Back
+
+
+ {data.trainNumber ?? data.routeName ?? "Schedule"}
+
+
+ {data.status}
-
+
+
+ }>
+ {data.scheduleDate
+ ? new Intl.DateTimeFormat("en-GB", {
+ weekday: "short",
+ day: "2-digit",
+ month: "short",
+ year: "numeric",
+ hour: "2-digit",
+ minute: "2-digit",
+ hour12: false,
+ timeZone: "Africa/Addis_Ababa",
+ }).format(new Date(data.scheduleDate)) + " EAT"
+ : "No date"}
+
+ {data.locomotive ? (
+ }>
+ Loco {data.locomotive.code} · {fmtTons(data.locomotive.maxPullWeightTons)} ·{" "}
+ {data.locomotive.maxTrainLengthMeters} m
+
+ ) : null}
+
+
-
-
+
{/* Booking pipeline */}
- {/* Hero banner */}
-
-
-
-
-
-
-
-
-
- Train Schedules
-
-
- Plan departures, allocate bookings, and dispatch trains across
- every corridor.
-
-
-
- }
- onClick={() => setCreateOpen(true)}
- >
- New schedule
-
-
+
+ }
+ onClick={() => setCreateOpen(true)}
+ >
+ New schedule
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+