import { BarProps, LabelListProps, BarChart as ReChartsBarChart } from 'recharts'; import { BoxProps, ElementProps, Factory, MantineColor, StylesApiProps } from '@mantine/core'; import { ChartLegendStylesNames } from '../ChartLegend'; import { ChartTooltipStylesNames } from '../ChartTooltip'; import type { BaseChartStylesNames, ChartSeries, GridChartBaseProps } from '../types'; export interface BarChartSeries extends ChartSeries { stackId?: string; } export type BarChartType = 'default' | 'stacked' | 'percent' | 'waterfall'; export type BarChartStylesNames = 'bar' | BaseChartStylesNames | ChartLegendStylesNames | ChartTooltipStylesNames; export type BarChartCssVariables = { root: '--chart-text-color' | '--chart-grid-color' | '--chart-cursor-fill' | '--chart-bar-label-color'; }; export interface BarChartProps extends BoxProps, GridChartBaseProps, StylesApiProps, ElementProps<'div'> { /** Data used to display chart. */ data: Record[]; /** An array of objects with `name` and `color` keys. Determines which data should be consumed from the `data` array. */ series: BarChartSeries[]; /** Controls how bars are positioned relative to each other @default `'default'` */ type?: BarChartType; /** Controls fill opacity of all bars @default `1` */ fillOpacity?: number; /** Fill of hovered bar section, by default value is based on color scheme */ cursorFill?: MantineColor; /** Props passed down to recharts `BarChart` component */ barChartProps?: React.ComponentPropsWithoutRef; /** Additional components that are rendered inside recharts `BarChart` component */ children?: React.ReactNode; /** Props passed down to recharts `Bar` component */ barProps?: ((series: BarChartSeries) => Partial>) | Partial>; /** Determines whether a label with bar value should be displayed on top of each bar, incompatible with `type="stacked"` and `type="percent"` @default `false` */ withBarValueLabel?: boolean; /** Props passed down to recharts `LabelList` component */ valueLabelProps?: ((series: BarChartSeries) => Partial>, 'ref'>>) | Partial>>; /** Sets minimum height of the bar in px @default `0` */ minBarSize?: number; /** Maximum bar width in px */ maxBarWidth?: number; /** Controls color of the bar label, by default the value is determined by the chart orientation */ barLabelColor?: MantineColor; /** A function to assign dynamic bar color based on its value */ getBarColor?: (value: number, series: BarChartSeries) => MantineColor; } export type BarChartFactory = Factory<{ props: BarChartProps; ref: HTMLDivElement; stylesNames: BarChartStylesNames; vars: BarChartCssVariables; }>; export declare const BarChart: import("@mantine/core").MantineComponent<{ props: BarChartProps; ref: HTMLDivElement; stylesNames: BarChartStylesNames; vars: BarChartCssVariables; }>;