/* HTD Program 10 — Monetization (in-house HTD entitlement engine, no RevenueCat) */
(function () {
  const { useState } = React;
  const Icon = window.HTDIcon;
  const { useNav, PushView, SectionLabel, Panel } = window.HTDUI;
  const F = window.HTD_FIX;

  function PlanCard({ p, selected, onSelect }) {
    const active = p.cta==='ACTIVE';
    return (
      <button onClick={()=>onSelect(p.name)} style={{ width:'100%', textAlign:'left', cursor:'pointer', marginBottom:10,
        background: selected?'rgba(152,255,16,0.06)':'var(--panel)', borderRadius:'var(--r)', padding:16,
        border:'1px solid '+(selected||p.hot?'var(--border-active)':'var(--hairline)'),
        boxShadow: p.hot?'0 0 20px -8px var(--acid-glow)':'none', position:'relative' }}>
        {p.hot && <span className="label-mono" style={{ position:'absolute', top:-8, right:14, background:'var(--acid)', color:'#0a1400', padding:'2px 8px', borderRadius:4 }}>CURRENT</span>}
        <div className="row between">
          <div style={{ fontFamily:'var(--display)', fontWeight:700, fontSize:20 }}>{p.name}</div>
          <div className="row" style={{ alignItems:'baseline', gap:2 }}>
            <span style={{ fontFamily:'var(--display)', fontWeight:700, fontSize:24, color:'var(--acid)' }}>{p.price}</span>
            <span className="label-mono">{p.period}</span></div>
        </div>
        <div style={{ marginTop:10 }}>{p.feats.map((f,i)=>(
          <div key={i} className="row" style={{ gap:8, padding:'3px 0' }}><Icon name="check" size={13} color="var(--acid)" />
            <span style={{ fontSize:13, color:'var(--bone-muted)' }}>{f}</span></div>))}</div>
      </button>
    );
  }

  function EntitlementsPricing() {
    const nav = useNav();
    const M = F.monetization;
    const [sel, setSel] = useState('COACH');
    const [stage, setStage] = useState('plans'); // plans | checkout | unlocked
    const selPlan = M.plans.find(p=>p.name===sel);

    if (stage==='checkout') return (
      <PushView title="CHECKOUT" footer={<button className="btn-primary" onClick={()=>setStage('unlocked')}>CONFIRM · {selPlan.price}{selPlan.period}<span className="sub">HTD SIGNED ENTITLEMENT</span></button>}>
        <div style={{ textAlign:'center', padding:'20px 0' }}>
          <div className="label-mono">CHECKOUT INTENT</div>
          <div className="display-xl" style={{ fontSize:34, marginTop:8 }}>{selPlan.name}</div>
          <div className="row" style={{ justifyContent:'center', alignItems:'baseline', gap:3, marginTop:6 }}>
            <span style={{ fontFamily:'var(--display)', fontWeight:700, fontSize:30, color:'var(--acid)' }}>{selPlan.price}</span>
            <span className="label-mono">{selPlan.period}</span></div>
        </div>
        <Panel pad={false}>{['Payment method','Billing cycle','Auto-renew'].map((l,i)=>(
          <div key={i} className="row between" style={{ padding:'14px', borderBottom:i<2?'1px solid var(--hairline)':'none' }}>
            <span style={{ fontSize:13.5, color:'var(--bone-muted)' }}>{l}</span>
            <span className="label-mono" style={{ color:'var(--bone)' }}>{['•••• 4242','MONTHLY','ON'][i]}</span></div>))}</Panel>
        <Panel glow style={{ marginTop:12 }}><div className="row" style={{ gap:10 }}><Icon name="alert" size={16} color="var(--amber)" />
          <div className="muted" style={{ fontSize:12.5, lineHeight:1.45 }}>Demo · Stripe checkout verification awaits provider keys. Entitlement applied locally.</div></div></Panel>
      </PushView>);

    if (stage==='unlocked') return (
      <PushView title="UNLOCKED" onBack={()=>setStage('plans')} footer={<button className="btn-primary" onClick={()=>{setStage('plans');}}>START PREMIUM MISSION</button>}>
        <div style={{ textAlign:'center', padding:'30px 0 10px' }} className="screen-enter">
          <div style={{ width:72, height:72, margin:'0 auto 16px', borderRadius:'50%', display:'grid', placeItems:'center',
            border:'2px solid var(--acid)', boxShadow:'0 0 28px -4px var(--acid-glow)' }}><Icon name="check" size={34} color="var(--acid)" /></div>
          <div className="display-xl" style={{ fontSize:32, color:'var(--acid)' }}>{selPlan.name} UNLOCKED</div>
          <div className="muted" style={{ fontSize:13.5, marginTop:8 }}>HTD signed entitlement is now active on this account.</div>
        </div>
        <Panel pad={false} style={{ marginTop:10 }}>{selPlan.feats.map((f,i)=>(
          <div key={i} className="row" style={{ gap:10, padding:'12px 14px', borderBottom:i<selPlan.feats.length-1?'1px solid var(--hairline)':'none' }}>
            <Icon name="check" size={15} color="var(--acid)" /><span style={{ fontSize:13.5, color:'var(--bone)' }}>{f}</span></div>))}</Panel>
      </PushView>);

    return (
      <PushView title="HTD PLANS"
        footer={ selPlan.cta==='ACTIVE'
          ? <button className="btn-ghost" onClick={()=>window.HTDUI.toast('OPENS APP STORE SUBSCRIPTION MANAGEMENT')}>MANAGE SUBSCRIPTION</button>
          : <button className="btn-primary" onClick={()=>setStage('checkout')}>UPGRADE TO {sel}<span className="sub">{selPlan.price}{selPlan.period} · HTD ENTITLEMENT ENGINE</span></button>}>
        <Panel style={{ marginTop:8 }}><div className="row between">
          <div><div className="label-mono">CURRENT PLAN</div><div style={{ fontFamily:'var(--display)', fontWeight:700, fontSize:20, marginTop:3 }}>{M.current}</div></div>
          <span className="label-mono acid">● {M.state}</span></div></Panel>
        <SectionLabel>CHOOSE YOUR STANDARD</SectionLabel>
        {M.plans.map(p=><PlanCard key={p.name} p={p} selected={sel===p.name} onSelect={setSel} />)}
        <div className="row" style={{ gap:10, marginTop:4 }}>
          <button className="btn-ghost" style={{ fontSize:11 }} onClick={()=>window.HTDUI.toast('PURCHASES RESTORED · ATHLETE PRO ACTIVE')}>RESTORE PURCHASES</button>
          <button className="btn-ghost" style={{ fontSize:11 }} onClick={()=>{ window.HTDUI.toast('STAYING FREE · DAILY MISSION ALWAYS FREE'); nav.pop(); }}>CONTINUE FREE</button>
        </div>
        <div className="label-mono" style={{ textAlign:'center', marginTop:14, color:'var(--steel)' }}>ACCESS CONTROLLED BY HTD SIGNED ENTITLEMENTS</div>
      </PushView>
    );
  }

  // feature gate sheet (locked premium)
  function FeatureGate({ params }) {
    const nav = useNav();
    const g = F.monetization.gate;
    const feat = (params && params.feature) || g.feature;
    return (
      <PushView title="LOCKED" footer={
        <div style={{ display:'flex', flexDirection:'column', gap:10 }}>
          <button className="btn-primary" onClick={()=>{nav.pop(); nav.push('EntitlementsPricing');}}>VIEW PLANS</button>
          <button className="btn-ghost" onClick={()=>nav.pop()}>NOT NOW</button></div>}>
        <div style={{ textAlign:'center', padding:'34px 0 14px' }}>
          <div style={{ width:72, height:72, margin:'0 auto 18px', borderRadius:'50%', display:'grid', placeItems:'center',
            border:'1px solid var(--hairline-2)' }}><Icon name="lock" size={30} color="var(--steel)" /></div>
          <div className="label-mono acid">PREMIUM · REQUIRES {g.need}</div>
          <div className="display-xl" style={{ fontSize:30, margin:'10px 0' }}>{feat}</div>
          <div className="muted" style={{ fontSize:13.5, lineHeight:1.5, maxWidth:280, margin:'0 auto' }}>{g.blurb}</div>
        </div>
        <Panel glow style={{ marginTop:10 }}><div className="row between">
          <span className="label-mono" style={{ color:'var(--bone)' }}>HTD ENTITLEMENT ENGINE</span>
          <span className="label-mono">FEATURE GATE</span></div></Panel>
      </PushView>
    );
  }

  window.HTDMoney = { EntitlementsPricing, FeatureGate };
})();
