@taprail/checkout 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-EZFKKJ46.js → chunk-CIVYKW6L.js} +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.global.js +1 -1
- package/dist/index.js +1 -1
- package/dist/react.cjs +1 -1
- package/dist/react.js +1 -1
- package/package.json +1 -1
|
@@ -53,4 +53,4 @@ var Y=new Set(["approved","declined","expired","cancelled","refunded"]),v={apiBa
|
|
|
53
53
|
@keyframes tr-pop{from{opacity:0;transform:translateY(8px) scale(.99)}to{opacity:1;transform:none}}
|
|
54
54
|
@keyframes tr-spin{to{transform:rotate(360deg)}}
|
|
55
55
|
@media (prefers-reduced-motion:reduce){[data-taprail="overlay"],[data-taprail="frame"]{animation:none}.tr-ring{animation-duration:1.4s}.tr-btn,[data-taprail="close"]{transition:none}}
|
|
56
|
-
`;function _t(){if(typeof document>"u"||document.getElementById(J))return;let r=document.createElement("style");r.id=J,r.textContent=Ct,document.head.appendChild(r);}var Tt='<svg viewBox="0 0 500 500" width="22" height="22" fill="none" aria-hidden="true" focusable="false"><path d="M147.789 394.059C214.872 439.472 307.74 425.816 359.214 362.946L371.749 347.654L437.045 393.713L423.39 410.225C385.37 456.004 331.287 486.708 271.399 496.516C211.059 506.557 151.221 494.72 102.868 463.262C50.9889 429.616 15.9579 377.523 4.20937 316.703C-1.75472 286.404 -1.3776 255.258 5.31847 225.103C12.0145 194.947 24.8939 166.394 43.1963 141.127L55.4452 124.132L120.503 170.19L109.04 186.311C61.1408 253.994 78.4657 347.194 147.789 394.059Z" fill="currentColor"/><path d="M500 310.578L428.222 321.724L386.423 70.7041L126.55 111.075L114.992 41.7101L377.391 0.879109C385.717 -0.444061 394.224 -0.272305 402.485 1.38576L405.059 1.91543C418.429 4.93491 430.565 11.7347 439.92 21.4473C449.274 31.16 455.423 43.3453 457.581 56.4489L500 310.578Z" fill="currentColor"/><path d="M257.046 329.232C306.454 329.232 346.506 290.526 346.506 242.779C346.506 195.033 306.454 156.327 257.046 156.327C207.639 156.327 167.586 195.033 167.586 242.779C167.586 290.526 207.639 329.232 257.046 329.232Z" fill="currentColor"/></svg>';function T(r=false){let e=document.createElement("div");return e.className="tr-logo",r&&(e.style.justifyContent="flex-start"),e.innerHTML=`${Tt}<span class="tr-word">Taprail</span>`,e}function L(r=false){let e=document.createElement("div");return e.className=r?"tr-ring tr-sm":"tr-ring",e}var Lt='<svg width="15" height="15" viewBox="0 0 15 15" fill="none" aria-hidden="true"><path d="M3.5 3.5l8 8M11.5 3.5l-8 8" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"/></svg>',Nt='<svg width="13" height="13" viewBox="0 0 16 16" fill="none" aria-hidden="true"><rect x="5.25" y="5.25" width="8.5" height="8.5" rx="2" stroke="currentColor" stroke-width="1.4"/><path d="M10.75 5.25V4a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v4.75a2 2 0 0 0 2 2h1.25" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"/></svg>',At='<svg width="24" height="24" viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="M5 12.5l4.2 4.2L19 7" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/></svg>';function Pt(r,e={}){let{id:a}=tt(r);return ft()?(window.location.href=X(a),Q(a,e,"app")):Q(a,e,"email")}function Q(r,e,a){return new Promise(d=>{let p=false,N=false,y,j=2e3,w=false,A=0,E=a==="app"?"app":"taprail",f={},et=document.activeElement,rt=document.body.style.overflow;_t();let{palette:b,radius:nt,font:at}=wt(e.theme??{});document.querySelector('[data-taprail="overlay"]')?.remove();let g=document.createElement("div");g.setAttribute("data-taprail","overlay"),g.setAttribute("role","dialog"),g.setAttribute("aria-modal","true"),g.setAttribute("aria-label","Pay with Taprail");let F={"--tr-surface":b.surface,"--tr-text":b.text,"--tr-text-rgb":Et(b.text),"--tr-muted":b.muted,"--tr-accent":b.accent,"--tr-accent-text":b.accentText,"--tr-backdrop":b.backdrop,"--tr-radius":`${nt}px`,"--tr-font":at};for(let t in F)g.style.setProperty(t,F[t]);let S=document.createElement("div");S.setAttribute("data-taprail","frame");let x=document.createElement("button");x.setAttribute("data-taprail","close"),x.setAttribute("aria-label","Close"),x.innerHTML=Lt;let P=document.createElement("div");function C(t){P.replaceChildren(t);}function ot(){clearTimeout(y),document.removeEventListener("keydown",I),document.removeEventListener("visibilitychange",U),window.removeEventListener("focus",O),g.remove(),document.body.style.overflow=rt,et?.focus?.();}function k(t){p||(p=true,ot(),d(t),e.redirect&&t.status!=="closed"&&xt(t));}function M(){p||(e.onClose?.(),k({status:"closed",order_id:r,transaction_reference:null,return_url:null}));}function I(t){t.key==="Escape"&&M();}function G(t){if(p)return;W();let o={status:t.status,order_id:t.order_id,transaction_reference:t.transaction_reference,return_url:t.return_url,rail:E};t.status==="approved"?(e.onSuccess?.(o),pt(o)):k(o);}function R(t){w=true,j=t,clearTimeout(y),y=setTimeout(z,400);}function W(){w=false,clearTimeout(y);}async function z(){if(!(p||N||!w)){N=true;try{let t=await H(r);if(A=0,t._ok&&(f={amount_kobo:t.amount_kobo,currency:t.currency,merchant_name:t.merchant_name},Y.has(t.status))){G(t);return}}catch(t){A+=1,A===4&&e.onError?.(t instanceof Error?t:new Error(String(t)));}finally{N=false;}!p&&w&&(y=setTimeout(z,j));}}function O(){p||!w||(clearTimeout(y),z());}function U(){document.visibilityState==="visible"&&O();}function $(){let t=document.createElement("div");if(t.className="tr-sum",f.amount_kobo!=null){let o=document.createElement("div");if(o.className="tr-amount",o.textContent=D(f.amount_kobo,f.currency),t.appendChild(o),f.merchant_name){let s=document.createElement("div");s.className="tr-merchant",s.textContent=f.merchant_name,t.appendChild(s);}}else {let o=document.createElement("div");o.className="tr-title",o.textContent="Complete your payment",t.appendChild(o);}return t}function it(){P.querySelectorAll(".tr-sum").forEach(t=>t.replaceWith($()));}function K(){let t=document.createElement("div");t.setAttribute("data-taprail","card"),t.classList.add("tr-left");let o=document.createElement("div");o.className="tr-sub",o.textContent="Enter your email to pay with Taprail, or by bank transfer.";let s=document.createElement("div");s.className="tr-field";let c=document.createElement("label");c.className="tr-label",c.textContent="Email",c.htmlFor="tr-email";let n=document.createElement("input");n.className="tr-input",n.id="tr-email",n.type="email",n.inputMode="email",n.autocomplete="email",n.placeholder="you@example.com",n.value=e.email??"";let l=document.createElement("div");l.className="tr-err",s.append(c,n,l);let i=document.createElement("button");i.className="tr-btn tr-mt",i.type="button";let u=document.createElement("span");u.textContent="Continue",i.appendChild(u);function m(h){l.textContent=h,l.classList.add("tr-on"),n.classList.add("tr-bad");}function V(){l.classList.remove("tr-on"),n.classList.remove("tr-bad");}async function q(){let h=n.value.trim();if(!h||!/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(h)){m("Enter a valid email address."),n.focus();return}V(),i.setAttribute("disabled","true"),u.textContent="Checking",i.prepend(L(true));try{let _=await bt(r,h);_.method==="taprail"?(E="taprail",st()):(E="transfer",ct(_.account));}catch(_){i.querySelector(".tr-ring")?.remove(),i.removeAttribute("disabled"),u.textContent="Continue",m(_ instanceof Error?_.message:"Something went wrong. Try again.");}}n.addEventListener("input",V),n.addEventListener("keydown",h=>{h.key==="Enter"&&q();}),i.addEventListener("click",q),t.append(T(true),$(),o,s,i),C(t),setTimeout(()=>n.focus(),30);}function st(){let t=document.createElement("div");t.setAttribute("data-taprail","card");let o=document.createElement("div");o.className="tr-title",o.textContent="Confirm in the Taprail app";let s=document.createElement("div");s.className="tr-sub",s.textContent="We sent a confirmation to your Taprail app. Approve it there to finish.";let c=document.createElement("div");c.className="tr-wait";let n=document.createElement("span");n.textContent="Waiting for approval",c.append(L(true),n);let l=document.createElement("button");l.className="tr-ghost",l.type="button",l.textContent="Use a different email",l.addEventListener("click",()=>{W(),E="taprail",K();}),t.append(T(),o,s,c,l),C(t),R(1800);}function ct(t){let o=document.createElement("div");o.setAttribute("data-taprail","card"),o.classList.add("tr-left");let s=document.createElement("div");s.className="tr-title",s.textContent="Pay by bank transfer";let c=document.createElement("div");c.className="tr-sub";let n=t.amount_kobo!=null?D(t.amount_kobo,f.currency):"the exact amount";c.textContent=`Send ${n} to the account below. We'll confirm automatically.`;let l=document.createElement("div");l.className="tr-acct",l.append(B("Bank",t.bank||"\u2014"),lt("Account number",t.account_number||"\u2014"),B("Account name",t.account_name||"Taprail")),t.amount_kobo!=null&&l.append(B("Amount",D(t.amount_kobo,f.currency)));let i=document.createElement("div");i.className="tr-wait";let u=document.createElement("span");if(u.textContent="Waiting for your transfer",i.append(L(true),u),o.append(T(true),s,c,l),t.expires_at){let m=document.createElement("div");m.className="tr-expiry",o.appendChild(m),dt(m,t.expires_at);}o.appendChild(i),C(o),R(2500);}function B(t,o){let s=document.createElement("div");s.className="tr-row";let c=document.createElement("span");c.className="tr-rk",c.textContent=t;let n=document.createElement("span");return n.className="tr-rv",n.textContent=o,s.append(c,n),s}function lt(t,o){let s=document.createElement("div");s.className="tr-row";let c=document.createElement("span");c.className="tr-rk",c.textContent=t;let n=document.createElement("span");n.style.display="inline-flex",n.style.alignItems="center",n.style.gap="10px";let l=document.createElement("span");l.className="tr-rv tr-mono",l.textContent=o;let i=document.createElement("button");return i.className="tr-copy",i.type="button",i.innerHTML=`${Nt}<span>Copy</span>`,i.addEventListener("click",async()=>{try{await navigator.clipboard.writeText(o.replace(/\s/g,""));let u=i.querySelector("span");u&&(u.textContent="Copied",setTimeout(()=>u.textContent="Copy",1400));}catch{}}),n.append(l,i),s.append(c,n),s}function dt(t,o){let s=new Date(o).getTime();if(Number.isNaN(s))return;let c=()=>{if(p)return;let n=Math.max(0,Math.floor((s-Date.now())/1e3)),l=Math.floor(n/60),i=n%60;t.textContent=n>0?`Account expires in ${l}:${i.toString().padStart(2,"0")}`:"This account has expired.",n>0&&!p&&setTimeout(c,1e3);};c();}function ut(){let t=document.createElement("div");t.setAttribute("data-taprail","card");let o=document.createElement("div");o.className="tr-title",o.textContent="Continue in the Taprail app";let s=document.createElement("div");s.className="tr-sub",s.textContent="Approve this payment in the Taprail app, then come back here.";let c=document.createElement("a");c.className="tr-btn tr-mt",c.href=X(r);let n=document.createElement("span");n.textContent="Open Taprail",c.appendChild(n);let l=document.createElement("div");l.className="tr-wait";let i=document.createElement("span");i.textContent="Waiting for approval",l.append(L(true),i),t.append(T(),$(),s,c,l),C(t),R(1200);}function pt(t){let o=document.createElement("div");o.setAttribute("data-taprail","card");let s=document.createElement("div");s.className="tr-check",s.innerHTML=At;let c=document.createElement("div");c.className="tr-title",c.textContent="Payment complete";let n=document.createElement("div");n.className="tr-sub",o.append(s,c,n);let l=E==="transfer"&&e.appNudge!==false;if(l){n.textContent="Next time, pay with a single tap. Get the Taprail app.";let i=document.createElement("a");i.className="tr-btn tr-mt",i.href=mt,i.target="_blank",i.rel="noopener";let u=document.createElement("span");u.textContent="Get the Taprail app",i.appendChild(u);let m=document.createElement("button");m.className="tr-ghost",m.type="button",m.textContent="Done",m.addEventListener("click",()=>k(t)),o.append(i,m);}else {n.textContent=f.merchant_name?`Your payment to ${f.merchant_name} is confirmed.`:"Your payment is confirmed.";let i=document.createElement("button");i.className="tr-btn tr-mt",i.type="button";let u=document.createElement("span");u.textContent="Done",i.appendChild(u),i.addEventListener("click",()=>k(t)),o.append(i);}x.onclick=()=>k(t),setTimeout(()=>k(t),l?12e3:6e3),C(o);}x.addEventListener("click",M),g.addEventListener("click",t=>{t.target===g&&M();}),document.addEventListener("keydown",I),document.addEventListener("visibilitychange",U),window.addEventListener("focus",O),S.append(P,x),g.appendChild(S),document.body.appendChild(g),document.body.style.overflow="hidden",H(r).then(t=>{if(!p){if(t._ok&&(f={amount_kobo:t.amount_kobo,currency:t.currency,merchant_name:t.merchant_name},Y.has(t.status))){G(t);return}it();}}).catch(()=>{}),a==="app"?ut():K(),x.focus();})}async function Mt(r){let{id:e}=tt(r),a=await H(e);return {status:a.status,order_id:a.order_id,transaction_reference:a.transaction_reference,return_url:a.return_url}}export{St as a,Pt as b,Mt as c};
|
|
56
|
+
`;function _t(){if(typeof document>"u"||document.getElementById(J))return;let r=document.createElement("style");r.id=J,r.textContent=Ct,document.head.appendChild(r);}var Tt='<svg viewBox="0 0 500 500" width="22" height="22" fill="none" aria-hidden="true" focusable="false"><path d="M147.789 394.059C214.872 439.472 307.74 425.816 359.214 362.946L371.749 347.654L437.045 393.713L423.39 410.225C385.37 456.004 331.287 486.708 271.399 496.516C211.059 506.557 151.221 494.72 102.868 463.262C50.9889 429.616 15.9579 377.523 4.20937 316.703C-1.75472 286.404 -1.3776 255.258 5.31847 225.103C12.0145 194.947 24.8939 166.394 43.1963 141.127L55.4452 124.132L120.503 170.19L109.04 186.311C61.1408 253.994 78.4657 347.194 147.789 394.059Z" fill="currentColor"/><path d="M500 310.578L428.222 321.724L386.423 70.7041L126.55 111.075L114.992 41.7101L377.391 0.879109C385.717 -0.444061 394.224 -0.272305 402.485 1.38576L405.059 1.91543C418.429 4.93491 430.565 11.7347 439.92 21.4473C449.274 31.16 455.423 43.3453 457.581 56.4489L500 310.578Z" fill="currentColor"/><path d="M257.046 329.232C306.454 329.232 346.506 290.526 346.506 242.779C346.506 195.033 306.454 156.327 257.046 156.327C207.639 156.327 167.586 195.033 167.586 242.779C167.586 290.526 207.639 329.232 257.046 329.232Z" fill="currentColor"/></svg>';function T(r=false){let e=document.createElement("div");return e.className="tr-logo",r&&(e.style.justifyContent="flex-start"),e.innerHTML=`${Tt}<span class="tr-word">Taprail</span>`,e}function L(r=false){let e=document.createElement("div");return e.className=r?"tr-ring tr-sm":"tr-ring",e}var Lt='<svg width="15" height="15" viewBox="0 0 15 15" fill="none" aria-hidden="true"><path d="M3.5 3.5l8 8M11.5 3.5l-8 8" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"/></svg>',Nt='<svg width="13" height="13" viewBox="0 0 16 16" fill="none" aria-hidden="true"><rect x="5.25" y="5.25" width="8.5" height="8.5" rx="2" stroke="currentColor" stroke-width="1.4"/><path d="M10.75 5.25V4a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v4.75a2 2 0 0 0 2 2h1.25" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"/></svg>',At='<svg width="24" height="24" viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="M5 12.5l4.2 4.2L19 7" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/></svg>';function Pt(r,e={}){let{id:a}=tt(r);return ft()?(window.location.href=X(a),Q(a,e,"app")):Q(a,e,"email")}function Q(r,e,a){return new Promise(d=>{let p=false,N=false,y,j=2e3,w=false,A=0,E=a==="app"?"app":"taprail",f={},et=document.activeElement,rt=document.body.style.overflow;_t();let{palette:b,radius:nt,font:at}=wt(e.theme??{});document.querySelector('[data-taprail="overlay"]')?.remove();let g=document.createElement("div");g.setAttribute("data-taprail","overlay"),g.setAttribute("role","dialog"),g.setAttribute("aria-modal","true"),g.setAttribute("aria-label","Pay with Taprail");let F={"--tr-surface":b.surface,"--tr-text":b.text,"--tr-text-rgb":Et(b.text),"--tr-muted":b.muted,"--tr-accent":b.accent,"--tr-accent-text":b.accentText,"--tr-backdrop":b.backdrop,"--tr-radius":`${nt}px`,"--tr-font":at};for(let t in F)g.style.setProperty(t,F[t]);let S=document.createElement("div");S.setAttribute("data-taprail","frame");let x=document.createElement("button");x.setAttribute("data-taprail","close"),x.setAttribute("aria-label","Close"),x.innerHTML=Lt;let P=document.createElement("div");function C(t){P.replaceChildren(t);}function ot(){clearTimeout(y),document.removeEventListener("keydown",I),document.removeEventListener("visibilitychange",U),window.removeEventListener("focus",O),g.remove(),document.body.style.overflow=rt,et?.focus?.();}function k(t){p||(p=true,ot(),d(t),e.redirect&&t.status!=="closed"&&xt(t));}function M(){p||(e.onClose?.(),k({status:"closed",order_id:r,transaction_reference:null,return_url:null}));}function I(t){t.key==="Escape"&&M();}function G(t){if(p)return;W();let o={status:t.status,order_id:t.order_id,transaction_reference:t.transaction_reference,return_url:t.return_url,rail:E};t.status==="approved"?(e.onSuccess?.(o),pt(o)):k(o);}function R(t){w=true,j=t,clearTimeout(y),y=setTimeout(z,400);}function W(){w=false,clearTimeout(y);}async function z(){if(!(p||N||!w)){N=true;try{let t=await H(r);if(A=0,t._ok&&(f={amount_kobo:t.amount_kobo,currency:t.currency,merchant_name:t.merchant_name},Y.has(t.status))){G(t);return}}catch(t){A+=1,A===4&&e.onError?.(t instanceof Error?t:new Error(String(t)));}finally{N=false;}!p&&w&&(y=setTimeout(z,j));}}function O(){p||!w||(clearTimeout(y),z());}function U(){document.visibilityState==="visible"&&O();}function $(){let t=document.createElement("div");if(t.className="tr-sum",f.amount_kobo!=null){let o=document.createElement("div");if(o.className="tr-amount",o.textContent=D(f.amount_kobo,f.currency),t.appendChild(o),f.merchant_name){let s=document.createElement("div");s.className="tr-merchant",s.textContent=f.merchant_name,t.appendChild(s);}}else {let o=document.createElement("div");o.className="tr-title",o.textContent="Complete your payment",t.appendChild(o);}return t}function it(){P.querySelectorAll(".tr-sum").forEach(t=>t.replaceWith($()));}function K(){let t=document.createElement("div");t.setAttribute("data-taprail","card"),t.classList.add("tr-left");let o=document.createElement("div");o.className="tr-sub",o.textContent="Enter your email to pay with Taprail, or by bank transfer.";let s=document.createElement("div");s.className="tr-field";let c=document.createElement("label");c.className="tr-label",c.textContent="Email",c.htmlFor="tr-email";let n=document.createElement("input");n.className="tr-input",n.id="tr-email",n.type="email",n.inputMode="email",n.autocomplete="email",n.placeholder="you@example.com",n.value=e.email??"";let l=document.createElement("div");l.className="tr-err",s.append(c,n,l);let i=document.createElement("button");i.className="tr-btn tr-mt",i.type="button";let u=document.createElement("span");u.textContent="Continue",i.appendChild(u);function m(h){l.textContent=h,l.classList.add("tr-on"),n.classList.add("tr-bad");}function V(){l.classList.remove("tr-on"),n.classList.remove("tr-bad");}async function q(){let h=n.value.trim();if(!h||!/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(h)){m("Enter a valid email address."),n.focus();return}V(),i.setAttribute("disabled","true"),u.textContent="Checking",i.prepend(L(true));try{let _=await bt(r,h);_.method==="taprail"?(E="taprail",st()):(E="transfer",ct(_.account));}catch(_){i.querySelector(".tr-ring")?.remove(),i.removeAttribute("disabled"),u.textContent="Continue",m(_ instanceof Error?_.message:"Something went wrong. Try again.");}}n.addEventListener("input",V),n.addEventListener("keydown",h=>{h.key==="Enter"&&q();}),i.addEventListener("click",q),t.append(T(true),$(),o,s,i),C(t),setTimeout(()=>n.focus(),30);}function st(){let t=document.createElement("div");t.setAttribute("data-taprail","card");let o=document.createElement("div");o.className="tr-title",o.textContent="Confirm in the Taprail app";let s=document.createElement("div");s.className="tr-sub",s.textContent="We sent a confirmation to your Taprail app. Approve it there to finish.";let c=document.createElement("div");c.className="tr-wait";let n=document.createElement("span");n.textContent="Waiting for approval",c.append(L(true),n);let l=document.createElement("button");l.className="tr-ghost",l.type="button",l.textContent="Use a different email",l.addEventListener("click",()=>{W(),E="taprail",K();}),t.append(T(),o,s,c,l),C(t),R(1800);}function ct(t){let o=document.createElement("div");o.setAttribute("data-taprail","card"),o.classList.add("tr-left");let s=document.createElement("div");s.className="tr-title",s.textContent="Pay by bank transfer";let c=document.createElement("div");c.className="tr-sub";let n=t.amount_kobo!=null?D(t.amount_kobo,f.currency):"the exact amount";c.textContent=`Send ${n} to the account below. We'll confirm automatically.`;let l=document.createElement("div");l.className="tr-acct",l.append(B("Bank",t.bank||"\u2014"),lt("Account number",t.account_number||"\u2014"),B("Account name",t.account_name||"Taprail")),t.amount_kobo!=null&&l.append(B("Amount",D(t.amount_kobo,f.currency)));let i=document.createElement("div");i.className="tr-wait";let u=document.createElement("span");if(u.textContent="Waiting for your transfer",i.append(L(true),u),o.append(T(true),s,c,l),t.expires_at){let m=document.createElement("div");m.className="tr-expiry",o.appendChild(m),dt(m,t.expires_at);}o.appendChild(i),C(o),R(1500);}function B(t,o){let s=document.createElement("div");s.className="tr-row";let c=document.createElement("span");c.className="tr-rk",c.textContent=t;let n=document.createElement("span");return n.className="tr-rv",n.textContent=o,s.append(c,n),s}function lt(t,o){let s=document.createElement("div");s.className="tr-row";let c=document.createElement("span");c.className="tr-rk",c.textContent=t;let n=document.createElement("span");n.style.display="inline-flex",n.style.alignItems="center",n.style.gap="10px";let l=document.createElement("span");l.className="tr-rv tr-mono",l.textContent=o;let i=document.createElement("button");return i.className="tr-copy",i.type="button",i.innerHTML=`${Nt}<span>Copy</span>`,i.addEventListener("click",async()=>{try{await navigator.clipboard.writeText(o.replace(/\s/g,""));let u=i.querySelector("span");u&&(u.textContent="Copied",setTimeout(()=>u.textContent="Copy",1400));}catch{}}),n.append(l,i),s.append(c,n),s}function dt(t,o){let s=new Date(o).getTime();if(Number.isNaN(s))return;let c=()=>{if(p)return;let n=Math.max(0,Math.floor((s-Date.now())/1e3)),l=Math.floor(n/60),i=n%60;t.textContent=n>0?`Account expires in ${l}:${i.toString().padStart(2,"0")}`:"This account has expired.",n>0&&!p&&setTimeout(c,1e3);};c();}function ut(){let t=document.createElement("div");t.setAttribute("data-taprail","card");let o=document.createElement("div");o.className="tr-title",o.textContent="Continue in the Taprail app";let s=document.createElement("div");s.className="tr-sub",s.textContent="Approve this payment in the Taprail app, then come back here.";let c=document.createElement("a");c.className="tr-btn tr-mt",c.href=X(r);let n=document.createElement("span");n.textContent="Open Taprail",c.appendChild(n);let l=document.createElement("div");l.className="tr-wait";let i=document.createElement("span");i.textContent="Waiting for approval",l.append(L(true),i),t.append(T(),$(),s,c,l),C(t),R(1200);}function pt(t){let o=document.createElement("div");o.setAttribute("data-taprail","card");let s=document.createElement("div");s.className="tr-check",s.innerHTML=At;let c=document.createElement("div");c.className="tr-title",c.textContent="Payment complete";let n=document.createElement("div");n.className="tr-sub",o.append(s,c,n);let l=E==="transfer"&&e.appNudge!==false;if(l){n.textContent="Next time, pay with a single tap. Get the Taprail app.";let i=document.createElement("a");i.className="tr-btn tr-mt",i.href=mt,i.target="_blank",i.rel="noopener";let u=document.createElement("span");u.textContent="Get the Taprail app",i.appendChild(u);let m=document.createElement("button");m.className="tr-ghost",m.type="button",m.textContent="Done",m.addEventListener("click",()=>k(t)),o.append(i,m);}else {n.textContent=f.merchant_name?`Your payment to ${f.merchant_name} is confirmed.`:"Your payment is confirmed.";let i=document.createElement("button");i.className="tr-btn tr-mt",i.type="button";let u=document.createElement("span");u.textContent="Done",i.appendChild(u),i.addEventListener("click",()=>k(t)),o.append(i);}x.onclick=()=>k(t),setTimeout(()=>k(t),l?12e3:6e3),C(o);}x.addEventListener("click",M),g.addEventListener("click",t=>{t.target===g&&M();}),document.addEventListener("keydown",I),document.addEventListener("visibilitychange",U),window.addEventListener("focus",O),S.append(P,x),g.appendChild(S),document.body.appendChild(g),document.body.style.overflow="hidden",H(r).then(t=>{if(!p){if(t._ok&&(f={amount_kobo:t.amount_kobo,currency:t.currency,merchant_name:t.merchant_name},Y.has(t.status))){G(t);return}it();}}).catch(()=>{}),a==="app"?ut():K(),x.focus();})}async function Mt(r){let{id:e}=tt(r),a=await H(e);return {status:a.status,order_id:a.order_id,transaction_reference:a.transaction_reference,return_url:a.return_url}}export{St as a,Pt as b,Mt as c};
|
package/dist/index.cjs
CHANGED
|
@@ -53,4 +53,4 @@
|
|
|
53
53
|
@keyframes tr-pop{from{opacity:0;transform:translateY(8px) scale(.99)}to{opacity:1;transform:none}}
|
|
54
54
|
@keyframes tr-spin{to{transform:rotate(360deg)}}
|
|
55
55
|
@media (prefers-reduced-motion:reduce){[data-taprail="overlay"],[data-taprail="frame"]{animation:none}.tr-ring{animation-duration:1.4s}.tr-btn,[data-taprail="close"]{transition:none}}
|
|
56
|
-
`;function _t(){if(typeof document>"u"||document.getElementById(J))return;let r=document.createElement("style");r.id=J,r.textContent=Ct,document.head.appendChild(r);}var Tt='<svg viewBox="0 0 500 500" width="22" height="22" fill="none" aria-hidden="true" focusable="false"><path d="M147.789 394.059C214.872 439.472 307.74 425.816 359.214 362.946L371.749 347.654L437.045 393.713L423.39 410.225C385.37 456.004 331.287 486.708 271.399 496.516C211.059 506.557 151.221 494.72 102.868 463.262C50.9889 429.616 15.9579 377.523 4.20937 316.703C-1.75472 286.404 -1.3776 255.258 5.31847 225.103C12.0145 194.947 24.8939 166.394 43.1963 141.127L55.4452 124.132L120.503 170.19L109.04 186.311C61.1408 253.994 78.4657 347.194 147.789 394.059Z" fill="currentColor"/><path d="M500 310.578L428.222 321.724L386.423 70.7041L126.55 111.075L114.992 41.7101L377.391 0.879109C385.717 -0.444061 394.224 -0.272305 402.485 1.38576L405.059 1.91543C418.429 4.93491 430.565 11.7347 439.92 21.4473C449.274 31.16 455.423 43.3453 457.581 56.4489L500 310.578Z" fill="currentColor"/><path d="M257.046 329.232C306.454 329.232 346.506 290.526 346.506 242.779C346.506 195.033 306.454 156.327 257.046 156.327C207.639 156.327 167.586 195.033 167.586 242.779C167.586 290.526 207.639 329.232 257.046 329.232Z" fill="currentColor"/></svg>';function T(r=false){let e=document.createElement("div");return e.className="tr-logo",r&&(e.style.justifyContent="flex-start"),e.innerHTML=`${Tt}<span class="tr-word">Taprail</span>`,e}function L(r=false){let e=document.createElement("div");return e.className=r?"tr-ring tr-sm":"tr-ring",e}var Lt='<svg width="15" height="15" viewBox="0 0 15 15" fill="none" aria-hidden="true"><path d="M3.5 3.5l8 8M11.5 3.5l-8 8" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"/></svg>',Nt='<svg width="13" height="13" viewBox="0 0 16 16" fill="none" aria-hidden="true"><rect x="5.25" y="5.25" width="8.5" height="8.5" rx="2" stroke="currentColor" stroke-width="1.4"/><path d="M10.75 5.25V4a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v4.75a2 2 0 0 0 2 2h1.25" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"/></svg>',At='<svg width="24" height="24" viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="M5 12.5l4.2 4.2L19 7" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/></svg>';function Pt(r,e={}){let{id:a}=tt(r);return ft()?(window.location.href=X(a),Q(a,e,"app")):Q(a,e,"email")}function Q(r,e,a){return new Promise(d=>{let p=false,N=false,y,j=2e3,w=false,A=0,E=a==="app"?"app":"taprail",f={},et=document.activeElement,rt=document.body.style.overflow;_t();let{palette:b,radius:nt,font:at}=wt(e.theme??{});document.querySelector('[data-taprail="overlay"]')?.remove();let g=document.createElement("div");g.setAttribute("data-taprail","overlay"),g.setAttribute("role","dialog"),g.setAttribute("aria-modal","true"),g.setAttribute("aria-label","Pay with Taprail");let F={"--tr-surface":b.surface,"--tr-text":b.text,"--tr-text-rgb":Et(b.text),"--tr-muted":b.muted,"--tr-accent":b.accent,"--tr-accent-text":b.accentText,"--tr-backdrop":b.backdrop,"--tr-radius":`${nt}px`,"--tr-font":at};for(let t in F)g.style.setProperty(t,F[t]);let S=document.createElement("div");S.setAttribute("data-taprail","frame");let x=document.createElement("button");x.setAttribute("data-taprail","close"),x.setAttribute("aria-label","Close"),x.innerHTML=Lt;let P=document.createElement("div");function C(t){P.replaceChildren(t);}function ot(){clearTimeout(y),document.removeEventListener("keydown",I),document.removeEventListener("visibilitychange",U),window.removeEventListener("focus",O),g.remove(),document.body.style.overflow=rt,et?.focus?.();}function k(t){p||(p=true,ot(),d(t),e.redirect&&t.status!=="closed"&&xt(t));}function M(){p||(e.onClose?.(),k({status:"closed",order_id:r,transaction_reference:null,return_url:null}));}function I(t){t.key==="Escape"&&M();}function G(t){if(p)return;W();let o={status:t.status,order_id:t.order_id,transaction_reference:t.transaction_reference,return_url:t.return_url,rail:E};t.status==="approved"?(e.onSuccess?.(o),pt(o)):k(o);}function R(t){w=true,j=t,clearTimeout(y),y=setTimeout(z,400);}function W(){w=false,clearTimeout(y);}async function z(){if(!(p||N||!w)){N=true;try{let t=await H(r);if(A=0,t._ok&&(f={amount_kobo:t.amount_kobo,currency:t.currency,merchant_name:t.merchant_name},Y.has(t.status))){G(t);return}}catch(t){A+=1,A===4&&e.onError?.(t instanceof Error?t:new Error(String(t)));}finally{N=false;}!p&&w&&(y=setTimeout(z,j));}}function O(){p||!w||(clearTimeout(y),z());}function U(){document.visibilityState==="visible"&&O();}function $(){let t=document.createElement("div");if(t.className="tr-sum",f.amount_kobo!=null){let o=document.createElement("div");if(o.className="tr-amount",o.textContent=D(f.amount_kobo,f.currency),t.appendChild(o),f.merchant_name){let s=document.createElement("div");s.className="tr-merchant",s.textContent=f.merchant_name,t.appendChild(s);}}else {let o=document.createElement("div");o.className="tr-title",o.textContent="Complete your payment",t.appendChild(o);}return t}function it(){P.querySelectorAll(".tr-sum").forEach(t=>t.replaceWith($()));}function K(){let t=document.createElement("div");t.setAttribute("data-taprail","card"),t.classList.add("tr-left");let o=document.createElement("div");o.className="tr-sub",o.textContent="Enter your email to pay with Taprail, or by bank transfer.";let s=document.createElement("div");s.className="tr-field";let c=document.createElement("label");c.className="tr-label",c.textContent="Email",c.htmlFor="tr-email";let n=document.createElement("input");n.className="tr-input",n.id="tr-email",n.type="email",n.inputMode="email",n.autocomplete="email",n.placeholder="you@example.com",n.value=e.email??"";let l=document.createElement("div");l.className="tr-err",s.append(c,n,l);let i=document.createElement("button");i.className="tr-btn tr-mt",i.type="button";let u=document.createElement("span");u.textContent="Continue",i.appendChild(u);function m(h){l.textContent=h,l.classList.add("tr-on"),n.classList.add("tr-bad");}function V(){l.classList.remove("tr-on"),n.classList.remove("tr-bad");}async function q(){let h=n.value.trim();if(!h||!/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(h)){m("Enter a valid email address."),n.focus();return}V(),i.setAttribute("disabled","true"),u.textContent="Checking",i.prepend(L(true));try{let _=await bt(r,h);_.method==="taprail"?(E="taprail",st()):(E="transfer",ct(_.account));}catch(_){i.querySelector(".tr-ring")?.remove(),i.removeAttribute("disabled"),u.textContent="Continue",m(_ instanceof Error?_.message:"Something went wrong. Try again.");}}n.addEventListener("input",V),n.addEventListener("keydown",h=>{h.key==="Enter"&&q();}),i.addEventListener("click",q),t.append(T(true),$(),o,s,i),C(t),setTimeout(()=>n.focus(),30);}function st(){let t=document.createElement("div");t.setAttribute("data-taprail","card");let o=document.createElement("div");o.className="tr-title",o.textContent="Confirm in the Taprail app";let s=document.createElement("div");s.className="tr-sub",s.textContent="We sent a confirmation to your Taprail app. Approve it there to finish.";let c=document.createElement("div");c.className="tr-wait";let n=document.createElement("span");n.textContent="Waiting for approval",c.append(L(true),n);let l=document.createElement("button");l.className="tr-ghost",l.type="button",l.textContent="Use a different email",l.addEventListener("click",()=>{W(),E="taprail",K();}),t.append(T(),o,s,c,l),C(t),R(1800);}function ct(t){let o=document.createElement("div");o.setAttribute("data-taprail","card"),o.classList.add("tr-left");let s=document.createElement("div");s.className="tr-title",s.textContent="Pay by bank transfer";let c=document.createElement("div");c.className="tr-sub";let n=t.amount_kobo!=null?D(t.amount_kobo,f.currency):"the exact amount";c.textContent=`Send ${n} to the account below. We'll confirm automatically.`;let l=document.createElement("div");l.className="tr-acct",l.append(B("Bank",t.bank||"\u2014"),lt("Account number",t.account_number||"\u2014"),B("Account name",t.account_name||"Taprail")),t.amount_kobo!=null&&l.append(B("Amount",D(t.amount_kobo,f.currency)));let i=document.createElement("div");i.className="tr-wait";let u=document.createElement("span");if(u.textContent="Waiting for your transfer",i.append(L(true),u),o.append(T(true),s,c,l),t.expires_at){let m=document.createElement("div");m.className="tr-expiry",o.appendChild(m),dt(m,t.expires_at);}o.appendChild(i),C(o),R(2500);}function B(t,o){let s=document.createElement("div");s.className="tr-row";let c=document.createElement("span");c.className="tr-rk",c.textContent=t;let n=document.createElement("span");return n.className="tr-rv",n.textContent=o,s.append(c,n),s}function lt(t,o){let s=document.createElement("div");s.className="tr-row";let c=document.createElement("span");c.className="tr-rk",c.textContent=t;let n=document.createElement("span");n.style.display="inline-flex",n.style.alignItems="center",n.style.gap="10px";let l=document.createElement("span");l.className="tr-rv tr-mono",l.textContent=o;let i=document.createElement("button");return i.className="tr-copy",i.type="button",i.innerHTML=`${Nt}<span>Copy</span>`,i.addEventListener("click",async()=>{try{await navigator.clipboard.writeText(o.replace(/\s/g,""));let u=i.querySelector("span");u&&(u.textContent="Copied",setTimeout(()=>u.textContent="Copy",1400));}catch{}}),n.append(l,i),s.append(c,n),s}function dt(t,o){let s=new Date(o).getTime();if(Number.isNaN(s))return;let c=()=>{if(p)return;let n=Math.max(0,Math.floor((s-Date.now())/1e3)),l=Math.floor(n/60),i=n%60;t.textContent=n>0?`Account expires in ${l}:${i.toString().padStart(2,"0")}`:"This account has expired.",n>0&&!p&&setTimeout(c,1e3);};c();}function ut(){let t=document.createElement("div");t.setAttribute("data-taprail","card");let o=document.createElement("div");o.className="tr-title",o.textContent="Continue in the Taprail app";let s=document.createElement("div");s.className="tr-sub",s.textContent="Approve this payment in the Taprail app, then come back here.";let c=document.createElement("a");c.className="tr-btn tr-mt",c.href=X(r);let n=document.createElement("span");n.textContent="Open Taprail",c.appendChild(n);let l=document.createElement("div");l.className="tr-wait";let i=document.createElement("span");i.textContent="Waiting for approval",l.append(L(true),i),t.append(T(),$(),s,c,l),C(t),R(1200);}function pt(t){let o=document.createElement("div");o.setAttribute("data-taprail","card");let s=document.createElement("div");s.className="tr-check",s.innerHTML=At;let c=document.createElement("div");c.className="tr-title",c.textContent="Payment complete";let n=document.createElement("div");n.className="tr-sub",o.append(s,c,n);let l=E==="transfer"&&e.appNudge!==false;if(l){n.textContent="Next time, pay with a single tap. Get the Taprail app.";let i=document.createElement("a");i.className="tr-btn tr-mt",i.href=mt,i.target="_blank",i.rel="noopener";let u=document.createElement("span");u.textContent="Get the Taprail app",i.appendChild(u);let m=document.createElement("button");m.className="tr-ghost",m.type="button",m.textContent="Done",m.addEventListener("click",()=>k(t)),o.append(i,m);}else {n.textContent=f.merchant_name?`Your payment to ${f.merchant_name} is confirmed.`:"Your payment is confirmed.";let i=document.createElement("button");i.className="tr-btn tr-mt",i.type="button";let u=document.createElement("span");u.textContent="Done",i.appendChild(u),i.addEventListener("click",()=>k(t)),o.append(i);}x.onclick=()=>k(t),setTimeout(()=>k(t),l?12e3:6e3),C(o);}x.addEventListener("click",M),g.addEventListener("click",t=>{t.target===g&&M();}),document.addEventListener("keydown",I),document.addEventListener("visibilitychange",U),window.addEventListener("focus",O),S.append(P,x),g.appendChild(S),document.body.appendChild(g),document.body.style.overflow="hidden",H(r).then(t=>{if(!p){if(t._ok&&(f={amount_kobo:t.amount_kobo,currency:t.currency,merchant_name:t.merchant_name},Y.has(t.status))){G(t);return}it();}}).catch(()=>{}),a==="app"?ut():K(),x.focus();})}async function Mt(r){let{id:e}=tt(r),a=await H(e);return {status:a.status,order_id:a.order_id,transaction_reference:a.transaction_reference,return_url:a.return_url}}exports.getStatus=Mt;exports.init=St;exports.open=Pt;
|
|
56
|
+
`;function _t(){if(typeof document>"u"||document.getElementById(J))return;let r=document.createElement("style");r.id=J,r.textContent=Ct,document.head.appendChild(r);}var Tt='<svg viewBox="0 0 500 500" width="22" height="22" fill="none" aria-hidden="true" focusable="false"><path d="M147.789 394.059C214.872 439.472 307.74 425.816 359.214 362.946L371.749 347.654L437.045 393.713L423.39 410.225C385.37 456.004 331.287 486.708 271.399 496.516C211.059 506.557 151.221 494.72 102.868 463.262C50.9889 429.616 15.9579 377.523 4.20937 316.703C-1.75472 286.404 -1.3776 255.258 5.31847 225.103C12.0145 194.947 24.8939 166.394 43.1963 141.127L55.4452 124.132L120.503 170.19L109.04 186.311C61.1408 253.994 78.4657 347.194 147.789 394.059Z" fill="currentColor"/><path d="M500 310.578L428.222 321.724L386.423 70.7041L126.55 111.075L114.992 41.7101L377.391 0.879109C385.717 -0.444061 394.224 -0.272305 402.485 1.38576L405.059 1.91543C418.429 4.93491 430.565 11.7347 439.92 21.4473C449.274 31.16 455.423 43.3453 457.581 56.4489L500 310.578Z" fill="currentColor"/><path d="M257.046 329.232C306.454 329.232 346.506 290.526 346.506 242.779C346.506 195.033 306.454 156.327 257.046 156.327C207.639 156.327 167.586 195.033 167.586 242.779C167.586 290.526 207.639 329.232 257.046 329.232Z" fill="currentColor"/></svg>';function T(r=false){let e=document.createElement("div");return e.className="tr-logo",r&&(e.style.justifyContent="flex-start"),e.innerHTML=`${Tt}<span class="tr-word">Taprail</span>`,e}function L(r=false){let e=document.createElement("div");return e.className=r?"tr-ring tr-sm":"tr-ring",e}var Lt='<svg width="15" height="15" viewBox="0 0 15 15" fill="none" aria-hidden="true"><path d="M3.5 3.5l8 8M11.5 3.5l-8 8" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"/></svg>',Nt='<svg width="13" height="13" viewBox="0 0 16 16" fill="none" aria-hidden="true"><rect x="5.25" y="5.25" width="8.5" height="8.5" rx="2" stroke="currentColor" stroke-width="1.4"/><path d="M10.75 5.25V4a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v4.75a2 2 0 0 0 2 2h1.25" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"/></svg>',At='<svg width="24" height="24" viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="M5 12.5l4.2 4.2L19 7" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/></svg>';function Pt(r,e={}){let{id:a}=tt(r);return ft()?(window.location.href=X(a),Q(a,e,"app")):Q(a,e,"email")}function Q(r,e,a){return new Promise(d=>{let p=false,N=false,y,j=2e3,w=false,A=0,E=a==="app"?"app":"taprail",f={},et=document.activeElement,rt=document.body.style.overflow;_t();let{palette:b,radius:nt,font:at}=wt(e.theme??{});document.querySelector('[data-taprail="overlay"]')?.remove();let g=document.createElement("div");g.setAttribute("data-taprail","overlay"),g.setAttribute("role","dialog"),g.setAttribute("aria-modal","true"),g.setAttribute("aria-label","Pay with Taprail");let F={"--tr-surface":b.surface,"--tr-text":b.text,"--tr-text-rgb":Et(b.text),"--tr-muted":b.muted,"--tr-accent":b.accent,"--tr-accent-text":b.accentText,"--tr-backdrop":b.backdrop,"--tr-radius":`${nt}px`,"--tr-font":at};for(let t in F)g.style.setProperty(t,F[t]);let S=document.createElement("div");S.setAttribute("data-taprail","frame");let x=document.createElement("button");x.setAttribute("data-taprail","close"),x.setAttribute("aria-label","Close"),x.innerHTML=Lt;let P=document.createElement("div");function C(t){P.replaceChildren(t);}function ot(){clearTimeout(y),document.removeEventListener("keydown",I),document.removeEventListener("visibilitychange",U),window.removeEventListener("focus",O),g.remove(),document.body.style.overflow=rt,et?.focus?.();}function k(t){p||(p=true,ot(),d(t),e.redirect&&t.status!=="closed"&&xt(t));}function M(){p||(e.onClose?.(),k({status:"closed",order_id:r,transaction_reference:null,return_url:null}));}function I(t){t.key==="Escape"&&M();}function G(t){if(p)return;W();let o={status:t.status,order_id:t.order_id,transaction_reference:t.transaction_reference,return_url:t.return_url,rail:E};t.status==="approved"?(e.onSuccess?.(o),pt(o)):k(o);}function R(t){w=true,j=t,clearTimeout(y),y=setTimeout(z,400);}function W(){w=false,clearTimeout(y);}async function z(){if(!(p||N||!w)){N=true;try{let t=await H(r);if(A=0,t._ok&&(f={amount_kobo:t.amount_kobo,currency:t.currency,merchant_name:t.merchant_name},Y.has(t.status))){G(t);return}}catch(t){A+=1,A===4&&e.onError?.(t instanceof Error?t:new Error(String(t)));}finally{N=false;}!p&&w&&(y=setTimeout(z,j));}}function O(){p||!w||(clearTimeout(y),z());}function U(){document.visibilityState==="visible"&&O();}function $(){let t=document.createElement("div");if(t.className="tr-sum",f.amount_kobo!=null){let o=document.createElement("div");if(o.className="tr-amount",o.textContent=D(f.amount_kobo,f.currency),t.appendChild(o),f.merchant_name){let s=document.createElement("div");s.className="tr-merchant",s.textContent=f.merchant_name,t.appendChild(s);}}else {let o=document.createElement("div");o.className="tr-title",o.textContent="Complete your payment",t.appendChild(o);}return t}function it(){P.querySelectorAll(".tr-sum").forEach(t=>t.replaceWith($()));}function K(){let t=document.createElement("div");t.setAttribute("data-taprail","card"),t.classList.add("tr-left");let o=document.createElement("div");o.className="tr-sub",o.textContent="Enter your email to pay with Taprail, or by bank transfer.";let s=document.createElement("div");s.className="tr-field";let c=document.createElement("label");c.className="tr-label",c.textContent="Email",c.htmlFor="tr-email";let n=document.createElement("input");n.className="tr-input",n.id="tr-email",n.type="email",n.inputMode="email",n.autocomplete="email",n.placeholder="you@example.com",n.value=e.email??"";let l=document.createElement("div");l.className="tr-err",s.append(c,n,l);let i=document.createElement("button");i.className="tr-btn tr-mt",i.type="button";let u=document.createElement("span");u.textContent="Continue",i.appendChild(u);function m(h){l.textContent=h,l.classList.add("tr-on"),n.classList.add("tr-bad");}function V(){l.classList.remove("tr-on"),n.classList.remove("tr-bad");}async function q(){let h=n.value.trim();if(!h||!/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(h)){m("Enter a valid email address."),n.focus();return}V(),i.setAttribute("disabled","true"),u.textContent="Checking",i.prepend(L(true));try{let _=await bt(r,h);_.method==="taprail"?(E="taprail",st()):(E="transfer",ct(_.account));}catch(_){i.querySelector(".tr-ring")?.remove(),i.removeAttribute("disabled"),u.textContent="Continue",m(_ instanceof Error?_.message:"Something went wrong. Try again.");}}n.addEventListener("input",V),n.addEventListener("keydown",h=>{h.key==="Enter"&&q();}),i.addEventListener("click",q),t.append(T(true),$(),o,s,i),C(t),setTimeout(()=>n.focus(),30);}function st(){let t=document.createElement("div");t.setAttribute("data-taprail","card");let o=document.createElement("div");o.className="tr-title",o.textContent="Confirm in the Taprail app";let s=document.createElement("div");s.className="tr-sub",s.textContent="We sent a confirmation to your Taprail app. Approve it there to finish.";let c=document.createElement("div");c.className="tr-wait";let n=document.createElement("span");n.textContent="Waiting for approval",c.append(L(true),n);let l=document.createElement("button");l.className="tr-ghost",l.type="button",l.textContent="Use a different email",l.addEventListener("click",()=>{W(),E="taprail",K();}),t.append(T(),o,s,c,l),C(t),R(1800);}function ct(t){let o=document.createElement("div");o.setAttribute("data-taprail","card"),o.classList.add("tr-left");let s=document.createElement("div");s.className="tr-title",s.textContent="Pay by bank transfer";let c=document.createElement("div");c.className="tr-sub";let n=t.amount_kobo!=null?D(t.amount_kobo,f.currency):"the exact amount";c.textContent=`Send ${n} to the account below. We'll confirm automatically.`;let l=document.createElement("div");l.className="tr-acct",l.append(B("Bank",t.bank||"\u2014"),lt("Account number",t.account_number||"\u2014"),B("Account name",t.account_name||"Taprail")),t.amount_kobo!=null&&l.append(B("Amount",D(t.amount_kobo,f.currency)));let i=document.createElement("div");i.className="tr-wait";let u=document.createElement("span");if(u.textContent="Waiting for your transfer",i.append(L(true),u),o.append(T(true),s,c,l),t.expires_at){let m=document.createElement("div");m.className="tr-expiry",o.appendChild(m),dt(m,t.expires_at);}o.appendChild(i),C(o),R(1500);}function B(t,o){let s=document.createElement("div");s.className="tr-row";let c=document.createElement("span");c.className="tr-rk",c.textContent=t;let n=document.createElement("span");return n.className="tr-rv",n.textContent=o,s.append(c,n),s}function lt(t,o){let s=document.createElement("div");s.className="tr-row";let c=document.createElement("span");c.className="tr-rk",c.textContent=t;let n=document.createElement("span");n.style.display="inline-flex",n.style.alignItems="center",n.style.gap="10px";let l=document.createElement("span");l.className="tr-rv tr-mono",l.textContent=o;let i=document.createElement("button");return i.className="tr-copy",i.type="button",i.innerHTML=`${Nt}<span>Copy</span>`,i.addEventListener("click",async()=>{try{await navigator.clipboard.writeText(o.replace(/\s/g,""));let u=i.querySelector("span");u&&(u.textContent="Copied",setTimeout(()=>u.textContent="Copy",1400));}catch{}}),n.append(l,i),s.append(c,n),s}function dt(t,o){let s=new Date(o).getTime();if(Number.isNaN(s))return;let c=()=>{if(p)return;let n=Math.max(0,Math.floor((s-Date.now())/1e3)),l=Math.floor(n/60),i=n%60;t.textContent=n>0?`Account expires in ${l}:${i.toString().padStart(2,"0")}`:"This account has expired.",n>0&&!p&&setTimeout(c,1e3);};c();}function ut(){let t=document.createElement("div");t.setAttribute("data-taprail","card");let o=document.createElement("div");o.className="tr-title",o.textContent="Continue in the Taprail app";let s=document.createElement("div");s.className="tr-sub",s.textContent="Approve this payment in the Taprail app, then come back here.";let c=document.createElement("a");c.className="tr-btn tr-mt",c.href=X(r);let n=document.createElement("span");n.textContent="Open Taprail",c.appendChild(n);let l=document.createElement("div");l.className="tr-wait";let i=document.createElement("span");i.textContent="Waiting for approval",l.append(L(true),i),t.append(T(),$(),s,c,l),C(t),R(1200);}function pt(t){let o=document.createElement("div");o.setAttribute("data-taprail","card");let s=document.createElement("div");s.className="tr-check",s.innerHTML=At;let c=document.createElement("div");c.className="tr-title",c.textContent="Payment complete";let n=document.createElement("div");n.className="tr-sub",o.append(s,c,n);let l=E==="transfer"&&e.appNudge!==false;if(l){n.textContent="Next time, pay with a single tap. Get the Taprail app.";let i=document.createElement("a");i.className="tr-btn tr-mt",i.href=mt,i.target="_blank",i.rel="noopener";let u=document.createElement("span");u.textContent="Get the Taprail app",i.appendChild(u);let m=document.createElement("button");m.className="tr-ghost",m.type="button",m.textContent="Done",m.addEventListener("click",()=>k(t)),o.append(i,m);}else {n.textContent=f.merchant_name?`Your payment to ${f.merchant_name} is confirmed.`:"Your payment is confirmed.";let i=document.createElement("button");i.className="tr-btn tr-mt",i.type="button";let u=document.createElement("span");u.textContent="Done",i.appendChild(u),i.addEventListener("click",()=>k(t)),o.append(i);}x.onclick=()=>k(t),setTimeout(()=>k(t),l?12e3:6e3),C(o);}x.addEventListener("click",M),g.addEventListener("click",t=>{t.target===g&&M();}),document.addEventListener("keydown",I),document.addEventListener("visibilitychange",U),window.addEventListener("focus",O),S.append(P,x),g.appendChild(S),document.body.appendChild(g),document.body.style.overflow="hidden",H(r).then(t=>{if(!p){if(t._ok&&(f={amount_kobo:t.amount_kobo,currency:t.currency,merchant_name:t.merchant_name},Y.has(t.status))){G(t);return}it();}}).catch(()=>{}),a==="app"?ut():K(),x.focus();})}async function Mt(r){let{id:e}=tt(r),a=await H(e);return {status:a.status,order_id:a.order_id,transaction_reference:a.transaction_reference,return_url:a.return_url}}exports.getStatus=Mt;exports.init=St;exports.open=Pt;
|
package/dist/index.global.js
CHANGED
|
@@ -53,4 +53,4 @@ var Taprail=(function(exports){'use strict';var Y=new Set(["approved","declined"
|
|
|
53
53
|
@keyframes tr-pop{from{opacity:0;transform:translateY(8px) scale(.99)}to{opacity:1;transform:none}}
|
|
54
54
|
@keyframes tr-spin{to{transform:rotate(360deg)}}
|
|
55
55
|
@media (prefers-reduced-motion:reduce){[data-taprail="overlay"],[data-taprail="frame"]{animation:none}.tr-ring{animation-duration:1.4s}.tr-btn,[data-taprail="close"]{transition:none}}
|
|
56
|
-
`;function _t(){if(typeof document>"u"||document.getElementById(J))return;let r=document.createElement("style");r.id=J,r.textContent=Ct,document.head.appendChild(r);}var Tt='<svg viewBox="0 0 500 500" width="22" height="22" fill="none" aria-hidden="true" focusable="false"><path d="M147.789 394.059C214.872 439.472 307.74 425.816 359.214 362.946L371.749 347.654L437.045 393.713L423.39 410.225C385.37 456.004 331.287 486.708 271.399 496.516C211.059 506.557 151.221 494.72 102.868 463.262C50.9889 429.616 15.9579 377.523 4.20937 316.703C-1.75472 286.404 -1.3776 255.258 5.31847 225.103C12.0145 194.947 24.8939 166.394 43.1963 141.127L55.4452 124.132L120.503 170.19L109.04 186.311C61.1408 253.994 78.4657 347.194 147.789 394.059Z" fill="currentColor"/><path d="M500 310.578L428.222 321.724L386.423 70.7041L126.55 111.075L114.992 41.7101L377.391 0.879109C385.717 -0.444061 394.224 -0.272305 402.485 1.38576L405.059 1.91543C418.429 4.93491 430.565 11.7347 439.92 21.4473C449.274 31.16 455.423 43.3453 457.581 56.4489L500 310.578Z" fill="currentColor"/><path d="M257.046 329.232C306.454 329.232 346.506 290.526 346.506 242.779C346.506 195.033 306.454 156.327 257.046 156.327C207.639 156.327 167.586 195.033 167.586 242.779C167.586 290.526 207.639 329.232 257.046 329.232Z" fill="currentColor"/></svg>';function T(r=false){let e=document.createElement("div");return e.className="tr-logo",r&&(e.style.justifyContent="flex-start"),e.innerHTML=`${Tt}<span class="tr-word">Taprail</span>`,e}function L(r=false){let e=document.createElement("div");return e.className=r?"tr-ring tr-sm":"tr-ring",e}var Lt='<svg width="15" height="15" viewBox="0 0 15 15" fill="none" aria-hidden="true"><path d="M3.5 3.5l8 8M11.5 3.5l-8 8" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"/></svg>',Nt='<svg width="13" height="13" viewBox="0 0 16 16" fill="none" aria-hidden="true"><rect x="5.25" y="5.25" width="8.5" height="8.5" rx="2" stroke="currentColor" stroke-width="1.4"/><path d="M10.75 5.25V4a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v4.75a2 2 0 0 0 2 2h1.25" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"/></svg>',At='<svg width="24" height="24" viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="M5 12.5l4.2 4.2L19 7" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/></svg>';function Pt(r,e={}){let{id:a}=tt(r);return ft()?(window.location.href=X(a),Q(a,e,"app")):Q(a,e,"email")}function Q(r,e,a){return new Promise(d=>{let p=false,N=false,y,j=2e3,w=false,A=0,E=a==="app"?"app":"taprail",f={},et=document.activeElement,rt=document.body.style.overflow;_t();let{palette:b,radius:nt,font:at}=wt(e.theme??{});document.querySelector('[data-taprail="overlay"]')?.remove();let g=document.createElement("div");g.setAttribute("data-taprail","overlay"),g.setAttribute("role","dialog"),g.setAttribute("aria-modal","true"),g.setAttribute("aria-label","Pay with Taprail");let F={"--tr-surface":b.surface,"--tr-text":b.text,"--tr-text-rgb":Et(b.text),"--tr-muted":b.muted,"--tr-accent":b.accent,"--tr-accent-text":b.accentText,"--tr-backdrop":b.backdrop,"--tr-radius":`${nt}px`,"--tr-font":at};for(let t in F)g.style.setProperty(t,F[t]);let S=document.createElement("div");S.setAttribute("data-taprail","frame");let x=document.createElement("button");x.setAttribute("data-taprail","close"),x.setAttribute("aria-label","Close"),x.innerHTML=Lt;let P=document.createElement("div");function C(t){P.replaceChildren(t);}function ot(){clearTimeout(y),document.removeEventListener("keydown",I),document.removeEventListener("visibilitychange",U),window.removeEventListener("focus",O),g.remove(),document.body.style.overflow=rt,et?.focus?.();}function k(t){p||(p=true,ot(),d(t),e.redirect&&t.status!=="closed"&&xt(t));}function M(){p||(e.onClose?.(),k({status:"closed",order_id:r,transaction_reference:null,return_url:null}));}function I(t){t.key==="Escape"&&M();}function G(t){if(p)return;W();let o={status:t.status,order_id:t.order_id,transaction_reference:t.transaction_reference,return_url:t.return_url,rail:E};t.status==="approved"?(e.onSuccess?.(o),pt(o)):k(o);}function R(t){w=true,j=t,clearTimeout(y),y=setTimeout(z,400);}function W(){w=false,clearTimeout(y);}async function z(){if(!(p||N||!w)){N=true;try{let t=await H(r);if(A=0,t._ok&&(f={amount_kobo:t.amount_kobo,currency:t.currency,merchant_name:t.merchant_name},Y.has(t.status))){G(t);return}}catch(t){A+=1,A===4&&e.onError?.(t instanceof Error?t:new Error(String(t)));}finally{N=false;}!p&&w&&(y=setTimeout(z,j));}}function O(){p||!w||(clearTimeout(y),z());}function U(){document.visibilityState==="visible"&&O();}function $(){let t=document.createElement("div");if(t.className="tr-sum",f.amount_kobo!=null){let o=document.createElement("div");if(o.className="tr-amount",o.textContent=D(f.amount_kobo,f.currency),t.appendChild(o),f.merchant_name){let s=document.createElement("div");s.className="tr-merchant",s.textContent=f.merchant_name,t.appendChild(s);}}else {let o=document.createElement("div");o.className="tr-title",o.textContent="Complete your payment",t.appendChild(o);}return t}function it(){P.querySelectorAll(".tr-sum").forEach(t=>t.replaceWith($()));}function K(){let t=document.createElement("div");t.setAttribute("data-taprail","card"),t.classList.add("tr-left");let o=document.createElement("div");o.className="tr-sub",o.textContent="Enter your email to pay with Taprail, or by bank transfer.";let s=document.createElement("div");s.className="tr-field";let c=document.createElement("label");c.className="tr-label",c.textContent="Email",c.htmlFor="tr-email";let n=document.createElement("input");n.className="tr-input",n.id="tr-email",n.type="email",n.inputMode="email",n.autocomplete="email",n.placeholder="you@example.com",n.value=e.email??"";let l=document.createElement("div");l.className="tr-err",s.append(c,n,l);let i=document.createElement("button");i.className="tr-btn tr-mt",i.type="button";let u=document.createElement("span");u.textContent="Continue",i.appendChild(u);function m(h){l.textContent=h,l.classList.add("tr-on"),n.classList.add("tr-bad");}function V(){l.classList.remove("tr-on"),n.classList.remove("tr-bad");}async function q(){let h=n.value.trim();if(!h||!/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(h)){m("Enter a valid email address."),n.focus();return}V(),i.setAttribute("disabled","true"),u.textContent="Checking",i.prepend(L(true));try{let _=await bt(r,h);_.method==="taprail"?(E="taprail",st()):(E="transfer",ct(_.account));}catch(_){i.querySelector(".tr-ring")?.remove(),i.removeAttribute("disabled"),u.textContent="Continue",m(_ instanceof Error?_.message:"Something went wrong. Try again.");}}n.addEventListener("input",V),n.addEventListener("keydown",h=>{h.key==="Enter"&&q();}),i.addEventListener("click",q),t.append(T(true),$(),o,s,i),C(t),setTimeout(()=>n.focus(),30);}function st(){let t=document.createElement("div");t.setAttribute("data-taprail","card");let o=document.createElement("div");o.className="tr-title",o.textContent="Confirm in the Taprail app";let s=document.createElement("div");s.className="tr-sub",s.textContent="We sent a confirmation to your Taprail app. Approve it there to finish.";let c=document.createElement("div");c.className="tr-wait";let n=document.createElement("span");n.textContent="Waiting for approval",c.append(L(true),n);let l=document.createElement("button");l.className="tr-ghost",l.type="button",l.textContent="Use a different email",l.addEventListener("click",()=>{W(),E="taprail",K();}),t.append(T(),o,s,c,l),C(t),R(1800);}function ct(t){let o=document.createElement("div");o.setAttribute("data-taprail","card"),o.classList.add("tr-left");let s=document.createElement("div");s.className="tr-title",s.textContent="Pay by bank transfer";let c=document.createElement("div");c.className="tr-sub";let n=t.amount_kobo!=null?D(t.amount_kobo,f.currency):"the exact amount";c.textContent=`Send ${n} to the account below. We'll confirm automatically.`;let l=document.createElement("div");l.className="tr-acct",l.append(B("Bank",t.bank||"\u2014"),lt("Account number",t.account_number||"\u2014"),B("Account name",t.account_name||"Taprail")),t.amount_kobo!=null&&l.append(B("Amount",D(t.amount_kobo,f.currency)));let i=document.createElement("div");i.className="tr-wait";let u=document.createElement("span");if(u.textContent="Waiting for your transfer",i.append(L(true),u),o.append(T(true),s,c,l),t.expires_at){let m=document.createElement("div");m.className="tr-expiry",o.appendChild(m),dt(m,t.expires_at);}o.appendChild(i),C(o),R(2500);}function B(t,o){let s=document.createElement("div");s.className="tr-row";let c=document.createElement("span");c.className="tr-rk",c.textContent=t;let n=document.createElement("span");return n.className="tr-rv",n.textContent=o,s.append(c,n),s}function lt(t,o){let s=document.createElement("div");s.className="tr-row";let c=document.createElement("span");c.className="tr-rk",c.textContent=t;let n=document.createElement("span");n.style.display="inline-flex",n.style.alignItems="center",n.style.gap="10px";let l=document.createElement("span");l.className="tr-rv tr-mono",l.textContent=o;let i=document.createElement("button");return i.className="tr-copy",i.type="button",i.innerHTML=`${Nt}<span>Copy</span>`,i.addEventListener("click",async()=>{try{await navigator.clipboard.writeText(o.replace(/\s/g,""));let u=i.querySelector("span");u&&(u.textContent="Copied",setTimeout(()=>u.textContent="Copy",1400));}catch{}}),n.append(l,i),s.append(c,n),s}function dt(t,o){let s=new Date(o).getTime();if(Number.isNaN(s))return;let c=()=>{if(p)return;let n=Math.max(0,Math.floor((s-Date.now())/1e3)),l=Math.floor(n/60),i=n%60;t.textContent=n>0?`Account expires in ${l}:${i.toString().padStart(2,"0")}`:"This account has expired.",n>0&&!p&&setTimeout(c,1e3);};c();}function ut(){let t=document.createElement("div");t.setAttribute("data-taprail","card");let o=document.createElement("div");o.className="tr-title",o.textContent="Continue in the Taprail app";let s=document.createElement("div");s.className="tr-sub",s.textContent="Approve this payment in the Taprail app, then come back here.";let c=document.createElement("a");c.className="tr-btn tr-mt",c.href=X(r);let n=document.createElement("span");n.textContent="Open Taprail",c.appendChild(n);let l=document.createElement("div");l.className="tr-wait";let i=document.createElement("span");i.textContent="Waiting for approval",l.append(L(true),i),t.append(T(),$(),s,c,l),C(t),R(1200);}function pt(t){let o=document.createElement("div");o.setAttribute("data-taprail","card");let s=document.createElement("div");s.className="tr-check",s.innerHTML=At;let c=document.createElement("div");c.className="tr-title",c.textContent="Payment complete";let n=document.createElement("div");n.className="tr-sub",o.append(s,c,n);let l=E==="transfer"&&e.appNudge!==false;if(l){n.textContent="Next time, pay with a single tap. Get the Taprail app.";let i=document.createElement("a");i.className="tr-btn tr-mt",i.href=mt,i.target="_blank",i.rel="noopener";let u=document.createElement("span");u.textContent="Get the Taprail app",i.appendChild(u);let m=document.createElement("button");m.className="tr-ghost",m.type="button",m.textContent="Done",m.addEventListener("click",()=>k(t)),o.append(i,m);}else {n.textContent=f.merchant_name?`Your payment to ${f.merchant_name} is confirmed.`:"Your payment is confirmed.";let i=document.createElement("button");i.className="tr-btn tr-mt",i.type="button";let u=document.createElement("span");u.textContent="Done",i.appendChild(u),i.addEventListener("click",()=>k(t)),o.append(i);}x.onclick=()=>k(t),setTimeout(()=>k(t),l?12e3:6e3),C(o);}x.addEventListener("click",M),g.addEventListener("click",t=>{t.target===g&&M();}),document.addEventListener("keydown",I),document.addEventListener("visibilitychange",U),window.addEventListener("focus",O),S.append(P,x),g.appendChild(S),document.body.appendChild(g),document.body.style.overflow="hidden",H(r).then(t=>{if(!p){if(t._ok&&(f={amount_kobo:t.amount_kobo,currency:t.currency,merchant_name:t.merchant_name},Y.has(t.status))){G(t);return}it();}}).catch(()=>{}),a==="app"?ut():K(),x.focus();})}async function Mt(r){let{id:e}=tt(r),a=await H(e);return {status:a.status,order_id:a.order_id,transaction_reference:a.transaction_reference,return_url:a.return_url}}exports.getStatus=Mt;exports.init=St;exports.open=Pt;return exports;})({});
|
|
56
|
+
`;function _t(){if(typeof document>"u"||document.getElementById(J))return;let r=document.createElement("style");r.id=J,r.textContent=Ct,document.head.appendChild(r);}var Tt='<svg viewBox="0 0 500 500" width="22" height="22" fill="none" aria-hidden="true" focusable="false"><path d="M147.789 394.059C214.872 439.472 307.74 425.816 359.214 362.946L371.749 347.654L437.045 393.713L423.39 410.225C385.37 456.004 331.287 486.708 271.399 496.516C211.059 506.557 151.221 494.72 102.868 463.262C50.9889 429.616 15.9579 377.523 4.20937 316.703C-1.75472 286.404 -1.3776 255.258 5.31847 225.103C12.0145 194.947 24.8939 166.394 43.1963 141.127L55.4452 124.132L120.503 170.19L109.04 186.311C61.1408 253.994 78.4657 347.194 147.789 394.059Z" fill="currentColor"/><path d="M500 310.578L428.222 321.724L386.423 70.7041L126.55 111.075L114.992 41.7101L377.391 0.879109C385.717 -0.444061 394.224 -0.272305 402.485 1.38576L405.059 1.91543C418.429 4.93491 430.565 11.7347 439.92 21.4473C449.274 31.16 455.423 43.3453 457.581 56.4489L500 310.578Z" fill="currentColor"/><path d="M257.046 329.232C306.454 329.232 346.506 290.526 346.506 242.779C346.506 195.033 306.454 156.327 257.046 156.327C207.639 156.327 167.586 195.033 167.586 242.779C167.586 290.526 207.639 329.232 257.046 329.232Z" fill="currentColor"/></svg>';function T(r=false){let e=document.createElement("div");return e.className="tr-logo",r&&(e.style.justifyContent="flex-start"),e.innerHTML=`${Tt}<span class="tr-word">Taprail</span>`,e}function L(r=false){let e=document.createElement("div");return e.className=r?"tr-ring tr-sm":"tr-ring",e}var Lt='<svg width="15" height="15" viewBox="0 0 15 15" fill="none" aria-hidden="true"><path d="M3.5 3.5l8 8M11.5 3.5l-8 8" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"/></svg>',Nt='<svg width="13" height="13" viewBox="0 0 16 16" fill="none" aria-hidden="true"><rect x="5.25" y="5.25" width="8.5" height="8.5" rx="2" stroke="currentColor" stroke-width="1.4"/><path d="M10.75 5.25V4a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v4.75a2 2 0 0 0 2 2h1.25" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"/></svg>',At='<svg width="24" height="24" viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="M5 12.5l4.2 4.2L19 7" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/></svg>';function Pt(r,e={}){let{id:a}=tt(r);return ft()?(window.location.href=X(a),Q(a,e,"app")):Q(a,e,"email")}function Q(r,e,a){return new Promise(d=>{let p=false,N=false,y,j=2e3,w=false,A=0,E=a==="app"?"app":"taprail",f={},et=document.activeElement,rt=document.body.style.overflow;_t();let{palette:b,radius:nt,font:at}=wt(e.theme??{});document.querySelector('[data-taprail="overlay"]')?.remove();let g=document.createElement("div");g.setAttribute("data-taprail","overlay"),g.setAttribute("role","dialog"),g.setAttribute("aria-modal","true"),g.setAttribute("aria-label","Pay with Taprail");let F={"--tr-surface":b.surface,"--tr-text":b.text,"--tr-text-rgb":Et(b.text),"--tr-muted":b.muted,"--tr-accent":b.accent,"--tr-accent-text":b.accentText,"--tr-backdrop":b.backdrop,"--tr-radius":`${nt}px`,"--tr-font":at};for(let t in F)g.style.setProperty(t,F[t]);let S=document.createElement("div");S.setAttribute("data-taprail","frame");let x=document.createElement("button");x.setAttribute("data-taprail","close"),x.setAttribute("aria-label","Close"),x.innerHTML=Lt;let P=document.createElement("div");function C(t){P.replaceChildren(t);}function ot(){clearTimeout(y),document.removeEventListener("keydown",I),document.removeEventListener("visibilitychange",U),window.removeEventListener("focus",O),g.remove(),document.body.style.overflow=rt,et?.focus?.();}function k(t){p||(p=true,ot(),d(t),e.redirect&&t.status!=="closed"&&xt(t));}function M(){p||(e.onClose?.(),k({status:"closed",order_id:r,transaction_reference:null,return_url:null}));}function I(t){t.key==="Escape"&&M();}function G(t){if(p)return;W();let o={status:t.status,order_id:t.order_id,transaction_reference:t.transaction_reference,return_url:t.return_url,rail:E};t.status==="approved"?(e.onSuccess?.(o),pt(o)):k(o);}function R(t){w=true,j=t,clearTimeout(y),y=setTimeout(z,400);}function W(){w=false,clearTimeout(y);}async function z(){if(!(p||N||!w)){N=true;try{let t=await H(r);if(A=0,t._ok&&(f={amount_kobo:t.amount_kobo,currency:t.currency,merchant_name:t.merchant_name},Y.has(t.status))){G(t);return}}catch(t){A+=1,A===4&&e.onError?.(t instanceof Error?t:new Error(String(t)));}finally{N=false;}!p&&w&&(y=setTimeout(z,j));}}function O(){p||!w||(clearTimeout(y),z());}function U(){document.visibilityState==="visible"&&O();}function $(){let t=document.createElement("div");if(t.className="tr-sum",f.amount_kobo!=null){let o=document.createElement("div");if(o.className="tr-amount",o.textContent=D(f.amount_kobo,f.currency),t.appendChild(o),f.merchant_name){let s=document.createElement("div");s.className="tr-merchant",s.textContent=f.merchant_name,t.appendChild(s);}}else {let o=document.createElement("div");o.className="tr-title",o.textContent="Complete your payment",t.appendChild(o);}return t}function it(){P.querySelectorAll(".tr-sum").forEach(t=>t.replaceWith($()));}function K(){let t=document.createElement("div");t.setAttribute("data-taprail","card"),t.classList.add("tr-left");let o=document.createElement("div");o.className="tr-sub",o.textContent="Enter your email to pay with Taprail, or by bank transfer.";let s=document.createElement("div");s.className="tr-field";let c=document.createElement("label");c.className="tr-label",c.textContent="Email",c.htmlFor="tr-email";let n=document.createElement("input");n.className="tr-input",n.id="tr-email",n.type="email",n.inputMode="email",n.autocomplete="email",n.placeholder="you@example.com",n.value=e.email??"";let l=document.createElement("div");l.className="tr-err",s.append(c,n,l);let i=document.createElement("button");i.className="tr-btn tr-mt",i.type="button";let u=document.createElement("span");u.textContent="Continue",i.appendChild(u);function m(h){l.textContent=h,l.classList.add("tr-on"),n.classList.add("tr-bad");}function V(){l.classList.remove("tr-on"),n.classList.remove("tr-bad");}async function q(){let h=n.value.trim();if(!h||!/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(h)){m("Enter a valid email address."),n.focus();return}V(),i.setAttribute("disabled","true"),u.textContent="Checking",i.prepend(L(true));try{let _=await bt(r,h);_.method==="taprail"?(E="taprail",st()):(E="transfer",ct(_.account));}catch(_){i.querySelector(".tr-ring")?.remove(),i.removeAttribute("disabled"),u.textContent="Continue",m(_ instanceof Error?_.message:"Something went wrong. Try again.");}}n.addEventListener("input",V),n.addEventListener("keydown",h=>{h.key==="Enter"&&q();}),i.addEventListener("click",q),t.append(T(true),$(),o,s,i),C(t),setTimeout(()=>n.focus(),30);}function st(){let t=document.createElement("div");t.setAttribute("data-taprail","card");let o=document.createElement("div");o.className="tr-title",o.textContent="Confirm in the Taprail app";let s=document.createElement("div");s.className="tr-sub",s.textContent="We sent a confirmation to your Taprail app. Approve it there to finish.";let c=document.createElement("div");c.className="tr-wait";let n=document.createElement("span");n.textContent="Waiting for approval",c.append(L(true),n);let l=document.createElement("button");l.className="tr-ghost",l.type="button",l.textContent="Use a different email",l.addEventListener("click",()=>{W(),E="taprail",K();}),t.append(T(),o,s,c,l),C(t),R(1800);}function ct(t){let o=document.createElement("div");o.setAttribute("data-taprail","card"),o.classList.add("tr-left");let s=document.createElement("div");s.className="tr-title",s.textContent="Pay by bank transfer";let c=document.createElement("div");c.className="tr-sub";let n=t.amount_kobo!=null?D(t.amount_kobo,f.currency):"the exact amount";c.textContent=`Send ${n} to the account below. We'll confirm automatically.`;let l=document.createElement("div");l.className="tr-acct",l.append(B("Bank",t.bank||"\u2014"),lt("Account number",t.account_number||"\u2014"),B("Account name",t.account_name||"Taprail")),t.amount_kobo!=null&&l.append(B("Amount",D(t.amount_kobo,f.currency)));let i=document.createElement("div");i.className="tr-wait";let u=document.createElement("span");if(u.textContent="Waiting for your transfer",i.append(L(true),u),o.append(T(true),s,c,l),t.expires_at){let m=document.createElement("div");m.className="tr-expiry",o.appendChild(m),dt(m,t.expires_at);}o.appendChild(i),C(o),R(1500);}function B(t,o){let s=document.createElement("div");s.className="tr-row";let c=document.createElement("span");c.className="tr-rk",c.textContent=t;let n=document.createElement("span");return n.className="tr-rv",n.textContent=o,s.append(c,n),s}function lt(t,o){let s=document.createElement("div");s.className="tr-row";let c=document.createElement("span");c.className="tr-rk",c.textContent=t;let n=document.createElement("span");n.style.display="inline-flex",n.style.alignItems="center",n.style.gap="10px";let l=document.createElement("span");l.className="tr-rv tr-mono",l.textContent=o;let i=document.createElement("button");return i.className="tr-copy",i.type="button",i.innerHTML=`${Nt}<span>Copy</span>`,i.addEventListener("click",async()=>{try{await navigator.clipboard.writeText(o.replace(/\s/g,""));let u=i.querySelector("span");u&&(u.textContent="Copied",setTimeout(()=>u.textContent="Copy",1400));}catch{}}),n.append(l,i),s.append(c,n),s}function dt(t,o){let s=new Date(o).getTime();if(Number.isNaN(s))return;let c=()=>{if(p)return;let n=Math.max(0,Math.floor((s-Date.now())/1e3)),l=Math.floor(n/60),i=n%60;t.textContent=n>0?`Account expires in ${l}:${i.toString().padStart(2,"0")}`:"This account has expired.",n>0&&!p&&setTimeout(c,1e3);};c();}function ut(){let t=document.createElement("div");t.setAttribute("data-taprail","card");let o=document.createElement("div");o.className="tr-title",o.textContent="Continue in the Taprail app";let s=document.createElement("div");s.className="tr-sub",s.textContent="Approve this payment in the Taprail app, then come back here.";let c=document.createElement("a");c.className="tr-btn tr-mt",c.href=X(r);let n=document.createElement("span");n.textContent="Open Taprail",c.appendChild(n);let l=document.createElement("div");l.className="tr-wait";let i=document.createElement("span");i.textContent="Waiting for approval",l.append(L(true),i),t.append(T(),$(),s,c,l),C(t),R(1200);}function pt(t){let o=document.createElement("div");o.setAttribute("data-taprail","card");let s=document.createElement("div");s.className="tr-check",s.innerHTML=At;let c=document.createElement("div");c.className="tr-title",c.textContent="Payment complete";let n=document.createElement("div");n.className="tr-sub",o.append(s,c,n);let l=E==="transfer"&&e.appNudge!==false;if(l){n.textContent="Next time, pay with a single tap. Get the Taprail app.";let i=document.createElement("a");i.className="tr-btn tr-mt",i.href=mt,i.target="_blank",i.rel="noopener";let u=document.createElement("span");u.textContent="Get the Taprail app",i.appendChild(u);let m=document.createElement("button");m.className="tr-ghost",m.type="button",m.textContent="Done",m.addEventListener("click",()=>k(t)),o.append(i,m);}else {n.textContent=f.merchant_name?`Your payment to ${f.merchant_name} is confirmed.`:"Your payment is confirmed.";let i=document.createElement("button");i.className="tr-btn tr-mt",i.type="button";let u=document.createElement("span");u.textContent="Done",i.appendChild(u),i.addEventListener("click",()=>k(t)),o.append(i);}x.onclick=()=>k(t),setTimeout(()=>k(t),l?12e3:6e3),C(o);}x.addEventListener("click",M),g.addEventListener("click",t=>{t.target===g&&M();}),document.addEventListener("keydown",I),document.addEventListener("visibilitychange",U),window.addEventListener("focus",O),S.append(P,x),g.appendChild(S),document.body.appendChild(g),document.body.style.overflow="hidden",H(r).then(t=>{if(!p){if(t._ok&&(f={amount_kobo:t.amount_kobo,currency:t.currency,merchant_name:t.merchant_name},Y.has(t.status))){G(t);return}it();}}).catch(()=>{}),a==="app"?ut():K(),x.focus();})}async function Mt(r){let{id:e}=tt(r),a=await H(e);return {status:a.status,order_id:a.order_id,transaction_reference:a.transaction_reference,return_url:a.return_url}}exports.getStatus=Mt;exports.init=St;exports.open=Pt;return exports;})({});
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{c as getStatus,a as init,b as open}from'./chunk-
|
|
1
|
+
export{c as getStatus,a as init,b as open}from'./chunk-CIVYKW6L.js';
|
package/dist/react.cjs
CHANGED
|
@@ -53,4 +53,4 @@
|
|
|
53
53
|
@keyframes tr-pop{from{opacity:0;transform:translateY(8px) scale(.99)}to{opacity:1;transform:none}}
|
|
54
54
|
@keyframes tr-spin{to{transform:rotate(360deg)}}
|
|
55
55
|
@media (prefers-reduced-motion:reduce){[data-taprail="overlay"],[data-taprail="frame"]{animation:none}.tr-ring{animation-duration:1.4s}.tr-btn,[data-taprail="close"]{transition:none}}
|
|
56
|
-
`;function Nt(){if(typeof document>"u"||document.getElementById(Q))return;let r=document.createElement("style");r.id=Q,r.textContent=Lt,document.head.appendChild(r);}var At='<svg viewBox="0 0 500 500" width="22" height="22" fill="none" aria-hidden="true" focusable="false"><path d="M147.789 394.059C214.872 439.472 307.74 425.816 359.214 362.946L371.749 347.654L437.045 393.713L423.39 410.225C385.37 456.004 331.287 486.708 271.399 496.516C211.059 506.557 151.221 494.72 102.868 463.262C50.9889 429.616 15.9579 377.523 4.20937 316.703C-1.75472 286.404 -1.3776 255.258 5.31847 225.103C12.0145 194.947 24.8939 166.394 43.1963 141.127L55.4452 124.132L120.503 170.19L109.04 186.311C61.1408 253.994 78.4657 347.194 147.789 394.059Z" fill="currentColor"/><path d="M500 310.578L428.222 321.724L386.423 70.7041L126.55 111.075L114.992 41.7101L377.391 0.879109C385.717 -0.444061 394.224 -0.272305 402.485 1.38576L405.059 1.91543C418.429 4.93491 430.565 11.7347 439.92 21.4473C449.274 31.16 455.423 43.3453 457.581 56.4489L500 310.578Z" fill="currentColor"/><path d="M257.046 329.232C306.454 329.232 346.506 290.526 346.506 242.779C346.506 195.033 306.454 156.327 257.046 156.327C207.639 156.327 167.586 195.033 167.586 242.779C167.586 290.526 207.639 329.232 257.046 329.232Z" fill="currentColor"/></svg>';function N(r=false){let e=document.createElement("div");return e.className="tr-logo",r&&(e.style.justifyContent="flex-start"),e.innerHTML=`${At}<span class="tr-word">Taprail</span>`,e}function A(r=false){let e=document.createElement("div");return e.className=r?"tr-ring tr-sm":"tr-ring",e}var St='<svg width="15" height="15" viewBox="0 0 15 15" fill="none" aria-hidden="true"><path d="M3.5 3.5l8 8M11.5 3.5l-8 8" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"/></svg>',Rt='<svg width="13" height="13" viewBox="0 0 16 16" fill="none" aria-hidden="true"><rect x="5.25" y="5.25" width="8.5" height="8.5" rx="2" stroke="currentColor" stroke-width="1.4"/><path d="M10.75 5.25V4a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v4.75a2 2 0 0 0 2 2h1.25" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"/></svg>',Pt='<svg width="24" height="24" viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="M5 12.5l4.2 4.2L19 7" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/></svg>';function rt(r,e={}){let{id:n}=et(r);return ht()?(window.location.href=tt(n),X(n,e,"app")):X(n,e,"email")}function X(r,e,n){return new Promise(d=>{let p=false,w=false,b,L=2e3,h=false,C=0,E=n==="app"?"app":"taprail",f={},at=document.activeElement,ot=document.body.style.overflow;Nt();let{palette:x,radius:it,font:st}=Tt(e.theme??{});document.querySelector('[data-taprail="overlay"]')?.remove();let g=document.createElement("div");g.setAttribute("data-taprail","overlay"),g.setAttribute("role","dialog"),g.setAttribute("aria-modal","true"),g.setAttribute("aria-label","Pay with Taprail");let j={"--tr-surface":x.surface,"--tr-text":x.text,"--tr-text-rgb":_t(x.text),"--tr-muted":x.muted,"--tr-accent":x.accent,"--tr-accent-text":x.accentText,"--tr-backdrop":x.backdrop,"--tr-radius":`${it}px`,"--tr-font":st};for(let t in j)g.style.setProperty(t,j[t]);let R=document.createElement("div");R.setAttribute("data-taprail","frame");let v=document.createElement("button");v.setAttribute("data-taprail","close"),v.setAttribute("aria-label","Close"),v.innerHTML=St;let P=document.createElement("div");function T(t){P.replaceChildren(t);}function ct(){clearTimeout(b),document.removeEventListener("keydown",G),document.removeEventListener("visibilitychange",K),window.removeEventListener("focus",z),g.remove(),document.body.style.overflow=ot,at?.focus?.();}function k(t){p||(p=true,ct(),d(t),e.redirect&&t.status!=="closed"&&yt(t));}function M(){p||(e.onClose?.(),k({status:"closed",order_id:r,transaction_reference:null,return_url:null}));}function G(t){t.key==="Escape"&&M();}function W(t){if(p)return;U();let o={status:t.status,order_id:t.order_id,transaction_reference:t.transaction_reference,return_url:t.return_url,rail:E};t.status==="approved"?(e.onSuccess?.(o),gt(o)):k(o);}function O(t){h=true,L=t,clearTimeout(b),b=setTimeout(B,400);}function U(){h=false,clearTimeout(b);}async function B(){if(!(p||w||!h)){w=true;try{let t=await I(r);if(C=0,t._ok&&(f={amount_kobo:t.amount_kobo,currency:t.currency,merchant_name:t.merchant_name},Z.has(t.status))){W(t);return}}catch(t){C+=1,C===4&&e.onError?.(t instanceof Error?t:new Error(String(t)));}finally{w=false;}!p&&h&&(b=setTimeout(B,L));}}function z(){p||!h||(clearTimeout(b),B());}function K(){document.visibilityState==="visible"&&z();}function $(){let t=document.createElement("div");if(t.className="tr-sum",f.amount_kobo!=null){let o=document.createElement("div");if(o.className="tr-amount",o.textContent=H(f.amount_kobo,f.currency),t.appendChild(o),f.merchant_name){let s=document.createElement("div");s.className="tr-merchant",s.textContent=f.merchant_name,t.appendChild(s);}}else {let o=document.createElement("div");o.className="tr-title",o.textContent="Complete your payment",t.appendChild(o);}return t}function lt(){P.querySelectorAll(".tr-sum").forEach(t=>t.replaceWith($()));}function V(){let t=document.createElement("div");t.setAttribute("data-taprail","card"),t.classList.add("tr-left");let o=document.createElement("div");o.className="tr-sub",o.textContent="Enter your email to pay with Taprail, or by bank transfer.";let s=document.createElement("div");s.className="tr-field";let c=document.createElement("label");c.className="tr-label",c.textContent="Email",c.htmlFor="tr-email";let a=document.createElement("input");a.className="tr-input",a.id="tr-email",a.type="email",a.inputMode="email",a.autocomplete="email",a.placeholder="you@example.com",a.value=e.email??"";let l=document.createElement("div");l.className="tr-err",s.append(c,a,l);let i=document.createElement("button");i.className="tr-btn tr-mt",i.type="button";let u=document.createElement("span");u.textContent="Continue",i.appendChild(u);function m(y){l.textContent=y,l.classList.add("tr-on"),a.classList.add("tr-bad");}function q(){l.classList.remove("tr-on"),a.classList.remove("tr-bad");}async function Y(){let y=a.value.trim();if(!y||!/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(y)){m("Enter a valid email address."),a.focus();return}q(),i.setAttribute("disabled","true"),u.textContent="Checking",i.prepend(A(true));try{let _=await vt(r,y);_.method==="taprail"?(E="taprail",dt()):(E="transfer",ut(_.account));}catch(_){i.querySelector(".tr-ring")?.remove(),i.removeAttribute("disabled"),u.textContent="Continue",m(_ instanceof Error?_.message:"Something went wrong. Try again.");}}a.addEventListener("input",q),a.addEventListener("keydown",y=>{y.key==="Enter"&&Y();}),i.addEventListener("click",Y),t.append(N(true),$(),o,s,i),T(t),setTimeout(()=>a.focus(),30);}function dt(){let t=document.createElement("div");t.setAttribute("data-taprail","card");let o=document.createElement("div");o.className="tr-title",o.textContent="Confirm in the Taprail app";let s=document.createElement("div");s.className="tr-sub",s.textContent="We sent a confirmation to your Taprail app. Approve it there to finish.";let c=document.createElement("div");c.className="tr-wait";let a=document.createElement("span");a.textContent="Waiting for approval",c.append(A(true),a);let l=document.createElement("button");l.className="tr-ghost",l.type="button",l.textContent="Use a different email",l.addEventListener("click",()=>{U(),E="taprail",V();}),t.append(N(),o,s,c,l),T(t),O(1800);}function ut(t){let o=document.createElement("div");o.setAttribute("data-taprail","card"),o.classList.add("tr-left");let s=document.createElement("div");s.className="tr-title",s.textContent="Pay by bank transfer";let c=document.createElement("div");c.className="tr-sub";let a=t.amount_kobo!=null?H(t.amount_kobo,f.currency):"the exact amount";c.textContent=`Send ${a} to the account below. We'll confirm automatically.`;let l=document.createElement("div");l.className="tr-acct",l.append(D("Bank",t.bank||"\u2014"),pt("Account number",t.account_number||"\u2014"),D("Account name",t.account_name||"Taprail")),t.amount_kobo!=null&&l.append(D("Amount",H(t.amount_kobo,f.currency)));let i=document.createElement("div");i.className="tr-wait";let u=document.createElement("span");if(u.textContent="Waiting for your transfer",i.append(A(true),u),o.append(N(true),s,c,l),t.expires_at){let m=document.createElement("div");m.className="tr-expiry",o.appendChild(m),mt(m,t.expires_at);}o.appendChild(i),T(o),O(2500);}function D(t,o){let s=document.createElement("div");s.className="tr-row";let c=document.createElement("span");c.className="tr-rk",c.textContent=t;let a=document.createElement("span");return a.className="tr-rv",a.textContent=o,s.append(c,a),s}function pt(t,o){let s=document.createElement("div");s.className="tr-row";let c=document.createElement("span");c.className="tr-rk",c.textContent=t;let a=document.createElement("span");a.style.display="inline-flex",a.style.alignItems="center",a.style.gap="10px";let l=document.createElement("span");l.className="tr-rv tr-mono",l.textContent=o;let i=document.createElement("button");return i.className="tr-copy",i.type="button",i.innerHTML=`${Rt}<span>Copy</span>`,i.addEventListener("click",async()=>{try{await navigator.clipboard.writeText(o.replace(/\s/g,""));let u=i.querySelector("span");u&&(u.textContent="Copied",setTimeout(()=>u.textContent="Copy",1400));}catch{}}),a.append(l,i),s.append(c,a),s}function mt(t,o){let s=new Date(o).getTime();if(Number.isNaN(s))return;let c=()=>{if(p)return;let a=Math.max(0,Math.floor((s-Date.now())/1e3)),l=Math.floor(a/60),i=a%60;t.textContent=a>0?`Account expires in ${l}:${i.toString().padStart(2,"0")}`:"This account has expired.",a>0&&!p&&setTimeout(c,1e3);};c();}function ft(){let t=document.createElement("div");t.setAttribute("data-taprail","card");let o=document.createElement("div");o.className="tr-title",o.textContent="Continue in the Taprail app";let s=document.createElement("div");s.className="tr-sub",s.textContent="Approve this payment in the Taprail app, then come back here.";let c=document.createElement("a");c.className="tr-btn tr-mt",c.href=tt(r);let a=document.createElement("span");a.textContent="Open Taprail",c.appendChild(a);let l=document.createElement("div");l.className="tr-wait";let i=document.createElement("span");i.textContent="Waiting for approval",l.append(A(true),i),t.append(N(),$(),s,c,l),T(t),O(1200);}function gt(t){let o=document.createElement("div");o.setAttribute("data-taprail","card");let s=document.createElement("div");s.className="tr-check",s.innerHTML=Pt;let c=document.createElement("div");c.className="tr-title",c.textContent="Payment complete";let a=document.createElement("div");a.className="tr-sub",o.append(s,c,a);let l=E==="transfer"&&e.appNudge!==false;if(l){a.textContent="Next time, pay with a single tap. Get the Taprail app.";let i=document.createElement("a");i.className="tr-btn tr-mt",i.href=bt,i.target="_blank",i.rel="noopener";let u=document.createElement("span");u.textContent="Get the Taprail app",i.appendChild(u);let m=document.createElement("button");m.className="tr-ghost",m.type="button",m.textContent="Done",m.addEventListener("click",()=>k(t)),o.append(i,m);}else {a.textContent=f.merchant_name?`Your payment to ${f.merchant_name} is confirmed.`:"Your payment is confirmed.";let i=document.createElement("button");i.className="tr-btn tr-mt",i.type="button";let u=document.createElement("span");u.textContent="Done",i.appendChild(u),i.addEventListener("click",()=>k(t)),o.append(i);}v.onclick=()=>k(t),setTimeout(()=>k(t),l?12e3:6e3),T(o);}v.addEventListener("click",M),g.addEventListener("click",t=>{t.target===g&&M();}),document.addEventListener("keydown",G),document.addEventListener("visibilitychange",K),window.addEventListener("focus",z),R.append(P,v),g.appendChild(R),document.body.appendChild(g),document.body.style.overflow="hidden",I(r).then(t=>{if(!p){if(t._ok&&(f={amount_kobo:t.amount_kobo,currency:t.currency,merchant_name:t.merchant_name},Z.has(t.status))){W(t);return}lt();}}).catch(()=>{}),n==="app"?ft():V(),v.focus();})}async function nt(r){let{id:e}=et(r),n=await I(e);return {status:n.status,order_id:n.order_id,transaction_reference:n.transaction_reference,return_url:n.return_url}}function Mt(){let[r,e]=S__namespace.useState(false);return {open:S__namespace.useCallback((d,p={})=>(e(true),rt(d,p).finally(()=>e(false))),[]),getStatus:nt,pending:r}}function $t({intent:r,onSuccess:e,onError:n,onClose:d,theme:p,children:w,disabled:b,...L}){let{open:h,pending:C}=Mt();return jsxRuntime.jsx("button",{type:"button",disabled:b||C,onClick:()=>h(r,{onSuccess:e,onError:n,onClose:d,theme:p}),...L,children:w??"Pay with Taprail"})}exports.TaprailButton=$t;exports.useTaprailCheckout=Mt;
|
|
56
|
+
`;function Nt(){if(typeof document>"u"||document.getElementById(Q))return;let r=document.createElement("style");r.id=Q,r.textContent=Lt,document.head.appendChild(r);}var At='<svg viewBox="0 0 500 500" width="22" height="22" fill="none" aria-hidden="true" focusable="false"><path d="M147.789 394.059C214.872 439.472 307.74 425.816 359.214 362.946L371.749 347.654L437.045 393.713L423.39 410.225C385.37 456.004 331.287 486.708 271.399 496.516C211.059 506.557 151.221 494.72 102.868 463.262C50.9889 429.616 15.9579 377.523 4.20937 316.703C-1.75472 286.404 -1.3776 255.258 5.31847 225.103C12.0145 194.947 24.8939 166.394 43.1963 141.127L55.4452 124.132L120.503 170.19L109.04 186.311C61.1408 253.994 78.4657 347.194 147.789 394.059Z" fill="currentColor"/><path d="M500 310.578L428.222 321.724L386.423 70.7041L126.55 111.075L114.992 41.7101L377.391 0.879109C385.717 -0.444061 394.224 -0.272305 402.485 1.38576L405.059 1.91543C418.429 4.93491 430.565 11.7347 439.92 21.4473C449.274 31.16 455.423 43.3453 457.581 56.4489L500 310.578Z" fill="currentColor"/><path d="M257.046 329.232C306.454 329.232 346.506 290.526 346.506 242.779C346.506 195.033 306.454 156.327 257.046 156.327C207.639 156.327 167.586 195.033 167.586 242.779C167.586 290.526 207.639 329.232 257.046 329.232Z" fill="currentColor"/></svg>';function N(r=false){let e=document.createElement("div");return e.className="tr-logo",r&&(e.style.justifyContent="flex-start"),e.innerHTML=`${At}<span class="tr-word">Taprail</span>`,e}function A(r=false){let e=document.createElement("div");return e.className=r?"tr-ring tr-sm":"tr-ring",e}var St='<svg width="15" height="15" viewBox="0 0 15 15" fill="none" aria-hidden="true"><path d="M3.5 3.5l8 8M11.5 3.5l-8 8" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"/></svg>',Rt='<svg width="13" height="13" viewBox="0 0 16 16" fill="none" aria-hidden="true"><rect x="5.25" y="5.25" width="8.5" height="8.5" rx="2" stroke="currentColor" stroke-width="1.4"/><path d="M10.75 5.25V4a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v4.75a2 2 0 0 0 2 2h1.25" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"/></svg>',Pt='<svg width="24" height="24" viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="M5 12.5l4.2 4.2L19 7" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/></svg>';function rt(r,e={}){let{id:n}=et(r);return ht()?(window.location.href=tt(n),X(n,e,"app")):X(n,e,"email")}function X(r,e,n){return new Promise(d=>{let p=false,w=false,b,L=2e3,h=false,C=0,E=n==="app"?"app":"taprail",f={},at=document.activeElement,ot=document.body.style.overflow;Nt();let{palette:x,radius:it,font:st}=Tt(e.theme??{});document.querySelector('[data-taprail="overlay"]')?.remove();let g=document.createElement("div");g.setAttribute("data-taprail","overlay"),g.setAttribute("role","dialog"),g.setAttribute("aria-modal","true"),g.setAttribute("aria-label","Pay with Taprail");let j={"--tr-surface":x.surface,"--tr-text":x.text,"--tr-text-rgb":_t(x.text),"--tr-muted":x.muted,"--tr-accent":x.accent,"--tr-accent-text":x.accentText,"--tr-backdrop":x.backdrop,"--tr-radius":`${it}px`,"--tr-font":st};for(let t in j)g.style.setProperty(t,j[t]);let R=document.createElement("div");R.setAttribute("data-taprail","frame");let v=document.createElement("button");v.setAttribute("data-taprail","close"),v.setAttribute("aria-label","Close"),v.innerHTML=St;let P=document.createElement("div");function T(t){P.replaceChildren(t);}function ct(){clearTimeout(b),document.removeEventListener("keydown",G),document.removeEventListener("visibilitychange",K),window.removeEventListener("focus",z),g.remove(),document.body.style.overflow=ot,at?.focus?.();}function k(t){p||(p=true,ct(),d(t),e.redirect&&t.status!=="closed"&&yt(t));}function M(){p||(e.onClose?.(),k({status:"closed",order_id:r,transaction_reference:null,return_url:null}));}function G(t){t.key==="Escape"&&M();}function W(t){if(p)return;U();let o={status:t.status,order_id:t.order_id,transaction_reference:t.transaction_reference,return_url:t.return_url,rail:E};t.status==="approved"?(e.onSuccess?.(o),gt(o)):k(o);}function O(t){h=true,L=t,clearTimeout(b),b=setTimeout(B,400);}function U(){h=false,clearTimeout(b);}async function B(){if(!(p||w||!h)){w=true;try{let t=await I(r);if(C=0,t._ok&&(f={amount_kobo:t.amount_kobo,currency:t.currency,merchant_name:t.merchant_name},Z.has(t.status))){W(t);return}}catch(t){C+=1,C===4&&e.onError?.(t instanceof Error?t:new Error(String(t)));}finally{w=false;}!p&&h&&(b=setTimeout(B,L));}}function z(){p||!h||(clearTimeout(b),B());}function K(){document.visibilityState==="visible"&&z();}function $(){let t=document.createElement("div");if(t.className="tr-sum",f.amount_kobo!=null){let o=document.createElement("div");if(o.className="tr-amount",o.textContent=H(f.amount_kobo,f.currency),t.appendChild(o),f.merchant_name){let s=document.createElement("div");s.className="tr-merchant",s.textContent=f.merchant_name,t.appendChild(s);}}else {let o=document.createElement("div");o.className="tr-title",o.textContent="Complete your payment",t.appendChild(o);}return t}function lt(){P.querySelectorAll(".tr-sum").forEach(t=>t.replaceWith($()));}function V(){let t=document.createElement("div");t.setAttribute("data-taprail","card"),t.classList.add("tr-left");let o=document.createElement("div");o.className="tr-sub",o.textContent="Enter your email to pay with Taprail, or by bank transfer.";let s=document.createElement("div");s.className="tr-field";let c=document.createElement("label");c.className="tr-label",c.textContent="Email",c.htmlFor="tr-email";let a=document.createElement("input");a.className="tr-input",a.id="tr-email",a.type="email",a.inputMode="email",a.autocomplete="email",a.placeholder="you@example.com",a.value=e.email??"";let l=document.createElement("div");l.className="tr-err",s.append(c,a,l);let i=document.createElement("button");i.className="tr-btn tr-mt",i.type="button";let u=document.createElement("span");u.textContent="Continue",i.appendChild(u);function m(y){l.textContent=y,l.classList.add("tr-on"),a.classList.add("tr-bad");}function q(){l.classList.remove("tr-on"),a.classList.remove("tr-bad");}async function Y(){let y=a.value.trim();if(!y||!/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(y)){m("Enter a valid email address."),a.focus();return}q(),i.setAttribute("disabled","true"),u.textContent="Checking",i.prepend(A(true));try{let _=await vt(r,y);_.method==="taprail"?(E="taprail",dt()):(E="transfer",ut(_.account));}catch(_){i.querySelector(".tr-ring")?.remove(),i.removeAttribute("disabled"),u.textContent="Continue",m(_ instanceof Error?_.message:"Something went wrong. Try again.");}}a.addEventListener("input",q),a.addEventListener("keydown",y=>{y.key==="Enter"&&Y();}),i.addEventListener("click",Y),t.append(N(true),$(),o,s,i),T(t),setTimeout(()=>a.focus(),30);}function dt(){let t=document.createElement("div");t.setAttribute("data-taprail","card");let o=document.createElement("div");o.className="tr-title",o.textContent="Confirm in the Taprail app";let s=document.createElement("div");s.className="tr-sub",s.textContent="We sent a confirmation to your Taprail app. Approve it there to finish.";let c=document.createElement("div");c.className="tr-wait";let a=document.createElement("span");a.textContent="Waiting for approval",c.append(A(true),a);let l=document.createElement("button");l.className="tr-ghost",l.type="button",l.textContent="Use a different email",l.addEventListener("click",()=>{U(),E="taprail",V();}),t.append(N(),o,s,c,l),T(t),O(1800);}function ut(t){let o=document.createElement("div");o.setAttribute("data-taprail","card"),o.classList.add("tr-left");let s=document.createElement("div");s.className="tr-title",s.textContent="Pay by bank transfer";let c=document.createElement("div");c.className="tr-sub";let a=t.amount_kobo!=null?H(t.amount_kobo,f.currency):"the exact amount";c.textContent=`Send ${a} to the account below. We'll confirm automatically.`;let l=document.createElement("div");l.className="tr-acct",l.append(D("Bank",t.bank||"\u2014"),pt("Account number",t.account_number||"\u2014"),D("Account name",t.account_name||"Taprail")),t.amount_kobo!=null&&l.append(D("Amount",H(t.amount_kobo,f.currency)));let i=document.createElement("div");i.className="tr-wait";let u=document.createElement("span");if(u.textContent="Waiting for your transfer",i.append(A(true),u),o.append(N(true),s,c,l),t.expires_at){let m=document.createElement("div");m.className="tr-expiry",o.appendChild(m),mt(m,t.expires_at);}o.appendChild(i),T(o),O(1500);}function D(t,o){let s=document.createElement("div");s.className="tr-row";let c=document.createElement("span");c.className="tr-rk",c.textContent=t;let a=document.createElement("span");return a.className="tr-rv",a.textContent=o,s.append(c,a),s}function pt(t,o){let s=document.createElement("div");s.className="tr-row";let c=document.createElement("span");c.className="tr-rk",c.textContent=t;let a=document.createElement("span");a.style.display="inline-flex",a.style.alignItems="center",a.style.gap="10px";let l=document.createElement("span");l.className="tr-rv tr-mono",l.textContent=o;let i=document.createElement("button");return i.className="tr-copy",i.type="button",i.innerHTML=`${Rt}<span>Copy</span>`,i.addEventListener("click",async()=>{try{await navigator.clipboard.writeText(o.replace(/\s/g,""));let u=i.querySelector("span");u&&(u.textContent="Copied",setTimeout(()=>u.textContent="Copy",1400));}catch{}}),a.append(l,i),s.append(c,a),s}function mt(t,o){let s=new Date(o).getTime();if(Number.isNaN(s))return;let c=()=>{if(p)return;let a=Math.max(0,Math.floor((s-Date.now())/1e3)),l=Math.floor(a/60),i=a%60;t.textContent=a>0?`Account expires in ${l}:${i.toString().padStart(2,"0")}`:"This account has expired.",a>0&&!p&&setTimeout(c,1e3);};c();}function ft(){let t=document.createElement("div");t.setAttribute("data-taprail","card");let o=document.createElement("div");o.className="tr-title",o.textContent="Continue in the Taprail app";let s=document.createElement("div");s.className="tr-sub",s.textContent="Approve this payment in the Taprail app, then come back here.";let c=document.createElement("a");c.className="tr-btn tr-mt",c.href=tt(r);let a=document.createElement("span");a.textContent="Open Taprail",c.appendChild(a);let l=document.createElement("div");l.className="tr-wait";let i=document.createElement("span");i.textContent="Waiting for approval",l.append(A(true),i),t.append(N(),$(),s,c,l),T(t),O(1200);}function gt(t){let o=document.createElement("div");o.setAttribute("data-taprail","card");let s=document.createElement("div");s.className="tr-check",s.innerHTML=Pt;let c=document.createElement("div");c.className="tr-title",c.textContent="Payment complete";let a=document.createElement("div");a.className="tr-sub",o.append(s,c,a);let l=E==="transfer"&&e.appNudge!==false;if(l){a.textContent="Next time, pay with a single tap. Get the Taprail app.";let i=document.createElement("a");i.className="tr-btn tr-mt",i.href=bt,i.target="_blank",i.rel="noopener";let u=document.createElement("span");u.textContent="Get the Taprail app",i.appendChild(u);let m=document.createElement("button");m.className="tr-ghost",m.type="button",m.textContent="Done",m.addEventListener("click",()=>k(t)),o.append(i,m);}else {a.textContent=f.merchant_name?`Your payment to ${f.merchant_name} is confirmed.`:"Your payment is confirmed.";let i=document.createElement("button");i.className="tr-btn tr-mt",i.type="button";let u=document.createElement("span");u.textContent="Done",i.appendChild(u),i.addEventListener("click",()=>k(t)),o.append(i);}v.onclick=()=>k(t),setTimeout(()=>k(t),l?12e3:6e3),T(o);}v.addEventListener("click",M),g.addEventListener("click",t=>{t.target===g&&M();}),document.addEventListener("keydown",G),document.addEventListener("visibilitychange",K),window.addEventListener("focus",z),R.append(P,v),g.appendChild(R),document.body.appendChild(g),document.body.style.overflow="hidden",I(r).then(t=>{if(!p){if(t._ok&&(f={amount_kobo:t.amount_kobo,currency:t.currency,merchant_name:t.merchant_name},Z.has(t.status))){W(t);return}lt();}}).catch(()=>{}),n==="app"?ft():V(),v.focus();})}async function nt(r){let{id:e}=et(r),n=await I(e);return {status:n.status,order_id:n.order_id,transaction_reference:n.transaction_reference,return_url:n.return_url}}function Mt(){let[r,e]=S__namespace.useState(false);return {open:S__namespace.useCallback((d,p={})=>(e(true),rt(d,p).finally(()=>e(false))),[]),getStatus:nt,pending:r}}function $t({intent:r,onSuccess:e,onError:n,onClose:d,theme:p,children:w,disabled:b,...L}){let{open:h,pending:C}=Mt();return jsxRuntime.jsx("button",{type:"button",disabled:b||C,onClick:()=>h(r,{onSuccess:e,onError:n,onClose:d,theme:p}),...L,children:w??"Pay with Taprail"})}exports.TaprailButton=$t;exports.useTaprailCheckout=Mt;
|
package/dist/react.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {c,b}from'./chunk-
|
|
1
|
+
import {c,b}from'./chunk-CIVYKW6L.js';import*as e from'react';import {jsx}from'react/jsx-runtime';function T(){let[n,t]=e.useState(false);return {open:e.useCallback((o,r={})=>(t(true),b(o,r).finally(()=>t(false))),[]),getStatus:c,pending:n}}function R({intent:n,onSuccess:t,onError:a,onClose:o,theme:r,children:s,disabled:u,...l}){let{open:c,pending:d}=T();return jsx("button",{type:"button",disabled:u||d,onClick:()=>c(n,{onSuccess:t,onError:a,onClose:o,theme:r}),...l,children:s??"Pay with Taprail"})}export{R as TaprailButton,T as useTaprailCheckout};
|