import { useEffect, useState } from 'react' import { api } from '../lib/api.js' export default function Biometrics() { const [rows, setRows] = useState([]) const [error, setError] = useState(null) const [form, setForm] = useState({ date: new Date().toISOString().slice(0, 10), weight: '', height: '', age: '', muscleFatRatio: '' }) const load = () => api.get('/biometrics').then(setRows).catch(e => setError(e.message)) useEffect(() => { load() }, []) const set = (k) => (e) => setForm({ ...form, [k]: e.target.value }) const save = async () => { setError(null) try { await api.post('/biometrics', { date: form.date, weight: form.weight ? Number(form.weight) : null, height: form.height ? Number(form.height) : null, age: form.age ? Number(form.age) : null, muscleFatRatio: form.muscleFatRatio ? Number(form.muscleFatRatio) : null }) load() } catch (e) { setError(e.message) } } return (
{error &&
{error}
}

Record a measurement

One per day. Saving the same date again updates that entry.

Progress

{rows.map(r => ( ))}
dateweightchangeBMImuscle/fat
{r.date} {r.weight} {r.changeSincePrevious ?? '—'} {r.bmi ?? '—'} {r.muscleFatRatio ?? '—'}
{rows.length === 0 &&

No measurements yet.

}
) }