@tetherto/mdk-react-devkit 0.0.0 → 0.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENT_READY.md +265 -0
- package/LICENSE +202 -0
- package/README.md +148 -0
- package/dist/domain/components/active-incidents-card/active-incidents-card.example.d.ts +1 -0
- package/dist/domain/components/active-incidents-card/active-incidents-card.example.js +34 -0
- package/dist/domain/components/active-incidents-card/incident-row.d.ts +21 -0
- package/dist/domain/components/active-incidents-card/incident-row.js +11 -0
- package/dist/domain/components/active-incidents-card/incident-severity.d.ts +10 -0
- package/dist/domain/components/active-incidents-card/incident-severity.js +5 -0
- package/dist/domain/components/active-incidents-card/index.d.ts +79 -0
- package/dist/domain/components/active-incidents-card/index.js +47 -0
- package/dist/domain/components/active-incidents-card/types.d.ts +1 -0
- package/dist/domain/components/active-incidents-card/types.js +1 -0
- package/dist/domain/components/alarm/alarm-contents/alarm-contents.d.ts +18 -0
- package/dist/domain/components/alarm/alarm-contents/alarm-contents.example.d.ts +1 -0
- package/dist/domain/components/alarm/alarm-contents/alarm-contents.example.js +29 -0
- package/dist/domain/components/alarm/alarm-contents/alarm-contents.js +20 -0
- package/dist/domain/components/alarm/alarm-row/alarm-row-constants.d.ts +3 -0
- package/dist/domain/components/alarm/alarm-row/alarm-row-constants.js +13 -0
- package/dist/domain/components/alarm/alarm-row/alarm-row.d.ts +34 -0
- package/dist/domain/components/alarm/alarm-row/alarm-row.example.d.ts +1 -0
- package/dist/domain/components/alarm/alarm-row/alarm-row.example.js +16 -0
- package/dist/domain/components/alarm/alarm-row/alarm-row.js +19 -0
- package/dist/domain/components/alarm/alarm.example.d.ts +1 -0
- package/dist/domain/components/alarm/alarm.example.js +44 -0
- package/dist/domain/components/alarm/index.d.ts +2 -0
- package/dist/domain/components/alarm/index.js +2 -0
- package/dist/domain/components/alerts/alerts-table-columns.d.ts +7 -0
- package/dist/domain/components/alerts/alerts-table-columns.js +71 -0
- package/dist/domain/components/alerts/alerts-table-title/alerts-table-title.d.ts +19 -0
- package/dist/domain/components/alerts/alerts-table-title/alerts-table-title.example.d.ts +1 -0
- package/dist/domain/components/alerts/alerts-table-title/alerts-table-title.example.js +3 -0
- package/dist/domain/components/alerts/alerts-table-title/alerts-table-title.js +11 -0
- package/dist/domain/components/alerts/alerts-types.d.ts +53 -0
- package/dist/domain/components/alerts/alerts-types.js +1 -0
- package/dist/domain/components/alerts/alerts-utils.d.ts +35 -0
- package/dist/domain/components/alerts/alerts-utils.js +179 -0
- package/dist/domain/components/alerts/current-alerts/alert-confirmation-modal/alert-confirmation-modal.d.ts +17 -0
- package/dist/domain/components/alerts/current-alerts/alert-confirmation-modal/alert-confirmation-modal.example.d.ts +1 -0
- package/dist/domain/components/alerts/current-alerts/alert-confirmation-modal/alert-confirmation-modal.example.js +10 -0
- package/dist/domain/components/alerts/current-alerts/alert-confirmation-modal/alert-confirmation-modal.js +11 -0
- package/dist/domain/components/alerts/current-alerts/current-alerts.d.ts +77 -0
- package/dist/domain/components/alerts/current-alerts/current-alerts.example.d.ts +1 -0
- package/dist/domain/components/alerts/current-alerts/current-alerts.example.js +37 -0
- package/dist/domain/components/alerts/current-alerts/current-alerts.js +73 -0
- package/dist/domain/components/alerts/historical-alerts/historical-alerts.d.ts +60 -0
- package/dist/domain/components/alerts/historical-alerts/historical-alerts.example.d.ts +1 -0
- package/dist/domain/components/alerts/historical-alerts/historical-alerts.example.js +40 -0
- package/dist/domain/components/alerts/historical-alerts/historical-alerts.js +49 -0
- package/dist/domain/components/alerts/index.d.ts +9 -0
- package/dist/domain/components/alerts/index.js +9 -0
- package/dist/domain/components/alerts/tag-filter-bar/tag-filter-bar.const.d.ts +6 -0
- package/dist/domain/components/alerts/tag-filter-bar/tag-filter-bar.const.js +43 -0
- package/dist/domain/components/alerts/tag-filter-bar/tag-filter-bar.d.ts +32 -0
- package/dist/domain/components/alerts/tag-filter-bar/tag-filter-bar.example.d.ts +1 -0
- package/dist/domain/components/alerts/tag-filter-bar/tag-filter-bar.example.js +3 -0
- package/dist/domain/components/alerts/tag-filter-bar/tag-filter-bar.js +45 -0
- package/dist/domain/components/alerts/tag-filter-bar/type-filter-map.d.ts +15 -0
- package/dist/domain/components/alerts/tag-filter-bar/type-filter-map.js +36 -0
- package/dist/domain/components/auth/index.d.ts +2 -0
- package/dist/domain/components/auth/index.js +2 -0
- package/dist/domain/components/auth/require-auth/index.d.ts +2 -0
- package/dist/domain/components/auth/require-auth/index.js +1 -0
- package/dist/domain/components/auth/require-auth/require-auth.d.ts +25 -0
- package/dist/domain/components/auth/require-auth/require-auth.example.d.ts +1 -0
- package/dist/domain/components/auth/require-auth/require-auth.example.js +11 -0
- package/dist/domain/components/auth/require-auth/require-auth.js +64 -0
- package/dist/domain/components/auth/sign-in-google-button/index.d.ts +2 -0
- package/dist/domain/components/auth/sign-in-google-button/index.js +1 -0
- package/dist/domain/components/auth/sign-in-google-button/sign-in-google-button.d.ts +60 -0
- package/dist/domain/components/auth/sign-in-google-button/sign-in-google-button.example.d.ts +1 -0
- package/dist/domain/components/auth/sign-in-google-button/sign-in-google-button.example.js +9 -0
- package/dist/domain/components/auth/sign-in-google-button/sign-in-google-button.js +36 -0
- package/dist/domain/components/composite/metric-card/index.d.ts +12 -0
- package/dist/domain/components/composite/metric-card/index.js +18 -0
- package/dist/domain/components/composite/metric-card/metric-card-utils.d.ts +2 -0
- package/dist/domain/components/composite/metric-card/metric-card-utils.js +10 -0
- package/dist/domain/components/composite/metric-card/metric-card.example.d.ts +1 -0
- package/dist/domain/components/composite/metric-card/metric-card.example.js +6 -0
- package/dist/domain/components/composite/metric-card/props.d.ts +47 -0
- package/dist/domain/components/composite/metric-card/props.js +1 -0
- package/dist/domain/components/dashboard/dashboard-date-range-picker/dashboard-date-range-picker.d.ts +30 -0
- package/dist/domain/components/dashboard/dashboard-date-range-picker/dashboard-date-range-picker.example.d.ts +1 -0
- package/dist/domain/components/dashboard/dashboard-date-range-picker/dashboard-date-range-picker.example.js +17 -0
- package/dist/domain/components/dashboard/dashboard-date-range-picker/dashboard-date-range-picker.js +29 -0
- package/dist/domain/components/dashboard/dashboard-date-range-picker/index.d.ts +1 -0
- package/dist/domain/components/dashboard/dashboard-date-range-picker/index.js +1 -0
- package/dist/domain/components/dashboard/export-button/export-button.d.ts +32 -0
- package/dist/domain/components/dashboard/export-button/export-button.example.d.ts +1 -0
- package/dist/domain/components/dashboard/export-button/export-button.example.js +11 -0
- package/dist/domain/components/dashboard/export-button/export-button.js +50 -0
- package/dist/domain/components/dashboard/export-button/index.d.ts +1 -0
- package/dist/domain/components/dashboard/export-button/index.js +1 -0
- package/dist/domain/components/dashboard/index.d.ts +5 -0
- package/dist/domain/components/dashboard/index.js +5 -0
- package/dist/domain/components/dashboard/power-mode-timeline-chart/index.d.ts +2 -0
- package/dist/domain/components/dashboard/power-mode-timeline-chart/index.js +2 -0
- package/dist/domain/components/dashboard/power-mode-timeline-chart/power-mode-timeline-chart.d.ts +44 -0
- package/dist/domain/components/dashboard/power-mode-timeline-chart/power-mode-timeline-chart.example.d.ts +1 -0
- package/dist/domain/components/dashboard/power-mode-timeline-chart/power-mode-timeline-chart.example.js +15 -0
- package/dist/domain/components/dashboard/power-mode-timeline-chart/power-mode-timeline-chart.helper.d.ts +35 -0
- package/dist/domain/components/dashboard/power-mode-timeline-chart/power-mode-timeline-chart.helper.js +94 -0
- package/dist/domain/components/dashboard/power-mode-timeline-chart/power-mode-timeline-chart.js +27 -0
- package/dist/domain/components/dashboard/site-stats-bar/index.d.ts +2 -0
- package/dist/domain/components/dashboard/site-stats-bar/index.js +1 -0
- package/dist/domain/components/dashboard/site-stats-bar/site-stats-bar.d.ts +38 -0
- package/dist/domain/components/dashboard/site-stats-bar/site-stats-bar.example.d.ts +1 -0
- package/dist/domain/components/dashboard/site-stats-bar/site-stats-bar.example.js +10 -0
- package/dist/domain/components/dashboard/site-stats-bar/site-stats-bar.js +41 -0
- package/dist/domain/components/dashboard/timeline-selector/index.d.ts +3 -0
- package/dist/domain/components/dashboard/timeline-selector/index.js +2 -0
- package/dist/domain/components/dashboard/timeline-selector/timeline-options.d.ts +21 -0
- package/dist/domain/components/dashboard/timeline-selector/timeline-options.js +29 -0
- package/dist/domain/components/dashboard/timeline-selector/timeline-selector.d.ts +25 -0
- package/dist/domain/components/dashboard/timeline-selector/timeline-selector.example.d.ts +1 -0
- package/dist/domain/components/dashboard/timeline-selector/timeline-selector.example.js +13 -0
- package/dist/domain/components/dashboard/timeline-selector/timeline-selector.js +24 -0
- package/dist/domain/components/data-box/content-box/content-box.d.ts +24 -0
- package/dist/domain/components/data-box/content-box/content-box.js +14 -0
- package/dist/domain/components/data-box/data-row/data-row.d.ts +31 -0
- package/dist/domain/components/data-box/data-row/data-row.js +22 -0
- package/dist/domain/components/data-box/generic-data-box/generic-data-box.d.ts +40 -0
- package/dist/domain/components/data-box/generic-data-box/generic-data-box.example.d.ts +1 -0
- package/dist/domain/components/data-box/generic-data-box/generic-data-box.example.js +7 -0
- package/dist/domain/components/data-box/generic-data-box/generic-data-box.js +27 -0
- package/dist/domain/components/data-box/index.d.ts +1 -0
- package/dist/domain/components/data-box/index.js +1 -0
- package/dist/domain/components/device-explorer/columns/column-constants.d.ts +4 -0
- package/dist/domain/components/device-explorer/columns/column-constants.js +4 -0
- package/dist/domain/components/device-explorer/columns/miner-columns.d.ts +8 -0
- package/dist/domain/components/device-explorer/columns/miner-columns.js +276 -0
- package/dist/domain/components/device-explorer/components/device-card-col-text/device-card-col-text.d.ts +7 -0
- package/dist/domain/components/device-explorer/components/device-card-col-text/device-card-col-text.js +4 -0
- package/dist/domain/components/device-explorer/components/mining-status-indicator/mining-status-indicator.d.ts +14 -0
- package/dist/domain/components/device-explorer/components/mining-status-indicator/mining-status-indicator.js +39 -0
- package/dist/domain/components/device-explorer/components/status-label/status-label.d.ts +6 -0
- package/dist/domain/components/device-explorer/components/status-label/status-label.js +9 -0
- package/dist/domain/components/device-explorer/device-explorer-table.d.ts +18 -0
- package/dist/domain/components/device-explorer/device-explorer-table.js +12 -0
- package/dist/domain/components/device-explorer/device-explorer-toolbar.d.ts +17 -0
- package/dist/domain/components/device-explorer/device-explorer-toolbar.js +6 -0
- package/dist/domain/components/device-explorer/device-explorer.d.ts +47 -0
- package/dist/domain/components/device-explorer/device-explorer.example.d.ts +1 -0
- package/dist/domain/components/device-explorer/device-explorer.example.js +45 -0
- package/dist/domain/components/device-explorer/device-explorer.js +44 -0
- package/dist/domain/components/device-explorer/hooks/use-filter-state.d.ts +10 -0
- package/dist/domain/components/device-explorer/hooks/use-filter-state.js +52 -0
- package/dist/domain/components/device-explorer/hooks/use-get-available-devices.d.ts +11 -0
- package/dist/domain/components/device-explorer/hooks/use-get-available-devices.js +10 -0
- package/dist/domain/components/device-explorer/index.d.ts +4 -0
- package/dist/domain/components/device-explorer/index.js +4 -0
- package/dist/domain/components/device-explorer/types.d.ts +17 -0
- package/dist/domain/components/device-explorer/types.js +1 -0
- package/dist/domain/components/enabled-disable-toggle/enabled-disable-toggle.d.ts +27 -0
- package/dist/domain/components/enabled-disable-toggle/enabled-disable-toggle.example.d.ts +1 -0
- package/dist/domain/components/enabled-disable-toggle/enabled-disable-toggle.example.js +5 -0
- package/dist/domain/components/enabled-disable-toggle/enabled-disable-toggle.js +18 -0
- package/dist/domain/components/header-actions/alarms-bell-button.d.ts +39 -0
- package/dist/domain/components/header-actions/alarms-bell-button.js +37 -0
- package/dist/domain/components/header-actions/header-actions.example.d.ts +5 -0
- package/dist/domain/components/header-actions/header-actions.example.js +14 -0
- package/dist/domain/components/header-actions/index.d.ts +4 -0
- package/dist/domain/components/header-actions/index.js +2 -0
- package/dist/domain/components/header-actions/profile-menu.d.ts +37 -0
- package/dist/domain/components/header-actions/profile-menu.js +14 -0
- package/dist/domain/components/header-stats/header-consumption-box.d.ts +18 -0
- package/dist/domain/components/header-stats/header-consumption-box.js +19 -0
- package/dist/domain/components/header-stats/header-efficiency-box.d.ts +18 -0
- package/dist/domain/components/header-stats/header-efficiency-box.js +19 -0
- package/dist/domain/components/header-stats/header-hashrate-box.d.ts +30 -0
- package/dist/domain/components/header-stats/header-hashrate-box.js +21 -0
- package/dist/domain/components/header-stats/header-miners-box.d.ts +32 -0
- package/dist/domain/components/header-stats/header-miners-box.js +16 -0
- package/dist/domain/components/header-stats/header-stats-bar.d.ts +12 -0
- package/dist/domain/components/header-stats/header-stats-bar.js +22 -0
- package/dist/domain/components/header-stats/header-stats.example.d.ts +5 -0
- package/dist/domain/components/header-stats/header-stats.example.js +11 -0
- package/dist/domain/components/header-stats/index.d.ts +10 -0
- package/dist/domain/components/header-stats/index.js +5 -0
- package/dist/domain/components/index.d.ts +29 -0
- package/dist/domain/components/index.js +29 -0
- package/dist/domain/components/info-container/info-container.d.ts +38 -0
- package/dist/domain/components/info-container/info-container.example.d.ts +1 -0
- package/dist/domain/components/info-container/info-container.example.js +13 -0
- package/dist/domain/components/info-container/info-container.js +37 -0
- package/dist/domain/components/line-chart-card/index.d.ts +43 -0
- package/dist/domain/components/line-chart-card/index.js +111 -0
- package/dist/domain/components/line-chart-card/line-chart-card.example.d.ts +1 -0
- package/dist/domain/components/line-chart-card/line-chart-card.example.js +33 -0
- package/dist/domain/components/line-chart-card/types.d.ts +121 -0
- package/dist/domain/components/line-chart-card/types.js +1 -0
- package/dist/domain/components/miners-activity-chart/miners-activity-chart.const.d.ts +54 -0
- package/dist/domain/components/miners-activity-chart/miners-activity-chart.const.js +68 -0
- package/dist/domain/components/miners-activity-chart/miners-activity-chart.d.ts +69 -0
- package/dist/domain/components/miners-activity-chart/miners-activity-chart.example.d.ts +1 -0
- package/dist/domain/components/miners-activity-chart/miners-activity-chart.example.js +3 -0
- package/dist/domain/components/miners-activity-chart/miners-activity-chart.js +44 -0
- package/dist/domain/components/mining-pools-panel/format.d.ts +7 -0
- package/dist/domain/components/mining-pools-panel/format.js +21 -0
- package/dist/domain/components/mining-pools-panel/index.d.ts +30 -0
- package/dist/domain/components/mining-pools-panel/index.js +38 -0
- package/dist/domain/components/mining-pools-panel/mining-pools-panel.example.d.ts +1 -0
- package/dist/domain/components/mining-pools-panel/mining-pools-panel.example.js +41 -0
- package/dist/domain/components/mining-pools-panel/types.d.ts +56 -0
- package/dist/domain/components/mining-pools-panel/types.js +1 -0
- package/dist/domain/components/pool-details-card/index.d.ts +56 -0
- package/dist/domain/components/pool-details-card/index.js +29 -0
- package/dist/domain/components/pool-details-card/pool-details-card.example.d.ts +1 -0
- package/dist/domain/components/pool-details-card/pool-details-card.example.js +15 -0
- package/dist/domain/components/pool-details-popover/index.d.ts +43 -0
- package/dist/domain/components/pool-details-popover/index.js +33 -0
- package/dist/domain/components/pool-details-popover/pool-details-popover.example.d.ts +1 -0
- package/dist/domain/components/pool-details-popover/pool-details-popover.example.js +13 -0
- package/dist/domain/components/settings/add-user-modal/add-user-modal.d.ts +30 -0
- package/dist/domain/components/settings/add-user-modal/add-user-modal.example.d.ts +1 -0
- package/dist/domain/components/settings/add-user-modal/add-user-modal.example.js +15 -0
- package/dist/domain/components/settings/add-user-modal/add-user-modal.js +34 -0
- package/dist/domain/components/settings/add-user-modal/index.d.ts +2 -0
- package/dist/domain/components/settings/add-user-modal/index.js +1 -0
- package/dist/domain/components/settings/change-confirmation-modal/change-confirmation-modal.d.ts +32 -0
- package/dist/domain/components/settings/change-confirmation-modal/change-confirmation-modal.example.d.ts +1 -0
- package/dist/domain/components/settings/change-confirmation-modal/change-confirmation-modal.example.js +10 -0
- package/dist/domain/components/settings/change-confirmation-modal/change-confirmation-modal.js +11 -0
- package/dist/domain/components/settings/change-confirmation-modal/index.d.ts +2 -0
- package/dist/domain/components/settings/change-confirmation-modal/index.js +1 -0
- package/dist/domain/components/settings/feature-flags/feature-flags-settings.d.ts +30 -0
- package/dist/domain/components/settings/feature-flags/feature-flags-settings.example.d.ts +1 -0
- package/dist/domain/components/settings/feature-flags/feature-flags-settings.example.js +3 -0
- package/dist/domain/components/settings/feature-flags/feature-flags-settings.js +42 -0
- package/dist/domain/components/settings/feature-flags/index.d.ts +2 -0
- package/dist/domain/components/settings/feature-flags/index.js +1 -0
- package/dist/domain/components/settings/header-controls/header-controls-settings.d.ts +26 -0
- package/dist/domain/components/settings/header-controls/header-controls-settings.example.d.ts +1 -0
- package/dist/domain/components/settings/header-controls/header-controls-settings.example.js +3 -0
- package/dist/domain/components/settings/header-controls/header-controls-settings.js +16 -0
- package/dist/domain/components/settings/header-controls/index.d.ts +3 -0
- package/dist/domain/components/settings/header-controls/index.js +2 -0
- package/dist/domain/components/settings/header-controls/use-header-controls.d.ts +23 -0
- package/dist/domain/components/settings/header-controls/use-header-controls.js +34 -0
- package/dist/domain/components/settings/import-export/import-export-settings.d.ts +31 -0
- package/dist/domain/components/settings/import-export/import-export-settings.example.d.ts +1 -0
- package/dist/domain/components/settings/import-export/import-export-settings.example.js +3 -0
- package/dist/domain/components/settings/import-export/import-export-settings.js +55 -0
- package/dist/domain/components/settings/import-export/index.d.ts +2 -0
- package/dist/domain/components/settings/import-export/index.js +1 -0
- package/dist/domain/components/settings/index.d.ts +8 -0
- package/dist/domain/components/settings/index.js +8 -0
- package/dist/domain/components/settings/manage-user-modal/index.d.ts +2 -0
- package/dist/domain/components/settings/manage-user-modal/index.js +1 -0
- package/dist/domain/components/settings/manage-user-modal/manage-user-modal.d.ts +37 -0
- package/dist/domain/components/settings/manage-user-modal/manage-user-modal.example.d.ts +1 -0
- package/dist/domain/components/settings/manage-user-modal/manage-user-modal.example.js +15 -0
- package/dist/domain/components/settings/manage-user-modal/manage-user-modal.js +65 -0
- package/dist/domain/components/settings/rbac-control/index.d.ts +2 -0
- package/dist/domain/components/settings/rbac-control/index.js +1 -0
- package/dist/domain/components/settings/rbac-control/rbac-control-settings.d.ts +45 -0
- package/dist/domain/components/settings/rbac-control/rbac-control-settings.example.d.ts +1 -0
- package/dist/domain/components/settings/rbac-control/rbac-control-settings.example.js +17 -0
- package/dist/domain/components/settings/rbac-control/rbac-control-settings.js +63 -0
- package/dist/domain/components/settings/settings-dashboard/index.d.ts +2 -0
- package/dist/domain/components/settings/settings-dashboard/index.js +1 -0
- package/dist/domain/components/settings/settings-dashboard/settings-dashboard.d.ts +34 -0
- package/dist/domain/components/settings/settings-dashboard/settings-dashboard.example.d.ts +1 -0
- package/dist/domain/components/settings/settings-dashboard/settings-dashboard.example.js +3 -0
- package/dist/domain/components/settings/settings-dashboard/settings-dashboard.js +15 -0
- package/dist/domain/components/stat-cards/index.d.ts +2 -0
- package/dist/domain/components/stat-cards/index.js +2 -0
- package/dist/domain/components/stat-cards/miner-metric-card/miner-metric-card.d.ts +49 -0
- package/dist/domain/components/stat-cards/miner-metric-card/miner-metric-card.example.d.ts +1 -0
- package/dist/domain/components/stat-cards/miner-metric-card/miner-metric-card.example.js +9 -0
- package/dist/domain/components/stat-cards/miner-metric-card/miner-metric-card.js +63 -0
- package/dist/domain/components/stat-cards/single-stat-card/single-stat-card.d.ts +69 -0
- package/dist/domain/components/stat-cards/single-stat-card/single-stat-card.example.d.ts +1 -0
- package/dist/domain/components/stat-cards/single-stat-card/single-stat-card.example.js +3 -0
- package/dist/domain/components/stat-cards/single-stat-card/single-stat-card.js +26 -0
- package/dist/domain/components/timeframe/report-time-frame-selector/index.d.ts +4 -0
- package/dist/domain/components/timeframe/report-time-frame-selector/index.js +2 -0
- package/dist/domain/components/timeframe/report-time-frame-selector/report-time-frame-selector.d.ts +12 -0
- package/dist/domain/components/timeframe/report-time-frame-selector/report-time-frame-selector.example.d.ts +1 -0
- package/dist/domain/components/timeframe/report-time-frame-selector/report-time-frame-selector.example.js +9 -0
- package/dist/domain/components/timeframe/report-time-frame-selector/report-time-frame-selector.js +30 -0
- package/dist/domain/components/timeframe/report-time-frame-selector/use-report-time-frame-selector-state.d.ts +21 -0
- package/dist/domain/components/timeframe/report-time-frame-selector/use-report-time-frame-selector-state.js +28 -0
- package/dist/domain/components/timeframe/timeframe-controls/index.d.ts +5 -0
- package/dist/domain/components/timeframe/timeframe-controls/index.js +5 -0
- package/dist/domain/components/timeframe/timeframe-controls/timeframe-controls-week-content.d.ts +27 -0
- package/dist/domain/components/timeframe/timeframe-controls/timeframe-controls-week-content.example.d.ts +1 -0
- package/dist/domain/components/timeframe/timeframe-controls/timeframe-controls-week-content.example.js +3 -0
- package/dist/domain/components/timeframe/timeframe-controls/timeframe-controls-week-content.js +21 -0
- package/dist/domain/components/timeframe/timeframe-controls/timeframe-controls.d.ts +12 -0
- package/dist/domain/components/timeframe/timeframe-controls/timeframe-controls.example.d.ts +1 -0
- package/dist/domain/components/timeframe/timeframe-controls/timeframe-controls.example.js +3 -0
- package/dist/domain/components/timeframe/timeframe-controls/timeframe-controls.helper.d.ts +66 -0
- package/dist/domain/components/timeframe/timeframe-controls/timeframe-controls.helper.js +193 -0
- package/dist/domain/components/timeframe/timeframe-controls/timeframe-controls.js +27 -0
- package/dist/domain/components/timeframe/timeframe-controls/timeframe-controls.types.d.ts +61 -0
- package/dist/domain/components/timeframe/timeframe-controls/timeframe-controls.types.js +1 -0
- package/dist/domain/components/timeframe/timeframe-controls/use-timeframe-controls.d.ts +37 -0
- package/dist/domain/components/timeframe/timeframe-controls/use-timeframe-controls.js +184 -0
- package/dist/domain/components/timeframe/use-financial-date-range.d.ts +39 -0
- package/dist/domain/components/timeframe/use-financial-date-range.example.d.ts +1 -0
- package/dist/domain/components/timeframe/use-financial-date-range.example.js +7 -0
- package/dist/domain/components/timeframe/use-financial-date-range.js +131 -0
- package/dist/domain/components/timeline-chart/index.d.ts +2 -0
- package/dist/domain/components/timeline-chart/index.js +2 -0
- package/dist/domain/components/timeline-chart/timeline-bar.d.ts +10 -0
- package/dist/domain/components/timeline-chart/timeline-bar.js +19 -0
- package/dist/domain/components/timeline-chart/timeline-chart.d.ts +24 -0
- package/dist/domain/components/timeline-chart/timeline-chart.example.d.ts +1 -0
- package/dist/domain/components/timeline-chart/timeline-chart.example.js +26 -0
- package/dist/domain/components/timeline-chart/timeline-chart.js +47 -0
- package/dist/domain/components/timeline-chart/timeline-chart.types.d.ts +56 -0
- package/dist/domain/components/timeline-chart/timeline-chart.types.js +1 -0
- package/dist/domain/components/timeline-chart/timeline-legend.d.ts +5 -0
- package/dist/domain/components/timeline-chart/timeline-legend.js +21 -0
- package/dist/domain/components/timeline-chart/timeline-row.d.ts +8 -0
- package/dist/domain/components/timeline-chart/timeline-row.js +28 -0
- package/dist/domain/components/timeline-chart/timeline-visualization.d.ts +7 -0
- package/dist/domain/components/timeline-chart/timeline-visualization.js +47 -0
- package/dist/domain/components/widget-top-row/alarm-info.d.ts +12 -0
- package/dist/domain/components/widget-top-row/alarm-info.js +18 -0
- package/dist/domain/components/widget-top-row/index.d.ts +30 -0
- package/dist/domain/components/widget-top-row/index.js +31 -0
- package/dist/domain/components/widget-top-row/widget-top-row.example.d.ts +1 -0
- package/dist/domain/components/widget-top-row/widget-top-row.example.js +21 -0
- package/dist/domain/constants/actions.d.ts +30 -0
- package/dist/domain/constants/actions.js +37 -0
- package/dist/domain/constants/alerts.d.ts +26 -0
- package/dist/domain/constants/alerts.js +22 -0
- package/dist/domain/constants/charts.d.ts +20 -0
- package/dist/domain/constants/charts.js +20 -0
- package/dist/domain/constants/constants.types.d.ts +10 -0
- package/dist/domain/constants/constants.types.js +1 -0
- package/dist/domain/constants/container-constants.d.ts +11 -0
- package/dist/domain/constants/container-constants.js +10 -0
- package/dist/domain/constants/dates.d.ts +5 -0
- package/dist/domain/constants/dates.js +4 -0
- package/dist/domain/constants/device-constants.d.ts +11 -0
- package/dist/domain/constants/device-constants.js +10 -0
- package/dist/domain/constants/devices.d.ts +8 -0
- package/dist/domain/constants/devices.js +6 -0
- package/dist/domain/constants/header-controls.constants.d.ts +29 -0
- package/dist/domain/constants/header-controls.constants.js +18 -0
- package/dist/domain/constants/index.d.ts +35 -0
- package/dist/domain/constants/index.js +29 -0
- package/dist/domain/constants/miner-constants.d.ts +35 -0
- package/dist/domain/constants/miner-constants.js +23 -0
- package/dist/domain/constants/ranges.d.ts +15 -0
- package/dist/domain/constants/ranges.js +11 -0
- package/dist/domain/constants/role-colors.constants.d.ts +6 -0
- package/dist/domain/constants/role-colors.constants.js +16 -0
- package/dist/domain/constants/settings.constants.d.ts +5 -0
- package/dist/domain/constants/settings.constants.js +5 -0
- package/dist/domain/index.d.ts +30 -0
- package/dist/domain/index.js +29 -0
- package/dist/domain/types/alerts.d.ts +11 -0
- package/dist/domain/types/alerts.js +1 -0
- package/dist/domain/types/device.d.ts +99 -0
- package/dist/domain/types/device.js +1 -0
- package/dist/domain/types/index.d.ts +3 -0
- package/dist/domain/types/index.js +2 -0
- package/dist/domain/types/miner.d.ts +15 -0
- package/dist/domain/types/miner.js +1 -0
- package/dist/domain/utils/chart-data-check.d.ts +77 -0
- package/dist/domain/utils/chart-data-check.js +79 -0
- package/dist/domain/utils/container-utils.d.ts +1 -0
- package/dist/domain/utils/container-utils.js +58 -0
- package/dist/domain/utils/device-utils.d.ts +46 -0
- package/dist/domain/utils/device-utils.js +164 -0
- package/dist/domain/utils/list-view-utils.d.ts +5 -0
- package/dist/domain/utils/list-view-utils.js +1 -0
- package/dist/domain/utils/notification-utils.d.ts +26 -0
- package/dist/domain/utils/notification-utils.js +91 -0
- package/dist/domain/utils/status-utils.d.ts +19 -0
- package/dist/domain/utils/status-utils.js +18 -0
- package/dist/domain/utils/use-notification.d.ts +39 -0
- package/dist/domain/utils/use-notification.js +53 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.js +20 -0
- package/dist/primitives/components/accordion/accordion.example.d.ts +1 -0
- package/dist/primitives/components/accordion/accordion.example.js +6 -0
- package/dist/primitives/components/accordion/index.d.ts +116 -0
- package/dist/primitives/components/accordion/index.js +94 -0
- package/dist/primitives/components/action-button/action-button.example.d.ts +1 -0
- package/dist/primitives/components/action-button/action-button.example.js +17 -0
- package/dist/primitives/components/action-button/index.d.ts +83 -0
- package/dist/primitives/components/action-button/index.js +55 -0
- package/dist/primitives/components/alert/alert.example.d.ts +1 -0
- package/dist/primitives/components/alert/alert.example.js +6 -0
- package/dist/primitives/components/alert/index.d.ts +52 -0
- package/dist/primitives/components/alert/index.js +35 -0
- package/dist/primitives/components/alert-dialog/alert-dialog.example.d.ts +1 -0
- package/dist/primitives/components/alert-dialog/alert-dialog.example.js +6 -0
- package/dist/primitives/components/alert-dialog/index.d.ts +62 -0
- package/dist/primitives/components/alert-dialog/index.js +84 -0
- package/dist/primitives/components/app-header/app-header.d.ts +23 -0
- package/dist/primitives/components/app-header/app-header.example.d.ts +5 -0
- package/dist/primitives/components/app-header/app-header.example.js +7 -0
- package/dist/primitives/components/app-header/app-header.js +25 -0
- package/dist/primitives/components/app-header/index.d.ts +2 -0
- package/dist/primitives/components/app-header/index.js +1 -0
- package/dist/primitives/components/area-chart/area-canvas.d.ts +9 -0
- package/dist/primitives/components/area-chart/area-canvas.js +11 -0
- package/dist/primitives/components/area-chart/area-chart.example.d.ts +1 -0
- package/dist/primitives/components/area-chart/area-chart.example.js +19 -0
- package/dist/primitives/components/area-chart/index.d.ts +31 -0
- package/dist/primitives/components/area-chart/index.js +51 -0
- package/dist/primitives/components/avatar/avatar.example.d.ts +1 -0
- package/dist/primitives/components/avatar/avatar.example.js +6 -0
- package/dist/primitives/components/avatar/index.d.ts +23 -0
- package/dist/primitives/components/avatar/index.js +29 -0
- package/dist/primitives/components/average-downtime-chart/average-downtime-chart.example.d.ts +1 -0
- package/dist/primitives/components/average-downtime-chart/average-downtime-chart.example.js +7 -0
- package/dist/primitives/components/average-downtime-chart/constants.d.ts +17 -0
- package/dist/primitives/components/average-downtime-chart/constants.js +19 -0
- package/dist/primitives/components/average-downtime-chart/index.d.ts +23 -0
- package/dist/primitives/components/average-downtime-chart/index.js +34 -0
- package/dist/primitives/components/average-downtime-chart/types.d.ts +51 -0
- package/dist/primitives/components/average-downtime-chart/types.js +1 -0
- package/dist/primitives/components/average-downtime-chart/utils.d.ts +39 -0
- package/dist/primitives/components/average-downtime-chart/utils.js +65 -0
- package/dist/primitives/components/badge/badge.example.d.ts +1 -0
- package/dist/primitives/components/badge/badge.example.js +6 -0
- package/dist/primitives/components/badge/index.d.ts +135 -0
- package/dist/primitives/components/badge/index.js +106 -0
- package/dist/primitives/components/bar-chart/bar-canvas.d.ts +11 -0
- package/dist/primitives/components/bar-chart/bar-canvas.js +16 -0
- package/dist/primitives/components/bar-chart/bar-chart.example.d.ts +1 -0
- package/dist/primitives/components/bar-chart/bar-chart.example.js +28 -0
- package/dist/primitives/components/bar-chart/index.d.ts +60 -0
- package/dist/primitives/components/bar-chart/index.js +156 -0
- package/dist/primitives/components/breadcrumbs/breadcrumbs.example.d.ts +1 -0
- package/dist/primitives/components/breadcrumbs/breadcrumbs.example.js +10 -0
- package/dist/primitives/components/breadcrumbs/index.d.ts +48 -0
- package/dist/primitives/components/breadcrumbs/index.js +34 -0
- package/dist/primitives/components/btc-average-price/btc-average-price.example.d.ts +1 -0
- package/dist/primitives/components/btc-average-price/btc-average-price.example.js +6 -0
- package/dist/primitives/components/btc-average-price/constants.d.ts +4 -0
- package/dist/primitives/components/btc-average-price/constants.js +4 -0
- package/dist/primitives/components/btc-average-price/index.d.ts +24 -0
- package/dist/primitives/components/btc-average-price/index.js +15 -0
- package/dist/primitives/components/btc-average-price/utils.d.ts +1 -0
- package/dist/primitives/components/btc-average-price/utils.js +7 -0
- package/dist/primitives/components/button/button.example.d.ts +1 -0
- package/dist/primitives/components/button/button.example.js +6 -0
- package/dist/primitives/components/button/index.d.ts +98 -0
- package/dist/primitives/components/button/index.js +29 -0
- package/dist/primitives/components/card/card.example.d.ts +1 -0
- package/dist/primitives/components/card/card.example.js +6 -0
- package/dist/primitives/components/card/index.d.ts +40 -0
- package/dist/primitives/components/card/index.js +105 -0
- package/dist/primitives/components/cascader/cascader.example.d.ts +1 -0
- package/dist/primitives/components/cascader/cascader.example.js +33 -0
- package/dist/primitives/components/cascader/index.d.ts +197 -0
- package/dist/primitives/components/cascader/index.js +395 -0
- package/dist/primitives/components/chart-container/chart-container.example.d.ts +1 -0
- package/dist/primitives/components/chart-container/chart-container.example.js +29 -0
- package/dist/primitives/components/chart-container/index.d.ts +111 -0
- package/dist/primitives/components/chart-container/index.js +60 -0
- package/dist/primitives/components/chart-stats-footer/chart-stats-footer.example.d.ts +1 -0
- package/dist/primitives/components/chart-stats-footer/chart-stats-footer.example.js +14 -0
- package/dist/primitives/components/chart-stats-footer/index.d.ts +6 -0
- package/dist/primitives/components/chart-stats-footer/index.js +31 -0
- package/dist/primitives/components/chart-stats-footer/types.d.ts +28 -0
- package/dist/primitives/components/chart-stats-footer/types.js +1 -0
- package/dist/primitives/components/checkbox/checkbox.example.d.ts +1 -0
- package/dist/primitives/components/checkbox/checkbox.example.js +10 -0
- package/dist/primitives/components/checkbox/index.d.ts +94 -0
- package/dist/primitives/components/checkbox/index.js +18 -0
- package/dist/primitives/components/currency-toggler/currency-toggler.example.d.ts +1 -0
- package/dist/primitives/components/currency-toggler/currency-toggler.example.js +15 -0
- package/dist/primitives/components/currency-toggler/index.d.ts +48 -0
- package/dist/primitives/components/currency-toggler/index.js +38 -0
- package/dist/primitives/components/data-label/constants.d.ts +8 -0
- package/dist/primitives/components/data-label/constants.js +8 -0
- package/dist/primitives/components/data-label/data-label.example.d.ts +1 -0
- package/dist/primitives/components/data-label/data-label.example.js +10 -0
- package/dist/primitives/components/data-label/index.d.ts +34 -0
- package/dist/primitives/components/data-label/index.js +27 -0
- package/dist/primitives/components/data-table/data-table-body.d.ts +16 -0
- package/dist/primitives/components/data-table/data-table-body.js +44 -0
- package/dist/primitives/components/data-table/data-table-cell-align.d.ts +3 -0
- package/dist/primitives/components/data-table/data-table-cell-align.js +5 -0
- package/dist/primitives/components/data-table/data-table-header.d.ts +7 -0
- package/dist/primitives/components/data-table/data-table-header.js +27 -0
- package/dist/primitives/components/data-table/data-table.constants.d.ts +4 -0
- package/dist/primitives/components/data-table/data-table.constants.js +4 -0
- package/dist/primitives/components/data-table/data-table.d.ts +139 -0
- package/dist/primitives/components/data-table/data-table.example.d.ts +1 -0
- package/dist/primitives/components/data-table/data-table.example.js +16 -0
- package/dist/primitives/components/data-table/data-table.js +154 -0
- package/dist/primitives/components/data-table/index.d.ts +2 -0
- package/dist/primitives/components/data-table/index.js +2 -0
- package/dist/primitives/components/data-table/types.d.ts +1 -0
- package/dist/primitives/components/data-table/types.js +1 -0
- package/dist/primitives/components/date-picker/date-picker.example.d.ts +1 -0
- package/dist/primitives/components/date-picker/date-picker.example.js +11 -0
- package/dist/primitives/components/date-picker/index.d.ts +209 -0
- package/dist/primitives/components/date-picker/index.js +129 -0
- package/dist/primitives/components/detail-legend/detail-legend.example.d.ts +1 -0
- package/dist/primitives/components/detail-legend/detail-legend.example.js +34 -0
- package/dist/primitives/components/detail-legend/index.d.ts +6 -0
- package/dist/primitives/components/detail-legend/index.js +48 -0
- package/dist/primitives/components/detail-legend/types.d.ts +26 -0
- package/dist/primitives/components/detail-legend/types.js +1 -0
- package/dist/primitives/components/dialog/dialog.example.d.ts +1 -0
- package/dist/primitives/components/dialog/dialog.example.js +10 -0
- package/dist/primitives/components/dialog/index.d.ts +86 -0
- package/dist/primitives/components/dialog/index.js +82 -0
- package/dist/primitives/components/divider/divider.example.d.ts +1 -0
- package/dist/primitives/components/divider/divider.example.js +6 -0
- package/dist/primitives/components/divider/index.d.ts +42 -0
- package/dist/primitives/components/divider/index.js +18 -0
- package/dist/primitives/components/doughnut-chart/doughnut-canvas.d.ts +6 -0
- package/dist/primitives/components/doughnut-chart/doughnut-canvas.js +11 -0
- package/dist/primitives/components/doughnut-chart/doughnut-chart.example.d.ts +1 -0
- package/dist/primitives/components/doughnut-chart/doughnut-chart.example.js +17 -0
- package/dist/primitives/components/doughnut-chart/index.d.ts +70 -0
- package/dist/primitives/components/doughnut-chart/index.js +106 -0
- package/dist/primitives/components/dropdown-menu/dropdown-menu.example.d.ts +1 -0
- package/dist/primitives/components/dropdown-menu/dropdown-menu.example.js +11 -0
- package/dist/primitives/components/dropdown-menu/index.d.ts +72 -0
- package/dist/primitives/components/dropdown-menu/index.js +67 -0
- package/dist/primitives/components/empty-state/empty-state.example.d.ts +1 -0
- package/dist/primitives/components/empty-state/empty-state.example.js +6 -0
- package/dist/primitives/components/empty-state/index.d.ts +40 -0
- package/dist/primitives/components/empty-state/index.js +37 -0
- package/dist/primitives/components/error-boundary/error-boundary.example.d.ts +1 -0
- package/dist/primitives/components/error-boundary/error-boundary.example.js +18 -0
- package/dist/primitives/components/error-boundary/index.d.ts +58 -0
- package/dist/primitives/components/error-boundary/index.js +58 -0
- package/dist/primitives/components/error-card/error-card.example.d.ts +1 -0
- package/dist/primitives/components/error-card/error-card.example.js +6 -0
- package/dist/primitives/components/error-card/index.d.ts +35 -0
- package/dist/primitives/components/error-card/index.js +21 -0
- package/dist/primitives/components/form/form-fields.d.ts +270 -0
- package/dist/primitives/components/form/form-fields.js +226 -0
- package/dist/primitives/components/form/form-hooks.d.ts +50 -0
- package/dist/primitives/components/form/form-hooks.js +35 -0
- package/dist/primitives/components/form/form-utils.d.ts +215 -0
- package/dist/primitives/components/form/form-utils.js +286 -0
- package/dist/primitives/components/form/form.example.d.ts +1 -0
- package/dist/primitives/components/form/form.example.js +23 -0
- package/dist/primitives/components/form/index.d.ts +116 -0
- package/dist/primitives/components/form/index.js +128 -0
- package/dist/primitives/components/gauge-chart/constants.d.ts +20 -0
- package/dist/primitives/components/gauge-chart/constants.js +21 -0
- package/dist/primitives/components/gauge-chart/gauge-chart.example.d.ts +1 -0
- package/dist/primitives/components/gauge-chart/gauge-chart.example.js +6 -0
- package/dist/primitives/components/gauge-chart/gauge-svg.d.ts +3 -0
- package/dist/primitives/components/gauge-chart/gauge-svg.js +59 -0
- package/dist/primitives/components/gauge-chart/index.d.ts +75 -0
- package/dist/primitives/components/gauge-chart/index.js +28 -0
- package/dist/primitives/components/gauge-chart/types.d.ts +25 -0
- package/dist/primitives/components/gauge-chart/types.js +1 -0
- package/dist/primitives/components/gauge-chart/utils.d.ts +14 -0
- package/dist/primitives/components/gauge-chart/utils.js +86 -0
- package/dist/primitives/components/heatmap/heatmap-legend.d.ts +5 -0
- package/dist/primitives/components/heatmap/heatmap-legend.js +20 -0
- package/dist/primitives/components/heatmap/heatmap.example.d.ts +1 -0
- package/dist/primitives/components/heatmap/heatmap.example.js +11 -0
- package/dist/primitives/components/heatmap/index.d.ts +28 -0
- package/dist/primitives/components/heatmap/index.js +50 -0
- package/dist/primitives/components/heatmap/types.d.ts +78 -0
- package/dist/primitives/components/heatmap/types.js +1 -0
- package/dist/primitives/components/heatmap/utils.d.ts +9 -0
- package/dist/primitives/components/heatmap/utils.js +22 -0
- package/dist/primitives/components/icons/actions-tick-icon.d.ts +5 -0
- package/dist/primitives/components/icons/actions-tick-icon.js +9 -0
- package/dist/primitives/components/icons/alert-triangle-icon.d.ts +5 -0
- package/dist/primitives/components/icons/alert-triangle-icon.js +9 -0
- package/dist/primitives/components/icons/alerts-nav-icon.d.ts +5 -0
- package/dist/primitives/components/icons/alerts-nav-icon.js +9 -0
- package/dist/primitives/components/icons/arrow-icon.d.ts +18 -0
- package/dist/primitives/components/icons/arrow-icon.js +24 -0
- package/dist/primitives/components/icons/btc-card-icon.d.ts +5 -0
- package/dist/primitives/components/icons/btc-card-icon.js +10 -0
- package/dist/primitives/components/icons/cabinet-widget-nav-icon.d.ts +5 -0
- package/dist/primitives/components/icons/cabinet-widget-nav-icon.js +9 -0
- package/dist/primitives/components/icons/cloudy-icon.d.ts +5 -0
- package/dist/primitives/components/icons/cloudy-icon.js +10 -0
- package/dist/primitives/components/icons/comment-icon-common.d.ts +5 -0
- package/dist/primitives/components/icons/comment-icon-common.js +10 -0
- package/dist/primitives/components/icons/comment-icon.d.ts +5 -0
- package/dist/primitives/components/icons/comment-icon.js +9 -0
- package/dist/primitives/components/icons/consumption-icon.d.ts +5 -0
- package/dist/primitives/components/icons/consumption-icon.js +9 -0
- package/dist/primitives/components/icons/container-widgets-nav-icon.d.ts +5 -0
- package/dist/primitives/components/icons/container-widgets-nav-icon.js +9 -0
- package/dist/primitives/components/icons/cooling-drop-icon.d.ts +5 -0
- package/dist/primitives/components/icons/cooling-drop-icon.js +9 -0
- package/dist/primitives/components/icons/create-icon.d.ts +3 -0
- package/dist/primitives/components/icons/create-icon.js +13 -0
- package/dist/primitives/components/icons/dashboard-nav-icon.d.ts +5 -0
- package/dist/primitives/components/icons/dashboard-nav-icon.js +9 -0
- package/dist/primitives/components/icons/decrease-icon.d.ts +5 -0
- package/dist/primitives/components/icons/decrease-icon.js +9 -0
- package/dist/primitives/components/icons/efficiency-icon.d.ts +5 -0
- package/dist/primitives/components/icons/efficiency-icon.js +9 -0
- package/dist/primitives/components/icons/error-icon.d.ts +3 -0
- package/dist/primitives/components/icons/error-icon.js +2 -0
- package/dist/primitives/components/icons/error-status-icon.d.ts +5 -0
- package/dist/primitives/components/icons/error-status-icon.js +9 -0
- package/dist/primitives/components/icons/explorer-nav-icon.d.ts +5 -0
- package/dist/primitives/components/icons/explorer-nav-icon.js +9 -0
- package/dist/primitives/components/icons/export-icon.d.ts +5 -0
- package/dist/primitives/components/icons/export-icon.js +9 -0
- package/dist/primitives/components/icons/fan-icon.d.ts +5 -0
- package/dist/primitives/components/icons/fan-icon.js +10 -0
- package/dist/primitives/components/icons/farm-alert-icon.d.ts +5 -0
- package/dist/primitives/components/icons/farm-alert-icon.js +9 -0
- package/dist/primitives/components/icons/farm-star-icon.d.ts +5 -0
- package/dist/primitives/components/icons/farm-star-icon.js +9 -0
- package/dist/primitives/components/icons/farms-nav-icon.d.ts +5 -0
- package/dist/primitives/components/icons/farms-nav-icon.js +9 -0
- package/dist/primitives/components/icons/financials-nav-icon.d.ts +5 -0
- package/dist/primitives/components/icons/financials-nav-icon.js +9 -0
- package/dist/primitives/components/icons/fluid-alarm-icon.d.ts +5 -0
- package/dist/primitives/components/icons/fluid-alarm-icon.js +10 -0
- package/dist/primitives/components/icons/frequency-icon.d.ts +5 -0
- package/dist/primitives/components/icons/frequency-icon.js +9 -0
- package/dist/primitives/components/icons/google-icon.d.ts +5 -0
- package/dist/primitives/components/icons/google-icon.js +10 -0
- package/dist/primitives/components/icons/hashrate-card-icon.d.ts +5 -0
- package/dist/primitives/components/icons/hashrate-card-icon.js +9 -0
- package/dist/primitives/components/icons/hashrate-stat-icon.d.ts +5 -0
- package/dist/primitives/components/icons/hashrate-stat-icon.js +9 -0
- package/dist/primitives/components/icons/header-stat-divider-icon.d.ts +18 -0
- package/dist/primitives/components/icons/header-stat-divider-icon.js +22 -0
- package/dist/primitives/components/icons/icons.example.d.ts +1 -0
- package/dist/primitives/components/icons/icons.example.js +8 -0
- package/dist/primitives/components/icons/increase-icon.d.ts +5 -0
- package/dist/primitives/components/icons/increase-icon.js +9 -0
- package/dist/primitives/components/icons/index.d.ts +78 -0
- package/dist/primitives/components/icons/index.js +87 -0
- package/dist/primitives/components/icons/inventory-nav-icon.d.ts +5 -0
- package/dist/primitives/components/icons/inventory-nav-icon.js +9 -0
- package/dist/primitives/components/icons/live-icon.d.ts +5 -0
- package/dist/primitives/components/icons/live-icon.js +10 -0
- package/dist/primitives/components/icons/menu-icon.d.ts +5 -0
- package/dist/primitives/components/icons/menu-icon.js +9 -0
- package/dist/primitives/components/icons/miner-explorer-icon.d.ts +5 -0
- package/dist/primitives/components/icons/miner-explorer-icon.js +9 -0
- package/dist/primitives/components/icons/miner-overview-icon.d.ts +5 -0
- package/dist/primitives/components/icons/miner-overview-icon.js +9 -0
- package/dist/primitives/components/icons/miners-overview-nav-icon.d.ts +5 -0
- package/dist/primitives/components/icons/miners-overview-nav-icon.js +9 -0
- package/dist/primitives/components/icons/miners-stat-icon.d.ts +5 -0
- package/dist/primitives/components/icons/miners-stat-icon.js +9 -0
- package/dist/primitives/components/icons/mining-icon.d.ts +3 -0
- package/dist/primitives/components/icons/mining-icon.js +2 -0
- package/dist/primitives/components/icons/mining-status-icon.d.ts +5 -0
- package/dist/primitives/components/icons/mining-status-icon.js +10 -0
- package/dist/primitives/components/icons/mode-icon.d.ts +5 -0
- package/dist/primitives/components/icons/mode-icon.js +9 -0
- package/dist/primitives/components/icons/notification-bell-icon.d.ts +5 -0
- package/dist/primitives/components/icons/notification-bell-icon.js +9 -0
- package/dist/primitives/components/icons/offline-alarm-icon.d.ts +5 -0
- package/dist/primitives/components/icons/offline-alarm-icon.js +9 -0
- package/dist/primitives/components/icons/offline-icon.d.ts +11 -0
- package/dist/primitives/components/icons/offline-icon.js +10 -0
- package/dist/primitives/components/icons/offline-status-icon.d.ts +5 -0
- package/dist/primitives/components/icons/offline-status-icon.js +9 -0
- package/dist/primitives/components/icons/operations-nav-icon.d.ts +5 -0
- package/dist/primitives/components/icons/operations-nav-icon.js +9 -0
- package/dist/primitives/components/icons/other-alarm-icon.d.ts +5 -0
- package/dist/primitives/components/icons/other-alarm-icon.js +10 -0
- package/dist/primitives/components/icons/partly-cloudy-icon.d.ts +5 -0
- package/dist/primitives/components/icons/partly-cloudy-icon.js +10 -0
- package/dist/primitives/components/icons/pin-icon.d.ts +5 -0
- package/dist/primitives/components/icons/pin-icon.js +9 -0
- package/dist/primitives/components/icons/pool-manager-nav-icon.d.ts +5 -0
- package/dist/primitives/components/icons/pool-manager-nav-icon.js +9 -0
- package/dist/primitives/components/icons/pools-icon.d.ts +5 -0
- package/dist/primitives/components/icons/pools-icon.js +9 -0
- package/dist/primitives/components/icons/power-icon.d.ts +5 -0
- package/dist/primitives/components/icons/power-icon.js +9 -0
- package/dist/primitives/components/icons/pressure-alarm-icon.d.ts +5 -0
- package/dist/primitives/components/icons/pressure-alarm-icon.js +10 -0
- package/dist/primitives/components/icons/production-data-icon.d.ts +5 -0
- package/dist/primitives/components/icons/production-data-icon.js +10 -0
- package/dist/primitives/components/icons/profit-arrow-icon.d.ts +5 -0
- package/dist/primitives/components/icons/profit-arrow-icon.js +9 -0
- package/dist/primitives/components/icons/rain-thunder-icon.d.ts +5 -0
- package/dist/primitives/components/icons/rain-thunder-icon.js +10 -0
- package/dist/primitives/components/icons/rainy-icon.d.ts +5 -0
- package/dist/primitives/components/icons/rainy-icon.js +10 -0
- package/dist/primitives/components/icons/reporting-nav-icon.d.ts +5 -0
- package/dist/primitives/components/icons/reporting-nav-icon.js +9 -0
- package/dist/primitives/components/icons/right-arrow-icon.d.ts +5 -0
- package/dist/primitives/components/icons/right-arrow-icon.js +9 -0
- package/dist/primitives/components/icons/right-navigate-icon.d.ts +5 -0
- package/dist/primitives/components/icons/right-navigate-icon.js +9 -0
- package/dist/primitives/components/icons/scale-control-icon.d.ts +5 -0
- package/dist/primitives/components/icons/scale-control-icon.js +9 -0
- package/dist/primitives/components/icons/settings-header-icon.d.ts +5 -0
- package/dist/primitives/components/icons/settings-header-icon.js +9 -0
- package/dist/primitives/components/icons/settings-nav-icon.d.ts +5 -0
- package/dist/primitives/components/icons/settings-nav-icon.js +9 -0
- package/dist/primitives/components/icons/sign-out-icon.d.ts +5 -0
- package/dist/primitives/components/icons/sign-out-icon.js +9 -0
- package/dist/primitives/components/icons/site-overview-icon.d.ts +5 -0
- package/dist/primitives/components/icons/site-overview-icon.js +9 -0
- package/dist/primitives/components/icons/sleep-icon.d.ts +3 -0
- package/dist/primitives/components/icons/sleep-icon.js +2 -0
- package/dist/primitives/components/icons/sleep-status-icon.d.ts +5 -0
- package/dist/primitives/components/icons/sleep-status-icon.js +9 -0
- package/dist/primitives/components/icons/snowy-icon.d.ts +5 -0
- package/dist/primitives/components/icons/snowy-icon.js +10 -0
- package/dist/primitives/components/icons/sunny-icon.d.ts +5 -0
- package/dist/primitives/components/icons/sunny-icon.js +10 -0
- package/dist/primitives/components/icons/temperature-alarm-icon.d.ts +5 -0
- package/dist/primitives/components/icons/temperature-alarm-icon.js +10 -0
- package/dist/primitives/components/icons/temperature-celsius-icon.d.ts +5 -0
- package/dist/primitives/components/icons/temperature-celsius-icon.js +9 -0
- package/dist/primitives/components/icons/temperature-indicator-icon.d.ts +5 -0
- package/dist/primitives/components/icons/temperature-indicator-icon.js +9 -0
- package/dist/primitives/components/icons/temperature-weather-icon.d.ts +5 -0
- package/dist/primitives/components/icons/temperature-weather-icon.js +10 -0
- package/dist/primitives/components/icons/types.d.ts +21 -0
- package/dist/primitives/components/icons/types.js +1 -0
- package/dist/primitives/components/icons/unpin-icon.d.ts +5 -0
- package/dist/primitives/components/icons/unpin-icon.js +9 -0
- package/dist/primitives/components/icons/user-avatar-icon.d.ts +5 -0
- package/dist/primitives/components/icons/user-avatar-icon.js +9 -0
- package/dist/primitives/components/icons/user-management-nav-icon.d.ts +5 -0
- package/dist/primitives/components/icons/user-management-nav-icon.js +9 -0
- package/dist/primitives/components/icons/volume-off-icon.d.ts +5 -0
- package/dist/primitives/components/icons/volume-off-icon.js +9 -0
- package/dist/primitives/components/icons/volume-on-icon.d.ts +5 -0
- package/dist/primitives/components/icons/volume-on-icon.js +9 -0
- package/dist/primitives/components/indicator/index.d.ts +89 -0
- package/dist/primitives/components/indicator/index.js +42 -0
- package/dist/primitives/components/indicator/indicator.example.d.ts +1 -0
- package/dist/primitives/components/indicator/indicator.example.js +6 -0
- package/dist/primitives/components/input/index.d.ts +63 -0
- package/dist/primitives/components/input/index.js +39 -0
- package/dist/primitives/components/input/input.example.d.ts +1 -0
- package/dist/primitives/components/input/input.example.js +10 -0
- package/dist/primitives/components/label/index.d.ts +20 -0
- package/dist/primitives/components/label/index.js +19 -0
- package/dist/primitives/components/label/label.example.d.ts +1 -0
- package/dist/primitives/components/label/label.example.js +8 -0
- package/dist/primitives/components/labeled-card/index.d.ts +1 -0
- package/dist/primitives/components/labeled-card/index.js +1 -0
- package/dist/primitives/components/labeled-card/labeled-card.d.ts +116 -0
- package/dist/primitives/components/labeled-card/labeled-card.example.d.ts +1 -0
- package/dist/primitives/components/labeled-card/labeled-card.example.js +13 -0
- package/dist/primitives/components/labeled-card/labeled-card.js +37 -0
- package/dist/primitives/components/lazy-tab-wrapper/index.d.ts +29 -0
- package/dist/primitives/components/lazy-tab-wrapper/index.js +51 -0
- package/dist/primitives/components/lazy-tab-wrapper/lazy-tab-wrapper.example.d.ts +1 -0
- package/dist/primitives/components/lazy-tab-wrapper/lazy-tab-wrapper.example.js +18 -0
- package/dist/primitives/components/line-chart/index.d.ts +11 -0
- package/dist/primitives/components/line-chart/index.js +474 -0
- package/dist/primitives/components/line-chart/line-chart.constants.d.ts +51 -0
- package/dist/primitives/components/line-chart/line-chart.constants.js +37 -0
- package/dist/primitives/components/line-chart/line-chart.example.d.ts +1 -0
- package/dist/primitives/components/line-chart/line-chart.example.js +24 -0
- package/dist/primitives/components/line-chart/line-chart.utils.d.ts +54 -0
- package/dist/primitives/components/line-chart/line-chart.utils.js +105 -0
- package/dist/primitives/components/line-chart/types.d.ts +118 -0
- package/dist/primitives/components/line-chart/types.js +1 -0
- package/dist/primitives/components/list-view-filter/index.d.ts +37 -0
- package/dist/primitives/components/list-view-filter/index.js +129 -0
- package/dist/primitives/components/list-view-filter/list-view-filter.example.d.ts +1 -0
- package/dist/primitives/components/list-view-filter/list-view-filter.example.js +54 -0
- package/dist/primitives/components/loader/index.d.ts +76 -0
- package/dist/primitives/components/loader/index.js +28 -0
- package/dist/primitives/components/loader/loader.example.d.ts +1 -0
- package/dist/primitives/components/loader/loader.example.js +6 -0
- package/dist/primitives/components/logs/activity-log-icon.d.ts +8 -0
- package/dist/primitives/components/logs/activity-log-icon.js +25 -0
- package/dist/primitives/components/logs/constants.d.ts +11 -0
- package/dist/primitives/components/logs/constants.js +11 -0
- package/dist/primitives/components/logs/log-dot.d.ts +8 -0
- package/dist/primitives/components/logs/log-dot.js +34 -0
- package/dist/primitives/components/logs/log-item.d.ts +8 -0
- package/dist/primitives/components/logs/log-item.js +20 -0
- package/dist/primitives/components/logs/log-row.d.ts +8 -0
- package/dist/primitives/components/logs/log-row.js +14 -0
- package/dist/primitives/components/logs/logs-card.d.ts +8 -0
- package/dist/primitives/components/logs/logs-card.js +26 -0
- package/dist/primitives/components/logs/logs.example.d.ts +1 -0
- package/dist/primitives/components/logs/logs.example.js +54 -0
- package/dist/primitives/components/logs/types.d.ts +81 -0
- package/dist/primitives/components/logs/types.js +1 -0
- package/dist/primitives/components/mdk-wordmark/index.d.ts +21 -0
- package/dist/primitives/components/mdk-wordmark/index.js +28 -0
- package/dist/primitives/components/mdk-wordmark/mdk-wordmark.example.d.ts +4 -0
- package/dist/primitives/components/mdk-wordmark/mdk-wordmark.example.js +6 -0
- package/dist/primitives/components/min-max-avg/index.d.ts +6 -0
- package/dist/primitives/components/min-max-avg/index.js +30 -0
- package/dist/primitives/components/min-max-avg/min-max-avg.example.d.ts +1 -0
- package/dist/primitives/components/min-max-avg/min-max-avg.example.js +6 -0
- package/dist/primitives/components/min-max-avg/types.d.ts +12 -0
- package/dist/primitives/components/min-max-avg/types.js +1 -0
- package/dist/primitives/components/mosaic/index.d.ts +31 -0
- package/dist/primitives/components/mosaic/index.js +152 -0
- package/dist/primitives/components/mosaic/mosaic.example.d.ts +1 -0
- package/dist/primitives/components/mosaic/mosaic.example.js +6 -0
- package/dist/primitives/components/multi-level-select/index.d.ts +40 -0
- package/dist/primitives/components/multi-level-select/index.js +34 -0
- package/dist/primitives/components/multi-level-select/multi-level-select.example.d.ts +1 -0
- package/dist/primitives/components/multi-level-select/multi-level-select.example.js +10 -0
- package/dist/primitives/components/multi-select/index.d.ts +79 -0
- package/dist/primitives/components/multi-select/index.js +191 -0
- package/dist/primitives/components/multi-select/keyboard-activation.d.ts +4 -0
- package/dist/primitives/components/multi-select/keyboard-activation.js +8 -0
- package/dist/primitives/components/multi-select/multi-select.example.d.ts +1 -0
- package/dist/primitives/components/multi-select/multi-select.example.js +16 -0
- package/dist/primitives/components/not-found-page/index.d.ts +34 -0
- package/dist/primitives/components/not-found-page/index.js +22 -0
- package/dist/primitives/components/not-found-page/not-found-page.example.d.ts +1 -0
- package/dist/primitives/components/not-found-page/not-found-page.example.js +10 -0
- package/dist/primitives/components/operations-energy-cost-chart/constants.d.ts +9 -0
- package/dist/primitives/components/operations-energy-cost-chart/constants.js +10 -0
- package/dist/primitives/components/operations-energy-cost-chart/index.d.ts +20 -0
- package/dist/primitives/components/operations-energy-cost-chart/index.js +33 -0
- package/dist/primitives/components/operations-energy-cost-chart/operations-energy-cost-chart.example.d.ts +1 -0
- package/dist/primitives/components/operations-energy-cost-chart/operations-energy-cost-chart.example.js +6 -0
- package/dist/primitives/components/operations-energy-cost-chart/types.d.ts +32 -0
- package/dist/primitives/components/operations-energy-cost-chart/types.js +1 -0
- package/dist/primitives/components/operations-energy-cost-chart/utils.d.ts +28 -0
- package/dist/primitives/components/operations-energy-cost-chart/utils.js +57 -0
- package/dist/primitives/components/pagination/index.d.ts +72 -0
- package/dist/primitives/components/pagination/index.js +90 -0
- package/dist/primitives/components/pagination/pagination.example.d.ts +1 -0
- package/dist/primitives/components/pagination/pagination.example.js +14 -0
- package/dist/primitives/components/popover/index.d.ts +143 -0
- package/dist/primitives/components/popover/index.js +81 -0
- package/dist/primitives/components/popover/popover.example.d.ts +1 -0
- package/dist/primitives/components/popover/popover.example.js +8 -0
- package/dist/primitives/components/progress/index.d.ts +7 -0
- package/dist/primitives/components/progress/index.js +7 -0
- package/dist/primitives/components/progress/progress.example.d.ts +1 -0
- package/dist/primitives/components/progress/progress.example.js +7 -0
- package/dist/primitives/components/radio/index.d.ts +186 -0
- package/dist/primitives/components/radio/index.js +55 -0
- package/dist/primitives/components/radio/radio.example.d.ts +1 -0
- package/dist/primitives/components/radio/radio.example.js +11 -0
- package/dist/primitives/components/select/index.d.ts +110 -0
- package/dist/primitives/components/select/index.js +96 -0
- package/dist/primitives/components/select/select.example.d.ts +1 -0
- package/dist/primitives/components/select/select.example.js +10 -0
- package/dist/primitives/components/sidebar/helpers.d.ts +3 -0
- package/dist/primitives/components/sidebar/helpers.js +4 -0
- package/dist/primitives/components/sidebar/index.d.ts +8 -0
- package/dist/primitives/components/sidebar/index.js +58 -0
- package/dist/primitives/components/sidebar/menu-item.d.ts +5 -0
- package/dist/primitives/components/sidebar/menu-item.js +97 -0
- package/dist/primitives/components/sidebar/overlay-content.d.ts +5 -0
- package/dist/primitives/components/sidebar/overlay-content.js +12 -0
- package/dist/primitives/components/sidebar/sidebar.example.d.ts +1 -0
- package/dist/primitives/components/sidebar/sidebar.example.js +16 -0
- package/dist/primitives/components/sidebar/types.d.ts +70 -0
- package/dist/primitives/components/sidebar/types.js +1 -0
- package/dist/primitives/components/sidebar/use-sidebar-state.d.ts +18 -0
- package/dist/primitives/components/sidebar/use-sidebar-state.js +85 -0
- package/dist/primitives/components/skeleton/index.d.ts +39 -0
- package/dist/primitives/components/skeleton/index.js +20 -0
- package/dist/primitives/components/skeleton/skeleton.example.d.ts +1 -0
- package/dist/primitives/components/skeleton/skeleton.example.js +6 -0
- package/dist/primitives/components/slider/index.d.ts +7 -0
- package/dist/primitives/components/slider/index.js +7 -0
- package/dist/primitives/components/slider/slider.example.d.ts +1 -0
- package/dist/primitives/components/slider/slider.example.js +65 -0
- package/dist/primitives/components/spinner/index.d.ts +92 -0
- package/dist/primitives/components/spinner/index.js +31 -0
- package/dist/primitives/components/spinner/spinner.example.d.ts +1 -0
- package/dist/primitives/components/spinner/spinner.example.js +8 -0
- package/dist/primitives/components/switch/index.d.ts +88 -0
- package/dist/primitives/components/switch/index.js +18 -0
- package/dist/primitives/components/switch/switch.example.d.ts +1 -0
- package/dist/primitives/components/switch/switch.example.js +10 -0
- package/dist/primitives/components/tabs/index.d.ts +68 -0
- package/dist/primitives/components/tabs/index.js +51 -0
- package/dist/primitives/components/tabs/tabs.example.d.ts +1 -0
- package/dist/primitives/components/tabs/tabs.example.js +8 -0
- package/dist/primitives/components/tag/index.d.ts +44 -0
- package/dist/primitives/components/tag/index.js +20 -0
- package/dist/primitives/components/tag/tag.example.d.ts +1 -0
- package/dist/primitives/components/tag/tag.example.js +6 -0
- package/dist/primitives/components/tag-input/index.d.ts +142 -0
- package/dist/primitives/components/tag-input/index.js +289 -0
- package/dist/primitives/components/tag-input/tag-input.example.d.ts +1 -0
- package/dist/primitives/components/tag-input/tag-input.example.js +18 -0
- package/dist/primitives/components/textarea/index.d.ts +34 -0
- package/dist/primitives/components/textarea/index.js +29 -0
- package/dist/primitives/components/textarea/textarea.example.d.ts +1 -0
- package/dist/primitives/components/textarea/textarea.example.js +6 -0
- package/dist/primitives/components/threshold-line-chart/constants.d.ts +4 -0
- package/dist/primitives/components/threshold-line-chart/constants.js +10 -0
- package/dist/primitives/components/threshold-line-chart/index.d.ts +24 -0
- package/dist/primitives/components/threshold-line-chart/index.js +54 -0
- package/dist/primitives/components/threshold-line-chart/threshold-line-chart.example.d.ts +1 -0
- package/dist/primitives/components/threshold-line-chart/threshold-line-chart.example.js +17 -0
- package/dist/primitives/components/threshold-line-chart/types.d.ts +50 -0
- package/dist/primitives/components/threshold-line-chart/types.js +1 -0
- package/dist/primitives/components/threshold-line-chart/utils.d.ts +18 -0
- package/dist/primitives/components/threshold-line-chart/utils.js +66 -0
- package/dist/primitives/components/toast/index.d.ts +76 -0
- package/dist/primitives/components/toast/index.js +75 -0
- package/dist/primitives/components/toast/toast.example.d.ts +1 -0
- package/dist/primitives/components/toast/toast.example.js +10 -0
- package/dist/primitives/components/tooltip/index.d.ts +127 -0
- package/dist/primitives/components/tooltip/index.js +86 -0
- package/dist/primitives/components/tooltip/tooltip.example.d.ts +1 -0
- package/dist/primitives/components/tooltip/tooltip.example.js +8 -0
- package/dist/primitives/components/typography/index.d.ts +81 -0
- package/dist/primitives/components/typography/index.js +34 -0
- package/dist/primitives/components/typography/typography.example.d.ts +1 -0
- package/dist/primitives/components/typography/typography.example.js +8 -0
- package/dist/primitives/constants/charts.d.ts +27 -0
- package/dist/primitives/constants/charts.js +70 -0
- package/dist/primitives/constants/colors.d.ts +170 -0
- package/dist/primitives/constants/colors.js +201 -0
- package/dist/primitives/constants/index.d.ts +3 -0
- package/dist/primitives/constants/index.js +3 -0
- package/dist/primitives/constants/units.d.ts +56 -0
- package/dist/primitives/constants/units.js +48 -0
- package/dist/primitives/index.d.ts +85 -0
- package/dist/primitives/index.js +93 -0
- package/dist/primitives/theme/index.d.ts +12 -0
- package/dist/primitives/theme/index.js +7 -0
- package/dist/primitives/theme/tokens.d.ts +67 -0
- package/dist/primitives/theme/tokens.js +67 -0
- package/dist/primitives/theme/utils.d.ts +20 -0
- package/dist/primitives/theme/utils.js +47 -0
- package/dist/primitives/types/chart.d.ts +1 -0
- package/dist/primitives/types/chart.js +1 -0
- package/dist/primitives/types/common.d.ts +47 -0
- package/dist/primitives/types/common.js +4 -0
- package/dist/primitives/types/component.d.ts +23 -0
- package/dist/primitives/types/component.js +4 -0
- package/dist/primitives/types/index.d.ts +27 -0
- package/dist/primitives/types/index.js +6 -0
- package/dist/primitives/utils/array.d.ts +56 -0
- package/dist/primitives/utils/array.js +95 -0
- package/dist/primitives/utils/async.d.ts +17 -0
- package/dist/primitives/utils/async.js +23 -0
- package/dist/primitives/utils/chart-options.d.ts +233 -0
- package/dist/primitives/utils/chart-options.js +475 -0
- package/dist/primitives/utils/chart-tooltip.d.ts +37 -0
- package/dist/primitives/utils/chart-tooltip.js +208 -0
- package/dist/primitives/utils/chart.d.ts +93 -0
- package/dist/primitives/utils/chart.js +195 -0
- package/dist/primitives/utils/cn.d.ts +13 -0
- package/dist/primitives/utils/cn.js +15 -0
- package/dist/primitives/utils/color.d.ts +46 -0
- package/dist/primitives/utils/color.js +102 -0
- package/dist/primitives/utils/conversion.d.ts +63 -0
- package/dist/primitives/utils/conversion.js +100 -0
- package/dist/primitives/utils/date.d.ts +56 -0
- package/dist/primitives/utils/date.js +93 -0
- package/dist/primitives/utils/format.d.ts +150 -0
- package/dist/primitives/utils/format.js +272 -0
- package/dist/primitives/utils/index.d.ts +22 -0
- package/dist/primitives/utils/index.js +37 -0
- package/dist/primitives/utils/number.d.ts +132 -0
- package/dist/primitives/utils/number.js +162 -0
- package/dist/primitives/utils/string.d.ts +61 -0
- package/dist/primitives/utils/string.js +106 -0
- package/dist/primitives/utils/time.d.ts +85 -0
- package/dist/primitives/utils/time.js +135 -0
- package/dist/primitives/utils/types.d.ts +55 -0
- package/dist/primitives/utils/types.js +4 -0
- package/dist/primitives/utils/validation.d.ts +23 -0
- package/dist/primitives/utils/validation.js +56 -0
- package/dist/registry.json +1 -0
- package/dist/styles-domain.css +1 -0
- package/dist/styles.css +1 -0
- package/package.json +144 -1
- package/src/domain/components/active-incidents-card/USAGE.md +53 -0
- package/src/domain/components/active-incidents-card/active-incidents-card.example.tsx +41 -0
- package/src/domain/components/active-incidents-card/styles.scss +152 -0
- package/src/domain/components/alarm/USAGE.md +52 -0
- package/src/domain/components/alarm/alarm-contents/USAGE.md +32 -0
- package/src/domain/components/alarm/alarm-contents/alarm-contents.example.tsx +37 -0
- package/src/domain/components/alarm/alarm-contents/alarm-contents.scss +17 -0
- package/src/domain/components/alarm/alarm-row/USAGE.md +45 -0
- package/src/domain/components/alarm/alarm-row/alarm-row.example.tsx +24 -0
- package/src/domain/components/alarm/alarm-row/alarm-row.scss +74 -0
- package/src/domain/components/alarm/alarm.example.tsx +52 -0
- package/src/domain/components/alerts/USAGE.md +37 -0
- package/src/domain/components/alerts/alerts-panel.scss +36 -0
- package/src/domain/components/alerts/alerts-table-columns.scss +13 -0
- package/src/domain/components/alerts/alerts-table-title/USAGE.md +21 -0
- package/src/domain/components/alerts/alerts-table-title/alerts-table-title.example.tsx +8 -0
- package/src/domain/components/alerts/alerts-table-title/alerts-table-title.scss +16 -0
- package/src/domain/components/alerts/current-alerts/USAGE.md +52 -0
- package/src/domain/components/alerts/current-alerts/alert-confirmation-modal/USAGE.md +23 -0
- package/src/domain/components/alerts/current-alerts/alert-confirmation-modal/alert-confirmation-modal.example.tsx +18 -0
- package/src/domain/components/alerts/current-alerts/alert-confirmation-modal/alert-confirmation-modal.scss +14 -0
- package/src/domain/components/alerts/current-alerts/current-alerts.example.tsx +50 -0
- package/src/domain/components/alerts/historical-alerts/USAGE.md +52 -0
- package/src/domain/components/alerts/historical-alerts/historical-alerts.example.tsx +54 -0
- package/src/domain/components/alerts/tag-filter-bar/USAGE.md +30 -0
- package/src/domain/components/alerts/tag-filter-bar/tag-filter-bar.example.tsx +12 -0
- package/src/domain/components/alerts/tag-filter-bar/tag-filter-bar.scss +20 -0
- package/src/domain/components/auth/require-auth/USAGE.md +47 -0
- package/src/domain/components/auth/require-auth/require-auth.example.tsx +16 -0
- package/src/domain/components/auth/sign-in-google-button/USAGE.md +50 -0
- package/src/domain/components/auth/sign-in-google-button/sign-in-google-button.example.tsx +11 -0
- package/src/domain/components/composite/metric-card/USAGE.md +36 -0
- package/src/domain/components/composite/metric-card/metric-card.example.tsx +14 -0
- package/src/domain/components/composite/metric-card/styles.scss +35 -0
- package/src/domain/components/dashboard/dashboard-date-range-picker/USAGE.md +43 -0
- package/src/domain/components/dashboard/dashboard-date-range-picker/dashboard-date-range-picker.example.tsx +18 -0
- package/src/domain/components/dashboard/dashboard-date-range-picker/dashboard-date-range-picker.scss +31 -0
- package/src/domain/components/dashboard/export-button/USAGE.md +39 -0
- package/src/domain/components/dashboard/export-button/export-button.example.tsx +15 -0
- package/src/domain/components/dashboard/export-button/export-button.scss +42 -0
- package/src/domain/components/dashboard/power-mode-timeline-chart/USAGE.md +34 -0
- package/src/domain/components/dashboard/power-mode-timeline-chart/power-mode-timeline-chart.example.tsx +17 -0
- package/src/domain/components/dashboard/site-stats-bar/USAGE.md +40 -0
- package/src/domain/components/dashboard/site-stats-bar/site-stats-bar.example.tsx +20 -0
- package/src/domain/components/dashboard/site-stats-bar/site-stats-bar.scss +20 -0
- package/src/domain/components/dashboard/timeline-selector/USAGE.md +25 -0
- package/src/domain/components/dashboard/timeline-selector/timeline-selector.example.tsx +13 -0
- package/src/domain/components/data-box/content-box/content-box.scss +24 -0
- package/src/domain/components/data-box/data-row/data-row.scss +60 -0
- package/src/domain/components/data-box/generic-data-box/USAGE.md +25 -0
- package/src/domain/components/data-box/generic-data-box/generic-data-box.example.tsx +13 -0
- package/src/domain/components/data-box/generic-data-box/generic-data-box.scss +4 -0
- package/src/domain/components/device-explorer/USAGE.md +83 -0
- package/src/domain/components/device-explorer/components/device-card-col-text/styles.scss +19 -0
- package/src/domain/components/device-explorer/components/mining-status-indicator/styles.scss +9 -0
- package/src/domain/components/device-explorer/components/status-label/styles.scss +27 -0
- package/src/domain/components/device-explorer/device-explorer.example.tsx +60 -0
- package/src/domain/components/device-explorer/styles.scss +113 -0
- package/src/domain/components/enabled-disable-toggle/USAGE.md +29 -0
- package/src/domain/components/enabled-disable-toggle/enabled-disable-toggle.example.tsx +15 -0
- package/src/domain/components/enabled-disable-toggle/enabled-disable-toggle.scss +17 -0
- package/src/domain/components/header-actions/USAGE.md +99 -0
- package/src/domain/components/header-actions/header-actions.example.tsx +22 -0
- package/src/domain/components/header-actions/header-actions.scss +228 -0
- package/src/domain/components/header-stats/USAGE.md +102 -0
- package/src/domain/components/header-stats/header-stats-bar.scss +113 -0
- package/src/domain/components/header-stats/header-stats.example.tsx +27 -0
- package/src/domain/components/info-container/USAGE.md +27 -0
- package/src/domain/components/info-container/info-container.example.tsx +20 -0
- package/src/domain/components/info-container/info-container.scss +32 -0
- package/src/domain/components/line-chart-card/USAGE.md +62 -0
- package/src/domain/components/line-chart-card/line-chart-card.example.tsx +45 -0
- package/src/domain/components/line-chart-card/styles.scss +51 -0
- package/src/domain/components/miners-activity-chart/USAGE.md +46 -0
- package/src/domain/components/miners-activity-chart/miners-activity-chart.example.tsx +15 -0
- package/src/domain/components/miners-activity-chart/miners-activity-chart.scss +90 -0
- package/src/domain/components/mining-pools-panel/USAGE.md +61 -0
- package/src/domain/components/mining-pools-panel/mining-pools-panel.example.tsx +42 -0
- package/src/domain/components/mining-pools-panel/styles.scss +129 -0
- package/src/domain/components/pool-details-card/USAGE.md +39 -0
- package/src/domain/components/pool-details-card/pool-details-card.example.tsx +16 -0
- package/src/domain/components/pool-details-card/styles.scss +88 -0
- package/src/domain/components/pool-details-popover/USAGE.md +26 -0
- package/src/domain/components/pool-details-popover/pool-details-popover.example.tsx +14 -0
- package/src/domain/components/pool-details-popover/styles.scss +49 -0
- package/src/domain/components/settings/add-user-modal/USAGE.md +35 -0
- package/src/domain/components/settings/add-user-modal/add-user-modal.example.tsx +25 -0
- package/src/domain/components/settings/add-user-modal/add-user-modal.scss +9 -0
- package/src/domain/components/settings/change-confirmation-modal/USAGE.md +38 -0
- package/src/domain/components/settings/change-confirmation-modal/change-confirmation-modal.example.tsx +23 -0
- package/src/domain/components/settings/feature-flags/USAGE.md +28 -0
- package/src/domain/components/settings/feature-flags/feature-flags-settings.example.tsx +11 -0
- package/src/domain/components/settings/feature-flags/feature-flags-settings.scss +67 -0
- package/src/domain/components/settings/header-controls/USAGE.md +27 -0
- package/src/domain/components/settings/header-controls/header-controls-settings.example.tsx +11 -0
- package/src/domain/components/settings/header-controls/header-controls-settings.scss +86 -0
- package/src/domain/components/settings/import-export/USAGE.md +27 -0
- package/src/domain/components/settings/import-export/import-export-settings.example.tsx +10 -0
- package/src/domain/components/settings/import-export/import-export-settings.scss +63 -0
- package/src/domain/components/settings/manage-user-modal/USAGE.md +34 -0
- package/src/domain/components/settings/manage-user-modal/manage-user-modal.example.tsx +30 -0
- package/src/domain/components/settings/manage-user-modal/manage-user-modal.scss +94 -0
- package/src/domain/components/settings/rbac-control/USAGE.md +37 -0
- package/src/domain/components/settings/rbac-control/rbac-control-settings.example.tsx +33 -0
- package/src/domain/components/settings/rbac-control/rbac-control-settings.scss +148 -0
- package/src/domain/components/settings/settings-dashboard/USAGE.md +28 -0
- package/src/domain/components/settings/settings-dashboard/settings-dashboard.example.tsx +7 -0
- package/src/domain/components/settings/settings-dashboard/settings-dashboard.scss +28 -0
- package/src/domain/components/stat-cards/miner-metric-card/USAGE.md +38 -0
- package/src/domain/components/stat-cards/miner-metric-card/miner-metric-card.example.tsx +17 -0
- package/src/domain/components/stat-cards/miner-metric-card/miner-metric-card.scss +72 -0
- package/src/domain/components/stat-cards/single-stat-card/USAGE.md +28 -0
- package/src/domain/components/stat-cards/single-stat-card/single-stat-card.example.tsx +10 -0
- package/src/domain/components/stat-cards/single-stat-card/single-stat-card.scss +179 -0
- package/src/domain/components/timeframe/USAGE.md +15 -0
- package/src/domain/components/timeframe/report-time-frame-selector/USAGE.md +27 -0
- package/src/domain/components/timeframe/report-time-frame-selector/report-time-frame-selector.example.tsx +18 -0
- package/src/domain/components/timeframe/report-time-frame-selector/report-time-frame-selector.scss +7 -0
- package/src/domain/components/timeframe/timeframe-controls/USAGE.md +69 -0
- package/src/domain/components/timeframe/timeframe-controls/timeframe-controls-week-content.example.tsx +7 -0
- package/src/domain/components/timeframe/timeframe-controls/timeframe-controls.example.tsx +10 -0
- package/src/domain/components/timeframe/timeframe-controls/timeframe-controls.scss +121 -0
- package/src/domain/components/timeframe/use-financial-date-range.example.tsx +12 -0
- package/src/domain/components/timeline-chart/USAGE.md +52 -0
- package/src/domain/components/timeline-chart/timeline-chart.example.tsx +35 -0
- package/src/domain/components/timeline-chart/timeline-chart.scss +166 -0
- package/src/domain/components/widget-top-row/USAGE.md +48 -0
- package/src/domain/components/widget-top-row/styles.scss +57 -0
- package/src/domain/components/widget-top-row/widget-top-row.example.tsx +28 -0
- package/src/domain/styles/global-colors.scss +7 -0
- package/src/domain/styles/index.scss +80 -0
- package/src/primitives/components/accordion/USAGE.md +72 -0
- package/src/primitives/components/accordion/accordion.example.tsx +37 -0
- package/src/primitives/components/accordion/styles.scss +205 -0
- package/src/primitives/components/action-button/USAGE.md +64 -0
- package/src/primitives/components/action-button/action-button.example.tsx +40 -0
- package/src/primitives/components/action-button/styles.scss +61 -0
- package/src/primitives/components/alert/USAGE.md +51 -0
- package/src/primitives/components/alert/alert.example.tsx +35 -0
- package/src/primitives/components/alert/styles.scss +125 -0
- package/src/primitives/components/alert-dialog/USAGE.md +60 -0
- package/src/primitives/components/alert-dialog/alert-dialog.example.tsx +37 -0
- package/src/primitives/components/app-header/USAGE.md +47 -0
- package/src/primitives/components/app-header/app-header.example.tsx +11 -0
- package/src/primitives/components/app-header/app-header.scss +94 -0
- package/src/primitives/components/area-chart/USAGE.md +22 -0
- package/src/primitives/components/area-chart/area-chart.example.tsx +21 -0
- package/src/primitives/components/area-chart/styles.scss +9 -0
- package/src/primitives/components/avatar/USAGE.md +29 -0
- package/src/primitives/components/avatar/avatar.example.tsx +24 -0
- package/src/primitives/components/avatar/styles.scss +29 -0
- package/src/primitives/components/average-downtime-chart/USAGE.md +41 -0
- package/src/primitives/components/average-downtime-chart/average-downtime-chart.example.tsx +13 -0
- package/src/primitives/components/average-downtime-chart/styles.scss +15 -0
- package/src/primitives/components/badge/USAGE.md +39 -0
- package/src/primitives/components/badge/badge.example.tsx +21 -0
- package/src/primitives/components/badge/styles.scss +265 -0
- package/src/primitives/components/bar-chart/USAGE.md +56 -0
- package/src/primitives/components/bar-chart/bar-chart.example.tsx +35 -0
- package/src/primitives/components/bar-chart/styles.scss +9 -0
- package/src/primitives/components/breadcrumbs/USAGE.md +46 -0
- package/src/primitives/components/breadcrumbs/breadcrumbs.example.tsx +16 -0
- package/src/primitives/components/breadcrumbs/styles.scss +106 -0
- package/src/primitives/components/btc-average-price/USAGE.md +32 -0
- package/src/primitives/components/btc-average-price/btc-average-price.example.tsx +11 -0
- package/src/primitives/components/btc-average-price/styles.scss +22 -0
- package/src/primitives/components/button/USAGE.md +37 -0
- package/src/primitives/components/button/button.example.tsx +23 -0
- package/src/primitives/components/button/styles.scss +181 -0
- package/src/primitives/components/card/USAGE.md +31 -0
- package/src/primitives/components/card/card.example.tsx +21 -0
- package/src/primitives/components/card/styles.scss +73 -0
- package/src/primitives/components/cascader/USAGE.md +77 -0
- package/src/primitives/components/cascader/cascader.example.tsx +52 -0
- package/src/primitives/components/cascader/styles.scss +188 -0
- package/src/primitives/components/chart-container/USAGE.md +78 -0
- package/src/primitives/components/chart-container/chart-container.example.tsx +67 -0
- package/src/primitives/components/chart-container/styles.scss +207 -0
- package/src/primitives/components/chart-stats-footer/USAGE.md +59 -0
- package/src/primitives/components/chart-stats-footer/chart-stats-footer.example.tsx +40 -0
- package/src/primitives/components/chart-stats-footer/styles.scss +86 -0
- package/src/primitives/components/checkbox/USAGE.md +35 -0
- package/src/primitives/components/checkbox/checkbox.example.tsx +30 -0
- package/src/primitives/components/checkbox/styles.scss +227 -0
- package/src/primitives/components/currency-toggler/USAGE.md +47 -0
- package/src/primitives/components/currency-toggler/currency-toggler.example.tsx +26 -0
- package/src/primitives/components/currency-toggler/styles.scss +33 -0
- package/src/primitives/components/data-label/USAGE.md +32 -0
- package/src/primitives/components/data-label/data-label.example.tsx +16 -0
- package/src/primitives/components/data-label/styles.scss +16 -0
- package/src/primitives/components/data-table/USAGE.md +94 -0
- package/src/primitives/components/data-table/data-table.example.tsx +29 -0
- package/src/primitives/components/data-table/styles.scss +226 -0
- package/src/primitives/components/date-picker/USAGE.md +64 -0
- package/src/primitives/components/date-picker/date-picker.example.tsx +18 -0
- package/src/primitives/components/date-picker/styles.scss +461 -0
- package/src/primitives/components/detail-legend/USAGE.md +59 -0
- package/src/primitives/components/detail-legend/detail-legend.example.tsx +50 -0
- package/src/primitives/components/detail-legend/styles.scss +87 -0
- package/src/primitives/components/dialog/USAGE.md +71 -0
- package/src/primitives/components/dialog/dialog.example.tsx +55 -0
- package/src/primitives/components/dialog/styles.scss +176 -0
- package/src/primitives/components/divider/USAGE.md +40 -0
- package/src/primitives/components/divider/divider.example.tsx +26 -0
- package/src/primitives/components/divider/styles.scss +106 -0
- package/src/primitives/components/doughnut-chart/USAGE.md +55 -0
- package/src/primitives/components/doughnut-chart/doughnut-chart.example.tsx +24 -0
- package/src/primitives/components/doughnut-chart/styles.scss +100 -0
- package/src/primitives/components/dropdown-menu/USAGE.md +89 -0
- package/src/primitives/components/dropdown-menu/dropdown-menu.example.tsx +39 -0
- package/src/primitives/components/dropdown-menu/styles.scss +103 -0
- package/src/primitives/components/dropdown-menu/tokens.scss +119 -0
- package/src/primitives/components/empty-state/USAGE.md +29 -0
- package/src/primitives/components/empty-state/empty-state.example.tsx +12 -0
- package/src/primitives/components/empty-state/styles.scss +49 -0
- package/src/primitives/components/error-boundary/USAGE.md +52 -0
- package/src/primitives/components/error-boundary/error-boundary.example.tsx +55 -0
- package/src/primitives/components/error-boundary/styles.scss +37 -0
- package/src/primitives/components/error-card/USAGE.md +28 -0
- package/src/primitives/components/error-card/error-card.example.tsx +32 -0
- package/src/primitives/components/error-card/styles.scss +30 -0
- package/src/primitives/components/form/USAGE.md +165 -0
- package/src/primitives/components/form/form.example.tsx +70 -0
- package/src/primitives/components/form/styles.scss +58 -0
- package/src/primitives/components/gauge-chart/USAGE.md +47 -0
- package/src/primitives/components/gauge-chart/gauge-chart.example.tsx +25 -0
- package/src/primitives/components/gauge-chart/styles.scss +11 -0
- package/src/primitives/components/heatmap/USAGE.md +61 -0
- package/src/primitives/components/heatmap/heatmap.example.tsx +17 -0
- package/src/primitives/components/heatmap/styles.scss +48 -0
- package/src/primitives/components/icons/USAGE.md +76 -0
- package/src/primitives/components/icons/icons.example.tsx +85 -0
- package/src/primitives/components/indicator/USAGE.md +37 -0
- package/src/primitives/components/indicator/indicator.example.tsx +38 -0
- package/src/primitives/components/indicator/styles.scss +132 -0
- package/src/primitives/components/input/USAGE.md +27 -0
- package/src/primitives/components/input/input.example.tsx +23 -0
- package/src/primitives/components/input/styles.scss +160 -0
- package/src/primitives/components/label/USAGE.md +24 -0
- package/src/primitives/components/label/label.example.tsx +13 -0
- package/src/primitives/components/label/styles.scss +15 -0
- package/src/primitives/components/labeled-card/USAGE.md +47 -0
- package/src/primitives/components/labeled-card/labeled-card.example.tsx +50 -0
- package/src/primitives/components/labeled-card/styles.scss +114 -0
- package/src/primitives/components/lazy-tab-wrapper/USAGE.md +42 -0
- package/src/primitives/components/lazy-tab-wrapper/lazy-tab-wrapper.example.tsx +44 -0
- package/src/primitives/components/line-chart/USAGE.md +68 -0
- package/src/primitives/components/line-chart/line-chart.example.tsx +27 -0
- package/src/primitives/components/line-chart/styles.scss +29 -0
- package/src/primitives/components/list-view-filter/USAGE.md +58 -0
- package/src/primitives/components/list-view-filter/list-view-filter.example.tsx +80 -0
- package/src/primitives/components/list-view-filter/styles.scss +54 -0
- package/src/primitives/components/loader/USAGE.md +41 -0
- package/src/primitives/components/loader/loader.example.tsx +20 -0
- package/src/primitives/components/loader/styles.scss +67 -0
- package/src/primitives/components/logs/USAGE.md +103 -0
- package/src/primitives/components/logs/logs.example.tsx +83 -0
- package/src/primitives/components/logs/styles.scss +125 -0
- package/src/primitives/components/mdk-wordmark/USAGE.md +29 -0
- package/src/primitives/components/mdk-wordmark/mdk-wordmark.example.tsx +12 -0
- package/src/primitives/components/mdk-wordmark/mdk-wordmark.scss +27 -0
- package/src/primitives/components/min-max-avg/USAGE.md +35 -0
- package/src/primitives/components/min-max-avg/min-max-avg.example.tsx +8 -0
- package/src/primitives/components/min-max-avg/styles.scss +26 -0
- package/src/primitives/components/mosaic/USAGE.md +69 -0
- package/src/primitives/components/mosaic/mosaic.example.tsx +43 -0
- package/src/primitives/components/mosaic/styles.scss +22 -0
- package/src/primitives/components/multi-level-select/USAGE.md +50 -0
- package/src/primitives/components/multi-level-select/multi-level-select.example.tsx +29 -0
- package/src/primitives/components/multi-level-select/styles.scss +45 -0
- package/src/primitives/components/multi-select/USAGE.md +76 -0
- package/src/primitives/components/multi-select/multi-select.example.tsx +26 -0
- package/src/primitives/components/multi-select/styles.scss +245 -0
- package/src/primitives/components/not-found-page/USAGE.md +36 -0
- package/src/primitives/components/not-found-page/not-found-page.example.tsx +27 -0
- package/src/primitives/components/not-found-page/styles.scss +27 -0
- package/src/primitives/components/operations-energy-cost-chart/USAGE.md +29 -0
- package/src/primitives/components/operations-energy-cost-chart/operations-energy-cost-chart.example.tsx +12 -0
- package/src/primitives/components/operations-energy-cost-chart/styles.scss +22 -0
- package/src/primitives/components/pagination/USAGE.md +43 -0
- package/src/primitives/components/pagination/pagination.example.tsx +23 -0
- package/src/primitives/components/pagination/styles.scss +178 -0
- package/src/primitives/components/popover/USAGE.md +78 -0
- package/src/primitives/components/popover/popover.example.tsx +20 -0
- package/src/primitives/components/popover/styles.scss +162 -0
- package/src/primitives/components/progress/USAGE.md +34 -0
- package/src/primitives/components/progress/progress.example.tsx +22 -0
- package/src/primitives/components/radio/USAGE.md +66 -0
- package/src/primitives/components/radio/radio.example.tsx +36 -0
- package/src/primitives/components/radio/styles.scss +355 -0
- package/src/primitives/components/select/USAGE.md +29 -0
- package/src/primitives/components/select/select.example.tsx +27 -0
- package/src/primitives/components/select/styles.scss +215 -0
- package/src/primitives/components/sidebar/USAGE.md +47 -0
- package/src/primitives/components/sidebar/sidebar.example.tsx +24 -0
- package/src/primitives/components/sidebar/styles.scss +322 -0
- package/src/primitives/components/skeleton/USAGE.md +40 -0
- package/src/primitives/components/skeleton/skeleton.example.tsx +25 -0
- package/src/primitives/components/skeleton/styles.scss +25 -0
- package/src/primitives/components/slider/USAGE.md +38 -0
- package/src/primitives/components/slider/slider.example.tsx +122 -0
- package/src/primitives/components/spinner/USAGE.md +31 -0
- package/src/primitives/components/spinner/spinner.example.tsx +14 -0
- package/src/primitives/components/spinner/styles.scss +245 -0
- package/src/primitives/components/switch/USAGE.md +36 -0
- package/src/primitives/components/switch/styles.scss +212 -0
- package/src/primitives/components/switch/switch.example.tsx +21 -0
- package/src/primitives/components/tabs/USAGE.md +54 -0
- package/src/primitives/components/tabs/styles.scss +119 -0
- package/src/primitives/components/tabs/tabs.example.tsx +25 -0
- package/src/primitives/components/tag/USAGE.md +25 -0
- package/src/primitives/components/tag/styles.scss +37 -0
- package/src/primitives/components/tag/tag.example.tsx +23 -0
- package/src/primitives/components/tag-input/USAGE.md +87 -0
- package/src/primitives/components/tag-input/styles.scss +354 -0
- package/src/primitives/components/tag-input/tag-input.example.tsx +39 -0
- package/src/primitives/components/textarea/USAGE.md +55 -0
- package/src/primitives/components/textarea/styles.scss +84 -0
- package/src/primitives/components/textarea/textarea.example.tsx +37 -0
- package/src/primitives/components/threshold-line-chart/USAGE.md +49 -0
- package/src/primitives/components/threshold-line-chart/threshold-line-chart.example.tsx +22 -0
- package/src/primitives/components/toast/USAGE.md +54 -0
- package/src/primitives/components/toast/styles.scss +324 -0
- package/src/primitives/components/toast/toast.example.tsx +26 -0
- package/src/primitives/components/tooltip/USAGE.md +46 -0
- package/src/primitives/components/tooltip/styles.scss +99 -0
- package/src/primitives/components/tooltip/tooltip.example.tsx +17 -0
- package/src/primitives/components/typography/USAGE.md +50 -0
- package/src/primitives/components/typography/styles.scss +174 -0
- package/src/primitives/components/typography/typography.example.tsx +21 -0
- package/src/primitives/styles/_animations.scss +8 -0
- package/src/primitives/styles/_base.scss +11 -0
- package/src/primitives/styles/_colors.scss +286 -0
- package/src/primitives/styles/_example.scss +34 -0
- package/src/primitives/styles/_fonts.scss +5 -0
- package/src/primitives/styles/_mixins.scss +202 -0
- package/src/primitives/styles/index.scss +72 -0
- package/src/styles-domain.scss +11 -0
- package/src/styles.scss +9 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":"2.2.0","package":"@tetherto/mdk-react-devkit","packageVersion":"0.12.1","generatedAt":"2026-10-26T13:17:00.408Z","generatedFrom":{"gitSha":"41387650836f424f88194281ca240594e93e78da"},"components":[{"name":"Accordion","path":"src/primitives/components/accordion/index.tsx","description":"Vertically stacked, collapsible content panels with optional toggle icon. Renders a styled wrapper around Radix Accordion: pass `title` for the default header or compose `<AccordionItem>`s as childre…","descriptionFull":"Vertically stacked, collapsible content panels with optional toggle icon. Renders a styled wrapper around Radix Accordion: pass `title` for the default header or compose `<AccordionItem>`s as children for full control","tier":"agent-ready","public":true,"category":"layout","domainContext":"generic","props":[{"name":"title","type":"string","required":false,"default":"\"\"","description":"Header label shown in the trigger button"},{"name":"isRow","type":"boolean","required":false,"default":"false","description":"Lays out the content area as a flex row instead of column"},{"name":"isOpened","type":"boolean","required":false,"default":"false","description":"Whether the panel starts expanded"},{"name":"unpadded","type":"boolean","required":false,"default":"false","description":"Removes the default inner padding from the content area"},{"name":"noBorder","type":"boolean","required":false,"default":"false","description":"Removes the bottom border from the trigger"},{"name":"showToggleIcon","type":"boolean","required":false,"default":"true","description":"Shows/hides the expand/collapse chevron icon"},{"name":"solidBackground","type":"boolean","required":false,"default":"false","description":"Applies a solid background to the accordion container"},{"name":"customLabel","type":"React.ReactNode","required":false,"description":"Extra content (e.g. a badge) rendered in the trigger header"},{"name":"toggleIconPosition","type":"\"left\" | \"right\"","required":false,"default":"\"left\"","description":"Side on which the toggle icon appears"},{"name":"onValueChange","type":"((value: string | string[]) => void)","required":false,"description":"Fired when the open/close state changes"}],"examples":["src/primitives/components/accordion/accordion.example.tsx"],"usageDoc":"src/primitives/components/accordion/USAGE.md"},{"name":"AccordionContent","path":"src/primitives/components/accordion/index.tsx","description":"Accordion Content component (collapsible content area)","tier":"agent-ready","public":true,"category":"layout","domainContext":"generic","props":[],"examples":["src/primitives/components/accordion/accordion.example.tsx"],"usageDoc":"src/primitives/components/accordion/USAGE.md"},{"name":"AccordionItem","path":"src/primitives/components/accordion/index.tsx","description":"Single collapsible row within an `<Accordion>`. Pass a unique `value` so Radix can track open/closed state; wrap an `<AccordionTrigger>` and an `<AccordionContent>` as children","tier":"agent-ready","public":true,"category":"layout","domainContext":"generic","props":[],"examples":["src/primitives/components/accordion/accordion.example.tsx"],"usageDoc":"src/primitives/components/accordion/USAGE.md"},{"name":"AccordionTrigger","path":"src/primitives/components/accordion/index.tsx","description":"Accordion Trigger component (header/button)","tier":"agent-ready","public":true,"category":"layout","domainContext":"generic","props":[{"name":"timestamp","type":"string","required":false,"description":"Forwarded to the underlying Radix trigger element; not rendered by the component"},{"name":"showToggleIcon","type":"boolean","required":false,"default":"true","description":"Shows/hides the toggle icon"},{"name":"toggleIconPosition","type":"\"left\" | \"right\"","required":false,"default":"\"left\"","description":"Side on which the toggle icon appears"},{"name":"customLabel","type":"React.ReactNode","required":false,"description":"Slot for extra content in the trigger header"}],"examples":["src/primitives/components/accordion/accordion.example.tsx"],"usageDoc":"src/primitives/components/accordion/USAGE.md"},{"name":"ActionButton","path":"src/primitives/components/action-button/index.tsx","description":"ActionButton component with confirmation popover or dialog","tier":"agent-ready","public":true,"category":"actions","domainContext":"generic","props":[{"name":"label","type":"string","required":false,"description":"Button label text"},{"name":"loading","type":"boolean","required":false,"description":"Shows a spinner on the trigger button"},{"name":"disabled","type":"boolean","required":false,"description":"Disables the trigger button"},{"name":"className","type":"string","required":false,"description":"Additional class for the trigger button"},{"name":"variant","type":"\"primary\" | \"danger\" | \"secondary\"","required":false,"default":"\"secondary\"","description":"Visual style of the trigger button"},{"name":"confirmation","type":"ActionButtonConfirmation","required":true,"description":"Configuration for the confirmation UI"},{"name":"mode","type":"\"dialog\" | \"popover\"","required":false,"default":"\"popover\"","description":"Confirmation mode: popover (inline) or dialog (modal)"}],"shapes":[{"name":"ActionButtonConfirmation","fields":[{"name":"title","type":"string","required":true,"description":"Heading shown in the confirmation UI"},{"name":"cancelLabel","type":"string","required":false,"default":"\"Cancel\"","description":"Label for the cancel button"},{"name":"confirmLabel","type":"string","required":false,"default":"'OK' (popover) / 'Confirm' (dialog)","description":"Label for the confirm button. Defaults to `'OK'` in popover mode and `'Confirm'` in dialog mode"},{"name":"icon","type":"React.ReactNode","required":false,"default":"<QuestionMarkCircledIcon>","description":"Icon shown in the popover header (popover mode only)"},{"name":"onCancel","type":"VoidFunction","required":false,"description":"Fired when the user cancels"},{"name":"onConfirm","type":"VoidFunction","required":false,"description":"Fired when the user confirms"},{"name":"description","type":"React.ReactNode","required":false,"description":"Body text or node shown below the title"}]}],"examples":["src/primitives/components/action-button/action-button.example.tsx"],"usageDoc":"src/primitives/components/action-button/USAGE.md"},{"name":"ActiveIncidentsCard","path":"src/domain/components/active-incidents-card/index.tsx","description":"Summary card displaying a list of active incidents/alerts with severity indicators, loading skeleton, and empty state. Rows are virtualized via `@tanstack/react-virtual` so the card stays responsive…","descriptionFull":"Summary card displaying a list of active incidents/alerts with severity indicators, loading skeleton, and empty state. Rows are virtualized via `@tanstack/react-virtual` so the card stays responsive with thousands of incidents","tier":"agent-ready","public":true,"category":"cards","kernelCapabilities":["incident-alerts"],"domainContext":"mining-operations","props":[{"name":"label","type":"string","required":false,"default":"\"Active Alerts\"","description":"Header label shown above the list"},{"name":"isLoading","type":"boolean","required":false,"default":"false","description":"Show skeleton rows instead of items"},{"name":"className","type":"string","required":false,"description":"Additional class names appended to the root"},{"name":"skeletonRows","type":"number","required":false,"default":"4","description":"Number of skeleton rows shown when `isLoading`"},{"name":"emptyMessage","type":"string","required":false,"description":"Message rendered when no items"},{"name":"items","type":"TIncidentRowProps[]","required":false,"default":"[]","description":"Incident rows to render"},{"name":"onItemClick","type":"(id: string) => void","required":false,"description":"Called with the incident id when a row is clicked"}],"shapes":[{"name":"TIncidentRowProps","fields":[{"name":"id","type":"string","required":true,"description":"Incident identifier; the virtual-list row key and the argument passed to the click handler"},{"name":"title","type":"string","required":true,"description":"First line of the row"},{"name":"body","type":"string","required":true,"description":"Third line of the row, under `subtitle`"},{"name":"subtitle","type":"string","required":true,"description":"Second line of the row, under `title`"},{"name":"severity","type":"\"high\" | \"medium\" | \"critical\"","required":true,"description":"`critical`, `high` or `medium`; sets the colored severity dot beside the row"},{"name":"onClick","type":"((id: string) => void)","required":false,"description":"Row click handler, called with `id`; in `ActiveIncidentsCard` it is always replaced by `onItemClick`"}]}],"examples":["src/domain/components/active-incidents-card/active-incidents-card.example.tsx"],"usageDoc":"src/domain/components/active-incidents-card/USAGE.md"},{"name":"AddUserModal","path":"src/domain/components/settings/add-user-modal/add-user-modal.tsx","description":"Modal form for inviting a new user — captures email, role, and optional team assignment","tier":"agent-ready","public":true,"category":"settings","kernelCapabilities":["device-management"],"domainContext":"device-management","props":[{"name":"open","type":"boolean","required":true,"description":"Controls whether the dialog is visible"},{"name":"onClose","type":"VoidFunction","required":true,"description":"Called when the user dismisses the modal (cancel or backdrop)"},{"name":"roles","type":"RoleOption[]","required":true,"description":"List of assignable roles rendered in the role select drop-down"},{"name":"onSubmit","type":"(data: { name: string; email: string; role: string }) => Promise<void>","required":true,"description":"Async handler called with validated form values on submission"},{"name":"isSubmitting","type":"boolean","required":false,"default":"false","description":"Disables the submit button and shows a loading label while the parent is saving"}],"examples":["src/domain/components/settings/add-user-modal/add-user-modal.example.tsx"],"usageDoc":"src/domain/components/settings/add-user-modal/USAGE.md"},{"name":"AlarmContents","path":"src/domain/components/alarm/alarm-contents/alarm-contents.tsx","description":"Body region of an alarm card listing the alert details and recommended next actions","tier":"agent-ready","public":true,"category":"feedback","kernelCapabilities":["incident-alerts"],"domainContext":"mining-operations","props":[{"name":"alarmsData","type":"unknown","required":true,"description":"Alert entries to render. Falls back to `EmptyState` when empty or falsy"},{"name":"onNavigate","type":"(path: string) => void","required":true,"description":"Navigation callback forwarded to each `AlarmRow` for click-through routing"}],"examples":["src/domain/components/alarm/alarm-contents/alarm-contents.example.tsx"],"usageDoc":"src/domain/components/alarm/alarm-contents/USAGE.md"},{"name":"AlarmRow","path":"src/domain/components/alarm/alarm-row/alarm-row.tsx","description":"Single alarm-feed row with severity dot, timestamp, source device, and the alert message","tier":"agent-ready","public":true,"category":"feedback","kernelCapabilities":["incident-alerts"],"domainContext":"mining-operations","props":[{"name":"data","type":"TimelineItemData","required":true,"description":"The alarm entry to render"},{"name":"onNavigate","type":"(path: string) => void","required":true,"description":"Called when the row is clicked; receives the alarm `uuid` as the path segment"}],"shapes":[{"name":"TimelineItemData","fields":[{"name":"item","type":"AlarmItemData","required":true,"description":"The alarm rendered by the row: `title`, `subtitle`, `body` (split on `|` into lines), `status` (`Critical`, `High` or `…","descriptionFull":"The alarm rendered by the row: `title`, `subtitle`, `body` (split on `|` into lines), `status` (`Critical`, `High` or `Medium` sets the color and icon) and `uuid` (click target `/alerts/<uuid>`)"},{"name":"dot","type":"React.ReactNode","required":true,"description":"Timeline marker (e.g. `LogDot`), built by the caller; not rendered by `AlarmRow`"},{"name":"children","type":"React.ReactNode","required":true,"description":"Prebuilt `LogItem` node, built by the caller; not rendered by `AlarmRow`"}]}],"examples":["src/domain/components/alarm/alarm-row/alarm-row.example.tsx"],"usageDoc":"src/domain/components/alarm/alarm-row/USAGE.md"},{"name":"AlarmsBellButton","path":"src/domain/components/header-actions/alarms-bell-button.tsx","description":"Top-bar bell button with a three-line severity badge (critical / high / medium). Counts are caller-provided so the button stays domain-agnostic; derive them from whatever alerts route your app serves","descriptionFull":"Top-bar bell button with a three-line severity badge (critical / high / medium). Counts are caller-provided so the button stays domain-agnostic; derive them from whatever alerts route your app serves.\n\n`onClick` fires for the bell itself; pass `onSeverityClick` to make each count its own button (severity-filtered deep-link). The two are independent — clicking a severity does not also fire `onClick`","tier":"agent-ready","public":true,"category":"dashboard","kernelCapabilities":["alerting"],"domainContext":"mining-operations","props":[{"name":"counts","type":"AlarmsBellButtonCounts","required":false,"default":"{}","description":"Severity-bucketed alarm counts rendered in the stacked badge"},{"name":"onClick","type":"((event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void)","required":false,"description":"Click handler — typically opens an alerts panel or routes to /alerts"},{"name":"onSeverityClick","type":"((severity: AlarmSeverity, event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void)","required":false,"description":"Click handler for an individual severity count. When provided, each badge row becomes its own button so an operator can…","descriptionFull":"Click handler for an individual severity count. When provided, each badge row becomes its own button so an operator can jump straight to the alerts page filtered by that severity (e.g. `/alerts?severity=critical`). When omitted, the counts render as plain (non-interactive) text"},{"name":"label","type":"string","required":false,"default":"\"Active alarms\"","description":"Accessible label. Defaults to \"Active alarms\""},{"name":"className","type":"string","required":false,"description":"Additional class names"}],"shapes":[{"name":"AlarmsBellButtonCounts","fields":[{"name":"critical","type":"number","required":false,"description":"Critical alarm count, shown as the top badge row; omit to hide the row"},{"name":"high","type":"number","required":false,"description":"High alarm count, shown as the middle badge row; omit to hide the row"},{"name":"medium","type":"number","required":false,"description":"Medium alarm count, shown as the bottom badge row; omit to hide the row"}]}],"examples":["src/domain/components/header-actions/header-actions.example.tsx"],"usageDoc":"src/domain/components/header-actions/USAGE.md"},{"name":"AlertConfirmationModal","path":"src/domain/components/alerts/current-alerts/alert-confirmation-modal/alert-confirmation-modal.tsx","description":"Modal that confirms acknowledging or clearing one or more alerts before applying the change","tier":"agent-ready","public":true,"category":"tables","kernelCapabilities":["hashrate-monitoring"],"domainContext":"mining-operations","props":[{"name":"isOpen","type":"boolean","required":true,"description":"Controls dialog visibility"},{"name":"onOk","type":"VoidFunction","required":true,"description":"Called when the user confirms the action"}],"examples":["src/domain/components/alerts/current-alerts/alert-confirmation-modal/alert-confirmation-modal.example.tsx"],"usageDoc":"src/domain/components/alerts/current-alerts/alert-confirmation-modal/USAGE.md"},{"name":"AlertDialogAction","path":"src/primitives/components/alert-dialog/index.tsx","description":"Primary confirmation button inside an `<AlertDialog>`; clicking dismisses the dialog and runs the action handler","tier":"agent-ready","public":true,"category":"dialogs","domainContext":"generic","props":[],"examples":["src/primitives/components/alert-dialog/alert-dialog.example.tsx"],"usageDoc":"src/primitives/components/alert-dialog/USAGE.md"},{"name":"AlertDialogCancel","path":"src/primitives/components/alert-dialog/index.tsx","description":"Secondary dismiss button inside an `<AlertDialog>`; closes the dialog without invoking the destructive action","tier":"agent-ready","public":true,"category":"dialogs","domainContext":"generic","props":[],"examples":["src/primitives/components/alert-dialog/alert-dialog.example.tsx"],"usageDoc":"src/primitives/components/alert-dialog/USAGE.md"},{"name":"AlertDialogContent","path":"src/primitives/components/alert-dialog/index.tsx","description":"Modal content surface for an `<AlertDialog>` — renders the centered panel above the overlay with focus trap","tier":"agent-ready","public":true,"category":"dialogs","domainContext":"generic","props":[],"examples":["src/primitives/components/alert-dialog/alert-dialog.example.tsx"],"usageDoc":"src/primitives/components/alert-dialog/USAGE.md"},{"name":"AlertDialogDescription","path":"src/primitives/components/alert-dialog/index.tsx","description":"Supporting body text inside an `<AlertDialog>`; conveys the consequences of the action being confirmed","tier":"agent-ready","public":true,"category":"dialogs","domainContext":"generic","props":[],"examples":["src/primitives/components/alert-dialog/alert-dialog.example.tsx"],"usageDoc":"src/primitives/components/alert-dialog/USAGE.md"},{"name":"AlertDialogFooter","path":"src/primitives/components/alert-dialog/index.tsx","description":"Right-aligned action row inside an `<AlertDialog>` — hosts the cancel and confirm buttons","tier":"agent-ready","public":true,"category":"dialogs","domainContext":"generic","props":[],"examples":["src/primitives/components/alert-dialog/alert-dialog.example.tsx"],"usageDoc":"src/primitives/components/alert-dialog/USAGE.md"},{"name":"AlertDialogHeader","path":"src/primitives/components/alert-dialog/index.tsx","description":"Top section of an `<AlertDialog>` that groups the title and description above the action row","tier":"agent-ready","public":true,"category":"dialogs","domainContext":"generic","props":[],"examples":["src/primitives/components/alert-dialog/alert-dialog.example.tsx"],"usageDoc":"src/primitives/components/alert-dialog/USAGE.md"},{"name":"AlertDialogOverlay","path":"src/primitives/components/alert-dialog/index.tsx","description":"Full-viewport scrim rendered behind an `<AlertDialog>` to block interaction with the page","tier":"agent-ready","public":true,"category":"dialogs","domainContext":"generic","props":[],"examples":["src/primitives/components/alert-dialog/alert-dialog.example.tsx"],"usageDoc":"src/primitives/components/alert-dialog/USAGE.md"},{"name":"AlertDialogTitle","path":"src/primitives/components/alert-dialog/index.tsx","description":"Prominent title text inside an `<AlertDialog>` summarising the action that requires confirmation","tier":"agent-ready","public":true,"category":"dialogs","domainContext":"generic","props":[],"examples":["src/primitives/components/alert-dialog/alert-dialog.example.tsx"],"usageDoc":"src/primitives/components/alert-dialog/USAGE.md"},{"name":"AlertsTableTitle","path":"src/domain/components/alerts/alerts-table-title/alerts-table-title.tsx","description":"Title strip for an alerts table with the section heading and an optional count badge","tier":"agent-ready","public":true,"category":"tables","kernelCapabilities":["hashrate-monitoring"],"domainContext":"mining-operations","props":[{"name":"title","type":"React.ReactNode","required":true,"description":"Section heading"},{"name":"subtitle","type":"React.ReactNode","required":false,"description":"Optional subtitle or count badge"},{"name":"className","type":"string","required":false,"description":"Additional CSS class"}],"examples":["src/domain/components/alerts/alerts-table-title/alerts-table-title.example.tsx"],"usageDoc":"src/domain/components/alerts/alerts-table-title/USAGE.md"},{"name":"AppHeader","path":"src/primitives/components/app-header/app-header.tsx","description":"Generic top-bar shell with three slots: `start`, `children` (middle), and `actions` (end). Renders a sticky dark surface; consumers compose any content into the slots. The sidebar collapse toggle, br…","descriptionFull":"Generic top-bar shell with three slots: `start`, `children` (middle), and `actions` (end). Renders a sticky dark surface; consumers compose any content into the slots. The sidebar collapse toggle, brand logo, stats strip, and action buttons are all caller-provided — this component owns no domain","tier":"agent-ready","public":true,"category":"navigation","domainContext":"generic","props":[{"name":"logo","type":"React.ReactNode","required":false,"description":"Left-most slot — typically the app's brand lockup / logo"},{"name":"start","type":"React.ReactNode","required":false,"description":"Left-edge content — e.g. a sidebar collapse toggle or brand wordmark"},{"name":"children","type":"React.ReactNode","required":false,"description":"Middle slot — e.g. the dashboard stats strip or page title"},{"name":"actions","type":"React.ReactNode","required":false,"description":"Right-edge action cluster — e.g. alarms bell, profile menu, or sign-out"},{"name":"className","type":"string","required":false,"description":"Optional class hook for the outer `<header>` element"},{"name":"sticky","type":"boolean","required":false,"default":"true","description":"Render the header sticky to the top of its scroll container"}],"examples":["src/primitives/components/app-header/app-header.example.tsx"],"usageDoc":"src/primitives/components/app-header/USAGE.md"},{"name":"AreaChart","path":"src/primitives/components/area-chart/index.tsx","description":"Presentational Chart.js area chart (Line with fill). Data must be provided via props; this component does no fetching of its own","tier":"agent-ready","public":true,"category":"charts","domainContext":"generic","props":[{"name":"data","type":"ChartData<\"line\", (number | Point | null)[], unknown>","required":true,"description":"Chart data - required, provided by parent"},{"name":"options","type":"object","required":false,"description":"Chart.js options - merged with defaults"},{"name":"tooltip","type":"ChartTooltipConfig","required":false,"description":"Custom HTML tooltip configuration. When provided, replaces the default Chart.js tooltip"},{"name":"height","type":"number","required":false,"default":"300","description":"Chart height in pixels"},{"name":"className","type":"string","required":false,"description":"Additional class names"}],"examples":["src/primitives/components/area-chart/area-chart.example.tsx"],"usageDoc":"src/primitives/components/area-chart/USAGE.md"},{"name":"ArrowIcon","path":"src/primitives/components/icons/arrow-icon.tsx","description":"Directional arrow glyph (up / down / left / right) used by sortable headers, breadcrumbs, and toggles","tier":"agent-ready","public":true,"category":"media","domainContext":"generic","props":[{"name":"isOpen","type":"boolean","required":false},{"name":"size","type":"string | number","required":false,"description":"Sets both width and height"},{"name":"color","type":"string","required":false,"default":"\"currentColor\"","description":"Only affects single-color icons (default: 'currentColor')"},{"name":"children","type":"undefined","required":false}],"examples":["src/primitives/components/icons/icons.example.tsx"],"usageDoc":"src/primitives/components/icons/USAGE.md"},{"name":"Avatar","path":"src/primitives/components/avatar/index.tsx","description":"Circular avatar surface that shows a profile image with a graceful text fallback when the image fails to load","tier":"agent-ready","public":true,"category":"display","domainContext":"generic","props":[],"examples":["src/primitives/components/avatar/avatar.example.tsx"],"usageDoc":"src/primitives/components/avatar/USAGE.md"},{"name":"AvatarFallback","path":"src/primitives/components/avatar/index.tsx","description":"Initials or icon placeholder shown inside `<Avatar>` while the image loads or when no image is available","tier":"agent-ready","public":true,"category":"display","domainContext":"generic","props":[],"examples":["src/primitives/components/avatar/avatar.example.tsx"],"usageDoc":"src/primitives/components/avatar/USAGE.md"},{"name":"AvatarImage","path":"src/primitives/components/avatar/index.tsx","description":"Profile image slot inside `<Avatar>` — renders `src` and triggers the fallback on load failure","tier":"agent-ready","public":true,"category":"display","domainContext":"generic","props":[],"examples":["src/primitives/components/avatar/avatar.example.tsx"],"usageDoc":"src/primitives/components/avatar/USAGE.md"},{"name":"AverageDowntimeChart","path":"src/primitives/components/average-downtime-chart/index.tsx","description":"Stacked bar chart of average downtime (curtailment vs operational issues). Wraps `ChartContainer` and `BarChart`; pass period labels and rate arrays via `data`","tier":"agent-ready","public":true,"category":"charts","domainContext":"generic","props":[{"name":"title","type":"string","required":false,"default":"\"Monthly Average Downtime\"","description":"Chart title (unit renders on its own line below)"},{"name":"unit","type":"string","required":false,"default":"%","description":"Unit subtitle under the title"},{"name":"height","type":"number","required":false,"default":"280","description":"Chart height in pixels"},{"name":"barWidth","type":"number","required":false,"default":"38","description":"Max bar thickness"},{"name":"className","type":"string","required":false,"description":"Extra class on the container"},{"name":"isLoading","type":"boolean","required":false,"default":"false","description":"Shows loading overlay"},{"name":"emptyMessage","type":"string","required":false,"description":"Message when there are no period labels or rate series"},{"name":"data","type":"AverageDowntimeChartData","required":false,"description":"Period labels and rate arrays (fractions 0–1)"},{"name":"yTicksFormatter","type":"(value: number) => string","required":false,"description":"Formats Y-axis ticks, tooltips, and bar data labels (values are 0–1 rates). Defaults to rate × 100 via `formatNumber`"},{"name":"showDataLabels","type":"boolean","required":false,"default":"false","description":"Show values above stacked bars"}],"shapes":[{"name":"AverageDowntimeChartData","fields":[{"name":"labels","type":"string[]","required":true,"description":"X-axis period labels, one per bar; empty renders the empty state"},{"name":"curtailment","type":"number[]","required":false,"description":"\"Curtailment\" downtime rate per period, as a fraction (0–1), aligned to `labels`"},{"name":"operationalIssues","type":"number[]","required":false,"description":"\"Op. Issues\" downtime rate per period, as a fraction (0–1), stacked on `curtailment`"}]}],"examples":["src/primitives/components/average-downtime-chart/average-downtime-chart.example.tsx"],"usageDoc":"src/primitives/components/average-downtime-chart/USAGE.md"},{"name":"Badge","path":"src/primitives/components/badge/index.tsx","description":"Badge component - Display badge with number or dot","tier":"agent-ready","public":true,"category":"display","domainContext":"generic","props":[{"name":"children","type":"React.ReactNode","required":false,"description":"Badge content (wraps children with badge)"},{"name":"count","type":"number","required":false,"default":"0","description":"Number to display in badge If > overflowCount, will show \"overflowCount+\""},{"name":"overflowCount","type":"number","required":false,"default":"99","description":"Maximum count to display"},{"name":"showZero","type":"boolean","required":false,"default":"false","description":"Whether to show badge when count is 0"},{"name":"dot","type":"boolean","required":false,"default":"false","description":"Show badge as a dot"},{"name":"text","type":"string","required":false,"description":"Custom badge content (overrides count)"},{"name":"color","type":"\"success\" | \"info\" | \"warning\" | \"error\" | \"primary\" | \"secondary\" | \"default\"","required":false,"default":"\"primary\"","description":"Color variant"},{"name":"size","type":"\"sm\" | \"md\" | \"lg\"","required":false,"default":"\"md\"","description":"Badge size"},{"name":"offset","type":"[number, number]","required":false,"default":"[0, 0]","description":"Offset position [x, y] in pixels"},{"name":"square","type":"boolean","required":false,"default":"false","description":"Square badge (no border-radius)"},{"name":"className","type":"string","required":false,"description":"Custom className for badge"},{"name":"wrapperClassName","type":"string","required":false,"description":"Custom className for wrapper"},{"name":"title","type":"string","required":false,"description":"Badge title for accessibility"},{"name":"status","type":"\"success\" | \"warning\" | \"error\" | \"default\" | \"processing\"","required":false,"description":"Status badge (small dot badge with text)"}],"examples":["src/primitives/components/badge/badge.example.tsx"],"usageDoc":"src/primitives/components/badge/USAGE.md"},{"name":"BarChart","path":"src/primitives/components/bar-chart/index.tsx","description":"Presentational Chart.js bar chart. Data must be pre-aggregated; use grouped or stacked categories via `datasets`","tier":"agent-ready","public":true,"category":"charts","domainContext":"generic","props":[{"name":"data","type":"any","required":true,"description":"Chart data - required, provided by parent. Use `as any` for mixed bar+line datasets"},{"name":"options","type":"object","required":false,"description":"Chart.js options - merged with defaults"},{"name":"isStacked","type":"boolean","required":false,"default":"false","description":"Stack bars on top of each other"},{"name":"isHorizontal","type":"boolean","required":false,"default":"false","description":"Render bars horizontally (indexAxis: 'y')"},{"name":"formatYLabel","type":"((value: number) => string)","required":false,"description":"Format Y-axis tick labels"},{"name":"showLegend","type":"boolean","required":false,"default":"true","description":"Show built-in Chart.js legend"},{"name":"legendPosition","type":"\"left\" | \"right\" | \"top\" | \"bottom\"","required":false,"default":"\"top\"","description":"Position of the legend"},{"name":"legendAlign","type":"\"center\" | \"start\" | \"end\"","required":false,"default":"\"start\"","description":"Alignment of the legend labels within their position"},{"name":"showDataLabels","type":"boolean","required":false,"default":"false","description":"Show values above each bar"},{"name":"formatDataLabel","type":"((value: number) => string)","required":false,"description":"Format data label values (default: round to nearest integer)"},{"name":"tooltip","type":"ChartTooltipConfig","required":false,"description":"Custom HTML tooltip configuration. When provided, replaces the default Chart.js tooltip"},{"name":"height","type":"number","required":false,"default":"300","description":"Chart height in pixels"},{"name":"className","type":"string","required":false,"description":"Additional class for the wrapper `div`"}],"examples":["src/primitives/components/bar-chart/bar-chart.example.tsx"],"usageDoc":"src/primitives/components/bar-chart/USAGE.md"},{"name":"Breadcrumbs","path":"src/primitives/components/breadcrumbs/index.tsx","description":"Hierarchical navigation trail that renders the path of pages leading to the current view. Each item can be a link (`href` or `onClick`) or plain text; the last item is rendered as the current page. P…","descriptionFull":"Hierarchical navigation trail that renders the path of pages leading to the current view. Each item can be a link (`href` or `onClick`) or plain text; the last item is rendered as the current page. Pass `showBack` to prepend a \"back\" affordance for mobile/touch layouts. The separator between items is customisable via `separator` (defaults to `/`)","tier":"agent-ready","public":true,"category":"navigation","domainContext":"generic","props":[{"name":"items","type":"BreadcrumbItem[]","required":true,"description":"Ordered trail; the last item is rendered as current"},{"name":"showBack","type":"boolean","required":false,"default":"false","description":"Show a leading \"Back\" button"},{"name":"backLabel","type":"string","required":false,"default":"\"Back\"","description":"Label for the back button"},{"name":"className","type":"string","required":false,"description":"Root class names"},{"name":"itemClassName","type":"string","required":false,"description":"Class names applied to each item"},{"name":"backClassName","type":"string","required":false,"description":"Class names applied to the back button"},{"name":"onBackClick","type":"VoidFunction","required":false,"description":"Callback fired when the back button is clicked"},{"name":"separator","type":"React.ReactNode","required":false,"default":"\"/\"","description":"Custom separator between items"}],"shapes":[{"name":"BreadcrumbItem","fields":[{"name":"label","type":"string","required":true,"description":"Text shown for the crumb"},{"name":"href","type":"string","required":false,"description":"Renders the crumb as a link; takes precedence over `onClick`"},{"name":"onClick","type":"VoidFunction","required":false,"description":"Renders the crumb as a button when `href` is absent; with neither, the crumb is plain text"}]}],"examples":["src/primitives/components/breadcrumbs/breadcrumbs.example.tsx"],"usageDoc":"src/primitives/components/breadcrumbs/USAGE.md"},{"name":"BtcAveragePrice","path":"src/primitives/components/btc-average-price/index.tsx","description":"Read-only BTC average price label for reporting toolbars","tier":"agent-ready","public":true,"category":"display","domainContext":"generic","props":[{"name":"price","type":"number | null","required":false,"description":"BTC price in USD; formatted with grouping and no decimal places. When `null`, `undefined`, non-finite, or negative, the…","descriptionFull":"BTC price in USD; formatted with grouping and no decimal places. When `null`, `undefined`, non-finite, or negative, the value shows `-` (`FALLBACK` from format utils)"},{"name":"label","type":"string","required":false,"default":"\"BTC Average Price\"","description":"Label for the BTC average price"}],"examples":["src/primitives/components/btc-average-price/btc-average-price.example.tsx"],"usageDoc":"src/primitives/components/btc-average-price/USAGE.md"},{"name":"Button","path":"src/primitives/components/button/index.tsx","description":"Primary action button. Supports loading state with spinner, icon placement, variants, sizes, and full-width layout. Forwards refs and all native button attributes","tier":"agent-ready","public":true,"category":"actions","domainContext":"generic","props":[{"name":"loading","type":"boolean","required":false,"default":"false","description":"Show a spinner instead of the content and disable the button"},{"name":"fullWidth","type":"boolean","required":false,"default":"false","description":"Make the button stretch to fill its container"},{"name":"icon","type":"React.ReactNode","required":false,"description":"Icon node rendered alongside `children`"},{"name":"variant","type":"\"icon\" | \"link\" | \"primary\" | \"danger\" | \"secondary\" | \"tertiary\" | \"nav-link\" | \"outline\" | \"ghost\"","required":false,"default":"\"secondary\"","description":"Visual variant (e.g. `primary`, `secondary`, `ghost`)"},{"name":"contentClassName","type":"string","required":false,"description":"Class names applied to the inner content wrapper"},{"name":"iconPosition","type":"\"left\" | \"right\"","required":false,"default":"\"left\"","description":"Icon placement relative to children"},{"name":"size","type":"\"sm\" | \"md\" | \"lg\"","required":false,"description":"Size token (`sm`, `md`, `lg`)"},{"name":"disabled","type":"boolean","required":false,"default":"false","description":"Disable the button"},{"name":"type","type":"\"button\" | \"submit\" | \"reset\"","required":false,"default":"\"button\"","description":"Native button type"}],"examples":["src/primitives/components/button/button.example.tsx"],"usageDoc":"src/primitives/components/button/USAGE.md"},{"name":"CardBody","path":"src/primitives/components/card/index.tsx","description":"Main content region of a `<Card>` — applies the standard inner padding and vertical rhythm","tier":"agent-ready","public":true,"category":"layout","domainContext":"generic","props":[],"examples":["src/primitives/components/card/card.example.tsx"],"usageDoc":"src/primitives/components/card/USAGE.md"},{"name":"CardFooter","path":"src/primitives/components/card/index.tsx","description":"Bottom action/metadata row of a `<Card>`, typically used for buttons, timestamps, or secondary info","tier":"agent-ready","public":true,"category":"layout","domainContext":"generic","props":[],"examples":["src/primitives/components/card/card.example.tsx"],"usageDoc":"src/primitives/components/card/USAGE.md"},{"name":"CardHeader","path":"src/primitives/components/card/index.tsx","description":"Top region of a `<Card>` that groups the title, optional subtitle, and an action slot","tier":"agent-ready","public":true,"category":"layout","domainContext":"generic","props":[],"examples":["src/primitives/components/card/card.example.tsx"],"usageDoc":"src/primitives/components/card/USAGE.md"},{"name":"Cascader","path":"src/primitives/components/cascader/index.tsx","description":"Two-panel hierarchical selector for picking a leaf value from a nested tree (categories → subcategories → leaf)","descriptionFull":"Two-panel hierarchical selector for picking a leaf value from a nested tree (categories → subcategories → leaf).\n\nFeatures: - Two-column layout: categories on left, options on right - Single or multiple selection modes - Search/filter functionality via TagInput - Category-level selection (select/deselect all children) - Indeterminate state for partial selections - Tag display for multiple selections - Keyboard navigation support - Disabled state support","tier":"agent-ready","public":true,"category":"forms","domainContext":"generic","props":[{"name":"options","type":"CascaderOption[]","required":true,"description":"Hierarchical options to display in the cascader Parent options with children appear in the left panel Child options app…","descriptionFull":"Hierarchical options to display in the cascader Parent options with children appear in the left panel Child options appear in the right panel when parent is selected"},{"name":"value","type":"CascaderValue | CascaderValue[]","required":false,"description":"Current selected value(s) - For single select: CascaderValue (e.g., ['category', 'option']) - For multiple select: Casc…","descriptionFull":"Current selected value(s) - For single select: CascaderValue (e.g., ['category', 'option']) - For multiple select: CascaderValue[] (e.g., [['cat1', 'opt1'], ['cat2', 'opt2']])"},{"name":"onChange","type":"((value: CascaderValue | CascaderValue[] | null) => void)","required":false,"description":"Callback when selection changes - For single select: receives CascaderValue or null - For multiple select: receives Cas…","descriptionFull":"Callback when selection changes - For single select: receives CascaderValue or null - For multiple select: receives CascaderValue[] or null"},{"name":"multiple","type":"boolean","required":false,"default":"false","description":"Enable multiple selection mode - true: Shows checkboxes, allows multiple selections, displays selected items as tags -…","descriptionFull":"Enable multiple selection mode - true: Shows checkboxes, allows multiple selections, displays selected items as tags - false: Shows radio buttons, allows single selection"},{"name":"placeholder","type":"string","required":false,"default":"\"Select...\"","description":"Placeholder text shown in the input when no selections are made"},{"name":"disabled","type":"boolean","required":false,"default":"false","description":"Disable the entire cascader (input and all options)"},{"name":"className","type":"string","required":false,"description":"Custom className for the root cascader element"},{"name":"dropdownClassName","type":"string","required":false,"description":"Custom className for the dropdown panels container"}],"shapes":[{"name":"CascaderOption","fields":[{"name":"value","type":"string | number | boolean","required":true,"description":"Unique value for the option"},{"name":"label","type":"string","required":true,"description":"Display label for the option"},{"name":"children","type":"CascaderOption[]","required":false,"description":"Child options (creates a nested category)"},{"name":"disabled","type":"boolean","required":false,"description":"Whether the option is disabled"}]}],"examples":["src/primitives/components/cascader/cascader.example.tsx"],"usageDoc":"src/primitives/components/cascader/USAGE.md"},{"name":"ChangeConfirmationModal","path":"src/domain/components/settings/change-confirmation-modal/change-confirmation-modal.tsx","description":"Generic confirmation modal that shows a diff or summary of pending changes before applying them","tier":"agent-ready","public":true,"category":"settings","kernelCapabilities":["device-management"],"domainContext":"device-management","props":[{"name":"open","type":"boolean","required":true,"description":"Controls whether the dialog is visible"},{"name":"title","type":"string","required":true,"description":"Dialog header title"},{"name":"onConfirm","type":"VoidFunction","required":true,"description":"Called when the user clicks the confirm button"},{"name":"onClose","type":"VoidFunction","required":true,"description":"Called when the user cancels or dismisses the dialog"},{"name":"children","type":"React.ReactNode","required":true,"description":"Body content — use to describe the change being confirmed"},{"name":"confirmText","type":"string","required":false,"default":"\"Confirm\"","description":"Label for the confirm button"},{"name":"destructive","type":"boolean","required":false,"default":"false","description":"When `true`, the confirm button uses the danger variant"}],"examples":["src/domain/components/settings/change-confirmation-modal/change-confirmation-modal.example.tsx"],"usageDoc":"src/domain/components/settings/change-confirmation-modal/USAGE.md"},{"name":"ChartContainer","path":"src/primitives/components/chart-container/index.tsx","description":"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","tier":"agent-ready","public":true,"category":"charts","domainContext":"generic","props":[{"name":"title","type":"string","required":false,"description":"Chart heading (renders as `<h3>` unless `header` is provided)"},{"name":"titleExtra","type":"React.ReactNode","required":false,"description":"Optional node rendered immediately after the title text (e.g. an info tooltip). Only shown when `title` is set and `hea…","descriptionFull":"Optional node rendered immediately after the title text (e.g. an info tooltip). Only shown when `title` is set and `header` is not. Additive - omit it and the title renders exactly as before"},{"name":"header","type":"React.ReactNode","required":false,"description":"Replaces the default `title` heading with a custom element"},{"name":"headerAction","type":"React.ReactNode","required":false,"description":"Optional action rendered on the right side of the header row (e.g. an expand/fullscreen toggle). Sits alongside the ran…","descriptionFull":"Optional action rendered on the right side of the header row (e.g. an expand/fullscreen toggle). Sits alongside the range selector when both are present. Purely additive - omit it and the header renders exactly as before"},{"name":"legendData","type":"LegendItem[]","required":false,"description":"Color-keyed legend items; each item can be toggled"},{"name":"highlightedValue","type":"HighlightedValueProps","required":false,"description":"Large value/unit displayed alongside the legend"},{"name":"rangeSelector","type":"RangeSelectorProps","required":false,"description":"Radio-card time-range selector"},{"name":"loading","type":"boolean","required":false,"description":"Shows a centered `<Loader>` overlay"},{"name":"loader","type":"React.ReactNode","required":false,"description":"Replaces the default `<Loader>` in the loading overlay"},{"name":"empty","type":"boolean","required":false,"description":"Hides the chart and shows `emptyMessage`"},{"name":"emptyMessage","type":"React.ReactNode","required":false,"default":"\"No data available\"","description":"Message shown when `empty` is true: a string, or any element (an `EmptyState`, say)"},{"name":"minMaxAvg","type":"Partial<{ min: string; max: string; avg: string }>","required":false,"description":"Built-in footer showing Min / Avg / Max values"},{"name":"timeRange","type":"string","required":false,"description":"Time range label shown in the footer"},{"name":"footer","type":"React.ReactNode","required":false,"description":"Custom footer content rendered below the chart"},{"name":"footerClassName","type":"string","required":false,"description":"Additional class for the footer area"},{"name":"className","type":"string","required":false,"description":"Additional class for the root element"},{"name":"children","type":"React.ReactNode","required":true,"description":"The chart element to render"},{"name":"onToggleDataset","type":"((index: number) => void)","required":false,"description":"Fired when a legend item is clicked"}],"shapes":[{"name":"LegendItem","fields":[{"name":"label","type":"string","required":true,"description":"Legend label"},{"name":"color","type":"string","required":true,"description":"Color string (hex, hsl, etc.)"},{"name":"hidden","type":"boolean","required":false,"description":"Whether this dataset is currently hidden"}]},{"name":"HighlightedValueProps","fields":[{"name":"value","type":"string | number","required":true,"description":"The primary value to display"},{"name":"unit","type":"string","required":false,"description":"Unit suffix"},{"name":"className","type":"string","required":false,"description":"Additional class"},{"name":"style","type":"React.CSSProperties","required":false,"description":"Inline style"}]},{"name":"RangeSelectorProps","fields":[{"name":"options","type":"RangeSelectorOption[]","required":true,"description":"`{ label, value }` items"},{"name":"value","type":"string","required":true,"description":"Currently selected value"},{"name":"onChange","type":"(value: string) => void","required":true,"description":"Fires when user picks a range"},{"name":"className","type":"string","required":false,"description":"Additional class for the selector"},{"name":"style","type":"React.CSSProperties","required":false,"description":"Inline style for the selector"},{"name":"buttonClassName","type":"string","required":false,"description":"Additional class for each option button"}]}],"examples":["src/primitives/components/chart-container/chart-container.example.tsx"],"usageDoc":"src/primitives/components/chart-container/USAGE.md"},{"name":"ChartStatsFooter","path":"src/primitives/components/chart-stats-footer/index.tsx","description":"ChartStatsFooter - Displays Min/Max/Avg values and optional stats grid below a chart","tier":"agent-ready","public":true,"category":"charts","domainContext":"generic","props":[{"name":"minMaxAvg","type":"Partial<{ min: string; max: string; avg: string }>","required":false,"description":"Min/Max/Avg values row"},{"name":"stats","type":"ChartStatsFooterItem[]","required":false,"description":"Additional stats displayed in a columnar grid"},{"name":"statsPerColumn","type":"number","required":false,"default":"1","description":"Number of stat items per column (default: 1)"},{"name":"secondaryLabel","type":"SecondaryLabel","required":false,"description":"Secondary label displayed below stats"},{"name":"className","type":"string","required":false,"description":"Custom class name"}],"shapes":[{"name":"ChartStatsFooterItem","fields":[{"name":"label","type":"string","required":true,"description":"Stat label"},{"name":"value","type":"string | number","required":true,"description":"Stat value"}]},{"name":"SecondaryLabel","fields":[{"name":"title","type":"string","required":true,"description":"Label text"},{"name":"value","type":"string | number","required":true,"description":"Value text"}]}],"examples":["src/primitives/components/chart-stats-footer/chart-stats-footer.example.tsx"],"usageDoc":"src/primitives/components/chart-stats-footer/USAGE.md"},{"name":"Checkbox","path":"src/primitives/components/checkbox/index.tsx","description":"Checkbox component with full customization","tier":"agent-ready","public":true,"category":"forms","domainContext":"generic","props":[{"name":"checked","type":"CheckedState","required":false,"description":"Controlled checked state"},{"name":"defaultChecked","type":"CheckedState","required":false,"description":"Uncontrolled initial checked state"},{"name":"disabled","type":"boolean","required":false,"default":"false","description":"Disable the input"},{"name":"size","type":"\"sm\" | \"md\" | \"lg\" | \"xs\"","required":false,"default":"\"md\"","description":"Size variant of the checkbox"},{"name":"color","type":"\"success\" | \"warning\" | \"error\" | \"primary\" | \"default\"","required":false,"default":"\"primary\"","description":"Color variant when checked"},{"name":"radius","type":"\"small\" | \"none\" | \"medium\" | \"large\" | \"full\"","required":false,"default":"\"none\"","description":"Border radius variant"},{"name":"className","type":"string","required":false,"description":"Custom className for the root element"},{"name":"indicatorClassName","type":"string","required":false,"description":"Custom className for the indicator element"},{"name":"onCheckedChange","type":"(((checked: CheckedState) => void) & ((checked: CheckedState) => void))","required":false,"description":"Callback when the checked state changes"}],"examples":["src/primitives/components/checkbox/checkbox.example.tsx"],"usageDoc":"src/primitives/components/checkbox/USAGE.md"},{"name":"CoreAlert","path":"src/primitives/components/alert/index.tsx","description":"Inline alert banner with type-based icon, optional description, dismissible close button, and trailing action slot","tier":"agent-ready","public":true,"category":"feedback","domainContext":"generic","props":[{"name":"type","type":"\"success\" | \"info\" | \"warning\" | \"error\"","required":false,"default":"\"info\"","description":"Controls the color scheme and default icon"},{"name":"title","type":"React.ReactNode","required":false,"description":"Main message"},{"name":"description","type":"React.ReactNode","required":false,"description":"Secondary/detail content shown below the title"},{"name":"showIcon","type":"boolean","required":false,"default":"false","description":"Renders the type icon (or the `icon` override) before the content"},{"name":"icon","type":"React.ReactNode","required":false,"description":"Custom icon (used when showIcon is true)"},{"name":"closable","type":"boolean","required":false,"default":"false","description":"Shows an ✕ button; clicking it hides the alert"},{"name":"onClose","type":"React.MouseEventHandler<HTMLButtonElement>","required":false,"description":"Called when close button is clicked"},{"name":"banner","type":"boolean","required":false,"default":"false","description":"Display as full-width banner (no border radius, no margin)"},{"name":"action","type":"React.ReactNode","required":false,"description":"Action element rendered to the right"},{"name":"className","type":"string","required":false,"description":"Custom className"},{"name":"style","type":"React.CSSProperties","required":false,"description":"Custom styles"}],"examples":["src/primitives/components/alert/alert.example.tsx"],"usageDoc":"src/primitives/components/alert/USAGE.md"},{"name":"CurrencyToggler","path":"src/primitives/components/currency-toggler/index.tsx","description":"CurrencyToggler component for switching between currencies","tier":"agent-ready","public":true,"category":"forms","domainContext":"generic","props":[{"name":"value","type":"string","required":true,"description":"Currently selected currency value"},{"name":"className","type":"string","required":false,"description":"Additional class for the root element"},{"name":"currencies","type":"(string | CurrencyItem)[]","required":true,"description":"List of currency options"},{"name":"onChange","type":"(currency: string) => void","required":true,"description":"Fired with the selected currency value when a button is clicked"}],"shapes":[{"name":"CurrencyItem","fields":[{"name":"value","type":"string","required":true,"description":"Option value (used for selection)"},{"name":"label","type":"string","required":false,"description":"Display label (defaults to `value`)"},{"name":"disabled","type":"boolean","required":false,"description":"Disables this option"}]}],"examples":["src/primitives/components/currency-toggler/currency-toggler.example.tsx"],"usageDoc":"src/primitives/components/currency-toggler/USAGE.md"},{"name":"CurrentAlerts","path":"src/domain/components/alerts/current-alerts/current-alerts.tsx","description":"Sortable, searchable data table of currently active alerts derived from a raw devices payload. Plays an audible beep when a critical alert is present (gated by `isSoundEnabled` + user confirmation mo…","descriptionFull":"Sortable, searchable data table of currently active alerts derived from a raw devices payload. Plays an audible beep when a critical alert is present (gated by `isSoundEnabled` + user confirmation modal)","tier":"agent-ready","public":true,"category":"tables","kernelCapabilities":["incident-alerts"],"domainContext":"mining-operations","props":[{"name":"devices","type":"Device[]","required":false,"description":"Devices carrying alerts (`last.alerts`), as a flat list. Unwrapping any backend envelope is the data layer's job, not t…","descriptionFull":"Devices carrying alerts (`last.alerts`), as a flat list. Unwrapping any backend envelope is the data layer's job, not this component's"},{"name":"isLoading","type":"boolean","required":false,"default":"false","description":"Show DataTable loading overlay"},{"name":"localFilters","type":"AlertLocalFilters","required":true,"description":"Filters controlled outside (typically by URL severity param)"},{"name":"onLocalFiltersChange","type":"(filters: AlertLocalFilters) => void","required":true,"description":"Setter for the filters above"},{"name":"filterTags","type":"string[]","required":true,"description":"Search tags (controlled)"},{"name":"onFilterTagsChange","type":"(tags: string[]) => void","required":true,"description":"Setter for the tags above"},{"name":"selectedAlertId","type":"string","required":false,"description":"Optional id used to focus on a single alert (deep-link from URL)"},{"name":"onAlertClick","type":"((id?: string | undefined, uuid?: string | undefined) => void)","required":false,"description":"Click handler when the user opens an alert (right arrow icon in the row)"},{"name":"isSoundEnabled","type":"boolean","required":false,"default":"false","description":"Whether sound notifications are enabled in user preferences (e.g. theme slice)"},{"name":"isDemoMode","type":"boolean","required":false,"default":"false","description":"Skip sound entirely (e.g. in demo/preview environments), including the one-time \"sound notifications\" confirmation modal"},{"name":"typeFiltersForSite","type":"CascaderOption[]","required":false,"description":"Optional site-specific overrides for the type filter"},{"name":"className","type":"string","required":false,"description":"Additional class names"}],"examples":["src/domain/components/alerts/current-alerts/current-alerts.example.tsx"],"usageDoc":"src/domain/components/alerts/current-alerts/USAGE.md"},{"name":"DashboardDateRangePicker","path":"src/domain/components/dashboard/dashboard-date-range-picker/dashboard-date-range-picker.tsx","description":"Dashboard-friendly wrapper around the core `DateRangePicker` that speaks `{ start, end }` epoch-millisecond timestamps instead of `Date` objects, the shape a history route usually takes as query para…","descriptionFull":"Dashboard-friendly wrapper around the core `DateRangePicker` that speaks `{ start, end }` epoch-millisecond timestamps instead of `Date` objects, the shape a history route usually takes as query params","tier":"agent-ready","public":true,"category":"dashboard","kernelCapabilities":["time-range-filtering"],"domainContext":"mining-operations","props":[{"name":"value","type":"DashboardDateRange","required":true,"description":"Current range as `{ start, end }` epoch-millisecond timestamps"},{"name":"onChange","type":"(next: DashboardDateRange) => void","required":true,"description":"Fires with the next `{ start, end }` window when the user applies a range"},{"name":"dateFormat","type":"string","required":false,"default":"\"dd/MM/yyyy\"","description":"Display format. Defaults to `dd/MM/yyyy`"},{"name":"disabled","type":"boolean","required":false,"default":"false","description":"Disable the trigger"},{"name":"className","type":"string","required":false,"description":"Optional class hook"}],"shapes":[{"name":"DashboardDateRange","fields":[{"name":"start","type":"number","required":true,"description":"Window start, milliseconds since epoch"},{"name":"end","type":"number","required":true,"description":"Window end, milliseconds since epoch"}]}],"examples":["src/domain/components/dashboard/dashboard-date-range-picker/dashboard-date-range-picker.example.tsx"],"usageDoc":"src/domain/components/dashboard/dashboard-date-range-picker/USAGE.md"},{"name":"DataLabel","path":"src/primitives/components/data-label/index.tsx","description":"Read-only period label (`PERIOD: start - end`) with timezone-aware dates. Pure: the timezone comes in as a prop","tier":"agent-ready","public":true,"category":"display","domainContext":"generic","props":[{"name":"startDate","type":"Date | null","required":false,"description":"Range start; formatted in the active timezone (`dd/MM/yy`)"},{"name":"endDate","type":"Date | null","required":false,"description":"Range end; formatted in the active timezone (`dd/MM/yy`)"},{"name":"label","type":"string","required":false,"default":"\"PERIOD\"","description":"Label text; defaults to `PERIOD`"},{"name":"timezone","type":"string","required":false,"description":"IANA timezone the dates are shown in (e.g. `'UTC'`). Defaults to the browser's timezone; pass `useTimezone().timezone`…","descriptionFull":"IANA timezone the dates are shown in (e.g. `'UTC'`). Defaults to the browser's timezone; pass `useTimezone().timezone` to follow the user's selected one"}],"examples":["src/primitives/components/data-label/data-label.example.tsx"],"usageDoc":"src/primitives/components/data-label/USAGE.md"},{"name":"DataTable","path":"src/primitives/components/data-table/data-table.tsx","description":"Generic typed data table built on TanStack React Table. Supports pagination, sorting, expansion, row selection and custom column renderers","tier":"agent-ready","public":true,"category":"tables","domainContext":"generic","props":[{"name":"data","type":"I[]","required":true,"description":"The data to be shown in the table. See https://tanstack.com/table/v8/docs/guide/data"},{"name":"columns","type":"ColumnDef<I, any>[]","required":true,"description":"The column configuration table. See https://tanstack.com/table/v8/docs/guide/column-defs"},{"name":"fullWidth","type":"boolean","required":false,"default":"true","description":"Is table full width"},{"name":"enableRowSelection","type":"boolean | ((row: Row<I>) => boolean)","required":false,"default":"false","description":"Show a checkbox column and enables selection"},{"name":"enableMultiRowSelection","type":"boolean","required":false,"default":"true","description":"Enables selection of multiple rows"},{"name":"selections","type":"RowSelectionState","required":false,"default":"undefined","description":"Specify the selected rows. If `undefined`, the selections are managed internally Object with the key of row ID and a bo…","descriptionFull":"Specify the selected rows. If `undefined`, the selections are managed internally Object with the key of row ID and a boolean specifying if the row is selected. The default row ID is the index. This can be changed using `getRowId` prop"},{"name":"onSelectionsChange","type":"((selections: RowSelectionState) => void)","required":false,"description":"Callback to be called when the row are selected / unselected"},{"name":"enablePagination","type":"boolean","required":false,"default":"true","description":"Show pagination"},{"name":"bordered","type":"boolean","required":false,"default":"false","description":"Add borders to all cells"},{"name":"pagination","type":"PaginationState","required":false,"default":"undefined","description":"Specify the pagination params. Object of shape { pageIndex: number, pageSize: number }. If `undefined` then the paginat…","descriptionFull":"Specify the pagination params. Object of shape { pageIndex: number, pageSize: number }. If `undefined` then the pagination is managed internally"},{"name":"onPaginationChange","type":"((pagination: PaginationState) => void)","required":false,"description":"Callback to be called when the pagination params change"},{"name":"sorting","type":"SortingState","required":false,"default":"undefined","description":"Specify the sorting params. If `undefined` then the sorting is managed internally"},{"name":"defaultSorting","type":"SortingState","required":false,"default":"[]","description":"Default sorting applied when the table is first mounted (uncontrolled mode). Ignored when `sorting` is provided"},{"name":"onSortingChange","type":"((sorting: SortingState) => void)","required":false,"description":"Callback to be called when the sorting changes"},{"name":"wrapperClassName","type":"string","required":false,"description":"Classname of the wrapper element"},{"name":"contentClassName","type":"string","required":false,"description":"Classname of the content element"},{"name":"tableClassName","type":"string","required":false,"description":"Classname of the table element"},{"name":"loading","type":"boolean","required":false,"default":"false","description":"Show a loading indicator overlay"},{"name":"enableRowExpansion","type":"boolean","required":false,"default":"false","description":"Show a columns with a button which can expand the row"},{"name":"canRowExpand","type":"((row: Row<I>) => boolean)","required":false,"default":"false","description":"Callback to check if a row can be expanded"},{"name":"expandedRows","type":"ExpandedState","required":false,"description":"Specify the expanded rows If `undefined`, the expansions are managed internally Object with the key of row ID and a boo…","descriptionFull":"Specify the expanded rows If `undefined`, the expansions are managed internally Object with the key of row ID and a boolean specifying if the row is selected. The default row ID is the index. This can be changed using `getRowId` prop"},{"name":"onExpandedRowsChange","type":"((expandedRows: ExpandedState) => void)","required":false,"description":"Callback to be called when the rows are expanded or collapsed"},{"name":"renderExpandedContent","type":"((row: Row<I>) => React.ReactNode)","required":false,"description":"Render the content of the expanded row. Required when `enableRowExpansion` is `true`"},{"name":"getRowId","type":"((row: I, index: number, parent?: Row<I> | undefined) => string)","required":false,"default":"index","description":"Get the row ID for a row. If not specified index is the default row ID"},{"name":"onRowClick","type":"((rowData: I) => void)","required":false,"description":"Called when a body row is clicked. When set, rows become interactive (pointer cursor, `role=\"button\"`, keyboard-activat…","descriptionFull":"Called when a body row is clicked. When set, rows become interactive (pointer cursor, `role=\"button\"`, keyboard-activatable with Enter/Space). Clicks originating from an interactive control in the row (button, link, input, checkbox, or anything marked `data-no-row-click`) are ignored, so the selection checkbox and expand toggle keep working independently"}],"examples":["src/primitives/components/data-table/data-table.example.tsx"],"usageDoc":"src/primitives/components/data-table/USAGE.md"},{"name":"DatePicker","path":"src/primitives/components/date-picker/index.tsx","description":"Single-date selection component built on react-day-picker with the MDK dark theme. Controlled via `selected` / `onSelect`","tier":"agent-ready","public":true,"category":"forms","domainContext":"generic","props":[{"name":"selected","type":"Date","required":false,"description":"Currently selected date"},{"name":"onSelect","type":"((date: Date | undefined) => void)","required":false,"description":"Callback when date changes"},{"name":"placeholder","type":"string","required":false,"default":"\"Pick a date\"","description":"Placeholder text when no date is selected"},{"name":"dateFormat","type":"string","required":false,"default":"\"MM/dd/yyyy\"","description":"Date format for display"},{"name":"disabled","type":"(boolean & (Matcher | Matcher[]))","required":false,"default":"false","description":"Whether the picker is disabled"},{"name":"triggerClassName","type":"string","required":false,"description":"Custom className for the trigger button"},{"name":"calendarClassName","type":"string","required":false,"description":"Custom className for the calendar"}],"examples":["src/primitives/components/date-picker/date-picker.example.tsx"],"usageDoc":"src/primitives/components/date-picker/USAGE.md"},{"name":"DateRangePicker","path":"src/primitives/components/date-picker/index.tsx","description":"Date-range selection component with preset shortcuts (last 7/14/30/90 days) and a modal interface. Controlled via `selected` / `onSelect`","tier":"agent-ready","public":true,"category":"forms","domainContext":"generic","props":[{"name":"selected","type":"DateRange","required":false,"description":"Selected date range"},{"name":"onSelect","type":"((range: DateRange | undefined) => void)","required":false,"description":"Callback when date range changes"},{"name":"placeholder","type":"string","required":false,"default":"\"Pick a date range\"","description":"Placeholder text when no range is selected"},{"name":"dateFormat","type":"string","required":false,"default":"\"MM/dd/yyyy\"","description":"Date format for display"},{"name":"disabled","type":"(boolean & (Matcher | Matcher[]))","required":false,"default":"false","description":"Whether the picker is disabled"},{"name":"showPresets","type":"boolean","required":false,"default":"true","description":"Whether to show preset buttons"},{"name":"presets","type":"PresetItem[]","required":false,"description":"Custom preset items"},{"name":"allowFutureDates","type":"boolean","required":false,"default":"false","description":"Whether to allow future dates"},{"name":"triggerClassName","type":"string","required":false,"description":"Custom className for the trigger button"},{"name":"calendarClassName","type":"string","required":false,"description":"Custom className for the calendar"},{"name":"modalClassName","type":"string","required":false,"description":"Custom className for the modal"}],"shapes":[{"name":"DateRange","fields":[{"name":"from","type":"Date","required":true,"description":"Range start; `undefined` means nothing is selected and the placeholder shows"},{"name":"to","type":"Date","required":false,"description":"Range end; while unset the trigger shows `from` alone and Apply stays disabled"}]},{"name":"PresetItem","fields":[{"name":"label","type":"string","required":true,"description":"Preset button text; also used as the React key, so keep it unique"},{"name":"value","type":"DateRange","required":true,"description":"Range applied to the draft on click; needs both `from` and `to`. Highlighted when the draft is within 5 minutes of it a…","descriptionFull":"Range applied to the draft on click; needs both `from` and `to`. Highlighted when the draft is within 5 minutes of it at both ends"}]}],"examples":["src/primitives/components/date-picker/date-picker.example.tsx"],"usageDoc":"src/primitives/components/date-picker/USAGE.md"},{"name":"DEFAULT_TIMELINE_OPTIONS","path":"src/domain/components/dashboard/timeline-selector/timeline-options.ts","description":"Canonical short-form intervals for the dashboard timeline selector","tier":"advanced","public":true,"category":"dashboard","domainContext":"generic","props":[]},{"name":"DetailLegend","path":"src/primitives/components/detail-legend/index.tsx","description":"DetailLegend - Enhanced chart legend with current values and percentage change indicators","tier":"agent-ready","public":true,"category":"charts","domainContext":"generic","props":[{"name":"items","type":"DetailLegendItem[]","required":true,"description":"Legend items to display"},{"name":"onToggle","type":"((label: string, index: number) => void)","required":false,"description":"Callback when a legend item is toggled"},{"name":"className","type":"string","required":false,"description":"Custom class name"}],"shapes":[{"name":"DetailLegendItem","fields":[{"name":"label","type":"string","required":true,"description":"Display label; also passed to `onToggle`"},{"name":"color","type":"string","required":true,"description":"Hex color for the default swatch (border, plus 20% opacity fill) and the `color` of a custom `icon`"},{"name":"icon","type":"React.ReactNode","required":false,"description":"Custom icon replacing the default color swatch"},{"name":"currentValue","type":"{ value: string | number; unit?: string }","required":false,"description":"Value shown below the label, numbers formatted, with optional `unit`; also the row that holds `percentChange`"},{"name":"percentChange","type":"number | null","required":false,"description":"Percentage change shown after `currentValue`: positive as a green ▲, negative as a red ▼; hidden when `0`, `null` or wi…","descriptionFull":"Percentage change shown after `currentValue`: positive as a green ▲, negative as a red ▼; hidden when `0`, `null` or without `currentValue`"},{"name":"hidden","type":"boolean","required":false,"description":"Dims the item (30% opacity) to show its dataset is hidden"}]}],"examples":["src/primitives/components/detail-legend/detail-legend.example.tsx"],"usageDoc":"src/primitives/components/detail-legend/USAGE.md"},{"name":"DeviceExplorer","path":"src/domain/components/device-explorer/device-explorer.tsx","description":"Device explorer: filter + search toolbar over a sortable, selectable device table. Shows the miner columns by default; pass `columns` to change them (spread `getMinerColumns(...)` to extend the defau…","descriptionFull":"Device explorer: filter + search toolbar over a sortable, selectable device table. Shows the miner columns by default; pass `columns` to change them (spread `getMinerColumns(...)` to extend the default set). Designed to be controlled by URL state in the host app","tier":"agent-ready","public":true,"category":"tables","kernelCapabilities":["device-management"],"domainContext":"device-management","props":[{"name":"className","type":"string","required":false,"description":"Additional class names"},{"name":"selectedDevices","type":"RowSelectionState","required":false,"description":"Controlled row-selection state"},{"name":"onSelectedDevicesChange","type":"((selections: RowSelectionState) => void)","required":false,"description":"Setter for row selection"},{"name":"onFiltersChange","type":"(value: LocalFilters) => void","required":true,"description":"Setter for filters"},{"name":"filterOptions","type":"DeviceExplorerFilterOption[]","required":true,"description":"Filter category definitions"},{"name":"searchOptions","type":"DeviceExplorerSearchOption[]","required":true,"description":"Searchable column definitions"},{"name":"searchTags","type":"string[]","required":true,"description":"Active search-tag chips"},{"name":"onSearchTagsChange","type":"(tags: string[]) => void","required":true,"description":"Setter for search tags"},{"name":"filters","type":"LocalFilters","required":false,"description":"Controlled filter values"},{"name":"onSortingChange","type":"((sorting: SortingState) => void)","required":false},{"name":"data","type":"Device[]","required":true,"description":"Rows"},{"name":"columns","type":"ColumnDef<Device>[]","required":false,"description":"Table columns. Defaults to the miner columns ({@link getMinerColumns})"},{"name":"getFormattedDate","type":"(date: Date) => string","required":true,"description":"Date formatter from the host's timezone setup; used by the default miner columns"},{"name":"onRowClick","type":"((device: Device) => void)","required":false,"description":"Called when a row is clicked (e.g. to open the device's detail page)"}],"shapes":[{"name":"DeviceExplorerFilterOption","fields":[{"name":"value","type":"string","required":true,"description":"Category key at the top level (e.g. `status`), or a selectable value under it; selections reach `onFiltersChange` as `[…","descriptionFull":"Category key at the top level (e.g. `status`), or a selectable value under it; selections reach `onFiltersChange` as `[category, value]` paths"},{"name":"label","type":"string","required":true,"description":"Text shown in the filter cascader"},{"name":"children","type":"DeviceExplorerFilterOption[]","required":false,"description":"Values selectable under this category; omit on leaf options"}]},{"name":"DeviceExplorerSearchOption","fields":[{"name":"value","type":"string","required":true,"description":"Tag added to `searchTags` when this suggestion is picked (free-text tags are also allowed)"},{"name":"label","type":"string","required":true,"description":"Suggestion text, matched case-insensitively against the typed query and shown on the chip"}]}],"examples":["src/domain/components/device-explorer/device-explorer.example.tsx"],"usageDoc":"src/domain/components/device-explorer/USAGE.md"},{"name":"DialogContent","path":"src/primitives/components/dialog/index.tsx","description":"Centered modal surface for a `<Dialog>` — renders above the overlay with focus trap and Escape-to-close","tier":"agent-ready","public":true,"category":"dialogs","domainContext":"generic","props":[{"name":"title","type":"string","required":false,"description":"Renders `DialogTitle` (and optional `DialogDescription`) inside the header"},{"name":"description","type":"string","required":false,"description":"Renders `DialogDescription` below the title"},{"name":"closeOnClickOutside","type":"boolean","required":false,"default":"true","description":"Whether clicking the overlay closes the dialog"},{"name":"closeOnEscape","type":"boolean","required":false,"default":"true","description":"Whether pressing Escape closes the dialog"},{"name":"bare","type":"boolean","required":false,"default":"false","description":"Applies `mdk-dialog__header--bare` to the header"},{"name":"closable","type":"boolean","required":false,"description":"Shows an ✕ close button in the header"},{"name":"onClose","type":"VoidFunction","required":false,"description":"Fired when the ✕ button is clicked"}],"examples":["src/primitives/components/dialog/dialog.example.tsx"],"usageDoc":"src/primitives/components/dialog/USAGE.md"},{"name":"DialogDescription","path":"src/primitives/components/dialog/index.tsx","description":"Supporting body copy inside a `<Dialog>` rendered below the title","tier":"agent-ready","public":true,"category":"dialogs","domainContext":"generic","props":[],"examples":["src/primitives/components/dialog/dialog.example.tsx"],"usageDoc":"src/primitives/components/dialog/USAGE.md"},{"name":"DialogFooter","path":"src/primitives/components/dialog/index.tsx","description":"Action row at the bottom of a `<Dialog>` — typically primary/secondary buttons","tier":"agent-ready","public":true,"category":"dialogs","domainContext":"generic","props":[],"examples":["src/primitives/components/dialog/dialog.example.tsx"],"usageDoc":"src/primitives/components/dialog/USAGE.md"},{"name":"DialogHeader","path":"src/primitives/components/dialog/index.tsx","description":"Top region of a `<Dialog>` that groups the title and description","tier":"agent-ready","public":true,"category":"dialogs","domainContext":"generic","props":[{"name":"bare","type":"boolean","required":false,"default":"false","description":"Applies `mdk-dialog__header--bare` to the header"},{"name":"closable","type":"boolean","required":false,"description":"Shows an ✕ close button in the header"},{"name":"onClose","type":"VoidFunction","required":false,"description":"Fired when the ✕ button is clicked"}],"examples":["src/primitives/components/dialog/dialog.example.tsx"],"usageDoc":"src/primitives/components/dialog/USAGE.md"},{"name":"DialogOverlay","path":"src/primitives/components/dialog/index.tsx","description":"Full-viewport scrim rendered behind an open `<Dialog>` to block background interaction","tier":"agent-ready","public":true,"category":"dialogs","domainContext":"generic","props":[],"examples":["src/primitives/components/dialog/dialog.example.tsx"],"usageDoc":"src/primitives/components/dialog/USAGE.md"},{"name":"DialogTitle","path":"src/primitives/components/dialog/index.tsx","description":"Prominent title text at the top of a `<Dialog>` summarising the modal's purpose","tier":"agent-ready","public":true,"category":"dialogs","domainContext":"generic","props":[],"examples":["src/primitives/components/dialog/dialog.example.tsx"],"usageDoc":"src/primitives/components/dialog/USAGE.md"},{"name":"Divider","path":"src/primitives/components/divider/index.tsx","description":"Thin horizontal or vertical rule used to separate logical sections of a layout","tier":"agent-ready","public":true,"category":"layout","domainContext":"generic","props":[{"name":"orientation","type":"\"horizontal\" | \"vertical\"","required":false,"default":"\"horizontal\"","description":"Line orientation"},{"name":"dashed","type":"boolean","required":false,"default":"false","description":"Line style"},{"name":"dotted","type":"boolean","required":false,"default":"false","description":"Renders a dotted line (takes precedence over `dashed`)"},{"name":"children","type":"React.ReactNode","required":false,"description":"Text or node rendered in the middle of the divider"},{"name":"align","type":"\"center\" | \"left\" | \"right\"","required":false,"default":"\"center\"","description":"Horizontal alignment of the label"},{"name":"plain","type":"boolean","required":false,"default":"false","description":"Plain text style — no border around label"},{"name":"className","type":"string","required":false,"description":"Custom className"}],"examples":["src/primitives/components/divider/divider.example.tsx"],"usageDoc":"src/primitives/components/divider/USAGE.md"},{"name":"DoughnutChart","path":"src/primitives/components/doughnut-chart/index.tsx","description":"DoughnutChart – Presentational Chart.js doughnut chart with custom HTML legend matching the MDK design","tier":"agent-ready","public":true,"category":"charts","domainContext":"generic","props":[{"name":"data","type":"DoughnutChartDataset[]","required":true,"description":"Array of labelled slices"},{"name":"unit","type":"string","required":false,"default":"\"\"","description":"Unit suffix appended to values in tooltips and legends"},{"name":"options","type":"object","required":false,"description":"Chart.js options – merged with defaults"},{"name":"cutout","type":"string","required":false,"default":"\"75%\"","description":"Doughnut cutout percentage (default: '75%')"},{"name":"borderWidth","type":"number","required":false,"default":"4","description":"Border width between segments (default: 4)"},{"name":"height","type":"number","required":false,"default":"260","description":"Chart height in pixels"},{"name":"legendPosition","type":"\"left\" | \"right\" | \"top\" | \"bottom\"","required":false,"default":"\"top\"","description":"Where to place the legend relative to the chart (default: 'top')"},{"name":"tooltip","type":"ChartTooltipConfig","required":false,"description":"Custom HTML tooltip configuration. When provided, replaces the default doughnut tooltip (which shows label, value with…","descriptionFull":"Custom HTML tooltip configuration. When provided, replaces the default doughnut tooltip (which shows label, value with unit, and percentage). Use `valueFormatter` to replicate the percentage display if needed"},{"name":"formatValue","type":"((value: number) => string)","required":false,"description":"Formats slice values in the built-in legend and default tooltip (default: raw number)"},{"name":"className","type":"string","required":false,"description":"Additional class for the root element"}],"shapes":[{"name":"DoughnutChartDataset","fields":[{"name":"label","type":"string","required":true,"description":"Slice label"},{"name":"value","type":"number","required":true,"description":"Numeric slice value"},{"name":"color","type":"string","required":false,"description":"Slice color (falls back to the built-in palette)"}]}],"examples":["src/primitives/components/doughnut-chart/doughnut-chart.example.tsx"],"usageDoc":"src/primitives/components/doughnut-chart/USAGE.md"},{"name":"EmptyState","path":"src/primitives/components/empty-state/index.tsx","description":"Empty state component for displaying placeholder content when no data is available","tier":"agent-ready","public":true,"category":"feedback","domainContext":"generic","props":[{"name":"description","type":"React.ReactNode","required":true,"description":"Description text or ReactNode displayed below the image"},{"name":"image","type":"EmptyStateImage","required":false,"default":"\"default\"","description":"Image to display. Use \"default\" for the standard illustration, \"simple\" for a minimal icon, or pass a custom ReactNode"},{"name":"size","type":"\"sm\" | \"md\" | \"lg\"","required":false,"default":"\"md\"","description":"Size variant controlling spacing and icon dimensions"},{"name":"className","type":"string","required":false,"description":"Additional CSS class name"}],"examples":["src/primitives/components/empty-state/empty-state.example.tsx"],"usageDoc":"src/primitives/components/empty-state/USAGE.md"},{"name":"EnabledDisableToggle","path":"src/domain/components/enabled-disable-toggle/enabled-disable-toggle.tsx","description":"Switch with confirmation that enables or disables a container, miner, or feature flag","tier":"agent-ready","public":true,"category":"widgets","kernelCapabilities":["device-management"],"domainContext":"device-management","props":[{"name":"value","type":"unknown","required":true,"description":"Current state. A boolean drives a switch display; non-boolean shows action buttons"},{"name":"tankNumber","type":"string | number","required":true,"description":"Tank identifier used in the label (`Tank {N} Circulation`). Pass an empty string for the air exhaust label"},{"name":"isButtonDisabled","type":"boolean","required":true,"description":"Disables the Enable/Disable buttons when a command is in-flight"},{"name":"isOffline","type":"boolean","required":true,"description":"Disables all controls and shows an offline tooltip"},{"name":"onToggle","type":"(params: EnabledDisableToggleCbParams) => void","required":true,"description":"Callback fired when the user confirms a state change"}],"examples":["src/domain/components/enabled-disable-toggle/enabled-disable-toggle.example.tsx"],"usageDoc":"src/domain/components/enabled-disable-toggle/USAGE.md"},{"name":"ErrorCard","path":"src/primitives/components/error-card/index.tsx","description":"Error card component for displaying error messages","tier":"agent-ready","public":true,"category":"feedback","domainContext":"generic","props":[{"name":"error","type":"string","required":true,"description":"Error message string. Supports `\\n` for line breaks"},{"name":"title","type":"string","required":false,"default":"\"Errors\"","description":"Title displayed above the error message"},{"name":"variant","type":"\"inline\" | \"card\"","required":false,"default":"\"card\"","description":"Display variant. \"card\" shows a bordered container, \"inline\" shows flat text"},{"name":"className","type":"string","required":false,"description":"Additional CSS class name"}],"examples":["src/primitives/components/error-card/error-card.example.tsx"],"usageDoc":"src/primitives/components/error-card/USAGE.md"},{"name":"ExportButton","path":"src/domain/components/dashboard/export-button/export-button.tsx","description":"Split-button trigger for downloading the current dashboard state. The left half labels the action (`↓ Export`); the right half opens a dropdown with the available formats and invokes `onExport(format…","descriptionFull":"Split-button trigger for downloading the current dashboard state. The left half labels the action (`↓ Export`); the right half opens a dropdown with the available formats and invokes `onExport(format)` on selection. When the handler returns a promise, the button shows a spinner and stays disabled until it settles","tier":"agent-ready","public":true,"category":"dashboard","kernelCapabilities":["data-export"],"domainContext":"mining-operations","props":[{"name":"onExport","type":"(format: ExportFormat) => void | Promise<void>","required":true,"description":"Fires with the chosen format when the user picks an item. Return a promise to show a loading state until it settles; a…","descriptionFull":"Fires with the chosen format when the user picks an item. Return a promise to show a loading state until it settles; a rejection clears it and is not rethrown, so report failures inside the handler"},{"name":"formats","type":"readonly ExportFormat[]","required":false,"default":"['csv', 'json']","description":"Formats to offer in the dropdown — defaults to `['csv', 'json']`"},{"name":"label","type":"string","required":false,"default":"\"Export\"","description":"Button label — defaults to `'Export'`"},{"name":"disabled","type":"boolean","required":false,"default":"false","description":"Disable the button"},{"name":"className","type":"string","required":false,"description":"Optional class hook on the wrapper"}],"examples":["src/domain/components/dashboard/export-button/export-button.example.tsx"],"usageDoc":"src/domain/components/dashboard/export-button/USAGE.md"},{"name":"FeatureFlagsSettings","path":"src/domain/components/settings/feature-flags/feature-flags-settings.tsx","description":"Settings panel listing every feature flag with per-flag enable/disable toggle and description","tier":"agent-ready","public":true,"category":"settings","kernelCapabilities":["device-management"],"domainContext":"device-management","props":[{"name":"featureFlags","type":"Record<string, boolean>","required":true,"description":"Current flag values keyed by flag name"},{"name":"isEditingEnabled","type":"boolean","required":true,"description":"Whether editing is permitted"},{"name":"isLoading","type":"boolean","required":false,"default":"false","description":"Show loading state"},{"name":"isSaving","type":"boolean","required":false,"default":"false","description":"Show saving spinner on save button"},{"name":"onSave","type":"(flags: Record<string, boolean>) => void","required":true,"description":"Called with updated flags when saved"},{"name":"className","type":"string","required":false,"description":"Additional CSS class"}],"examples":["src/domain/components/settings/feature-flags/feature-flags-settings.example.tsx"],"usageDoc":"src/domain/components/settings/feature-flags/USAGE.md"},{"name":"Form","path":"src/primitives/components/form/index.tsx","description":"React Hook Form provider wrapper. Pass the result of `useForm()` as `form` and render fields via `FormField` / `FormItem` / `FormLabel` / `FormControl` / `FormMessage`","tier":"agent-ready","public":true,"category":"forms","domainContext":"generic","props":[{"name":"form","type":"UseFormReturn<TFieldValues>","required":true},{"name":"children","type":"React.ReactNode","required":true}],"examples":["src/primitives/components/form/form.example.tsx"],"usageDoc":"src/primitives/components/form/USAGE.md"},{"name":"FormCascader","path":"src/primitives/components/form/form-fields.tsx","description":"Pre-built Cascader field component with integrated form state. Perfect for hierarchical selections like categories and subcategories","tier":"agent-ready","public":true,"category":"forms","domainContext":"generic","props":[{"name":"label","type":"string","required":false},{"name":"description","type":"string","required":false},{"name":"placeholder","type":"string","required":false},{"name":"options","type":"CascaderOption[]","required":true},{"name":"multiple","type":"boolean","required":false},{"name":"cascaderProps","type":"Omit<CascaderProps & React.RefAttributes<HTMLDivElement>, \"onChange\" | \"value\" | \"options\" | \"placeholder\">","required":false}],"examples":["src/primitives/components/form/form.example.tsx"],"usageDoc":"src/primitives/components/form/USAGE.md"},{"name":"FormCheckbox","path":"src/primitives/components/form/form-fields.tsx","description":"Pre-built Checkbox field component with integrated form state","tier":"agent-ready","public":true,"category":"forms","domainContext":"generic","props":[{"name":"label","type":"string","required":false},{"name":"description","type":"string","required":false},{"name":"placeholder","type":"string","required":false},{"name":"checkboxProps","type":"({ checked?: CheckedState; defaultChecked?: CheckedState; disabled?: boolean; size?: CheckboxSize; color?: ComponentColor; radius?: BorderRadius; className?: string; indicatorClassName?: string; onCheckedChange?: ((checked: CheckedState) =>… /* see source */","required":false},{"name":"layout","type":"\"row\" | \"column\"","required":false}],"examples":["src/primitives/components/form/form.example.tsx"],"usageDoc":"src/primitives/components/form/USAGE.md"},{"name":"FormControl","path":"src/primitives/components/form/index.tsx","description":"Slot-based wrapper that injects ARIA attributes onto its child input element without adding an extra DOM wrapper","tier":"agent-ready","public":true,"category":"forms","domainContext":"generic","props":[],"examples":["src/primitives/components/form/form.example.tsx"],"usageDoc":"src/primitives/components/form/USAGE.md"},{"name":"FormDatePicker","path":"src/primitives/components/form/form-fields.tsx","description":"Pre-built DatePicker field component with integrated form state","tier":"agent-ready","public":true,"category":"forms","domainContext":"generic","props":[{"name":"label","type":"string","required":false},{"name":"description","type":"string","required":false},{"name":"placeholder","type":"string","required":false},{"name":"datePickerProps","type":"object","required":false}],"examples":["src/primitives/components/form/form.example.tsx"],"usageDoc":"src/primitives/components/form/USAGE.md"},{"name":"FormDescription","path":"src/primitives/components/form/index.tsx","description":"Optional helper text displayed below the input","tier":"agent-ready","public":true,"category":"forms","domainContext":"generic","props":[],"examples":["src/primitives/components/form/form.example.tsx"],"usageDoc":"src/primitives/components/form/USAGE.md"},{"name":"FormField","path":"src/primitives/components/form/index.tsx","description":"Wraps react-hook-form's Controller and provides field context to descendants","tier":"agent-ready","public":true,"category":"forms","domainContext":"generic","props":[],"examples":["src/primitives/components/form/form.example.tsx"],"usageDoc":"src/primitives/components/form/USAGE.md"},{"name":"FormInput","path":"src/primitives/components/form/form-fields.tsx","description":"Pre-built Input field component with integrated form state. Reduces boilerplate by combining FormField, FormItem, FormLabel, FormControl, and FormMessage","tier":"agent-ready","public":true,"category":"forms","domainContext":"generic","props":[{"name":"label","type":"string","required":false},{"name":"description","type":"string","required":false},{"name":"placeholder","type":"string","required":false},{"name":"type","type":"React.HTMLInputTypeAttribute","required":false},{"name":"variant","type":"\"search\" | \"default\"","required":false},{"name":"inputProps","type":"Omit<Omit<InputProps, \"ref\"> & React.RefAttributes<HTMLInputElement>, \"type\" | \"variant\">","required":false}],"examples":["src/primitives/components/form/form.example.tsx"],"usageDoc":"src/primitives/components/form/USAGE.md"},{"name":"FormItem","path":"src/primitives/components/form/index.tsx","description":"Layout wrapper for a form field. Generates a unique ID for accessibility linking","tier":"agent-ready","public":true,"category":"forms","domainContext":"generic","props":[],"examples":["src/primitives/components/form/form.example.tsx"],"usageDoc":"src/primitives/components/form/USAGE.md"},{"name":"FormLabel","path":"src/primitives/components/form/index.tsx","description":"Label that auto-links to the form field input via generated IDs. Applies error styling when the field has a validation error","tier":"agent-ready","public":true,"category":"forms","domainContext":"generic","props":[{"name":"htmlFor","type":"string","required":false,"description":"Id of the input being labelled"}],"examples":["src/primitives/components/form/form.example.tsx"],"usageDoc":"src/primitives/components/form/USAGE.md"},{"name":"FormMessage","path":"src/primitives/components/form/index.tsx","description":"Displays the validation error message from react-hook-form field state. Falls back to children if no error is present. Always renders to prevent layout shift when errors appear","tier":"agent-ready","public":true,"category":"forms","domainContext":"generic","props":[],"examples":["src/primitives/components/form/form.example.tsx"],"usageDoc":"src/primitives/components/form/USAGE.md"},{"name":"FormRadioGroup","path":"src/primitives/components/form/form-fields.tsx","description":"Pre-built RadioGroup field component with integrated form state","tier":"agent-ready","public":true,"category":"forms","domainContext":"generic","props":[{"name":"label","type":"string","required":false},{"name":"description","type":"string","required":false},{"name":"placeholder","type":"string","required":false},{"name":"options","type":"FormRadioOption[]","required":true},{"name":"orientation","type":"\"horizontal\" | \"vertical\"","required":false},{"name":"radioGroupProps","type":"object","required":false}],"shapes":[{"name":"FormRadioOption","fields":[{"name":"value","type":"string","required":true,"description":"Value written to the form field when chosen; also the React key and part of the input `id`, so keep it unique"},{"name":"label","type":"string","required":true,"description":"Text of the radio's `<label>`"},{"name":"disabled","type":"boolean","required":false,"description":"Shows the radio but prevents choosing it"}]}],"examples":["src/primitives/components/form/form.example.tsx"],"usageDoc":"src/primitives/components/form/USAGE.md"},{"name":"FormSelect","path":"src/primitives/components/form/form-fields.tsx","description":"Pre-built Select field component with integrated form state","tier":"agent-ready","public":true,"category":"forms","domainContext":"generic","props":[{"name":"label","type":"string","required":false},{"name":"description","type":"string","required":false},{"name":"placeholder","type":"string","required":false},{"name":"options","type":"FormSelectOption[]","required":true},{"name":"selectProps","type":"object","required":false}],"shapes":[{"name":"FormSelectOption","fields":[{"name":"value","type":"string","required":true,"description":"Value written to the form field when chosen; also the React key, so keep it unique"},{"name":"label","type":"string","required":true,"description":"Text shown in the dropdown"},{"name":"disabled","type":"boolean","required":false,"description":"Shows the option but prevents choosing it"}]}],"examples":["src/primitives/components/form/form.example.tsx"],"usageDoc":"src/primitives/components/form/USAGE.md"},{"name":"FormSwitch","path":"src/primitives/components/form/form-fields.tsx","description":"Pre-built Switch field component with integrated form state","tier":"agent-ready","public":true,"category":"forms","domainContext":"generic","props":[{"name":"label","type":"string","required":false},{"name":"description","type":"string","required":false},{"name":"placeholder","type":"string","required":false},{"name":"switchProps","type":"object","required":false},{"name":"layout","type":"\"row\" | \"column\"","required":false}],"examples":["src/primitives/components/form/form.example.tsx"],"usageDoc":"src/primitives/components/form/USAGE.md"},{"name":"FormTagInput","path":"src/primitives/components/form/form-fields.tsx","description":"Pre-built TagInput field component with integrated form state. Perfect for multi-select with search and tag display","tier":"agent-ready","public":true,"category":"forms","domainContext":"generic","props":[{"name":"label","type":"string","required":false},{"name":"description","type":"string","required":false},{"name":"placeholder","type":"string","required":false},{"name":"options","type":"TagInputOption[]","required":false},{"name":"allowCustomTags","type":"boolean","required":false},{"name":"variant","type":"\"search\" | \"default\"","required":false},{"name":"tagInputProps","type":"object","required":false}],"examples":["src/primitives/components/form/form.example.tsx"],"usageDoc":"src/primitives/components/form/USAGE.md"},{"name":"FormTextArea","path":"src/primitives/components/form/form-fields.tsx","description":"Pre-built TextArea field component with integrated form state","tier":"agent-ready","public":true,"category":"forms","domainContext":"generic","props":[{"name":"label","type":"string","required":false},{"name":"description","type":"string","required":false},{"name":"placeholder","type":"string","required":false},{"name":"textAreaProps","type":"(Omit<TextAreaProps, \"ref\"> & React.RefAttributes<HTMLTextAreaElement>)","required":false}],"examples":["src/primitives/components/form/form.example.tsx"],"usageDoc":"src/primitives/components/form/USAGE.md"},{"name":"GaugeChart","path":"src/primitives/components/gauge-chart/index.tsx","description":"GaugeChart - Presentational gauge / speedometer chart","descriptionFull":"GaugeChart - Presentational gauge / speedometer chart.\n\nImplementation note: the gauge is drawn by a pure-SVG internal implementation (see `./gauge-svg.tsx`), so the component is bundler- and runtime-agnostic and carries no third-party runtime dependency. The gauge packages on NPM are published CommonJS-only with a `module` field pointing at the same CJS file, which crashes under ESM bundlers that add no `__esModule ? .default : module` interop shim (Webpack 4, raw esbuild, some SSR setups) with React's \"Element type is invalid\" error","tier":"agent-ready","public":true,"category":"charts","domainContext":"generic","props":[{"name":"percent","type":"number","required":true,"description":"Value between 0 and 1 (e.g. 0.75 = 75%). Values outside the range are clamped"},{"name":"colors","type":"string[]","required":false,"default":"[COLOR.GREEN, COLOR.RED]","description":"Arc colours in HEX format"},{"name":"arcWidth","type":"number","required":false,"default":"0.2","description":"Arc thickness as a fraction of the gauge radius (0–1)"},{"name":"nrOfLevels","type":"number","required":false,"default":"3","description":"Number of arc segments. Ignored when `arcsLength` is provided"},{"name":"arcsLength","type":"number[]","required":false,"description":"Custom arc-segment proportions (auto-normalised), overriding `nrOfLevels`. e.g. `[0.7, 0.3]` for a progress-style gauge…","descriptionFull":"Custom arc-segment proportions (auto-normalised), overriding `nrOfLevels`. e.g. `[0.7, 0.3]` for a progress-style gauge whose first arc is the fill"},{"name":"needleColor","type":"string","required":false,"default":"COLOR.STEEL_GRAY","description":"Needle + hub colour"},{"name":"hideNeedle","type":"boolean","required":false,"default":"false","description":"Hide the needle + hub (e.g. for a progress-style gauge)"},{"name":"formatTextValue","type":"((percent: number) => string)","required":false,"description":"Format the center label from the clamped fraction (0–1)"},{"name":"hideText","type":"boolean","required":false,"default":"false","description":"Hide the percentage text rendered inside the gauge"},{"name":"id","type":"string","required":false,"default":"\"mdk-gauge-chart\"","description":"Stable id used for the gauge's accessibility labels"},{"name":"height","type":"string | number","required":false,"default":"200","description":"Chart height in pixels or any CSS length (e.g. `'200px'` or `'50%'`)"},{"name":"maxWidth","type":"number","required":false,"description":"Maximum width in pixels"},{"name":"className","type":"string","required":false,"description":"Additional class for the root `div`"}],"examples":["src/primitives/components/gauge-chart/gauge-chart.example.tsx"],"usageDoc":"src/primitives/components/gauge-chart/USAGE.md"},{"name":"GenericDataBox","path":"src/domain/components/data-box/generic-data-box/generic-data-box.tsx","description":"Reusable labelled stat box used by container summary panels for one-off numeric values","descriptionFull":"Reusable labelled stat box used by container summary panels for one-off numeric values.\n\nDisplays a table of label-value-unit rows","tier":"agent-ready","public":true,"category":"widgets","kernelCapabilities":["device-management"],"domainContext":"device-management","props":[{"name":"data","type":"DataItem[]","required":false,"default":"[]","description":"Array of data items to display"},{"name":"fallbackValue","type":"unknown","required":false,"description":"Fallback value when value is undefined"}],"examples":["src/domain/components/data-box/generic-data-box/generic-data-box.example.tsx"],"usageDoc":"src/domain/components/data-box/generic-data-box/USAGE.md"},{"name":"HeaderConsumptionBox","path":"src/domain/components/header-stats/header-consumption-box.tsx","description":"Single-row consumption cell for the dashboard's header strip. The `1.663` style numeric is rendered in orange (the warning token)","tier":"agent-ready","public":true,"category":"dashboard","kernelCapabilities":["power-monitoring"],"domainContext":"mining-operations","props":[{"name":"icon","type":"React.ReactNode","required":false,"description":"Icon shown next to the stat"},{"name":"valueMw","type":"number","required":false,"description":"Current site-level power consumption, in megawatts"},{"name":"unit","type":"string","required":false,"default":"MW","description":"Unit label — defaults to `MW`"},{"name":"className","type":"string","required":false,"description":"Additional class names"}],"examples":["src/domain/components/header-stats/header-stats.example.tsx"],"usageDoc":"src/domain/components/header-stats/USAGE.md"},{"name":"HeaderControlsSettings","path":"src/domain/components/settings/header-controls/header-controls-settings.tsx","description":"Settings panel for the global app header — toggle controls, sticky behaviour, and theme defaults","tier":"agent-ready","public":true,"category":"settings","kernelCapabilities":["device-management"],"domainContext":"device-management","props":[{"name":"preferences","type":"HeaderPreferences","required":true,"description":"Current header preference values"},{"name":"isLoading","type":"boolean","required":false,"default":"false","description":"Show loading state"},{"name":"onToggle","type":"(key: keyof HeaderPreferences, value: boolean) => void","required":true,"description":"Called when a preference toggle changes"},{"name":"onReset","type":"VoidFunction","required":true,"description":"Reset all preferences to defaults"},{"name":"className","type":"string","required":false,"description":"Additional CSS class"}],"examples":["src/domain/components/settings/header-controls/header-controls-settings.example.tsx"],"usageDoc":"src/domain/components/settings/header-controls/USAGE.md"},{"name":"HeaderEfficiencyBox","path":"src/domain/components/header-stats/header-efficiency-box.tsx","description":"Single-row efficiency cell for the dashboard's header strip. Displays the W/TH/s metric derived from `power_w / hashrate_th`","tier":"agent-ready","public":true,"category":"dashboard","kernelCapabilities":["efficiency-monitoring"],"domainContext":"mining-operations","props":[{"name":"icon","type":"React.ReactNode","required":false,"description":"Icon shown next to the stat"},{"name":"valueWthS","type":"number","required":false,"description":"Efficiency in watts per TH/s"},{"name":"unit","type":"string","required":false,"default":"W/TH/S","description":"Unit label — defaults to `W/TH/S`"},{"name":"className","type":"string","required":false,"description":"Additional class names"}],"examples":["src/domain/components/header-stats/header-stats.example.tsx"],"usageDoc":"src/domain/components/header-stats/USAGE.md"},{"name":"HeaderHashrateBox","path":"src/domain/components/header-stats/header-hashrate-box.tsx","description":"Two-row hashrate cell for the dashboard's header strip. Shows the app-side and pool-side aggregate hashrate side by side. Values fall back to `—` when undefined","tier":"agent-ready","public":true,"category":"dashboard","kernelCapabilities":["hashrate-monitoring"],"domainContext":"mining-operations","props":[{"name":"icon","type":"React.ReactNode","required":false,"description":"Icon shown next to the stat"},{"name":"appPhs","type":"number","required":false,"description":"App-side aggregate hashrate in PH/s"},{"name":"poolPhs","type":"number","required":false,"description":"Pool-side aggregate hashrate in PH/s"},{"name":"unit","type":"string","required":false,"default":"PH/s","description":"Hashrate unit label — defaults to `PH/s`"},{"name":"fractionDigits","type":"number","required":false,"default":"3","description":"Decimal places shown for both values — defaults to `3`"},{"name":"appLabel","type":"string","required":false,"default":"WEBAPP_SHORT_NAME (\"APP\")","description":"Label for the app-side row"},{"name":"className","type":"string","required":false,"description":"Additional class names"}],"examples":["src/domain/components/header-stats/header-stats.example.tsx"],"usageDoc":"src/domain/components/header-stats/USAGE.md"},{"name":"HeaderMinersBox","path":"src/domain/components/header-stats/header-miners-box.tsx","description":"Two-row miner-count cell for the dashboard's header strip. Top row carries the app-side `online / error / offline` breakdown; the bottom row shows the pool-side equivalent. Numbers fall back to `—` w…","descriptionFull":"Two-row miner-count cell for the dashboard's header strip. Top row carries the app-side `online / error / offline` breakdown; the bottom row shows the pool-side equivalent. Numbers fall back to `—` when undefined","tier":"agent-ready","public":true,"category":"dashboard","kernelCapabilities":["site-overview"],"domainContext":"mining-operations","props":[{"name":"icon","type":"React.ReactNode","required":false,"description":"Icon shown next to the \"Miners\" label. Caller-provided so the package stays icon-agnostic"},{"name":"total","type":"number","required":false,"description":"Total miners across the site (denominator of the `158 / 2,188` ratio)"},{"name":"online","type":"number","required":false,"description":"Online miners (the `158` numerator)"},{"name":"error","type":"number","required":false,"description":"Miners flagged in warning (the small amber count)"},{"name":"offline","type":"number","required":false,"description":"Miners offline (the small red count)"},{"name":"appTotal","type":"number","required":false,"description":"Optional app-side meta line — total miners reporting to the app"},{"name":"poolTotal","type":"number","required":false,"description":"Optional pool-side meta — total miners as reported by upstream pools"},{"name":"poolOnline","type":"number","required":false,"description":"Optional pool-side online count (green)"},{"name":"poolMismatch","type":"number","required":false,"description":"Optional pool-side mismatch count (red)"},{"name":"appLabel","type":"string","required":false,"default":"WEBAPP_SHORT_NAME (\"APP\")","description":"Label for the app-side row"},{"name":"className","type":"string","required":false,"description":"Additional class names"}],"examples":["src/domain/components/header-stats/header-stats.example.tsx"],"usageDoc":"src/domain/components/header-stats/USAGE.md"},{"name":"HeaderStatsBar","path":"src/domain/components/header-stats/header-stats-bar.tsx","description":"Horizontal flex strip that hosts the dashboard's stat boxes (HeaderMinersBox, HeaderHashrateBox, HeaderConsumptionBox, HeaderEfficiencyBox). Lives inside `<AppHeader>` as the middle slot","descriptionFull":"Horizontal flex strip that hosts the dashboard's stat boxes (HeaderMinersBox, HeaderHashrateBox, HeaderConsumptionBox, HeaderEfficiencyBox). Lives inside `<AppHeader>` as the middle slot.\n\nSlot-based: the caller decides which boxes to render and in which order. The bar interleaves an angled chevron divider between adjacent children","tier":"agent-ready","public":true,"category":"dashboard","kernelCapabilities":["site-overview"],"domainContext":"mining-operations","props":[{"name":"children","type":"React.ReactNode","required":true,"description":"Stat boxes to render in order, left-to-right"},{"name":"className","type":"string","required":false,"description":"Optional class hook"}],"examples":["src/domain/components/header-stats/header-stats.example.tsx"],"usageDoc":"src/domain/components/header-stats/USAGE.md"},{"name":"Heatmap","path":"src/primitives/components/heatmap/index.tsx","description":"Heatmap — a generic grid of value-coloured cells on a low→high gradient","descriptionFull":"Heatmap — a generic grid of value-coloured cells on a low→high gradient.\n\nPresentational and domain-agnostic: pass a row-major matrix of cells and an optional `[min, max]` range (auto-derived otherwise). Use `renderCell` to overlay domain content (socket borders, selection, tooltips) without forking the primitive — the grid still owns each cell's background colour. Pair with {@link HeatmapLegend} for a gradient scale","tier":"agent-ready","public":true,"category":"charts","domainContext":"generic","props":[{"name":"data","type":"HeatmapCell[][]","required":true,"description":"Rows of cells (row-major). Rows may be ragged"},{"name":"min","type":"number","required":false,"default":"auto","description":"Range floor (maps to the first gradient stop); auto-derived from the finite values when omitted"},{"name":"max","type":"number","required":false,"default":"auto","description":"Range ceiling (maps to the last gradient stop); auto-derived from the finite values when omitted"},{"name":"colors","type":"readonly string[]","required":false,"default":"HEATMAP_GRADIENT","description":"Gradient stops low→high. Defaults to the cold→hot `HEATMAP_GRADIENT`"},{"name":"emptyColor","type":"string","required":false,"default":"#000000","description":"Colour used for `null` cells"},{"name":"showValues","type":"boolean","required":false,"default":"false","description":"Render each cell's value/label as text"},{"name":"renderCell","type":"((cell: HeatmapCell, context: HeatmapCellContext) => React.ReactNode)","required":false,"description":"Override the cell's inner content — e.g. to overlay socket borders, selection, or tooltips for a PDU grid. The primitiv…","descriptionFull":"Override the cell's inner content — e.g. to overlay socket borders, selection, or tooltips for a PDU grid. The primitive still owns the cell's background colour (passed via `context.color`)"},{"name":"ariaLabel","type":"string","required":false,"default":"\"Heatmap\"","description":"Accessible label for the grid"},{"name":"className","type":"string","required":false,"description":"Additional class for the root element"}],"examples":["src/primitives/components/heatmap/heatmap.example.tsx"],"usageDoc":"src/primitives/components/heatmap/USAGE.md"},{"name":"HeatmapLegend","path":"src/primitives/components/heatmap/heatmap-legend.tsx","description":"HeatmapLegend — a gradient bar with low/high scale labels, matching the gradient used by {@link Heatmap}","tier":"agent-ready","public":true,"category":"charts","domainContext":"generic","props":[{"name":"min","type":"string | number","required":true,"description":"Value (or pre-formatted label) at the low end of the scale"},{"name":"max","type":"string | number","required":true,"description":"Value (or pre-formatted label) at the high end of the scale"},{"name":"unit","type":"string","required":false,"description":"Unit suffix appended to `min`/`max`"},{"name":"label","type":"string","required":false,"description":"Heading above the gradient bar (e.g. \"Temperature\")"},{"name":"colors","type":"readonly string[]","required":false,"default":"HEATMAP_GRADIENT","description":"Gradient stops low→high"},{"name":"className","type":"string","required":false,"description":"Additional class for the root element"}],"examples":["src/primitives/components/heatmap/heatmap.example.tsx"],"usageDoc":"src/primitives/components/heatmap/USAGE.md"},{"name":"HistoricalAlerts","path":"src/domain/components/alerts/historical-alerts/historical-alerts.tsx","description":"Sortable data table of historical alerts within a controlled date range. Renders a header with title + `DateRangePicker`, then the table","tier":"agent-ready","public":true,"category":"tables","kernelCapabilities":["incident-alerts"],"domainContext":"mining-operations","props":[{"name":"alerts","type":"AlertRecord[]","required":false,"default":"[]","description":"Pre-fetched historical alerts log entries (each with a `thing` device payload)"},{"name":"isLoading","type":"boolean","required":false,"default":"false","description":"Show DataTable loading overlay"},{"name":"localFilters","type":"AlertLocalFilters","required":true,"description":"Filters and search tags coming from the parent (typically shared with `CurrentAlerts`)"},{"name":"filterTags","type":"string[]","required":true,"description":"Shared with `CurrentAlerts`"},{"name":"dateRange","type":"HistoricalAlertsRange","required":true,"description":"Selected date range for the historical query (controlled)"},{"name":"onDateRangeChange","type":"(range: HistoricalAlertsRange) => void","required":true,"description":"Setter for the date range"},{"name":"onAlertClick","type":"((id?: string | undefined, uuid?: string | undefined) => void)","required":false,"description":"Called when the user opens an alert"},{"name":"className","type":"string","required":false,"description":"Additional class names"}],"shapes":[{"name":"HistoricalAlertsRange","fields":[{"name":"start","type":"number","required":true,"description":"Range start, epoch ms; seeds the picker's `from` date"},{"name":"end","type":"number","required":true,"description":"Range end, epoch ms; seeds the picker's `to` date"}]}],"examples":["src/domain/components/alerts/historical-alerts/historical-alerts.example.tsx"],"usageDoc":"src/domain/components/alerts/historical-alerts/USAGE.md"},{"name":"ImportExportSettings","path":"src/domain/components/settings/import-export/import-export-settings.tsx","description":"Settings panel for exporting site configuration as JSON and importing a previously saved snapshot","tier":"agent-ready","public":true,"category":"settings","kernelCapabilities":["device-management"],"domainContext":"device-management","props":[{"name":"onExport","type":"VoidFunction","required":true,"description":"Trigger configuration export"},{"name":"onImport","type":"(data: SettingsExportData) => void","required":true,"description":"Apply imported configuration"},{"name":"onParseFile","type":"((file: File) => Promise<SettingsExportData>)","required":false,"description":"Custom file-parsing function"},{"name":"isExporting","type":"boolean","required":false,"default":"false","description":"Show export loading state"},{"name":"isImporting","type":"boolean","required":false,"default":"false","description":"Show import loading state"},{"name":"className","type":"string","required":false,"description":"Additional CSS class"}],"examples":["src/domain/components/settings/import-export/import-export-settings.example.tsx"],"usageDoc":"src/domain/components/settings/import-export/USAGE.md"},{"name":"Indicator","path":"src/primitives/components/indicator/index.tsx","description":"Indicator component - display status with colored background and label","tier":"agent-ready","public":true,"category":"display","domainContext":"generic","props":[{"name":"color","type":"\"red\" | \"gray\" | \"blue\" | \"yellow\" | \"green\" | \"purple\" | \"amber\" | \"slate\"","required":false,"default":"\"gray\"","description":"Color variant of the indicator"},{"name":"size","type":"\"sm\" | \"md\" | \"lg\"","required":false,"default":"\"md\"","description":"Size variant of the indicator"},{"name":"className","type":"string","required":false,"description":"Custom className for the root element"},{"name":"vertical","type":"boolean","required":false,"default":"false","description":"When true, adds extra spacing between child elements and stacks them vertically. Useful for displaying multiple pieces…","descriptionFull":"When true, adds extra spacing between child elements and stacks them vertically. Useful for displaying multiple pieces of information (e.g. status + count) in a clear way"},{"name":"children","type":"React.ReactNode","required":false,"description":"Children content (can include text, icons, multiple elements)"},{"name":"onClick","type":"(VoidFunction & React.MouseEventHandler<HTMLDivElement>)","required":false,"description":"Click handler"}],"examples":["src/primitives/components/indicator/indicator.example.tsx"],"usageDoc":"src/primitives/components/indicator/USAGE.md"},{"name":"Input","path":"src/primitives/components/input/index.tsx","description":"Text input with optional label, prefix/suffix slots, and a `search` variant. Forwards refs and all native `<input>` attributes","tier":"agent-ready","public":true,"category":"forms","domainContext":"generic","props":[{"name":"error","type":"string","required":false,"description":"Validation error message. When provided, displays error styling (red border) and the message below the input"},{"name":"label","type":"string","required":false,"description":"Optional label displayed above the input"},{"name":"id","type":"string","required":false,"default":"auto-generated","description":"HTML id for the input. Required when using label for accessibility"},{"name":"prefix","type":"React.ReactNode","required":false,"description":"Prefix element displayed before the input (left side)"},{"name":"variant","type":"\"search\" | \"default\"","required":false,"default":"\"default\"","description":"Variant of the input - `default`: Standard text input - `search`: Input with magnifying glass icon on the right"},{"name":"size","type":"\"default\" | \"medium\"","required":false,"default":"\"default\"","description":"Size of the input - `default`: padding 10px 12px, icon 16px - `medium`: padding 6px 12px, icon 12px"},{"name":"wrapperClassName","type":"string","required":false,"description":"Custom className for the root wrapper"},{"name":"suffix","type":"React.ReactNode","required":false,"description":"Suffix element displayed after the input (right side)"}],"examples":["src/primitives/components/input/input.example.tsx"],"usageDoc":"src/primitives/components/input/USAGE.md"},{"name":"Label","path":"src/primitives/components/label/index.tsx","description":"Accessible text label for form controls. Associates with an input via `htmlFor` and supports a required-mark indicator. Built on Radix Label","tier":"agent-ready","public":true,"category":"forms","domainContext":"generic","props":[{"name":"htmlFor","type":"string","required":false,"description":"Id of the input being labelled"}],"examples":["src/primitives/components/label/label.example.tsx"],"usageDoc":"src/primitives/components/label/USAGE.md"},{"name":"LabeledCard","path":"src/primitives/components/labeled-card/labeled-card.tsx","description":"Card variant that pairs a tiny label above the body — used for compact stat or metadata blocks","tier":"agent-ready","public":true,"category":"layout","domainContext":"generic","props":[{"name":"isDark","type":"boolean","required":false,"default":"false","description":"Applies a dark background modifier"},{"name":"className","type":"string","required":false,"description":"Additional class for the root element"},{"name":"hasNoWrap","type":"boolean","required":false,"default":"false","description":"Prevents content from wrapping"},{"name":"isRelative","type":"boolean","required":false,"default":"false","description":"Sets `position: relative` on the container"},{"name":"isFullWidth","type":"boolean","required":false,"default":"false","description":"Stretches the card to full container width"},{"name":"hasNoMargin","type":"boolean","required":false,"default":"false","description":"Removes default margin"},{"name":"hasNoBorder","type":"boolean","required":false,"default":"false","description":"Removes the card border"},{"name":"isFullHeight","type":"boolean","required":false,"default":"false","description":"Stretches the card to full container height"},{"name":"isScrollable","type":"boolean","required":false,"default":"false","description":"Enables vertical scroll on the card body"},{"name":"label","type":"React.ReactNode","required":false,"description":"Header content shown above the card body"},{"name":"children","type":"React.ReactNode","required":false,"description":"Card body content"},{"name":"getNavigateOptions","type":"(label: string) => Partial<{ href: string; target: string }>","required":false,"description":"Returns a link `href`/`target` for the label when provided"},{"name":"labelTooltip","type":"React.ReactNode","required":false,"description":"Tooltip shown when hovering the label, e.g. to explain what a count includes"}],"examples":["src/primitives/components/labeled-card/labeled-card.example.tsx"],"usageDoc":"src/primitives/components/labeled-card/USAGE.md"},{"name":"LazyTabWrapper","path":"src/primitives/components/lazy-tab-wrapper/index.tsx","description":"LazyTabWrapper - Wrapper for lazy-loaded tab components with Suspense","descriptionFull":"LazyTabWrapper - Wrapper for lazy-loaded tab components with Suspense\n\nHandles lazy loading with a fallback spinner while the component loads. Useful for code-splitting large tab components","tier":"agent-ready","public":true,"category":"layout","domainContext":"generic","props":[{"name":"Component","type":"React.ComponentType<{ data?: T }>","required":true,"description":"Lazy-loaded component to render"},{"name":"data","type":"T","required":false,"description":"Data to pass to the component"},{"name":"fallback","type":"React.ReactNode","required":false,"default":"<Spinner />","description":"Custom fallback component while loading"},{"name":"spinnerType","type":"\"circle\" | \"square\"","required":false,"default":"\"circle\"","description":"Spinner type when using default fallback"}],"examples":["src/primitives/components/lazy-tab-wrapper/lazy-tab-wrapper.example.tsx"],"usageDoc":"src/primitives/components/lazy-tab-wrapper/USAGE.md"},{"name":"LineChart","path":"src/primitives/components/line-chart/index.tsx","description":"Customisable Chart.js line chart with built-in zoom, tooltip, and legend. Data is passed via props; the component does no fetching","tier":"agent-ready","public":true,"category":"charts","domainContext":"generic","props":[{"name":"chartRef","type":"React.MutableRefObject<IChartApi | null>","required":false,"description":"Mutable ref to hold the LightWeightCharts reference"},{"name":"data","type":"LineChartData","required":true,"description":"Data of the chart"},{"name":"yTicksFormatter","type":"((value: number) => string)","required":false,"description":"Callback to format ticks on y axis. If `priceFormatter` is given. It would be used instead"},{"name":"customLabel","type":"string","required":false,"description":"TODO: Doc"},{"name":"priceFormatter","type":"((value: number) => string)","required":false,"description":"Callback to format ticks on y axis"},{"name":"roundPrecision","type":"number","required":false,"description":"The number of decimals to show"},{"name":"timeline","type":"string","required":false,"description":"TODO: DOC"},{"name":"fixedTimezone","type":"string","required":false,"description":"Applies offset if provided, otherwise timestamps are assumed to already be in local time. Otherwise, use browser's curr…","descriptionFull":"Applies offset if provided, otherwise timestamps are assumed to already be in local time. Otherwise, use browser's current timezone offset for consistent time display"},{"name":"shouldResetZoom","type":"boolean","required":false,"description":"Wether to Reset Zoom"},{"name":"skipRound","type":"boolean","required":false,"description":"Prevent rounding of values"},{"name":"skipMinWidth","type":"boolean","required":false,"description":"Do not enforce a min width"},{"name":"fadedBackground","type":"boolean","required":false,"description":"Use a faded background"},{"name":"backgroundColor","type":"string","required":false,"description":"Background color of the chart"},{"name":"customDateFormat","type":"string","required":false,"description":"Custom date format"},{"name":"verticalLineLabelVisible","type":"boolean","required":false,"description":"Show vertical line at mouse position"},{"name":"horizontalLineLabelVisible","type":"boolean","required":false,"description":"Show horizontal line at mouse position"},{"name":"showDateInTooltip","type":"boolean","required":false,"description":"Show date line in tooltip"},{"name":"disableAutoRange","type":"boolean","required":false,"description":"Disable automatically determining range"},{"name":"uniformDistribution","type":"boolean","required":false,"description":"Changes horizontal scale marks generation. With this flag equal to true, marks of the same weight are either all drawn…","descriptionFull":"Changes horizontal scale marks generation. With this flag equal to true, marks of the same weight are either all drawn or none are drawn at all"},{"name":"unit","type":"string","required":false,"default":"\"\"","description":"The unit to display with values"},{"name":"beginAtZero","type":"boolean","required":false,"description":"Starts the value axis at 0"},{"name":"showPointMarkers","type":"boolean","required":false,"description":"Show a marker on the line"},{"name":"height","type":"number","required":false,"default":"240","description":"Controls the height of the chart"}],"shapes":[{"name":"LineChartData","fields":[{"name":"datasets","type":"LineDataset[]","required":true,"description":"One line series per entry; `visible: false` hides a series without removing it"}]}],"examples":["src/primitives/components/line-chart/line-chart.example.tsx"],"usageDoc":"src/primitives/components/line-chart/USAGE.md"},{"name":"LineChartCard","path":"src/domain/components/line-chart-card/index.tsx","description":"Composable line-chart card with title, timeline range selector, legend (basic or detailed), error boundary, and an optional min/max/avg footer","descriptionFull":"Composable line-chart card with title, timeline range selector, legend (basic or detailed), error boundary, and an optional min/max/avg footer.\n\nAccepts either pre-shaped `data` or `rawData` + a `dataAdapter` callback so upstream domain components can keep their data wrangling local","tier":"agent-ready","public":true,"category":"charts","domainContext":"generic","props":[{"name":"data","type":"LineChartCardData","required":false,"description":"Pre-adapted chart data (use this OR rawData+dataAdapter)"},{"name":"rawData","type":"unknown","required":false,"description":"Raw data to be transformed by dataAdapter"},{"name":"dataAdapter","type":"(data: unknown) => LineChartCardData","required":false,"description":"Adapter to transform rawData into LineChartCardData"},{"name":"timelineOptions","type":"TimelineOption[]","required":false,"description":"Timeline range selector options"},{"name":"timeline","type":"string","required":false,"description":"Controlled timeline value"},{"name":"defaultTimeline","type":"string","required":false,"default":"first option","description":"Default timeline when uncontrolled"},{"name":"onTimelineChange","type":"(timeline: string) => void","required":false,"description":"Callback when timeline changes"},{"name":"title","type":"string","required":false,"description":"Chart title"},{"name":"detailLegends","type":"boolean","required":false,"default":"false","description":"Show detail legends with current values"},{"name":"isLoading","type":"boolean","required":false,"default":"false","description":"Loading state"},{"name":"shouldResetZoom","type":"boolean","required":false,"default":"true","description":"Whether to reset zoom on timeline change (default: true)"},{"name":"chartProps","type":"Partial<LightWeightLineChartProps>","required":false,"description":"Pass-through props to the core LineChart"},{"name":"chartRef","type":"React.MutableRefObject<IChartApi | null>","required":false,"description":"Ref to the lightweight-charts IChartApi"},{"name":"minHeight","type":"string | number","required":false,"default":"350","description":"Minimum chart height"},{"name":"className","type":"string","required":false,"description":"Custom class name"},{"name":"headerAction","type":"React.ReactNode","required":false,"description":"Optional action rendered on the right of the card header (e.g. an expand toggle). Passed straight through to `ChartCont…","descriptionFull":"Optional action rendered on the right of the card header (e.g. an expand toggle). Passed straight through to `ChartContainer`. Additive - omit it and the card header is unchanged"},{"name":"titleExtra","type":"React.ReactNode","required":false,"description":"Optional node rendered next to the title (e.g. an info tooltip). Passed straight through to `ChartContainer`. Additive"}],"shapes":[{"name":"TimelineOption","fields":[{"name":"value","type":"string","required":true,"description":"Timeline key (e.g. `5m`, `1h`) passed to `onTimelineChange` and matched against `timeline`"},{"name":"label","type":"string","required":true,"description":"Range-selector button text"},{"name":"disabled","type":"boolean","required":false,"description":"Not forwarded to the range selector; currently has no effect"}]}],"examples":["src/domain/components/line-chart-card/line-chart-card.example.tsx"],"usageDoc":"src/domain/components/line-chart-card/USAGE.md"},{"name":"ListViewFilter","path":"src/primitives/components/list-view-filter/index.tsx","description":"Toolbar of dropdown/checkbox filters that drive a list view; emits the active filter set to the parent","tier":"agent-ready","public":true,"category":"filters","domainContext":"generic","props":[{"name":"options","type":"CascaderOption[]","required":true,"description":"Cascader options for filtering"},{"name":"filterKey","type":"string","required":false,"default":"\"default\"","description":"Optional key to force re-mounting the Cascader when filters change Useful if you want to reset the internal state of th…","descriptionFull":"Optional key to force re-mounting the Cascader when filters change Useful if you want to reset the internal state of the Cascader when filters change"},{"name":"localFilters","type":"LocalFilters","required":false,"description":"Current filter values as key-value pairs Example: { type: 'Antminer S19XP H', status: ['active', 'pending'] }"},{"name":"onChange","type":"(selections: CascaderValue[]) => void","required":true,"description":"Callback when filters change"},{"name":"className","type":"string","required":false,"description":"Custom className for the filter button"}],"examples":["src/primitives/components/list-view-filter/list-view-filter.example.tsx"],"usageDoc":"src/primitives/components/list-view-filter/USAGE.md"},{"name":"Loader","path":"src/primitives/components/loader/index.tsx","description":"Loader component - display pulsing dots animation","tier":"agent-ready","public":true,"category":"feedback","domainContext":"generic","props":[{"name":"size","type":"number","required":false,"default":"10","description":"Size of each dot in pixels"},{"name":"count","type":"3 | 5 | 7","required":false,"default":"5","description":"Number of dots to display"},{"name":"color","type":"\"red\" | \"gray\" | \"blue\" | \"amber\" | \"orange\"","required":false,"default":"\"orange\"","description":"Color variant of the loader"},{"name":"inline","type":"boolean","required":false,"default":"false","description":"Render as an inline activity indicator instead of a block loading state","descriptionFull":"Render as an inline activity indicator instead of a block loading state.\n\nThe default reserves a fixed 200px so a panel standing in for absent content does not collapse and then jump. Inline, that height is wrong: it strands the dots ~100px below the thing they belong to and centers them against surrounding text, which reads as frozen"},{"name":"className","type":"string","required":false,"description":"Custom className for the root element"}],"examples":["src/primitives/components/loader/loader.example.tsx"],"usageDoc":"src/primitives/components/loader/USAGE.md"},{"name":"LogActivityIcon","path":"src/primitives/components/logs/activity-log-icon.tsx","description":"Status icon used inside `<LogRow>` to indicate event severity (info / warning / error / success)","tier":"agent-ready","public":true,"category":"monitoring","domainContext":"generic","props":[{"name":"status","type":"string","required":true}],"examples":["src/primitives/components/logs/logs.example.tsx"],"usageDoc":"src/primitives/components/logs/USAGE.md"},{"name":"LogDot","path":"src/primitives/components/logs/log-dot.tsx","description":"Coloured dot used to mark a log event's severity or category inline with the row","tier":"agent-ready","public":true,"category":"monitoring","domainContext":"generic","props":[{"name":"type","type":"string","required":true,"description":"`'Incidents'` renders a colored circle; `'Activity'` renders an activity icon"},{"name":"status","type":"string","required":true,"description":"Severity string for color mapping"}],"examples":["src/primitives/components/logs/logs.example.tsx"],"usageDoc":"src/primitives/components/logs/USAGE.md"},{"name":"LogItem","path":"src/primitives/components/logs/log-item.tsx","description":"Compact log-line element rendering a single event with optional icon, timestamp, and message","tier":"agent-ready","public":true,"category":"monitoring","domainContext":"generic","props":[{"name":"data","type":"LogData","required":true},{"name":"onLogClicked","type":"((uuid: string) => void)","required":false}],"shapes":[{"name":"LogData","fields":[{"name":"uuid","type":"string","required":true,"description":"Unique identifier"},{"name":"body","type":"string","required":true,"description":"Body text; `|`-separated values are split into separate lines"},{"name":"title","type":"string","required":true,"description":"Primary text"},{"name":"status","type":"string","required":true,"description":"Severity / status string (`'Critical'`, `'High'`, `'Medium'`, activity status, etc.)"},{"name":"subtitle","type":"string","required":true,"description":"Secondary text (truncated with `title` tooltip)"}]}],"examples":["src/primitives/components/logs/logs.example.tsx"],"usageDoc":"src/primitives/components/logs/USAGE.md"},{"name":"LogRow","path":"src/primitives/components/logs/log-row.tsx","description":"Single row of a logs feed — composes the dot/icon, timestamp, and message into one entry","tier":"agent-ready","public":true,"category":"monitoring","domainContext":"generic","props":[{"name":"log","type":"LogData","required":true,"description":"Log entry data"},{"name":"type","type":"string","required":true,"description":"Log type (controls dot appearance)"},{"name":"style","type":"React.CSSProperties","required":false,"description":"Inline style for the row container"},{"name":"onLogClicked","type":"((uuid: string) => void)","required":false,"description":"Click handler"}],"shapes":[{"name":"LogData","fields":[{"name":"uuid","type":"string","required":true,"description":"Unique identifier"},{"name":"body","type":"string","required":true,"description":"Body text; `|`-separated values are split into separate lines"},{"name":"title","type":"string","required":true,"description":"Primary text"},{"name":"status","type":"string","required":true,"description":"Severity / status string (`'Critical'`, `'High'`, `'Medium'`, activity status, etc.)"},{"name":"subtitle","type":"string","required":true,"description":"Secondary text (truncated with `title` tooltip)"}]}],"examples":["src/primitives/components/logs/logs.example.tsx"],"usageDoc":"src/primitives/components/logs/USAGE.md"},{"name":"LogsCard","path":"src/primitives/components/logs/logs-card.tsx","description":"Card wrapper for a vertically scrolling logs feed with a sticky header","tier":"agent-ready","public":true,"category":"monitoring","domainContext":"generic","props":[{"name":"type","type":"string","required":false,"description":"Log type (`'Incidents'` or `'Activity'`); controls the `LogDot` appearance"},{"name":"label","type":"string","required":false,"description":"Card header label"},{"name":"isDark","type":"boolean","required":false,"default":"false","description":"Applies dark card theme"},{"name":"isLoading","type":"boolean","required":false,"default":"false","description":"Shows skeleton rows while loading"},{"name":"logsData","type":"LogData[]","required":false,"default":"[]","description":"Array of log entries to display"},{"name":"emptyMessage","type":"string","required":false,"default":"\"No active incidents\"","description":"Message shown when `logsData` is empty"},{"name":"skeletonRows","type":"number","required":false,"default":"4","description":"Number of skeleton rows shown during loading"},{"name":"pagination","type":"LogPagination","required":false,"description":"Pagination config; hides pagination when on page 1 or data is empty"},{"name":"onLogClicked","type":"(uuid: string) => void","required":false,"description":"Fired with the log UUID when a row is clicked"}],"shapes":[{"name":"LogData","fields":[{"name":"uuid","type":"string","required":true,"description":"Unique identifier"},{"name":"body","type":"string","required":true,"description":"Body text; `|`-separated values are split into separate lines"},{"name":"title","type":"string","required":true,"description":"Primary text"},{"name":"status","type":"string","required":true,"description":"Severity / status string (`'Critical'`, `'High'`, `'Medium'`, activity status, etc.)"},{"name":"subtitle","type":"string","required":true,"description":"Secondary text (truncated with `title` tooltip)"}]},{"name":"LogPagination","fields":[{"name":"current","type":"number","required":true,"description":"Current page number"},{"name":"total","type":"number","required":true,"description":"Total number of items"},{"name":"pageSize","type":"number","required":true,"description":"Items per page"},{"name":"handlePaginationChange","type":"(page: number) => void","required":true,"description":"Fired when the user changes the page"}]}],"examples":["src/primitives/components/logs/logs.example.tsx"],"usageDoc":"src/primitives/components/logs/USAGE.md"},{"name":"ManageUserModal","path":"src/domain/components/settings/manage-user-modal/manage-user-modal.tsx","description":"Modal for editing an existing user's role, status, or team membership","tier":"agent-ready","public":true,"category":"settings","kernelCapabilities":["device-management"],"domainContext":"device-management","props":[{"name":"open","type":"boolean","required":true,"description":"Controls dialog visibility"},{"name":"onClose","type":"VoidFunction","required":true,"description":"Called when the dialog closes"},{"name":"user","type":"SettingsUser","required":true,"description":"The user being edited"},{"name":"roles","type":"RoleOption[]","required":true,"description":"Available role options"},{"name":"rolePermissions","type":"Record<string, Record<string, PermLevel>>","required":true,"description":"Permission levels per role"},{"name":"permissionLabels","type":"Record<string, string>","required":true,"description":"Display labels for permission keys"},{"name":"onSubmit","type":"(data: { id: string; name: string; email: string; role: string }) => Promise<void>","required":true,"description":"Save handler"},{"name":"isSubmitting","type":"boolean","required":false,"default":"false","description":"Show loading on submit button"}],"examples":["src/domain/components/settings/manage-user-modal/manage-user-modal.example.tsx"],"usageDoc":"src/domain/components/settings/manage-user-modal/USAGE.md"},{"name":"MdkWordmark","path":"src/primitives/components/mdk-wordmark/index.tsx","description":"MDK wordmark — the canonical brand lockup, rendered as inline SVG so it tints to `currentColor`. Use this in `<AppHeader>` (via the `logo` slot) or anywhere else the brand should appear","tier":"agent-ready","public":true,"category":"branding","domainContext":"generic","props":[{"name":"size","type":"\"sm\" | \"md\" | \"lg\"","required":false,"default":"\"md\"","description":"Visual size of the wordmark. `sm` ≈ 24px tall, `md` ≈ 32px, `lg` ≈ 64px"},{"name":"className","type":"string","required":false,"description":"Optional class hook on the outer `<svg>`"},{"name":"title","type":"string","required":false,"default":"\"MDK\"","description":"Accessible label"}],"examples":["src/primitives/components/mdk-wordmark/mdk-wordmark.example.tsx"],"usageDoc":"src/primitives/components/mdk-wordmark/USAGE.md"},{"name":"MetricCard","path":"src/domain/components/composite/metric-card/index.tsx","description":"Compact card displaying a labelled metric value with optional highlight and transparency states","tier":"agent-ready","public":true,"category":"cards","kernelCapabilities":["pool-performance"],"domainContext":"mining-operations","props":[{"name":"label","type":"string","required":true,"description":"Text label shown above the value"},{"name":"unit","type":"string","required":true,"description":"Unit suffix appended after the value (e.g. `\"TH/s\"`, `\"W\"`, `\"USD\"`)"},{"name":"value","type":"string | number | null","required":true,"description":"Metric value to display"},{"name":"bgColor","type":"string","required":false,"default":"BLACK_ALPHA_05","description":"Custom background color (CSS color string)"},{"name":"className","type":"string","required":false,"description":"Additional class names appended to the root element"},{"name":"noMinWidth","type":"boolean","required":false,"default":"false","description":"Removes the default minimum width so the card shrinks to content"},{"name":"isValueMedium","type":"boolean","required":false,"default":"false","description":"Applies a medium-weight variant to the value typography"},{"name":"isHighlighted","type":"boolean","required":false,"default":"false","description":"Renders the value in orange to draw attention"},{"name":"showDashForZero","type":"boolean","required":false,"default":"false","description":"Displays `—` instead of `0` when value is zero"},{"name":"isTransparentColor","type":"boolean","required":false,"default":"false","description":"Renders the value in a low-opacity white for de-emphasized display"}],"examples":["src/domain/components/composite/metric-card/metric-card.example.tsx"],"usageDoc":"src/domain/components/composite/metric-card/USAGE.md"},{"name":"MinerMetricCard","path":"src/domain/components/stat-cards/miner-metric-card/miner-metric-card.tsx","description":"Single-metric card (hashrate, temperature, or power) for one miner with sparkline and delta","descriptionFull":"Single-metric card (hashrate, temperature, or power) for one miner with sparkline and delta.\n\nDisplays key metrics for a miner including: - Efficiency (fixed position top-right) - Hash rate, Temperature - Frequency, Consumption - Optional secondary stats in grid","tier":"agent-ready","public":true,"category":"widgets","kernelCapabilities":["device-management"],"domainContext":"device-management","props":[{"name":"primaryStats","type":"StatItem[]","required":false,"description":"Primary statistics (efficiency, hashrate, temperature, frequency, consumption)"},{"name":"secondaryStats","type":"StatItem[]","required":false,"description":"Secondary statistics to display in grid"},{"name":"showSecondaryStats","type":"boolean","required":false,"default":"true","description":"Whether to show secondary stats section"}],"shapes":[{"name":"StatItem","fields":[{"name":"name","type":"string","required":false,"description":"In `primaryStats`, selects the slot and must be exactly 'Efficiency', 'Hash rate', 'Temperature', 'Frequency' or 'Consu…","descriptionFull":"In `primaryStats`, selects the slot and must be exactly 'Efficiency', 'Hash rate', 'Temperature', 'Frequency' or 'Consumption'; in `secondaryStats`, the label (and React key)"},{"name":"value","type":"string | number","required":false,"description":"Displayed value; Efficiency only shows when it is a number"},{"name":"unit","type":"string","required":false,"description":"Unit appended after the value in `primaryStats`; ignored in `secondaryStats`, so fold it into `value` there"}]}],"examples":["src/domain/components/stat-cards/miner-metric-card/miner-metric-card.example.tsx"],"usageDoc":"src/domain/components/stat-cards/miner-metric-card/USAGE.md"},{"name":"MinersActivityChart","path":"src/domain/components/miners-activity-chart/miners-activity-chart.tsx","description":"Per-status miner counts (online / offline / faulted / power-mode). Renders as coloured indicator dots (`indicators`) or tinted status tiles (`tiles`)","tier":"agent-ready","public":true,"category":"widgets","kernelCapabilities":["device-management"],"domainContext":"device-management","props":[{"name":"data","type":"MinersActivityData","required":false,"default":"{}","description":"Time-series data for online/offline/faulted counts"},{"name":"large","type":"boolean","required":false,"default":"false","description":"Use tall variant"},{"name":"isLoading","type":"boolean","required":false,"default":"false","description":"Show loading state"},{"name":"isError","type":"boolean","required":false,"default":"false","description":"Show error state"},{"name":"error","type":"MinerActivityChartErrorProp | null","required":false,"default":"null","description":"Error details to display"},{"name":"showLabel","type":"boolean","required":false,"default":"true","description":"Show axis labels"},{"name":"isDemoMode","type":"boolean","required":false,"default":"false","description":"Use demo/mock data"},{"name":"variant","type":"\"indicators\" | \"tiles\"","required":false,"default":"\"indicators\"","description":"`indicators` (default) renders coloured dots; `tiles` renders tinted status tiles"}],"shapes":[{"name":"MinersActivityData","fields":[{"name":"total","type":"number","required":false,"description":"Total miner count; not rendered, since each tile reads its own status key (e.g. `offline`, `error`, `sleep`) and shows…","descriptionFull":"Total miner count; not rendered, since each tile reads its own status key (e.g. `offline`, `error`, `sleep`) and shows 0 when absent"}]},{"name":"MinerActivityChartErrorProp","fields":[{"name":"data","type":"{ message?: string }","required":false,"description":"Error payload; `message` becomes the error alert description when `isError` is set, else a generic retry hint"}]}],"examples":["src/domain/components/miners-activity-chart/miners-activity-chart.example.tsx"],"usageDoc":"src/domain/components/miners-activity-chart/USAGE.md"},{"name":"MiningPoolsPanel","path":"src/domain/components/mining-pools-panel/index.tsx","description":"Dashboard card that lists configured mining pools — one row per pool, with revenue, hash rate, and an optional \"Show details\" action","descriptionFull":"Dashboard card that lists configured mining pools — one row per pool, with revenue, hash rate, and an optional \"Show details\" action.\n\nPure presentation: the row data + click handler come from props, shaped upstream by the caller into {@link MiningPoolRow}s","tier":"agent-ready","public":true,"category":"cards","kernelCapabilities":["pool-monitoring"],"domainContext":"mining-operations","props":[{"name":"label","type":"string","required":false,"default":"\"Mining Pools\"","description":"Override the card title — defaults to `Mining Pools`"},{"name":"hideHeader","type":"boolean","required":false,"default":"false","description":"Hide the title row entirely"},{"name":"isLoading","type":"boolean","required":false,"default":"false","description":"Loading state — renders skeleton rows"},{"name":"skeletonRows","type":"number","required":false,"default":"3","description":"Number of skeleton rows to show while loading"},{"name":"emptyMessage","type":"string","required":false,"default":"\"No pools configured\"","description":"Message shown when `rows` is empty"},{"name":"rows","type":"MiningPoolRow[]","required":false,"default":"[]","description":"Pool rows, in display order"},{"name":"onShowDetails","type":"(row: MiningPoolRow) => void","required":false,"description":"Called when the user clicks the per-row \"Show details\" button"},{"name":"className","type":"string","required":false,"description":"Extra className for the root"}],"shapes":[{"name":"MiningPoolRow","fields":[{"name":"id","type":"string","required":true,"description":"Stable React key"},{"name":"name","type":"string","required":true,"description":"Display name (e.g. `minerpool-f2pool-shelf-0`)"},{"name":"revenue24hBtc","type":"number","required":false,"description":"24h revenue in BTC; rendered as `0.00 BTC` when undefined"},{"name":"hashratePhs","type":"number","required":false,"description":"Hashrate in PH/s — used for display (TH/s shown automatically below 1 PH/s)"},{"name":"details","type":"PoolDetailItem[]","required":false,"description":"Key/value details rendered inside the \"Show details\" popover"}]}],"examples":["src/domain/components/mining-pools-panel/mining-pools-panel.example.tsx"],"usageDoc":"src/domain/components/mining-pools-panel/USAGE.md"},{"name":"MinMaxAvg","path":"src/primitives/components/min-max-avg/index.tsx","description":"Min / Max / Avg summary row with consistent MDK label and value styling","tier":"agent-ready","public":true,"category":"charts","domainContext":"generic","props":[{"name":"min","type":"string","required":false,"description":"Minimum value (hidden if empty)"},{"name":"max","type":"string","required":false,"description":"Maximum value (hidden if empty)"},{"name":"avg","type":"string","required":false,"description":"Average value (hidden if empty)"},{"name":"className","type":"string","required":false,"description":"Additional root class"}],"examples":["src/primitives/components/min-max-avg/min-max-avg.example.tsx"],"usageDoc":"src/primitives/components/min-max-avg/USAGE.md"},{"name":"Mosaic","path":"src/primitives/components/mosaic/index.tsx","description":"Mosaic - Grid layout component with named areas","descriptionFull":"Mosaic - Grid layout component with named areas\n\nFeatures: - Named grid areas for layout - Responsive: stacks on mobile, grid on desktop - Auto-generates column tracks - Validates column count vs template","tier":"agent-ready","public":true,"category":"layout","domainContext":"generic","props":[{"name":"template","type":"string[] | string[][]","required":true,"description":"Grid area layout. 1D: each string is a row of space-separated area names. 2D: each inner array is a row"},{"name":"gap","type":"string","required":false,"default":"\"12px\"","description":"CSS gap between grid cells"},{"name":"rowHeight","type":"string","required":false,"default":"\"auto\"","description":"CSS height for each row"},{"name":"columns","type":"string | string[]","required":false,"description":"Custom `grid-template-columns` value or array of track sizes. Defaults to equal-width fractional tracks"},{"name":"children","type":"React.ReactNode","required":true,"description":"`Mosaic.Item` elements"},{"name":"className","type":"string","required":false,"description":"Additional class for the grid element"}],"examples":["src/primitives/components/mosaic/mosaic.example.tsx"],"usageDoc":"src/primitives/components/mosaic/USAGE.md"},{"name":"MultiLevelSelect","path":"src/primitives/components/multi-level-select/index.tsx","description":"Multi-level select component with collapsible sections","tier":"agent-ready","public":true,"category":"forms","domainContext":"generic","props":[],"examples":["src/primitives/components/multi-level-select/multi-level-select.example.tsx"],"usageDoc":"src/primitives/components/multi-level-select/USAGE.md"},{"name":"MultiSelect","path":"src/primitives/components/multi-select/index.tsx","description":"Multi-select picker built on Radix Popover + Checkbox. Sibling to `<Select>` for cases where consumers need to pick more than one option (filter rows, multi-target actions, tag-style inputs). The pop…","descriptionFull":"Multi-select picker built on Radix Popover + Checkbox. Sibling to `<Select>` for cases where consumers need to pick more than one option (filter rows, multi-target actions, tag-style inputs). The popover stays open on toggle; Esc / outside-click closes it. Selected values render as removable chips in the trigger, with an optional \"clear all\" affordance and a `+N more` overflow chip via `maxSelectedDisplay`.\n\nControlled vs uncontrolled is decided by the presence of `value` (mirrors Radix Select's convention): pass `value` for controlled, `defaultValue` for uncontrolled","tier":"agent-ready","public":true,"category":"forms","domainContext":"generic","props":[{"name":"options","type":"MultiSelectOption[]","required":true,"description":"`{ value, label, disabled? }` entries to render as option rows"},{"name":"value","type":"string[]","required":false,"description":"Controlled selected values. Omit to use `defaultValue` for uncontrolled mode"},{"name":"defaultValue","type":"string[]","required":false,"default":"[]","description":"Initial values for uncontrolled mode. Ignored when `value` is provided"},{"name":"onValueChange","type":"((next: string[]) => void)","required":false,"description":"Fires with the next array on toggle / chip remove / clear-all"},{"name":"placeholder","type":"React.ReactNode","required":false,"default":"\"Select...\"","description":"Rendered when nothing is selected"},{"name":"disabled","type":"boolean","required":false,"default":"false","description":"Disables the trigger (popover does not open)"},{"name":"size","type":"\"sm\" | \"md\" | \"lg\"","required":false,"default":"\"lg\"","description":"Trigger sizing tokens. Mirror the `<Select>` sizes"},{"name":"variant","type":"\"default\" | \"colored\"","required":false,"default":"\"default\"","description":"`'colored'` paints the trigger in the primary tint (matches `<Select>`'s colored variant)"},{"name":"emptyMessage","type":"React.ReactNode","required":false,"default":"\"No options\"","description":"Rendered inside the popover when `options` is empty"},{"name":"maxSelectedDisplay","type":"number","required":false,"description":"Max number of selected chips rendered in the trigger before collapsing the rest into a \"+N more\" badge. `undefined` (de…","descriptionFull":"Max number of selected chips rendered in the trigger before collapsing the rest into a \"+N more\" badge. `undefined` (default) renders every chip"},{"name":"className","type":"string","required":false,"description":"Extra class on the trigger button"},{"name":"contentClassName","type":"string","required":false,"description":"Extra class on the popover content"},{"name":"aria-label","type":"string","required":false,"description":"Accessible label - applied to the trigger button"},{"name":"id","type":"string","required":false},{"name":"name","type":"string","required":false}],"shapes":[{"name":"MultiSelectOption","fields":[{"name":"value","type":"string","required":true,"description":"Value added to or removed from the selection; matched by strict equality, and also the React key"},{"name":"label","type":"React.ReactNode","required":true,"description":"Shown in the option row and on the selected chip; a string label also names the chip's remove button"},{"name":"disabled","type":"boolean","required":false,"description":"Option is shown but cannot be toggled from the list; an already-selected one can still be removed via its chip"}]}],"examples":["src/primitives/components/multi-select/multi-select.example.tsx"],"usageDoc":"src/primitives/components/multi-select/USAGE.md"},{"name":"NotFoundPage","path":"src/primitives/components/not-found-page/index.tsx","description":"Full-page 404 view with a heading, supporting copy, and a primary call-to-action back to safety","tier":"agent-ready","public":true,"category":"pages","domainContext":"generic","props":[{"name":"onGoHome","type":"VoidFunction","required":false,"description":"Callback fired when the \"Go Home\" button is clicked"},{"name":"title","type":"string","required":false,"default":"\"404\"","description":"Page title"},{"name":"message","type":"string","required":false,"default":"\"The page you are looking for does not exist.\"","description":"Message displayed below the title"},{"name":"className","type":"string","required":false,"description":"Additional CSS class name"}],"examples":["src/primitives/components/not-found-page/not-found-page.example.tsx"],"usageDoc":"src/primitives/components/not-found-page/USAGE.md"},{"name":"OperationsEnergyCostChart","path":"src/primitives/components/operations-energy-cost-chart/index.tsx","description":"Doughnut breakdown of Operations vs Energy cost (USD per MWh). Wraps `ChartContainer` and `DoughnutChart`; pass `operationalCostsUSD` and `energyCostsUSD` via `data`","tier":"agent-ready","public":true,"category":"charts","domainContext":"generic","props":[{"name":"title","type":"string","required":false,"default":"\"Operations vs Energy Cost\"","description":"Chart title"},{"name":"unit","type":"string","required":false,"default":"$/MWh","description":"Subtitle and tooltip unit label"},{"name":"height","type":"number","required":false,"default":"200","description":"Doughnut height in pixels"},{"name":"className","type":"string","required":false,"description":"Extra class on the container"},{"name":"isLoading","type":"boolean","required":false,"default":"false","description":"Shows loading overlay on the chart area"},{"name":"emptyMessage","type":"string","required":false,"description":"Message when both costs are zero or missing"},{"name":"data","type":"Partial<{ energyCostsUSD: number; operationalCostsUSD: number }>","required":false,"description":"`operationalCostsUSD` and `energyCostsUSD`"}],"examples":["src/primitives/components/operations-energy-cost-chart/operations-energy-cost-chart.example.tsx"],"usageDoc":"src/primitives/components/operations-energy-cost-chart/USAGE.md"},{"name":"Pagination","path":"src/primitives/components/pagination/index.tsx","description":"Pagination component for navigating through pages","tier":"agent-ready","public":true,"category":"navigation","domainContext":"generic","props":[{"name":"current","type":"number","required":false,"default":"1","description":"Current active page number"},{"name":"total","type":"number","required":false,"default":"0","description":"Total number of items"},{"name":"pageSize","type":"number","required":false,"default":"20","description":"Number of items per page"},{"name":"pageSizeOptions","type":"number[]","required":false,"default":"[10, 20, 50, 100]","description":"Page size options for the select dropdown"},{"name":"showSizeChanger","type":"boolean","required":false,"default":"true","description":"Show page size changer"},{"name":"showTotal","type":"boolean","required":false,"default":"false","description":"Show total count text"},{"name":"disabled","type":"boolean","required":false,"default":"false","description":"Disable pagination"},{"name":"size","type":"\"sm\" | \"md\" | \"lg\"","required":false,"default":"\"sm\"","description":"Size variant"},{"name":"className","type":"string","required":false,"description":"Custom className for the root element"},{"name":"onChange","type":"((page: number, pageSize: number) => void)","required":false,"description":"Callback when page number or page size changes"},{"name":"onSizeChange","type":"((current: number, size: number) => void)","required":false,"description":"Callback when page size changes"}],"examples":["src/primitives/components/pagination/pagination.example.tsx"],"usageDoc":"src/primitives/components/pagination/USAGE.md"},{"name":"PoolDetailsCard","path":"src/domain/components/pool-details-card/index.tsx","description":"Compact key/value card for displaying pool metadata (URL, fee, worker count, etc.). Empty list renders a \"No data available\" placeholder","tier":"agent-ready","public":true,"category":"cards","kernelCapabilities":["pool-performance"],"domainContext":"mining-operations","props":[{"name":"label","type":"string","required":false,"description":"Header label"},{"name":"underline","type":"boolean","required":false,"default":"false","description":"Render an underline under the label"},{"name":"className","type":"string","required":false,"description":"Additional class names"},{"name":"details","type":"PoolDetailItem[]","required":true,"description":"Detail rows to render"}],"shapes":[{"name":"PoolDetailItem","fields":[{"name":"title","type":"string","required":true,"description":"Row label, rendered with a trailing colon"},{"name":"value","type":"string | number","required":false,"description":"Row value; renders `-` when undefined or an empty string"}]}],"examples":["src/domain/components/pool-details-card/pool-details-card.example.tsx"],"usageDoc":"src/domain/components/pool-details-card/USAGE.md"},{"name":"PoolDetailsPopover","path":"src/domain/components/pool-details-popover/index.tsx","description":"Button-triggered popover that displays a pool's key/value details (URL, fee, worker count, status, …) inside a Radix `Dialog`. Wraps `PoolDetailsCard` so the read-out matches the embedded card variant","tier":"agent-ready","public":true,"category":"cards","kernelCapabilities":["pool-performance"],"domainContext":"mining-operations","props":[{"name":"title","type":"string","required":false,"description":"Dialog title"},{"name":"description","type":"string","required":false,"description":"Dialog body description"},{"name":"disabled","type":"boolean","required":false,"default":"false","description":"Disable the trigger"},{"name":"className","type":"string","required":false,"description":"Additional class names"},{"name":"triggerLabel","type":"string","required":false,"description":"Trigger button label"},{"name":"details","type":"PoolDetailItem[]","required":true,"description":"Detail rows"}],"examples":["src/domain/components/pool-details-popover/pool-details-popover.example.tsx"],"usageDoc":"src/domain/components/pool-details-popover/USAGE.md"},{"name":"Popover","path":"src/primitives/components/popover/index.tsx","description":"Popover Root - Container for a single popover","tier":"agent-ready","public":true,"category":"overlays","domainContext":"generic","props":[],"examples":["src/primitives/components/popover/popover.example.tsx"],"usageDoc":"src/primitives/components/popover/USAGE.md"},{"name":"PowerModeTimelineChart","path":"src/domain/components/dashboard/power-mode-timeline-chart/power-mode-timeline-chart.tsx","description":"Timeline chart for power-mode state changes over time. Wraps {@link TimelineChart} with mining-specific data shaping","tier":"agent-ready","public":true,"category":"charts","kernelCapabilities":["device-telemetry"],"domainContext":"mining-operations","props":[{"name":"data","type":"PowerModeTimelineEntry[]","required":false,"default":"[]","description":"Initial power-mode entries (each with start/end ts + mode)"},{"name":"dataUpdates","type":"PowerModeTimelineEntry[]","required":false,"default":"[]","description":"Streaming updates appended to the initial data"},{"name":"isLoading","type":"boolean","required":false,"default":"false","description":"Show a loading skeleton instead of the chart"},{"name":"timezone","type":"string","required":false,"default":"\"UTC\"","description":"IANA timezone string for x-axis tick formatting"},{"name":"title","type":"string","required":false,"default":"CHART_TITLES.POWER_MODE_TIMELINE","description":"Chart title"}],"shapes":[{"name":"PowerModeTimelineEntry","fields":[{"name":"ts","type":"number","required":false,"description":"Sample time (epoch ms); consecutive samples with the same mode merge into one bar"},{"name":"power_mode_group_aggr","type":"Record<string, string>","required":false,"description":"Power mode keyed by miner; takes precedence over the miner's status for the bar's mode"},{"name":"status_group_aggr","type":"Record<string, string>","required":false,"description":"Status keyed by miner; its keys decide which miners get a row, and an entry without it adds nothing"}]}],"examples":["src/domain/components/dashboard/power-mode-timeline-chart/power-mode-timeline-chart.example.tsx"],"usageDoc":"src/domain/components/dashboard/power-mode-timeline-chart/USAGE.md"},{"name":"ProfileMenu","path":"src/domain/components/header-actions/profile-menu.tsx","description":"Top-bar profile dropdown. Wraps the core DropdownMenu primitive with the user-avatar icon as the trigger. Items are caller-provided so the menu surface stays application-driven","tier":"agent-ready","public":true,"category":"dashboard","kernelCapabilities":["session-management"],"domainContext":"mining-operations","props":[{"name":"items","type":"ProfileMenuItem[]","required":true,"description":"Items rendered in the dropdown, top-to-bottom"},{"name":"user","type":"React.ReactNode","required":false,"description":"Optional user label rendered at the top of the dropdown (e.g. an email)"},{"name":"icon","type":"React.ReactNode","required":false,"default":"<UserAvatarIcon />","description":"Override the trigger icon — defaults to the user-avatar icon"},{"name":"label","type":"string","required":false,"default":"\"Profile menu\"","description":"Accessible label for the trigger button"},{"name":"className","type":"string","required":false,"description":"Additional class names"}],"shapes":[{"name":"ProfileMenuItem","fields":[{"name":"label","type":"string","required":true,"description":"Item text; also used as the React key, so keep it unique within `items`"},{"name":"onSelect","type":"() => void","required":true,"description":"Called when the item is chosen by click or keyboard"},{"name":"danger","type":"boolean","required":false,"description":"Render as a destructive action (red)"},{"name":"icon","type":"React.ReactNode","required":false,"description":"Optional leading icon"},{"name":"description","type":"React.ReactNode","required":false,"description":"Optional secondary line under the label (e.g. \"Current: Europe/Podgorica\")"},{"name":"disabled","type":"boolean","required":false,"description":"Disable the menu item"}]}],"examples":["src/domain/components/header-actions/header-actions.example.tsx"],"usageDoc":"src/domain/components/header-actions/USAGE.md"},{"name":"Radio","path":"src/primitives/components/radio/index.tsx","description":"Radio button component (use within RadioGroup)","tier":"agent-ready","public":true,"category":"forms","domainContext":"generic","props":[{"name":"value","type":"string","required":true,"description":"Value associated with this option"},{"name":"size","type":"\"sm\" | \"md\" | \"lg\"","required":false,"default":"\"md\"","description":"Size variant of the radio"},{"name":"color","type":"\"success\" | \"warning\" | \"error\" | \"primary\" | \"default\"","required":false,"default":"\"primary\"","description":"Color variant when checked"},{"name":"radius","type":"\"small\" | \"none\" | \"medium\" | \"large\" | \"full\"","required":false,"default":"\"full\"","description":"Border radius variant (full makes it circular)"},{"name":"className","type":"string","required":false,"description":"Custom className for the root element"},{"name":"label","type":"string","required":false,"description":"Label text (or use children for custom content)"},{"name":"children","type":"React.ReactNode","required":false,"description":"Children content (takes precedence over label)"},{"name":"indicatorClassName","type":"string","required":false,"description":"Custom className for the indicator element"}],"examples":["src/primitives/components/radio/radio.example.tsx"],"usageDoc":"src/primitives/components/radio/USAGE.md"},{"name":"RadioCard","path":"src/primitives/components/radio/index.tsx","description":"RadioCard component - button-like radio option","descriptionFull":"RadioCard component - button-like radio option\n\nSupports an `onChange` callback when selected","tier":"agent-ready","public":true,"category":"forms","domainContext":"generic","props":[{"name":"value","type":"string","required":true,"description":"Value associated with this option"},{"name":"size","type":"\"sm\" | \"md\" | \"lg\"","required":false,"default":"\"md\"","description":"Size variant of the radio"},{"name":"color","type":"\"success\" | \"warning\" | \"error\" | \"primary\" | \"default\"","required":false,"default":"\"primary\"","description":"Color variant when checked"},{"name":"radius","type":"\"small\" | \"none\" | \"medium\" | \"large\" | \"full\"","required":false,"default":"\"full\"","description":"Border radius variant (full makes it circular)"},{"name":"className","type":"string","required":false,"description":"Custom className for the root element"},{"name":"label","type":"string","required":false,"description":"Label text (or use children for custom content)"},{"name":"children","type":"React.ReactNode","required":false,"description":"Children content (takes precedence over label)"},{"name":"indicatorClassName","type":"string","required":false,"description":"Custom className for the indicator element"}],"examples":["src/primitives/components/radio/radio.example.tsx"],"usageDoc":"src/primitives/components/radio/USAGE.md"},{"name":"RadioGroup","path":"src/primitives/components/radio/index.tsx","description":"RadioGroup component - container for Radio items","tier":"agent-ready","public":true,"category":"forms","domainContext":"generic","props":[{"name":"orientation","type":"\"horizontal\" | \"vertical\"","required":false,"default":"\"vertical\"","description":"Layout orientation"},{"name":"noGap","type":"boolean","required":false,"default":"false","description":"Remove gap between radio items"},{"name":"className","type":"string","required":false,"description":"Custom className for the group"}],"examples":["src/primitives/components/radio/radio.example.tsx"],"usageDoc":"src/primitives/components/radio/USAGE.md"},{"name":"RBACControlSettings","path":"src/domain/components/settings/rbac-control/rbac-control-settings.tsx","description":"Settings panel listing roles and their permissions; supports editing role-permission grants","tier":"agent-ready","public":true,"category":"settings","kernelCapabilities":["device-management"],"domainContext":"device-management","props":[{"name":"users","type":"SettingsUser[]","required":true,"description":"List of current users"},{"name":"roles","type":"RoleOption[]","required":true,"description":"Available role options"},{"name":"rolePermissions","type":"Record<string, Record<string, PermLevel>>","required":true,"description":"Permission levels per role"},{"name":"permissionLabels","type":"Record<string, string>","required":true,"description":"Display labels for permission keys"},{"name":"canWrite","type":"boolean","required":true,"description":"Whether the current user may edit access settings"},{"name":"isLoading","type":"boolean","required":false,"default":"false","description":"Show loading state"},{"name":"onCreateUser","type":"(data: { name: string; email: string; role: string }) => Promise<void>","required":true,"description":"Create a new user"},{"name":"onUpdateUser","type":"(data: { id: string; name: string; email: string; role: string }) => Promise<void>","required":true,"description":"Update an existing user's role"},{"name":"onDeleteUser","type":"(userId: string) => Promise<void>","required":true,"description":"Delete a user"},{"name":"className","type":"string","required":false,"description":"Additional CSS class"}],"examples":["src/domain/components/settings/rbac-control/rbac-control-settings.example.tsx"],"usageDoc":"src/domain/components/settings/rbac-control/USAGE.md"},{"name":"ReportTimeFrameSelector","path":"src/domain/components/timeframe/report-time-frame-selector/report-time-frame-selector.tsx","description":"Reporting-period selector with preset windows (1d / 7d / 30d / custom range)","tier":"agent-ready","public":true,"category":"filters","kernelCapabilities":["financial-reporting"],"domainContext":"financial-reporting","props":[{"name":"presetTimeFrame","type":"number | null","required":true,"description":"Selected preset in days (`1`, `7`, `30`); `null` means the custom range is active"},{"name":"dateRange","type":"[Date, Date]","required":true,"description":"Custom date range as a `[start, end]` tuple"},{"name":"setPresetTimeFrame","type":"(value: number | null) => void","required":true,"description":"Update the preset selection"},{"name":"setDateRange","type":"(value: [Date, Date]) => void","required":true,"description":"Update the custom date range"}],"examples":["src/domain/components/timeframe/report-time-frame-selector/report-time-frame-selector.example.tsx"],"usageDoc":"src/domain/components/timeframe/report-time-frame-selector/USAGE.md"},{"name":"RequireAuth","path":"src/domain/components/auth/require-auth/require-auth.tsx","description":"Route guard that reads the session token from the headless `authStore` (via `useAuth`) and renders the children only when a token is present. Otherwise it renders `fallback` — typically `<Navigate to…","descriptionFull":"Route guard that reads the session token from the headless `authStore` (via `useAuth`) and renders the children only when a token is present. Otherwise it renders `fallback` — typically `<Navigate to=\"/signin\" replace />` from `react-router`. Router-agnostic by design","tier":"agent-ready","public":true,"category":"auth","kernelCapabilities":["authentication"],"domainContext":"mining-operations","props":[{"name":"children","type":"React.ReactNode","required":true,"description":"Rendered when a token is present"},{"name":"fallback","type":"React.ReactNode","required":true,"description":"Rendered when no token is present — typically `<Navigate to=\"/signin\" />`"},{"name":"rememberPath","type":"boolean","required":false,"default":"true","description":"When true (default), the current location is persisted to sessionStorage before rendering the fallback so the sign-in f…","descriptionFull":"When true (default), the current location is persisted to sessionStorage before rendering the fallback so the sign-in flow can return there"}],"examples":["src/domain/components/auth/require-auth/require-auth.example.tsx"],"usageDoc":"src/domain/components/auth/require-auth/USAGE.md"},{"name":"Select","path":"src/primitives/components/select/index.tsx","description":"Dropdown select built on Radix UI. Supports `default` and `colored` variants, multiple sizes, and full keyboard navigation","tier":"agent-ready","public":true,"category":"forms","domainContext":"generic","props":[{"name":"value","type":"string","required":false,"description":"Controlled value"},{"name":"defaultValue","type":"string","required":false,"description":"Uncontrolled initial value"},{"name":"onValueChange","type":"((value: string) => void)","required":false,"description":"Setter for the value"},{"name":"allowClear","type":"boolean","required":false,"default":"false","description":"Show a clear button when a value is selected"}],"examples":["src/primitives/components/select/select.example.tsx"],"usageDoc":"src/primitives/components/select/USAGE.md"},{"name":"SettingsDashboard","path":"src/domain/components/settings/settings-dashboard/settings-dashboard.tsx","description":"Top-level settings landing page — composes the per-section settings cards in a single grid","tier":"agent-ready","public":true,"category":"settings","kernelCapabilities":["device-management"],"domainContext":"device-management","props":[{"name":"dangerActions","type":"ActionButtonProps[]","required":false,"description":"Danger-zone action buttons (reset, delete)"},{"name":"headerControlsProps","type":"HeaderControlsSettingsProps","required":false,"description":"Props forwarded to `HeaderControlsSettings`"},{"name":"rbacControlProps","type":"RBACControlSettingsProps","required":false,"description":"Props forwarded to `RBACControlSettings`"},{"name":"importExportProps","type":"ImportExportSettingsProps","required":false,"description":"Props forwarded to `ImportExportSettings`"},{"name":"featureFlagsProps","type":"FeatureFlagsSettingsProps","required":false,"description":"Props forwarded to `FeatureFlagsSettings`"},{"name":"showFeatureFlags","type":"boolean","required":false,"default":"false","description":"Whether to show the feature-flags section"},{"name":"className","type":"string","required":false,"description":"Additional CSS class"}],"examples":["src/domain/components/settings/settings-dashboard/settings-dashboard.example.tsx"],"usageDoc":"src/domain/components/settings/settings-dashboard/USAGE.md"},{"name":"Sidebar","path":"src/primitives/components/sidebar/index.tsx","description":"Application sidebar with collapsible state, persistent expansion (via `localStorage`), optional overlay mode, and item-click + active-item highlighting","tier":"agent-ready","public":true,"category":"navigation","domainContext":"generic","props":[{"name":"activeId","type":"string","required":false,"description":"Currently active item id"},{"name":"expanded","type":"boolean","required":false,"description":"Controlled expanded state"},{"name":"visible","type":"boolean","required":false,"default":"true","description":"Hide entirely without unmounting"},{"name":"overlay","type":"boolean","required":false,"default":"false","description":"Show as fixed overlay with backdrop"},{"name":"className","type":"string","required":false,"description":"Additional class names"},{"name":"defaultExpanded","type":"boolean","required":false,"default":"false","description":"Initial expanded state"},{"name":"header","type":"React.ReactNode","required":false,"description":"Header content (e.g. logo, app name)"},{"name":"onClose","type":"VoidFunction","required":false,"description":"Called when the backdrop or ESC closes"},{"name":"onExpandedChange","type":"((expanded: boolean) => void)","required":false,"description":"Setter for the expanded state"},{"name":"onItemClick","type":"((item: SidebarMenuItem) => void)","required":false,"description":"Item-click handler"},{"name":"items","type":"SidebarMenuItem[]","required":true,"description":"Menu items (supports nested `items`)"}],"examples":["src/primitives/components/sidebar/sidebar.example.tsx"],"usageDoc":"src/primitives/components/sidebar/USAGE.md"},{"name":"SignInGoogleButton","path":"src/domain/components/auth/sign-in-google-button/sign-in-google-button.tsx","description":"One-click Google OAuth sign-in trigger. Defaults to a full-page redirect to `${oauthBaseUrl}/oauth/google`, the Gateway's Google sign-in route","tier":"agent-ready","public":true,"category":"auth","kernelCapabilities":["authentication"],"domainContext":"mining-operations","props":[{"name":"type","type":"\"button\" | \"submit\" | \"reset\"","required":false,"default":"\"button\"","description":"Native button type"},{"name":"icon","type":"React.ReactNode","required":false,"description":"Icon node rendered alongside `children`"},{"name":"disabled","type":"boolean","required":false,"default":"false","description":"Disable the button"},{"name":"loading","type":"boolean","required":false,"default":"false","description":"Show a spinner instead of the content and disable the button"},{"name":"variant","type":"\"icon\" | \"link\" | \"primary\" | \"danger\" | \"secondary\" | \"tertiary\" | \"nav-link\" | \"outline\" | \"ghost\"","required":false,"default":"\"secondary\"","description":"Visual variant (e.g. `primary`, `secondary`, `ghost`)"},{"name":"size","type":"\"sm\" | \"md\" | \"lg\"","required":false,"description":"Size token (`sm`, `md`, `lg`)"},{"name":"fullWidth","type":"boolean","required":false,"default":"false","description":"Make the button stretch to fill its container"},{"name":"contentClassName","type":"string","required":false,"description":"Class names applied to the inner content wrapper"},{"name":"iconPosition","type":"\"left\" | \"right\"","required":false,"default":"\"left\"","description":"Icon placement relative to children"},{"name":"oauthBaseUrl","type":"string","required":true,"description":"Base URL of the OAuth backend (no trailing slash). Click navigates to `${oauthBaseUrl}/oauth/google`"},{"name":"label","type":"string","required":false,"default":"\"Sign in with Google\"","description":"Override the visible button label"},{"name":"onClick","type":"(() => void)","required":false,"default":"redirect","description":"Override the click behaviour entirely. When set, `oauthBaseUrl` is ignored"}],"examples":["src/domain/components/auth/sign-in-google-button/sign-in-google-button.example.tsx"],"usageDoc":"src/domain/components/auth/sign-in-google-button/USAGE.md"},{"name":"SimplePopover","path":"src/primitives/components/popover/index.tsx","description":"One-line convenience wrapper that pairs a trigger with floating content — no provider boilerplate","tier":"agent-ready","public":true,"category":"overlays","domainContext":"generic","props":[{"name":"trigger","type":"React.ReactNode","required":true,"description":"Element that triggers the popover"},{"name":"content","type":"React.ReactNode","required":true,"description":"Popover content"},{"name":"side","type":"\"left\" | \"right\" | \"top\" | \"bottom\"","required":false,"default":"\"bottom\"","description":"Position of the popover relative to trigger"},{"name":"align","type":"\"center\" | \"start\" | \"end\"","required":false,"default":"\"center\"","description":"Alignment of the popover"},{"name":"sideOffset","type":"number","required":false,"default":"8","description":"Distance from the trigger in pixels"},{"name":"showArrow","type":"boolean","required":false,"default":"false","description":"Whether to show the arrow"},{"name":"showClose","type":"boolean","required":false,"default":"false","description":"Whether to show a close button"},{"name":"className","type":"string","required":false,"description":"Additional class for content"},{"name":"open","type":"boolean","required":false,"description":"Controlled open state"},{"name":"onOpenChange","type":"((open: boolean) => void)","required":false,"description":"Callback when open state changes"}],"examples":["src/primitives/components/popover/popover.example.tsx"],"usageDoc":"src/primitives/components/popover/USAGE.md"},{"name":"SimpleTooltip","path":"src/primitives/components/tooltip/index.tsx","description":"One-line convenience wrapper around the full `<Tooltip>` primitive set. Pass `content` (the hover text) and any single React element as `children` — `<SimpleTooltip>` handles the provider, trigger, p…","descriptionFull":"One-line convenience wrapper around the full `<Tooltip>` primitive set. Pass `content` (the hover text) and any single React element as `children` — `<SimpleTooltip>` handles the provider, trigger, portal and content for you. Prefer this over composing `<Tooltip>` + `<TooltipTrigger>` + `<TooltipContent>` unless you need custom positioning or async content","tier":"agent-ready","public":true,"category":"overlays","domainContext":"generic","props":[{"name":"content","type":"React.ReactNode","required":true,"description":"Tooltip content (string or JSX)"},{"name":"side","type":"\"left\" | \"right\" | \"top\" | \"bottom\"","required":false,"default":"\"top\"","description":"Position of the tooltip relative to trigger"},{"name":"sideOffset","type":"number","required":false,"default":"8","description":"Distance from the trigger in pixels"},{"name":"delayDuration","type":"number","required":false,"default":"200","description":"Delay before showing tooltip (ms)"},{"name":"showArrow","type":"boolean","required":false,"default":"true","description":"Whether to show the arrow"},{"name":"className","type":"string","required":false,"description":"Additional class for content"},{"name":"children","type":"React.ReactNode","required":true,"description":"Element that triggers the tooltip"}],"examples":["src/primitives/components/tooltip/tooltip.example.tsx"],"usageDoc":"src/primitives/components/tooltip/USAGE.md"},{"name":"SingleStatCard","path":"src/domain/components/stat-cards/single-stat-card/single-stat-card.tsx","description":"Hero stat tile rendering one big number with a label and optional delta indicator","descriptionFull":"Hero stat tile rendering one big number with a label and optional delta indicator.\n\nDisplays a single statistic with optional animations and variants","tier":"agent-ready","public":true,"category":"widgets","kernelCapabilities":["device-management"],"domainContext":"device-management","props":[{"name":"name","type":"string","required":false,"description":"Stat name/label"},{"name":"subtitle","type":"string","required":false,"default":"\"\"","description":"Subtitle text"},{"name":"value","type":"string | number | null","required":false,"default":"null","description":"Stat value"},{"name":"unit","type":"string","required":false,"default":"\"\"","description":"Unit of measurement"},{"name":"color","type":"string","required":false,"default":"\"inherit\"","description":"Color for flash/border"},{"name":"flash","type":"boolean","required":false,"default":"false","description":"Enable flash animation"},{"name":"superflash","type":"boolean","required":false,"default":"false","description":"Enable superflash animation (faster)"},{"name":"variant","type":"\"primary\" | \"secondary\" | \"tertiary\" | \"highlighted\" | \"compact\"","required":false,"default":"\"primary\"","description":"Card variant. `compact` is a centred name-over-value tile in muted text, for dense grids of secondary metrics"},{"name":"row","type":"boolean","required":false,"default":"false","description":"Row layout"},{"name":"className","type":"string","required":false,"description":"Additional class for the root element"}],"examples":["src/domain/components/stat-cards/single-stat-card/single-stat-card.example.tsx"],"usageDoc":"src/domain/components/stat-cards/single-stat-card/USAGE.md"},{"name":"SiteStatsBar","path":"src/domain/components/dashboard/site-stats-bar/site-stats-bar.tsx","description":"Site-level summary strip composed from `WidgetTopRow` (title + power) and `GenericDataBox` (hashrate / miner-count / container-count). Designed to sit at the top of a dashboard page above the chart c…","descriptionFull":"Site-level summary strip composed from `WidgetTopRow` (title + power) and `GenericDataBox` (hashrate / miner-count / container-count). Designed to sit at the top of a dashboard page above the chart cards","tier":"agent-ready","public":true,"category":"dashboard","kernelCapabilities":["hashrate-monitoring"],"domainContext":"mining-operations","props":[{"name":"title","type":"string","required":true,"description":"Site label rendered in the header row"},{"name":"power","type":"number","required":false,"description":"Current site-level power consumption, in watts. It is displayed divided by 1000, so `powerUnit` names the kilo unit (`k…","descriptionFull":"Current site-level power consumption, in watts. It is displayed divided by 1000, so `powerUnit` names the kilo unit (`kW` by default)"},{"name":"powerUnit","type":"string","required":false,"default":"\"kW\"","description":"Display unit for `power` — defaults to `kW`"},{"name":"totalHashrate","type":"number","required":false,"description":"Aggregate hashrate, in TH/s"},{"name":"hashrateUnit","type":"string","required":false,"default":"\"TH/s\"","description":"Hashrate display unit — defaults to `TH/s`"},{"name":"minerCount","type":"number","required":false,"description":"Total miner count across the site"},{"name":"containerCount","type":"number","required":false,"description":"Total container count across the site"},{"name":"isLoading","type":"boolean","required":false,"default":"false","description":"Render a skeleton bar while data is loading"},{"name":"className","type":"string","required":false,"description":"Optional class hook"}],"examples":["src/domain/components/dashboard/site-stats-bar/site-stats-bar.example.tsx"],"usageDoc":"src/domain/components/dashboard/site-stats-bar/USAGE.md"},{"name":"SkeletonBlock","path":"src/primitives/components/skeleton/index.tsx","description":"Rectangular shimmer placeholder used to hint at content shape while data is loading","tier":"agent-ready","public":true,"category":"feedback","domainContext":"generic","props":[{"name":"circle","type":"boolean","required":false,"default":"false","description":"Renders a perfect circle using `height` as the diameter"},{"name":"className","type":"string","required":false,"description":"Additional class for the element"},{"name":"width","type":"string | number","required":false,"description":"Width in pixels (number) or any CSS value (string)"},{"name":"height","type":"string | number","required":false,"description":"Height in pixels (number) or any CSS value (string)"},{"name":"borderRadius","type":"string | number","required":false,"description":"Border radius; ignored when `circle` is true"}],"examples":["src/primitives/components/skeleton/skeleton.example.tsx"],"usageDoc":"src/primitives/components/skeleton/USAGE.md"},{"name":"Spinner","path":"src/primitives/components/spinner/index.tsx","description":"Spinner component - display loading state with rotating squares","tier":"agent-ready","public":true,"category":"feedback","domainContext":"generic","props":[{"name":"size","type":"\"sm\" | \"md\" | \"lg\"","required":false,"default":"\"md\"","description":"Size variant of the spinner"},{"name":"color","type":"\"primary\" | \"secondary\"","required":false,"default":"\"primary\"","description":"Color variant of the spinner"},{"name":"fullScreen","type":"boolean","required":false,"default":"false","description":"Whether to display in fullscreen mode"},{"name":"className","type":"string","required":false,"description":"Custom className for the root element"},{"name":"label","type":"string","required":false,"description":"Optional label text to display below the spinner"},{"name":"speed","type":"\"slow\" | \"normal\" | \"fast\"","required":false,"default":"\"normal\"","description":"Speed of the animation"},{"name":"type","type":"\"circle\" | \"square\"","required":false,"default":"\"square\"","description":"Type of spinner animation"}],"examples":["src/primitives/components/spinner/spinner.example.tsx"],"usageDoc":"src/primitives/components/spinner/USAGE.md"},{"name":"Switch","path":"src/primitives/components/switch/index.tsx","description":"Switch component for toggle controls with full customization","tier":"agent-ready","public":true,"category":"forms","domainContext":"generic","props":[{"name":"checked","type":"boolean","required":false,"description":"Controlled checked state"},{"name":"defaultChecked","type":"boolean","required":false,"description":"Uncontrolled initial checked state"},{"name":"onCheckedChange","type":"((checked: boolean) => void)","required":false,"description":"Change handler"},{"name":"disabled","type":"boolean","required":false,"default":"false","description":"Disable the switch"},{"name":"size","type":"\"sm\" | \"md\" | \"lg\"","required":false,"default":"\"md\"","description":"Size variant of the switch"},{"name":"color","type":"\"success\" | \"warning\" | \"error\" | \"primary\" | \"default\"","required":false,"default":"\"default\"","description":"Color variant when checked"},{"name":"radius","type":"\"small\" | \"none\" | \"medium\" | \"large\" | \"full\"","required":false,"default":"\"none\"","description":"Border radius variant"},{"name":"className","type":"string","required":false,"description":"Custom className for the root element"},{"name":"thumbClassName","type":"string","required":false,"description":"Custom className for the thumb element"}],"examples":["src/primitives/components/switch/switch.example.tsx"],"usageDoc":"src/primitives/components/switch/USAGE.md"},{"name":"Tabs","path":"src/primitives/components/tabs/index.tsx","description":"Tabs component for organizing content into panels","tier":"agent-ready","public":true,"category":"layout","domainContext":"generic","props":[{"name":"defaultValue","type":"string","required":false,"description":"Uncontrolled initial active value"},{"name":"value","type":"string","required":false,"description":"Controlled active tab value"},{"name":"onValueChange","type":"((value: string) => void)","required":false,"description":"Fired when the active tab changes"},{"name":"orientation","type":"\"horizontal\" | \"vertical\"","required":false,"default":"\"horizontal\"","description":"Keyboard navigation orientation"},{"name":"variant","type":"\"default\" | \"side\" | \"underline\"","required":false}],"examples":["src/primitives/components/tabs/tabs.example.tsx"],"usageDoc":"src/primitives/components/tabs/USAGE.md"},{"name":"Tag","path":"src/primitives/components/tag/index.tsx","description":"Tag component - display labels, categories, or status","tier":"agent-ready","public":true,"category":"display","domainContext":"generic","props":[{"name":"color","type":"\"red\" | \"blue\" | \"green\" | \"amber\" | \"dark\"","required":false,"default":"\"dark\"","description":"Color variant of the tag"},{"name":"className","type":"string","required":false,"description":"Custom className for the root element"},{"name":"children","type":"React.ReactNode","required":false,"description":"Children content"}],"examples":["src/primitives/components/tag/tag.example.tsx"],"usageDoc":"src/primitives/components/tag/USAGE.md"},{"name":"TagFilterBar","path":"src/domain/components/alerts/tag-filter-bar/tag-filter-bar.tsx","description":"Horizontal strip of removable tag chips that narrow a list view; clicking a chip removes the filter","tier":"agent-ready","public":true,"category":"tables","kernelCapabilities":["hashrate-monitoring"],"domainContext":"mining-operations","props":[{"name":"filterTags","type":"string[]","required":true,"description":"Active tag filter values"},{"name":"localFilters","type":"AlertLocalFilters","required":true,"description":"Current local filter state"},{"name":"onSearchTagsChange","type":"(tags: string[]) => void","required":true,"description":"Called when tag filter changes"},{"name":"onLocalFiltersChange","type":"(filters: AlertLocalFilters) => void","required":true,"description":"Called when any local filter changes"},{"name":"typeFiltersForSite","type":"CascaderOption[]","required":false,"description":"Site-specific overrides for the \"type\" filter children. If provided, the \"Type\" filter group will use these instead of…","descriptionFull":"Site-specific overrides for the \"type\" filter children. If provided, the \"Type\" filter group will use these instead of the defaults"},{"name":"placeholder","type":"string","required":false,"description":"Search input placeholder"},{"name":"className","type":"string","required":false,"description":"Additional CSS class"}],"examples":["src/domain/components/alerts/tag-filter-bar/tag-filter-bar.example.tsx"],"usageDoc":"src/domain/components/alerts/tag-filter-bar/USAGE.md"},{"name":"TagInput","path":"src/primitives/components/tag-input/index.tsx","description":"Text input that converts comma- or Enter-separated entries into removable tag chips below the field","tier":"agent-ready","public":true,"category":"forms","domainContext":"generic","props":[{"name":"value","type":"string[]","required":false,"default":"[]","description":"Controlled tags (array of tag values)"},{"name":"onTagsChange","type":"((tags: string[]) => void)","required":false,"description":"Callback when tags change (add/remove)"},{"name":"onInputChange","type":"((value: string) => void)","required":false,"description":"Callback when input value changes (typing). Receives current input value. Useful for async option loading or custom fil…","descriptionFull":"Callback when input value changes (typing). Receives current input value. Useful for async option loading or custom filtering"},{"name":"onSubmit","type":"((tags: string[]) => void)","required":false,"description":"Callback when user presses Enter (submit). Receives current tags. Called after adding a tag from selection or typed tex…","descriptionFull":"Callback when user presses Enter (submit). Receives current tags. Called after adding a tag from selection or typed text, if applicable"},{"name":"options","type":"TagInputOption[]","required":false,"default":"[]","description":"Options to show in the dropdown when input is focused"},{"name":"placeholder","type":"string","required":false,"default":"\"Search...\"","description":"Placeholder when input is empty"},{"name":"disabled","type":"boolean","required":false,"default":"false","description":"Disabled state"},{"name":"allowCustomTags","type":"boolean","required":false,"default":"true","description":"Whether to allow adding custom tags by typing and pressing Enter"},{"name":"filterOptions","type":"((options: TagInputOption[], query: string) => TagInputOption[])","required":false,"default":"case-insensitive includes","description":"Filter options by input value. Receives options and query, returns filtered options. When undefined, filters by case-in…","descriptionFull":"Filter options by input value. Receives options and query, returns filtered options. When undefined, filters by case-insensitive includes"},{"name":"variant","type":"\"search\" | \"default\"","required":false,"default":"\"search\"","description":"Input variant; `'search'` shows a magnifying-glass icon that doubles as a clear-all button"},{"name":"label","type":"string","required":false,"description":"Label for the input"},{"name":"id","type":"string","required":false,"default":"auto-generated","description":"HTML id for the input"},{"name":"className","type":"string","required":false,"description":"Additional class for the inner `<input>`"},{"name":"wrapperClassName","type":"string","required":false,"description":"Custom className for the wrapper"},{"name":"dropdownMinHeight","type":"string","required":false,"description":"Minimum height of the dropdown (CSS value, e.g. '100px', '6rem')"},{"name":"dropdownMaxHeight","type":"string","required":false,"default":"\"12rem\"","description":"Maximum height of the dropdown (CSS value, e.g. '300px', '20rem')"},{"name":"size","type":"\"sm\" | \"md\" | \"lg\"","required":false,"default":"\"lg\"","description":"Size of the tag input — matches Select sizes - `sm`: 24px height - `md`: 32px height - `lg`: 40px height"},{"name":"renderDropdown","type":"((props: TagInputDropdownProps) => React.ReactNode)","required":false,"description":"Render custom dropdown content. When provided, replaces the default dropdown. Use this to apply your own styling or str…","descriptionFull":"Render custom dropdown content. When provided, replaces the default dropdown. Use this to apply your own styling or structure"}],"examples":["src/primitives/components/tag-input/tag-input.example.tsx"],"usageDoc":"src/primitives/components/tag-input/USAGE.md"},{"name":"TextArea","path":"src/primitives/components/textarea/index.tsx","description":"TextArea component with label support and error handling","tier":"agent-ready","public":true,"category":"forms","domainContext":"generic","props":[{"name":"error","type":"string","required":false,"description":"Validation error message. When provided, displays error styling (red border) and the message below the textarea"},{"name":"label","type":"string","required":false,"description":"Optional label displayed above the textarea"},{"name":"id","type":"string","required":false,"default":"auto-generated","description":"HTML id for the textarea. Required when using label for accessibility"},{"name":"wrapperClassName","type":"string","required":false,"description":"Custom className for the root wrapper"}],"examples":["src/primitives/components/textarea/textarea.example.tsx"],"usageDoc":"src/primitives/components/textarea/USAGE.md"},{"name":"ThresholdLineChart","path":"src/primitives/components/threshold-line-chart/index.tsx","description":"Line chart with optional horizontal threshold lines. Wraps `ChartContainer` and `LineChart`; pass `series` and optional `thresholds` via `data`","tier":"agent-ready","public":true,"category":"charts","domainContext":"generic","props":[{"name":"title","type":"string","required":false,"description":"Chart title (unit appended when `unit` is set)"},{"name":"unit","type":"string","required":false,"description":"Shown in title and axis/tooltip formatting"},{"name":"height","type":"number","required":false,"default":"280","description":"Chart height in pixels (`360` when `isTall`)"},{"name":"isTall","type":"boolean","required":false,"default":"false","description":"When true, uses a taller default height (360px)"},{"name":"className","type":"string","required":false,"description":"Extra class on the container"},{"name":"emptyMessage","type":"string","required":false,"description":"Message when data is missing or all zero"},{"name":"isLegendVisible","type":"boolean","required":false,"default":"true","description":"Legend with click-to-hide series"},{"name":"data","type":"ThresholdLineChartData","required":false,"description":"`series` points plus optional `thresholds` lines"},{"name":"yTicksFormatter","type":"(value: number) => string","required":false,"description":"Custom Y-axis tick labels"}],"shapes":[{"name":"ThresholdLineChartData","fields":[{"name":"series","type":"ThresholdLineChartSeries[]","required":true,"description":"Data lines; points with a non-finite timestamp are dropped. All-zero values render the empty state"},{"name":"thresholds","type":"ThresholdLineChartThreshold[]","required":false,"description":"Horizontal reference lines at a fixed `value`, spanning every timestamp in `series`"}]}],"examples":["src/primitives/components/threshold-line-chart/threshold-line-chart.example.tsx"],"usageDoc":"src/primitives/components/threshold-line-chart/USAGE.md"},{"name":"TimeframeControls","path":"src/domain/components/timeframe/timeframe-controls/timeframe-controls.tsx","description":"Date-range picker for financial reporting pages — supports year, month, and week granularity via connected selects","tier":"agent-ready","public":true,"category":"filters","kernelCapabilities":["financial-reporting"],"domainContext":"financial-reporting","props":[{"name":"hint","type":"string","required":false,"description":"Helper text below the controls"},{"name":"onReset","type":"VoidFunction","required":false,"description":"Called when the Reset button is clicked"},{"name":"showResetButton","type":"boolean","required":false,"default":"false","description":"Shows the Reset button"},{"name":"isWeekSelectVisible","type":"boolean","required":false,"default":"true","description":"Show week selector"},{"name":"isMonthSelectVisible","type":"boolean","required":false,"default":"true","description":"Show month selector"},{"name":"layout","type":"\"horizontal\" | \"stacked\"","required":false,"default":"\"horizontal\"","description":"Layout direction"},{"name":"dateRange","type":"TimeframeControlsDateRange","required":false,"description":"Current date range"},{"name":"timeframeType","type":"null | \"month\" | \"week\" | \"year\"","required":false,"description":"Active timeframe type"},{"name":"onRangeChange","type":"TimeframeControlsOnRangeChange","required":false,"description":"Called when the range changes"},{"name":"onTimeframeTypeChange","type":"(type: TimeframeTypeValue) => void","required":false,"description":"Called when timeframe type changes"}],"shapes":[{"name":"TimeframeControlsDateRange","fields":[{"name":"start","type":"number","required":true,"description":"Range start (epoch ms); the year/month/week pickers sync to this date"},{"name":"end","type":"number","required":true,"description":"Range end (epoch ms); matched with `start` against calendar weeks to restore a week selection"}]}],"examples":["src/domain/components/timeframe/timeframe-controls/timeframe-controls-week-content.example.tsx","src/domain/components/timeframe/timeframe-controls/timeframe-controls.example.tsx"],"usageDoc":"src/domain/components/timeframe/timeframe-controls/USAGE.md"},{"name":"TimeframeWeekFlatContent","path":"src/domain/components/timeframe/timeframe-controls/timeframe-controls-week-content.tsx","description":"Flat list of selectable week items for the TimeframeControls week selector","tier":"agent-ready","public":true,"category":"filters","kernelCapabilities":["financial-reporting"],"domainContext":"financial-reporting","props":[{"name":"visibleWeeks","type":"Week[]","required":true}],"shapes":[{"name":"Week","fields":[{"name":"start","type":"Date","required":true,"description":"Monday 00:00:00.000 (local time) that opens the week"},{"name":"end","type":"Date","required":true,"description":"Sunday 23:59:59.999 (local time) that closes the week, capped to the end of yesterday"},{"name":"label","type":"string","required":true,"description":"Option text, `DD/MM - DD/MM` in the selected timezone"},{"name":"bucketYear","type":"number","required":true,"description":"Year of the week's end date in the selected timezone; sent as `year` to `onRangeChange`"},{"name":"bucketMonth","type":"number","required":true,"description":"Month (0-11) of the week's end date in the selected timezone; sent as `month` to `onRangeChange`"},{"name":"disabled","type":"boolean","required":false,"description":"True when the week starts after the end of yesterday; the option is shown but not selectable"}]}],"examples":["src/domain/components/timeframe/timeframe-controls/timeframe-controls-week-content.example.tsx","src/domain/components/timeframe/timeframe-controls/timeframe-controls.example.tsx"],"usageDoc":"src/domain/components/timeframe/timeframe-controls/USAGE.md"},{"name":"TimeframeWeekTreeContent","path":"src/domain/components/timeframe/timeframe-controls/timeframe-controls-week-content.tsx","description":"Hierarchical year → month → week tree for the TimeframeControls week selector","tier":"agent-ready","public":true,"category":"filters","kernelCapabilities":["financial-reporting"],"domainContext":"financial-reporting","props":[{"name":"timezone","type":"string","required":true},{"name":"selectedYear","type":"number","required":true},{"name":"selectedMonth","type":"number","required":true}],"examples":["src/domain/components/timeframe/timeframe-controls/timeframe-controls-week-content.example.tsx","src/domain/components/timeframe/timeframe-controls/timeframe-controls.example.tsx"],"usageDoc":"src/domain/components/timeframe/timeframe-controls/USAGE.md"},{"name":"TimelineChart","path":"src/domain/components/timeline-chart/timeline-chart.tsx","description":"Discrete-event timeline chart (e.g. miner state over time) with a category legend. Supports streaming updates via `newData`","tier":"agent-ready","public":true,"category":"charts","kernelCapabilities":["device-telemetry"],"domainContext":"mining-operations","props":[{"name":"initialData","type":"TimelineChartData","required":true,"description":"Initial timeline data"},{"name":"newData","type":"TimelineChartData","required":false,"description":"Streaming updates appended to the initial data"},{"name":"skipUpdates","type":"boolean","required":false,"default":"false","description":"Ignore `newData`"},{"name":"range","type":"ChartRange","required":false,"description":"Visible time window"},{"name":"axisTitleText","type":"AxisTitleText","required":false,"default":"{ x: \"Time\", y: \"\" }","description":"Axis title strings"},{"name":"isLoading","type":"boolean","required":false,"default":"false","description":"Show loader"},{"name":"title","type":"string","required":false,"description":"Chart title"},{"name":"height","type":"number","required":false,"description":"Chart pixel height"}],"shapes":[{"name":"TimelineChartData","fields":[{"name":"labels","type":"string[]","required":true,"description":"Row labels, one row each; a data point lands in the row whose label equals its `y`. Nothing renders when empty"},{"name":"datasets","type":"TimelineChartDataset[]","required":true,"description":"Bar series; each dataset's `label` is its tooltip title and legend entry"}]},{"name":"ChartRange","fields":[{"name":"min","type":"number | Date","required":true,"description":"Left edge of the time axis (`Date` or epoch ms); without a range the axis spans the data"},{"name":"max","type":"number | Date","required":true,"description":"Right edge of the time axis (`Date` or epoch ms)"}]},{"name":"AxisTitleText","fields":[{"name":"x","type":"string","required":true,"description":"Title under the time axis; hidden when empty"},{"name":"y","type":"string","required":true,"description":"Title beside the row labels; hidden when empty"}]}],"examples":["src/domain/components/timeline-chart/timeline-chart.example.tsx"],"usageDoc":"src/domain/components/timeline-chart/USAGE.md"},{"name":"TimelineSelector","path":"src/domain/components/dashboard/timeline-selector/timeline-selector.tsx","description":"Dropdown for picking the dashboard time range. Wraps `core/Select` and the canonical option list from `getTimelineOptions`. Controlled: the page owns the selected timeline and passes it to its queries","tier":"agent-ready","public":true,"category":"dashboard","kernelCapabilities":["hashrate-monitoring"],"domainContext":"mining-operations","props":[{"name":"value","type":"string","required":true,"description":"Currently selected timeline value (e.g. `'1m'`, `'5m'`)"},{"name":"onChange","type":"(next: string) => void","required":true,"description":"Called whenever the user picks a new option"},{"name":"options","type":"TimelineOption[]","required":false,"default":"getTimelineOptions()","description":"Available options — defaults to {@link getTimelineOptions}. Pass a custom list to localise labels or restrict the range"},{"name":"label","type":"string","required":false,"default":"\"Time range\"","description":"ARIA label / placeholder for the trigger"},{"name":"className","type":"string","required":false,"description":"Tailwind/BEM class hook on the trigger"}],"examples":["src/domain/components/dashboard/timeline-selector/timeline-selector.example.tsx"],"usageDoc":"src/domain/components/dashboard/timeline-selector/USAGE.md"},{"name":"Toast","path":"src/primitives/components/toast/index.tsx","description":"Single transient notification rendered inside the `<Toaster>` viewport. Use `variant` to convey intent (`success`, `info`, `warning`, `error`); pair with `<ToastTitle>` and `<ToastDescription>` for s…","descriptionFull":"Single transient notification rendered inside the `<Toaster>` viewport. Use `variant` to convey intent (`success`, `info`, `warning`, `error`); pair with `<ToastTitle>` and `<ToastDescription>` for structured content, or wrap a `<ToastAction>` for a single inline call-to-action. Most apps will trigger toasts imperatively via the `useToast` hook rather than mounting `<Toast>` directly","tier":"agent-ready","public":true,"category":"feedback","domainContext":"generic","props":[{"name":"title","type":"string","required":true,"description":"Title shown at the top of the toast"},{"name":"open","type":"boolean","required":false,"description":"Controlled open state"},{"name":"onOpenChange","type":"((open: boolean) => void)","required":false,"description":"Open-state change handler"},{"name":"duration","type":"number","required":false,"description":"Auto-dismiss after N ms"},{"name":"description","type":"string","required":false,"description":"Body text"},{"name":"variant","type":"\"success\" | \"info\" | \"warning\" | \"error\"","required":false,"default":"\"info\"","description":"Determines the icon and accent"},{"name":"icon","type":"React.JSX.Element","required":false,"description":"Override the default variant icon"}],"examples":["src/primitives/components/toast/toast.example.tsx"],"usageDoc":"src/primitives/components/toast/USAGE.md"},{"name":"Toaster","path":"src/primitives/components/toast/index.tsx","description":"Top-level provider + viewport that hosts every toast triggered via `useToast`. Mount once near the root of your app (typically inside `<MdkProvider>`). Without a `<Toaster>` in the tree, `useToast` c…","descriptionFull":"Top-level provider + viewport that hosts every toast triggered via `useToast`. Mount once near the root of your app (typically inside `<MdkProvider>`). Without a `<Toaster>` in the tree, `useToast` calls are no-ops. Position and visual stacking are controlled by CSS tokens; no props are required for the default top-left placement","tier":"agent-ready","public":true,"category":"feedback","domainContext":"generic","props":[{"name":"children","type":"React.ReactNode","required":true,"description":"The `<Toast>` elements to render"},{"name":"position","type":"\"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\" | \"top-center\" | \"bottom-center\"","required":false,"default":"\"top-left\"","description":"Where the viewport is anchored"}],"examples":["src/primitives/components/toast/toast.example.tsx"],"usageDoc":"src/primitives/components/toast/USAGE.md"},{"name":"Tooltip","path":"src/primitives/components/tooltip/index.tsx","description":"Tooltip Root - Container for a single tooltip","tier":"agent-ready","public":true,"category":"overlays","domainContext":"generic","props":[],"examples":["src/primitives/components/tooltip/tooltip.example.tsx"],"usageDoc":"src/primitives/components/tooltip/USAGE.md"},{"name":"Typography","path":"src/primitives/components/typography/index.tsx","description":"Typography component for consistent text styling","tier":"agent-ready","public":true,"category":"display","domainContext":"generic","props":[{"name":"variant","type":"\"body\" | \"caption\" | \"secondary\" | \"heading1\" | \"heading2\" | \"heading3\"","required":false,"default":"\"body\"","description":"Determines the rendered HTML element and base style"},{"name":"size","type":"\"sm\" | \"md\" | \"lg\" | \"xs\" | \"xl\" | \"2xl\" | \"3xl\" | \"4xl\"","required":false,"description":"Text size; defaults to the variant's size when unset"},{"name":"weight","type":"\"medium\" | \"normal\" | \"light\" | \"semibold\" | \"bold\"","required":false,"description":"Font weight; defaults to the variant's weight when unset"},{"name":"align","type":"\"center\" | \"left\" | \"right\" | \"justify\"","required":false,"description":"Text alignment"},{"name":"color","type":"\"success\" | \"warning\" | \"error\" | \"primary\" | \"default\" | \"muted\"","required":false,"default":"\"default\"","description":"Token-based text color"},{"name":"truncate","type":"boolean","required":false,"default":"false","description":"Truncate text with ellipsis"},{"name":"className","type":"string","required":false,"description":"Custom className"}],"examples":["src/primitives/components/typography/typography.example.tsx"],"usageDoc":"src/primitives/components/typography/USAGE.md"},{"name":"WidgetTopRow","path":"src/domain/components/widget-top-row/index.tsx","description":"Compact header row used at the top of container / miner widgets — shows the title, one badge per alarm category you pass, and the current power reading (or an error tooltip)","tier":"agent-ready","public":true,"category":"widgets","kernelCapabilities":["device-telemetry"],"domainContext":"mining-operations","props":[{"name":"title","type":"string","required":true,"description":"Widget title"},{"name":"power","type":"number","required":false,"description":"Power reading; rendered in kilo-units"},{"name":"unit","type":"string","required":false,"description":"Power unit (e.g. `\"kW\"`)"},{"name":"statsErrorMessage","type":"string | ErrorWithTimestamp[] | null","required":false,"description":"Error tooltip content; replaces power"},{"name":"alarms","type":"WidgetAlarmGroup[]","required":false,"description":"Alarm category badges, in display order. Categories with no items render nothing"},{"name":"className","type":"string","required":false,"description":"Additional class names"}],"shapes":[{"name":"WidgetAlarmGroup","fields":[{"name":"title","type":"string","required":true,"description":"Category label; the tooltip heading reads `<title> issues`"},{"name":"icon","type":"React.ReactNode","required":true,"description":"Badge icon"},{"name":"items","type":"AlertRecord[]","required":false,"description":"Active alerts in this category; the badge is hidden when empty"}]}],"examples":["src/domain/components/widget-top-row/widget-top-row.example.tsx"],"usageDoc":"src/domain/components/widget-top-row/USAGE.md"}],"hooks":[{"name":"useChartDataCheck","path":"src/domain/utils/chart-data-check.ts","description":"Hook to check if chart data is empty or unavailable","descriptionFull":"Hook to check if chart data is empty or unavailable\n\nReturns `true` if data is empty/unavailable (should show empty state) Returns `false` if data exists (should show chart)","tier":"agent-ready","public":true,"signature":"({ dataset, data }: UseChartDataCheckParams) => boolean","category":"charts","domainContext":"generic"},{"name":"useFinancialDateRange","path":"src/domain/components/timeframe/use-financial-date-range.tsx","description":"Resolves the active financial date range (start/end) used by every reporting-section query","tier":"agent-ready","public":true,"signature":"(options?: UseFinancialDateRangeOptions | undefined) => UseFinancialDateRangeResult","category":"widgets","kernelCapabilities":["financial-reporting"],"domainContext":"financial-reporting"},{"name":"useFormField","path":"src/primitives/components/form/index.tsx","description":"Read-only context hook for form field children — returns the field's id, error state, and ARIA attributes","tier":"agent-ready","public":true,"signature":"() => UseFormFieldReturn","category":"forms","domainContext":"generic"},{"name":"useFormReset","path":"src/primitives/components/form/form-hooks.ts","description":"Hook to handle form reset with callbacks","tier":"agent-ready","public":true,"signature":"<TFieldValues extends FieldValues = FieldValues>({ form, onBeforeReset, onAfterReset, }: UseFormResetOptions<TFieldValues>) => UseFormResetReturn","category":"forms","domainContext":"generic"},{"name":"useHeaderControls","path":"src/domain/components/settings/header-controls/use-header-controls.ts","description":"Read/write hook for the global header-controls store (toggles, sticky flag, theme)","tier":"agent-ready","public":true,"signature":"() => { preferences: { poolMiners: boolean; appMiners: boolean; poolHashrate: boolean; appHashrate: boolean; consumption: boolean; efficiency: boolean; }; isLoading: boolean; error: null; handleToggle: (key: keyof HeaderPreferences, value:… /* see source */","category":"settings","kernelCapabilities":["device-management"],"domainContext":"device-management"},{"name":"useNotification","path":"src/domain/utils/use-notification.tsx","description":"Custom hook for showing notifications backed by the headless `notificationStore`. Uses `@tetherto/mdk-react-devkit/primitives` Toast and Toaster components","tier":"agent-ready","public":true,"signature":"() => { notifySuccess: (message: string, description?: string | undefined, options?: NotificationOptions | undefined) => void; notifyError: (message: string, description?: string | undefined, options?: NotificationOptions | undefined) => vo… /* see source */","category":"feedback","domainContext":"generic"},{"name":"useReportTimeFrameSelectorState","path":"src/domain/components/timeframe/report-time-frame-selector/use-report-time-frame-selector-state.ts","description":"State hook backing the reporting time-frame selector — exposes the active window and setters","tier":"agent-ready","public":true,"signature":"() => ReportTimeFrameSelectorState","category":"filters","kernelCapabilities":["financial-reporting"],"domainContext":"financial-reporting"},{"name":"useSidebarExpandedState","path":"src/primitives/components/sidebar/use-sidebar-state.ts","description":"Custom hook to persist sidebar expanded state in localStorage","tier":"agent-ready","public":true,"signature":"(defaultExpanded: boolean) => [boolean, (expanded: boolean) => void]","category":"navigation","domainContext":"generic"},{"name":"useSidebarSectionState","path":"src/primitives/components/sidebar/use-sidebar-state.ts","description":"Custom hook to persist individual section open/closed states in localStorage","tier":"agent-ready","public":true,"signature":"(sectionId: string, defaultOpen: boolean) => [boolean, (open: boolean) => void]","category":"navigation","domainContext":"generic"},{"name":"useTimeframeControls","path":"src/domain/components/timeframe/timeframe-controls/use-timeframe-controls.ts","description":"Core state machine for TimeframeControls — owns year / month / week selection and resolves the date-range output","tier":"agent-ready","public":true,"signature":"({ dateRange, timeframeType: timeframeTypeProp, onRangeChange, onTimeframeTypeChange, isWeekSelectVisible, weekTree, }: UseTimeframeControlsParams) => { timezone: string; selectedYear: number; selectedMonth: number; visibleWeeks: Week[]; ha… /* see source */","category":"filters","kernelCapabilities":["financial-reporting"],"domainContext":"financial-reporting"}],"types":[{"name":"ActionButtonProps","path":"src/primitives/components/action-button/index.tsx","kind":"type","description":"","public":true,"definition":"{ /** Button label text */ label?: string /** Shows a spinner on the trigger button */ loading?: boolean /** Disables the trigger button */ disabled?: boolean /** Additional class for the trigger button */ className?: string /** * Visual s…"},{"name":"AddUserModalProps","path":"src/domain/components/settings/add-user-modal/add-user-modal.tsx","kind":"type","description":"","public":true,"definition":"{ /** Controls whether the dialog is visible */ open: boolean /** Called when the user dismisses the modal (cancel or backdrop) */ onClose: VoidFunction /** List of assignable roles rendered in the role select drop-down */ roles: RoleOptio…"},{"name":"AlarmsBellButtonProps","path":"src/domain/components/header-actions/alarms-bell-button.tsx","kind":"type","description":"","public":true,"definition":"{ /** * Severity-bucketed alarm counts rendered in the stacked badge. * @default {} */ counts?: AlarmsBellButtonCounts /** Click handler — typically opens an alerts panel or routes to /alerts. */ onClick?: (event: MouseEvent<HTMLButtonElem…"},{"name":"AlertConfirmationModalProps","path":"src/domain/components/alerts/current-alerts/alert-confirmation-modal/alert-confirmation-modal.tsx","kind":"type","description":"","public":true,"definition":"{ /** Controls dialog visibility */ isOpen: boolean /** Called when the user confirms the action */ onOk: VoidFunction }"},{"name":"AlertsTableTitleProps","path":"src/domain/components/alerts/alerts-table-title/alerts-table-title.tsx","kind":"type","description":"","public":true,"definition":"{ /** Section heading */ title: ReactNode /** Optional subtitle or count badge */ subtitle?: ReactNode /** Additional CSS class */ className?: string }"},{"name":"AppHeaderProps","path":"src/primitives/components/app-header/app-header.tsx","kind":"type","description":"","public":true,"definition":"{ /** Left-most slot — typically the app's brand lockup / logo. */ logo?: ReactNode /** Left-edge content — e.g. a sidebar collapse toggle or brand wordmark. */ start?: ReactNode /** Middle slot — e.g. the dashboard stats strip or page tit…"},{"name":"AreaChartProps","path":"src/primitives/components/area-chart/index.tsx","kind":"type","description":"","public":true,"definition":"{ /** Chart data - required, provided by parent */ data: ChartJS<'line'>['data'] /** Chart.js options - merged with defaults */ options?: ChartJS<'line'>['options'] /** Custom HTML tooltip configuration. When provided, replaces the default…"},{"name":"ArrowIconProps","path":"src/primitives/components/icons/arrow-icon.tsx","kind":"type","description":"","public":true,"definition":"{ isOpen?: boolean } & IconProps"},{"name":"AverageDowntimeChartProps","path":"src/primitives/components/average-downtime-chart/types.ts","kind":"type","description":"","public":true,"definition":"Partial<{ /** * Chart title (unit renders on its own line below) * @default \"Monthly Average Downtime\" */ title: string /** * Unit subtitle under the title * @default % */ unit: string /** * Chart height in pixels * @default 280 */ height:…"},{"name":"BadgeProps","path":"src/primitives/components/badge/index.tsx","kind":"type","description":"","public":true,"definition":"{ /** * Badge content (wraps children with badge) */ children?: ReactNode /** * Number to display in badge * If > overflowCount, will show \"overflowCount+\" * @default 0 */ count?: number /** * Maximum count to display * @default 99 */ over…"},{"name":"BarChartProps","path":"src/primitives/components/bar-chart/index.tsx","kind":"type","description":"","public":true,"definition":"{ /** Chart data - required, provided by parent. Use `as any` for mixed bar+line datasets. */ data: any /** Chart.js options - merged with defaults */ options?: ChartJS<'bar'>['options'] /** * Stack bars on top of each other * @default fal…"},{"name":"BreadcrumbsProps","path":"src/primitives/components/breadcrumbs/index.tsx","kind":"type","description":"","public":true,"definition":"{ /** Ordered trail; the last item is rendered as current */ items: BreadcrumbItem[] /** * Show a leading \"Back\" button * @default false */ showBack?: boolean /** * Label for the back button * @default \"Back\" */ backLabel?: string /** Root…"},{"name":"BtcAveragePriceProps","path":"src/primitives/components/btc-average-price/index.tsx","kind":"type","description":"","public":true,"definition":"Partial<{ /** * BTC price in USD; formatted with grouping and no decimal places. * When `null`, `undefined`, non-finite, or negative, the value shows `-` (`FALLBACK` from format utils). */ price: number | null /** * Label for the BTC avera…"},{"name":"ButtonProps","path":"src/primitives/components/button/index.tsx","kind":"type","description":"Props for {@link Button}. Extends all native `<button>` attributes","public":true,"definition":"Partial< { /** * Show a spinner instead of the content and disable the button. * @default false */ loading: boolean /** * Make the button stretch to fill its container. * @default false */ fullWidth: boolean /** Icon node rendered alongsid…"},{"name":"CardBodyProps","path":"src/primitives/components/card/index.tsx","kind":"type","description":"Props for {@link CardBody} slot. Forwards all native `<div>` attributes","public":true,"definition":"HTMLAttributes<HTMLDivElement>"},{"name":"CardFooterProps","path":"src/primitives/components/card/index.tsx","kind":"type","description":"Props for {@link CardFooter} slot. Forwards all native `<div>` attributes","public":true,"definition":"HTMLAttributes<HTMLDivElement>"},{"name":"CardHeaderProps","path":"src/primitives/components/card/index.tsx","kind":"type","description":"Props for {@link CardHeader} slot. Forwards all native `<div>` attributes","public":true,"definition":"HTMLAttributes<HTMLDivElement>"},{"name":"CascaderProps","path":"src/primitives/components/cascader/index.tsx","kind":"type","description":"Cascader component props","public":true,"definition":"{ /** * Hierarchical options to display in the cascader * Parent options with children appear in the left panel * Child options appear in the right panel when parent is selected */ options: CascaderOption[] /** * Current selected value(s)…"},{"name":"ChangeConfirmationModalProps","path":"src/domain/components/settings/change-confirmation-modal/change-confirmation-modal.tsx","kind":"type","description":"","public":true,"definition":"{ /** Controls whether the dialog is visible */ open: boolean /** Dialog header title */ title: string /** Called when the user clicks the confirm button */ onConfirm: VoidFunction /** Called when the user cancels or dismisses the dialog *…"},{"name":"ChartContainerProps","path":"src/primitives/components/chart-container/index.tsx","kind":"type","description":"","public":true,"definition":"{ /** Chart heading (renders as `<h3>` unless `header` is provided) */ title?: string /** * Optional node rendered immediately after the title text (e.g. an info * tooltip). Only shown when `title` is set and `header` is not. Additive - *…"},{"name":"ChartStatsFooterProps","path":"src/primitives/components/chart-stats-footer/types.ts","kind":"type","description":"","public":true,"definition":"Partial<{ /** Min/Max/Avg values row */ minMaxAvg: MinMaxAvgValues /** Additional stats displayed in a columnar grid */ stats: ChartStatsFooterItem[] /** * Number of stat items per column (default: 1) * @default 1 */ statsPerColumn: number…"},{"name":"CheckboxProps","path":"src/primitives/components/checkbox/index.tsx","kind":"type","description":"","public":true,"definition":"{ // Key controlled-state props re-declared from the Radix root so they surface in // the generated docs (types reuse Radix's via indexed access — cannot drift). /** Controlled checked state */ checked?: CheckboxRootProps['checked'] /** Un…"},{"name":"CurrentAlertsProps","path":"src/domain/components/alerts/current-alerts/current-alerts.tsx","kind":"type","description":"","public":true,"definition":"{ /** * Devices carrying alerts (`last.alerts`), as a flat list. Unwrapping any * backend envelope is the data layer's job, not this component's. */ devices?: Device[] /** * Show DataTable loading overlay * @default false */ isLoading?: bo…"},{"name":"DashboardDateRangePickerProps","path":"src/domain/components/dashboard/dashboard-date-range-picker/dashboard-date-range-picker.tsx","kind":"type","description":"","public":true,"definition":"{ /** Current range as `{ start, end }` epoch-millisecond timestamps. */ value: DashboardDateRange /** Fires with the next `{ start, end }` window when the user applies a range. */ onChange: (next: DashboardDateRange) => void /** * Display…"},{"name":"DataLabelProps","path":"src/primitives/components/data-label/index.tsx","kind":"type","description":"","public":true,"definition":"Partial<{ /** * Range start; formatted in the active timezone (`dd/MM/yy`). */ startDate: Date | null /** * Range end; formatted in the active timezone (`dd/MM/yy`). */ endDate: Date | null /** * Label text; defaults to `PERIOD`. * @defaul…"},{"name":"DataTableProps","path":"src/primitives/components/data-table/data-table.tsx","kind":"type","description":"","public":true,"definition":"{ /** * The data to be shown in the table. See https://tanstack.com/table/v8/docs/guide/data */ data: I[] /** * The column configuration table. See https://tanstack.com/table/v8/docs/guide/column-defs */ columns: DataTableColumnDef<I, any>…"},{"name":"DatePickerProps","path":"src/primitives/components/date-picker/index.tsx","kind":"type","description":"","public":true,"definition":"{ /** * Currently selected date */ selected?: Date /** * Callback when date changes */ onSelect?: (date: Date | undefined) => void /** * Placeholder text when no date is selected * @default \"Pick a date\" */ placeholder?: string /** * Date…"},{"name":"DateRangePickerProps","path":"src/primitives/components/date-picker/index.tsx","kind":"type","description":"","public":true,"definition":"{ /** * Selected date range */ selected?: DateRange /** * Callback when date range changes */ onSelect?: (range: DateRange | undefined) => void /** * Placeholder text when no range is selected * @default \"Pick a date range\" */ placeholder?…"},{"name":"DetailLegendProps","path":"src/primitives/components/detail-legend/types.ts","kind":"type","description":"","public":true,"definition":"{ /** Legend items to display */ items: DetailLegendItem[] /** Callback when a legend item is toggled */ onToggle?: (label: string, index: number) => void /** Custom class name */ className?: string }"},{"name":"DeviceExplorerProps","path":"src/domain/components/device-explorer/device-explorer.tsx","kind":"type","description":"","public":true,"definition":"{ /** Additional class names */ className?: string /** Controlled row-selection state */ selectedDevices?: DataTableRowSelectionState /** Setter for row selection */ onSelectedDevicesChange?: (selections: DataTableRowSelectionState) => voi…"},{"name":"DialogContentProps","path":"src/primitives/components/dialog/index.tsx","kind":"type","description":"","public":true,"definition":"{ /** Renders `DialogTitle` (and optional `DialogDescription`) inside the header */ title?: string /** Renders `DialogDescription` below the title */ description?: string /** * Whether clicking the overlay closes the dialog * @default true…"},{"name":"DialogHeaderProps","path":"src/primitives/components/dialog/index.tsx","kind":"type","description":"","public":true,"definition":"{ /** * Applies `mdk-dialog__header--bare` to the header * @default false */ bare?: boolean /** Shows an ✕ close button in the header */ closable?: boolean /** Fired when the ✕ button is clicked */ onClose?: VoidFunction }"},{"name":"DividerProps","path":"src/primitives/components/divider/index.tsx","kind":"type","description":"","public":true,"definition":"{ /** * Line orientation * @default 'horizontal' */ orientation?: DividerOrientation /** * Line style * @default false */ dashed?: boolean /** * Renders a dotted line (takes precedence over `dashed`) * @default false */ dotted?: boolean /*…"},{"name":"DoughnutChartProps","path":"src/primitives/components/doughnut-chart/index.tsx","kind":"type","description":"","public":true,"definition":"{ /** Array of labelled slices */ data: DoughnutChartDataset[] /** * Unit suffix appended to values in tooltips and legends * @default '' */ unit?: string /** Chart.js options – merged with defaults */ options?: ChartJS<'doughnut'>['option…"},{"name":"EmptyStateProps","path":"src/primitives/components/empty-state/index.tsx","kind":"type","description":"","public":true,"definition":"{ /** * Description text or ReactNode displayed below the image */ description: ReactNode /** * Image to display. Use \"default\" for the standard illustration, * \"simple\" for a minimal icon, or pass a custom ReactNode. * @default \"default\"…"},{"name":"EnabledDisableToggleProps","path":"src/domain/components/enabled-disable-toggle/enabled-disable-toggle.tsx","kind":"type","description":"","public":true,"definition":"{ /** Current state. A boolean drives a switch display; non-boolean shows action buttons. */ value: unknown /** Tank identifier used in the label (`Tank {N} Circulation`). Pass an empty string for the air exhaust label. */ tankNumber: numb…"},{"name":"ErrorCardProps","path":"src/primitives/components/error-card/index.tsx","kind":"type","description":"","public":true,"definition":"{ /** * Error message string. Supports `\\n` for line breaks. */ error: string /** * Title displayed above the error message * @default \"Errors\" */ title?: string /** * Display variant. \"card\" shows a bordered container, \"inline\" shows flat…"},{"name":"ExportButtonProps","path":"src/domain/components/dashboard/export-button/export-button.tsx","kind":"type","description":"","public":true,"definition":"{ /** * Fires with the chosen format when the user picks an item. Return a promise * to show a loading state until it settles; a rejection clears it and is not * rethrown, so report failures inside the handler. */ onExport: (format: Export…"},{"name":"FeatureFlagsSettingsProps","path":"src/domain/components/settings/feature-flags/feature-flags-settings.tsx","kind":"type","description":"","public":true,"definition":"{ /** Current flag values keyed by flag name */ featureFlags: Record<string, boolean> /** Whether editing is permitted */ isEditingEnabled: boolean /** * Show loading state * @default false */ isLoading?: boolean /** * Show saving spinner…"},{"name":"FormCascaderProps","path":"src/primitives/components/form/form-fields.tsx","kind":"type","description":"","public":true,"definition":"BaseFormFieldProps<TFieldValues, TName> & { options: CascaderOption[] multiple?: boolean cascaderProps?: Omit< React.ComponentProps<typeof Cascader>, 'value' | 'onChange' | 'options' | 'placeholder' > }"},{"name":"FormCheckboxProps","path":"src/primitives/components/form/form-fields.tsx","kind":"type","description":"","public":true,"definition":"BaseFormFieldProps<TFieldValues, TName> & { checkboxProps?: React.ComponentProps<typeof Checkbox> layout?: 'row' | 'column' }"},{"name":"FormDatePickerProps","path":"src/primitives/components/form/form-fields.tsx","kind":"type","description":"","public":true,"definition":"BaseFormFieldProps<TFieldValues, TName> & { datePickerProps?: Omit<React.ComponentProps<typeof DatePicker>, 'selected' | 'onSelect'> }"},{"name":"FormInputProps","path":"src/primitives/components/form/form-fields.tsx","kind":"type","description":"","public":true,"definition":"BaseFormFieldProps<TFieldValues, TName> & { type?: React.ComponentProps<typeof Input>['type'] variant?: React.ComponentProps<typeof Input>['variant'] inputProps?: Omit<React.ComponentProps<typeof Input>, 'type' | 'variant'> }"},{"name":"FormProps","path":"src/primitives/components/form/index.tsx","kind":"type","description":"Form wrapper that provides react-hook-form context to child components","public":true,"definition":"Omit< ComponentProps<'form'>, 'children' > & { form: UseFormReturn<TFieldValues> children: ReactNode }"},{"name":"FormRadioGroupProps","path":"src/primitives/components/form/form-fields.tsx","kind":"type","description":"","public":true,"definition":"BaseFormFieldProps<TFieldValues, TName> & { options: FormRadioOption[] orientation?: 'horizontal' | 'vertical' radioGroupProps?: Omit< React.ComponentProps<typeof RadioGroup>, 'onValueChange' | 'defaultValue' | 'orientation' > }"},{"name":"FormSelectProps","path":"src/primitives/components/form/form-fields.tsx","kind":"type","description":"","public":true,"definition":"BaseFormFieldProps<TFieldValues, TName> & { options: FormSelectOption[] selectProps?: Omit<React.ComponentProps<typeof Select>, 'onValueChange' | 'defaultValue'> }"},{"name":"FormSwitchProps","path":"src/primitives/components/form/form-fields.tsx","kind":"type","description":"","public":true,"definition":"BaseFormFieldProps<TFieldValues, TName> & { switchProps?: Omit<React.ComponentProps<typeof Switch>, 'checked' | 'onCheckedChange'> layout?: 'row' | 'column' }"},{"name":"FormTagInputProps","path":"src/primitives/components/form/form-fields.tsx","kind":"type","description":"","public":true,"definition":"BaseFormFieldProps<TFieldValues, TName> & { options?: TagInputOption[] allowCustomTags?: boolean variant?: 'default' | 'search' tagInputProps?: Omit< React.ComponentProps<typeof TagInput>, 'value' | 'onTagsChange' | 'label' | 'placeholder'…"},{"name":"FormTextAreaProps","path":"src/primitives/components/form/form-fields.tsx","kind":"type","description":"","public":true,"definition":"BaseFormFieldProps<TFieldValues, TName> & { textAreaProps?: React.ComponentProps<typeof TextArea> }"},{"name":"GaugeChartProps","path":"src/primitives/components/gauge-chart/index.tsx","kind":"type","description":"","public":true,"definition":"{ /** Value between 0 and 1 (e.g. 0.75 = 75%). Values outside the range are clamped. */ percent: number /** * Arc colours in HEX format. * @default [COLOR.GREEN, COLOR.RED] */ colors?: string[] /** * Arc thickness as a fraction of the gaug…"},{"name":"HeaderConsumptionBoxProps","path":"src/domain/components/header-stats/header-consumption-box.tsx","kind":"type","description":"","public":true,"definition":"{ /** Icon shown next to the stat */ icon?: ReactNode /** Current site-level power consumption, in megawatts. */ valueMw?: number /** * Unit label — defaults to `MW`. * @default MW */ unit?: string /** Additional class names */ className?:…"},{"name":"HeaderControlsSettingsProps","path":"src/domain/components/settings/header-controls/header-controls-settings.tsx","kind":"type","description":"","public":true,"definition":"{ /** Current header preference values */ preferences: HeaderPreferences /** * Show loading state * @default false */ isLoading?: boolean /** Called when a preference toggle changes */ onToggle: (key: keyof HeaderPreferences, value: boolea…"},{"name":"HeaderEfficiencyBoxProps","path":"src/domain/components/header-stats/header-efficiency-box.tsx","kind":"type","description":"","public":true,"definition":"{ /** Icon shown next to the stat */ icon?: ReactNode /** Efficiency in watts per TH/s. */ valueWthS?: number /** * Unit label — defaults to `W/TH/S`. * @default W/TH/S */ unit?: string /** Additional class names */ className?: string }"},{"name":"HeaderHashrateBoxProps","path":"src/domain/components/header-stats/header-hashrate-box.tsx","kind":"type","description":"","public":true,"definition":"{ /** Icon shown next to the stat */ icon?: ReactNode /** App-side aggregate hashrate in PH/s. */ appPhs?: number /** Pool-side aggregate hashrate in PH/s. */ poolPhs?: number /** * Hashrate unit label — defaults to `PH/s`. * @default PH/s…"},{"name":"HeaderMinersBoxProps","path":"src/domain/components/header-stats/header-miners-box.tsx","kind":"type","description":"","public":true,"definition":"{ /** Icon shown next to the \"Miners\" label. Caller-provided so the package stays icon-agnostic. */ icon?: ReactNode /** Total miners across the site (denominator of the `158 / 2,188` ratio). */ total?: number /** Online miners (the `158`…"},{"name":"HeaderStatsBarProps","path":"src/domain/components/header-stats/header-stats-bar.tsx","kind":"type","description":"","public":true,"definition":"{ /** Stat boxes to render in order, left-to-right. */ children: ReactNode /** Optional class hook. */ className?: string }"},{"name":"HeatmapLegendProps","path":"src/primitives/components/heatmap/types.ts","kind":"type","description":"","public":true,"definition":"{ /** Value (or pre-formatted label) at the low end of the scale. */ min: number | string /** Value (or pre-formatted label) at the high end of the scale. */ max: number | string /** Unit suffix appended to `min`/`max`. */ unit?: string /*…"},{"name":"HeatmapProps","path":"src/primitives/components/heatmap/types.ts","kind":"type","description":"","public":true,"definition":"{ /** Rows of cells (row-major). Rows may be ragged. */ data: HeatmapCell[][] /** * Range floor (maps to the first gradient stop); auto-derived from the finite values when omitted. * @default auto */ min?: number /** * Range ceiling (maps…"},{"name":"HistoricalAlertsProps","path":"src/domain/components/alerts/historical-alerts/historical-alerts.tsx","kind":"type","description":"","public":true,"definition":"{ /** * Pre-fetched historical alerts log entries (each with a `thing` device payload). * @default [] */ alerts?: AlertRecord[] /** * Show DataTable loading overlay * @default false */ isLoading?: boolean /** * Filters and search tags comi…"},{"name":"ImportExportSettingsProps","path":"src/domain/components/settings/import-export/import-export-settings.tsx","kind":"type","description":"","public":true,"definition":"{ /** Trigger configuration export */ onExport: VoidFunction /** Apply imported configuration */ onImport: (data: SettingsExportData) => void /** Custom file-parsing function */ onParseFile?: (file: File) => Promise<SettingsExportData> /**…"},{"name":"IndicatorProps","path":"src/primitives/components/indicator/index.tsx","kind":"type","description":"","public":true,"definition":"{ /** * Color variant of the indicator * @default 'gray' */ color?: IndicatorColor /** * Size variant of the indicator * @default 'md' */ size?: ComponentSize /** * Custom className for the root element */ className?: string /** * When tru…"},{"name":"InputProps","path":"src/primitives/components/input/index.tsx","kind":"type","description":"","public":true,"definition":"Omit<ComponentProps<'input'>, 'prefix' | 'size'> & { /** * Optional label displayed above the input */ label?: string /** * HTML id for the input. Required when using label for accessibility. * @default auto-generated */ id?: string /** *…"},{"name":"LabeledCardProps","path":"src/primitives/components/labeled-card/labeled-card.tsx","kind":"type","description":"","public":true,"definition":"Partial<{ /** * Applies a dark background modifier * @default false */ isDark: boolean /** Additional class for the root element */ className: string /** * Prevents content from wrapping * @default false */ hasNoWrap: boolean /** * Sets `p…"},{"name":"LineChartCardProps","path":"src/domain/components/line-chart-card/types.ts","kind":"type","description":"","public":true,"definition":"Partial<{ /** Pre-adapted chart data (use this OR rawData+dataAdapter) */ data: LineChartCardData /** Raw data to be transformed by dataAdapter */ rawData: unknown /** Adapter to transform rawData into LineChartCardData */ dataAdapter: (da…"},{"name":"LoaderProps","path":"src/primitives/components/loader/index.tsx","kind":"type","description":"","public":true,"definition":"{ /** * Size of each dot in pixels * @default 10 */ size?: number /** * Number of dots to display * @default 5 */ count?: 3 | 5 | 7 /** * Color variant of the loader * @default 'orange' */ color?: 'red' | 'gray' | 'blue' | 'amber' | 'orang…"},{"name":"LogActivityIconProps","path":"src/primitives/components/logs/types.ts","kind":"type","description":"","public":true,"definition":"{ status: string }"},{"name":"LogDotProps","path":"src/primitives/components/logs/types.ts","kind":"type","description":"","public":true,"definition":"{ /** `'Incidents'` renders a colored circle; `'Activity'` renders an activity icon */ type: string /** Severity string for color mapping */ status: string }"},{"name":"LogItemProps","path":"src/primitives/components/logs/types.ts","kind":"type","description":"","public":true,"definition":"{ data: LogData onLogClicked?: (uuid: string) => void }"},{"name":"LogRowProps","path":"src/primitives/components/logs/types.ts","kind":"type","description":"","public":true,"definition":"{ /** Log entry data */ log: LogData /** Log type (controls dot appearance) */ type: string /** Inline style for the row container */ style?: CSSProperties /** Click handler */ onLogClicked?: (uuid: string) => void }"},{"name":"LogsCardProps","path":"src/primitives/components/logs/types.ts","kind":"type","description":"","public":true,"definition":"Partial<{ /** Log type (`'Incidents'` or `'Activity'`); controls the `LogDot` appearance */ type: string /** Card header label */ label: string /** * Applies dark card theme * @default false */ isDark: boolean /** * Shows skeleton rows whi…"},{"name":"ManageUserModalProps","path":"src/domain/components/settings/manage-user-modal/manage-user-modal.tsx","kind":"type","description":"","public":true,"definition":"{ /** Controls dialog visibility */ open: boolean /** Called when the dialog closes */ onClose: VoidFunction /** The user being edited */ user: SettingsUser /** Available role options */ roles: RoleOption[] /** Permission levels per role *…"},{"name":"MdkWordmarkProps","path":"src/primitives/components/mdk-wordmark/index.tsx","kind":"type","description":"","public":true,"definition":"{ /** * Visual size of the wordmark. `sm` ≈ 24px tall, `md` ≈ 32px, `lg` ≈ 64px * @default 'md' */ size?: MdkWordmarkSize /** Optional class hook on the outer `<svg>`. */ className?: string /** * Accessible label * @default 'MDK' */ title?…"},{"name":"MiningPoolsPanelProps","path":"src/domain/components/mining-pools-panel/types.ts","kind":"type","description":"","public":true,"definition":"Partial<{ /** * Override the card title — defaults to `Mining Pools`. * @default \"Mining Pools\" */ label: string /** * Hide the title row entirely. * @default false */ hideHeader: boolean /** * Loading state — renders skeleton rows. * @def…"},{"name":"MinMaxAvgProps","path":"src/primitives/components/min-max-avg/types.ts","kind":"type","description":"","public":true,"definition":"MinMaxAvgValues & { /** Additional root class */ className?: string }"},{"name":"MultiSelectProps","path":"src/primitives/components/multi-select/index.tsx","kind":"type","description":"","public":true,"definition":"{ /** `{ value, label, disabled? }` entries to render as option rows */ options: MultiSelectOption[] /** Controlled selected values. Omit to use `defaultValue` for uncontrolled mode. */ value?: string[] /** * Initial values for uncontrolle…"},{"name":"NotFoundPageProps","path":"src/primitives/components/not-found-page/index.tsx","kind":"type","description":"","public":true,"definition":"{ /** * Callback fired when the \"Go Home\" button is clicked */ onGoHome?: VoidFunction /** * Page title * @default \"404\" */ title?: string /** * Message displayed below the title * @default \"The page you are looking for does not exist.\" */…"},{"name":"OperationsEnergyCostChartProps","path":"src/primitives/components/operations-energy-cost-chart/types.ts","kind":"type","description":"","public":true,"definition":"Partial<{ /** * Chart title * @default \"Operations vs Energy Cost\" */ title: string /** * Subtitle and tooltip unit label * @default $/MWh */ unit: string /** * Doughnut height in pixels * @default 200 */ height: number /** Extra class on…"},{"name":"PaginationProps","path":"src/primitives/components/pagination/index.tsx","kind":"type","description":"","public":true,"definition":"{ /** * Current active page number * @default 1 */ current?: number /** * Total number of items * @default 0 */ total?: number /** * Number of items per page * @default 20 */ pageSize?: number /** * Page size options for the select dropdow…"},{"name":"PoolDetailsCardProps","path":"src/domain/components/pool-details-card/index.tsx","kind":"type","description":"","public":true,"definition":"PoolDetailsCardPartialProps & { /** Detail rows to render */ details: PoolDetailItem[] }"},{"name":"PowerModeTimelineChartProps","path":"src/domain/components/dashboard/power-mode-timeline-chart/power-mode-timeline-chart.tsx","kind":"type","description":"Props for {@link PowerModeTimelineChart}","public":true,"definition":"Partial<{ /** * Initial power-mode entries (each with start/end ts + mode). * @default [] */ data: PowerModeTimelineEntry[] /** * Streaming updates appended to the initial data. * @default [] */ dataUpdates: PowerModeTimelineEntry[] /** *…"},{"name":"ProfileMenuProps","path":"src/domain/components/header-actions/profile-menu.tsx","kind":"type","description":"","public":true,"definition":"{ /** Items rendered in the dropdown, top-to-bottom. */ items: ProfileMenuItem[] /** Optional user label rendered at the top of the dropdown (e.g. an email). */ user?: ReactNode /** * Override the trigger icon — defaults to the user-avatar…"},{"name":"RadioGroupProps","path":"src/primitives/components/radio/index.tsx","kind":"type","description":"","public":true,"definition":"{ /** * Layout orientation * @default 'vertical' */ orientation?: 'horizontal' | 'vertical' /** * Remove gap between radio items * @default false */ noGap?: boolean /** * Custom className for the group */ className?: string } & ComponentPr…"},{"name":"RadioProps","path":"src/primitives/components/radio/index.tsx","kind":"type","description":"","public":true,"definition":"{ // Key prop re-declared from the Radix item so it surfaces in the generated docs // (type reuses Radix's via indexed access — cannot drift). /** Value associated with this option */ value: RadioItemProps['value'] /** * Size variant of th…"},{"name":"RBACControlSettingsProps","path":"src/domain/components/settings/rbac-control/rbac-control-settings.tsx","kind":"type","description":"","public":true,"definition":"{ /** List of current users */ users: SettingsUser[] /** Available role options */ roles: RoleOption[] /** Permission levels per role */ rolePermissions: Record<string, Record<string, PermLevel>> /** Display labels for permission keys */ p…"},{"name":"ReportTimeFrameSelectorProps","path":"src/domain/components/timeframe/report-time-frame-selector/report-time-frame-selector.tsx","kind":"type","description":"","public":true,"definition":"Pick< ReportTimeFrameSelectorState, 'presetTimeFrame' | 'dateRange' | 'setPresetTimeFrame' | 'setDateRange' >"},{"name":"RequireAuthProps","path":"src/domain/components/auth/require-auth/require-auth.tsx","kind":"type","description":"","public":true,"definition":"{ /** Rendered when a token is present. */ children: ReactNode /** Rendered when no token is present — typically `<Navigate to=\"/signin\" />`. */ fallback: ReactNode /** * When true (default), the current location is persisted to sessionSto…"},{"name":"SelectProps","path":"src/primitives/components/select/index.tsx","kind":"type","description":"","public":true,"definition":"SelectRootProps & { // Key controlled-state props re-declared from the Radix root so they surface in // the generated docs (types reuse Radix's via indexed access — cannot drift). /** Controlled value */ value?: SelectRootProps['value'] /*…"},{"name":"SettingsDashboardProps","path":"src/domain/components/settings/settings-dashboard/settings-dashboard.tsx","kind":"type","description":"","public":true,"definition":"{ /** Danger-zone action buttons (reset, delete) */ dangerActions?: ActionButtonProps[] /** Props forwarded to `HeaderControlsSettings` */ headerControlsProps?: HeaderControlsSettingsProps /** Props forwarded to `RBACControlSettings` */ rb…"},{"name":"SidebarProps","path":"src/primitives/components/sidebar/types.ts","kind":"type","description":"","public":true,"definition":"SidebarOptions & SidebarCallbacks & { /** Menu items (supports nested `items`) */ items: SidebarMenuItem[] }"},{"name":"SignInGoogleButtonProps","path":"src/domain/components/auth/sign-in-google-button/sign-in-google-button.tsx","kind":"type","description":"","public":true,"definition":"Omit<ButtonProps, 'onClick' | 'children'> & { /** * Base URL of the OAuth backend (no trailing slash). Click navigates to * `${oauthBaseUrl}/oauth/google`. */ oauthBaseUrl: string /** * Override the visible button label. * @default \"Sign i…"},{"name":"SiteStatsBarProps","path":"src/domain/components/dashboard/site-stats-bar/site-stats-bar.tsx","kind":"type","description":"","public":true,"definition":"{ /** Site label rendered in the header row. */ title: string /** * Current site-level power consumption, in watts. It is displayed divided by 1000, so * `powerUnit` names the kilo unit (`kW` by default). */ power?: number /** * Display un…"},{"name":"SkeletonBlockProps","path":"src/primitives/components/skeleton/index.tsx","kind":"type","description":"","public":true,"definition":"Partial<{ /** * Renders a perfect circle using `height` as the diameter * @default false */ circle: boolean /** Additional class for the element */ className: string /** Width in pixels (number) or any CSS value (string) */ width: number |…"},{"name":"SpinnerProps","path":"src/primitives/components/spinner/index.tsx","kind":"type","description":"","public":true,"definition":"{ /** * Size variant of the spinner * @default 'md' */ size?: ComponentSize /** * Color variant of the spinner * @default 'primary' */ color?: 'primary' | 'secondary' /** * Whether to display in fullscreen mode * @default false */ fullScre…"},{"name":"SwitchProps","path":"src/primitives/components/switch/index.tsx","kind":"type","description":"","public":true,"definition":"{ // Key controlled-state props re-declared from the Radix root so they surface in // the generated docs (types reuse Radix's via indexed access — cannot drift). /** Controlled checked state */ checked?: SwitchRootProps['checked'] /** Unco…"},{"name":"TagFilterBarProps","path":"src/domain/components/alerts/tag-filter-bar/tag-filter-bar.tsx","kind":"type","description":"","public":true,"definition":"{ /** Active tag filter values */ filterTags: string[] /** Current local filter state */ localFilters: AlertLocalFilters /** Called when tag filter changes */ onSearchTagsChange: (tags: string[]) => void /** Called when any local filter ch…"},{"name":"TagInputProps","path":"src/primitives/components/tag-input/index.tsx","kind":"type","description":"","public":true,"definition":"{ /** * Controlled tags (array of tag values) * @default [] */ value?: string[] /** * Callback when tags change (add/remove) */ onTagsChange?: (tags: string[]) => void /** * Callback when input value changes (typing). Receives current inpu…"},{"name":"TagProps","path":"src/primitives/components/tag/index.tsx","kind":"type","description":"","public":true,"definition":"{ /** * Color variant of the tag * @default 'dark' */ color?: 'dark' | 'red' | 'green' | 'amber' | 'blue' /** * Custom className for the root element */ className?: string /** * Children content */ children?: ReactNode } & ComponentPropsWi…"},{"name":"TextAreaProps","path":"src/primitives/components/textarea/index.tsx","kind":"type","description":"","public":true,"definition":"ComponentProps<'textarea'> & { /** * Optional label displayed above the textarea */ label?: string /** * HTML id for the textarea. Required when using label for accessibility. * @default auto-generated */ id?: string /** * Validation error…"},{"name":"ThresholdLineChartProps","path":"src/primitives/components/threshold-line-chart/types.ts","kind":"type","description":"","public":true,"definition":"Partial<{ /** Chart title (unit appended when `unit` is set) */ title: string /** Shown in title and axis/tooltip formatting */ unit: string /** * Chart height in pixels (`360` when `isTall`) * @default 280 */ height: number /** * When tru…"},{"name":"TimeframeControlsProps","path":"src/domain/components/timeframe/timeframe-controls/timeframe-controls.types.ts","kind":"type","description":"","public":true,"definition":"Partial<{ /** Helper text below the controls */ hint: string /** Called when the Reset button is clicked */ onReset: VoidFunction /** * Shows the Reset button * @default false */ showResetButton: boolean /** * Show week selector * @default…"},{"name":"TimeframeWeekFlatContentProps","path":"src/domain/components/timeframe/timeframe-controls/timeframe-controls-week-content.tsx","kind":"type","description":"","public":true,"definition":"{ visibleWeeks: ReturnType<typeof weeksOfMonth> }"},{"name":"TimeframeWeekTreeContentProps","path":"src/domain/components/timeframe/timeframe-controls/timeframe-controls-week-content.tsx","kind":"type","description":"","public":true,"definition":"{ timezone: string selectedYear: number selectedMonth: number }"},{"name":"TimelineChartProps","path":"src/domain/components/timeline-chart/timeline-chart.types.ts","kind":"type","description":"","public":true,"definition":"{ /** Initial timeline data */ initialData: TimelineChartData /** Streaming updates appended to the initial data */ newData?: TimelineChartData /** * Ignore `newData` * @default false */ skipUpdates?: boolean /** Visible time window */ ran…"},{"name":"TimelineSelectorProps","path":"src/domain/components/dashboard/timeline-selector/timeline-selector.tsx","kind":"type","description":"","public":true,"definition":"{ /** Currently selected timeline value (e.g. `'1m'`, `'5m'`). */ value: string /** Called whenever the user picks a new option. */ onChange: (next: string) => void /** * Available options — defaults to {@link getTimelineOptions}. Pass a c…"},{"name":"TypographyProps","path":"src/primitives/components/typography/index.tsx","kind":"type","description":"","public":true,"definition":"{ /** * Determines the rendered HTML element and base style * @default 'body' */ variant?: 'heading1' | 'heading2' | 'heading3' | 'body' | 'secondary' | 'caption' /** * Text size; defaults to the variant's size when unset. */ size?: 'xs' |…"},{"name":"WidgetTopRowProps","path":"src/domain/components/widget-top-row/index.tsx","kind":"type","description":"","public":true,"definition":"{ /** Widget title */ title: string /** Power reading; rendered in kilo-units */ power?: number /** Power unit (e.g. `\"kW\"`) */ unit?: string /** Error tooltip content; replaces power */ statsErrorMessage?: string | ErrorWithTimestamp[] |…"}],"indexes":{"componentsByName":{"Accordion":0,"AccordionContent":1,"AccordionItem":2,"AccordionTrigger":3,"ActionButton":4,"ActiveIncidentsCard":5,"AddUserModal":6,"AlarmContents":7,"AlarmRow":8,"AlarmsBellButton":9,"AlertConfirmationModal":10,"AlertDialogAction":11,"AlertDialogCancel":12,"AlertDialogContent":13,"AlertDialogDescription":14,"AlertDialogFooter":15,"AlertDialogHeader":16,"AlertDialogOverlay":17,"AlertDialogTitle":18,"AlertsTableTitle":19,"AppHeader":20,"AreaChart":21,"ArrowIcon":22,"Avatar":23,"AvatarFallback":24,"AvatarImage":25,"AverageDowntimeChart":26,"Badge":27,"BarChart":28,"Breadcrumbs":29,"BtcAveragePrice":30,"Button":31,"CardBody":32,"CardFooter":33,"CardHeader":34,"Cascader":35,"ChangeConfirmationModal":36,"ChartContainer":37,"ChartStatsFooter":38,"Checkbox":39,"CoreAlert":40,"CurrencyToggler":41,"CurrentAlerts":42,"DashboardDateRangePicker":43,"DataLabel":44,"DataTable":45,"DatePicker":46,"DateRangePicker":47,"DEFAULT_TIMELINE_OPTIONS":48,"DetailLegend":49,"DeviceExplorer":50,"DialogContent":51,"DialogDescription":52,"DialogFooter":53,"DialogHeader":54,"DialogOverlay":55,"DialogTitle":56,"Divider":57,"DoughnutChart":58,"EmptyState":59,"EnabledDisableToggle":60,"ErrorCard":61,"ExportButton":62,"FeatureFlagsSettings":63,"Form":64,"FormCascader":65,"FormCheckbox":66,"FormControl":67,"FormDatePicker":68,"FormDescription":69,"FormField":70,"FormInput":71,"FormItem":72,"FormLabel":73,"FormMessage":74,"FormRadioGroup":75,"FormSelect":76,"FormSwitch":77,"FormTagInput":78,"FormTextArea":79,"GaugeChart":80,"GenericDataBox":81,"HeaderConsumptionBox":82,"HeaderControlsSettings":83,"HeaderEfficiencyBox":84,"HeaderHashrateBox":85,"HeaderMinersBox":86,"HeaderStatsBar":87,"Heatmap":88,"HeatmapLegend":89,"HistoricalAlerts":90,"ImportExportSettings":91,"Indicator":92,"Input":93,"Label":94,"LabeledCard":95,"LazyTabWrapper":96,"LineChart":97,"LineChartCard":98,"ListViewFilter":99,"Loader":100,"LogActivityIcon":101,"LogDot":102,"LogItem":103,"LogRow":104,"LogsCard":105,"ManageUserModal":106,"MdkWordmark":107,"MetricCard":108,"MinerMetricCard":109,"MinersActivityChart":110,"MiningPoolsPanel":111,"MinMaxAvg":112,"Mosaic":113,"MultiLevelSelect":114,"MultiSelect":115,"NotFoundPage":116,"OperationsEnergyCostChart":117,"Pagination":118,"PoolDetailsCard":119,"PoolDetailsPopover":120,"Popover":121,"PowerModeTimelineChart":122,"ProfileMenu":123,"Radio":124,"RadioCard":125,"RadioGroup":126,"RBACControlSettings":127,"ReportTimeFrameSelector":128,"RequireAuth":129,"Select":130,"SettingsDashboard":131,"Sidebar":132,"SignInGoogleButton":133,"SimplePopover":134,"SimpleTooltip":135,"SingleStatCard":136,"SiteStatsBar":137,"SkeletonBlock":138,"Spinner":139,"Switch":140,"Tabs":141,"Tag":142,"TagFilterBar":143,"TagInput":144,"TextArea":145,"ThresholdLineChart":146,"TimeframeControls":147,"TimeframeWeekFlatContent":148,"TimeframeWeekTreeContent":149,"TimelineChart":150,"TimelineSelector":151,"Toast":152,"Toaster":153,"Tooltip":154,"Typography":155,"WidgetTopRow":156},"hooksByName":{"useChartDataCheck":0,"useFinancialDateRange":1,"useFormField":2,"useFormReset":3,"useHeaderControls":4,"useNotification":5,"useReportTimeFrameSelectorState":6,"useSidebarExpandedState":7,"useSidebarSectionState":8,"useTimeframeControls":9},"typesByName":{"ActionButtonProps":0,"AddUserModalProps":1,"AlarmsBellButtonProps":2,"AlertConfirmationModalProps":3,"AlertsTableTitleProps":4,"AppHeaderProps":5,"AreaChartProps":6,"ArrowIconProps":7,"AverageDowntimeChartProps":8,"BadgeProps":9,"BarChartProps":10,"BreadcrumbsProps":11,"BtcAveragePriceProps":12,"ButtonProps":13,"CardBodyProps":14,"CardFooterProps":15,"CardHeaderProps":16,"CascaderProps":17,"ChangeConfirmationModalProps":18,"ChartContainerProps":19,"ChartStatsFooterProps":20,"CheckboxProps":21,"CurrentAlertsProps":22,"DashboardDateRangePickerProps":23,"DataLabelProps":24,"DataTableProps":25,"DatePickerProps":26,"DateRangePickerProps":27,"DetailLegendProps":28,"DeviceExplorerProps":29,"DialogContentProps":30,"DialogHeaderProps":31,"DividerProps":32,"DoughnutChartProps":33,"EmptyStateProps":34,"EnabledDisableToggleProps":35,"ErrorCardProps":36,"ExportButtonProps":37,"FeatureFlagsSettingsProps":38,"FormCascaderProps":39,"FormCheckboxProps":40,"FormDatePickerProps":41,"FormInputProps":42,"FormProps":43,"FormRadioGroupProps":44,"FormSelectProps":45,"FormSwitchProps":46,"FormTagInputProps":47,"FormTextAreaProps":48,"GaugeChartProps":49,"HeaderConsumptionBoxProps":50,"HeaderControlsSettingsProps":51,"HeaderEfficiencyBoxProps":52,"HeaderHashrateBoxProps":53,"HeaderMinersBoxProps":54,"HeaderStatsBarProps":55,"HeatmapLegendProps":56,"HeatmapProps":57,"HistoricalAlertsProps":58,"ImportExportSettingsProps":59,"IndicatorProps":60,"InputProps":61,"LabeledCardProps":62,"LineChartCardProps":63,"LoaderProps":64,"LogActivityIconProps":65,"LogDotProps":66,"LogItemProps":67,"LogRowProps":68,"LogsCardProps":69,"ManageUserModalProps":70,"MdkWordmarkProps":71,"MiningPoolsPanelProps":72,"MinMaxAvgProps":73,"MultiSelectProps":74,"NotFoundPageProps":75,"OperationsEnergyCostChartProps":76,"PaginationProps":77,"PoolDetailsCardProps":78,"PowerModeTimelineChartProps":79,"ProfileMenuProps":80,"RadioGroupProps":81,"RadioProps":82,"RBACControlSettingsProps":83,"ReportTimeFrameSelectorProps":84,"RequireAuthProps":85,"SelectProps":86,"SettingsDashboardProps":87,"SidebarProps":88,"SignInGoogleButtonProps":89,"SiteStatsBarProps":90,"SkeletonBlockProps":91,"SpinnerProps":92,"SwitchProps":93,"TagFilterBarProps":94,"TagInputProps":95,"TagProps":96,"TextAreaProps":97,"ThresholdLineChartProps":98,"TimeframeControlsProps":99,"TimeframeWeekFlatContentProps":100,"TimeframeWeekTreeContentProps":101,"TimelineChartProps":102,"TimelineSelectorProps":103,"TypographyProps":104,"WidgetTopRowProps":105},"componentsByCategory":{"layout":["Accordion","AccordionContent","AccordionItem","AccordionTrigger","CardBody","CardFooter","CardHeader","Divider","LabeledCard","LazyTabWrapper","Mosaic","Tabs"],"actions":["ActionButton","Button"],"cards":["ActiveIncidentsCard","MetricCard","MiningPoolsPanel","PoolDetailsCard","PoolDetailsPopover"],"settings":["AddUserModal","ChangeConfirmationModal","FeatureFlagsSettings","HeaderControlsSettings","ImportExportSettings","ManageUserModal","RBACControlSettings","SettingsDashboard"],"feedback":["AlarmContents","AlarmRow","CoreAlert","EmptyState","ErrorCard","Loader","SkeletonBlock","Spinner","Toast","Toaster"],"dashboard":["AlarmsBellButton","DashboardDateRangePicker","DEFAULT_TIMELINE_OPTIONS","ExportButton","HeaderConsumptionBox","HeaderEfficiencyBox","HeaderHashrateBox","HeaderMinersBox","HeaderStatsBar","ProfileMenu","SiteStatsBar","TimelineSelector"],"tables":["AlertConfirmationModal","AlertsTableTitle","CurrentAlerts","DataTable","DeviceExplorer","HistoricalAlerts","TagFilterBar"],"dialogs":["AlertDialogAction","AlertDialogCancel","AlertDialogContent","AlertDialogDescription","AlertDialogFooter","AlertDialogHeader","AlertDialogOverlay","AlertDialogTitle","DialogContent","DialogDescription","DialogFooter","DialogHeader","DialogOverlay","DialogTitle"],"navigation":["AppHeader","Breadcrumbs","Pagination","Sidebar"],"charts":["AreaChart","AverageDowntimeChart","BarChart","ChartContainer","ChartStatsFooter","DetailLegend","DoughnutChart","GaugeChart","Heatmap","HeatmapLegend","LineChart","LineChartCard","MinMaxAvg","OperationsEnergyCostChart","PowerModeTimelineChart","ThresholdLineChart","TimelineChart"],"media":["ArrowIcon"],"display":["Avatar","AvatarFallback","AvatarImage","Badge","BtcAveragePrice","DataLabel","Indicator","Tag","Typography"],"forms":["Cascader","Checkbox","CurrencyToggler","DatePicker","DateRangePicker","Form","FormCascader","FormCheckbox","FormControl","FormDatePicker","FormDescription","FormField","FormInput","FormItem","FormLabel","FormMessage","FormRadioGroup","FormSelect","FormSwitch","FormTagInput","FormTextArea","Input","Label","MultiLevelSelect","MultiSelect","Radio","RadioCard","RadioGroup","Select","Switch","TagInput","TextArea"],"widgets":["EnabledDisableToggle","GenericDataBox","MinerMetricCard","MinersActivityChart","SingleStatCard","WidgetTopRow"],"filters":["ListViewFilter","ReportTimeFrameSelector","TimeframeControls","TimeframeWeekFlatContent","TimeframeWeekTreeContent"],"monitoring":["LogActivityIcon","LogDot","LogItem","LogRow","LogsCard"],"branding":["MdkWordmark"],"pages":["NotFoundPage"],"overlays":["Popover","SimplePopover","SimpleTooltip","Tooltip"],"auth":["RequireAuth","SignInGoogleButton"]},"componentsByDomain":{"generic":["Accordion","AccordionContent","AccordionItem","AccordionTrigger","ActionButton","AlertDialogAction","AlertDialogCancel","AlertDialogContent","AlertDialogDescription","AlertDialogFooter","AlertDialogHeader","AlertDialogOverlay","AlertDialogTitle","AppHeader","AreaChart","ArrowIcon","Avatar","AvatarFallback","AvatarImage","AverageDowntimeChart","Badge","BarChart","Breadcrumbs","BtcAveragePrice","Button","CardBody","CardFooter","CardHeader","Cascader","ChartContainer","ChartStatsFooter","Checkbox","CoreAlert","CurrencyToggler","DataLabel","DataTable","DatePicker","DateRangePicker","DEFAULT_TIMELINE_OPTIONS","DetailLegend","DialogContent","DialogDescription","DialogFooter","DialogHeader","DialogOverlay","DialogTitle","Divider","DoughnutChart","EmptyState","ErrorCard","Form","FormCascader","FormCheckbox","FormControl","FormDatePicker","FormDescription","FormField","FormInput","FormItem","FormLabel","FormMessage","FormRadioGroup","FormSelect","FormSwitch","FormTagInput","FormTextArea","GaugeChart","Heatmap","HeatmapLegend","Indicator","Input","Label","LabeledCard","LazyTabWrapper","LineChart","LineChartCard","ListViewFilter","Loader","LogActivityIcon","LogDot","LogItem","LogRow","LogsCard","MdkWordmark","MinMaxAvg","Mosaic","MultiLevelSelect","MultiSelect","NotFoundPage","OperationsEnergyCostChart","Pagination","Popover","Radio","RadioCard","RadioGroup","Select","Sidebar","SimplePopover","SimpleTooltip","SkeletonBlock","Spinner","Switch","Tabs","Tag","TagInput","TextArea","ThresholdLineChart","Toast","Toaster","Tooltip","Typography"],"mining-operations":["ActiveIncidentsCard","AlarmContents","AlarmRow","AlarmsBellButton","AlertConfirmationModal","AlertsTableTitle","CurrentAlerts","DashboardDateRangePicker","ExportButton","HeaderConsumptionBox","HeaderEfficiencyBox","HeaderHashrateBox","HeaderMinersBox","HeaderStatsBar","HistoricalAlerts","MetricCard","MiningPoolsPanel","PoolDetailsCard","PoolDetailsPopover","PowerModeTimelineChart","ProfileMenu","RequireAuth","SignInGoogleButton","SiteStatsBar","TagFilterBar","TimelineChart","TimelineSelector","WidgetTopRow"],"device-management":["AddUserModal","ChangeConfirmationModal","DeviceExplorer","EnabledDisableToggle","FeatureFlagsSettings","GenericDataBox","HeaderControlsSettings","ImportExportSettings","ManageUserModal","MinerMetricCard","MinersActivityChart","RBACControlSettings","SettingsDashboard","SingleStatCard"],"financial-reporting":["ReportTimeFrameSelector","TimeframeControls","TimeframeWeekFlatContent","TimeframeWeekTreeContent"]},"componentsByKernelCapability":{"incident-alerts":["ActiveIncidentsCard","AlarmContents","AlarmRow","CurrentAlerts","HistoricalAlerts"],"device-management":["AddUserModal","ChangeConfirmationModal","DeviceExplorer","EnabledDisableToggle","FeatureFlagsSettings","GenericDataBox","HeaderControlsSettings","ImportExportSettings","ManageUserModal","MinerMetricCard","MinersActivityChart","RBACControlSettings","SettingsDashboard","SingleStatCard"],"alerting":["AlarmsBellButton"],"hashrate-monitoring":["AlertConfirmationModal","AlertsTableTitle","HeaderHashrateBox","SiteStatsBar","TagFilterBar","TimelineSelector"],"time-range-filtering":["DashboardDateRangePicker"],"data-export":["ExportButton"],"power-monitoring":["HeaderConsumptionBox"],"efficiency-monitoring":["HeaderEfficiencyBox"],"site-overview":["HeaderMinersBox","HeaderStatsBar"],"pool-performance":["MetricCard","PoolDetailsCard","PoolDetailsPopover"],"pool-monitoring":["MiningPoolsPanel"],"device-telemetry":["PowerModeTimelineChart","TimelineChart","WidgetTopRow"],"session-management":["ProfileMenu"],"financial-reporting":["ReportTimeFrameSelector","TimeframeControls","TimeframeWeekFlatContent","TimeframeWeekTreeContent"],"authentication":["RequireAuth","SignInGoogleButton"]},"componentsByTier":{"agent-ready":["Accordion","AccordionContent","AccordionItem","AccordionTrigger","ActionButton","ActiveIncidentsCard","AddUserModal","AlarmContents","AlarmRow","AlarmsBellButton","AlertConfirmationModal","AlertDialogAction","AlertDialogCancel","AlertDialogContent","AlertDialogDescription","AlertDialogFooter","AlertDialogHeader","AlertDialogOverlay","AlertDialogTitle","AlertsTableTitle","AppHeader","AreaChart","ArrowIcon","Avatar","AvatarFallback","AvatarImage","AverageDowntimeChart","Badge","BarChart","Breadcrumbs","BtcAveragePrice","Button","CardBody","CardFooter","CardHeader","Cascader","ChangeConfirmationModal","ChartContainer","ChartStatsFooter","Checkbox","CoreAlert","CurrencyToggler","CurrentAlerts","DashboardDateRangePicker","DataLabel","DataTable","DatePicker","DateRangePicker","DetailLegend","DeviceExplorer","DialogContent","DialogDescription","DialogFooter","DialogHeader","DialogOverlay","DialogTitle","Divider","DoughnutChart","EmptyState","EnabledDisableToggle","ErrorCard","ExportButton","FeatureFlagsSettings","Form","FormCascader","FormCheckbox","FormControl","FormDatePicker","FormDescription","FormField","FormInput","FormItem","FormLabel","FormMessage","FormRadioGroup","FormSelect","FormSwitch","FormTagInput","FormTextArea","GaugeChart","GenericDataBox","HeaderConsumptionBox","HeaderControlsSettings","HeaderEfficiencyBox","HeaderHashrateBox","HeaderMinersBox","HeaderStatsBar","Heatmap","HeatmapLegend","HistoricalAlerts","ImportExportSettings","Indicator","Input","Label","LabeledCard","LazyTabWrapper","LineChart","LineChartCard","ListViewFilter","Loader","LogActivityIcon","LogDot","LogItem","LogRow","LogsCard","ManageUserModal","MdkWordmark","MetricCard","MinerMetricCard","MinersActivityChart","MiningPoolsPanel","MinMaxAvg","Mosaic","MultiLevelSelect","MultiSelect","NotFoundPage","OperationsEnergyCostChart","Pagination","PoolDetailsCard","PoolDetailsPopover","Popover","PowerModeTimelineChart","ProfileMenu","Radio","RadioCard","RadioGroup","RBACControlSettings","ReportTimeFrameSelector","RequireAuth","Select","SettingsDashboard","Sidebar","SignInGoogleButton","SimplePopover","SimpleTooltip","SingleStatCard","SiteStatsBar","SkeletonBlock","Spinner","Switch","Tabs","Tag","TagFilterBar","TagInput","TextArea","ThresholdLineChart","TimeframeControls","TimeframeWeekFlatContent","TimeframeWeekTreeContent","TimelineChart","TimelineSelector","Toast","Toaster","Tooltip","Typography","WidgetTopRow"],"advanced":["DEFAULT_TIMELINE_OPTIONS"]},"componentsByPublic":{"true":["Accordion","AccordionContent","AccordionItem","AccordionTrigger","ActionButton","ActiveIncidentsCard","AddUserModal","AlarmContents","AlarmRow","AlarmsBellButton","AlertConfirmationModal","AlertDialogAction","AlertDialogCancel","AlertDialogContent","AlertDialogDescription","AlertDialogFooter","AlertDialogHeader","AlertDialogOverlay","AlertDialogTitle","AlertsTableTitle","AppHeader","AreaChart","ArrowIcon","Avatar","AvatarFallback","AvatarImage","AverageDowntimeChart","Badge","BarChart","Breadcrumbs","BtcAveragePrice","Button","CardBody","CardFooter","CardHeader","Cascader","ChangeConfirmationModal","ChartContainer","ChartStatsFooter","Checkbox","CoreAlert","CurrencyToggler","CurrentAlerts","DashboardDateRangePicker","DataLabel","DataTable","DatePicker","DateRangePicker","DEFAULT_TIMELINE_OPTIONS","DetailLegend","DeviceExplorer","DialogContent","DialogDescription","DialogFooter","DialogHeader","DialogOverlay","DialogTitle","Divider","DoughnutChart","EmptyState","EnabledDisableToggle","ErrorCard","ExportButton","FeatureFlagsSettings","Form","FormCascader","FormCheckbox","FormControl","FormDatePicker","FormDescription","FormField","FormInput","FormItem","FormLabel","FormMessage","FormRadioGroup","FormSelect","FormSwitch","FormTagInput","FormTextArea","GaugeChart","GenericDataBox","HeaderConsumptionBox","HeaderControlsSettings","HeaderEfficiencyBox","HeaderHashrateBox","HeaderMinersBox","HeaderStatsBar","Heatmap","HeatmapLegend","HistoricalAlerts","ImportExportSettings","Indicator","Input","Label","LabeledCard","LazyTabWrapper","LineChart","LineChartCard","ListViewFilter","Loader","LogActivityIcon","LogDot","LogItem","LogRow","LogsCard","ManageUserModal","MdkWordmark","MetricCard","MinerMetricCard","MinersActivityChart","MiningPoolsPanel","MinMaxAvg","Mosaic","MultiLevelSelect","MultiSelect","NotFoundPage","OperationsEnergyCostChart","Pagination","PoolDetailsCard","PoolDetailsPopover","Popover","PowerModeTimelineChart","ProfileMenu","Radio","RadioCard","RadioGroup","RBACControlSettings","ReportTimeFrameSelector","RequireAuth","Select","SettingsDashboard","Sidebar","SignInGoogleButton","SimplePopover","SimpleTooltip","SingleStatCard","SiteStatsBar","SkeletonBlock","Spinner","Switch","Tabs","Tag","TagFilterBar","TagInput","TextArea","ThresholdLineChart","TimeframeControls","TimeframeWeekFlatContent","TimeframeWeekTreeContent","TimelineChart","TimelineSelector","Toast","Toaster","Tooltip","Typography","WidgetTopRow"]},"hooksByDomain":{"generic":["useChartDataCheck","useFormField","useFormReset","useNotification","useSidebarExpandedState","useSidebarSectionState"],"financial-reporting":["useFinancialDateRange","useReportTimeFrameSelectorState","useTimeframeControls"],"device-management":["useHeaderControls"]},"hooksByKernelCapability":{"financial-reporting":["useFinancialDateRange","useReportTimeFrameSelectorState","useTimeframeControls"],"device-management":["useHeaderControls"]},"hooksByPublic":{"true":["useChartDataCheck","useFinancialDateRange","useFormField","useFormReset","useHeaderControls","useNotification","useReportTimeFrameSelectorState","useSidebarExpandedState","useSidebarSectionState","useTimeframeControls"]},"typesByCategory":{},"typesByDomain":{},"typesByPublic":{"true":["ActionButtonProps","AddUserModalProps","AlarmsBellButtonProps","AlertConfirmationModalProps","AlertsTableTitleProps","AppHeaderProps","AreaChartProps","ArrowIconProps","AverageDowntimeChartProps","BadgeProps","BarChartProps","BreadcrumbsProps","BtcAveragePriceProps","ButtonProps","CardBodyProps","CardFooterProps","CardHeaderProps","CascaderProps","ChangeConfirmationModalProps","ChartContainerProps","ChartStatsFooterProps","CheckboxProps","CurrentAlertsProps","DashboardDateRangePickerProps","DataLabelProps","DataTableProps","DatePickerProps","DateRangePickerProps","DetailLegendProps","DeviceExplorerProps","DialogContentProps","DialogHeaderProps","DividerProps","DoughnutChartProps","EmptyStateProps","EnabledDisableToggleProps","ErrorCardProps","ExportButtonProps","FeatureFlagsSettingsProps","FormCascaderProps","FormCheckboxProps","FormDatePickerProps","FormInputProps","FormProps","FormRadioGroupProps","FormSelectProps","FormSwitchProps","FormTagInputProps","FormTextAreaProps","GaugeChartProps","HeaderConsumptionBoxProps","HeaderControlsSettingsProps","HeaderEfficiencyBoxProps","HeaderHashrateBoxProps","HeaderMinersBoxProps","HeaderStatsBarProps","HeatmapLegendProps","HeatmapProps","HistoricalAlertsProps","ImportExportSettingsProps","IndicatorProps","InputProps","LabeledCardProps","LineChartCardProps","LoaderProps","LogActivityIconProps","LogDotProps","LogItemProps","LogRowProps","LogsCardProps","ManageUserModalProps","MdkWordmarkProps","MiningPoolsPanelProps","MinMaxAvgProps","MultiSelectProps","NotFoundPageProps","OperationsEnergyCostChartProps","PaginationProps","PoolDetailsCardProps","PowerModeTimelineChartProps","ProfileMenuProps","RadioGroupProps","RadioProps","RBACControlSettingsProps","ReportTimeFrameSelectorProps","RequireAuthProps","SelectProps","SettingsDashboardProps","SidebarProps","SignInGoogleButtonProps","SiteStatsBarProps","SkeletonBlockProps","SpinnerProps","SwitchProps","TagFilterBarProps","TagInputProps","TagProps","TextAreaProps","ThresholdLineChartProps","TimeframeControlsProps","TimeframeWeekFlatContentProps","TimeframeWeekTreeContentProps","TimelineChartProps","TimelineSelectorProps","TypographyProps","WidgetTopRowProps"]}}}
|