1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7816],{230:(e,a,t)=>{"use strict";t.d(a,{HZ:()=>P,Hz:()=>v,Ky:()=>j,N:()=>E,VP:()=>p,XC:()=>w,bg:()=>S,ci:()=>u,dx:()=>o,e2:()=>c,fb:()=>_,fr:()=>A,l$:()=>x,lD:()=>b,q4:()=>s,qx:()=>h,rb:()=>i,rj:()=>D,vT:()=>f,y1:()=>d});var l=t(3964),r=t(8253),n=t(7494);let o=4e4,i=500;function s(e,a){if("pdf"===e)return{inputSource:"pdf",inputAsSubject:!1};let t="title"===a||"titlemultiple"===a;return{inputSource:t?"topic":"text",inputAsSubject:t}}class c extends Error{constructor(e,a){super(e),this.name="QuotaExceededError",this.account=a}}class u extends Error{constructor(e="Captcha required"){super(e),this.name="CaptchaRequiredError"}}class d extends Error{constructor(e="Captcha verification failed"){super(e),this.name="CaptchaFailedError"}}class p extends Error{constructor(e,a,t){super(e),this.name="GenerationError",this.status=a,this.code=t}}let y="flashcards.aiSession.v1";async function m(e){if(!globalThis.crypto?.subtle)throw new n.Ie("This browser cannot isolate the AI session safely.");let a=new TextEncoder().encode(`flashcards-ai-session-owner-v1\0${e}`),t=Array.from(new Uint8Array(await globalThis.crypto.subtle.digest("SHA-256",a)),e=>e.toString(16).padStart(2,"0")).join("");return`ais1_${t}`}async function f(e){if(!e||!window.sessionStorage)return null;try{let a=await m(e),t=window.sessionStorage.getItem(y);if(!t)return null;let l=JSON.parse(t);if(l?.ownerKey!==a||!l.token||"number"!=typeof l.expiresAt||l.expiresAt<=Date.now()+6e4)return null;return l}catch{return null}}function h(){if(window.sessionStorage)try{window.sessionStorage.removeItem(y)}catch{}}async function w(e,a,t){let o=()=>(0,r.getFirebaseAuth)().currentUser?.uid;(0,n.No)(t,o);let i=await f(t);if((0,n.No)(t,o),i)return i.token;let s=await (0,n.Mt)(t,o),c=await fetch(`${l.bS}/ai/session`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${a}`,...s},body:JSON.stringify({captchaToken:e})});if((0,n.No)(t,o),403===c.status)throw new d;if(!c.ok)throw new p("Failed to start session",c.status);let u=await c.json();if((0,n.No)(t,o),!u?.sessionToken)throw new p("Invalid session response");let h=await m(t);(0,n.No)(t,o);var w={ownerKey:h,token:u.sessionToken,expiresAt:u.expiresAt};if(window.sessionStorage)try{window.sessionStorage.setItem(y,JSON.stringify(w))}catch{}return u.sessionToken}let g="flashcards.accountStatus.optimisticPro.v1";function _(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:18e5;if(window.localStorage)try{window.localStorage.setItem(g,JSON.stringify({uid:e,until:Date.now()+a}))}catch{}}function b(e){if(!e||!window.localStorage)return!1;try{let a=window.localStorage.getItem(g);if(!a)return!1;let t=JSON.parse(a);if(t.uid!==e)return!1;if(t.until<=Date.now())return window.localStorage.removeItem(g),!1;return!0}catch{return!1}}async function v(e){let{idToken:a,uid:t,signal:o}=e,i=()=>(0,r.getFirebaseAuth)().currentUser?.uid;(0,n.No)(t,i);let s=await (0,n.Mt)(t,i),c=await fetch(`${l.bS}/ai/generate/status`,{headers:{Authorization:`Bearer ${a}`,...s},signal:o});if((0,n.No)(t,i),!c.ok)throw new p("Could not check AI availability.",c.status);let u=await c.json();if((0,n.No)(t,i),"boolean"!=typeof u?.account?.isPro||!u.account.isPro&&("day"!==u.account.period||3!==u.account.limit||!Number.isInteger(u.account.remaining)||u.account.remaining<0||u.account.remaining>3||!Number.isFinite(u.account.resetAt)||u.account.resetAt<=0))throw new p("Invalid AI availability response.");return u.account}function x(e){return e?.period==="day"&&!1===e.isPro&&"number"==typeof e.remaining&&e.remaining<=0}async function P(e){let a,t,o,{idToken:i,uid:s,signal:y,...m}=e,g=()=>(0,r.getFirebaseAuth)().currentUser?.uid;(0,n.No)(s,g);let _=null,b=await f(s);(0,n.No)(s,g),b?_=b.token:e.captchaToken&&(_=await w(e.captchaToken,i,s));let v={method:m.method,inputSource:m.inputSource,text:m.text,numOfCards:m.numOfCards,frontLng:m.frontLng,backLng:m.backLng,subject:m.subject};_?v.sessionToken=_:m.captchaToken&&(v.captchaToken=m.captchaToken);let x=new AbortController,P=setTimeout(()=>x.abort(),185e3),k=y?(t=new AbortController,o=()=>t.abort(),y.addEventListener("abort",o,{once:!0}),x.signal.addEventListener("abort",o,{once:!0}),t.signal):x.signal;try{let e=await (0,n.Mt)(s,g);a=await fetch(`${l.bS}/ai/generate`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${i}`,...e},body:JSON.stringify(v),signal:k})}finally{clearTimeout(P)}if((0,n.No)(s,g),402===a.status){let e=await a.json().catch(()=>({}));throw(0,n.No)(s,g),new c(e?.message||"Free monthly limit reached.",e?.account||{isPro:!1})}if(401===a.status){let e=await a.json().catch(()=>({}));if((0,n.No)(s,g),e?.error==="captcha-required")throw h(),new u(e.message);throw new p(e?.message||"Unauthorized",401)}if(403===a.status)throw h(),new d;if(!a.ok){let e=await a.json().catch(()=>({}));(0,n.No)(s,g);let t=503===a.status&&e?.error==="free-ai-unavailable"?"free-ai-unavailable":429===a.status&&e?.error==="free-ai-capacity"?"free-ai-capacity":409===a.status&&e?.error==="free-ai-busy"?"free-ai-busy":void 0;throw new p(`AI service error (${a.status})`,a.status,t)}let N=await a.json();return(0,n.No)(s,g),{cards:Array.isArray(N?.result?.data)?N.result.data:[],title:N?.result?.title,account:N.account}}let k=null;async function N(){return k||(k=Promise.all([t.e(3735),t.e(8220)]).then(t.bind(t,6803)).then(e=>{try{e.GlobalWorkerOptions.workerSrc="/pdf.worker.min.js"}catch{}return e})),k}let j=5242880,S=120;function A(e){let a=null,t=!1;return{promise:(async()=>{var l;let r=await N(),n=e instanceof ArrayBuffer?e:await e.arrayBuffer();if(t)throw Error("aborted");a=r.getDocument({data:n,disableFontFace:!0,isEvalSupported:!1});let o=await a.promise;if(t){try{o.destroy()}catch{}throw Error("aborted")}return{numPages:(l=o).numPages,async renderPage(e,a){let t=await l.getPage(e),r=t.getViewport({scale:1}),n=Math.max(80,a.maxWidth)/r.width,o=t.getViewport({scale:n}),i=document.createElement("canvas"),s=Math.min(2,window.devicePixelRatio||1);i.width=Math.ceil(o.width*s),i.height=Math.ceil(o.height*s),i.style.width=`${Math.ceil(o.width)}px`,i.style.height=`${Math.ceil(o.height)}px`;let c=i.getContext("2d");if(!c)throw Error("Canvas 2d context unavailable");return c.scale(s,s),await t.render({canvasContext:c,viewport:o}).promise,t.cleanup(),i},async extractText(e){let a=[];for(let t of[...e].sort((e,a)=>e-a)){if(t<1||t>l.numPages)continue;let e=await l.getPage(t),r=(await e.getTextContent()).items.map(e=>"string"==typeof e.str?e.str:"").filter(e=>e.length>0).join(" ");a.push(r.trim()),e.cleanup()}return a.join("\n\n")},destroy(){try{l.cleanup()}catch{}try{l.destroy()}catch{}}}})(),cancel(){t=!0;try{a?.destroy()}catch{}}}}
1function D(e){return e?e.trim().split(/\s+/).filter(Boolean).length:0}let E=12e3},786:(e,a,t)=>{"use strict";t.d(a,{f:()=>o});var l=t(7964),r=t(4232);let n='a[href], button:not([disabled]), input:not([disabled]), textarea:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])';function o(e){let a,t,o=(0,l.c)(6),{isOpen:s,modalRef:c,onClose:u,closeOnEscape:d}=e,p=void 0===d||d,y=(0,r.useRef)(null);o[0]!==p||o[1]!==s||o[2]!==c||o[3]!==u?(a=()=>{if(!s)return;y.current="u">typeof document?document.activeElement:null;let e=c.current,a=setTimeout(()=>{if(!e)return;let a=e.querySelector('[data-autofocus="true"]')||e.querySelector(n);a&&"function"==typeof a.focus&&a.focus()},0),t=a=>{if("Escape"===a.key&&p){a.stopPropagation(),u?.();return}if("Tab"!==a.key||!e)return;let t=Array.from(e.querySelectorAll(n)).filter(i);if(0===t.length)return void a.preventDefault();let l=t[0],r=t[t.length-1],o=document.activeElement;a.shiftKey&&o===l?(a.preventDefault(),r.focus()):a.shiftKey||o!==r||(a.preventDefault(),l.focus())};document.addEventListener("keydown",t);let l=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{clearTimeout(a),document.removeEventListener("keydown",t),document.body.style.overflow=l;let e=y.current;e&&"function"==typeof e.focus&&e.focus()}},t=[s,c,u,p],o[0]=p,o[1]=s,o[2]=c,o[3]=u,o[4]=a,o[5]=t):(a=o[4],t=o[5]),(0,r.useEffect)(a,t)}function i(e){return!e.hasAttribute("disabled")&&null!==e.offsetParent}},6298:e=>{e.exports={overlay:"PaywallDialog_overlay__bSYYY",modal:"PaywallDialog_modal__kCcug",close:"PaywallDialog_close__9XqDh",heroIcon:"PaywallDialog_heroIcon___JYHX",title:"PaywallDialog_title__cCMpc",subtitle:"PaywallDialog_subtitle__RRuZT",features:"PaywallDialog_features___6C2V",plans:"PaywallDialog_plans__y4ifJ",plan:"PaywallDialog_plan__MS5zJ",planSelected:"PaywallDialog_planSelected__UIBoi",radioDot:"PaywallDialog_radioDot__LZXEi",planHeader:"PaywallDialog_planHeader__YhLjd",planName:"PaywallDialog_planName__4xabt",savePill:"PaywallDialog_savePill__pkpAr",planSkeleton:"PaywallDialog_planSkeleton__u_IMN",skeletonCard:"PaywallDialog_skeletonCard__8N6Uf","paywall-shimmer":"PaywallDialog_paywall-shimmer__2_JIj",legal:"PaywallDialog_legal__pg0Qx",planPriceRow:"PaywallDialog_planPriceRow__6Ej_G",planPrice:"PaywallDialog_planPrice__5oCWl",planPeriod:"PaywallDialog_planPeriod__8zK6O",planSubprice:"PaywallDialog_planSubprice__9Zzws",cta:"PaywallDialog_cta__RASJR",spinner:"PaywallDialog_spinner__HbYpd","paywall-spin":"PaywallDialog_paywall-spin__RZsWm",refund:"PaywallDialog_refund__hPJf9",trust:"PaywallDialog_trust__4v8gm",errorBanner:"PaywallDialog_errorBanner__QjZli",successPanel:"PaywallDialog_successPanel__KW9Mp",successIcon:"PaywallDialog_successIcon__BSHXN"}},7816:(e,a,t)=>{"use strict";t.r(a),t.d(a,{default:()=>P});var l=t(7876),r=t(4232),n=t(1472),o=t(6298),i=t.n(o),s=t(786),c=t(9511),u=t(8253),d=t(6016),p=t(8928),y=t(3964),m=t(7494);let f=null,h=null,w=null,g=null;async function _(e,a){let t=()=>(0,u.getFirebaseAuth)().currentUser?.uid,l=await (0,m.Mt)(a,t),r=await fetch(`${y.bS}/ai/paddle-checkout-config`,{method:"GET",headers:{Authorization:`Bearer ${e}`,...l}});if((0,m.No)(a,t),!r.ok)throw Error(`paddle config failed (${r.status})`);let n=await r.json();if((0,m.No)(a,t),n?.customData?.uid!==a)throw Error("paddle config account mismatch");return n}async function b(e,a,t){if(!a)throw Error("paddle: clientToken missing");if(t&&(g=t),f&&(e!==w||a!==h)&&(f=null),f)return f;f=(async()=>{var t;if(await (t="https://cdn.paddle.com/paddle/v2/paddle.js",new Promise((e,a)=>{if("u"<typeof document)return void a(Error("paddle: no document"));let l=Array.from(document.scripts).find(e=>e.src===t);if(l)return window.Paddle?void e():(l.addEventListener("load",()=>e(),{once:!0}),void l.addEventListener("error",()=>a(Error("paddle.js failed to load")),{once:!0}));let r=document.createElement("script");r.src=t,r.async=!0,r.onload=()=>e(),r.onerror=()=>a(Error("paddle.js failed to load")),document.head.appendChild(r)})),!window.Paddle)throw Error("paddle: window.Paddle not present after script load");if("sandbox"===e)try{window.Paddle.Environment.set("sandbox")}catch{}return window.Paddle.Initialize({token:a,eventCallback:e=>{if(g)try{g(e)}catch{}}}),w=e,h=a,window.Paddle})();try{return await f}catch(e){throw f=null,e}}async function v(e,a,t){let l=await b(e,a),r=[];if(t.monthly&&r.push({priceId:t.monthly,quantity:1}),t.yearly&&r.push({priceId:t.yearly,quantity:1}),0===r.length)return{};let n=await l.PricePreview({items:r}),o=n?.data?.currencyCode??"",i=n?.data?.details?.lineItems??[],s={};for(let e of i){let a=e?.price?.id??"";if(!a)continue;let l=Number.parseInt(e?.totals?.total??"",10),r={priceId:a,formattedTotal:e?.formattedTotals?.total??"",totalMinor:Number.isFinite(l)?l:NaN,currencyCode:o};a===t.yearly?s.yearly=r:a===t.monthly&&(s.monthly=r)}return s}var x=t(230);let P=e=>{let{isOpen:a,onClose:t,triggerContext:o="ai-generate",onUpgraded:y}=e,{t:m}=(0,c.B)(),f=(0,r.useRef)(null);(0,s.f)({isOpen:a,modalRef:f,onClose:t});let[h,w]=(0,r.useState)("yearly"),[P,k]=(0,r.useState)("plans"),[N,j]=(0,r.useState)(null),[S,A]=(0,r.useState)(null),[D,E]=(0,r.useState)(!1),[V,C]=(0,r.useState)(null),[I,T]=(0,r.useState)(null);(0,r.useEffect)(()=>{let e=(0,u.getFirebaseAuth)();return T(e.currentUser?.uid??null),(0,d.subscribeAuthState)(e=>{T(e?.uid??null)})},[]),(0,r.useEffect)(()=>{A(null),C(null),j(null),k("plans")},[I]),(0,r.useEffect)(()=>
1{if(!a||!I||S)return;let e=!1;return E(!0),(async()=>{try{let a=(0,u.getFirebaseAuth)().currentUser;if(!a||a.uid!==I)throw Error("not_signed_in");let t=await a.getIdToken(),l=await _(t,a.uid);if(e||(0,u.getFirebaseAuth)().currentUser?.uid!==a.uid)return;A(l)}catch(a){if(e||(0,u.getFirebaseAuth)().currentUser?.uid!==I)return;j(a?.message==="not_signed_in"?m("components.paywall.error_signed_out",{defaultValue:"Please sign in to upgrade."}):m("components.paywall.error_unavailable",{defaultValue:"Checkout temporarily unavailable."})),k("error")}finally{e||E(!1)}})(),()=>{e=!0}},[I,a,S,m]),(0,r.useEffect)(()=>{if(!a||!S||V)return;let e=!1;return(async()=>{try{let a=await v(S.environment,S.vendorClientToken,S.prices);e||C(a)}catch{}})(),()=>{e=!0}},[a,S,V]),(0,r.useEffect)(()=>{a||(k("plans"),j(null))},[a]),(0,r.useEffect)(()=>()=>void(g=null),[]);let M=(0,r.useMemo)(()=>"image-upload"===o?m("components.paywall.title_image",{defaultValue:"Add images to every card"}):"generic"===o?m("components.paywall.title_generic",{defaultValue:"Unlock everything"}):m("components.paywall.title_ai",{defaultValue:"Unlock unlimited AI"}),[o,m]),F=(0,r.useMemo)(()=>"image-upload"===o?m("components.paywall.subtitle_image",{defaultValue:"Add images to any card and sync them everywhere. Keep image access after your subscription ends."}):"generic"===o?m("components.paywall.subtitle_generic",{defaultValue:"Everything in Flashcards World, unlimited."}):m("components.paywall.subtitle_ai",{defaultValue:"You've hit your free AI limit. Pro unlocks unlimited generation."}),[o,m]),$=(0,r.useCallback)(async e=>{if(!S)return;let a=S.customData.uid;if((0,u.getFirebaseAuth)().currentUser?.uid!==a)return;let t="monthly"===e?S.prices.monthly:S.prices.yearly;if(!t){j(m("components.paywall.error_unavailable",{defaultValue:"Checkout temporarily unavailable."})),k("error");return}w(e),k("launching"),j(null);try{var l;let e=(0,u.getFirebaseAuth)().currentUser;if(e?.uid!==a)return;let r=e?.email??void 0,n=await b(S.environment,S.vendorClientToken,async e=>{if(!e?.name)return;let t=(0,u.getFirebaseAuth)().currentUser;if(t?.uid===a)if("checkout.completed"===e.name){if(t?.uid){(0,x.fb)(t.uid);try{await (0,p.GT)(t.uid,!0)}catch{}}if((0,u.getFirebaseAuth)().currentUser?.uid!==a)return;k("success")}else"checkout.closed"===e.name?k(e=>"launching"===e?"plans":e):"checkout.error"===e.name&&(j(m("components.paywall.error_checkout",{defaultValue:"Checkout encountered an error. Please try again."})),k("error"))});if((0,u.getFirebaseAuth)().currentUser?.uid!==a)return;l={priceId:t,customerEmail:r,customData:S.customData},n.Checkout.open({items:[{priceId:l.priceId,quantity:1}],...l.customerEmail?{customer:{email:l.customerEmail}}:{},customData:l.customData,settings:{displayMode:"overlay",theme:"light",locale:"en",allowLogout:!1,...l.successUrl?{successUrl:l.successUrl}:{}}})}catch(t){if((0,u.getFirebaseAuth)().currentUser?.uid!==a)return;let e=String(t?.message||"");e.includes("paddle.js failed to load")?j(m("components.paywall.error_blocked",{defaultValue:"Your ad-blocker may be blocking checkout. Pause it for this page and retry."})):j(e||m("components.paywall.error_unavailable",{defaultValue:"Checkout temporarily unavailable."})),k("error")}},[S,m]),U=(0,r.useCallback)(()=>{y?.(),t()},[y,t]),O=(0,r.useRef)(null),R=(0,r.useRef)(null),J=(0,r.useCallback)((e,a)=>{if("ArrowRight"===e.key||"ArrowDown"===e.key){e.preventDefault();let t="yearly"===a?"monthly":"yearly";w(t),("yearly"===t?O:R).current?.focus()}else if("ArrowLeft"===e.key||"ArrowUp"===e.key){e.preventDefault();let t="yearly"===a?"monthly":"yearly";w(t),("yearly"===t?O:R).current?.focus()}else(" "===e.key||"Enter"===e.key)&&w(a)},[]),L=(0,r.useMemo)(()=>{let e=V?.yearly,a=V?.monthly,t=e?.formattedTotal||m("components.paywall.plan_yearly_amount",{defaultValue:"$39"}),l=a?.formattedTotal||m("components.paywall.plan_monthly_amount",{defaultValue:"$4.99"}),r=null;if(e&&a&&Number.isFinite(e.totalMinor)&&Number.isFinite(a.totalMinor)&&a.totalMinor>0){let t=Math.round((1-e.totalMinor/(12*a.totalMinor))*100);t>0&&t<100&&(r=t)}let n=null!=r?m("components.paywall.save_pct_fmt",{pct:r,defaultValue:`SAVE ${r}%`}):m("components.paywall.save_pct",{defaultValue:"SAVE 35%"}),o=e?function(e,a){if(!Number.isFinite(e)||!a)return null;try{let t=new Intl.NumberFormat(void 0,{style:"currency",currency:a}).resolvedOptions().maximumFractionDigits??2,l=e/Math.pow(10,t)/365;return new Intl.NumberFormat(void 0,{style:"currency",currency:a,maximumFractionDigits:Math.max(t,2)}).format(l)}catch{return null}}(e.totalMinor,e.currencyCode):null,i=o?m("components.paywall.plan_yearly_per_day_fmt",{perDay:o,defaultValue:`Just ${o} / day \xb7 billed annually`}):m("components.paywall.plan_yearly_billed",{defaultValue:"Billed annually"}),s="yearly"===h?m("components.paywall.cta_yearly_fmt",{price:t,defaultValue:`Get Pro â ${t}/year`}):m("components.paywall.cta_monthly_fmt",{price:l,defaultValue:`Get Pro â ${l}/month`}),c=null!=r?m("components.paywall.plan_yearly_aria_save",{price:t,pct:r,defaultValue:`Yearly plan, ${t} per year, save ${r} percent`}):m("components.paywall.plan_yearly_aria",{price:t,defaultValue:`Yearly plan, ${t} per year`}),u=m("components.paywall.plan_monthly_aria",{price:l,defaultValue:`Monthly plan, ${l} per month`});return{yearlyAmount:t,monthlyAmount:l,savePctLabel:n,yearlySubprice:i,ctaLabel:s,yearlyAria:c,monthlyAria:u}},[V,h,m]),B="error"===P&&N===m("components.paywall.error_signed_out",{defaultValue:"Please sign in to upgrade."}),q=(0,r.useCallback)(()=>{try{window.dispatchEvent(new Event("open-account-modal"))}catch{}t()},[t]);return a?(0,l.jsx)("div",{className:i().overlay,onClick:t,children:(0,l.jsxs)("div",{ref:f,className:i().modal,role:"dialog","aria-modal":"true","aria-labelledby":"paywall-title",onClick:e=>e.stopPropagation(),children:[(0,l.jsx)("button",{className:i().close,onClick:t,"aria-label":m("components.paywall.close",{defaultValue:"Close"}),children:(0,l.jsx)(n.QCr,{"aria-hidden":"true"})}),"success"!==P&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("div",{className:i().heroIcon,"aria-hidden":"true",children:(0,l.jsx)(n.Hu1,{})}),(0,l.jsx)("h2",{id:"paywall-title",className:i().title,children:M}),(0,l.jsx)("p",{className:i().subtitle,children:F}),(0,l.jsxs)("ul",{className:i().features,children:[(0,l.jsxs)("li",{children:[(0,l.jsx)(n.lHQ,{"aria-hidden":"true"})," ",m("components.paywall.feature_ai",{defaultValue:"Unlimited AI flashcard generation"})]}),(0,l.jsxs)("li",{children:[(0,l.jsx)(n.kQE,{"aria-hidden":"true"})," ",m("components.paywall.feature_pdf",{defaultValue:"PDF & image uploads"})]}),(0,l.jsxs)("li",{children:[(0,l.jsx)(n.tmj,{"aria-hidden":"true"})," ",m("components.paywall.feature_cloud",{defaultValue:"Sync across web, iOS, and Android"})]}),(0,l.jsxs)("li",{children:[(0,l.jsx)(n.Mu7,{"aria-hidden":"true"})," ",m("components.paywall.feature_support",{defaultValue:"Priority email support"})]})]}),D&&!S?(0,l.jsxs)("div",{className:i().planSkeleton,"aria-hidden":"true",children:[(0,l.jsx)("div",{className:i().skeletonCard}),(0,l.jsx)("div",{className:i().skeletonCard})]}):(0,l.jsxs)("div",{className:i().plans,role:"radiogroup","aria-label":m("components.paywall.choose_plan",{defaultValue:"Choose a plan"}),children:[(0,l.jsxs)("button",{type:"button",role:"radio",ref:O,"aria-checked":"yearly"===h,"aria-label":L.yearlyAria,tabIndex:"yearly"===h?0:-1,className:`${i().plan} ${"yearly"===h?i().planSelected:""}`,onClick:()=>w("yearly"),onKeyDown:e=>J(e,"yearly"),disabled:"launching"===P,children:[(0,l.jsx)("span",{className:i().savePill,children:L.savePctLabel}),(0,l.jsx)("span",{className:i().radioDot,"aria-hidden":"true"}),(0,l.jsx)("div",{className:i().planHeader,children:(0,l.jsx)("span",{className:i().planName,children:m("components.paywall.plan_yearly",{defaultValue:"Yearly"})})}),(0,l.jsxs)("div",{className:i().planPriceRow,children:[(0,l.jsxs)("span",{className:i().planPrice,children:[L.yearlyAmount,(0,l.jsx)("span",{className:i().planPeriod,children:m("components.paywall.per_year_short",{defaultValue:"/yr"})})]}),(0,l.jsx)("span",{className:i().planSubprice,children:L.yearlySubprice})]})]}),(0,l.jsxs)("button",{type:"button",role:"radio",ref:R,"aria-checked":"monthly"===h,"aria-label":L.monthlyAria,tabIndex:"monthly"===h?0:-1,className:`${i().plan} ${"monthly"===h?i().planSelected:""}`,onClick:()=>w("monthly"),onKeyDown:e=>J(e,"monthly"),disabled:"launching"===P,children:[(0,l.jsx)("span",{className:i().radioDot,"aria-hidden":"true"}),(0,l.jsx)("div",{className:i().planHeader,children:(0,l.jsx)("span",{className:i().planName,children:m("components.paywall.plan_monthly",{defaultValue:"Monthly"})})}),(0,l.jsx)("div",{className:i().planPriceRow,children:(0,l.jsxs)("span",{className:i().planPrice,children:[L.monthlyAmount,(0,l.jsx)("span",{className:i().planPeriod,children:m("components.paywall.per_month_short",{defaultValue:"/mo"})})]})})]})]}),"error"===P&&N&&(0,l.jsx)("div",{className:i().errorBanner,role:"alert",children:N}),B?(0,l.jsx)("button",{type:"button",className:i().cta,onClick:q,children:m("components.paywall.cta_signin",{defaultValue:"Sign in to continue"})}):(0,l.jsx)("button",{type:"button",className:i().cta,disabled:D||"launching"===P||!S,onClick:()=>$(h),"aria-live":"polite",children:"launching"===P?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.hW,{className:i().spinner,"aria-hidden":"true"}),m("components.paywall.cta_launching",{defaultValue:"Opening secure checkoutâ¦"})]}):D?m("components.paywall.cta_loading_prices",{defaultValue:"Loading pricesâ¦"}):L.ctaLabel}),(0,l.jsxs)("p",{className:i().refund,children:[(0,l.jsx)("strong",{children:m("components.paywall.refund_guarantee",{defaultValue:"30-day money-back guarantee"})}),(0,l.jsx)("a",{href:"/refund-policy",target:"_blank",rel:"noopener noreferrer",children:m("components.paywall.refund_link",{defaultValue:"Refund policy"})})]}),(0,l.jsxs)("p",{className:i().trust,children:[(0,l.jsx)(n.SMR,{"aria-hidden":"true"})," ",m("components.paywall.trust_microcopy",{defaultValue:"Secure checkout by Paddle \xb7 Cancel anytime \xb7 Auto-renews until cancelled"})]}),(0,l.jsxs)("p",{className:i().legal,children:[m("components.paywall.legal_prefix",{defaultValue:"By continuing you agree to our "}),(0,l.jsx)("a",{href:"/terms",target:"_blank",rel:"noopener noreferrer",children:m("components.paywall.legal_terms",{defaultValue:"Terms"})})," ",m("components.paywall.legal_and",{defaultValue:"and"})," ",(0,l.jsx)("a",{href:"/privacy",target:"_blank",rel:"noopener noreferrer",children:m("components.paywall.legal_privacy",{defaultValue:"Privacy Policy"})}),"."]})]}),"success"===P&&(0,l.jsxs)("div",{className:i().successPanel,children:[(0,l.jsx)("div",{className:i().successIcon,"aria-hidden":"true",children:(0,l.jsx)(n.CMH,{})}),(0,l.jsx)("h2",{className:i().title,children:m("components.paywall.success_title",{defaultValue:"Welcome to Pro!"})}),(0,l.jsx)("p",{className:i().subtitle,children:m("components.paywall.success_body",{defaultValue:"Thanks for upgrading! Your Pro features are activating now and will be ready in a few moments â including unlimited AI generation."})}),(0,l.jsx)("button",{type:"button",className:i().cta,onClick:U,children:"ai-generate"===o?m("components.paywall.success_continue_ai",{defaultValue:"Generate unlimited cards"}):"image-upload"===o?m("components.paywall.success_continue_image",{defaultValue:"Add an image now"}):m("components.paywall.success_continue_generic",{defaultValue:"Start using Pro"})})]})]})}):null}},8928:(e,a,t)=>{"use strict";t.d(a,{GT:()=>c,Zf:()=>s,o1:()=>n,qm:()=>i});
1var l=t(3964);let r="flashcards.accountStatus.v1";function n(e){return e?.isPro===!0||e?.canAddImages===!0||e?.hasPermanentImageAccess===!0}let o=()=>window.localStorage?window.localStorage:null;function i(e){if(!e)return null;let a=o();if(!a)return null;try{let t=a.getItem(r);if(!t)return null;let l=JSON.parse(t),n=l?.[e];if(!n)return null;if(n.expiresAt<=Date.now())return delete l[e],a.setItem(r,JSON.stringify(l)),null;return n.status??null}catch{return null}}function s(e,a){if(!e)return;let t=o();if(t)try{let l=t.getItem(r),o=l?JSON.parse(l):{};o[e]={status:a,expiresAt:Date.now()+(n(a)?36e5:6e4)},t.setItem(r,JSON.stringify(o))}catch{}}async function c(e){let a=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!e)return null;let t=i(e);if(!a&&t)return t;try{let a=await (0,l.am)(e);return s(e,a),a}catch(e){if(e instanceof Error&&e.message.includes("User must be signed in"))return null;if(n(t))return t;throw e}}}}]); 2//# sourceMappingURL=7816.3667284f65e2de5e.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.