type PassStepperProps = { /** Индекс текущего витка (0-based) или -1, если виток не выбран. */ index: number; /** Всего витков в наборе. */ total: number; /** Подпись текущего витка (КА · оборот · ветвь · время) — пустая, если виток не выбран. */ label: string; canPrev: boolean; canNext: boolean; onPrev: () => void; onNext: () => void; /** Сброс курсора витка — вернуться к показу всего набора. */ onClear: () => void; }; /** * Степпер по виткам (проходам): ◀/▶ переводят курсор на предыдущий/следующий проход в хронологии, * таблица скроллится к нему. Пока прохождение выбрано — отображение изолировано до него; «Все» * возвращает к показу всего набора. Стоит под фильтром «Сутки»: сутки — грубый диапазон, проход — * точный курсор внутри. */ export function PassStepper({ index, total, label, canPrev, canNext, onPrev, onNext, onClear, }: PassStepperProps) { const active = index >= 0; return (
Прохождение {active ? `${index + 1} / ${total}` : `— / ${total}`} {active ? "" : "выберите прохождение ◀ ▶"} {active && ( )}
{active &&
{label}
}
); }