MDK Logo
ReferenceUIComponents

Chart Components

Data visualization and chart components

Components for data visualization and charting.

Prerequisites

  • Complete the installation
  • Import styles: import '@tetherto/mdk-react-devkit/styles.css'

Components

ActualEbitdaCard

Stat card summarising the realised EBITDA for the selected reporting window vs the prior period.

agent-ready

Props

PropTypeRequiredDefaultDescription
valuenumber--

AreaChart

Presentational Chart.js area chart (Line with fill). Data must be provided via props; this component does no fetching of its own.

agent-ready

Props

PropTypeRequiredDefaultDescription
dataChartData<"line", (number | Point | null)[], unknown>-Chart data - required, provided by parent
options_DeepPartialObject<CoreChartOptions<"line"> & ElementChartOptions<"line"> & PluginChartOptions<"line"> & DatasetChartOptions<"line"> & ScaleChartOptions<"line"> & LineControllerChartOptions> | undefined-Chart.js options - merged with defaults
tooltipChartTooltipConfig | undefined-Custom HTML tooltip configuration. When provided, replaces the default Chart.js tooltip.
heightnumber | undefined-Chart height in pixels
classNamestring | undefined--

AverageDowntimeChart

Stacked bar chart of average downtime (curtailment vs operational issues). Wraps [**ChartContainer**](/reference/ui/components/charts/#chartcontainer) and [**BarChart**](/reference/ui/components/charts/#barchart); pass period labels and rate arrays via data.

agent-ready

Props

PropTypeRequiredDefaultDescription
titlestring--
unitstring--
heightnumber--
barWidthnumber--
classNamestring--
isLoadingboolean--
emptyMessagestring--
dataAverageDowntimeChartData--
yTicksFormatter(value: number) => string-Formats Y-axis ticks, tooltips, and bar data labels (values are 0–1 rates).
showDataLabelsboolean--

AvgAllInCostChart

Avg All-in Cost - revenue vs cost ($/MWh) bar chart over time.

agent-ready

Props

PropTypeRequiredDefaultDescription
datareadonly AvgAllInCostDataPoint[] | undefined--
dateRangeFinancialDateRange | null--
isLoadingboolean | undefined--

BarChart

Presentational Chart.js bar chart. Data must be pre-aggregated; use grouped or stacked categories via datasets.

agent-ready

Props

PropTypeRequiredDefaultDescription
dataany-Chart data - required, provided by parent. Use as any for mixed bar+line datasets.
options_DeepPartialObject<CoreChartOptions<"bar"> & ElementChartOptions<"bar"> & PluginChartOptions<"bar"> & DatasetChartOptions<"bar"> & ScaleChartOptions<"bar"> & BarControllerChartOptions> | undefined-Chart.js options - merged with defaults
isStackedboolean | undefined-Stack bars on top of each other
isHorizontalboolean | undefined-Render bars horizontally (indexAxis: 'y')
formatYLabel((value: number) => string) | undefined-Format Y-axis tick labels
showLegendboolean | undefined-Show built-in Chart.js legend (default: true)
legendPositionPosition | undefined-Position of the legend (default: 'top')
legendAlignFlexAlign | undefined-Alignment of the legend labels within their position (default: 'start')
showDataLabelsboolean | undefined-Show values above each bar
formatDataLabel((value: number) => string) | undefined-Format data label values (default: round to nearest integer)
tooltipChartTooltipConfig | undefined-Custom HTML tooltip configuration. When provided, replaces the default Chart.js tooltip.
heightnumber | undefined-Chart height in pixels
classNamestring | undefined--

BitcoinPriceCard

Stat card showing the BTC reference price used by the reporting view with currency and timestamp.

agent-ready

Props

PropTypeRequiredDefaultDescription
valuenumber--

BitcoinProducedCard

Stat card summarising the bitcoin produced during the reporting window with delta to prior period.

agent-ready

Props

PropTypeRequiredDefaultDescription
valuenumber--

BitcoinProducedChart

Time-series chart of bitcoin produced per day across the selected reporting window.

agent-ready

Props

PropTypeRequiredDefaultDescription
chartDataBarChartDataResult--
isLoadingboolean | undefined--
hasAllZerosboolean | undefined--
heightnumber | undefined--

BitcoinProductionCostCard

Stat card showing the average cost in USD to produce one bitcoin during the reporting window.

agent-ready

Props

PropTypeRequiredDefaultDescription
valuenumber--

ChartContainer

Standard chrome for charts: title, optional highlighted value, legend with toggle, range selector (radio cards), loading / empty states, and a footer for min/max/avg stats.

agent-ready

Props

PropTypeRequiredDefaultDescription
titlestring | undefined--
titleExtraReact.ReactNode-Optional node rendered immediately after the title text (e.g. an info tooltip). Only shown when title is set and `hea…
headerReact.ReactNode--
headerActionReact.ReactNode-Optional action rendered on the right side of the header row (e.g. an expand/fullscreen toggle). Sits alongside the ran…
legendDataLegendItem[] | undefined--
highlightedValueHighlightedValueProps | undefined--
rangeSelectorRangeSelectorProps | undefined--
loadingboolean | undefined--
emptyboolean | undefined--
emptyMessagestring | undefined--
minMaxAvgPartial<{ min: string; max: string; avg: string; }> | undefined--
timeRangestring | undefined--
footerReact.ReactNode--
footerClassNamestring | undefined--
classNamestring | undefined--
childrenReact.ReactNode--
onToggleDataset((index: number) => void) | undefined--

ChartExpandAction

Expand / collapse toggle rendered in a dashboard chart card's header. Swaps between a maximize and a minimize glyph based on isExpanded.

advanced

Props

PropTypeRequiredDefaultDescription
isExpandedboolean-Whether the parent chart is currently expanded to full width.
onToggleVoidFunction | undefined-Toggles the expanded state.

ChartStatsFooter

ChartStatsFooter - Displays Min/Max/Avg values and optional stats grid below a chart

agent-ready

Props

PropTypeRequiredDefaultDescription
minMaxAvgPartial<{ min: string; max: string; avg: string; }>-Min/Max/Avg values row
statsChartStatsFooterItem[]-Additional stats displayed in a columnar grid
statsPerColumnnumber-Number of stat items per column (default: 1)
secondaryLabelSecondaryLabel-Secondary label displayed below stats
classNamestring-Custom class name

CostCharts

Convenience wrapper that renders the three cost-page charts in declaration order. Pages that need bespoke layouts (e.g. [**CostContent**](/reference/ui/components/dashboards/#costcontent)'s 2x2 Mosaic) compose the individual chart components directly in…

agent-ready

Props

PropTypeRequiredDefaultDescription
costLogreadonly CostTimeSeriesEntry[]--
btcPriceLogreadonly BtcPriceTimeSeriesEntry[]--
totalsCostSummaryMonetaryTotals | null--
dateRangeFinancialDateRange | null--
avgAllInCostDatareadonly AvgAllInCostDataPoint[] | undefined--
isLoadingboolean | undefined--

DetailLegend

DetailLegend - Enhanced chart legend with current values and percentage change indicators

agent-ready

Props

PropTypeRequiredDefaultDescription
itemsDetailLegendItem[]-Legend items to display
onToggle((label: string, index: number) => void) | undefined-Callback when a legend item is toggled
classNamestring | undefined-Custom class name

DoughnutChart

DoughnutChart – Presentational Chart.js doughnut chart with custom HTML legend matching the MDK design.

agent-ready

Props

PropTypeRequiredDefaultDescription
dataDoughnutChartDataset[]-Array of labelled slices
unitstring | undefined-Unit suffix shown in tooltips
options_DeepPartialObject<CoreChartOptions<"doughnut"> & ElementChartOptions<"doughnut"> & PluginChartOptions<"doughnut"> & DatasetChartOptions<"doughnut"> & ScaleChartOptions<"doughnut"> & DoughnutControllerChartOptions> | undefined-Chart.js options – merged with defaults
cutoutstring | undefined-Doughnut cutout percentage (default: '75%')
borderWidthnumber | undefined-Border width between segments (default: 4)
heightnumber | undefined-Chart height in pixels
legendPositionPosition | undefined-Where to place the legend relative to the chart (default: 'top')
tooltipChartTooltipConfig | undefined-Custom HTML tooltip configuration. When provided, replaces the default doughnut tooltip (which shows label, value with…
formatValue((value: number) => string) | undefined-Formats slice values in the built-in legend and default tooltip (default: raw number).
classNamestring | undefined--

Ebitda

Top-level EBITDA section of the reporting view — pulls together metric cards, charts, and tables.

agent-ready

Props

PropTypeRequiredDefaultDescription
metricsEbitdaDisplayMetrics | null--
ebitdaChartInputToBarChartDataInput | null--
btcProducedChartInputToBarChartDataInput | null--
hasBtcProducedAllZerosboolean--
showEbitdaBarChartboolean--
currentBTCPricenumber--
datePickerReact.ReactElement<unknown, string | React.JSXElementConstructor<any>>--
isLoadingboolean | undefined--
errorsstring[] | undefined--
hasDateSelectionboolean-When false, show the "select a period" hint instead of empty data.
setCostHrefstring | undefined-Optional URL for the "Set Monthly Cost" control (hidden when omitted).

EbitdaCharts

Chart panel inside the EBITDA section visualising revenue, cost, and EBITDA over time.

agent-ready

Props

PropTypeRequiredDefaultDescription
showEbitdaBarChartboolean--
ebitdaChartDataBarChartDataResult--
btcDisplayDataBarChartDataResult--
isLoadingboolean--
hasBtcProducedAllZerosboolean--

EbitdaHodlCard

Stat card projecting EBITDA assuming all produced bitcoin is held instead of sold.

agent-ready

Props

PropTypeRequiredDefaultDescription
valuenumber--
currentBTCPricenumber--

EbitdaMetrics

Row of summary metric cards across the top of the EBITDA section (actual, hodl, selling, cost).

agent-ready

Props

PropTypeRequiredDefaultDescription
metricsEbitdaDisplayMetrics--
currentBTCPricenumber--

EbitdaSellingCard

Stat card projecting EBITDA assuming all produced bitcoin is sold at the daily reference price.

agent-ready

Props

PropTypeRequiredDefaultDescription
valuenumber--

EnergyBalance

Full energy balance view with tabbed revenue and cost sections, charts, and metric cards.

agent-ready

Props

PropTypeRequiredDefaultDescription
viewModelEnergyBalanceViewModel--
onTabChange(tab: EnergyBalanceTab) => void--
onRevenueDisplayModeChange(mode: DisplayMode) => void--
onCostDisplayModeChange(mode: DisplayMode) => void--
isDemoModeboolean | undefined--
timeframeControlsReact.ReactNode-Slot for timeframe / date-range controls rendered by the host app.
setCostHrefstring | undefined-Optional URL for the "Set Monthly Cost" control (hidden when omitted).

EnergyBalanceCostCharts

Layout container for the energy cost tab charts: revenue-vs-cost bar chart and power line chart.

agent-ready

Props

PropTypeRequiredDefaultDescription
costChartDataBarChartDataResult--
btcUnitstring | null--
powerChartInputThresholdLineChartInput--
displayModeDisplayMode--
barLabelFormatter(v: number) => string--
onDisplayModeChange(mode: DisplayMode) => void--
showCostBarChartboolean-Show the revenue-vs-cost bar chart only for non-daily periods.
periodTypePeriodType--

EnergyBalanceCostMetrics

Grid of stat cards summarising energy cost metrics for the selected period.

agent-ready

Props

PropTypeRequiredDefaultDescription
metricsEnergyCostMetrics--

EnergyBalancePowerChart

Line chart visualising power consumption against threshold for the energy balance view.

agent-ready

Props

PropTypeRequiredDefaultDescription
heightnumber | undefined--
fillHeightboolean | undefined--
periodTypePeriodType--
chartInputThresholdLineChartInput--

EnergyBalanceRevenueCharts

Mosaic layout of revenue, downtime, and power charts for the energy balance revenue tab.

agent-ready

Props

PropTypeRequiredDefaultDescription
revenueChartDataBarChartDataResult--
averageDowntimeDataAverageDowntimeChartData--
powerChartInputThresholdLineChartInput--
displayModeDisplayMode--
barLabelFormatter(v: number) => string--
onDisplayModeChange(mode: DisplayMode) => void--
periodTypePeriodType--
revenueMetricsEnergyRevenueMetrics--

EnergyBalanceRevenueMetrics

Grid of stat cards summarising energy revenue metrics for the selected period.

agent-ready

Props

PropTypeRequiredDefaultDescription
metricsEnergyRevenueMetrics--

EnergyCostChart

Bar chart comparing site revenue vs cost per MWh, with USD/BTC currency toggle.

agent-ready

Props

PropTypeRequiredDefaultDescription
chartDataBarChartDataResult--
btcUnitstring | null--
displayModeDisplayMode--
barLabelFormatter(v: number) => string--
onDisplayModeChange(mode: DisplayMode) => void--
heightnumber | undefined--

EnergyMetricCard

Stat card for a single energy balance metric.

agent-ready

Props

PropTypeRequiredDefaultDescription
namestring--
valuenumber--
unitstring--
fallbackstring | undefined--

EnergyReportMinerTypeView

Energy report — power consumption grouped by miner model (latest day in range).

advanced

Props

PropTypeRequiredDefaultDescription
isLoadingboolean | undefined--
containersContainer[] | undefined--
groupedConsumptionMetricsConsumptionGroupedResponse | undefined--
onTimeFrameChange((start: Date, end: Date) => void) | undefined--

EnergyReportMinerUnitView

Energy report — power consumption grouped by mining unit / container.

advanced

Props

PropTypeRequiredDefaultDescription
isLoadingboolean | undefined--
containersContainer[] | undefined--
groupedConsumptionMetricsConsumptionGroupedResponse | undefined--
onTimeFrameChange((start: Date, end: Date) => void) | undefined--

EnergyReportSiteView

Energy report site tab — power trend, power-mode table, and per–mining-unit activity cards.

advanced

Props

PropTypeRequiredDefaultDescription
consumptionErrorunknown--
tailLogLoadingboolean | undefined--
containersLoadingboolean | undefined--
consumptionLoadingboolean | undefined--
consumptionFetchingboolean | undefined--
nominalConfigLoadingboolean | undefined--
containersEnergyReportContainer[] | undefined--
tailLogEnergyReportTailLogItem[][] | undefined--
nominalPowerAvailabilityMwnumber | null | undefined--
consumptionLogMetricsConsumptionLogEntry[] | undefined--
snapshotLoadingboolean | undefined--
onRefetchSnapshotVoidFunction | undefined--
dateRangeEnergyReportDateRange--
onDateRangeChange((range: EnergyReportDateRange) => void) | undefined--

EnergyRevenueChart

Bar chart showing site energy revenue per MWh, with USD/BTC currency toggle.

agent-ready

Props

PropTypeRequiredDefaultDescription
chartDataBarChartDataResult--
displayModeDisplayMode--
barLabelFormatter(v: number) => string--
onDisplayModeChange(mode: DisplayMode) => void--
heightnumber | undefined--

GaugeChart

GaugeChart - Presentational gauge / speedometer chart.

agent-ready

Props

PropTypeRequiredDefaultDescription
percentnumber-Value between 0 and 1 (e.g. 0.75 = 75%). Values outside the range are clamped.
colorsstring[] | undefined-Arc colours in HEX format.
arcWidthnumber | undefined-Arc thickness as a fraction of the gauge radius (0–1).
nrOfLevelsnumber | undefined-Number of arc segments. Ignored when arcsLength is provided.
arcsLengthnumber[] | undefined-Custom arc-segment proportions (auto-normalised), overriding nrOfLevels. e.g. [0.7, 0.3] for a progress-style gauge…
needleColorstring | undefined-Needle + hub colour.
hideNeedleboolean | undefined-Hide the needle + hub (e.g. for a progress-style gauge).
formatTextValue((percent: number) => string) | undefined-Format the centre label from the clamped fraction (0–1).
hideTextboolean | undefined-Hide the percentage text rendered inside the gauge.
idstring | undefined-Stable id used for the gauge's accessibility labels.
heightstring | number | undefined-Chart height in pixels or any CSS length (e.g. '200px' or '50%').
maxWidthnumber | undefined-Maximum width in pixels.
classNamestring | undefined--

Hashrate

Top-level hashrate reporting section - composes the site / miner-type / mining-unit drilldowns into a tabbed shell. Each tab fetches independently because the three views use different groupBy axes…

agent-ready

Props

PropTypeRequiredDefaultDescription
defaultTabHashrateTabValue | undefined-Tab selected on first render. Defaults to the Site View.
siteViewHashrateSiteViewProps | undefined-Props forwarded to the Site View tab.
minerTypeViewHashrateMinerTypeViewProps | undefined-Props forwarded to the Miner Type View tab.
miningUnitViewHashrateMiningUnitViewProps | undefined-Props forwarded to the Mining Unit View tab.

HashrateMinerTypeView

Hashrate drilldown grouped by miner model - bar chart of the latest hashrate per miner type, with an optional multi-select filter.

agent-ready

Props

PropTypeRequiredDefaultDescription
logHashrateGroupedLog | undefined-Hashrate log grouped by miner type (groupBy=miner).
isLoadingboolean | undefined--
dateRangeHashrateDateRange | undefined--
onDateRangeChange((range: HashrateDateRange) => void) | undefined--
onResetVoidFunction | undefined--

HashrateMiningUnitView

Hashrate drilldown grouped by mining unit / container - bar chart of the latest hashrate per container with an optional multi-select filter. Drops BE-leaked rollup keys (group-N, maintenance) via…

agent-ready

Props

PropTypeRequiredDefaultDescription
logHashrateGroupedLog | undefined-Hashrate log grouped by container / mining unit (groupBy=container).
isLoadingboolean | undefined--
dateRangeHashrateDateRange | undefined--
onDateRangeChange((range: HashrateDateRange) => void) | undefined--
onResetVoidFunction | undefined--

HashrateSiteView

Site-level hashrate trend - aggregates hashrate across the whole site for the selected date range, with an optional miner-type filter that scopes the sum to a subset.

agent-ready

Props

PropTypeRequiredDefaultDescription
logHashrateGroupedLog | undefined-Hashrate log grouped by miner type.
isLoadingboolean | undefined-Loading state - drives the chart spinner.
dateRangeHashrateDateRange | undefined-Selected date range used by the host to drive the query.
onDateRangeChange((range: HashrateDateRange) => void) | undefined-Fires when the user picks a new range from the DateRangePicker.
onResetVoidFunction | undefined-Optional reset handler shown as a "Reset" button next to the date picker.

Heatmap

Heatmap — a generic grid of value-coloured cells on a low→high gradient.

agent-ready

Props

PropTypeRequiredDefaultDescription
dataHeatmapCell[][]-Rows of cells (row-major). Rows may be ragged.
minnumber | undefined-Range floor; auto-derived from the finite values when omitted.
maxnumber | undefined-Range ceiling; auto-derived from the finite values when omitted.
colorsreadonly string[] | undefined-Gradient stops low→high. Defaults to the cold→hot HEATMAP_GRADIENT.
emptyColorstring | undefined-Colour used for null cells.
showValuesboolean | undefined-Render each cell's value/label as text.
renderCell((cell: HeatmapCell, context: HeatmapCellContext) => React.ReactNode) | undefined-Override the cell's inner content — e.g. to overlay socket borders, selection, or tooltips for a PDU grid. The primitiv…
ariaLabelstring | undefined-Accessible label for the grid.
classNamestring | undefined--

HeatmapLegend

HeatmapLegend — a gradient bar with low/high scale labels, matching the gradient used by [**Heatmap**](/reference/ui/components/charts/#heatmap).

agent-ready

Props

PropTypeRequiredDefaultDescription
minstring | number-Value (or pre-formatted label) at the low end of the scale.
maxstring | number-Value (or pre-formatted label) at the high end of the scale.
unitstring | undefined-Unit suffix appended to min/max.
labelstring | undefined-Heading above the gradient bar (e.g. "Temperature").
colorsreadonly string[] | undefined-Gradient stops low→high. Defaults to HEATMAP_GRADIENT.
classNamestring | undefined--

LineChart

Customisable Chart.js line chart with built-in zoom, tooltip, and legend. Data is passed via props; the component does no fetching.

agent-ready

Props

PropTypeRequiredDefaultDescription
chartRefReact.MutableRefObject<IChartApi | null> | undefined-Mutable ref to hold the LightWeightCharts reference
dataLineChartData-Data of the chart
yTicksFormatter((value: number) => string) | undefined-Callback to format ticks on y axis. If priceFormatter is given. It would be used instead.
customLabelstring | undefined-TODO: Doc
priceFormatter((value: number) => string) | undefined-Callback to format ticks on y axis.
roundPrecisionnumber | undefined-The number of decimals to show
timelinestring | undefined-TODO: DOC
fixedTimezonestring | undefined-Applies offset if provided, otherwise timestamps are assumed to already be in local time. Otherwise, use browser's curr…
shouldResetZoomboolean | undefined-Wether to Reset Zoom
skipRoundboolean | undefined-Prevent rounding of values
skipMinWidthboolean | undefined-Do not enforce a min width
fadedBackgroundboolean | undefined-Use a faded background
backgroundColorstring | undefined-Background color of the chart
customDateFormatstring | undefined-Custom date format
verticalLineLabelVisibleboolean | undefined-Show vertical line at mouse position
horizontalLineLabelVisibleboolean | undefined-Show horizontal line at mouse position
showDateInTooltipboolean | undefined-Show date line in tooltip
disableAutoRangeboolean | undefined-Disable automatically determining range
uniformDistributionboolean | undefined-Changes horizontal scale marks generation. With this flag equal to true, marks of the same weight are either all drawn…
unitstring | undefined-The unit to display with values
beginAtZeroboolean | undefined-Starts the value axis at 0
showPointMarkersboolean | undefined-Show a marker on the line
heightnumber | undefined-Controls the height of the chart. Default: 240

LineChartCard

Composable line-chart card with title, timeline range selector, legend (basic or detailed), error boundary, and an optional min/max/avg footer.

agent-ready

Props

PropTypeRequiredDefaultDescription
dataLineChartCardData-Pre-adapted chart data (use this OR rawData+dataAdapter)
rawDataunknown-Raw data to be transformed by dataAdapter
dataAdapter(data: unknown) => LineChartCardData-Adapter to transform rawData into LineChartCardData
timelineOptionsTimelineOption[]-Timeline range selector options
timelinestring-Controlled timeline value
defaultTimelinestring-Default timeline when uncontrolled
onTimelineChange(timeline: string) => void-Callback when timeline changes
titlestring-Chart title
detailLegendsboolean-Show detail legends with current values
isLoadingboolean-Loading state
shouldResetZoomboolean-Whether to reset zoom on timeline change (default: true)
chartPropsPartial<LightWeightLineChartProps>-Pass-through props to the core LineChart
chartRefReact.MutableRefObject<IChartApi | null>-Ref to the lightweight-charts IChartApi
minHeightstring | number--
classNamestring-Custom class name
headerActionReact.ReactNode-Optional action rendered on the right of the card header (e.g. an expand toggle). Passed straight through to `ChartCont…
titleExtraReact.ReactNode-Optional node rendered next to the title (e.g. an info tooltip). Passed straight through to [**ChartContainer**](/reference/ui/components/charts/#chartcontainer). Additive.

MinMaxAvg

Min / Max / Avg summary row with consistent MDK label and value styling.

agent-ready

Props

PropTypeRequiredDefaultDescription
minstring | undefined--
maxstring | undefined--
avgstring | undefined--
classNamestring | undefined--

MonthlyEbitdaChart

Bar chart comparing EBITDA across the most recent months for trend visualisation.

agent-ready

Props

PropTypeRequiredDefaultDescription
chartDataBarChartDataResult--
heightnumber | undefined--

OperationalHashrateChart

Hashrate trend card for the operational dashboard. Renders the site hashrate over time (TH/s) with an optional nominal reference line, plus an expand toggle. Purely presentational - pass pre-shaped d…

advanced

Props

PropTypeRequiredDefaultDescription
dataLineChartCardData--
isLoadingboolean--
isExpandedboolean--
onToggleExpandVoidFunction--

OperationalMinersStatusChart

Miners-status card for the operational dashboard. Renders a stacked daily breakdown of miner states (online / error / offline / sleep / maintenance) with an expand toggle. Purely presentational - pas…

advanced

Props

PropTypeRequiredDefaultDescription
dataMinersStatusChartData--
isLoadingboolean--
isExpandedboolean--
onToggleExpandVoidFunction--

OperationalPowerConsumptionChart

Power-consumption trend card for the operational dashboard. Renders site power draw over time (MW) with an optional power-availability reference line, plus an expand toggle. Purely presentational - p…

advanced

Props

PropTypeRequiredDefaultDescription
dataLineChartCardData--
isLoadingboolean--
isExpandedboolean--
onToggleExpandVoidFunction--

OperationalSiteEfficiencyChart

Site-efficiency trend card for the operational dashboard. Renders measured site efficiency over time (W/TH/s) with an optional nominal reference line, an info tooltip, and an expand toggle. Purely pr…

advanced

Props

PropTypeRequiredDefaultDescription
dataLineChartCardData--
isLoadingboolean--
isExpandedboolean--
onToggleExpandVoidFunction--

OperationsEnergyChart

Doughnut breakdown of Operations vs Energy cost (in USD totals).

agent-ready

Props

PropTypeRequiredDefaultDescription
totalsCostSummaryMonetaryTotals | null--
isLoadingboolean | undefined--

OperationsEnergyCostChart

Doughnut breakdown of Operations vs Energy cost (USD per MWh). Wraps [**ChartContainer**](/reference/ui/components/charts/#chartcontainer) and [**DoughnutChart**](/reference/ui/components/charts/#doughnutchart); pass operationalCostsUSD and energyCostsUSD via data.

agent-ready

Props

PropTypeRequiredDefaultDescription
titlestring--
unitstring--
heightnumber--
classNamestring--
isLoadingboolean--
emptyMessagestring--
dataPartial<{ energyCostsUSD: number; operationalCostsUSD: number; }>--

PowerModeTimelineChart

Timeline chart for power-mode state changes over time. Wraps [**TimelineChart**](/reference/ui/components/charts/#timelinechart) with mining-specific data shaping.

agent-ready

Props

PropTypeRequiredDefaultDescription
dataPowerModeTimelineEntry[]-Initial power-mode entries (each with start/end ts + mode).
dataUpdatesPowerModeTimelineEntry[]-Streaming updates appended to the initial data.
isLoadingboolean-Show a loading skeleton instead of the chart.
timezonestring-IANA timezone string for x-axis tick formatting.
titlestring-Chart title.

ProductionCostChart

Production cost over time, overlaid with BTC price.

agent-ready

Props

PropTypeRequiredDefaultDescription
costLogreadonly CostTimeSeriesEntry[]--
btcPriceLogreadonly BtcPriceTimeSeriesEntry[]--
dateRangeFinancialDateRange | null--
isLoadingboolean | undefined--

RevenueChart

Stacked bar chart displaying monthly revenue per site. Automatically switches between BTC and Sats display based on value scale. Receives pre-fetched data as props — no internal data fetching.

agent-ready

Props

PropTypeRequiredDefaultDescription
dataRevenueDataItem[]--
isLoadingboolean--
siteList(string | SiteItem)[]--
legendPositionPosition--
legendAlign"center" | "start" | "end"--

ThresholdLineChart

Line chart with optional horizontal threshold lines. Wraps [**ChartContainer**](/reference/ui/components/charts/#chartcontainer) and [**LineChart**](/reference/ui/components/charts/#linechart); pass series and optional thresholds via data.

agent-ready

Props

PropTypeRequiredDefaultDescription
titlestring--
unitstring--
heightnumber--
isTallboolean-When true, uses a taller default height (360px).
classNamestring--
emptyMessagestring--
isLegendVisibleboolean--
dataThresholdLineChartData--
yTicksFormatter(value: number) => string--

TimelineChart

Discrete-event timeline chart (e.g. miner state over time) with a category legend. Supports streaming updates via newData.

agent-ready

Props

PropTypeRequiredDefaultDescription
initialDataTimelineChartData--
newDataTimelineChartData | undefined--
skipUpdatesboolean | undefined--
rangeChartRange | undefined--
axisTitleTextAxisTitleText | undefined--
isLoadingboolean | undefined--
titlestring | undefined--
heightnumber | undefined--

On this page