// Moderis App — Dashboard (Kalm), aangesloten op /api/*.
// Fase 3 van de pool-omschakeling: geen AI-momentkaarten meer. Het dashboard
// is nu je dag-overzicht (energie, macro's, activiteit, wat je at) met het
// dagkompas en één grote ingang naar het kies-scherm. Kiezen gebeurt dáár —
// uit de maaltijdenpool, zonder vaste eetmomenten.

function EnergyPanel({ totals, loading }) {
  // De balk = wat je vandaag moet eten: je basisdoel + (gearceerd, aan het
  // eind) het verlengstuk door je training. Bewegen vult de balk dus niet —
  // het maakt hem langer. De vulling is puur wat je gegeten hebt.
  const { doel, gegeten, rest, verbrand } = totals;
  const basisDoel = totals.basisDoel || doel;
  const sportBonus = totals.sportBonus || 0;
  const overschot = totals.overschot || 0;
  const onderhoud = totals.onderhoud || basisDoel;
  const eatenPct = Math.min(100, (gegeten / doel) * 100);
  const basisPct = Math.min(100, (basisDoel / doel) * 100);
  const onderhoudPct = Math.min(100, (onderhoud / doel) * 100);
  return (
    <div style={{ background: 'var(--m-card)', border: '1px solid var(--m-line)', borderRadius: 22,
      padding: '20px 20px 18px', boxShadow: 'var(--m-shadow)', marginBottom: 14 }}>
      <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'flex-end', marginBottom: 16 }}>
        <div>
          <span className="m-eyebrow">Resterend vandaag</span>
          {loading ? (
            <div style={{ display: 'flex', alignItems: 'baseline', gap: 8, marginTop: 6 }}>
              <span className="m-skel m-skel-line xl" style={{ width: 96 }}></span>
              <span style={{ fontSize: 14, color: 'var(--ink-3)' }}>kcal</span>
            </div>
          ) : (
            <div className="m-reveal" style={{ display: 'flex', alignItems: 'baseline', gap: 6, marginTop: 4 }}>
              <span className="num" style={{ fontSize: 38, fontWeight: 500, lineHeight: 1, letterSpacing: '-0.02em' }}>{fmt(rest)}</span>
              <span style={{ fontSize: 14, color: 'var(--ink-3)' }}>kcal</span>
            </div>
          )}
        </div>
        {loading ? (
          <div style={{ display: 'flex', flexDirection: 'column', alignItems: 'flex-end', gap: 6 }}>
            <span className="m-skel m-skel-line sm" style={{ width: 70 }}></span>
            <span className="m-skel m-skel-line sm" style={{ width: 86 }}></span>
          </div>
        ) : (
          <div className="m-reveal" style={{ textAlign: 'right', fontSize: 12, color: 'var(--ink-2)', lineHeight: 1.7 }}>
            <div><span className="num" style={{ fontWeight: 500 }}>{fmt(onderhoud)}</span> onderhoud</div>
            {overschot !== 0 && (
              <div style={{ color: overschot > 0 ? 'var(--forest-600)' : 'var(--macro-fat)' }}>
                {overschot > 0 ? '+' : '−'}<span className="num" style={{ fontWeight: 500 }}>{fmt(Math.abs(overschot))}</span> {overschot > 0 ? 'groei' : 'tekort'}
              </div>
            )}
            {sportBonus > 0 && (
              <div style={{ color: 'var(--forest-600)' }}>+<span className="num" style={{ fontWeight: 500 }}>{fmt(sportBonus)}</span> training</div>
            )}
            {verbrand > 0 && (
              <div style={{ fontSize: 10.5, color: 'var(--ink-3)' }}>meting: <span className="num">{fmt(verbrand)}</span> kcal actief</div>
            )}
          </div>
        )}
      </div>
      {loading ? (
        <div className="m-skel" style={{ height: 12, borderRadius: 999, border: 'none' }}></div>
      ) : (
        <div style={{ position: 'relative', height: 12, borderRadius: 999, background: 'var(--m-card-3)', overflow: 'hidden' }}>
          {/* Zone 2: bewust groei-overschot (egaal licht groen) */}
          {overschot > 0 && (
            <div style={{ position: 'absolute', top: 0, bottom: 0, left: `${onderhoudPct}%`, width: `${basisPct - onderhoudPct}%`,
              background: 'rgba(139,194,74,0.22)' }}></div>
          )}
          {/* Zone 3: verlengstuk door training (gearceerd) */}
          {sportBonus > 0 && (
            <div style={{ position: 'absolute', top: 0, bottom: 0, left: `${basisPct}%`, right: 0,
              background: 'repeating-linear-gradient(135deg, rgba(139,194,74,0.35) 0 5px, rgba(139,194,74,0.15) 5px 10px)' }}></div>
          )}
          {/* Vulling: wat je gegeten hebt */}
          <div style={{ position: 'absolute', top: 0, bottom: 0, left: 0, width: `${eatenPct}%`, background: 'var(--forest-700)', borderRadius: 999, transition: 'width .4s ease' }}></div>
          {/* Grenzen: onderhoud ↔ groei ↔ training */}
          {overschot > 0 && (
            <div style={{ position: 'absolute', top: 0, bottom: 0, left: `${onderhoudPct}%`, width: 2, background: 'var(--m-card)', opacity: 0.9 }}></div>
          )}
          {sportBonus > 0 && (
            <div style={{ position: 'absolute', top: 0, bottom: 0, left: `${basisPct}%`, width: 2, background: 'var(--m-card)', opacity: 0.9 }}></div>
          )}
        </div>
      )}
      <div style={{ display: 'flex', gap: 16, marginTop: 12 }}>
        {loading ? (
          <React.Fragment>
            <span className="m-skel m-skel-line sm" style={{ width: 56 }}></span>
            <span className="m-skel m-skel-line sm" style={{ width: 56 }}></span>
            <span className="m-skel m-skel-line sm" style={{ width: 56 }}></span>
          </React.Fragment>
        ) : (
          <React.Fragment>
            <Legend color="var(--forest-700)" label="Gegeten" value={fmt(gegeten)} />
            {overschot > 0 && <Legend color="rgba(139,194,74,0.45)" label="Groei" value={'+' + fmt(overschot)} />}
            {sportBonus > 0 && <Legend color="var(--leaf)" label="Training" value={'+' + fmt(sportBonus)} />}
            <Legend color="var(--m-card-3)" label="Nog te eten" value={fmt(rest)} border />
          </React.Fragment>
        )}
      </div>
    </div>
  );
}

function Legend({ color, label, value, border }) {
  return (
    <div style={{ display: 'flex', alignItems: 'center', gap: 7 }}>
      <span style={{ width: 9, height: 9, borderRadius: 3, background: color,
        border: border ? '1px solid var(--m-line-2)' : 'none', flex: '0 0 auto' }}></span>
      <div style={{ lineHeight: 1.2 }}>
        <div className="num" style={{ fontSize: 12.5, fontWeight: 500 }}>{value}</div>
        <div style={{ fontSize: 10.5, color: 'var(--ink-3)' }}>{label}</div>
      </div>
    </div>
  );
}

function MacroBar({ label, have, goal, unit, color, loading }) {
  const pct = goal > 0 ? Math.min(100, Math.round((have / goal) * 100)) : 0;
  return (
    <div>
      <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'baseline', marginBottom: 6 }}>
        <span style={{ fontSize: 13, fontWeight: 500 }}>{label}</span>
        {loading ? (
          <span className="m-skel m-skel-line sm" style={{ width: 56 }}></span>
        ) : (
          <span className="num m-reveal" style={{ fontSize: 12, color: 'var(--ink-2)', whiteSpace: 'nowrap' }}>
            {Math.round(have)}<span style={{ color: 'var(--ink-3)' }}> / {goal}{unit}</span>
          </span>
        )}
      </div>
      {loading ? (
        <div className="m-skel" style={{ height: 6, borderRadius: 999, border: 'none' }}></div>
      ) : (
        <div className="m-track" style={{ height: 6 }}>
          <div className="m-fill" style={{ width: `${pct}%`, background: color, transition: 'width .4s ease' }}></div>
        </div>
      )}
    </div>
  );
}

function FitbitTile({ icon, value, unit, label, loading }) {
  return (
    <div style={{ flex: 1, padding: '13px 12px', background: 'var(--m-card)', borderRadius: 16, border: '1px solid var(--m-line)' }}>
      <MIcon name={icon} size={17} color={loading ? 'var(--ink-3)' : 'var(--forest-500)'} />
      {loading ? (
        <div className="m-skel m-skel-line lg" style={{ width: 54, marginTop: 9 }}></div>
      ) : (
        <div className="num m-reveal" style={{ fontSize: 18, fontWeight: 500, marginTop: 9, lineHeight: 1 }}>
          {value}<span style={{ fontSize: 11, color: 'var(--ink-3)', marginLeft: 2 }}>{unit}</span>
        </div>
      )}
      <div style={{ fontSize: 11, color: 'var(--ink-3)', marginTop: 3 }}>{label}</div>
    </div>
  );
}

// "Kun je dit nu maken?" — ✓ alles in huis, of wat je nog mist. Gedeeld met
// het kies-scherm, de pool-preview en de sheets in index.html. In de
// "Mee naar werk"-modus heet ontbrekend beleg "halen:" i.p.v. "mist:" —
// zelfde data, andere lading (boodschappenlijstje, geen blokkade).
function InHuisBadge({ m, size = 11, mistLabel = 'mist' }) {
  if (m.inHuis === true) {
    return (
      <span style={{ display: 'inline-flex', alignItems: 'center', gap: 4, fontSize: size, fontWeight: 600,
        color: 'var(--forest-700)', background: 'var(--forest-100)', border: '1px solid var(--forest-200)',
        borderRadius: 999, padding: '2px 8px', flex: '0 0 auto' }}>✓ alles in huis</span>
    );
  }
  if (Array.isArray(m.mist) && m.mist.length) {
    const kort = m.mist.slice(0, 2).join(', ') + (m.mist.length > 2 ? ` +${m.mist.length - 2}` : '');
    return (
      <span style={{ display: 'inline-flex', alignItems: 'center', gap: 4, fontSize: size, fontWeight: 600,
        color: '#8a5a2b', background: 'rgba(192,140,68,0.12)', border: '1px solid rgba(192,140,68,0.3)',
        borderRadius: 999, padding: '2px 8px', minWidth: 0, maxWidth: '100%', overflow: 'hidden',
        textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>{mistLabel}: {kort}</span>
    );
  }
  return null;
}

// Snel iets tussendoor toevoegen — typ wat je at (AI schat de macro's), of tik
// het camera-icoon om het van een foto te loggen (opent de log-sheet in fotomodus).
function QuickAdd({ onAdd, onFoto, busy }) {
  const { useState } = React;
  const [tekst, setTekst] = useState('');
  const submit = () => { if (!tekst.trim() || busy) return; onAdd(tekst.trim()); setTekst(''); };
  return (
    <div className="m-zoek" style={{ marginBottom: 16, paddingRight: 6 }}>
      <MIcon name="pencil" size={15} color="var(--ink-3)" />
      <input value={tekst} onChange={(e) => setTekst(e.target.value)} placeholder="Iets gegeten? bv. broodje kaas"
        onKeyDown={(e) => e.key === 'Enter' && submit()} />
      {onFoto && (
        <button className="tap" onClick={onFoto} title="Log vanaf een foto"
          style={{ width: 34, height: 34, flex: '0 0 auto', padding: 0, borderRadius: 10, border: '1px solid var(--m-line)',
            background: 'var(--m-card)', cursor: 'pointer', display: 'flex', alignItems: 'center', justifyContent: 'center' }}>
          <MIcon name="scan" size={16} color="var(--forest-600)" />
        </button>
      )}
      <button className="m-btn m-btn-primary tap" onClick={submit} disabled={busy || !tekst.trim()}
        style={{ fontSize: 12.5, padding: '8px 14px', flex: '0 0 auto', opacity: (busy || !tekst.trim()) ? 0.5 : 1,
          display: 'inline-flex', alignItems: 'center', gap: 6 }}>
        {busy ? <Spinner size={13} /> : null}{busy ? 'Bezig' : 'Log'}
      </button>
    </div>
  );
}

// Labels per maaltijdmoment (afgeleid van het tijdstip — puur voor statistiek).
const MOMENT_LABEL = {
  ontbijt: 'Ontbijt', lunch: 'Lunch', snack: 'Tussendoortje', snack2: 'Tussendoortje',
  avondeten: 'Avondeten', tussendoor: 'Tussendoortje', overig: 'Overig',
};

// Alles wat je vandaag at, chronologisch. Elke log is te openen (aanpassen,
// als recept bewaren) en te verwijderen — niets telt "onzichtbaar" mee.
function GegetenList({ items, loading, onRemove, onOpen }) {
  return (
    <div style={{ marginBottom: 18 }}>
      <span className="m-eyebrow">Vandaag gegeten</span>
      {loading ? (
        <div style={{ marginTop: 8 }}>
          {[0, 1].map((i) => (
            <div key={i} className="m-skel" style={{ height: 46, borderRadius: 13, marginBottom: 8, border: 'none' }}></div>
          ))}
        </div>
      ) : !(items || []).length ? (
        <div style={{ fontSize: 12.5, color: 'var(--ink-3)', padding: '10px 0 4px' }}>
          Nog niets gelogd vandaag.
        </div>
      ) : (
        <div style={{ marginTop: 6 }}>
          {items.map((l) => (
            <div key={l.id} style={{ display: 'flex', alignItems: 'center', gap: 10, padding: '9px 0', borderBottom: '1px solid var(--m-line)' }}>
              <MIcon name="apple" size={16} color="var(--forest-500)" />
              <div className="tap" onClick={() => onOpen && onOpen(l)} role="button"
                style={{ flex: 1, minWidth: 0, cursor: onOpen ? 'pointer' : 'default' }}>
                <div style={{ display: 'flex', alignItems: 'center', gap: 6 }}>
                  <div style={{ fontSize: 13.5, fontWeight: 600, minWidth: 0, overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>{l.naam}</div>
                  <span style={{ fontSize: 10.5, color: 'var(--forest-600)', background: 'var(--forest-100)',
                    borderRadius: 6, padding: '1px 6px', flex: '0 0 auto' }}>{MOMENT_LABEL[l.maaltijdmoment] || 'Overig'}</span>
                </div>
                <div className="num" style={{ fontSize: 11.5, color: 'var(--ink-3)' }}>
                  {l.gegeten_om ? 'om ' + String(l.gegeten_om).slice(0, 5) + ' · ' : ''}~{Math.round(l.kcal || 0)} kcal · E {Math.round(l.eiwitten || 0)} K {Math.round(l.koolhydraten || 0)} V {Math.round(l.vetten || 0)}
                </div>
              </div>
              <button className="tap" onClick={() => onRemove(l.id)} title="Verwijderen"
                style={{ width: 30, height: 30, flex: '0 0 auto', padding: 0, borderRadius: 9, border: '1px solid var(--m-line)',
                  background: 'var(--m-card)', cursor: 'pointer', display: 'flex', alignItems: 'center', justifyContent: 'center' }}>
                <MIcon name="close" size={13} color="var(--ink-3)" />
              </button>
            </div>
          ))}
        </div>
      )}
    </div>
  );
}

// Restje in huis dat op moet — prominent, want "het moet op".
function RestjeCard({ g, onEet }) {
  return (
    <div style={{ display: 'flex', alignItems: 'center', gap: 12, padding: '13px 14px', marginBottom: 10,
      borderRadius: 16, border: '1px solid var(--forest-200)', background: 'var(--forest-100)' }}>
      <div style={{ width: 40, height: 40, flex: '0 0 auto', borderRadius: 12, background: 'var(--m-card)',
        border: '1px solid var(--forest-200)', display: 'flex', alignItems: 'center', justifyContent: 'center' }}>
        <MIcon name="box" size={19} color="var(--forest-600)" />
      </div>
      <div style={{ flex: 1, minWidth: 0 }}>
        <div style={{ fontSize: 14, fontWeight: 700, lineHeight: 1.25 }}>{g.naam}</div>
        <div style={{ display: 'flex', gap: 6, alignItems: 'center', marginTop: 3, flexWrap: 'wrap' }}>
          <span className="m-badge m-label-fiber">{(+g.porties_over % 1 ? (+g.porties_over).toFixed(1) : +g.porties_over)} {Number(g.porties_over) === 1 ? 'portie' : 'porties'} over</span>
          <span className="num" style={{ fontSize: 11.5, color: 'var(--ink-2)' }}>{Math.round(g.kcal || 0)} kcal · E {Math.round(g.eiwitten || 0)} K {Math.round(g.koolhydraten || 0)} V {Math.round(g.vetten || 0)}</span>
        </div>
      </div>
      <button className="m-btn m-btn-primary tap" onClick={() => onEet(g)}
        style={{ fontSize: 13, padding: '9px 14px', flex: '0 0 auto' }}>
        <MIcon name="plus" size={15} sw={2.2} color="var(--on-forest)" /> Dit eet ik
      </button>
    </div>
  );
}

// Tijdsafhankelijke groet — geen "Goedemorgen" om 21:00.
function groetVanNu(naam) {
  const u = new Date().getHours();
  const g = u < 6 ? 'Goedenacht' : u < 12 ? 'Goedemorgen' : u < 18 ? 'Goedemiddag' : 'Goedenavond';
  return naam ? g + ', ' + naam : g;
}

function DashboardScreen({ totals, kompas, eiwitGap, eiwitFocus, koolGap, koolFocus, fitbitTiles, greetingName, loading, gegeten, quickBusy, restjes, poolSectie, onEetRestje, onOpenGegeten, onQuickAdd, onFotoLog, onRemoveGegeten, onLogMoment, onAvatar, onAlleRecepten }) {
  const tiles = fitbitTiles || { steps: 0, sleep: '–', hr: '–' };
  const greeting = groetVanNu(greetingName);
  const datum = new Date().toLocaleDateString('nl-NL', { weekday: 'long', day: 'numeric', month: 'long' });
  const restKcal = Math.max(0, Math.round(totals.rest || 0));
  return (
    // m-cascade: na het laden glijden de secties gestaffeld binnen.
    <div className={'screen screen-dashboard' + (loading ? '' : ' m-cascade')}>
      {/* Header */}
      <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', marginBottom: 22 }}>
        <div>
          <div style={{ fontSize: 12, color: 'var(--ink-3)' }}>{datum}</div>
          {loading && !greetingName ? (
            <div className="m-skel m-skel-line xl" style={{ width: 220, marginTop: 8 }}></div>
          ) : (
            <div className="m-reveal" style={{ fontFamily: 'var(--m-serif)', fontSize: 28, fontWeight: 500, letterSpacing: '-0.015em', lineHeight: 1.15, marginTop: 2, color: 'var(--forest-950)' }}>{greeting}</div>
          )}
        </div>
        <button type="button" className="tap" onClick={onAvatar} title="Profiel"
          style={{ width: 44, height: 44, borderRadius: 14, background: 'var(--forest-700)',
            display: 'flex', alignItems: 'center', justifyContent: 'center', flex: '0 0 auto',
            border: 'none', cursor: 'pointer', padding: 0 }}>
          <MIcon name="leaf" size={19} color="var(--leaf)" />
        </button>
      </div>

      <EnergyPanel totals={totals} loading={loading} />

      {/* Macros */}
      <div style={{ background: 'var(--m-card)', border: '1px solid var(--m-line)', borderRadius: 22, padding: '18px 20px',
        boxShadow: 'var(--m-shadow)', marginBottom: 14, display: 'flex', flexDirection: 'column', gap: 14 }}>
        <MacroBar label="Eiwitten"     have={totals.macros.protein.have} goal={totals.macros.protein.goal} unit="g" color="var(--macro-protein)" loading={loading} />
        <MacroBar label="Koolhydraten" have={totals.macros.carb.have}    goal={totals.macros.carb.goal}    unit="g" color="var(--macro-carb)"    loading={loading} />
        <MacroBar label="Vetten"       have={totals.macros.fat.have}     goal={totals.macros.fat.goal}     unit="g" color="var(--macro-fat)"     loading={loading} />
      </div>

      {/* Google-koppeling vervallen → herstel-CTA (belangrijk, dus blijft bovenaan) */}
      {tiles.revoked && (
        <div style={{
          background: 'rgba(192,106,68,0.10)',
          border: '1px solid rgba(192,106,68,0.30)',
          borderRadius: 18, padding: '13px 15px', marginBottom: 16,
          display: 'flex', alignItems: 'center', gap: 12,
        }}>
          <span style={{ width: 9, height: 9, borderRadius: 999, background: 'var(--macro-fat)',
            boxShadow: '0 0 0 4px rgba(192,106,68,0.14)', flex: '0 0 auto' }}></span>
          <div style={{ flex: 1, minWidth: 0, fontSize: 12.5, color: 'var(--forest-950)', lineHeight: 1.45 }}>
            <strong>Google Health-koppeling vervallen.</strong> Stappen en slaap komen niet binnen.
          </div>
          <button type="button" className="tap" onClick={onAvatar}
            style={{ fontSize: 12, fontWeight: 600, color: 'var(--forest-700)', background: 'var(--m-card)',
              border: '1px solid var(--m-line-2)', borderRadius: 999, padding: '6px 12px', cursor: 'pointer',
              whiteSpace: 'nowrap' }}>
            Herkoppel
          </button>
        </div>
      )}

      {/* Restjes — het moet op, dus bovenaan */}
      {(restjes || []).filter((g) => Number(g.porties_over) > 0).length > 0 && (
        <div style={{ marginBottom: 16 }}>
          <span className="m-eyebrow">Op te maken</span>
          <div style={{ marginTop: 8 }}>
            {(restjes || []).filter((g) => Number(g.porties_over) > 0).map((g) => (
              <RestjeCard key={g.id} g={g} onEet={onEetRestje} />
            ))}
          </div>
        </div>
      )}

      {/* De kern: kiezen uit de maaltijdenpool — met het dagkompas als coach
          direct onder de vraag (dáár neem je de beslissing) */}
      {poolSectie && (
        <div style={{ marginBottom: 4 }}>
          <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', gap: 10, marginBottom: 10 }}>
            <h2 style={{ margin: 0, fontFamily: 'var(--m-serif)', fontSize: 22, fontWeight: 500,
              letterSpacing: '-0.01em', color: 'var(--forest-950)' }}>
              Wat ga je eten?
            </h2>
            {onAlleRecepten && (
              <button className="m-btn m-btn-ghost tap" onClick={onAlleRecepten}
                style={{ fontSize: 12.5, padding: '7px 12px', flex: '0 0 auto' }}>
                <MIcon name="book" size={15} color="var(--forest-600)" /> Alle maaltijden
              </button>
            )}
          </div>
          {!loading && kompas && (
            <KompasNote kompas={kompas} restKcal={restKcal} eiwitGap={eiwitGap} eiwitFocus={eiwitFocus}
              koolGap={koolGap} koolFocus={koolFocus} />
          )}
          {poolSectie}
        </div>
      )}

      {/* Activiteit (context) — onder de kern, want het is informatie, geen actie */}
      <div style={{ display: 'flex', gap: 10, marginTop: 6, marginBottom: tiles.updatedAt ? 6 : 16 }}>
        <FitbitTile icon="steps" value={fmt(tiles.steps)} unit=""    label="Stappen"        loading={tiles.loading} />
        <FitbitTile icon="moon"  value={tiles.sleep}      unit=""    label="Slaap"          loading={tiles.loading} />
        <FitbitTile icon="heart" value={tiles.hr}         unit="bpm" label="Hartslag gem." loading={tiles.loading} />
      </div>
      {tiles.updatedAt && (
        <div style={{ fontSize: 11, color: 'var(--ink-3)', textAlign: 'right', marginBottom: 16 }}>
          Google Health bijgewerkt {adapt.formatUpdated(tiles.updatedAt)}
        </div>
      )}

      {/* Snel iets loggen — tekst of foto */}
      {onQuickAdd && <QuickAdd onAdd={onQuickAdd} onFoto={onFotoLog} busy={quickBusy} />}

      {/* Alles wat je vandaag at — chronologisch, compleet */}
      <GegetenList items={gegeten} loading={loading} onRemove={onRemoveGegeten} onOpen={onOpenGegeten} />

      {/* Algemene log-ingang */}
      {onLogMoment && (
        <button className="m-btn m-btn-ghost tap" onClick={() => onLogMoment(null)}
          style={{ width: '100%', fontSize: 13.5, padding: '12px', marginTop: 6 }}>
          <MIcon name="plus" size={15} color="var(--forest-600)" /> Maaltijd loggen
        </button>
      )}
    </div>
  );
}

// InHuisBadge wordt óók gebruikt in screen-kiezen.jsx, screen-optie.jsx en
// index.html — scripts delen alleen wat expliciet op window staat.
Object.assign(window, { DashboardScreen, InHuisBadge });
