feat(insights): surface the Oura body-temperature deviation on skin temperature

Oura's overnight body-temperature deviation — a signed delta from the personal
baseline that tracks illness and cycle onset — was stored but never shown. Add
it as a data-gated tile beneath the chart on the metabolic skin-temperature
page, its most coherent home. It mounts only when the Oura series has readings,
so a non-Oura account renders the page unchanged.
This commit is contained in:
Marc-André Bombeck committed 2026-06-15 00:39:26 +02:00
1 parent 866f3dc0e2
commit 0be1a6b8a7
1 file changed
+22 -1
+22 -1
View File
@@ -1,8 +1,10 @@
"use client";
import { Thermometer } from "lucide-react";
import { Thermometer, ThermometerSnowflake } from "lucide-react";
import { useTranslations } from "@/lib/i18n/context";
import { HealthKitMetricPage } from "@/components/insights/healthkit-metric-page";
import { ConnectedDeviceScoreTile } from "@/components/insights/device-score-tile";
/**
* v1.7.0 — `/insights/skin-temperature`.
@@ -11,8 +13,14 @@ import { HealthKitMetricPage } from "@/components/insights/healthkit-metric-page
* the chart daily-aggregates through the rollup read path. Empty-state
* carries no manual-entry CTA — the series arrives from Apple Health or
* Withings sync.
*
* v1.17.1 — the Oura overnight body-temperature DEVIATION (a signed delta from
* the personal baseline, an illness / cycle signal) joins this metabolic page
* as a gated tile beneath the chart. It only mounts when the Oura series has
* data, so a non-Oura account renders the page byte-identically.
*/
export default function InsightsHauttemperaturPage() {
const { t } = useTranslations();
return (
<HealthKitMetricPage
measurementType="SKIN_TEMPERATURE"
@@ -27,6 +35,19 @@ export default function InsightsHauttemperaturPage() {
emptyStateIcon={<Thermometer className="size-6" />}
emptyStateCtaType={null}
coachPrefill="I haven't logged any skin temperature yet — what does this metric tell me about my health, and how do I improve it?"
afterChart={
<ConnectedDeviceScoreTile
type="BODY_TEMPERATURE_DEVIATION"
title={t("measurements.typeBodyTemperatureDeviation")}
icon={ThermometerSnowflake}
color="#8be9fd"
unit="°C"
fractionDigits={2}
sectionTitle={t("insights.bodyTempDeviation.title")}
sectionIcon={ThermometerSnowflake}
sectionSubtitle={t("insights.bodyTempDeviation.subtitle")}
/>
}
/>
);
}