import { useEffect, useState } from 'react'; import { BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, Legend, ResponsiveContainer } from 'recharts'; import type { RequestMetrics } from '@/types'; import { grafanaColors, getTextColor, getGridColor, getTooltipStyle } from '@/lib/chart-colors'; interface RequestMetricsChartProps { data: RequestMetrics; } export function RequestMetricsChart({ data }: RequestMetricsChartProps) { const [isDark, setIsDark] = useState(false); useEffect(() => { const checkDarkMode = () => { setIsDark(document.documentElement.classList.contains('dark')); }; checkDarkMode(); const observer = new MutationObserver(checkDarkMode); observer.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] }); return () => observer.disconnect(); }, []); const colors = isDark ? grafanaColors.dark : grafanaColors.light; const textColor = getTextColor(isDark); const gridColor = getGridColor(isDark); const tooltipStyle = getTooltipStyle(isDark); const chartData = [ { name: 'Requests (24h)', GET: data.getRequests, PUT: data.putRequests, DELETE: data.deleteRequests, LIST: data.listRequests, }, ]; return ( (value as number).toLocaleString()} contentStyle={tooltipStyle as React.CSSProperties} labelStyle={{ color: textColor }} /> ); }