"use client"; // src/Components/Trip/TripTable.tsx // MIGRATED to ReusableTable + ActionButtons — same props, same visual // result as the original. StatusBadge kept custom since colors come // dynamically from TRIP_STATUS_MAP (per-status color+dot). import { Button, ReusableTable, ActionButtons } from "../UI"; import { TRIP_STATUS_MAP } from "@/src/types/trip"; import type { TableColumn } from "@/src/types/models"; import type { Trip } from "@/src/types/trip"; function StatusBadge({ status }: { status: Trip["status"] }) { const s = TRIP_STATUS_MAP[status]; return ( {s.label} ); } function fmtDate(iso?: string | null): string { if (!iso) return "—"; return new Date(iso).toLocaleDateString("en-US", { year: "numeric", month: "short", day: "numeric" }); } interface TripTableProps { trips: Trip[]; loading: boolean; search: string; page: number; pages: number; onEdit: (trip: Trip) => void; onDelete: (trip: Trip) => void; onView: (trip: Trip) => void; onAddFirst: () => void; onPageChange: (p: number) => void; } export function TripTable({ trips, loading, search, page, pages, onEdit, onDelete, onView, onAddFirst, onPageChange, }: TripTableProps) { const columns: TableColumn[] = [ { key: "title", header: "الرحلة", width: "2fr", render: (t) => (

{t.title}

{t.tripNumber}

), }, { key: "driver", header: "السائق", width: "1.3fr", render: (t) => t.driver?.name ?? "—" }, { key: "car", header: "السيارة", width: "1.3fr", render: (t) => (t.car ? `${t.car.manufacturer} ${t.car.model}` : "—"), }, { key: "branch", header: "الفرع", width: "1fr", render: (t) => t.branch?.name ?? "—" }, { key: "status", header: "الحالة", width: "1fr", render: (t) => }, { key: "startTime", header: "معاد البداء", width: "1fr", align: "center", render: (t) => fmtDate(t.startTime), }, ]; return ( Add first trip ) } renderActions={(t) => ( onView(t)} onEdit={() => onEdit(t)} onDelete={() => onDelete(t)} /> )} /> ); }