UNPKG

@sparrowengg/twigs-charts

Version:

Charts package for SurveySparrow

829 lines (804 loc) 34 kB
import * as react from 'react'; import { ReactNode, ComponentProps, SVGTextElementAttributes, RefObject } from 'react'; import * as recharts from 'recharts'; import { LegendPayload, XAxisProps, YAxisProps, CartesianGridProps, LegendProps as LegendProps$1, ReferenceLine, AreaProps, AreaChart as AreaChart$1, BarProps, BarChart as BarChart$1, LineProps, LineChart as LineChart$1, ComposedChart, PieProps, Cell, PieChart as PieChart$1, RadarChart as RadarChart$1, Radar, PolarAngleAxis, PolarGrid, PolarRadiusAxis } from 'recharts'; import * as _stitches_react_types_styled_component from '@stitches/react/types/styled-component'; import * as _stitches_react_types_css_util from '@stitches/react/types/css-util'; import * as _stitches_react_types_config from '@stitches/react/types/config'; import { Payload, ValueType, NameType } from 'recharts/types/component/DefaultTooltipContent'; import { BoxProps } from '@sparrowengg/twigs-react'; type LegendIcons = "square" | "line"; type BaseChartLegendProps = { payload?: ReadonlyArray<LegendPayload>; setHighlightedItem?: (item: string | null) => void; }; type ChartLegendProps<T extends ChartSeries | CompositeChartSeries> = BaseChartLegendProps & { series?: T[]; icon?: LegendIcons; renderIcon?: (series?: T | LegendPayload) => ReactNode; }; declare const StyledResponsiveContainer: _stitches_react_types_styled_component.StyledComponent<react.ForwardRefExoticComponent<recharts.ResponsiveContainerProps & react.RefAttributes<HTMLDivElement>>, {}, { 'screen-xxs': "(min-width: 320px)"; 'screen-xs': "(min-width: 480px)"; 'screen-sm': "(min-width: 640px)"; 'screen-md': "(min-width: 768px)"; 'screen-lg': "(min-width: 1024px)"; 'screen-xl': "(min-width: 1280px)"; 'screen-2xl': "(min-width: 1536px)"; }, _stitches_react_types_css_util.CSS<{ 'screen-xxs': "(min-width: 320px)"; 'screen-xs': "(min-width: 480px)"; 'screen-sm': "(min-width: 640px)"; 'screen-md': "(min-width: 768px)"; 'screen-lg': "(min-width: 1024px)"; 'screen-xl': "(min-width: 1280px)"; 'screen-2xl': "(min-width: 1536px)"; }, { colors: { primary: string; secondary: string; accent50: string; accent100: string; accent200: string; accent300: string; accent400: string; accent500: string; accent600: string; accent700: string; accent800: string; accent900: string; primary50: string; primary100: string; primary200: string; primary300: string; primary400: string; primary500: string; primary600: string; primary700: string; primary800: string; primary900: string; warning50: string; warning100: string; warning200: string; warning300: string; warning400: string; warning500: string; warning600: string; warning700: string; warning800: string; warning900: string; highlight50: string; highlight100: string; highlight200: string; highlight300: string; highlight400: string; highlight500: string; highlight600: string; highlight700: string; highlight800: string; highlight900: string; positive50: string; positive100: string; positive200: string; positive300: string; positive400: string; positive500: string; positive600: string; positive700: string; positive800: string; positive900: string; secondary50: string; secondary100: string; secondary200: string; secondary300: string; secondary400: string; secondary500: string; secondary600: string; secondary700: string; secondary800: string; secondary900: string; negative50: string; negative100: string; negative200: string; negative300: string; negative400: string; negative500: string; negative600: string; negative700: string; negative800: string; negative900: string; neutral50: string; neutral100: string; neutral200: string; neutral300: string; neutral400: string; neutral500: string; neutral600: string; neutral700: string; neutral800: string; neutral900: string; black50: string; black100: string; black200: string; black300: string; black400: string; black500: string; black600: string; black700: string; black800: string; black900: string; white50: string; white100: string; white200: string; white300: string; white400: string; white500: string; white600: string; white700: string; white800: string; white900: string; }; space: { 1: string; 2: string; 3: string; 4: string; 5: string; 6: string; 7: string; 8: string; 9: string; 10: string; 11: string; 12: string; 13: string; 14: string; 15: string; 16: string; 17: string; 18: string; 19: string; 20: string; 21: string; 22: string; 23: string; 24: string; 25: string; 26: string; 27: string; 28: string; 29: string; 30: string; 31: string; 32: string; 33: string; 34: string; 35: string; 36: string; 37: string; 38: string; 39: string; 40: string; 41: string; 42: string; 43: string; 44: string; 45: string; 46: string; 47: string; 48: string; 49: string; 50: string; }; fontSizes: { xxs: string; xs: string; sm: string; md: string; lg: string; xl: string; "2xl": string; "3xl": string; "4xl": string; "5xl": string; }; fonts: { body: string; heading: string; }; fontWeights: { 1: string; 2: string; 3: string; 4: string; 5: string; 6: string; 7: string; 8: string; 9: string; }; lineHeights: { xxs: string; xs: string; sm: string; md: string; lg: string; xl: string; "2xl": string; "3xl": string; "4xl": string; }; letterSpacings: unknown; sizes: { 1: string; 2: string; 3: string; 4: string; 5: string; 6: string; 7: string; 8: string; 9: string; 10: string; 11: string; 12: string; 13: string; 14: string; 15: string; 16: string; 17: string; 18: string; 19: string; 20: string; 21: string; 22: string; 23: string; 24: string; 25: string; 26: string; 27: string; 28: string; 29: string; 30: string; 31: string; 32: string; 33: string; 34: string; }; borderWidths: { xs: string; sm: string; md: string; lg: string; xl: string; }; borderStyles: unknown; radii: { none: string; xs: string; sm: string; md: string; lg: string; xl: string; "2xl": string; "3xl": string; "4xl": string; round: string; pill: string; }; shadows: { sm: string; }; zIndices: unknown; transitions: { 1: string; 2: string; 3: string; }; }, _stitches_react_types_config.DefaultThemeMap, { backgroundColorOpacity: ([value, opacity]: ["$primary" | "$secondary" | "$accent50" | "$accent100" | "$accent200" | "$accent300" | "$accent400" | "$accent500" | "$accent600" | "$accent700" | "$accent800" | "$accent900" | "$primary50" | "$primary100" | "$primary200" | "$primary300" | "$primary400" | "$primary500" | "$primary600" | "$primary700" | "$primary800" | "$primary900" | "$warning50" | "$warning100" | "$warning200" | "$warning300" | "$warning400" | "$warning500" | "$warning600" | "$warning700" | "$warning800" | "$warning900" | "$highlight50" | "$highlight100" | "$highlight200" | "$highlight300" | "$highlight400" | "$highlight500" | "$highlight600" | "$highlight700" | "$highlight800" | "$highlight900" | "$positive50" | "$positive100" | "$positive200" | "$positive300" | "$positive400" | "$positive500" | "$positive600" | "$positive700" | "$positive800" | "$positive900" | "$secondary50" | "$secondary100" | "$secondary200" | "$secondary300" | "$secondary400" | "$secondary500" | "$secondary600" | "$secondary700" | "$secondary800" | "$secondary900" | "$negative50" | "$negative100" | "$negative200" | "$negative300" | "$negative400" | "$negative500" | "$negative600" | "$negative700" | "$negative800" | "$negative900" | "$neutral50" | "$neutral100" | "$neutral200" | "$neutral300" | "$neutral400" | "$neutral500" | "$neutral600" | "$neutral700" | "$neutral800" | "$neutral900" | "$black50" | "$black100" | "$black200" | "$black300" | "$black400" | "$black500" | "$black600" | "$black700" | "$black800" | "$black900" | "$white50" | "$white100" | "$white200" | "$white300" | "$white400" | "$white500" | "$white600" | "$white700" | "$white800" | "$white900" | (string & {}), number]) => { backgroundColor: string; }; colorOpacity: ([value, opacity]: ["$primary" | "$secondary" | "$accent50" | "$accent100" | "$accent200" | "$accent300" | "$accent400" | "$accent500" | "$accent600" | "$accent700" | "$accent800" | "$accent900" | "$primary50" | "$primary100" | "$primary200" | "$primary300" | "$primary400" | "$primary500" | "$primary600" | "$primary700" | "$primary800" | "$primary900" | "$warning50" | "$warning100" | "$warning200" | "$warning300" | "$warning400" | "$warning500" | "$warning600" | "$warning700" | "$warning800" | "$warning900" | "$highlight50" | "$highlight100" | "$highlight200" | "$highlight300" | "$highlight400" | "$highlight500" | "$highlight600" | "$highlight700" | "$highlight800" | "$highlight900" | "$positive50" | "$positive100" | "$positive200" | "$positive300" | "$positive400" | "$positive500" | "$positive600" | "$positive700" | "$positive800" | "$positive900" | "$secondary50" | "$secondary100" | "$secondary200" | "$secondary300" | "$secondary400" | "$secondary500" | "$secondary600" | "$secondary700" | "$secondary800" | "$secondary900" | "$negative50" | "$negative100" | "$negative200" | "$negative300" | "$negative400" | "$negative500" | "$negative600" | "$negative700" | "$negative800" | "$negative900" | "$neutral50" | "$neutral100" | "$neutral200" | "$neutral300" | "$neutral400" | "$neutral500" | "$neutral600" | "$neutral700" | "$neutral800" | "$neutral900" | "$black50" | "$black100" | "$black200" | "$black300" | "$black400" | "$black500" | "$black600" | "$black700" | "$black800" | "$black900" | "$white50" | "$white100" | "$white200" | "$white300" | "$white400" | "$white500" | "$white600" | "$white700" | "$white800" | "$white900" | (string & {}), number]) => { color: string; }; borderColorOpacity: ([value, opacity]: ["$primary" | "$secondary" | "$accent50" | "$accent100" | "$accent200" | "$accent300" | "$accent400" | "$accent500" | "$accent600" | "$accent700" | "$accent800" | "$accent900" | "$primary50" | "$primary100" | "$primary200" | "$primary300" | "$primary400" | "$primary500" | "$primary600" | "$primary700" | "$primary800" | "$primary900" | "$warning50" | "$warning100" | "$warning200" | "$warning300" | "$warning400" | "$warning500" | "$warning600" | "$warning700" | "$warning800" | "$warning900" | "$highlight50" | "$highlight100" | "$highlight200" | "$highlight300" | "$highlight400" | "$highlight500" | "$highlight600" | "$highlight700" | "$highlight800" | "$highlight900" | "$positive50" | "$positive100" | "$positive200" | "$positive300" | "$positive400" | "$positive500" | "$positive600" | "$positive700" | "$positive800" | "$positive900" | "$secondary50" | "$secondary100" | "$secondary200" | "$secondary300" | "$secondary400" | "$secondary500" | "$secondary600" | "$secondary700" | "$secondary800" | "$secondary900" | "$negative50" | "$negative100" | "$negative200" | "$negative300" | "$negative400" | "$negative500" | "$negative600" | "$negative700" | "$negative800" | "$negative900" | "$neutral50" | "$neutral100" | "$neutral200" | "$neutral300" | "$neutral400" | "$neutral500" | "$neutral600" | "$neutral700" | "$neutral800" | "$neutral900" | "$black50" | "$black100" | "$black200" | "$black300" | "$black400" | "$black500" | "$black600" | "$black700" | "$black800" | "$black900" | "$white50" | "$white100" | "$white200" | "$white300" | "$white400" | "$white500" | "$white600" | "$white700" | "$white800" | "$white900" | (string & {}), number]) => { borderColor: string; }; }>>; type StyledResponsiveContainerProps = Partial<Omit<ComponentProps<typeof StyledResponsiveContainer>, "ref" | "children">>; interface TooltipBaseData { label: ReactNode; value: ReactNode; color: string; key: string | number; legendIcon?: LegendIcons; } interface TooltipBaseProps { title?: string; data: TooltipBaseData[]; legendIcon?: LegendIcons; renderFooter?: (() => ReactNode) | null; } type OverrideTooltipProps = TooltipBaseProps | ((props: TooltipBaseProps) => Partial<TooltipBaseProps>); type ChartDataType = Record<string, string | number>; interface ChartSeries { name: string; color?: string; label?: string; yAxisId?: string; fill?: string; stroke?: string; strokeDasharray?: string | number; unit?: string; stackId?: string; valueFormatter?: ChartsTheme["config"]["valueFormatter"]; } type CompositeChartSeries = ChartSeries & { type: "line" | "area" | "bar"; }; type GridAxis = "none" | "x" | "y" | "xy"; type ChartReferenceLineProps = Partial<Omit<ComponentProps<typeof ReferenceLine>, "ref">>; type BaseCartesianChartProps = { data: ChartDataType[]; width?: string | number; height?: string | number; series: ChartSeries[]; dataKey: string; xAxisProps?: Partial<Omit<XAxisProps, "ref">>; yAxisProps?: Partial<Omit<YAxisProps, "ref">>; cartesianGridProps?: CartesianGridProps; showRightYAxis?: boolean; showTooltip?: boolean; xAxisLabel?: ReactNode; yAxisLabel?: ReactNode; highlightOnLegendHover?: boolean; showLegend?: boolean; unit?: string; containerProps?: StyledResponsiveContainerProps; rightYAxisProps?: Partial<Omit<YAxisProps, "ref">>; showAxisLine?: boolean; children?: ReactNode; valueFormatter?: ChartsTheme["config"]["valueFormatter"]; renderLegendIcon?: ChartLegendProps<ChartSeries>["renderIcon"]; overrideTooltipProps?: OverrideTooltipProps; renderTooltipFooter?: () => ReactNode | null; showTooltipFooter?: boolean; legendProps?: LegendProps; gridAxis?: GridAxis; referenceLines?: ChartReferenceLineProps[]; }; type LegendProps = Omit<LegendProps$1, "ref">; type ChartsTheme = { /** * Theme colors. You can override these colors to customize the chart, * additionally custom colors can be added here in any format (ie, objects, arrays, string). * * To consume these colors in the chart, add a dollar sign ($) before the key. * * @example * ```tsx * areaProps: { * fill: '$areaChartColors[0]' * } * ``` */ colors: { text?: string; textAlternate?: string; background?: string; /** * Cartesian grid line color, use config.cartesianGridProps for more customization */ gridLine?: string; /** * Text color for Y-axis tick */ yAxisTick?: string; /** * Text color for X-axis tick */ xAxisTick?: string; /** * Color for X-axis line. If this is not provided, the line will not be shown */ xAxisLine?: string; /** * Color for Y-axis line. If this is not provided, the line will not be shown */ yAxisLine?: string; tooltipHeaderBackground?: string; tooltipBodyBackground?: string; default?: string; legendText?: string; /** * Color for KPI trend positive indicator (arrow + percentage text). * Defaults to "#1B9850" */ kpiPositive?: string; /** * Color for KPI trend negative indicator (arrow + percentage text). * Defaults to "#E3502F" */ kpiNegative?: string; /** * Color for KPI trend neutral indicator (dash + percentage text). * Defaults to "#9E9E9E" */ kpiNeutral?: string; } & Record<string & {}, unknown>; fontFamily?: string; fontFamilyAlternate?: string; config: { cartesianGridProps?: CartesianGridProps; yAxisProps?: Omit<YAxisProps, "ref">; xAxisProps?: Omit<XAxisProps, "ref">; valueFormatter?: (value?: string | number, info?: { axis?: { id: string; }; tooltip?: Payload<ValueType, NameType>; label?: ChartSeries; }) => string | null; }; }; declare const ThemeContext: react.Context<ChartsTheme>; declare const ThemeProvider: ({ children, theme, }: { children: ReactNode; theme: ChartsTheme; }) => react.JSX.Element; interface CartesianLabelProps { x?: number; y?: number; unit?: string; width?: number; height?: number; value?: string; index?: number; dataLength: number; textProps?: SVGTextElementAttributes<SVGTextElement>; seriesItem?: ChartSeries; valueFormatter?: ChartsTheme["config"]["valueFormatter"]; chartType?: "bar" | "area" | "line"; isStacked?: boolean; orientation?: "horizontal" | "vertical"; } type AreaDot = AreaProps["dot"]; type CurveType$2 = NonNullable<AreaProps["type"]>; type AreaChartOptions = { areaProps?: Partial<Omit<AreaProps, "ref">> | ((series: ChartSeries) => Partial<Omit<AreaProps, "ref">>); areaDotProps?: AreaDot | null; areaActiveDotProps?: AreaDot | null; curveType?: CurveType$2; chartProps?: ComponentProps<typeof AreaChart$1>; connectNulls?: boolean; gradient?: boolean; type?: "default" | "stacked"; orientation?: "horizontal" | "vertical"; showAreaLabel?: boolean; areaLabelProps?: CartesianLabelProps["textProps"]; }; type AreaChartProps = BaseCartesianChartProps & AreaChartOptions; declare const AreaChart: ({ data, type, unit, width, height, series, dataKey, gradient, children, areaProps, curveType, chartProps, xAxisProps, yAxisProps, xAxisLabel, yAxisLabel, showLegend, showTooltip, orientation, legendProps, areaDotProps, showAxisLine, connectNulls, showAreaLabel, valueFormatter: valueFormatterProp, containerProps, areaLabelProps, showRightYAxis, rightYAxisProps, renderLegendIcon, showTooltipFooter, areaActiveDotProps, cartesianGridProps, renderTooltipFooter, overrideTooltipProps, highlightOnLegendHover, gridAxis, referenceLines, }: AreaChartProps) => react.JSX.Element; type BarChartOptions = { barProps?: Partial<Omit<BarProps, "ref">> | ((series: ChartSeries) => Partial<Omit<BarProps, "ref">>); chartProps?: ComponentProps<typeof BarChart$1>; showBarLabel?: boolean; type?: "default" | "stacked"; orientation?: "horizontal" | "vertical"; children?: ReactNode; maxBarWidth?: number; barLabelProps?: CartesianLabelProps["textProps"]; }; type BarChartProps = BaseCartesianChartProps & BarChartOptions; declare const BarChart: ({ data, unit, type, width, height, series, dataKey, children, barProps, chartProps, xAxisProps, yAxisProps, xAxisLabel, yAxisLabel, showLegend, showTooltip, orientation, legendProps, maxBarWidth, showBarLabel, showAxisLine, barLabelProps, valueFormatter: valueFormatterProp, containerProps, showRightYAxis, rightYAxisProps, renderLegendIcon, showTooltipFooter, cartesianGridProps, renderTooltipFooter, overrideTooltipProps, highlightOnLegendHover, gridAxis, referenceLines, }: BarChartProps) => react.JSX.Element; type LineDot = LineProps["dot"]; type CurveType$1 = NonNullable<LineProps["type"]>; type LineChartOptions = { lineProps?: Partial<Omit<LineProps, "ref">> | ((series: ChartSeries) => Partial<Omit<LineProps, "ref">>); strokeWidth?: number; lineDotProps?: LineDot | null; lineActiveDotProps?: LineDot | null; curveType?: CurveType$1; chartProps?: ComponentProps<typeof LineChart$1>; connectNulls?: boolean; orientation?: "horizontal" | "vertical"; showLineLabel?: boolean; lineLabelProps?: CartesianLabelProps["textProps"]; }; type LineChartProps = BaseCartesianChartProps & LineChartOptions; declare const LineChart: ({ data, unit, width, height, series, dataKey, children, lineProps, curveType, chartProps, xAxisProps, yAxisProps, xAxisLabel, yAxisLabel, showLegend, showTooltip, orientation, legendProps, connectNulls, strokeWidth, lineDotProps, showAxisLine, showLineLabel, valueFormatter: valueFormatterProp, containerProps, showRightYAxis, lineLabelProps, rightYAxisProps, renderLegendIcon, showTooltipFooter, lineActiveDotProps, cartesianGridProps, renderTooltipFooter, overrideTooltipProps, highlightOnLegendHover, gridAxis, referenceLines, }: LineChartProps) => react.JSX.Element; type CompositeChartProps = Omit<BaseCartesianChartProps, "series" | "renderLegendIcon"> & { orientation?: "horizontal" | "vertical"; chartProps?: ComponentProps<typeof ComposedChart>; series: CompositeChartSeries[]; areaChartOptions?: AreaChartOptions; lineChartOptions?: LineChartOptions; barChartOptions?: BarChartOptions; renderLegendIcon?: ChartLegendProps<CompositeChartSeries>["renderIcon"]; }; declare const CompositeChart: ({ data, unit, width, height, series, dataKey, children, xAxisProps, yAxisProps, xAxisLabel, yAxisLabel, showLegend, chartProps, showTooltip, orientation, legendProps, showAxisLine, valueFormatter: valueFormatterProp, containerProps, showRightYAxis, barChartOptions, rightYAxisProps, areaChartOptions, lineChartOptions, renderLegendIcon, showTooltipFooter, cartesianGridProps, renderTooltipFooter, overrideTooltipProps, highlightOnLegendHover, gridAxis, referenceLines, }: CompositeChartProps) => react.JSX.Element; interface DonutChartData { name: string; value: number; color?: string; strokeWidth?: number; stroke?: string; } interface DonutChartProps { data: DonutChartData[]; width?: number | string; height?: number | string; size?: number; unit?: string; pieProps?: Omit<PieProps, "ref" | "dataKey">; cellProps?: ComponentProps<typeof Cell> | ((cellData: DonutChartData) => ComponentProps<typeof Cell>); showLabel?: boolean; showTooltip?: boolean; thickness?: number; paddingAngle?: number; showLabelLine?: boolean; legendProps?: LegendProps; showLegend?: boolean; chartProps?: ComponentProps<typeof PieChart$1>; middleLabel?: ReactNode; containerProps?: StyledResponsiveContainerProps; valueFormatter?: ChartsTheme["config"]["valueFormatter"]; renderLegendIcon?: (data?: LegendPayload) => ReactNode; animationDuration?: number; showTooltipFooter?: boolean; defaultActiveIndex?: number; highlightOnLegendHover?: boolean; showActiveValueInCenter?: boolean; overrideTooltipProps?: OverrideTooltipProps; renderTooltipFooter?: () => ReactNode | null; children?: ReactNode; } declare const DonutChart: ({ data, size, unit, width, height, children, pieProps, cellProps, showLabel, chartProps, showLegend, legendProps, showTooltip, thickness, middleLabel, paddingAngle, showLabelLine, containerProps, valueFormatter: valueFormatterProp, renderLegendIcon, showTooltipFooter, animationDuration, defaultActiveIndex, renderTooltipFooter, overrideTooltipProps, highlightOnLegendHover, showActiveValueInCenter, }: DonutChartProps) => react.JSX.Element; interface PieChartData { name: string; value: number; color?: string; strokeWidth?: number; stroke?: string; } interface PieChartProps { data: PieChartData[]; size?: number; unit?: string; width?: string | number; height?: string | number; pieProps?: Omit<PieProps, "ref">; cellProps?: ComponentProps<typeof Cell> | ((cellData: PieChartData) => ComponentProps<typeof Cell>); showLabel?: boolean; showTooltip?: boolean; showActiveShape?: boolean; showLabelLine?: boolean; showLegend?: boolean; chartProps?: ComponentProps<typeof PieChart$1>; startAngle?: number; endAngle?: number; innerRadius?: number; outerRadius?: number; paddingAngle?: number; cornerRadius?: number; containerProps?: StyledResponsiveContainerProps; valueFormatter?: ChartsTheme["config"]["valueFormatter"]; renderLegendIcon?: (data?: LegendPayload) => ReactNode; animationDuration?: number; highlightOnLegendHover?: boolean; children?: ReactNode; overrideTooltipProps?: OverrideTooltipProps; renderTooltipFooter?: () => ReactNode | null; showTooltipFooter?: boolean; legendProps?: Omit<LegendProps, "ref">; defaultActiveIndex?: number; } declare const PieChart: ({ data, size, unit, width, height, children, pieProps, cellProps, showLabel, chartProps, startAngle, endAngle, innerRadius, outerRadius, paddingAngle, cornerRadius, showLegend, showTooltip, showLabelLine, containerProps, valueFormatter: valueFormatterProp, showActiveShape, renderLegendIcon, showTooltipFooter, animationDuration, renderTooltipFooter, overrideTooltipProps, highlightOnLegendHover, legendProps, defaultActiveIndex, }: PieChartProps) => react.JSX.Element; interface RadarChartSeries { name: string; dataKey?: string; color?: string; strokeWidth?: number; stroke?: string; } interface RadarChartProps { data: Record<string, unknown>[]; series: RadarChartSeries[]; size?: number; unit?: string; width?: string | number; height?: string | number; dataKey?: string; chartProps?: ComponentProps<typeof RadarChart$1>; radarProps?: Partial<Omit<ComponentProps<typeof Radar>, "ref">> | ((cellData: RadarChartSeries) => Partial<ComponentProps<typeof Radar>>); showTooltip?: boolean; showPolarRadiusAxis?: boolean; showPolarAngleAxis?: boolean; showPolarGrid?: boolean; polarAngleAxisProps?: Omit<ComponentProps<typeof PolarAngleAxis>, "ref">; polarGridProps?: Omit<ComponentProps<typeof PolarGrid>, "ref">; polarRadiusAxisProps?: Omit<ComponentProps<typeof PolarRadiusAxis>, "ref">; showLegend?: boolean; legendProps?: LegendProps; containerProps?: StyledResponsiveContainerProps; renderTooltipFooter?: () => ReactNode | null; showTooltipFooter?: boolean; valueFormatter?: ChartsTheme["config"]["valueFormatter"]; renderLegendIcon?: (data?: LegendPayload) => ReactNode; highlightOnLegendHover?: boolean; overrideTooltipProps?: OverrideTooltipProps; children?: ReactNode; } declare const RadarChart: ({ data, size, unit, width, height, series, dataKey, children, radarProps, chartProps, showLegend, showTooltip, legendProps, containerProps, polarRadiusAxisProps, showPolarRadiusAxis, polarAngleAxisProps, polarGridProps, showPolarAngleAxis, showPolarGrid, valueFormatter: valueFormatterProp, renderLegendIcon, showTooltipFooter, renderTooltipFooter, overrideTooltipProps, highlightOnLegendHover, }: RadarChartProps) => react.JSX.Element; type CurveType = NonNullable<AreaProps["type"]>; type SparklineProps = { width?: number | string; height?: number | string; children?: ReactNode; data: (number | null)[]; areaProps?: Partial<Omit<AreaProps, "ref">> | ((series: ChartSeries) => Partial<Omit<AreaProps, "ref">>); color: string; curveType?: CurveType; chartProps?: ComponentProps<typeof AreaChart$1>; connectNulls?: boolean; gradient?: boolean; orientation?: "horizontal" | "vertical"; containerProps?: StyledResponsiveContainerProps; }; declare const Sparkline: ({ data, width, height, color: colorProp, gradient, children, areaProps, curveType, chartProps, orientation, connectNulls, containerProps, }: SparklineProps) => react.JSX.Element; interface CellRenderData { x: number; y: number; item: HeatmapDataItem; cellWidth: number; cellHeight: number; fill: string; textColor: string; value: number; id: string; } interface LegendRenderData { x: number; y: number; barWidth: number; barHeight: number; color: string; minColor: string; maxColor: string; minValue: number; maxValue: number; labels: { x: number; y: number; text: string; }[]; deriveFillColor: (props: DeriveFillColorProps) => string; } interface HeatmapLegendProps extends LegendRenderData { } interface HeatmapTooltipProps { title: string; x: number; y: number; cellSize?: number; item: { label: string; value: string; color: string; payload?: HeatmapDataItem; }; containerRef?: RefObject<HTMLDivElement | null>; renderFooter?: () => ReactNode | null; showFooter?: boolean; } type HeatmapDataItem = { x: string; y: string; value: number; } & Record<string, unknown>; interface HeatmapXAxisItem { dataKey: string; group?: string; label?: string; } interface HeatmapYAxisItem { dataKey: string; label?: string; } type HeatmapXAxisGroup = { name: string; items: string[]; } & Record<string, unknown>; interface HeatmapSeries { xAxis: string[] | HeatmapXAxisItem[]; yAxis: string[] | HeatmapYAxisItem[]; xAxisGroup?: HeatmapXAxisGroup[]; } type HeatmapProps = { width?: number | string; height?: number | string; containerProps?: BoxProps; series: HeatmapSeries; data: HeatmapDataItem[]; cellSize?: number; cellSpacing?: number; groupSpacing?: number; color?: string; cellProps?: Omit<React.SVGAttributes<SVGGElement>, "onClick"> & { onClick?: (e: React.MouseEvent<SVGGElement, MouseEvent>, cellGroup: CellRenderData) => void; }; cellWidth?: number; cellHeight?: number; marginX?: number; marginY?: number; yAxisWidth?: number; xAxisHeight?: number; groupLabelHeight?: number; legendWidth?: number; legendHeight?: number; legendBarHeight?: number; legendMarginTop?: number; showTooltipFooter?: boolean; textColor?: string; textColorAlternate?: string; deriveFillColor?: (props: DeriveFillColorProps) => string; renderGroupLabel?: (props: { x: number; y: number; group: HeatmapXAxisGroup; }) => ReactNode; renderCell?: (props: CellRenderData & { isHovered: boolean; hoveredCellId: string | null; elementProps: Record<string, string>; }) => ReactNode; renderLegend?: (props: HeatmapLegendProps) => ReactNode; renderXAxisLabel?: (props: { x: number; y: number; text: string; groupName: string; }) => ReactNode; renderYAxisLabel?: (props: { x: number; y: number; text: string; }) => ReactNode; renderTooltipFooter?: () => ReactNode | null; tooltipProps?: Partial<HeatmapTooltipProps> | ((props: HeatmapTooltipProps) => Partial<HeatmapTooltipProps>); }; interface DeriveFillColorProps { color?: string; maxValue: number; minValue: number; value: number; data?: HeatmapDataItem; } declare const Heatmap: ({ data, width, height, series, containerProps, cellSize, cellSpacing, groupSpacing, yAxisWidth, xAxisHeight, groupLabelHeight, marginX, marginY, color: colorProp, cellProps, cellHeight, cellWidth, legendBarHeight, legendHeight, legendMarginTop, legendWidth, showTooltipFooter, tooltipProps, textColor, textColorAlternate, deriveFillColor, renderCell, renderGroupLabel, renderLegend, renderXAxisLabel, renderYAxisLabel, renderTooltipFooter, }: HeatmapProps) => react.JSX.Element; type KPITrendDirection = "up" | "down" | "neutral"; type KPITrendStatus = "positive" | "negative" | "neutral"; type KPITrend = { percentage: number; direction: KPITrendDirection; status?: KPITrendStatus; label?: ReactNode; showTooltip?: boolean; tooltipContent?: ReactNode; }; type KPIChartProps = { value: number | string; title: string; icon?: ReactNode; prefix?: string; suffix?: string; valueFormatter?: (v: number | string) => string; trend?: KPITrend; width?: string | number; onClick?: () => void; }; declare const KPIChart: ({ value, title, icon, prefix, suffix, valueFormatter, trend, width, onClick, }: KPIChartProps) => react.JSX.Element; declare const useTheme: () => ChartsTheme; declare const getColor: (obj: Record<string, unknown>, color: string) => string; export { AreaChart, BarChart, CompositeChart, DonutChart, Heatmap, KPIChart, LineChart, PieChart, RadarChart, Sparkline, ThemeContext, ThemeProvider, getColor, useTheme }; export type { AreaChartOptions, AreaChartProps, BarChartOptions, BarChartProps, ChartsTheme, CompositeChartProps, DeriveFillColorProps, DonutChartData, DonutChartProps, HeatmapDataItem, HeatmapProps, HeatmapSeries, HeatmapXAxisGroup, HeatmapXAxisItem, HeatmapYAxisItem, KPIChartProps, KPITrend, KPITrendDirection, KPITrendStatus, LineChartOptions, LineChartProps, PieChartData, PieChartProps, RadarChartProps, RadarChartSeries, SparklineProps };