MDK Logo

Header controls settings

Configure which metrics appear in the global header

The HeaderControlsSettings component manages header visibility preferences. 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.

Import

import { HeaderControlsSettings } from '@mdk/foundation'

Props

PropTypeDefaultDescription
preferencesHeaderPreferencesnoneRequired: Current header visibility preferences
onTogglefunctionnoneRequired: Callback when a toggle changes
onResetfunctionnoneRequired: Callback to reset to defaults
isLoadingbooleanfalseLoading state
classNamestringnoneAdditional CSS class

Data structure

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

import type { HeaderPreferences } from '@mdk/foundation'

type HeaderPreferences = {
  poolMiners: boolean
  mosMiners: boolean
  poolHashrate: boolean
  mosHashrate: 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 '@mdk/foundation'

function HeaderSettingsSection() {
  const [preferences, setPreferences] = useState<HeaderPreferences>({
    poolMiners: true,
    mosMiners: true,
    poolHashrate: true,
    mosHashrate: 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.

Reset to default

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

import { DEFAULT_HEADER_PREFERENCES } from '@mdk/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