import { useAppTranslation } from '@features/localization/renderer';
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) => {
const { t } = useAppTranslation('team');
if (timeline.events.length === 0) {
return
{t('review.timeline.empty')}
;
}
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 */}
{/* 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 '??:??';
}
}