MDK Logo

Header controls settings

Configure which metrics appear in the global header

Manages header visibility preferences — which metrics appear in the global header.

It provides:

  1. Data (preferences): current visibility state for header items.
  2. Callbacks (onToggle, onReset): handle changes and reset to defaults.
  3. State (isLoading): optional loading feedback.
  4. Styling (className): optional CSS class.

Prerequisites

Import

import { HeaderControlsSettings } from '@tetherto/mdk-react-devkit/foundation'

Props

PropStatusTypeDefaultDescription
preferencesRequiredHeaderPreferencesnoneCurrent header visibility preferences
onToggleRequiredfunctionnoneCallback when a toggle changes
onResetRequiredfunctionnoneCallback to reset to defaults
isLoadingOptionalbooleanfalseLoading state
classNameOptionalstringnoneAdditional CSS class

Data structure

The HeaderPreferences type maps header item keys to visibility booleans. See constants for the full list.

import type { HeaderPreferences } from '@tetherto/mdk-react-devkit/foundation'

type HeaderPreferences = {
  poolMiners: boolean
  miners: boolean
  poolHashrate: boolean
  hashrate: boolean
  consumption: boolean
  efficiency: boolean
}

Basic usage

Changes apply instantly via onToggle. The callback receives the preference key and new value:

const handleToggle = (key: keyof HeaderPreferences, value: boolean) => {
  setPreferences(prev => ({ ...prev, [key]: value }))
  api.updateHeaderPreference(key, value)  // persist immediately
}

There is no Save button, each toggle immediately persists via your callback.

Example

import { HeaderControlsSettings, DEFAULT_HEADER_PREFERENCES } from '@tetherto/mdk-react-devkit/foundation'

function HeaderSettingsSection() {
  const [preferences, setPreferences] = useState<HeaderPreferences>({
    poolMiners: true,
    miners: true,
    poolHashrate: true,
    hashrate: false,
    consumption: true,
    efficiency: true,
  })

  const handleToggle = (key: keyof HeaderPreferences, value: boolean) => {
    setPreferences(prev => ({ ...prev, [key]: value }))
    api.updateHeaderPreference(key, value)
  }

  const handleReset = () => {
    setPreferences(DEFAULT_HEADER_PREFERENCES)
    api.resetHeaderPreferences()
  }

  return (
    <HeaderControlsSettings
      preferences={preferences}
      onToggle={handleToggle}
      onReset={handleReset}
    />
  )
}

Features

Table layout

The component renders a table with:

  • Header Item column: label for the metric
  • Visibility Toggle column: switch to show/hide

Items are defined by HEADER_ITEMS. Labels for the in-app rows (miners, hashrate) are composed from WEBAPP_SHORT_NAME, so they reflect the brand string the foundation kit ships with.

Reset to default

The Reset to Default button calls your onReset callback. You define what "default" means:

import { DEFAULT_HEADER_PREFERENCES } from '@tetherto/mdk-react-devkit/foundation'

const handleReset = () => {
  setPreferences(DEFAULT_HEADER_PREFERENCES)
  api.resetHeaderPreferences()
}

Loading state

When isLoading is true and no preferences are available, a spinner is shown:

<HeaderControlsSettings
  preferences={null}
  isLoading={true}
  onToggle={handleToggle}
  onReset={handleReset}
/>

Styling

The component uses the .mdk-settings-header-controls CSS class. Key selectors:

  • .mdk-settings-header-controls__description: Explanatory text
  • .mdk-settings-header-controls__table: Table container
  • .mdk-settings-header-controls__table-header: Header row
  • .mdk-settings-header-controls__table-row: Data rows
  • .mdk-settings-header-controls__actions: Reset button container

On this page