"use client"; import { FIXED_TIMELINE_END_YEAR, FIXED_TIMELINE_START_YEAR, clampYearValue } from "@/uhm/lib/utils/timeline"; import styles from "@/styles/TimelineBar.module.css"; type Props = { year: number; onYearChange: (year: number) => void; timeRange?: number; onTimeRangeChange?: (range: number) => void; isLoading: boolean; disabled: boolean; statusText?: string | null; filterEnabled?: boolean; onFilterEnabledChange?: (enabled: boolean) => void; style?: React.CSSProperties; }; export default function TimelineBar({ year, onYearChange, timeRange, onTimeRangeChange, isLoading, disabled, statusText, filterEnabled, onFilterEnabledChange, style, }: Props) { const lower = FIXED_TIMELINE_START_YEAR; const upper = FIXED_TIMELINE_END_YEAR; const effectiveDisabled = disabled; const safeYear = clampYearValue(year, lower, upper); const helperText = isLoading ? "Đang tải geometry theo mốc thời gian..." : statusText || null; const handleYearChange = (nextYear: number) => { onYearChange(clampYearValue(Math.trunc(nextYear), lower, upper)); }; const handleTimeRangeChange = (nextValue: number) => { if (!onTimeRangeChange) return; const safe = Number.isFinite(nextValue) ? Math.trunc(nextValue) : 0; onTimeRangeChange(Math.max(0, Math.min(30, safe))); }; return (