"use client"; type Props = { minYear: number; maxYear: number; windowStartYear: number; windowEndYear: number; onWindowStartYearChange: (year: number) => void; onWindowEndYearChange: (year: number) => void; year: number; onYearChange: (year: number) => void; isLoading: boolean; disabled: boolean; statusText?: string | null; }; export default function TimelineBar({ minYear, maxYear, windowStartYear, windowEndYear, onWindowStartYearChange, onWindowEndYearChange, year, onYearChange, isLoading, disabled, statusText, }: Props) { const lower = Math.min(minYear, maxYear); const upper = Math.max(minYear, maxYear); const globalLocked = lower === upper; const effectiveDisabled = disabled || globalLocked; const safeWindowStart = clampYear(windowStartYear, lower, upper); const safeWindowEnd = clampYear(windowEndYear, safeWindowStart, upper); const windowLocked = safeWindowStart === safeWindowEnd; const safeYear = clampYear(year, safeWindowStart, safeWindowEnd); const pointDisabled = effectiveDisabled || windowLocked; const windowStartPercent = toPercent(safeWindowStart, lower, upper); const windowEndPercent = toPercent(safeWindowEnd, lower, upper); const helperText = isLoading ? "Đang tải geometry theo mốc thời gian..." : statusText || (windowLocked ? "Khoảng lớn đang thu về một mốc duy nhất." : "Kéo mốc nhỏ để query trong khoảng lớn."); return (