import React from 'react'; import { useCharts } from './ChartsHook'; import { useTheme } from '../../core/theme/ThemeProvider'; interface ChartAxisProps { dimension: 'x' | 'y'; label?: string; numberOfTicks?: number; } const generateTicks = (domain: [number, number], count: number): number[] => { if (domain[0] === domain[1]) return [domain[0]]; const [min, max] = domain; if (count < 2) return [min]; const step = (max - min) / (count - 1); if (step === 0) return [min]; return Array.from({ length: count }, (_, i) => min + i * step); }; export const ChartAxis: React.FC = ({ dimension, label, numberOfTicks = 5 }) => { const { xScale, yScale, dimensions } = useCharts(); const { theme } = useTheme(); if (dimension === 'x') { const ticks = generateTicks(xScale.domain(), numberOfTicks); return ( {ticks.map((tick, i) => ( {tick.toLocaleString()} ))} {label && ( {label} )} ); } else { // dimension === 'y' const ticks = generateTicks(yScale.domain(), numberOfTicks); return ( {ticks.map((tick, i) => ( {tick.toLocaleString()} ))} {label && ( {label} )} ); } };