import { useEffect, useRef } from 'react' import { createChart, IChartApi, ISeriesApi } from 'lightweight-charts' type Point = { time: number; value: number } export default function SimpleLineChart({ title, data }: { title: string; data: Point[] }) { const containerRef = useRef(null) const chartRef = useRef(null) const seriesRef = useRef | null>(null) useEffect(() => { if (!containerRef.current) return const chart = createChart(containerRef.current, { layout: { background: { color: '#0f172a' }, textColor: '#e2e8f0' }, grid: { vertLines: { color: '#1f2937' }, horzLines: { color: '#1f2937' } }, rightPriceScale: { borderColor: '#1f2937' }, timeScale: { borderColor: '#1f2937', timeVisible: true, secondsVisible: false }, height: 280, width: containerRef.current.clientWidth, }) chartRef.current = chart const series = chart.addLineSeries({ color: '#3b82f6', lineWidth: 2 }) seriesRef.current = series const onResize = () => { if (!containerRef.current || !chartRef.current) return chartRef.current.applyOptions({ width: containerRef.current.clientWidth }) } window.addEventListener('resize', onResize) return () => { window.removeEventListener('resize', onResize); chart.remove() } }, []) useEffect(() => { if (!seriesRef.current) return seriesRef.current.setData(data.map(d => ({ time: d.time as any, value: d.value }))) }, [data]) return (
{title}
) }