MDK Logo

Widget

Dashboard widgets and data display cards

Widget components for dashboards and data displays.

Prerequisites

  • Complete the installation

  • Add the dependency to your app's package.json
{
  "dependencies": {
    "@tetherto/mdk-react-devkit": "*",
    "@tetherto/mdk-react-adapter": "*",
    "@tetherto/mdk-ui-foundation": "*"
  }
}

Run npm install from the mdk/ui workspace root after your app is under apps/ so npm links workspace packages.

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

Components

@tetherto/mdk-react-devkit

Import the public APIs on this page from @tetherto/mdk-react-devkit.

AddReplaceMinerDialog

Modal for adding a new miner to a slot or swapping the existing one with a replacement unit

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/dialogs/add-replace-miner-dialog/add-replace-miner-dialog.tsx

Props

PropStatusType / OptionsDefaultDescription
onCloseRequiredVoidFunction-Called when the dialog should close
openRequiredboolean-Controls dialog visibility
currentDialogFlowOptionalstring-Active flow identifier
isDirectToMaintenanceModeOptionalbooleanfalseSkip add/replace and go directly to maintenance
minersTypeOptionalstring-Miner hardware type filter
selectedEditSocketOptionalUnknownRecord-Socket being edited
selectedSocketToReplaceOptionalUnknownRecord-Socket being replaced

BatchContainerControlsCard

Bulk-controls card that applies start/stop/mode changes to multiple selected containers at once

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/details-view/batch-container-controls-card/batch-container-controls-card.tsx

Props

PropStatusType / OptionsDefaultDescription
alarmsDataItemsOptionalTimelineItemData[]-Alarm timeline entries to display
connectedMinersOptionalunknown-Array of currently connected miners
isBatchOptionalbooleantrueWhether in batch (multi-select) mode
isCompactOptionalboolean-Compact layout for tighter spaces
onNavigateOptional(path: string) => void-Navigation callback for alarm deep-links

BitdeerOptions

Options panel for a Bitdeer container — exposes vendor-specific operating modes and thresholds.

Main container for Bitdeer cooling system options. Displays dry cooler and pumps components

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/containers/bitdeer/settings/container-options/bitdeer-options.tsx

Props

PropStatusType / OptionsDefaultDescription
dataOptionalUnknownRecord-Container settings payload; both components derive state from cooling_system fields

BitdeerPumps

Pump telemetry panel for a Bitdeer container showing per-pump RPM, flow, and alert states.

Displays exhaust fan status using an indicator

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/containers/bitdeer/settings/container-options/bitdeer-pumps.tsx

Props

PropStatusType / OptionsDefaultDescription
dataOptionalUnknownRecord--

BitdeerSettings

Settings tab for a Bitdeer container — vendor-specific configuration controls and limits.

Displays container parameter settings and editable threshold forms for Bitdeer containers with oil temperature and tank pressure monitoring.

Includes: - Container parameter display (MAC address, serial number, etc.) - Editable threshold forms for oil temperature and tank pressure - Color-coded alerts and flash indicators - Sound alert configuration

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/containers/bitdeer/settings/bitdeer-settings.tsx

Props

PropStatusType / OptionsDefaultDescription
dataOptionalUnknownRecord{}Container settings payload from the API

BitdeerTankPressureCharts

Stacked time-series of dielectric tank pressure for a Bitdeer immersion container

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/containers/bitdeer/charts/USAGE.md#props-detail

Props

PropStatusType / OptionsDefaultDescription
chartDataPayloadOptionalChartDataPayload-Declarative chart configuration
chartTitleOptionalstring-Title shown in the chart header
dataOptionalUnknownRecord[][]Raw container telemetry entries (with ts + nested stats group)
dateRangeOptional{ start?: number | undefined; end?: number | undefined; }-Custom date range as Unix epoch seconds. Currently unused — accepted by the shared props type but not read by the chart components
fixedTimezoneOptionalstring-IANA timezone for x-axis ticks
footerOptionalReact.ReactNode-Footer (e.g. min/max/avg stats)
heightOptionalnumber-Chart pixel height
rangeOptionsOptional{ label: string; value: string; }[]5m/30m/3h/1DOverride the default range selector options
showLegendOptionalbooleantrueShow the toggleable legend
showRangeSelectorOptionalbooleantrueShow the range selector buttons
tagOptionalstring-Container tag (any leading prefix is stripped)
timelineOptionalstring"24h"Initial / controlled timeline value

BitdeerTankTempCharts

Tank Temperature Charts for Bitdeer containers

Displays oil and water temperature readings (hot and cold) for a specific tank.

Features: - Tank Oil TempL (Cold) - Yellow line (4px) - Tank Oil TempH (Hot) - Violet line - Tank Water TempL (Cold) - Blue line - Tank Water TempH (Hot) - Sky Blue line

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/containers/bitdeer/charts/USAGE.md#props-detail

Props

PropStatusType / OptionsDefaultDescription
chartDataPayloadOptionalChartDataPayload-Declarative chart configuration
chartTitleOptionalstring-Title shown in the chart header
dataOptionalUnknownRecord[][]Raw container telemetry entries (with ts + nested stats group)
dateRangeOptional{ start?: number | undefined; end?: number | undefined; }-Custom date range as Unix epoch seconds. Currently unused — accepted by the shared props type but not read by the chart components
fixedTimezoneOptionalstring-IANA timezone for x-axis ticks
footerOptionalReact.ReactNode-Footer (e.g. min/max/avg stats)
heightOptionalnumber-Chart pixel height
rangeOptionsOptional{ label: string; value: string; }[]5m/30m/3h/1DOverride the default range selector options
showLegendOptionalbooleantrueShow the toggleable legend
showRangeSelectorOptionalbooleantrueShow the range selector buttons
tagOptionalstring-Container tag (any leading prefix is stripped)
tankNumberOptionalstring | number1Tank number (1 or 2)
timelineOptionalstring"24h"Initial / controlled timeline value

BitMainBasicSettings

General settings form for a BitMain container — naming, location, and power limits.

Main settings view displaying: - Cooling system status (pumps and fans) - Power distribution - GPS positioning

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/containers/bitmain/status-item/settings/USAGE.md#props-detail

Props

PropStatusType / OptionsDefaultDescription
dataOptionalDevice-Container data

BitMainControlsTab

Read-only status tab for a BitMain container: fan status, tank levels, and GPS location.

Displays container controls including: - Container fan status - Tank levels (A, B, C, D) - GPS location (latitude/longitude)

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/containers/bitmain-immersion/controls-tab/bitmain-immersion-controls-tab.tsx

Props

PropStatusType / OptionsDefaultDescription
dataRequiredDevice-Device data

BitMainCoolingSystem

Cooling subsystem panel for a BitMain container — pumps, fans, and dry-cooler status.

Displays the status of cooling system components including: - Circulating pump - Fluid infusion pump - Fans (1-2) - Cooling tower fans (1-3)

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/containers/bitmain/status-item/settings/cooling-system/bitmain-cooling-system.tsx

Props

PropStatusType / OptionsDefaultDescription
dataOptionalDevice-Container data

BitMainHydroLiquidTemperatureCharts

Time-series charts of dielectric liquid temperature for a BitMain hydro-cooled container.

Displays secondary liquid supply temperature readings (Temp1 and Temp2) for Bitmain Hydro containers.

Features: - Sec. Liquid supply Temp1 - Sky Blue line - Sec. Liquid supply Temp2 - Violet line - Interactive legend for toggling series - Timeline selector (1h, 6h, 24h, 7d, 30d) - Current temperature display

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/containers/bitmain/charts/USAGE.md#props-detail

Props

PropStatusType / OptionsDefaultDescription
chartDataPayloadOptionalChartDataPayload-Declarative chart configuration
chartTitleOptionalstring-Title shown in the chart header
dataOptionalUnknownRecord[][]Raw container telemetry entries (with ts + nested stats group)
dateRangeOptional{ start?: number | undefined; end?: number | undefined; }-Custom date range as Unix epoch seconds. Currently unused — accepted by the shared props type but not read by the chart components
fixedTimezoneOptionalstring-IANA timezone for x-axis ticks
footerOptionalReact.ReactNode-Footer (e.g. min/max/avg stats)
heightOptionalnumber-Chart pixel height
rangeOptionsOptional{ label: string; value: string; }[]5m/30m/3h/1DOverride the default range selector options
showLegendOptionalbooleantrueShow the toggleable legend
showRangeSelectorOptionalbooleantrueShow the range selector buttons
tagOptionalstring-Container tag (any leading prefix is stripped)
timelineOptionalstring"24h"Initial / controlled timeline value

BitMainHydroSettings

Settings form for a BitMain hydro-cooled container; flow, temperature, and pump configuration.

Main settings view for BitMain Hydro containers displaying: - Basic settings (cooling system, power, positioning) - Threshold configuration forms (water temperature, pressure)

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/containers/bitmain/USAGE.md#props-detail

Props

PropStatusType / OptionsDefaultDescription
dataOptionalDevice-Device data

BitMainImmersionControlBox

Control box for a BitMain immersion container exposing tank, pump, and unit-level actions.

A flexible container component with configurable columns and optional bottom content. Used for displaying control information in a structured layout

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/containers/bitmain-immersion/control-box/bitmain-immersion-control-box.tsx

Props

PropStatusType / OptionsDefaultDescription
bottomContentOptionalReact.ReactNode-Content for bottom row
classNameOptionalstring-Custom className
leftContentOptionalReact.ReactNode-Content for left column
rightContentOptionalReact.ReactNode-Content for right column
secondaryOptionalbooleanfalseSecondary variant (no border)
titleOptionalstring-Box title

BitMainImmersionPumpStationControlBox

Pump-station control card for a BitMain immersion container with per-pump enable/disable.

Displays pump station status including: - Alarm/Normal status - Ready state - Operating state - Started state

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/containers/bitmain-immersion/pump-station/bitmain-immersion-pump-station-control-box.tsx

Props

PropStatusType / OptionsDefaultDescription
alarmStatusOptionalbooleanfalseAlarm/fault status
classNameOptionalstring-Custom className
operationOptionalboolean-Operation status
readyOptionalboolean-Ready status
startOptionalboolean-Start status
titleOptionalstring-Box title

BitMainImmersionSettings

Settings form for a BitMain immersion container — tank thresholds, pump curves, and limits.

Settings form for BitMain immersion containers with temperature threshold configuration

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/containers/bitmain-immersion/bitmain-immersion-settings.tsx

Props

PropStatusType / OptionsDefaultDescription
containerSettingsOptional{ thresholds?: Record<string, unknown> | undefined; } | nullnullContainer settings with custom thresholds
dataOptionalDevice-Device data

BitMainImmersionSummaryBox

Summary card for a BitMain immersion-cooled container: temps, pumps, power, and overall status

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/container/bitmain-immersion-summary-box/bitmain-immersion-summary-box.tsx

Props

PropStatusType / OptionsDefaultDescription
containerSettingsOptionalBitMainImmersionSummaryBoxContainerSettings | nullnullOptional threshold configuration that drives colour/flash states on temperature stats
dataOptionalDevice-Live device object from the devices store. Returns null when omitted

BitMainImmersionSystemStatus

Aggregated system-status card for a BitMain immersion container; rolls up subsystem health.

Displays system status information including: - Server start permission - Connection status

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/containers/bitmain-immersion/system-status/bitmain-immersion-system-status.tsx

Props

PropStatusType / OptionsDefaultDescription
dataOptionalDevice-Device data

BitMainImmersionUnitControlBox

Per-unit control card inside a BitMain immersion container with start/stop and reset actions

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/containers/bitmain-immersion/unit-control-box/USAGE.md#bitmainimmersioncompactunitcontrolbox-props-detail

Props

PropStatusType / OptionsDefaultDescription
alarmStatusOptionalbooleanfalseAlarm/fault status
classNameOptionalstring-Custom className
frequencyOptionalnumber-Frequency value in Hz
isDryCoolerOptionalbooleanfalseWhether this is a dry cooler unit
runningOptionalbooleanfalseWhether the unit is running
secondaryOptionalbooleanfalseSecondary variant (no border)
showFrequencyInLeftColumnOptionalbooleanfalseShow frequency in left column instead of right
titleOptionalstring-Box title

BitMainLiquidPressureCharts

Time-series charts of dielectric liquid pressure across a BitMain immersion container.

Displays supply and return liquid pressure readings for Bitmain containers. Converts pressure values from MPa to bar for display.

Features: - Supply Liquid Pressure - Sky Blue line - Return Liquid Pressure - Violet line - Automatic MPa to bar conversion - Interactive legend for toggling series - Timeline selector (1h, 6h, 24h, 7d, 30d) - Current pressure display

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/containers/bitmain/charts/USAGE.md#props-detail

Props

PropStatusType / OptionsDefaultDescription
chartDataPayloadOptionalChartDataPayload-Declarative chart configuration
chartTitleOptionalstring-Title shown in the chart header
dataOptionalUnknownRecord[][]Raw container telemetry entries (with ts + nested stats group)
dateRangeOptional{ start?: number | undefined; end?: number | undefined; }-Custom date range as Unix epoch seconds. Currently unused — accepted by the shared props type but not read by the chart components
fixedTimezoneOptionalstring-IANA timezone for x-axis ticks
footerOptionalReact.ReactNode-Footer (e.g. min/max/avg stats)
heightOptionalnumber-Chart pixel height
rangeOptionsOptional{ label: string; value: string; }[]5m/30m/3h/1DOverride the default range selector options
showLegendOptionalbooleantrueShow the toggleable legend
showRangeSelectorOptionalbooleantrueShow the range selector buttons
tagOptionalstring-Container tag (any leading prefix is stripped)
timelineOptionalstring"24h"Initial / controlled timeline value

BitMainLiquidTempCharts

Time-series charts of dielectric liquid temperature across a BitMain immersion container.

Displays supply and return liquid temperature readings for Bitmain containers.

Features: - Supply Liquid Temp - Sky Blue line - Return Liquid Temp - Violet line - Interactive legend for toggling series - Timeline selector (1h, 6h, 24h, 7d, 30d) - Current temperature display

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/containers/bitmain/charts/USAGE.md#props-detail

Props

PropStatusType / OptionsDefaultDescription
chartDataPayloadOptionalChartDataPayload-Declarative chart configuration
chartTitleOptionalstring-Title shown in the chart header
dataOptionalUnknownRecord[][]Raw container telemetry entries (with ts + nested stats group)
dateRangeOptional{ start?: number | undefined; end?: number | undefined; }-Custom date range as Unix epoch seconds. Currently unused — accepted by the shared props type but not read by the chart components
fixedTimezoneOptionalstring-IANA timezone for x-axis ticks
footerOptionalReact.ReactNode-Footer (e.g. min/max/avg stats)
heightOptionalnumber-Chart pixel height
rangeOptionsOptional{ label: string; value: string; }[]5m/30m/3h/1DOverride the default range selector options
showLegendOptionalbooleantrueShow the toggleable legend
showRangeSelectorOptionalbooleantrueShow the range selector buttons
tagOptionalstring-Container tag (any leading prefix is stripped)
timelineOptionalstring"24h"Initial / controlled timeline value

BitMainPowerAndPositioning

Power and physical-positioning settings for a BitMain container — circuits, phases, and rack slots.

Displays power distribution and GPS location information: - Distribution box #1 and #2 power consumption - Latitude and longitude coordinates with direction

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/containers/bitmain/status-item/settings/power-and-positioning/bitmain-power-and-positioning.tsx

Props

PropStatusType / OptionsDefaultDescription
dataOptionalDevice-Container data

BitMainPowerCharts

Time-series charts of per-phase power, voltage, and current draw for a BitMain container.

Displays power consumption for Bitmain containers with distribution boxes. Shows total power and individual power for each distribution box. Automatically calculates total power from the sum of both boxes and formats the display units (kW/MW) based on the power magnitude.

Features: - Total Power - Sky Blue line (sum of both boxes) - Dist. Box 1 Power - Violet line - Dist. Box 2 Power - Red line - Interactive legend for toggling series - Timeline selector (1h, 6h, 24h, 7d, 30d) - Current power consumption display with auto unit (W/kW/MW) - Automatic kW to W conversion for chart display

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/containers/bitmain/charts/USAGE.md#props-detail

Props

PropStatusType / OptionsDefaultDescription
chartDataPayloadOptionalChartDataPayload-Declarative chart configuration
chartTitleOptionalstring-Title shown in the chart header
dataOptionalUnknownRecord[][]Raw container telemetry entries (with ts + nested stats group)
dateRangeOptional{ start?: number | undefined; end?: number | undefined; }-Custom date range as Unix epoch seconds. Currently unused — accepted by the shared props type but not read by the chart components
fixedTimezoneOptionalstring-IANA timezone for x-axis ticks
footerOptionalReact.ReactNode-Footer (e.g. min/max/avg stats)
heightOptionalnumber-Chart pixel height
rangeOptionsOptional{ label: string; value: string; }[]5m/30m/3h/1DOverride the default range selector options
showLegendOptionalbooleantrueShow the toggleable legend
showRangeSelectorOptionalbooleantrueShow the range selector buttons
tagOptionalstring-Container tag (any leading prefix is stripped)
timelineOptionalstring"24h"Initial / controlled timeline value

BitMainSupplyLiquidFlowCharts

Time-series charts of supply-side coolant flow rates for a BitMain immersion container.

Displays supply liquid flow rate for Bitmain containers in cubic meters per hour (m³/h).

Features: - Supply Liquid Flow - Sky Blue line - Interactive timeline selector (1h, 6h, 24h, 7d, 30d) - Current flow rate display - Optional legend and range selector

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/containers/bitmain/charts/USAGE.md#props-detail

Props

PropStatusType / OptionsDefaultDescription
chartDataPayloadOptionalChartDataPayload-Declarative chart configuration
chartTitleOptionalstring-Title shown in the chart header
dataOptionalUnknownRecord[][]Raw container telemetry entries (with ts + nested stats group)
dateRangeOptional{ start?: number | undefined; end?: number | undefined; }-Custom date range as Unix epoch seconds. Currently unused — accepted by the shared props type but not read by the chart components
fixedTimezoneOptionalstring-IANA timezone for x-axis ticks
footerOptionalReact.ReactNode-Footer (e.g. min/max/avg stats)
heightOptionalnumber-Chart pixel height
rangeOptionsOptional{ label: string; value: string; }[]5m/30m/3h/1DOverride the default range selector options
showLegendOptionalbooleantrueShow the toggleable legend
showRangeSelectorOptionalbooleantrueShow the range selector buttons
tagOptionalstring-Container tag (any leading prefix is stripped)
timelineOptionalstring"24h"Initial / controlled timeline value

ContainerCharts

Tabbed chart panel showing per-container hashrate, power, and temperature time series

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/container/container-charts/container-charts.tsx

Props

PropStatusType / OptionsDefaultDescription
combinationsRequiredContainerChartCombinationOption[]-Options for the combination selector
chartRawDataOptionalChartEntry[] | nullnullRaw overview stats rows passed to chart adapters
defaultSelectedCombinationOptionalstring | nullnullInitial selection when uncontrolled
disabledMessageOptionalstring"Container Charts feature is not enabled"Message when featureEnabled is false
featureEnabledOptionalbooleantrueWhen false, shows an empty state (feature gate)
getDatasetBorderColorOptionalContainerChartsDatasetBorderColorResolver-Optional per-dataset line colors after adapters run (e.g. demo or host branding)
isLoadingChartsOptionalbooleanfalseLoading state for the chart panels
isLoadingCombinationsOptionalbooleanfalseLoading state for combination options
onSelectedCombinationChangeOptional((value: string | null) => void)-Called when the selected combination changes
selectedCombinationOptionalstring | null-Controlled selected combination value
titleOptionalstring"Container Charts"Section heading

ContainerControlsBox

Control panel for a single container — start/stop, mode select, and operator actions

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/container/container-controls-box/container-controls-box.tsx

Props

PropStatusType / OptionsDefaultDescription
onNavigateRequired(path: string) => void-Navigation callback used by alarm row click-throughs
alarmsDataItemsOptionalTimelineItemData[][]Active alarm feed items to display inline
dataOptionalDevice-The container device object
isBatchOptionalbooleanfalseWhen true, operates on selectedDevices instead of a single data record
isCompactOptionalboolean--
pendingSubmissionsOptionalPendingSubmission[][]In-flight command queue; disables conflicting actions
powerModesLogOptionalUnknownRecord--
selectedDevicesOptionalDevice[][]Devices included in a batch operation
tailLogDataOptionalUnknownRecord[]-Recent log tail entries

ContainerControlsCard

Per-socket controls card for the container detail view: powers the selected miner sockets on/off and shows their aggregate power / current. Reads the selected sockets from the devices store (populated by deriveSelectedSockets) and queues switchSocket drafts. Container-level "power all sockets" lives on BatchContainerControlsCard; this card drives an explicit socket selection, which the flat Explorer list does not yet surface (a container-PDU grid is the follow-on) — hence advanced rather than agent-ready

advanced

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/details-view/container-controls-card/container-controls-card.tsx

Props

PropStatusType / OptionsDefaultDescription
buttonsStatesOptionalButtonsStates--
isLoadingOptionalboolean--

ContainerFanLegend

Legend strip describing fan states and colours used by the container fans visualisation.

Displays a single fan status with number and icon

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/containers/bitdeer/settings/container-options/dry-cooler/container-fans-card/container-fans-legend.tsx

Props

PropStatusType / OptionsDefaultDescription
classNameOptionalstring-Custom className
enabledOptionalbooleanfalseRunning state; controls the icon and colour class
indexOptionalnumber | null-Fan index/number to display

ContainerFansCard

Card displaying the array of cooling fans in a container with live state per fan.

Displays a grid of fan status indicators. Shows fan number and on/off state with icon

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/containers/bitdeer/settings/container-options/dry-cooler/container-fans-card/container-fans-card.tsx

Props

PropStatusType / OptionsDefaultDescription
fansDataOptionalPumpItem[]-Array of fan state objects. Renders an empty card when the array is empty; returns null when absent

ContainerSelectionDialog

Modal that lists containers and lets the operator pick one or many for a follow-up action

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/dialogs/position-change-dialog/container-selection-dialog/container-selection-dialog.tsx

Props

PropStatusType / OptionsDefaultDescription
onCloseRequired(value?: boolean | undefined) => void-Called when dialog closes
openRequiredboolean-Controls visibility
containersOptionalDevice[][]Available target containers
isLoadingOptionalboolean-Show loading spinner
minerOptionalDevice-The miner being moved

ContainerWidgetCard

Presentational summary card for a single container in the Site Overview widgets grid: a header row (title / alarms / power), then either an offline / error banner or the body (optional vendor content, a miners summary, and a miner-activity chart).

Fully props-driven — no data fetching, formatting, or alarm math. The owning feature/hook shapes every value (including flash and summary)

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/container/container-widget-card/container-widget-card.tsx

Props

PropStatusType / OptionsDefaultDescription
summaryRequiredMinersSummaryParam[]-Pre-formatted miners-summary rows (label + display value incl. units)
titleRequiredstring-Container display name shown in the header row
activityOptionalContainerActivityData{}Miner-state activity counts for the embedded chart
activityErrorOptionalContainerActivityErrornullActivity chart error payload
alarmsOptionalPartial<Record<AlarmPropKey, Alert[]>>-Per-category alarm badges for the header row
classNameOptionalstring-Additional class for the root element
errorMessageOptionalstring-Container-level error message; renders an error banner instead of the body
flashOptionalbooleanfalseCritical-high alarm flash. Computed upstream (by the data hook) so the card stays presentational — never derive alarm state inside this component
isActivityErrorOptionalbooleanfalseActivity chart error state
isActivityLoadingOptionalbooleanfalseActivity chart loading state
isOfflineOptionalbooleanfalseRender the offline banner instead of the body
onClickOptional(() => void)-Invoked when the card is clicked (navigation is the caller's concern)
powerOptionalnumber-Latest container power draw in watts (rendered in kW by the top row)
powerUnitOptionalstring-Power unit label shown next to the reading
statsErrorMessageOptionalstring | ErrorWithTimestamp[] | null-Raw stats error surfaced as a tooltip in place of the power reading
vendorContentOptionalReact.ReactNode-Optional vendor-specific content (supply-liquid / tanks / immersion / MicroBT boxes) rendered above the miners summary. Kept as a slot so the generic card carries no per-model branching

CostMetrics

Three "$/MWh" tiles that summarise the cost-summary period. Order mirrors the OSS Cost page: All-in (highlighted), Energy, Operations

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/reporting-tool/financial/cost/cost-metrics.tsx

Props

PropStatusType / OptionsDefaultDescription
metricsRequiredCostSummaryDisplayMetrics--

DryCooler

Dry-cooler subsystem panel showing inlet/outlet temperatures and fan-stage status.

Displays dry cooler status with fans and associated pumps. Shows two cooler groups with fan status indicators and pump controls

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/containers/bitdeer/settings/container-options/dry-cooler/dry-cooler.tsx

Props

PropStatusType / OptionsDefaultDescription
dataOptionalUnknownRecord-Container settings payload. cooling_system.dry_cooler is read for fan state; cooling_system.oil_pump and cooling_system.water_pump are read for pump state

EnabledDisableToggle

Switch with confirmation that enables or disables a container, miner, or feature flag

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/container/enabled-disable-toggle/enabled-disable-toggle.tsx

Props

PropStatusType / OptionsDefaultDescription
isButtonDisabledRequiredboolean-Disables the Enable/Disable buttons when a command is in-flight
isOfflineRequiredboolean-Disables all controls and shows an offline tooltip
onToggleRequired(params: EnabledDisableToggleCbParams) => void-Callback fired when the user confirms a state change
tankNumberRequiredstring | number-Tank identifier used in the label (Tank {N} Circulation). Pass an empty string for the air exhaust label
valueRequiredunknown-Current state. A boolean drives a switch display; non-boolean shows action buttons

ExplorerDetail

Per-type Explorer detail panel. Reads the selection the useExplorerSelection bridge writes into devicesStore and composes the matching cards:

Writes queue into the actions draft store; submission stays gated behind the ActionsSidebar

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/features/explorer/explorer-detail/explorer-detail.tsx

Props

PropStatusType / OptionsDefaultDescription
deviceTypeRequired"container" | "miner" | "cabinet"-The active Explorer tab — selects which per-type panel renders
isCompactOptionalbooleantrueCompact layout for the narrower Explorer detail column
onNavigateOptional((path: string) => void)no-opRouter navigate used by alarm rows to deep-link into /alerts/:id

FireStatusBox

Fire Status Box Component x Displays fire safety and environmental monitoring status

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/containers/micro-bt/fire-status-box/fire-status-box.tsx

Props

PropStatusType / OptionsDefaultDescription
dataOptional{ smokeDetector: string | number; waterIngressDetector: string | number; coolingFanStatus: string | number; }-Device data

GaugeChartComponent

Single-needle gauge chart used inside container settings for thresholded percentage values.

Displays a value as a gauge/speedometer chart with label and unit

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/containers/micro-bt/gauge-chart/gauge-chart-component.tsx

Props

PropStatusType / OptionsDefaultDescription
maxRequirednumber-Maximum value for the gauge
unitRequiredstring-Unit of measurement
valueRequirednumber-Current value
chartStyleOptionalReact.CSSProperties{}Custom chart style
classNameOptionalstring-Custom className
colorsOptionalstring[][COLOR.EMERALD, COLOR.SOFT_TEAL]Arc colors in HEX format
heightOptionalnumber200Chart height in pixels
hideTextOptionalbooleantrueHide the percentage text inside the chart
labelOptionalstring""Label/title for the chart

GenericDataBox

Reusable labelled stat box used by container summary panels for one-off numeric values.

Displays a table of label-value-unit rows

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/container/generic-data-box/generic-data-box.tsx

Props

PropStatusType / OptionsDefaultDescription
dataOptionalDataItem[][]Array of data items to display
fallbackValueOptionalunknown-Fallback value when value is undefined

MaintenanceDialogContent

Body of the maintenance dialog — captures the work-order details before applying the maintenance flag

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/dialogs/position-change-dialog/maintenance-dialog-content/maintenance-dialog-content.tsx

Props

PropStatusType / OptionsDefaultDescription
onCancelOptionalVoidFunction-Called when the user cancels
selectedEditSocketOptionalPartial<SelectedEditSocket>-The socket/slot being flagged for maintenance

MicroBTCooling

Cooling subsystem panel for a MicroBT container — pumps, fans, and coolant flow telemetry.

Displays cooling system status for MicroBT containers including: - Cycle pump status - Main circulation pump (status, switch, speed) - Cooling fan (status, switch, speed) - Make-up water pump (status, switch, fault)

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/containers/micro-bt/cooling/micro-bt-cooling.tsx

Props

PropStatusType / OptionsDefaultDescription
dataOptionalDevice-Device data

MicroBTSettings

Settings form for a MicroBT container with vendor-specific operating limits.

Settings form for MicroBT containers with temperature threshold configuration

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/containers/micro-bt/settings/micro-bt-settings.tsx

Props

PropStatusType / OptionsDefaultDescription
containerSettingsOptional{ thresholds?: Record<string, unknown> | undefined; } | nullnullContainer settings with custom thresholds
dataOptionalDevice-Device data

MicroBTWidgetBox

Summary card for a MicroBT-equipped container showing pumps, fans, and operating mode

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/container/micro-bt-widget-box/micro-bt-widget-box.tsx

Props

PropStatusType / OptionsDefaultDescription
dataOptionalDevice-Live device object. Returns null when omitted

MinerChip

Chip representing a single miner; surfaces slot index, temperature, and frequency

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/details-view/miner-chips-card/miner-chip/miner-chip.tsx

Props

PropStatusType / OptionsDefaultDescription
frequencyRequired{ current: number; }-Current frequency in MHz
indexRequirednumber-Chip slot index
temperatureRequired{ avg: number; min: number; max: number; }-Temperature readings in °C

MinerChipsCard

Card listing every miner in a container as <MinerChip>s for at-a-glance selection

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/details-view/miner-chips-card/miner-chips-card.tsx

Props

PropStatusType / OptionsDefaultDescription
dataRequiredContainerStats-Container stats including chip frequency and temperature arrays

MinerControlsCard

Action card for a single miner: power, reboot, mode select, and maintenance entry points

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/details-view/miner-controls-card/miner-controls-card.tsx

Props

PropStatusType / OptionsDefaultDescription
buttonsStatesRequiredRecord<string, boolean | undefined>-Map of action name → loading/disabled state
isLoadingRequiredboolean-Whether the card itself is in a loading state
showPowerModeSelectorOptionalbooleantrueShow the power-mode selection button

MinerInfoCard

Info card for one miner — serial, model, firmware, location, and recent activity summary

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/details-view/miner-info-card/miner-info-card.tsx

Props

PropStatusType / OptionsDefaultDescription
dataOptionalInfoItem[]-Array of label/value pairs to display
labelOptionalstring"Miner info"Card heading label

MinerMetricCard

Single-metric card (hashrate, temperature, or power) for one miner with sparkline and delta.

Displays key metrics for a miner including: - Efficiency (fixed position top-right) - Hash rate, Temperature - Frequency, Consumption - Optional secondary stats in grid

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/details-view/miner-metric-card/miner-metric-card.tsx

Props

PropStatusType / OptionsDefaultDescription
primaryStatsOptionalStatItem[]-Primary statistics (efficiency, hashrate, temperature, frequency, consumption)
secondaryStatsOptionalStatItem[]-Secondary statistics to display in grid
showSecondaryStatsOptionalbooleantrueWhether to show secondary stats section

MinerPowerModeSelectionButtons

Segmented control letting an operator switch a miner between low / normal / turbo power modes

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/details-view/miner-power-mode-selection-buttons/miner-power-mode-selection-buttons.tsx

Props

PropStatusType / OptionsDefaultDescription
connectedMinersOptionalDevice[]-Currently connected miners
disabledOptionalbooleanfalseDisable all buttons
hasMarginOptionalbooleanfalseAdd margin around the button group
powerModesLogOptionalUnknownRecord-Log of previous power mode selections
selectedDevicesOptionalDevice[][]Devices to apply the power mode to
setPowerModeOptional((devices: Device[], mode: string) => void)-Callback to apply the selected mode

MinersActivityChart

Per-status miner counts (online / offline / faulted / power-mode). Renders as coloured indicator dots (indicators) or tinted status tiles (tiles)

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/details-view/miners-activity-chart/miners-activity-chart.tsx

Props

PropStatusType / OptionsDefaultDescription
dataOptionalMinersActivityData{}Time-series data for online/offline/faulted counts
errorOptionalMinerActivityChartErrorProp | nullnullError details to display
isDemoModeOptionalbooleanfalseUse demo/mock data
isErrorOptionalbooleanfalseShow error state
isLoadingOptionalbooleanfalseShow loading state
largeOptionalbooleanfalseUse tall variant
showLabelOptionalbooleantrueShow axis labels
variantOptional"indicators" | "tiles""indicators"indicators (default) renders coloured dots; tiles renders tinted status tiles

MinersSummaryBox

Headline card summarising miner counts by state (online, offline, faulted) for one container.

Displays mining summary parameters in a 2-column grid layout. Accepts pre-formatted values - consumers handle data formatting

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/container/miners-summary-box/miners-summary-box.tsx

Props

PropStatusType / OptionsDefaultDescription
paramsRequiredMinersSummaryParam[]-Array of label-value pairs to display in a 2-column grid
classNameOptionalstring-Additional CSS class name

PositionChangeDialog

Modal that moves a miner to a different rack slot, validating the destination first

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/dialogs/position-change-dialog/position-change-dialog.tsx

Props

PropStatusType / OptionsDefaultDescription
onCloseRequired(currentDialogFlow: string, isDontReset?: boolean | undefined) => void-Called when dialog closes
openRequiredboolean-Controls dialog visibility
dialogFlowOptionalstring-Initial dialog step/flow identifier
isContainerEmptyOptionalbooleanfalseWhether the target container slot is empty
onChangePositionClickedOptionalVoidFunction-Callback when position change is triggered
onPositionChangedSuccessOptionalVoidFunction-Callback on successful position change
selectedEditSocketOptionalUnknownRecord-Socket being edited
selectedSocketToReplaceOptionalUnknownRecord-Socket being replaced

PowerMeters

Per-circuit power-meter panel showing live kW, kWh, and power-factor readings.

Displays power meter readings for container devices including: - Communication status - Voltage measurements (A-B, B-C, C-A) - Power factor and frequency - Active and apparent power - Energy consumption

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/containers/micro-bt/power-meters/power-meters.tsx

Props

PropStatusType / OptionsDefaultDescription
dataOptionalDevice-Device data

PumpBox

Single-pump status card with RPM, flow, and fault state for one immersion-cooling pump

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/containers/bitdeer/settings/container-options/pump-box/pump-box.tsx

Props

PropStatusType / OptionsDefaultDescription
pumpTitleRequiredstring-Label prefix for the pump (e.g. "Circulation")
pumpItemOptionalPumpItem-Pump data. index is 0-based; displayed as index + 1

RemoveMinerDialog

Confirmation modal for removing a miner from a slot. Renders nothing when isRemoveMinerFlow is false

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/dialogs/position-change-dialog/remove-miner-dialog/remove-miner-dialog.tsx

Props

PropStatusType / OptionsDefaultDescription
isRemoveMinerFlowRequiredboolean-Controls whether the dialog is open; false renders nothing
onCancelRequiredVoidFunction-Called when the action is cancelled
headDeviceOptionalDevice{}The miner being removed

SecondaryStatCard

Compact stat tile rendered alongside a primary stat to provide supporting context.

Displays a secondary statistic with a name and value in a card format

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/details-view/secondary-stat-card/secondary-stat-card.tsx

Props

PropStatusType / OptionsDefaultDescription
classNameOptionalstring-Custom className
nameOptionalstring""Stat name/label
valueOptionalstring | number""Stat value

SingleStatCard

Hero stat tile rendering one big number with a label and optional delta indicator.

Displays a single statistic with optional animations and variants

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/details-view/single-stat-card/single-stat-card.tsx

Props

PropStatusType / OptionsDefaultDescription
colorOptionalstring"inherit"Color for flash/border
flashOptionalbooleanfalseEnable flash animation
nameOptionalstring-Stat name/label
rowOptionalbooleanfalseRow layout
subtitleOptionalstring""Subtitle text
superflashOptionalbooleanfalseEnable superflash animation (faster)
unitOptionalstring""Unit of measurement
valueOptionalstring | number | nullnullStat value
variantOptional"primary" | "secondary" | "tertiary" | "highlighted""primary"Card variant

Socket

Per-socket panel showing the miner slotted into a container slot, its state, and quick actions.

Displays a socket in a PDU with power/current info, miner status, and heatmap visualization

Features: - Power and current display - Miner status indicators - Heatmap mode with temperature/hashrate - Cooling fan indicator - Socket enable/disable states - Add miner flow

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/container/socket/socket.tsx

Props

PropStatusType / OptionsDefaultDescription
clickDisabledOptionalbooleanfalseWhether click is disabled
coolingOptionalbooleanundefinedCooling status
current_aOptionalnumber | nullnullCurrent in amperes
enabledOptionalbooleanfalseWhether socket is enabled
heatmapOptionalHeatmap | nullnullHeatmap configuration
innerRefOptionalReact.ForwardedRef<HTMLDivElement>-Forwarded ref for the container
isContainerControlSupportedOptionalbooleanfalseWhether container control is supported
isEditFlowOptionalbooleanfalseWhether in edit flow mode
isEmptyPowerDashedOptionalbooleanfalseWhether to show dashed border for empty power
minerOptionalMiner | nullnullMiner data
pduOptionalPdu-PDU information
power_wOptionalnumber | nullnullPower in watts
selectedOptionalbooleanfalseWhether socket is selected
socketOptionalnumber | nullnullSocket number/index

StatsGroupCard

Card grouping multiple <SingleStatCard>s or <SecondaryStatCard>s under a shared title.

Displays aggregated statistics for selected miners: - Hash rate, Temperature, Frequency, Consumption - Optional: Power mode, Uptime, LED, Status (for single miner)

Can render in two modes: - Miner Metrics: Uses MinerMetricCard layout - Stats Grid: Uses SingleStatCard and SecondaryStatCard in rows

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/details-view/stats-group-card/stats-group-card.tsx

Props

PropStatusType / OptionsDefaultDescription
isMinerMetricsOptionalbooleanfalseWhether to show miner metrics card layout
minersOptionalDevice[] | DeviceData[]-Array of miners to display stats for

StatusItem

Compact labelled status pill used inside container panels for boolean or enum readings.

Displays a label with a colored status indicator

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/explorer/containers/bitmain/status-item/status-item.tsx

Props

PropStatusType / OptionsDefaultDescription
labelOptionalstring-Status label text
statusOptional"warning" | "normal" | "fault" | "unavailable"-Status type

SupplyLiquidBox

Status card for the dielectric supply tank — level, temperature, and pressure readings

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/container/supply-liquid-box/supply-liquid-box.tsx

Props

PropStatusType / OptionsDefaultDescription
containerSettingsOptionalSupplyLiquidBoxContainerSettings | nullnullOptional threshold map that controls colour and flash states on readings
dataOptionalDevice-Live device object. Returns null when omitted

TankRow

Single tank-list row used inside <TanksBox> to display per-tank temperature and pressure

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/container/tanks-box/tank-row.tsx

Props

PropStatusType / OptionsDefaultDescription
colorRequiredstring-CSS colour for the temperature value (threshold-driven)
labelRequiredstring-Tank identifier label (e.g. "Tank 1")
oilPumpEnabledRequiredboolean-Running state for the oil pump
pressureRequiredPartial<{ value: number; flash: boolean; color: string; tooltip: string; }>-Pressure reading with optional flash/colour/tooltip
temperatureRequirednumber-Current temperature value
unitRequiredstring-Temperature unit string (e.g. "°C")
waterPumpEnabledRequiredboolean-Running state for the water pump
flashOptionalboolean-Enables flash animation on the temperature row
tooltipOptionalstring-Tooltip text for the temperature value

TanksBox

Card listing all tanks inside an immersion container with per-tank temperature and pressure rows.

Displays tank rows with temperature, pressure, and oil/water pump status

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/container/tanks-box/tanks-box.tsx

Props

PropStatusType / OptionsDefaultDescription
dataOptional{ oil_pump: Tank[]; water_pump: WaterPump[]; pressure: TanksBoxPressure[]; }-Tank telemetry arrays; returns null when omitted

WidgetTopRow

Compact header row used at the top of container / miner widgets — shows the title, per-category alarm badges, and the current power reading (or an error tooltip)

agent-ready

Source

https://github.com/tetherto/mdk/blob/main/ui/packages/react-devkit/src/domain/components/widget-top-row/index.tsx

Props

PropStatusType / OptionsDefaultDescription
titleRequiredstring-Widget title
alarmsOptionalPartial<Record<AlarmPropKey, Alert[]>>-Per-category alarm badges
classNameOptionalstring-Additional class names
powerOptionalnumber-Power reading; rendered in kilo-units
statsErrorMessageOptionalstring | ErrorWithTimestamp[] | null-Error tooltip content; replaces power
unitOptionalstring-Power unit (e.g. "kW")

On this page