Object.assign(window, { Testimonials });

/* ── Default avatar (gray circle + person silhouette) ── */
function DefaultAvatar() {
  return (
    <div style={{
      width: '42px', height: '42px', borderRadius: '50%',
      background: '#e0e0e0', flexShrink: 0,
      display: 'flex', alignItems: 'center', justifyContent: 'center',
      overflow: 'hidden',
    }}>
      <svg viewBox="0 0 24 24" width="26" height="26" fill="#bbb">
        <path d="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"/>
      </svg>
    </div>
  );
}

/* ── Avatar with fallback ── */
function Avatar({ src }) {
  const [failed, setFailed] = React.useState(false);
  if (!src || failed) return <DefaultAvatar />;
  return (
    <img src={src} alt=""
      style={{ width: '42px', height: '42px', borderRadius: '50%', objectFit: 'cover', flexShrink: 0 }}
      onError={() => setFailed(true)} />
  );
}

/* ── Like counter + green "+" button ── */
function LikeBtn({ initial }) {
  const [count, setCount] = React.useState(initial);
  const [on, setOn] = React.useState(false);
  const toggle = () => { setOn(p => { setCount(c => p ? c - 1 : c + 1); return !p; }); };
  return (
    <div style={{ display: 'flex', alignItems: 'center', gap: '5px', flexShrink: 0 }}>
      <span style={{ fontSize: '13px', color: '#777', fontFamily: 'Arial, sans-serif' }}>{count}</span>
      <button onClick={toggle} style={{
        width: '20px', height: '20px', borderRadius: '3px',
        background: on ? '#388e3c' : '#4CAF50',
        border: 'none', cursor: 'pointer', color: '#fff',
        fontSize: '16px', lineHeight: 1, fontWeight: 700,
        display: 'flex', alignItems: 'center', justifyContent: 'center',
        padding: 0, fontFamily: 'Arial, sans-serif',
      }}>+</button>
    </div>
  );
}

/* ── Single comment (recursive for replies) ── */
function Comment({ c, depth }) {
  depth = depth || 0;
  return (
    <div>
      <div style={{
        display: 'flex', gap: '10px', alignItems: 'flex-start',
        padding: '12px 0 0',
        paddingLeft: depth > 0 ? (depth * 52) + 'px' : '0',
        borderTop: '1px solid #f0f0f0',
      }}>
        <Avatar src={c.avatar} />
        <div style={{ flex: 1, minWidth: 0 }}>
          {/* Name row */}
          <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', gap: '8px', marginBottom: '4px' }}>
            <div style={{ display: 'flex', alignItems: 'baseline', gap: '8px', flexWrap: 'wrap' }}>
              <span style={{ fontSize: '13px', fontWeight: 700, color: '#1a1a1a', fontFamily: 'Arial, sans-serif' }}>
                {c.name}
              </span>
              {c.time && (
                <span style={{ fontSize: '11px', color: '#bbb', fontFamily: 'Arial, sans-serif' }}>{c.time}</span>
              )}
            </div>
            <LikeBtn initial={c.likes} />
          </div>

          {/* Text */}
          <p style={{ fontSize: '13px', color: '#333', lineHeight: '1.6', margin: '0 0 4px', fontFamily: 'Arial, sans-serif' }}>
            {c.text}
          </p>

          {/* Screenshot */}
          {c.screenshot && (
            <img src={c.screenshot} alt=""
              style={{ maxWidth: '220px', width: '100%', borderRadius: '4px', marginBottom: '6px', display: 'block', border: '1px solid #e0e0e0' }}
              onError={e => e.target.style.display = 'none'} />
          )}

          {/* rapor */}
          <div style={{ textAlign: 'right', paddingBottom: '10px' }}>
            <a href="#" onClick={e => e.preventDefault()}
              style={{ fontSize: '11px', color: '#ccc', textDecoration: 'none', fontFamily: 'Arial, sans-serif' }}
              onMouseEnter={e => e.currentTarget.style.color = '#888'}
              onMouseLeave={e => e.currentTarget.style.color = '#ccc'}
            >rapor</a>
          </div>
        </div>
      </div>

      {/* Nested replies */}
      {c.replies && c.replies.map((r, i) => (
        <Comment key={i} c={r} depth={depth + 1} />
      ))}
    </div>
  );
}

/* ── Main component ── */
function Testimonials() {
  const av = './assets/comments/';

  const comments = [
    {
      name: 'melisaa41', avatar: av + '33.webp', likes: 4,
      text: "Oldukça hızlı bir şekilde anladım. Beni arayıp her şeyi anlatan çok kibar müdür kız. 9150 TL gibi küçük bir meblağ ile başladım ve şimdi hesabımda 18000 TL'den fazla var! Bir tatile çıkmayı ve bir daha asla işe gitmemeyi düşünüyorum.",
    },
    {
      name: 'metingirgin124', avatar: av + '31.webp', likes: 8,
      text: "Birkaç haftalardır bu platformda işlem yapıyorum (ihtiyacı olan varsa işte bağlantı) ve 11400 TL'lik küçük bir kar elde ettim, çok beğendim!",
    },
    {
      name: 'borabarboros1625', avatar: av + '29.webp', likes: 5,
      text: 'Denemeye karar verdim, uzun zamandır yatırımlarda kendimi gerçekleştirmek istedim, herkes bundan çok iyi para kazanıyor.',
    },
    {
      name: 'kadirksglu7085', likes: 11,
      text: 'kayıt oldum... aramanızı bekliyorum!!!',
    },
    {
      name: 'Ada Aydan', avatar: av + '27.webp', likes: 7,
      text: 'Bu adamı gerçekten seviyorum! Teşekkür ederim!!',
    },
    {
      name: 'erbayceper8756', likes: 18,
      text: 'Bunun her zaman işe yarayıp yaramayacağından emin değilim, şimdiden %200 kârımı elde ettim.',
    },
    {
      name: 'turgutkaldrm2597', avatar: av + '25.webp', likes: 44,
      text: 'Basit bir işlem, bence annem bile her şeyi anlayabilir. Beş bin Türk Lirası ile başladım Sigorta için kenara koyduğum her şeyi (sonuçta bir kriz) - eyleme geçirmeye karar verdim! Bir gecede 20.000 🙏🙏🙏🙏 oldu.',
    },
    {
      name: 'mehmetkeles5464', avatar: av + '8.webp', likes: 11,
      text: 'Harika!!! Kaydoldum ve deneyeceğim! Bunu uzun zamandır biliyordum ama hala yatırım yapacak param yoktu!',
    },
    {
      name: 'rogger466', likes: 12,
      text: 'Ben de deneyeceğim, zaten kaydı geçtim, müdürle konuştum, ilk tutarı yatırdım!!! Bana şans dileyin🙏',
    },
    {
      name: 'karasovalye888c', likes: 33,
      text: 'Haberlerde gördüm. İnsanlara bu fırsatı vermeleri ne kadar çılgınca!!!!!!!!! Şu anda kayıt oluyorum - Ücretsiz kayıt kontenjanlarının çok çabuk dolacağına eminim!',
    },
    {
      name: 'Burcu Gönültaş', avatar: av + '23.webp', likes: 22,
      text: 'Bu haber bizim için doğru zamanda geldi: kocam ve ben maddi sıkıntılar yaşıyoruz ve bu, sorunlarımıza bir çözüm olabilir.',
    },
    {
      name: 'Esma Kıraç', likes: 3,
      text: 'Az önce okuduklarım karşısında şok oldum',
    },
    {
      name: 'tayipkaragoz', avatar: av + '13.webp', likes: 4,
      text: "22085 TL'lik ilk çekimi az önce aldım! İlk geliri elde etmemin yaklaşık 1 hafta sürmesi harika.",
    },
    {
      name: 'anadolukaplan7211', avatar: av + '14.webp', likes: 7,
      text: 'Bu çok havalı bir makale. Uzun yıllardır evden çalışıyorum - bu programı tamamen destekleyebilirim!',
    },
    {
      name: 'zm34870', avatar: av + '15.webp', likes: 45,
      text: 'Bilmiyorum. Bütün bunlar için hala biraz endişeliyim. Hiç evden çalışmadım.',
    },
    {
      name: 'gokhanbingol355', likes: 2,
      text: 'Bunun çalışması için herhangi bir programa veya belirli bir bilgisayara ihtiyacınız olup olmadığını bilen var mı?',
      replies: [
        {
          name: 'fatihpoyraz1321', time: '59 dakika önce', likes: 9,
          text: 'Merhaba, cevap hayır. Sahip olduğunuz herhangi bir cihaz bu siteyi destekleyecektir. Şu anda eski bir dizüstü bilgisayarda kullanıyorum ve harika çalışıyor. Hala yer varken kayıt olmanız yeterli. İşte ekran görüntüm:)',
          screenshot: av + 'screenshot3.webp',
          replies: [
            {
              name: 'Ebru Pektemek', likes: 22,
              text: 'Aman Tanrım! Bu ekran görüntüsünü gönderdiğiniz için teşekkürler, bana ihtiyacım olan ilhamı verdiniz. Vay be! :-)',
            },
          ],
        },
      ],
    },
    {
      name: 'hicmimar9855', likes: 24,
      text: 'Umarım bu işe yarar çünkü patronumdan gerçekten nefret ediyorum!!!!!',
    },
    {
      name: 'suleyman5', likes: 13,
      text: 'Sorularım vardı ama bu adresteki destek servisine yazdım ve bana yardımcı oldular :)',
    },
    {
      name: 'by_elektronikci1606', likes: 35,
      text: 'Geceleri sadece birkaç saat yaparsam ne kadar işe yarayacağını merak ediyorum. Hala bir günlük işim var (bırakmayı çok isterim lol) ama şimdi geceleri sadece birkaç saat zamanım var. Kontrol edip size haber vereceğim arkadaşlar!',
    },
    {
      name: 'burakekremserbetci', likes: 14,
      text: 'Anlaşılmaz çizelgeler ve tablolar içeren bir tür karmaşık ticaret sistemi mi?',
      replies: [
        {
          name: 'sondangelen5457', likes: 7,
          text: 'Merhaba. Platformu zor demezdim, genç oğlum 10 dakikada anladı, benim anlamam 5 dakika daha sürdü.',
        },
      ],
    },
    {
      name: 'mkemal66', likes: 28,
      text: 'Hükümet onu hayal kırıklığına uğrattı, o sadece sıradan insanlara yardım etmeye çalışıyordu',
    },
    {
      name: 'nebahataydogan8976', likes: 32,
      text: 'Bu platform ne kadar güvenilir? 9150TL az para değil, kaybetmek istemiyorum.',
      replies: [
        {
          name: 'tuttubututtubu1576', likes: 26,
          text: 'Abi zaten cüzdanımı birkaç kez 17900 TL ile doldurdum ve 28310 civarı platformdan çekildim.',
        },
      ],
    },
  ];

  const reactions = [
    { src: './index/angry.webp' },
    { src: './index/gorgeous.webp' },
    { src: './index/happy.webp' },
    { src: './index/liked.webp' },
    { src: './index/amazing.webp' },
    { src: './index/sad.webp' },
    { src: './index/incredible.webp' },
  ];

  const [counts, setCounts] = React.useState(reactions.map(() => 0));
  const react = i => setCounts(prev => { const n = [...prev]; n[i]++; return n; });

  return (
    <div style={{ fontFamily: 'Arial, sans-serif', marginTop: '8px' }}>

      {/* Comment list */}
      <div>
        {comments.map((c, i) => <Comment key={i} c={c} />)}
      </div>

      {/* Emoji reactions */}
      <div style={{ marginTop: '20px', paddingTop: '16px', borderTop: '1px solid #e8e8e8' }}>
        <div style={{ fontSize: '14px', fontWeight: 700, color: '#1a1a1a', marginBottom: '14px', fontFamily: 'Arial, sans-serif' }}>
          Bu habere emoji ile tepki ver
        </div>
        <div style={{ display: 'flex', gap: '12px', flexWrap: 'wrap' }}>
          {reactions.map((r, i) => (
            <button key={i} onClick={() => react(i)} style={{
              background: 'none', border: 'none', cursor: 'pointer',
              display: 'flex', flexDirection: 'column', alignItems: 'center', gap: '4px',
              padding: '4px 6px', borderRadius: '6px',
            }}
              onMouseEnter={e => e.currentTarget.style.background = '#f5f5f5'}
              onMouseLeave={e => e.currentTarget.style.background = 'none'}
            >
              <img src={r.src} alt="" style={{ width: '38px', height: '38px', objectFit: 'contain' }}
                onError={e => e.target.style.display = 'none'} />
              <span style={{ fontSize: '12px', color: '#666', fontFamily: 'Arial, sans-serif' }}>{counts[i]}</span>
            </button>
          ))}
        </div>
      </div>

    </div>
  );
}
