TimeseriesChart

Spend over time: y labels on the right, a dashed grid, smart time ticks, a crosshair and tooltip.

View source
Spend per model, last 30 days
TimeGPT-5GPT-5 miniClaude Sonnet 4.5Claude Haiku 4.5
Sep 13$4.72$8.22$11.71$13.34
Sep 14$7.39$7.76$12.36$13.16
Sep 15$7.07$8.23$10.78$15.20
Sep 16$8.46$10.01$12.02$13.03
Sep 17$6.09$10.51$12.44$14.08
Sep 18$8.56$8.27$12.49$13.61
Sep 19$6.90$9.46$10.43$12.20
Sep 20$5.61$9.89$9.90$11.02
Sep 21$5.12$7.28$9.93$11.17
Sep 22$7.23$7.59$9.88$10.10
Sep 23$6.54$6.26$8.40$9.04
Sep 24$4.59$5.62$7.99$9.76
Sep 25$3.84$5.88$8.76$10.08
Sep 26$3.79$6.34$9.35$11.23
Sep 27$3.82$5.21$7.75$12.03
Sep 28$4.41$5.05$9.90$12.36
Sep 29$4.71$7.67$8.46$11.40
Sep 30$4.10$7.52$9.33$13.41
Oct 1$4.86$7.44$12.00$13.67
Oct 2$6.66$9.94$11.86$12.56
Oct 3$5.84$8.97$10.76$14.79
Oct 4$6.76$8.47$10.52$15.05
Oct 5$6.01$8.93$11.26$14.06
Oct 6$8.21$10.94$12.65$14.53
Oct 7$8.48$9.74$12.06$11.59
Oct 8$6.85$9.05$9.86$13.02
Oct 9$5.91$7.55$10.11$11.43
Oct 10$7.77$7.68$10.19$12.50
Oct 11$4.55$6.26$8.56$11.76
Oct 12$4.89$5.12$7.81$9.30
import { TimeseriesChart } from "@logicplanes/kaeso-ui";

Props

  • aria-label
    string

    The chart's accessible name ("Requests by model").

  • empty
    boolean

    Shows the empty state (emptyText) in place of the data. By default it shows when every value is 0.

  • emptyText
    ReactNode

    What the empty state says. Defaults to "No data for this period" in the provider's language.

  • error
    ReactNode

    The data failed to load: the chart keeps its height, says so quietly and offers Try again. Errors are toasts, so the value isn't shown; toast the message where the request fails.

  • formatTime
    ((t: Date) => string)

    Names a point's time in the tooltip, the table and for screen readers, where a point stands for more than its instant: "Week of 3 Aug", "Aug 2026". The axis keeps its calendar ticks.

  • formatValue
    ((v: number) => string) = (v) => formatNumber(v)

    Formats values on the axis and in the tooltip.

  • height
    number = 240

    The plot's height in px (240 by default).

  • hideLegend
    boolean

    Hide the legend (one series).

  • highlight
    number

    Highlight a point in time as the pointer does, with the crosshair and tooltip: a linked view, or the states pages.

  • kind
    "stacked" | "line" | "area" = line

    line draws lines (default), area adds a light fill under each line, and stacked stacks the areas.

  • loading
    boolean

    The data is loading: the chart keeps its height and shows a quiet loading bar.

  • onRetry
    (() => void)

    Called when Try again is pressed after error; without it, the button doesn't show.

  • series
    TimeSeries[]

    The series, each with an id, a label, points of t (a time) and v, and an optional color.

  • threshold
    { value: number; label: string; }

    A threshold line (a budget) in danger, dashed.