/* The Knowledge: owned growth layer (site-wide). - Referral capture (?ref=) for every Kit form and every form rendered here - Welcome note for readers arriving from a friend's link - Mid-essay subscribe card - Bottom sheets: subscribe (new readers), Sovereign free chapter (known subscribers) - Sharer sheet for readers arriving from the email's share buttons (?share=) - /join: invite page and the page shown after signing up No third-party code. Everything fails quiet: if anything here breaks, the page is untouched. */ (function () { 'use strict'; if (window.__tkGrow) return; window.__tkGrow = { v: 1 }; var CDN = 'https://cdn.getmidnight.com/a26398dca6f47b49876cbaffbc9954f9/2026/11/'; var API = 'https://decision-hacker-fulfilment.davidelikwu.workers.dev'; var FORM_SUB = '2864506', FORM_SOV = '3758993'; var MSG = "Thought you'd like this. It's from a newsletter I read every week"; var DAY = 864e5; var doc = document, body = doc.body, qs = new URLSearchParams(location.search); /* ---------- storage ---------- */ function get(k) { try { return JSON.parse(localStorage.getItem(k) || 'null'); } catch (e) { return null; } } function set(k, v) { try { localStorage.setItem(k, JSON.stringify(v)); } catch (e) {} } /* ---------- referral capture (same rules as before: 30 days, URL wins) ---------- */ var m = /^[a-z0-9-]{6,40}$/i.exec(qs.get('ref') || ''), refFromUrl = !!m, ref = m ? m[0].toLowerCase() : null; if (ref) set('tk_ref', { ref: ref, t: Date.now() }); else { var s = get('tk_ref'); if (s && Date.now() - s.t < 30 * DAY) ref = s.ref; } function stampKitForms() { if (!ref) return; doc.querySelectorAll('form.formkit-form, form[action*="kit.com/forms"], form[action*="convertkit.com/forms"]').forEach(function (f) { var i = f.querySelector('input[name="fields[tk_referred_by]"]'); if (!i) { i = doc.createElement('input'); i.type = 'hidden'; i.name = 'fields[tk_referred_by]'; f.appendChild(i); i.value = ref; } else if (refFromUrl && i.value !== ref) i.value = ref; }); } stampKitForms(); try { new MutationObserver(stampKitForms).observe(doc.documentElement, { childList: true, subtree: true }); } catch (e) {} /* ---------- who is this ---------- */ var share = /^[a-z0-9-]{6,40}$/i.test(qs.get('share') || '') ? qs.get('share').toLowerCase() : null; if (share || qs.get('ck_subscriber_id')) set('tk_sub', 1); var isSub = !!get('tk_sub'); var isJoin = body.classList.contains('page-join'); var article = doc.querySelector('article.ghost-content'); var isPost = body.classList.contains('post-template') && !!article && !body.className.match(/tag-hash-|tag-decision-hacker/); /* ---------- styles ---------- */ var css = [ ':root{--tk-bg:#fff;--tk-card:#f7f6f4;--tk-line:#e6e3de;--tk-ink:#262626;--tk-mut:#6f6b66;--tk-acc:#ff4c29;--tk-field:#fff;--tk-field2:#f3f1ed;--tk-dark:#1a1a1a}', 'html[data-color-scheme=dark]{--tk-bg:#1a1a1a;--tk-card:#232322;--tk-line:#353432;--tk-ink:#e6e6e6;--tk-mut:#a29e98;--tk-field:#121212;--tk-field2:#111;--tk-dark:#2b2a28}', '@media (prefers-color-scheme:dark){html[data-color-scheme=system]{--tk-bg:#1a1a1a;--tk-card:#232322;--tk-line:#353432;--tk-ink:#e6e6e6;--tk-mut:#a29e98;--tk-field:#121212;--tk-field2:#111;--tk-dark:#2b2a28}}', '.tkx{font-family:"DM Sans",system-ui,sans-serif;color:var(--tk-ink);-webkit-font-smoothing:antialiased;text-align:left;line-height:1.4}', '.tkx *{box-sizing:border-box}', '.tkx img{margin:0!important;max-width:none;display:block}', '.tkx p,.tkx h2,.tkx h3{margin:0!important}', '.tkx .serif{font-family:"Source Serif 4","Source Serif Pro",Georgia,serif}', '.tkx .mut{color:var(--tk-mut)}', '.tkx form.combo{display:flex;align-items:center;gap:6px;margin:0;padding:5px 5px 5px 6px;border-radius:12px;background:var(--tk-field);border:1px solid var(--tk-line)}', '.tkx form.combo:focus-within{border-color:var(--tk-acc)}', '.tkx form.combo input{flex:1 1 0;width:0;min-width:0;height:40px;margin:0;padding:0 10px;border:0!important;outline:0!important;box-shadow:none!important;background:transparent!important;font:inherit;font-size:16px;color:var(--tk-ink)}', '.tkx form.combo input::placeholder{color:var(--tk-mut);opacity:1}', '.tkx form.combo button{height:40px;margin:0;padding:0 16px;border:0;border-radius:9px;background:var(--tk-acc);color:#fff;font:inherit;font-size:15px;font-weight:600;white-space:nowrap;cursor:pointer;flex:none}', '.tkx form.combo button[disabled]{opacity:.6;cursor:default}', '.tkx form.combo.f2{background:var(--tk-field2)}', '.tkx form.combo.onbg{background:var(--tk-bg)}', '.tkx .tk-err{font-size:13px;color:#c0392b;margin-top:8px}.tkx .tk-err:empty{display:none}', '.tkx .tk-done{font-size:15px;line-height:1.45;padding:12px 2px 2px}', '.tkx .stars{color:#f5b301;letter-spacing:1px;font-size:12px;white-space:nowrap}', '.tkx .faces{display:flex;flex:none}.tkx .faces img{width:24px;height:24px;border-radius:999px;object-fit:cover;box-shadow:0 0 0 2px var(--tk-bg)}.tkx .faces img+img{margin-left:-7px!important}', '.tkx .av{border-radius:999px;object-fit:cover;flex:none}', '.tk-card{margin:28px 0 30px;padding:18px;border-radius:16px;background:var(--tk-card);border:1px solid var(--tk-line)}', '.tk-card .faces img{box-shadow:0 0 0 2px var(--tk-card)}', '.tk-note{margin:0 0 26px;padding:16px;border-radius:18px;background:var(--tk-card);border:1px solid var(--tk-line)}', '.tk-sheet{position:fixed;left:0;right:0;bottom:0;z-index:9999;padding:10px 20px calc(28px + env(safe-area-inset-bottom));border-radius:22px 22px 0 0;background:var(--tk-bg);border-top:1px solid var(--tk-line);box-shadow:0 -16px 44px -14px rgb(0 0 0 / .38);transform:translateY(105%);transition:transform .34s cubic-bezier(.2,.8,.2,1);will-change:transform}', '.tk-sheet.in{transform:none}', '.tk-sheet .grab{width:36px;height:4px;border-radius:2px;background:var(--tk-line);margin:0 auto 26px}', '.tk-sheet .x{position:absolute;right:14px;top:12px;width:30px;height:30px;padding:0;border:0;border-radius:999px;background:var(--tk-card);color:var(--tk-mut);display:grid;place-items:center;cursor:pointer}', '.tk-sheet.sov{padding:0 0 calc(28px + env(safe-area-inset-bottom));overflow:hidden}', '.tk-sheet.sov .x{background:rgb(0 0 0 / .45);color:#fff}', '.tk-back{position:fixed;inset:0;z-index:9998;background:rgb(0 0 0 / .35);opacity:0;transition:opacity .3s}.tk-back.in{opacity:1}', '.tk-btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;height:48px;padding:0 16px;border:0;border-radius:12px;background:var(--tk-acc);color:#fff;font:inherit;font-size:15px;font-weight:600;cursor:pointer;text-decoration:none}', '.tk-btn.alt{background:var(--tk-card);color:var(--tk-ink)}', '.tk-prev{display:flex;gap:12px;align-items:center;padding:10px;border-radius:14px;background:var(--tk-card)}', '.tk-prev img{width:56px;height:56px;border-radius:10px;object-fit:cover;flex:none}', '.tk-guard{position:fixed;inset:0;z-index:10001;background:rgb(0 0 0 / .5);display:grid;place-items:center;padding:16px}.tk-guard iframe{width:100%;max-width:420px;height:520px;border:0;border-radius:16px;background:#fff}', '@media (min-width:700px){.tk-sheet{left:auto;right:24px;bottom:96px;width:400px;border-radius:22px;border:1px solid var(--tk-line);padding-bottom:24px;transform:translateY(calc(100% + 40px))}.tk-sheet.sov{padding-bottom:24px}.tk-sheet .grab{visibility:hidden;margin-bottom:22px}.tk-sheet.sov .grabw{display:none}.tk-sheet.mid{left:50%;right:auto;bottom:50%;transform:translate(-50%,calc(50% + 40px));opacity:0;transition:transform .3s,opacity .3s}.tk-sheet.mid.in{transform:translate(-50%,50%);opacity:1}}', '@media (prefers-reduced-motion:reduce){.tk-sheet,.tk-back{transition:none}}' ].join(''); var st = doc.createElement('style'); st.id = 'tk-grow-css'; st.textContent = css; doc.head.appendChild(st); /* ---------- pieces ---------- */ var X = ''; var SHARE_IC = ''; var COPY_IC = ''; var AV = CDN + 'tk-david.jpg'; var FACES = '' + ['maya', 'merve-goulding', 'brian-muriithi', 'koko'].map(function (n) { return ''; }).join('') + ''; function esc(t) { return String(t).replace(/[&<>"]/g, function (c) { return { '&': '&', '<': '<', '>': '>', '"': '"' }[c]; }); } function form(id, label, cls) { return '
' + '' + '
'; } /* ---------- forms: submit to Kit, keep the reader on the site ---------- */ function guard(url, done) { var w = doc.createElement('div'); w.className = 'tk-guard'; w.innerHTML = ''; function fin(ok) { window.removeEventListener('message', on); w.remove(); done(ok); } function on(e) { if (e.data && e.data.name === 'ckjs:guard:confirmed') fin(true); } window.addEventListener('message', on); w.addEventListener('click', function (e) { if (e.target === w) fin(false); }); body.appendChild(w); } function wire(f) { if (f.__tk) return; f.__tk = 1; f.addEventListener('submit', function (ev) { ev.preventDefault(); var btn = f.querySelector('button'), err = f.nextElementSibling && f.nextElementSibling.classList.contains('tk-err') ? f.nextElementSibling : null; var id = f.getAttribute('data-tk-form'), fd = new FormData(f); if (ref) fd.set('fields[tk_referred_by]', ref); fd.append('referrer', doc.referrer); fd.append('host', location.href.split('?')[0]); fd.append('ckjs_version', '6'); if (err) err.textContent = ''; btn.disabled = true; function ok() { set('tk_sub', 1); isSub = true; try { f.dispatchEvent(new CustomEvent('tk:subscribed', { bubbles: true, detail: { form: id } })); } catch (e) {} if (id === FORM_SOV) { f.outerHTML = '
Chapter one is on its way. Check your inbox in a minute.
'; } else if (isJoin && window.__tkJoinWelcome) { window.__tkJoinWelcome(); } else { location.href = '/join/?welcome=1'; } } function fail(msg) { btn.disabled = false; if (err) err.textContent = msg || 'That did not go through. Please try again.'; } fetch(f.action, { method: 'POST', body: fd, headers: { Accept: 'application/json', 'X-CKJS-Version': '6' } }) .then(function (r) { if (!r.ok) throw new Error('http'); return r.json(); }) .then(function (j) { if (j.status === 'success') ok(); else if (j.status === 'quarantined' && j.url) guard(j.url, function (passed) { passed ? ok() : fail('Please confirm the check to subscribe.'); }); else fail(j.errors && j.errors.messages && j.errors.messages[0]); }) .catch(function () { try { f.__tk = 0; HTMLFormElement.prototype.submit.call(f); } catch (e) { fail(); } }); }); } function wireAll(root) { (root || doc).querySelectorAll('form[data-tk-form]').forEach(wire); } window.__tkGrow.wire = wireAll; /* ---------- sharing ---------- */ function canonical() { var c = doc.querySelector('link[rel=canonical]'); return ((c && c.href) || (location.origin + location.pathname)).split('?')[0].split('#')[0]; } function shareTarget(code) { if (!code) return isPost ? canonical() : 'https://theknowledge.io/'; return isPost ? canonical() + '?ref=' + code : 'https://theknowledge.io/r/' + code; } function copy(text, btn) { function done() { if (btn) { var o = btn.innerHTML; btn.innerHTML = 'Link copied'; setTimeout(function () { btn.innerHTML = o; }, 2200); } } if (navigator.clipboard && navigator.clipboard.writeText) navigator.clipboard.writeText(text).then(done, legacy); else legacy(); function legacy() { var t = doc.createElement('textarea'); t.value = text; t.style.cssText = 'position:fixed;opacity:0'; body.appendChild(t); t.select(); try { doc.execCommand('copy'); done(); } catch (e) {} t.remove(); } } function doShare(url, btn) { if (navigator.share) navigator.share({ text: MSG, url: url }).catch(function () {}); else copy(url, btn); } window.__tkGrow.share = function (btn) { doShare(shareTarget(share), btn); }; /* ---------- sheets ---------- */ var sheetOpen = false; function openSheet(html, cls, opts) { if (sheetOpen) return null; sheetOpen = true; opts = opts || {}; if (opts.mark) set('tk_sheet', { t: Date.now(), k: opts.mark }); var el = doc.createElement('div'), back = null; el.className = 'tkx tk-sheet ' + (cls || ''); el.setAttribute('role', 'dialog'); el.setAttribute('aria-label', opts.label || 'The Knowledge'); el.innerHTML = html; if (opts.backdrop) { back = doc.createElement('div'); back.className = 'tk-back'; body.appendChild(back); back.addEventListener('click', close); } body.appendChild(el); wireAll(el); requestAnimationFrame(function () { requestAnimationFrame(function () { el.classList.add('in'); if (back) back.classList.add('in'); }); }); function close() { if (!sheetOpen) return; sheetOpen = false; el.classList.remove('in'); if (back) back.classList.remove('in'); doc.removeEventListener('keydown', key); setTimeout(function () { el.remove(); if (back) back.remove(); }, 380); if (opts.onClose) opts.onClose(); } function key(e) { if (e.key === 'Escape') close(); } doc.addEventListener('keydown', key); var x = el.querySelector('.x'); if (x) x.addEventListener('click', close); el.close = close; return el; } var GRAB = '
', XB = ''; function subSheet() { return openSheet(GRAB + XB + '
David Elikwu
Get an essay like this every Thursday
' + '
I write The Knowledge for 40,000+ people who want to think deeper and work smarter.
' + '
' + form(FORM_SUB, 'Subscribe', 'f2') + '
' + '
' + FACES + '★★★★★ rated 5.0 by readers
', '', { label: 'Subscribe to The Knowledge', mark: 'sub' }); } function sovSheet() { return openSheet( '
' + XB + '
' + '
Sovereign, the book
Sovereign
The owner’s manual for a remarkable life
' + '
★★★★★“A manual for life. Modern stoicism at its best.”
' + '
' + form(FORM_SOV, 'Read chapter one', 'f2') + '
', 'sov', { label: 'Sovereign: read chapter one', mark: 'sov' }); } function sharerSheet(copyFirst) { var url = shareTarget(share), native = !!navigator.share && !copyFirst; var img = isPost ? ((doc.querySelector('meta[property="og:image"]') || {}).content || CDN + 'tk-join-cafe.jpg') : CDN + 'tk-join-cafe.jpg'; var title = isPost ? ((doc.querySelector('meta[property="og:title"]') || {}).content || doc.title) : 'The Knowledge'; var sub = isPost ? 'The Knowledge' : 'One essay every Thursday'; var el = openSheet(GRAB + XB + '
Send this to a friend
' + '
' + esc(title) + '
' + sub + '
' + esc(url.replace('https://', '')) + '
' + '' + '
When they subscribe, it counts towards your rewards.
', 'mid', { label: 'Share with a friend', backdrop: true }); if (!el) return; el.querySelector('.tk-btn').addEventListener('click', function () { native ? doShare(url, this) : copy(url, this); }); } /* ---------- on-page pieces ---------- */ function midCard() { var kids = [].filter.call(article.children, function (n) { return n.tagName === 'P' && n.textContent.trim().length > 60; }); if (kids.length < 8) return; var at = kids[Math.floor(kids.length * 0.45)]; var nx = at.nextElementSibling; if (nx && nx.tagName !== 'P') return; var d = doc.createElement('div'); d.className = 'tkx tk-card not-prose'; d.innerHTML = '
David Elikwu
Enjoying this one?
I send an essay like it every Thursday.
' + '
' + form(FORM_SUB, 'Subscribe') + '
' + '
' + FACES + 'Join 40,000+ readers ★★★★★
'; at.parentNode.insertBefore(d, at.nextSibling); wireAll(d); } function welcomeNote(who) { var d = doc.createElement('div'); d.className = 'tkx tk-note not-prose'; d.innerHTML = '
David Elikwu
' + esc(who) + ' thought you’d like this.
It’s from my weekly newsletter.
' + '
' + form(FORM_SUB, 'Subscribe', 'onbg') + '
' + '
One essay every Thursday. Join 40,000+ readers.
'; var h = doc.querySelector('main h1'), at = h ? (h.previousElementSibling || h) : null; if (at && at.parentNode) at.parentNode.insertBefore(d, at); else article.insertBefore(d, article.firstChild); wireAll(d); } function friendName(code, cb) { var done = false, t = setTimeout(function () { fin('A friend'); }, 1200); function fin(n) { if (done) return; done = true; clearTimeout(t); cb(n); } try { fetch(API + '/referrals/name?ref=' + encodeURIComponent(code), { credentials: 'omit' }) .then(function (r) { return r.ok ? r.json() : {}; }) .then(function (j) { var n = j && typeof j.name === 'string' ? j.name.trim() : ''; fin(/^[\p{L}][\p{L}' -]{0,23}$/u.test(n) ? n : 'A friend'); }) .catch(function () { fin('A friend'); }); } catch (e) { fin('A friend'); } } window.__tkGrow.friendName = friendName; /* ---------- run ---------- */ function cleanUrl() { try { ['share', 'copy', 'via'].forEach(function (k) { qs.delete(k); }); var q = qs.toString(); history.replaceState(null, '', location.pathname + (q ? '?' + q : '') + location.hash); } catch (e) {} } function onScroll(frac, fn) { function chk() { var r = article.getBoundingClientRect(); if (r.height && (innerHeight - r.top) / r.height >= frac) { removeEventListener('scroll', chk); fn(); } } addEventListener('scroll', chk, { passive: true }); chk(); } function quiet() { var a = doc.activeElement; return !(a && /INPUT|TEXTAREA|SELECT/.test(a.tagName)); } function run() { wireAll(); if (share) { var via = qs.get('via'), wantCopy = qs.get('copy') === '1', target = shareTarget(share); cleanUrl(); if (via === 'sms') location.href = 'sms:?&body=' + encodeURIComponent(MSG + ' ' + target); else if (via === 'email') location.href = 'mailto:?subject=' + encodeURIComponent("Thought you'd like this") + '&body=' + encodeURIComponent(MSG + ':\n\n' + target); setTimeout(function () { sharerSheet(wantCopy); }, via ? 900 : 350); return; } if (!isPost) return; if (!isSub && refFromUrl) { friendName(ref, welcomeNote); } else if (!isSub) { midCard(); } var last = get('tk_sheet') || {}, age = Date.now() - (last.t || 0); if (!isSub) { if (age > 14 * DAY) onScroll(refFromUrl ? 0.7 : 0.55, function () { if (!isSub && quiet()) subSheet(); }); } else if (age > (last.k === 'sov' ? 30 : 3) * DAY && !get('tk_sov')) { onScroll(0.75, function () { if (quiet()) { var s = sovSheet(); if (s) s.addEventListener('tk:subscribed', function () { set('tk_sov', 1); }); } }); } } if (doc.readyState === 'loading') doc.addEventListener('DOMContentLoaded', run); else run(); })();