diff --git a/src/app/insights/blood-pressure/page.tsx b/src/app/insights/blood-pressure/page.tsx index cd3e71194..c4c0bf9a8 100644 --- a/src/app/insights/blood-pressure/page.tsx +++ b/src/app/insights/blood-pressure/page.tsx @@ -11,7 +11,9 @@ import { useInsightsLayoutPrefs } from "@/hooks/use-insights-layout-prefs"; import { Button } from "@/components/ui/button"; import { HealthChartDynamic } from "@/components/charts/health-chart-dynamic"; import { InsightStatusCard } from "@/components/insights/insight-status-card"; +import { MeasurementDiversityNudge } from "@/components/insights/measurement-diversity-nudge"; import { MetricEmptyState } from "@/components/insights/metric-empty-state"; +import { MetricRangeControls } from "@/components/insights/metric-range-controls"; import { MetricTargetSummary } from "@/components/insights/metric-target-summary"; import { SubPageShell } from "@/components/insights/sub-page-shell"; import { getBpTargets } from "@/lib/analytics/bp-targets"; @@ -101,7 +103,22 @@ export default function InsightsBlutdruckPage() { description={t("insights.subPage.blutdruckDescription")} explainerMetric="bloodPressure" coachLaunch + diversityNudge={ + + } + showAllValuesType="BLOOD_PRESSURE_SYS" + /* No `statStrip`: `` is single-series, but blood + pressure is two series (systolic + diastolic). A single min / max / + median / mean strip would silently drop the diastolic half, so the + page omits it rather than mislead. */ > + {/* The period-over-period delta keys on the systolic series — the + canonical BP figure the targets + status surfaces lead with. */} + + {/* No `statStrip` / `diversityNudge` / `showAllValuesType`: BMI is a + derived metric (computed from the WEIGHT series + the user's height), + so it has no first-class summary or raw-reading rows of its own. A + stat strip would have nothing to read, and a diversity nudge / "show + all values" entry would point at WEIGHT and duplicate the weight + page's controls. + BMI is derived from WEIGHT, so the period-over-period delta keys on + the underlying weight series the chart reuses. */} + + {/* No `` here: medication compliance is + event-driven, not a MeasurementType series, so the period-over-period + range read has nothing to aggregate. */}
= 2 ? "grid gap-4 sm:grid-cols-2" : "grid gap-4" diff --git a/src/app/insights/mood/page.tsx b/src/app/insights/mood/page.tsx index a21ea684c..d53a91c2b 100644 --- a/src/app/insights/mood/page.tsx +++ b/src/app/insights/mood/page.tsx @@ -100,6 +100,10 @@ export default function InsightsStimmungPage() { explainerMetric="mood" coachLaunch > + {/* No `` here: mood is event-driven, not a + MeasurementType series, so the period-over-period range read + (`/api/analytics/range`, keyed on a MeasurementType enum) has + nothing to aggregate. */} + + } + showAllValuesType="SLEEP_DURATION" + /* No `statStrip`: `` already leads with the average + nightly total + per-stage breakdown, so a duration-in-minutes + min / max / median / mean strip would duplicate it and read in an + awkward unit. */ > + + diff --git a/src/app/insights/weight/page.tsx b/src/app/insights/weight/page.tsx index c2d431799..de2a9b6a3 100644 --- a/src/app/insights/weight/page.tsx +++ b/src/app/insights/weight/page.tsx @@ -14,6 +14,7 @@ import { InsightStatusCard } from "@/components/insights/insight-status-card"; import { MetricEmptyState } from "@/components/insights/metric-empty-state"; import { MetricStatStrip } from "@/components/insights/metric-stat-strip"; import { MeasurementDiversityNudge } from "@/components/insights/measurement-diversity-nudge"; +import { MetricRangeControls } from "@/components/insights/metric-range-controls"; import { MetricTargetSummary } from "@/components/insights/metric-target-summary"; import { SubPageShell } from "@/components/insights/sub-page-shell"; import { buildWeightBandsFromHeight } from "@/lib/analytics/value-bands"; @@ -88,6 +89,7 @@ export default function InsightsGewichtPage() { coachLaunch showAllValuesType="WEIGHT" > + + {/* No `` here: workouts are session records, not a + MeasurementType series, so the period-over-period range read has + nothing to aggregate. */} {isLoading ? (