diff --git a/packages/visx-xychart/src/components/series/private/BaseAreaSeries.tsx b/packages/visx-xychart/src/components/series/private/BaseAreaSeries.tsx index dae620afb..11a097be3 100644 --- a/packages/visx-xychart/src/components/series/private/BaseAreaSeries.tsx +++ b/packages/visx-xychart/src/components/series/private/BaseAreaSeries.tsx @@ -26,6 +26,8 @@ export type BaseAreaSeriesProps< renderLine?: boolean; /** Sets the curve factory (from @visx/curve or d3-curve) for the line generator. Defaults to curveLinear. */ curve?: AreaProps['curve']; + /** Given a datakey, returns its color. Falls back to theme color if unspecified or if a null-ish value is returned. */ + colorAccessor?: (dataKey: string) => string | undefined | null; /** Props to be passed to the Line, if rendered. */ lineProps?: Omit< LinePathProps & React.SVGProps, @@ -38,6 +40,7 @@ export type BaseAreaSeriesProps< function BaseAreaSeries({ PathComponent = 'path', curve, + colorAccessor, data, dataKey, lineProps, @@ -130,7 +133,7 @@ function BaseAreaSeries', () => { { showTooltip, hideTooltip }, ); }); + + it('should use colorAccessor if passed', () => { + const { container } = render( + + + 'banana'} /> + + , + ); + expect(container.querySelector('.visx-area')).toHaveAttribute('fill', 'banana'); + expect(container.querySelector('.visx-line')).toHaveAttribute('stroke', 'banana'); + }); }); describe('', () => {