/* HealthyDashboard.jsx — the Home tab (healthy tier's gamified centerpiece).
   Also exports DEMO (shared profile data) and WellnessCheckCard (reused on the
   Care tab). Reads ScoreRing / Card / Button / kit primitives. */

const DEMO = {
  name: 'Chioma', initials: 'C',
  score: 92, oral: 95,
  xp: 1240, xpForNext: 1580, ptsToNext: 340,
  level: 3, levelName: 'Health Hero',
  streak: 3,
};

// ─── Wellness-check card (shared: dashboard + care tab) ─────────────────
function WellnessCheckCard({ onSchedule }) {
  return (
    <Card padding={20} style={{ position: 'relative' }}>
      <div style={{ position: 'absolute', top: 16, right: 16 }}>
        <StatPill bg="var(--sage-50)" fg="var(--sage-700)">Free</StatPill>
      </div>
      <SectionHeading style={{ marginBottom: 8, paddingRight: 48 }}>Schedule your wellness check</SectionHeading>
      <p style={{ font: 'var(--type-body)', color: 'var(--fg-2)', textWrap: 'pretty', marginBottom: 18 }}>
        Join a complimentary 15-minute video call with both your physician and dentist to review your results and get personalised tips to maintain your healthy lifestyle.
      </p>
      <Button full variant="primary" leftIcon="video" onClick={onSchedule}>Schedule my wellness check</Button>
    </Card>
  );
}

// ─── Compact sub-score row item ─────────────────────────────────────────
function SubScore({ icon, custom, label, value, valueColor = 'var(--fg-1)' }) {
  return (
    <div style={{ display: 'flex', alignItems: 'center', gap: 10 }}>
      <div style={{ width: 32, height: 32, borderRadius: 'var(--radius-s)', background: 'var(--stone-100)', color: 'var(--fg-2)', display: 'flex', alignItems: 'center', justifyContent: 'center', flexShrink: 0 }}>
        {custom || <Icon name={icon} size={18}/>}
      </div>
      <div style={{ flex: 1, minWidth: 0 }}>
        <div style={{ font: 'var(--type-body-s)', color: 'var(--fg-3)' }}>{label}</div>
        <div style={{ font: 'var(--type-h3)', color: valueColor }}>{value}</div>
      </div>
    </div>
  );
}

const DAYS = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];

function Dashboard({ onSchedule, onOpenChallenges, todayDone = 0 }) {
  const d = DEMO;
  return (
    <div style={{ padding: '0 var(--gutter-screen)' }}>
      {/* Greeting strip — subtle bone, no gradient */}
      <div style={{ display: 'flex', alignItems: 'center', gap: 12, paddingTop: 58, paddingBottom: 18 }}>
        <Avatar initials={d.initials} size={48}/>
        <div style={{ flex: 1 }}>
          <div style={{ font: 'var(--type-h3)', color: 'var(--fg-1)' }}>Hi {d.name}</div>
          <div style={{ marginTop: 4 }}><StatPill icon="flame">{d.xp.toLocaleString()} XP</StatPill></div>
        </div>
        <button aria-label="Notifications" style={{ width: 42, height: 42, borderRadius: '50%', background: '#fff', border: '1px solid var(--border-subtle)', boxShadow: 'var(--shadow-xs)', color: 'var(--fg-2)', display: 'flex', alignItems: 'center', justifyContent: 'center', cursor: 'pointer', flexShrink: 0 }}>
          <Icon name="bell" size={20}/>
        </button>
      </div>

      {/* Health score summary */}
      <Card padding={18} style={{ marginBottom: 14, display: 'flex', alignItems: 'center', gap: 18 }}>
        <ScoreRing score={d.score} variant="healthy" size={92} animate={false}/>
        <div style={{ flex: 1, display: 'flex', flexDirection: 'column', gap: 12 }}>
          <SubScore custom={<ToothIcon size={18}/>} label="Oral health" value={`${d.oral} / 100`}/>
          <SubScore icon="gauge" label="Diabetes risk" value="Low" valueColor="var(--sage-700)"/>
          <SubScore icon="heart" label="Cardiovascular" value="Excellent" valueColor="var(--sage-700)"/>
        </div>
      </Card>

      {/* Daily challenges hero — amber gradient, the centerpiece.
          SYSTEM RULE: the tier's recurring engagement loop sits directly below
          the score summary; one-time event CTAs (booking) appear lower. */}
      <div onClick={onOpenChallenges} style={{ background: 'var(--band-moderate)', borderRadius: 'var(--radius-l)', padding: 20, marginBottom: 14, color: '#fff', cursor: 'pointer', boxShadow: 'var(--shadow-m)' }}>
        <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'flex-start', gap: 12 }}>
          <div style={{ font: 'var(--type-display-s)', color: '#fff', letterSpacing: 'var(--tracking-snug)', textWrap: 'pretty', flex: 1 }}>Daily challenges.<br/>Keep your streak alive.</div>
          <div style={{ display: 'inline-flex', alignItems: 'center', gap: 5, padding: '5px 10px', borderRadius: 'var(--radius-pill)', background: 'rgba(255,255,255,0.2)', font: '600 12px/1.2 var(--font-sans)', whiteSpace: 'nowrap', flexShrink: 0 }}>
            <Icon name="flame" size={13} strokeWidth={2}/> Streak: {d.streak}
          </div>
        </div>
        <div style={{ marginTop: 18, display: 'flex', justifyContent: 'space-between', font: 'var(--type-body-s)', color: 'rgba(255,255,255,0.92)', marginBottom: 7 }}>
          <span>Today’s progress</span><span>{todayDone}/3</span>
        </div>
        <ProgressBar value={todayDone} max={3} color="#fff" track="rgba(255,255,255,0.28)" height={8}/>
        <div style={{ marginTop: 14, display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>
          <span style={{ font: 'var(--type-body-s)', color: 'rgba(255,255,255,0.92)' }}>{3 - todayDone} challenges left · +{todayDone * 50} points</span>
          <span style={{ display: 'inline-flex', alignItems: 'center', gap: 4, font: 'var(--type-button)', color: '#fff' }}>Open <Icon name="arrow-right" size={16}/></span>
        </div>
      </div>

      {/* Wellness check — one-time event CTA, sits below the engagement loop */}
      <div style={{ marginBottom: 14 }}><WellnessCheckCard onSchedule={onSchedule}/></div>

      {/* Level progress */}
      <Card padding={18} style={{ marginBottom: 14 }}>
        <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'baseline', marginBottom: 4 }}>
          <div style={{ font: 'var(--type-h3)', color: 'var(--fg-1)' }}>Level {d.level}: {d.levelName}</div>
          <div style={{ font: 'var(--type-body-s)', color: 'var(--fg-3)' }}>{d.ptsToNext} pts to Level {d.level + 1}</div>
        </div>
        <div style={{ font: 'var(--type-body-s)', color: 'var(--fg-3)', marginBottom: 10 }}>{d.xp.toLocaleString()} / {d.xpForNext.toLocaleString()} XP</div>
        <ProgressBar value={d.xp} max={d.xpForNext} color="var(--amber-500)"/>
      </Card>

      {/* Daily streak strip */}
      <Card padding={18} style={{ marginBottom: 14 }}>
        <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', marginBottom: 14 }}>
          <div style={{ font: 'var(--type-h3)', color: 'var(--fg-1)' }}>Daily streak</div>
          <StatPill icon="flame" bg="var(--sage-50)" fg="var(--sage-700)">{d.streak} days</StatPill>
        </div>
        <div style={{ display: 'grid', gridTemplateColumns: 'repeat(7, 1fr)', gap: 6 }}>
          {DAYS.map((day, i) => {
            const filled = i < d.streak;
            return (
              <div key={day} style={{ display: 'flex', flexDirection: 'column', alignItems: 'center', gap: 6 }}>
                <div style={{ width: '100%', aspectRatio: '1', maxWidth: 38, borderRadius: '50%', background: filled ? 'var(--sage-500)' : 'var(--stone-100)', color: filled ? '#fff' : 'var(--stone-300)', display: 'flex', alignItems: 'center', justifyContent: 'center' }}>
                  <Icon name="flame" size={16} strokeWidth={2}/>
                </div>
                <div style={{ font: 'var(--type-caption)', color: filled ? 'var(--fg-2)' : 'var(--fg-4)' }}>{day[0]}</div>
              </div>
            );
          })}
        </div>
      </Card>

      {/* Two-up: Challenges / Badges */}
      <div style={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 12, marginBottom: 8 }}>
        <div onClick={onOpenChallenges} style={{ background: 'var(--sage-50)', borderRadius: 'var(--radius-m)', padding: 16, cursor: 'pointer' }}>
          <div style={{ width: 36, height: 36, borderRadius: 'var(--radius-s)', background: '#fff', color: 'var(--sage-600)', display: 'flex', alignItems: 'center', justifyContent: 'center', marginBottom: 12 }}><Icon name="award" size={20}/></div>
          <div style={{ font: 'var(--type-h3)', color: 'var(--fg-1)' }}>Challenges</div>
          <div style={{ font: 'var(--type-body-s)', color: 'var(--fg-3)', marginTop: 2 }}>3 active today</div>
        </div>
        <div style={{ background: 'var(--amber-50)', borderRadius: 'var(--radius-m)', padding: 16 }}>
          <div style={{ width: 36, height: 36, borderRadius: 'var(--radius-s)', background: '#fff', color: 'var(--amber-600)', display: 'flex', alignItems: 'center', justifyContent: 'center', marginBottom: 12 }}><Icon name="sparkles" size={20}/></div>
          <div style={{ font: 'var(--type-h3)', color: 'var(--fg-1)' }}>Badges</div>
          <div style={{ font: 'var(--type-body-s)', color: 'var(--fg-3)', marginTop: 2 }}>3 earned</div>
        </div>
      </div>

      <div style={{ height: 24 }}/>
    </div>
  );
}

window.MunaHealthyDashboard = { Dashboard, WellnessCheckCard, DEMO };
