import { cn } from '@renderer/lib/utils'; import type { FileEditTimeline as FileEditTimelineType } from '@shared/types/review'; interface FileEditTimelineProps { timeline: FileEditTimelineType; onEventClick?: (snippetIndex: number) => void; activeSnippetIndex?: number; } export const FileEditTimeline = ({ timeline, onEventClick, activeSnippetIndex, }: FileEditTimelineProps) => { if (timeline.events.length === 0) { return
No edit events
; } return (
{timeline.events.map((event, idx) => { const isActive = activeSnippetIndex === event.snippetIndex; const isLast = idx === timeline.events.length - 1; const time = formatTime(event.timestamp); return (
{/* Timeline line + dot */}
{!isLast &&
}
{/* Content */}
); })}
); }; function formatTime(timestamp: string): string { try { const date = new Date(timestamp); if (isNaN(date.getTime())) return '??:??'; return date.toLocaleTimeString('en-US', { hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false, }); } catch { return '??:??'; } }