No invite links yet. Create one above.
';return}s.innerHTML=t.map(e=>`
${esc(e.label||e.slug)}
/invite/${esc(e.slug)} \u2014 ${e.trial_days}-day trial
${e.is_active?"Active":"Inactive"}
${esc(e.invite_url)}
Copied!
${e.total_signups||0}
Signups
${e.active_trials||0}
Active Trials
${e.conversions||0}
Converted
${e.is_active?``:``}
${e.last_signup_at?`Last signup: ${new Date(e.last_signup_at).toLocaleDateString()}`:""}
`).join("")}async function copyUrl(t,s){try{await navigator.clipboard.writeText(s);const e=s.split("/invite/")[1],n=document.querySelector('[id^="cf-"]'),i=t.querySelector(".copy-feedback");i&&(i.style.display="inline",setTimeout(()=>i.style.display="none",2e3))}catch{window.prompt("Copy this link:",s)}}async function toggleActive(t,s){try{(await(await fetch(`/api/admin/invite-links/${t}`,{method:"PATCH",headers:{"Content-Type":"application/json","Authorization":"Bearer "+_token},body:JSON.stringify({is_active:s})})).json()).success&&_reload()}catch(e){console.error(e)}}async function createLink(){const t=document.getElementById("newSlug").value.trim(),s=document.getElementById("newLabel").value.trim(),e=parseInt(document.getElementById("newTrialDays").value,10)||60,n=document.getElementById("createMsg");if(!t){n.textContent="Slug is required.",n.className="create-msg error",n.style.display="block";return}try{const a=await(await fetch("/api/admin/invite-links",{method:"POST",headers:{"Content-Type":"application/json","Authorization":"Bearer "+_token},body:JSON.stringify({slug:t,label:s,trial_days:e})})).json();a.success?(n.textContent=`Created! URL: ${a.link.invite_url}`,n.className="create-msg success",n.style.display="block",document.getElementById("newSlug").value="",document.getElementById("newLabel").value="",_reload()):(n.textContent=a.message||"Failed to create link.",n.className="create-msg error",n.style.display="block")}catch{n.textContent="Network error. Please try again.",n.className="create-msg error",n.style.display="block"}}function esc(t){return t?String(t).replace(/&/g,"&").replace(//g,">").replace(/"/g,"""):""}