API Reference

Treemap Chart API

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

Data Format

Each dataset represents a group with a legend name and a tree of nodes. Leaf nodes have values; branch nodes aggregate child values.

type TreemapNode = {
  label: string;
  value?: number;
  secondaryLabel?: string;
  children?: TreemapNode[];
};

type TreemapDataset = {
  legend: string;
  visible?: boolean;
  value?: number;
  secondaryLabel?: string;
  children?: TreemapNode[];
};

type TreemapData = {
  datasets: TreemapDataset[];
};
AG Style Config

Treemap

PropertyTypeDefaultDescription
treemap.groupGapnumber8Gap between dataset groups in pixels.
treemap.nodeGapnumber1Gap between nodes within a group in pixels.

Group Title

PropertyTypeDefaultDescription
treemap.groupTitle.visiblebooleantrueWhether group title headers are visible.
treemap.groupTitle.fontSizenumber12Group title font size.
treemap.groupTitle.colorstring"#2f3a46"Group title text color.
treemap.groupTitle.gapnumber6Gap between group title and nodes.

Node

PropertyTypeDefaultDescription
treemap.node.minLabelWidthnumber72Minimum node width in pixels for labels to appear.
treemap.node.minLabelHeightnumber42Minimum node height in pixels for labels to appear.
treemap.node.dimOpacitynumber0.38Opacity of non-hovered nodes when one is hovered.
treemap.node.labelColorstring"#ffffff"Node label text color.
treemap.node.secondaryLabelColorstring"rgba(255,255,255,0.84)"Secondary label text color.
treemap.node.hoverShadowColorstring"rgba(0,0,0,0.10)"Shadow color on hovered nodes.
Toast Style Config

Treemap

PropertyTypeDefaultDescription
treemap.groupGapnumber0Gap between dataset groups in pixels.
treemap.nodeGapnumber0Gap between nodes within a group in pixels.
treemap.dividerColorstring"transparent"Color of divider lines between nodes.

Group Title

PropertyTypeDefaultDescription
treemap.groupTitle.visiblebooleanfalseWhether group title headers are visible.

Node

PropertyTypeDefaultDescription
treemap.node.minLabelWidthnumber72Minimum node width in pixels for labels to appear.
treemap.node.minLabelHeightnumber42Minimum node height in pixels for labels to appear.
treemap.node.labelColorstring"#ffffff"Node label text color.
treemap.node.secondaryLabelColorstring"rgba(255,255,255,0.86)"Secondary label text color.
treemap.node.hoverBorderColorstring"white"Border color on hovered nodes.
treemap.node.hoverBorderWidthnumber4Border width on hovered nodes.
treemap.node.hoverShadowColorstring"rgba(0,0,0,0.3)"Shadow color on hovered nodes.
treemap.node.hoverScalenumber1.02Scale factor when a node is hovered.

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{ treemap: Widget; tooltipArea: Widget }The plot area with treemap and tooltip.
titleundefinedChart title element.
legend{ name: string; index: number; isVisible: boolean }Individual legend item.
treemap{ tree: Widget }The treemap container.
group{ title: Widget; nodes: Widget; legend: string; index: number; color: string; ratio: number; isHovered: boolean }A dataset group with title and nodes.
groupTitle{ legend: string; index: number }Group title header.
nodes{ tree: Widget; legend: string; index: number }Container for nodes within a group.
node{ label: string; secondaryLabel?: string; value: number; legend: string; groupIndex: number; index: number; color: string; ratio: number; groupRatio: number; isHovered: boolean; dataLabel: Widget }Individual treemap node rectangle.
dataLabel{ label: string; secondaryLabel?: string; value: number; legend: string; groupIndex: number; index: number; ratio: number; groupRatio: number; isHovered: boolean }Data label inside a treemap node.
tooltip{ label: string; items: { legend: string; color: string; value: number }[] }Tooltip content widget.
tooltipArea{ tooltip: Widget | null; hoveredNode: TreemapHoveredNodeRect | null }Tooltip positioning area.

Context: TreemapContext

Available in every custom builder via the second argument.

NameTypeKindDescription
dataTreemapResolvedDatapropertyCurrent resolved chart data (filtered by hidden series).
legendsstring[]propertyAll dataset legend names.
totalValuenumberpropertySum of all visible dataset values.
widthnumberpropertyCurrent chart width in pixels.
heightnumberpropertyCurrent chart height in pixels.
hiddenSeriesReadonlySet<string>propertySet of currently hidden series names.
hoveredNodeTreemapHoveredNode | nullpropertyCurrently hovered node info.
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.
hoverNode(node, anchorKey)(node: TreemapHoveredNode, anchorKey: GlobalKey) => voidmethodSet hover state on a node.
unhoverNode(key)(key: string) => voidmethodClear hover if the specified node is currently hovered.
unhoverAllNodes()() => voidmethodClear all node hover state.
isNodeHovered(key)(key: string) => booleanmethodCheck if a specific node is hovered.
isGroupHovered(groupIndex)(groupIndex: number) => booleanmethodCheck if any node in a group is hovered.
getGroupLayout(size)(size: TreemapLayoutSize) => TreemapLayout | nullmethodCompute layout for dataset groups.
getNodeLayout(nodes, size)(nodes: TreemapResolvedNode[], size: TreemapLayoutSize) => TreemapLayout | nullmethodCompute layout for nodes within a group.
setSize(width, height)(width: number, height: number) => voidmethodUpdate chart dimensions.

Custom Part Example

import { ToastTreemapChart } from "@/components/flitter/charts/toast-treemap-chart";

<ToastTreemapChart
  data={data}
  config={{
    treemap: {
      nodeGap: 2,
      node: { hoverScale: 1.05 },
    },
  }}
/>