API Reference

Pie Chart API

Complete API reference for the Pie Chart, including data format, configuration options, custom parts, and context methods.

Data Format

Each dataset entry represents a slice of the pie with a name and numeric value.

type PieChartData = {
  datasets: { name: string; value: number }[];
};
AG Style Config

Pie

PropertyTypeDefaultDescription
pie.innerRadiusRationumber0Inner radius ratio (0 = full pie, >0 = donut shape).

Radial

PropertyTypeDefaultDescription
radial.visiblebooleanfalseWhether radial labels and ticks are visible.
radial.gapnumber6Gap between the pie and radial labels.

Data Label

PropertyTypeDefaultDescription
dataLabel.visiblebooleantrueWhether data labels on slices are visible.
dataLabel.fontSizenumber12Data label font size.
dataLabel.fontColorstring"white"Data label text color.
dataLabel.fontWeightstring"bold"Data label font weight.
dataLabel.radiusRationumber0.65Position of data label as ratio of radius (0 = center, 1 = edge).
dataLabel.formatter(args: { index, name, value, percentage, startAngle, sweepAngle }) => string(args) => `${args.percentage.toFixed(1)}%`Formatter function for data label text.

Radial Label

PropertyTypeDefaultDescription
radialLabel.fontSizenumber16Radial label font size.
radialLabel.fontColorstring"#333333"Radial label text color.
radialLabel.fontWeightstring"bold"Radial label font weight.
radialLabel.nameColorstring"#777777"Color for the name portion of the radial label.
radialLabel.formatter(args: { index, name, value, percentage, angle }) => string(args) => String(args.value)Formatter function for radial label text.

Radial Tick

PropertyTypeDefaultDescription
radialTick.lengthnumber14Length of the radial tick line.
radialTick.colorstring"#999999"Radial tick line color.
radialTick.strokeWidthnumber2Radial tick line stroke width.
Toast Style Config

Pie

PropertyTypeDefaultDescription
pie.innerRadiusRationumber0Inner radius ratio (0 = full pie, >0 = donut shape).

Radial

PropertyTypeDefaultDescription
radial.visiblebooleanfalseWhether radial labels and ticks are visible.
radial.gapnumber8Gap between the pie and radial labels.

Data Label

PropertyTypeDefaultDescription
dataLabel.visiblebooleantrueWhether data labels on slices are visible.
dataLabel.fontSizenumber14Data label font size.
dataLabel.fontColorstring"white"Data label text color.
dataLabel.fontWeightstring"bold"Data label font weight.
dataLabel.radiusRationumber0.65Position of data label as ratio of radius.
dataLabel.formatter(args: { index, name, value, percentage, startAngle, sweepAngle }) => string(args) => `${args.percentage.toFixed(1)}%`Formatter function for data label text.

Radial Label

PropertyTypeDefaultDescription
radialLabel.fontSizenumber13Radial label font size.
radialLabel.fontColorstring"#333333"Radial label text color.
radialLabel.fontWeightstring"600"Radial label font weight.
radialLabel.formatter(args: { index, name, value, percentage, angle }) => string(args) => args.nameFormatter function for radial label text.

Radial Tick

PropertyTypeDefaultDescription
radialTick.lengthnumber18Length of the radial tick line.
radialTick.colorstring"#999999"Radial tick line color.
radialTick.strokeWidthnumber1Radial tick line stroke width.

Custom Parts

Override any visual element by providing a custom builder function: (args, context) => Widget

PartArgsDescription
layout{ title: Widget; legends: Widget[]; plot: Widget }Top-level layout composing title, legends, and the plot area.
plot{ dataView: Widget; tooltipArea: Widget; radialItems: PieChartRadialItem[] }The plot area with data view, tooltip, and radial items.
dataView{ segments: PieChartSegment[] }Container for all pie segments.
segment{ index: number; name: string; value: number; percentage: number; startAngle: number; sweepAngle: number; dataLabel: Widget; isHovered: boolean }Individual pie segment/slice.
dataLabel{ index: number; name: string; value: number; percentage: number; startAngle: number; sweepAngle: number }Data label on a pie segment.
radialLabel{ index: number; name: string; value: number; percentage: number; angle: number; isHovered: boolean }Radial label outside the pie.
radialTick{ index: number; name: string; value: number; percentage: number; angle: number; isHovered: boolean }Radial tick line connecting pie to label.
legend{ name: string; index: number; isVisible: boolean }Individual legend item.
titleundefinedChart title element.
tooltipHoveredPieChartSegmentTooltip content for a hovered segment.
tooltipArea{ tooltip: Widget | null; hoveredSegment: HoveredPieChartSegment | null }Tooltip positioning area.

Context: PieChartContext

Available in every custom builder via the second argument.

NameTypeKindDescription
dataPieChartDatapropertyCurrent chart data (filtered by hidden series).
legendsstring[]propertyAll legend names from the raw data.
widthnumberpropertyCurrent chart width in pixels.
heightnumberpropertyCurrent chart height in pixels.
hiddenSeriesReadonlySet<string>propertySet of currently hidden series names.
hoveredIndexnumber | nullpropertyIndex of the currently hovered segment.
configTConfigpropertyThe resolved chart configuration object.
isSeriesVisible(name)(name: string) => booleanmethodCheck if a series is currently visible.
toggleSeries(name)(name: string) => voidmethodToggle visibility of a series.
showSeries(name)(name: string) => voidmethodShow a hidden series.
hideSeries(name)(name: string) => voidmethodHide a visible series.
showAllSeries()() => voidmethodShow all hidden series.
hoverSegment(index)(index: number) => voidmethodSet hover state on a segment.
unhoverSegment(index?)(index?: number) => voidmethodClear hover on a segment.
unhoverAllSegments()() => voidmethodClear all segment hover state.
isSegmentHovered(index)(index: number) => booleanmethodCheck if a specific segment is hovered.
setSize(width, height)(width: number, height: number) => voidmethodUpdate chart dimensions.

Custom Part Example

import { ToastPieChart } from "@/components/flitter/charts/toast-pie-chart";

<ToastPieChart
  data={data}
  config={{
    radial: { visible: true },
    dataLabel: { visible: false },
  }}
/>