Krizaka
Documentation

Sankey

Flows between stages — credits from plans to models to outcomes — with widths proportional to the amounts.

WebBetaCharts

Web only — React, from @krizaka/charts/sankey. Beta: its API may still change in a minor version.

When to use

  • Where an amount goes, in two or three steps: credits by plan, then by model, then by outcome.
  • A journey with branches: viewers from sources to subscriptions.

When not to use

Installation

Install

npm install @krizaka/charts

Import

import { Sankey } from "@krizaka/charts/sankey";

Examples

Credit flow

A month of Orazaka credits, from plans to models to outcomes.

Where the credits went (k)

Flow diagram, 7 · 11. Chat → Delivered 211 (47%), Pro plans → Chat 182 (40%), Studio plans → Video 121 (27%). Total 452.

Where the credits went (k) — data
FromToCredits (k)
Pro plansChat182
Pro plansImage64
Studio plansVideo121
Studio plansImage48
Studio plansChat37
ChatDelivered211
ChatRefunded8
ImageDelivered104
ImageRefunded8
VideoDelivered109
VideoRefunded12

Props

PropTypeDefaultDescription
datarequiredreadonly T[]—One row per flow.
sourcerequiredstring | ((datum: T, index: number) => string)—The fields (or functions) naming where the flow comes from and where it goes.
targetrequiredstring | ((datum: T, index: number) => string)—The field (or function) naming where the flow goes.
titlerequiredstring—What the chart shows, in a few words: its accessible name, and its heading unless hideTitle.
valuerequiredstring | ((datum: T, index: number) => number)—The field of its amount.
brandBrandId—The brand whose palette the charts use. Without it, a chart follows a .brand-<id> ancestor, else Krizaka. Set it when the app loads a brand stylesheet on :root (@krizaka/tokens/brands/orazaka.css).
classNamestring—A class on the figure (layout: margins, grid placement).
dataTableboolean—The "Show data" button (the table is in the page for screen readers either way). Default true.
descriptionReactNode—A sentence under the title: the period, the unit, the source.
emptyReactNode—What to show when there is nothing to draw (default: the empty label). An EmptyState of @krizaka /ui fits.
errorReactNode—The data could not be loaded: true says the default words, a node says yours (a retry button…).
exportableboolean | readonly ExportFormat[]—Export buttons: true for PNG, SVG and CSV, or the formats you want.
formatValueFormat—How the amounts are written.
heightnumber—The height of the plot in pixels. Default 280 (a sparkline: 32).
hideTitleboolean—Visually hide the title (it stays the chart's accessible name): a card that already has its heading.
idstring—The id of the figure.
labelsChartLabelsInput—The words, translated: the buttons, the states, the written summary.
liveboolean—Streaming data (a job queue, an auction): no entrance on updates, no announcement of every new point.
loadingboolean—The data is on its way: a skeleton of the chart, announced once.
localeLocale—The locale of every figure and date ("fr-FR"). Default "en-US".
rendererRenderer—svg (default): sharp, exportable as SVG. canvas: for tens of thousands of marks.
sourceLabelstring—The headers of the data table.
styleCSSProperties—Inline style on the figure (layout only: colours come from the tokens).
summary"hidden" | "visible"—The written summary: read by screen readers only ("hidden", default), or shown under the chart ("visible").
summaryTextstring—Your own summary instead of the generated one (still read first by screen readers).
targetLabelstring—The header of the targets.
valueLabelstring—The header of the amounts.
verticalboolean—Lay the stages out top to bottom (narrow screens). Default: left to right.

Accessibility

  • The plot is a group named by the title and described by a summary written from the data, read before anything else.
  • The data table is always in the page for assistive technology; “Show data” reveals it for everyone.
  • The engine (ECharts core and this one chart type) loads when the chart nears the screen; a skeleton of the same height holds its place, so nothing shifts.
  • Under reduced motion the chart is drawn without animation.
  • The keyboard walks the flows; the table lists every source, target and amount.

Keyboard

KeysAction
TabMoves the focus to the plot (one tab stop), then to the data and export buttons.
Arrow keysWalk the items one by one: each is announced and highlighted, its tooltip shown.
Home / EndJump to the first or the last item.
EscHides the tooltip and clears the highlight.

Best practices

  • Keep to about a dozen nodes; group the small flows.
  • Use vertical on narrow screens.

Generated from the code of @krizaka/ui 2.4.0: its meta.ts, its examples and its types.Edit this documentation on GitHub

On this page