diff --git a/.claude/docs/technical/DASHBOARD_WIDGETS_AGENT_GUIDE.md b/.claude/docs/technical/DASHBOARD_WIDGETS_AGENT_GUIDE.md
index 7fafcac..d0c53da 100644
--- a/.claude/docs/technical/DASHBOARD_WIDGETS_AGENT_GUIDE.md
+++ b/.claude/docs/technical/DASHBOARD_WIDGETS_AGENT_GUIDE.md
@@ -42,7 +42,7 @@ Kontext: **Dashboard-Lab** unter geschützten Endpoints `GET/PUT /api/app/...` (
1. **`backend/widget_catalog.py`** – `WIDGET_CATALOG`: erlaubte Widget-IDs, Reihenfolge, Titel/Beschreibung für API und Default-Layout.
2. **`backend/dashboard_layout_schema.py`** – `DashboardLayoutPayload`: jede Zeile hat `id`, `enabled`, optional `config`. IDs müssen in `ALLOWED_WIDGET_IDS` sein (aus dem Katalog abgeleitet).
3. **`backend/dashboard_widget_config.py`** – `validate_widget_entry_config`: **nur** Widgets in `WIDGETS_ALLOWING_CONFIG` dürfen **nicht-leere** `config` haben; Keys werden streng validiert (unbekannte Keys → Fehler).
-4. **Frontend** – `ensurePilotLabWidgetsRegistered()` in `frontend/src/widgetSystem/registerPilotLabWidgets.js`: verbindet jede Katalog-ID mit einer React-Komponente und mappt `ctx.layoutEntry.config` auf Props.
+4. **Frontend** – `ensureDashboardWidgetsRegistered()` in `frontend/src/widgetSystem/registerDashboardWidgets.js`: verbindet jede Katalog-ID mit einer React-Komponente und mappt `ctx.layoutEntry.config` auf Props.
5. **Dashboard-Lab-UI** – `frontend/src/pages/DashboardLabPage.jsx`: Umsortieren, Ein/Aus, Speichern; **zusätzliche** UI nur nötig, wenn das Widget konfigurierbare Felder braucht.
---
@@ -53,8 +53,8 @@ Kontext: **Dashboard-Lab** unter geschützten Endpoints `GET/PUT /api/app/...` (
|--------|--------|--------|
| A | `backend/widget_catalog.py` | Neuen Eintrag `{ "id", "title", "description" }` in `WIDGET_CATALOG` einfügen (Reihenfolge = Default-Reihenfolge im Layout). Optional `"requires_feature": ""` für Tarif-Gating (`dashboard_widget_entitlements`). |
| B | `backend/widget_catalog.py` | Optional: ID zu `DEFAULT_LAB_WIDGET_IDS` hinzufügen, wenn es im Standard-Lab **aktiv** sein soll. |
-| C | `frontend/src/components/dashboard-widgets/MyWidget.jsx` (oder Pilot-Komponente) | React-Komponente implementieren; typischerweise `refreshTick` aus `mapProps` nutzen, um Daten neu zu laden. |
-| D | `frontend/src/widgetSystem/registerPilotLabWidgets.js` | `import` + `registerDashboardWidget({ id, Component, mapProps })` – `id` **exakt** wie im Katalog. |
+| C | `frontend/src/components/dashboard-widgets/MyWidget.jsx` (oder Legacy-Widget unter `dashboard-widgets-legacy/`) | React-Komponente implementieren; typischerweise `refreshTick` aus `mapProps` nutzen, um Daten neu zu laden. |
+| D | `frontend/src/widgetSystem/registerDashboardWidgets.js` | `import` + `registerDashboardWidget({ id, Component, mapProps })` – `id` **exakt** wie im Katalog. |
| E | `backend/tests/test_widget_catalog.py` | Läuft implizit mit; bei Strukturänderungen Katalog-Tests beachten. |
| F | `backend/version.py` | `MODULE_VERSIONS["app_dashboard"]` MINOR erhöhen und kurz kommentieren. |
| G | Build/Tests | `pytest` (z. B. `tests/test_dashboard_layout_schema.py`, `test_widget_catalog.py`); `npm run build` im `frontend`. |
@@ -159,5 +159,5 @@ Nach Speichern ruft die Seite `api.putAppDashboardLayout(layout)` auf; das Backe
| Layout-Pydantic | `backend/dashboard_layout_schema.py` |
| HTTP | `backend/routers/app_dashboard.py` |
| Registry + Render | `frontend/src/widgetSystem/dashboardWidgetRegistry.jsx` |
-| Pilot/Lab-Registrierung | `frontend/src/widgetSystem/registerPilotLabWidgets.js` |
+| Dashboard-Widget-Registrierung | `frontend/src/widgetSystem/registerDashboardWidgets.js` |
| Lab-UI | `frontend/src/pages/DashboardLabPage.jsx` |
diff --git a/CLAUDE.md b/CLAUDE.md
index 7b3291c..a8384c5 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -100,6 +100,11 @@ frontend/src/
**Branch:** develop
**Nächster Schritt:** Frontend Chart Integration → Testing → Prod Deploy v0.9i
+### Updates (23.04.2026 - Dashboard: veraltete Demo-Route entfernt, klare Produkt-Registry)
+
+- **Frontend:** Veraltete Visualisierungs-Demo-Route und festes Demo-Layout entfernt; Widget-Registrierung in `frontend/src/widgetSystem/registerDashboardWidgets.js` (`ensureDashboardWidgetsRegistered`). Kern-Widgets unter `frontend/src/components/dashboard-widgets-legacy/`. Chart-Hilfen in `frontend/src/widgetSystem/dashboardChartUtils.js`.
+- **Doku:** `.claude/docs/technical/DASHBOARD_WIDGETS_AGENT_GUIDE.md` und Kommentar in `backend/widget_catalog.py` angepasst.
+
### Updates (09.04.2026 - Universal CSV Import, Prod-Migration abgeschlossen)
- **Agent-Leitfaden:** `.claude/docs/technical/UNIVERSAL_CSV_IMPORT_AGENT_GUIDE.md` (Checkliste für neue Import-Module, Executor, Vorlagen, `source=csv`, SAVEPOINT-/Cursor-Regeln)
diff --git a/backend/widget_catalog.py b/backend/widget_catalog.py
index e83720d..fc6ee57 100644
--- a/backend/widget_catalog.py
+++ b/backend/widget_catalog.py
@@ -2,7 +2,7 @@
Öffentlicher Widget-Katalog (Dashboard-Lab / später Produkt-Dashboard).
Single Source für: erlaubte IDs, Standard-Reihenfolge, Anzeige-Metadaten für API/GUI.
-Frontend-Komponenten registrieren dieselben IDs lokal (siehe widgetSystem/registerPilotLabWidgets).
+Frontend-Komponenten registrieren dieselben IDs lokal (siehe widgetSystem/registerDashboardWidgets.js, Funktion ensureDashboardWidgetsRegistered).
"""
from __future__ import annotations
diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx
index 4e397fe..fe9e5e1 100644
--- a/frontend/src/App.jsx
+++ b/frontend/src/App.jsx
@@ -25,7 +25,6 @@ import Analysis from './pages/Analysis'
import SettingsPage from './pages/SettingsPage'
import SettingsShell from './layouts/SettingsShell'
import ProfileReferenceValuesPage from './pages/ProfileReferenceValuesPage'
-import PilotVizPage from './pages/PilotVizPage'
import DashboardLabPage from './pages/DashboardLabPage'
import DashboardConfigurePage from './pages/DashboardConfigurePage'
import GuidePage from './pages/GuidePage'
@@ -271,7 +270,6 @@ function AppShell() {
}/>
}/>
- } />
} />
diff --git a/frontend/src/components/pilot/PilotActivitySection.jsx b/frontend/src/components/dashboard-widgets-legacy/ActivityOverviewWidget.jsx
similarity index 94%
rename from frontend/src/components/pilot/PilotActivitySection.jsx
rename to frontend/src/components/dashboard-widgets-legacy/ActivityOverviewWidget.jsx
index f4e23a6..a8f912a 100644
--- a/frontend/src/components/pilot/PilotActivitySection.jsx
+++ b/frontend/src/components/dashboard-widgets-legacy/ActivityOverviewWidget.jsx
@@ -8,9 +8,9 @@ import {
BODY_CHART_DAYS_DEFAULT,
normalizeBodyChartDays,
} from '../../widgetSystem/bodyChartDays'
-import PilotRuleCard from './PilotRuleCard'
+import DashboardRuleCard from './DashboardRuleCard'
-export default function PilotActivitySection({ refreshTick = 0, chartDays = BODY_CHART_DAYS_DEFAULT }) {
+export default function ActivityOverviewWidget({ refreshTick = 0, chartDays = BODY_CHART_DAYS_DEFAULT }) {
const periodDays = normalizeBodyChartDays(chartDays)
const { activeProfile } = useProfile()
const globalQualityLevel = activeProfile?.quality_filter_level
@@ -124,7 +124,7 @@ export default function PilotActivitySection({ refreshTick = 0, chartDays = BODY
) : (
- actRules.map((item, i) => )
+ actRules.map((item, i) => )
)}
diff --git a/frontend/src/components/pilot/PilotBodySection.jsx b/frontend/src/components/dashboard-widgets-legacy/BodyOverviewWidget.jsx
similarity index 96%
rename from frontend/src/components/pilot/PilotBodySection.jsx
rename to frontend/src/components/dashboard-widgets-legacy/BodyOverviewWidget.jsx
index 18a29f6..3ee41c0 100644
--- a/frontend/src/components/pilot/PilotBodySection.jsx
+++ b/frontend/src/components/dashboard-widgets-legacy/BodyOverviewWidget.jsx
@@ -15,14 +15,14 @@ import dayjs from 'dayjs'
import { api } from '../../utils/api'
import { useProfile } from '../../context/ProfileContext'
import { getInterpretation } from '../../utils/interpret'
-import { rollingAvg, fmtDate } from '../../pilot/pilotChartUtils'
+import { rollingAvg, fmtDate } from '../../widgetSystem/dashboardChartUtils'
import {
BODY_CHART_DAYS_DEFAULT,
normalizeBodyChartDays,
} from '../../widgetSystem/bodyChartDays'
-import PilotRuleCard from './PilotRuleCard'
+import DashboardRuleCard from './DashboardRuleCard'
-export default function PilotBodySection({ refreshTick = 0, chartDays = BODY_CHART_DAYS_DEFAULT }) {
+export default function BodyOverviewWidget({ refreshTick = 0, chartDays = BODY_CHART_DAYS_DEFAULT }) {
const windowDays = normalizeBodyChartDays(chartDays)
const { activeProfile } = useProfile()
const [weights, setWeights] = useState([])
@@ -221,7 +221,7 @@ export default function PilotBodySection({ refreshTick = 0, chartDays = BODY_CHA
Körperfett, Magermasse (FFMI), BMI – gleiche Logik wie auf der Verlauf-Seite (Körper).
{rules.map((item, i) => (
-
+
))}
)}
diff --git a/frontend/src/components/pilot/PilotRuleCard.jsx b/frontend/src/components/dashboard-widgets-legacy/DashboardRuleCard.jsx
similarity index 97%
rename from frontend/src/components/pilot/PilotRuleCard.jsx
rename to frontend/src/components/dashboard-widgets-legacy/DashboardRuleCard.jsx
index 55bcc6f..c857148 100644
--- a/frontend/src/components/pilot/PilotRuleCard.jsx
+++ b/frontend/src/components/dashboard-widgets-legacy/DashboardRuleCard.jsx
@@ -2,7 +2,7 @@ import { useState } from 'react'
import { ChevronDown, ChevronUp } from 'lucide-react'
import { getStatusColor, getStatusBg } from '../../utils/interpret'
-export default function PilotRuleCard({ item }) {
+export default function DashboardRuleCard({ item }) {
const [open, setOpen] = useState(false)
const color = getStatusColor(item.status)
return (
diff --git a/frontend/src/components/pilot/PilotKpiBoard.jsx b/frontend/src/components/dashboard-widgets-legacy/KpiBoardWidget.jsx
similarity index 99%
rename from frontend/src/components/pilot/PilotKpiBoard.jsx
rename to frontend/src/components/dashboard-widgets-legacy/KpiBoardWidget.jsx
index b98e60c..0f4bd00 100644
--- a/frontend/src/components/pilot/PilotKpiBoard.jsx
+++ b/frontend/src/components/dashboard-widgets-legacy/KpiBoardWidget.jsx
@@ -38,7 +38,7 @@ function buildAutoTileIds(refTiles, hasBf, hasKcal) {
* @param {{ refreshTick?: number, kpiConfig?: Record }} props
* kpiConfig.tiles: geordnete Kachel-ids; fehlend = automatische Belegung (wie bisher).
*/
-export default function PilotKpiBoard({ refreshTick = 0, kpiConfig }) {
+export default function KpiBoardWidget({ refreshTick = 0, kpiConfig }) {
const manualOrder = useMemo(() => kpiTileOrderFromConfig(kpiConfig), [kpiConfig])
const { activeProfile } = useProfile()
diff --git a/frontend/src/components/pilot/PilotQuickCapture.jsx b/frontend/src/components/dashboard-widgets-legacy/QuickCaptureWidget.jsx
similarity index 97%
rename from frontend/src/components/pilot/PilotQuickCapture.jsx
rename to frontend/src/components/dashboard-widgets-legacy/QuickCaptureWidget.jsx
index 2854bee..55c7899 100644
--- a/frontend/src/components/pilot/PilotQuickCapture.jsx
+++ b/frontend/src/components/dashboard-widgets-legacy/QuickCaptureWidget.jsx
@@ -9,7 +9,7 @@ import { api } from '../../utils/api'
* @param {{ onSaved?: () => void, captureConfig?: Record }} props
* captureConfig: show_weight, show_resting_hr, show_hrv, show_vo2_max (false = ausblenden; fehlend = true)
*/
-export default function PilotQuickCapture({ onSaved, captureConfig }) {
+export default function QuickCaptureWidget({ onSaved, captureConfig }) {
const cfgRaw = captureConfig && typeof captureConfig === 'object' ? captureConfig : {}
const showWeight = cfgRaw.show_weight !== false
const showRestingHr = cfgRaw.show_resting_hr !== false
@@ -200,7 +200,7 @@ export default function PilotQuickCapture({ onSaved, captureConfig }) {
{showRestingHr && (
@@ -208,7 +208,7 @@ export default function PilotQuickCapture({ onSaved, captureConfig }) {
(bpm)
@@ -229,7 +229,7 @@ export default function PilotQuickCapture({ onSaved, captureConfig }) {
(ms)
VO₂max
@@ -12,7 +12,7 @@ export default function PilotWelcome() {
Hallo, {activeProfile?.name || 'Nutzer'} 👋
- {dayjs().format('dddd, DD. MMMM YYYY')} · Pilot-Übersicht
+ {dayjs().format('dddd, DD. MMMM YYYY')} · Übersicht
)
diff --git a/frontend/src/pages/Dashboard.jsx b/frontend/src/pages/Dashboard.jsx
index c8d9d2d..3a55779 100644
--- a/frontend/src/pages/Dashboard.jsx
+++ b/frontend/src/pages/Dashboard.jsx
@@ -5,7 +5,7 @@ import { api } from '../utils/api'
import { useProfile } from '../context/ProfileContext'
import TrialBanner from '../components/TrialBanner'
import EmailVerificationBanner from '../components/EmailVerificationBanner'
-import { ensurePilotLabWidgetsRegistered } from '../widgetSystem/registerPilotLabWidgets'
+import { ensureDashboardWidgetsRegistered } from '../widgetSystem/registerDashboardWidgets'
import { WidgetRenderer } from '../widgetSystem/dashboardWidgetRegistry'
function catalogMetaById(catalog) {
@@ -27,7 +27,7 @@ export default function Dashboard() {
const requestRefresh = () => setRefreshTick((t) => t + 1)
useEffect(() => {
- ensurePilotLabWidgetsRegistered()
+ ensureDashboardWidgetsRegistered()
}, [])
useEffect(() => {
diff --git a/frontend/src/pages/DashboardConfigurePage.jsx b/frontend/src/pages/DashboardConfigurePage.jsx
index d8b5c55..51d2308 100644
--- a/frontend/src/pages/DashboardConfigurePage.jsx
+++ b/frontend/src/pages/DashboardConfigurePage.jsx
@@ -2,7 +2,7 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react'
import { Link } from 'react-router-dom'
import { ChevronDown, ChevronUp, GripVertical, LayoutDashboard, Plus, Search, X } from 'lucide-react'
import { api, formatFastApiDetail } from '../utils/api'
-import { ensurePilotLabWidgetsRegistered } from '../widgetSystem/registerPilotLabWidgets'
+import { ensureDashboardWidgetsRegistered } from '../widgetSystem/registerDashboardWidgets'
import {
BODY_CHART_DAYS_DEFAULT,
BODY_CHART_DAYS_MAX,
@@ -46,7 +46,7 @@ function catalogMetaById(catalog) {
* @param {{ adminMode?: boolean }} [props]
*/
export default function DashboardConfigurePage({ adminMode = false } = {}) {
- ensurePilotLabWidgetsRegistered()
+ ensureDashboardWidgetsRegistered()
const [bundle, setBundle] = useState(null)
const [adminFromDatabase, setAdminFromDatabase] = useState(null)
diff --git a/frontend/src/pages/DashboardLabPage.jsx b/frontend/src/pages/DashboardLabPage.jsx
index 736adc1..93bf4e0 100644
--- a/frontend/src/pages/DashboardLabPage.jsx
+++ b/frontend/src/pages/DashboardLabPage.jsx
@@ -3,7 +3,7 @@ import { ChevronDown, ChevronUp, LayoutGrid } from 'lucide-react'
import { Link } from 'react-router-dom'
import { api, formatFastApiDetail } from '../utils/api'
import { WidgetRenderer } from '../widgetSystem/dashboardWidgetRegistry'
-import { ensurePilotLabWidgetsRegistered } from '../widgetSystem/registerPilotLabWidgets'
+import { ensureDashboardWidgetsRegistered } from '../widgetSystem/registerDashboardWidgets'
import {
BODY_CHART_DAYS_DEFAULT,
BODY_CHART_DAYS_MAX,
@@ -38,7 +38,7 @@ function catalogMetaById(catalog) {
}
export default function DashboardLabPage() {
- ensurePilotLabWidgetsRegistered()
+ ensureDashboardWidgetsRegistered()
const [refreshTick, setRefreshTick] = useState(0)
const requestRefresh = () => setRefreshTick((t) => t + 1)
@@ -198,13 +198,11 @@ export default function DashboardLabPage() {
Widget-System: Katalog, Registry, Renderer; optional pro Widget config (z. B.{' '}
Körper / Aktivität : Zeitraum 7–90 Tage; KPI : Kacheln
- wählen & sortieren). Layout pro Profil in der DB —
- getrennt vom Produktiv-Dashboard.
- Vergleich:{' '}
-
- Pilot-Übersicht (festes Standard-Layout)
+ wählen & sortieren). Layout pro Profil in der DB — dieselben Widgets wie auf der{' '}
+
+ Produkt-Übersicht
- .
+ , hier mit Editor und API-Fokus.
diff --git a/frontend/src/pages/PilotVizPage.jsx b/frontend/src/pages/PilotVizPage.jsx
deleted file mode 100644
index a45351b..0000000
--- a/frontend/src/pages/PilotVizPage.jsx
+++ /dev/null
@@ -1,45 +0,0 @@
-import { useState } from 'react'
-import { FlaskConical } from 'lucide-react'
-import { Link } from 'react-router-dom'
-import { WidgetRenderer } from '../widgetSystem/dashboardWidgetRegistry'
-import { ensurePilotLabWidgetsRegistered } from '../widgetSystem/registerPilotLabWidgets'
-import { DEFAULT_LAB_LAYOUT } from '../widgetSystem/defaultLabLayout'
-
-/**
- * Pilot-Übersicht nach Product-Spec (festes Standard-Layout).
- * Nutzt dasselbe Widget-Rendering wie /app/dashboard-lab.
- */
-export default function PilotVizPage() {
- ensurePilotLabWidgetsRegistered()
-
- const [refreshTick, setRefreshTick] = useState(0)
- const requestRefresh = () => setRefreshTick((t) => t + 1)
-
- return (
-
-
-
- ← Einstellungen
-
-
-
- Pilot: Übersicht
-
-
- Konfigurierbare Ziel-Übersicht (Test). Produktives Dashboard und Verlauf unverändert. Nach Speichern von
- Gewicht oder Vitalwerten werden KPIs und Körperbereich neu geladen.
-
-
-
-
-
- )
-}
diff --git a/frontend/src/pages/SettingsPage.jsx b/frontend/src/pages/SettingsPage.jsx
index 32cf8c4..cfd1f33 100644
--- a/frontend/src/pages/SettingsPage.jsx
+++ b/frontend/src/pages/SettingsPage.jsx
@@ -463,37 +463,28 @@ export default function SettingsPage() {
style={{ borderStyle: 'dashed', borderColor: 'var(--border2)', background: 'var(--surface2)' }}
>
- Pilot: Visualisierungs-Module
+ Entwickler: Dashboard-Layout (API)
- Ziel-Übersicht-Pilot: Schnelleingabe, KPIs, Körper-Chart, Aktivität. Die reguläre Übersicht konfigurierst du
- unter Übersicht anpassen oben.
+ Experimentelles Layout-Lab mit Katalog und API (getrennt von der regulären Übersicht). Die produktive Kachelansicht
+ steuerst du über Übersicht anpassen oben.
-
-
- Pilot öffnen
-
-
-
- Dashboard-Lab (Layout API)
-
-
+
+
+ Dashboard-Lab öffnen
+
{/* Auth actions */}
diff --git a/frontend/src/pilot/pilotChartUtils.js b/frontend/src/widgetSystem/dashboardChartUtils.js
similarity index 100%
rename from frontend/src/pilot/pilotChartUtils.js
rename to frontend/src/widgetSystem/dashboardChartUtils.js
diff --git a/frontend/src/widgetSystem/defaultLabLayout.js b/frontend/src/widgetSystem/defaultLabLayout.js
deleted file mode 100644
index d778b08..0000000
--- a/frontend/src/widgetSystem/defaultLabLayout.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * Standard-Layout v1 (nur Pilot `/pilot/viz` ohne API).
- * API-Nutzer: default_layout aus Backend (alle Katalog-IDs; aktiv = DEFAULT_LAB_WIDGET_IDS).
- * Diese Datei: kompakte feste 5 Widgets für den Pilot – nicht automatisch alle P1-Widgets.
- */
-export const DEFAULT_LAB_LAYOUT = {
- version: 1,
- widgets: [
- { id: 'welcome', enabled: true },
- { id: 'quick_capture', enabled: true },
- { id: 'kpi_board', enabled: true },
- { id: 'body_overview', enabled: true },
- { id: 'activity_overview', enabled: true },
- ],
-}
diff --git a/frontend/src/widgetSystem/registerPilotLabWidgets.js b/frontend/src/widgetSystem/registerDashboardWidgets.js
similarity index 89%
rename from frontend/src/widgetSystem/registerPilotLabWidgets.js
rename to frontend/src/widgetSystem/registerDashboardWidgets.js
index 7c7260c..68d5204 100644
--- a/frontend/src/widgetSystem/registerPilotLabWidgets.js
+++ b/frontend/src/widgetSystem/registerDashboardWidgets.js
@@ -1,11 +1,11 @@
/**
- * Pilot/Lab-Widgets registrieren. IDs müssen zu backend/widget_catalog.WIDGET_CATALOG passen.
+ * Dashboard-Widget-Registry: Katalog-IDs aus backend/widget_catalog.WIDGET_CATALOG → React-Komponenten.
*/
-import PilotWelcome from '../components/pilot/PilotWelcome'
-import PilotQuickCapture from '../components/pilot/PilotQuickCapture'
-import PilotKpiBoard from '../components/pilot/PilotKpiBoard'
-import PilotBodySection from '../components/pilot/PilotBodySection'
-import PilotActivitySection from '../components/pilot/PilotActivitySection'
+import WelcomeWidget from '../components/dashboard-widgets-legacy/WelcomeWidget'
+import QuickCaptureWidget from '../components/dashboard-widgets-legacy/QuickCaptureWidget'
+import KpiBoardWidget from '../components/dashboard-widgets-legacy/KpiBoardWidget'
+import BodyOverviewWidget from '../components/dashboard-widgets-legacy/BodyOverviewWidget'
+import ActivityOverviewWidget from '../components/dashboard-widgets-legacy/ActivityOverviewWidget'
import DashboardGreetingWidget from '../components/dashboard-widgets/DashboardGreetingWidget'
import QuickWeightTodayWidget from '../components/dashboard-widgets/QuickWeightTodayWidget'
import BodyStatStripWidget from '../components/dashboard-widgets/BodyStatStripWidget'
@@ -34,18 +34,18 @@ import { registerDashboardWidget } from './dashboardWidgetRegistry'
let _registered = false
-export function ensurePilotLabWidgetsRegistered() {
+export function ensureDashboardWidgetsRegistered() {
if (_registered) return
_registered = true
registerDashboardWidget({
id: 'welcome',
- Component: PilotWelcome,
+ Component: WelcomeWidget,
mapProps: () => ({}),
})
registerDashboardWidget({
id: 'quick_capture',
- Component: PilotQuickCapture,
+ Component: QuickCaptureWidget,
mapProps: (ctx) => ({
onSaved: ctx.requestRefresh,
captureConfig: ctx.layoutEntry?.config || {},
@@ -53,7 +53,7 @@ export function ensurePilotLabWidgetsRegistered() {
})
registerDashboardWidget({
id: 'kpi_board',
- Component: PilotKpiBoard,
+ Component: KpiBoardWidget,
mapProps: (ctx) => ({
refreshTick: ctx.refreshTick,
kpiConfig: ctx.layoutEntry?.config || {},
@@ -61,7 +61,7 @@ export function ensurePilotLabWidgetsRegistered() {
})
registerDashboardWidget({
id: 'body_overview',
- Component: PilotBodySection,
+ Component: BodyOverviewWidget,
mapProps: (ctx) => ({
refreshTick: ctx.refreshTick,
chartDays: normalizeBodyChartDays(ctx.layoutEntry?.config?.chart_days),
@@ -77,7 +77,7 @@ export function ensurePilotLabWidgetsRegistered() {
})
registerDashboardWidget({
id: 'activity_overview',
- Component: PilotActivitySection,
+ Component: ActivityOverviewWidget,
mapProps: (ctx) => ({
refreshTick: ctx.refreshTick,
chartDays: normalizeBodyChartDays(ctx.layoutEntry?.config?.chart_days),
@@ -193,6 +193,6 @@ export function ensurePilotLabWidgetsRegistered() {
}
/** @internal Nur für Tests */
-export function __resetPilotLabRegistrationForTests() {
+export function __resetDashboardWidgetRegistrationForTests() {
_registered = false
}