"use client"; import type { RecapTimelineSegment } from "@/lib/recap/types"; import { computeWidths, formatDuration, formatTime, LABEL_MIN_WIDTH_PCT, normalizeTimelineSegments, SEGMENT_MIN_WIDTH_PCT, TIMELINE_COLORS, } from "@/components/recap/timelineRender"; import { useI18n } from "@/lib/i18n/useI18n"; type Props = { rangeStart: string; rangeEnd: string; segments: RecapTimelineSegment[]; locale: string; hasData?: boolean; loading?: boolean; }; export default function RecapFullTimeline({ rangeStart, rangeEnd, segments, locale, hasData = false, loading = false, }: Props) { const { t } = useI18n(); const startMs = new Date(rangeStart).getTime(); const endMs = new Date(rangeEnd).getTime(); const totalMs = Math.max(1, endMs - startMs); const normalized = hasData ? normalizeTimelineSegments(segments, startMs, endMs) : []; const widths = computeWidths(normalized, totalMs, SEGMENT_MIN_WIDTH_PCT); return (