/* ============================================================
METABOLE — Sections B: Feature explorer, grid, estimator
============================================================ */
function SectionHead({ eyebrow, title, lead, align = "left", maxw = 640 }) {
return (
{eyebrow &&
{eyebrow} }
{title}
{lead &&
{lead}
}
);
}
function Placeholder({ label, h = 120, r = 14 }) {
return (
{label}
);
}
/* ---- Tab preview panels ---- */
function PreviewWeight({ active }) {
const stats = [["Current", "193.6", "lb"], ["Total change", "−20.4", "lb"], ["This week", "−1.4", "lb"], ["To goal", "5.6", "lb"]];
return (
{stats.map(([k, v, u], i) => (
))}
);
}
function PreviewProgress({ active }) {
return (
Side-by-side compare any two check-ins.
);
}
function PreviewSleep({ active }) {
return (
AVG 7.2H}>This week
16 WK}>Sleep heatmap
);
}
function PreviewSideEffects({ active }) {
const tl = [
{ d: "Mon", n: 2, f: 1 }, { d: "Tue", n: 1, f: 1 }, { d: "Wed", n: 3, f: 2 },
{ d: "Thu", n: 1, f: 0 }, { d: "Fri", n: 0, f: 1 }, { d: "Sat", n: 1, f: 0 }, { d: "Sun", n: 0, f: 0 },
];
return (
Symptom timeline
Nausea
Fatigue
);
}
function PreviewInsights({ active }) {
return (
);
}
function PreviewAI({ active }) {
const corr = [
["Hydration before noon", "↓ Nausea", "var(--green)", 0.74],
["Protein ≥ 100g", "↑ Energy next day", "var(--green)", 0.61],
["Sleep < 6h", "↑ Reported fatigue", "var(--clay)", 0.68],
];
return (
Informational}>Correlations found
{corr.map(([a, b, c, str], i) => (
))}
);
}
const FEATURES = [
{ id: "weight", icon: "trend", name: "Weight Log", blurb: "Track weight over time with trend charts and goal tracking — built for GLP-1 protocols.", render: PreviewWeight },
{ id: "progress", icon: "camera", name: "Progress Tracking", blurb: "Log progress photos and track energy, sleep, and mood with daily check-ins.", render: PreviewProgress },
{ id: "sleep", icon: "moon", name: "Sleep Tracker", blurb: "Log sleep and wake times, track quality, and view weekly charts and monthly heatmaps.", render: PreviewSleep },
{ id: "side", icon: "wave", name: "Side-effect journal", blurb: "Record nausea, fatigue, constipation and more — severity over time, at a glance.", render: PreviewSideEffects },
{ id: "dash", icon: "grid", name: "Insights Dashboard", blurb: "All your tracking in one place — weight, side effects, hydration, nutrition, photos, check-ins.", render: PreviewInsights },
{ id: "ai", icon: "spark", name: "AI Insights", blurb: "Personalized correlations across your data, surfacing patterns. For informational reference only.", render: PreviewAI },
];
function FeatureExplorer() {
const [active, setActive] = useState("weight");
const [secRef, inView] = useInView({ threshold: 0.1 });
const cur = FEATURES.find(f => f.id === active);
const Preview = cur.render;
return (
Brutally functional. Quietly beautiful.>} lead="Twelve tools that respect your time and your data. Tap through a few of them." />
{FEATURES.map(f => (
setActive(f.id)}>
{f.name}
{f.blurb}
))}
);
}
/* ---- Secondary feature grid ---- */
const GRID = [
{ icon: "chat", name: "Pep Bot", blurb: "Ask general educational questions about peptides and GLP-1s. Not medical advice." },
{ icon: "book", name: "Research Library", blurb: "Browse 75+ peptide and GLP-1 compound profiles with summaries and references." },
{ icon: "medal", name: "Achievements", blurb: "Earn badges for consistency — streaks, hydration, nutrition, and check-ins." },
{ icon: "swatch", name: "Themes", blurb: "Customize the look of your app with multiple calm color themes." },
{ icon: "bell", name: "Reminders", blurb: "Gentle dose, refill, and check-in reminders — on your schedule, never naggy." },
{ icon: "droplet", name: "Apple Health sync", blurb: "Pull weight, sleep, and activity automatically. Two-way, private, optional." },
];
function FeatureGrid() {
return (
{GRID.map((g, i) => (
{g.name}
{g.blurb}
))}
);
}
/* ---- Compound estimator section ---- */
function EstimatorSection() {
const [ref, inView] = useInView({ threshold: 0.15 });
return (
Always know where you are in the window.>} lead="View estimated half-life and peak timing for your peptide or GLP-1 — so a missed day or a dose change never leaves you guessing." />
Estimates are educational and based on population averages — not a measurement of your blood levels or a dosing recommendation.
);
}
Object.assign(window, { SectionHead, Placeholder, FeatureExplorer, FeatureGrid, EstimatorSection });