import { TaskMenuButton } from "./task-item-menu-button";
import { TaskItemChangeRequestStatus } from "./task-item-change-request-status";
import type { SidebarTaskRowTrailing } from "@/lib/state/slices/ui/sidebar-task-row-presentation";
import { formatRelativeTime, formatSidebarElapsedTime } from "@/lib/i18n/formats";
import { cn } from "@/lib/utils";
export type DiffStats = { additions: number; deletions: number };
function hasDiffStats(diffStats?: DiffStats): diffStats is DiffStats {
return Boolean(diffStats?.additions || diffStats?.deletions);
}
function DiffStatsRight({ diffStats, menuOpen }: { diffStats: DiffStats; menuOpen: boolean }) {
return (
+{diffStats.additions}{" "}
-{diffStats.deletions}
);
}
export function TaskItemTrailing({
trailing,
diffStats,
menuOpen,
effectiveMenuOpen,
relativeTime,
taskId,
prInfo,
}: {
trailing: SidebarTaskRowTrailing;
diffStats?: DiffStats;
menuOpen: boolean;
effectiveMenuOpen: boolean;
relativeTime?: string;
taskId?: string;
prInfo?: { number: number; state: string; aggregateState?: string };
}) {
const compactRelativeTime = formatSidebarElapsedTime(relativeTime ?? "");
const accessibleRelativeTime = formatRelativeTime(relativeTime ?? "");
if (trailing === "git_changes" && hasDiffStats(diffStats)) {
return (
);
}
if (trailing === "relative_time" && compactRelativeTime) {
return (
{compactRelativeTime}
{accessibleRelativeTime}
);
}
if (trailing === "change_request_status" && (taskId || prInfo)) {
return (
);
}
return ;
}