Breakdown Chart

Ranked analytics panels with Plot-style chrome, configurable top bar controls, and multi-column bar rows.

Default

Pick the column that carries the bar with barColumnId. The top row's bar fills the label track and the rest scale to it. Column headers show when any column has a header.

Fail reasons
Reason
Count
Percent

Leading media

A node in the bar column renders as-is, so flags and icons sit before the label. Truncate the label so long names do not push the counts.

Calls by country

Leaderboard

Several metric columns, Entity avatars in the bar column, and a menu in the top bar. onRowActivate turns each row into a button.

Agent leaderboard
Agent
Calls
Avg duration
Cost

Select an agent to open it

Best practices

When to use

  • Use for ranked categories beside a time series: fail reasons, agents, countries.
  • Use BarList or BarFill inside tables. Use Breakdown Chart when the panel needs card chrome, top-bar controls or column headers.

Behavior

  • barColumnId picks the column that carries the bar. Its width comes from barValue, or from the cell when it is a number. The top row fills the label track.
  • Rows render in the order given. Pass sortOrder="descending" to rank them, and maxVisibleRows to cap the list.
  • The card is fixed at 320px (height). Rows scroll in a fading ScrollArea.
  • topTrailing is none, ranges, segments, menu or node. All are uncontrolled with defaultValue or controlled with value/onValueChange; swap rows yourself when it changes.
  • onRowActivate turns rows into buttons with hover and focus states. Only pass it when a row opens something.
  • Column headers show when any column has a header. Set showColumnHeaders={false} for simple label/value lists.

Content

  • The bar column accepts nodes: flags, icons or Entity avatars before a truncated label.
  • Metric lanes default to 48px; widen them for durations or currency (88px for "Avg duration").
  • Write emptyState for the period ("No failed calls in this period").

Accessibility

  • Activatable rows are native buttons. Their text should name the destination.