import { useTimelineStatus } from '../../../common/hooks/useSocket'; import { alpha, cx } from '../../../common/utils/styleUtils'; import { formatDuration, formatTime } from '../../../common/utils/time'; import { useTranslation } from '../../../translation/TranslationProvider'; import { getStatusLabel, getTimeToStart } from './timeline.utils'; import style from './Timeline.module.scss'; export type ProgressStatus = 'done' | 'live' | 'future'; interface TimelineEntryProps { colour: string; delay: number; duration: number; left: number; status: ProgressStatus; start: number; title: string; width: number; } const formatOptions = { format12: 'hh:mm a', format24: 'HH:mm', }; export function TimelineEntry(props: TimelineEntryProps) { const { colour, delay, duration, left, status, start, title, width } = props; const formattedStartTime = formatTime(start, formatOptions); const formattedDuration = formatDuration(duration); const delayedStart = start + delay; const hasDelay = delay > 0; const lighterColour = alpha(colour, 0.7); const columnClasses = cx([style.column, width < 40 && style.smallArea]); const contentClasses = cx([style.content, width < 20 && style.hide]); const showTitle = width > 25; return (