import { Train, Truck, Wrench } from "lucide-react"; import { Grid, Stack } from "@mantine/core"; import type { IOverviewOperationsTab, IOverviewStatusCount } from "@/types/overview"; import { OverviewDonutChart } from "../OverviewDonutChart"; import { OverviewHorizontalBarChart } from "../OverviewHorizontalBarChart"; import { OverviewKpiStrip } from "../OverviewKpiStrip"; function formatStatusLabel(status: string) { return status .replace(/_/g, " ") .toLowerCase() .replace(/\b\w/g, (char) => char.toUpperCase()); } function sumCounts(items: IOverviewStatusCount[]) { return items.reduce((sum, item) => sum + item.count, 0); } function countByStatus(items: IOverviewStatusCount[], status: string) { return items.find((item) => item.status === status)?.count ?? 0; } function toDonutData(items: IOverviewStatusCount[]) { return items.map((item) => ({ name: formatStatusLabel(item.status), value: item.count, })); } interface OverviewFleetTabPanelProps { data: IOverviewOperationsTab; } export function OverviewFleetTabPanel({ data }: OverviewFleetTabPanelProps) { return ( ({ label: item.label, value: item.count, }))} valueLabel="Wagons" /> ({ label: item.label, value: item.count, }))} valueLabel="Wagons" emptyMessage="No wagons assigned to yards" /> ); }