"use client"; import { useEffect, useState } from "react"; import { Area, AreaChart, CartesianGrid, ReferenceLine, ResponsiveContainer, Tooltip, XAxis, YAxis, } from "recharts"; import { useId } from "react"; type Props = { data: { distanceKm: number; value: number }[]; label: string; unit: string; color?: string; referenceLine?: number; decimals?: number; format?: "pace"; reversed?: boolean; syncId?: string; }; export function RunMetricChart({ data, label, unit, color = "var(--color-accent)", referenceLine, decimals = 0, format, reversed = false, syncId, }: Props) { const uid = useId(); const gradId = `grad-${uid.replace(/:/g, "")}`; const [mounted, setMounted] = useState(false); useEffect(() => setMounted(true), []); if (!mounted) { return
; } const values = data.map((p) => p.value); const min = Math.min(...values); const max = Math.max(...values); const pad = Math.max(1, Math.round((max - min) * 0.15)); const fmt = (v: number) => { if (format === "pace") { const m = Math.floor(v / 60); const s = Math.round(v % 60); return `${m}:${s.toString().padStart(2, "0")} /km`; } return decimals > 0 ? `${Number(v).toFixed(decimals)} ${unit}` : `${Math.round(v)} ${unit}`; }; return (