@moneybar.online/moneybar 3.1.0
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/README.md +445 -0
- package/dist/index.browser.js +3054 -0
- package/dist/index.browser.js.map +1 -0
- package/dist/index.bundle.js +2 -0
- package/dist/index.bundle.js.map +1 -0
- package/dist/index.cjs.js +3058 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.d.ts +166 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.esm.js +3054 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/index.js +3065 -0
- package/dist/index.js.map +1 -0
- package/dist/index.umd.js +2 -0
- package/dist/index.umd.js.map +1 -0
- package/dist/types.d.ts +141 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/example-template.html +69 -0
- package/moneybar-config-template.js +109 -0
- package/package.json +74 -0
- package/src/index.ts +3273 -0
- package/src/types.ts +173 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8CAkQqB,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@supabase/supabase-js")):"function"==typeof define&&define.amd?define(["exports","@supabase/supabase-js"],t):t((n="undefined"!=typeof globalThis?globalThis:n||self).MoneyBar={},n.Supabase)}(this,function(n,t){"use strict";n.MoneyBar=class{mergeConfigs(n){const t="undefined"!=typeof window?window.APP_CONFIG:null;if(!n&&!t)throw new Error("MoneyBar: No configuration provided. Either pass config to constructor or set window.APP_CONFIG");return n?t?{...t,...n}:n:t}constructor(n){this.currentUser=null,this.userFingerprint=null,this.eventListeners=new Map,this.supabaseConnectionFailed=!1,this.paymentConnectionFailed=!1,this.cachedStatus=null,this.statusCacheTime=0,this.STATUS_CACHE_DURATION=5e3,this.initializationPromise=null,this.cachedPremiumStatus=null,this.premiumStatusCacheTime=0,this.config=this.mergeConfigs(n),this.config.options,this.validateConfig(),this.initializeSupabase(),this.initializePayment(),this.initializeFingerprint(),this.setupAuthListener(),this.checkPaymentStatus()}async handleDownload(){try{if(this.supabaseConnectionFailed)return void this.config.callbacks?.onError?.(new Error("Server connection required for download verification. Please check your configuration."));if(this.config.payment&&this.paymentConnectionFailed)return void this.config.callbacks?.onError?.(new Error("Payment configuration error. Please contact support."));if(this.currentUser){if(await this.checkPremiumStatus(this.currentUser.email))return void this.config.callbacks?.onPremiumDownload()}const n=await this.getDownloadStatus();if(n.currentCount>=n.limit)return void this.config.callbacks?.onLimitReached(n.currentCount,n.limit);await this.incrementDownloadCount(),this.config.callbacks?.onDownloadAllowed(),this.cachedStatus=null;const t=await this.getDownloadStatus();this.emit("countChanged",{count:t.currentCount,limit:t.limit}),t.currentCount>=t.limit&&setTimeout(()=>{this.config.callbacks?.onLimitReached(t.currentCount,t.limit)},100)}catch(n){this.handleError(n)}}async getDownloadStatus(n=!1){console.log(`🔍 [INIT] getDownloadStatus called (forceRefresh: ${n}) at ${(new Date).toISOString()}`);const t=this.cachedStatus?Date.now()-this.statusCacheTime:-1;if(!n&&this.cachedStatus&&t<this.STATUS_CACHE_DURATION)return console.log(`🔍 [INIT] Using cached status (age: ${t}ms)`),this.cachedStatus;if(!n&&this.initializationPromise)return console.log("🔍 [INIT] Waiting for existing initialization promise"),await this.initializationPromise;console.log(`🔍 [INIT] Starting new status fetch (cache age: ${t}ms)`),this.initializationPromise=this.fetchFreshStatus(n);try{const n=await this.initializationPromise;return console.log("🔍 [INIT] Status fetch completed successfully"),n}finally{this.initializationPromise=null}}async fetchFreshStatus(n){try{let t=0,e=!1;if(t=n||!this.cachedStatus?await this.getDownloadCount():this.cachedStatus.currentCount,this.currentUser){const t=null!==this.cachedPremiumStatus&&Date.now()-this.premiumStatusCacheTime<this.STATUS_CACHE_DURATION;n||!t?(console.log(`🔥 [SUPABASE API] About to call checkPremiumStatus from getDownloadStatus (forceRefresh: ${n}, cacheValid: ${t})`),e=await this.checkPremiumStatus(this.currentUser.email),this.cachedPremiumStatus=e,this.premiumStatusCacheTime=Date.now()):(e=this.cachedPremiumStatus,console.log(`🔍 [CACHE] Using cached premium status from getDownloadStatus: ${e}`))}else e=!1;const a={currentCount:t,limit:this.config.freeDownloadLimit,isPremium:e,isAuthenticated:!!this.currentUser,remaining:Math.max(0,this.config.freeDownloadLimit-t)};return this.cachedStatus=a,this.statusCacheTime=Date.now(),a}catch(n){this.handleError(n);const t={currentCount:0,limit:this.config.freeDownloadLimit,isPremium:!1,isAuthenticated:!1,remaining:this.config.freeDownloadLimit};return this.cachedStatus=t,this.statusCacheTime=Date.now(),t}}async getUserContext(){const n=await this.getDownloadStatus();return{isPremium:n.isPremium,isAuthenticated:n.isAuthenticated,email:this.currentUser?.email,name:this.currentUser?.user_metadata?.full_name||this.currentUser?.user_metadata?.name,currentCount:n.currentCount,remaining:n.remaining,limit:n.limit,user:this.currentUser}}async signIn(){try{const{error:n}=await this.supabase.auth.signInWithOAuth({provider:"google",options:{redirectTo:`${window.location.origin}${window.location.pathname}`}});if(n)throw n}catch(n){this.handleError(n)}}async signOut(){try{await this.supabase.auth.signOut(),this.currentUser=null,this.emit("authChanged",{user:null,isPremium:!1})}catch(n){this.handleError(n)}}async createPayment(){if(!this.currentUser)throw new Error("User must be signed in to create payment");if(!this.config.payment)throw new Error("Payment configuration not provided");const n={email:this.currentUser.email,product_id:this.config.payment.productId,mode:this.config.payment.mode||"test",app_id:this.config.appId,return_url:`${window.location.origin}${window.location.pathname}?payment=success`};console.log(`🔥 [SUPABASE API] createPayment called for email: ${this.currentUser.email} | Time: ${(new Date).toISOString()}`);try{const t=await fetch(`${this.config.supabase.url}/functions/v1/create-payment`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.config.supabase.anonKey}`},body:JSON.stringify(n)});if(console.log(`🔥 [SUPABASE API] createPayment response: ${t.status}`),this.config.options,!t.ok){const n=await t.text();let e;this.config.options?.debug&&console.error("🔍 DEBUG: createPayment error response:",n);try{e=JSON.parse(n)}catch{e={error:n}}throw(n.includes("404")||n.includes("could not be found"))&&(this.paymentConnectionFailed=!0,this.config.options?.debug&&console.warn("Invalid payment product ID detected, disabling downloads"),this.updateStatusDisplays()),new Error(e.error||"Payment creation failed")}const e=await t.json();return this.config.options,e}catch(n){return this.handleError(n),null}}attachToButton(n,t){const e=document.querySelector(n);if(!e)throw new Error(`Button not found: ${n}`);this.injectBaseStyles(),this.createTitleBar(),this.createPaywallModal(),this.createSuccessModal(),this.createAuthUI(),this.createStatusDisplay(),e.setAttribute("data-leadfast-attached","true"),e.onclick=async n=>{n.preventDefault(),await this.handleButtonClick(t)},this.setupUIUpdates()}attachToButtons(n){this.injectBaseStyles(),this.createTitleBar(),this.createPaywallModal(),this.createSuccessModal(),this.createAuthUI(),n.buttons.forEach(n=>{const t=document.querySelector(n.selector);t?(t.setAttribute("data-leadfast-attached","true"),t.onclick=async t=>{t.preventDefault(),await this.handleButtonClick(n.downloadCallback)},this.setupUIUpdates()):console.warn(`Button not found: ${n.selector}`)}),this.createGlobalStatusDisplay()}async handleButtonClick(n){const t=document.querySelector('[data-leadfast-attached="true"]');if(t&&t.disabled)console.log("⚠️ Button click ignored - operation already in progress");else{t&&(t.disabled=!0,t.style.opacity="0.6");try{await this.handleButtonClickInternal(n)}finally{t&&(t.disabled=!1,t.style.opacity="1")}}}async handleButtonClickInternal(n){if(this.supabaseConnectionFailed)return void this.showConnectionError();if(this.config.payment&&this.paymentConnectionFailed)return void this.showPaymentConfigError();const t=this.cachedStatus&&Date.now()-this.statusCacheTime<this.STATUS_CACHE_DURATION?this.cachedStatus:await this.getDownloadStatus();if(t.isPremium){const t=await this.getUserContext();return void(n.length>0?n(t):n())}if(t.currentCount>=t.limit)this.showPaywallInstant(t);else{try{if(n.length>0){const t=await this.getUserContext();t.isPremium||(t.currentCount+=1,t.remaining=Math.max(0,t.limit-t.currentCount)),n(t)}else n();const t=await this.getDownloadStatus(!0);if(t.currentCount>=t.limit)return console.warn(`⚠️ Limit reached during execution (${t.currentCount}/${t.limit}) - canceling increment`),void alert("⚠️ You reached the limit while this action was processing. No attempt was counted.");const e=await this.incrementDownloadCount();if(e>this.config.freeDownloadLimit)return void console.error(`⚠️ Server returned count (${e}) exceeding limit (${this.config.freeDownloadLimit})`);if(!0===this.config.successMessage?.enabled){const n=this.config.successMessage?.title||"Action Completed!",t=this.config.successMessage?.message||"Your action completed successfully!";this.showSuccess(n,t)}}catch(n){return console.error("User function failed:",n),void alert("Action failed. Please check the console for details. No attempt was counted.")}this.cachedStatus=null,this.updateStatusDisplays()}}injectBaseStyles(){if(document.getElementById("lead-fast-styles"))return;this.config.theme?.name&&this.injectDaisyUI();const n=document.createElement("style");n.id="lead-fast-styles";const t=this.config.theme?.primaryColor||"#3182ce";n.textContent=`\n /* User Profile Card - Top Right */\n .lead-fast-profile {\n position: fixed;\n top: 20px;\n left: 50%;\n transform: translateX(-50%);\n z-index: 1000;\n font-family: system-ui, -apple-system, sans-serif;\n width: 90%;\n max-width: 1200px;\n }\n\n .lead-fast-title-bar {\n background: rgba(250, 247, 245, 0.9) !important;\n border: 1px solid rgba(231, 226, 223, 0.6) !important;\n color: #291334 !important;\n border-radius: 16px;\n padding: 12px 24px;\n box-shadow: 0 8px 32px rgb(0 0 0 / 0.1), 0 2px 8px rgb(0 0 0 / 0.05);\n backdrop-filter: blur(20px);\n display: flex;\n align-items: center;\n justify-content: space-between;\n min-height: 60px;\n font-family: system-ui, -apple-system, sans-serif;\n }\n\n /* Theme variations for floating title bar */\n [data-theme="bumblebee"] .lead-fast-title-bar {\n background: rgba(255, 248, 220, 0.9) !important;\n border-color: rgba(254, 215, 170, 0.6) !important;\n color: #1c1917 !important;\n }\n\n [data-theme="garden"] .lead-fast-title-bar {\n background: rgba(240, 253, 244, 0.9) !important;\n border-color: rgba(134, 239, 172, 0.6) !important;\n color: #14532d !important;\n }\n\n [data-theme="emerald"] .lead-fast-title-bar {\n background: rgba(236, 253, 245, 0.9) !important;\n border-color: rgba(167, 243, 208, 0.6) !important;\n color: #065f46 !important;\n }\n\n [data-theme="corporate"] .lead-fast-title-bar {\n background: rgba(248, 250, 252, 0.9) !important;\n border-color: rgba(226, 232, 240, 0.6) !important;\n color: #1e293b !important;\n }\n\n [data-theme="dark"] .lead-fast-title-bar {\n background: rgba(31, 41, 55, 0.9) !important;\n border-color: rgba(55, 65, 81, 0.6) !important;\n color: #f9fafb !important;\n }\n\n [data-theme="cyberpunk"] .lead-fast-title-bar {\n background: rgba(0, 20, 36, 0.9) !important;\n border-color: rgba(7, 89, 133, 0.6) !important;\n color: #0ea5e9 !important;\n box-shadow: 0 8px 32px rgba(14, 165, 233, 0.2), 0 2px 8px rgba(14, 165, 233, 0.1);\n }\n\n [data-theme="valentine"] .lead-fast-title-bar {\n background: rgba(233, 30, 122, 0.15) !important;\n border-color: rgba(233, 30, 122, 0.6) !important;\n color: #831843 !important;\n }\n\n [data-theme="synthwave"] .lead-fast-title-bar {\n background: rgba(32, 20, 64, 0.9) !important;\n border-color: rgba(186, 85, 211, 0.6) !important;\n color: #ff00ff !important;\n box-shadow: 0 8px 32px rgba(255, 0, 255, 0.2), 0 2px 8px rgba(255, 0, 255, 0.1);\n }\n\n [data-theme="dracula"] .lead-fast-title-bar {\n background: rgba(40, 42, 54, 0.9) !important;\n border-color: rgba(98, 114, 164, 0.6) !important;\n color: #f8f8f2 !important;\n }\n\n [data-theme="halloween"] .lead-fast-title-bar {\n background: rgba(26, 26, 26, 0.9) !important;\n border-color: rgba(255, 165, 0, 0.6) !important;\n color: #ff6600 !important;\n }\n\n [data-theme="forest"] .lead-fast-title-bar {\n background: rgba(23, 46, 23, 0.9) !important;\n border-color: rgba(34, 197, 94, 0.6) !important;\n color: #22c55e !important;\n }\n\n [data-theme="luxury"] .lead-fast-title-bar {\n background: rgba(9, 9, 11, 0.9) !important;\n border-color: rgba(212, 175, 55, 0.6) !important;\n color: #d4af37 !important;\n }\n\n [data-theme="night"] .lead-fast-title-bar {\n background: rgba(15, 23, 42, 0.9) !important;\n border-color: rgba(30, 58, 138, 0.6) !important;\n color: #60a5fa !important;\n }\n\n [data-theme="light"] .lead-fast-title-bar {\n background: rgba(255, 255, 255, 0.9) !important;\n border-color: rgba(229, 231, 235, 0.6) !important;\n color: #1f2937 !important;\n }\n\n [data-theme="cupcake"] .lead-fast-title-bar {\n background: rgba(250, 235, 215, 0.9) !important;\n border-color: rgba(219, 185, 156, 0.6) !important;\n color: #8b4513 !important;\n }\n\n [data-theme="retro"] .lead-fast-title-bar {\n background: rgba(212, 165, 116, 0.9) !important;\n border-color: rgba(185, 144, 102, 0.6) !important;\n color: #5d4037 !important;\n }\n\n [data-theme="aqua"] .lead-fast-title-bar {\n background: rgba(240, 253, 250, 0.9) !important;\n border-color: rgba(125, 211, 252, 0.6) !important;\n color: #155e75 !important;\n }\n\n [data-theme="lofi"] .lead-fast-title-bar {\n background: rgba(248, 248, 248, 0.9) !important;\n border-color: rgba(68, 68, 68, 0.6) !important;\n color: #1a1a1a !important;\n }\n\n [data-theme="pastel"] .lead-fast-title-bar {\n background: rgba(254, 251, 255, 0.9) !important;\n border-color: rgba(209, 196, 233, 0.6) !important;\n color: #7c3aed !important;\n }\n\n [data-theme="fantasy"] .lead-fast-title-bar {\n background: rgba(255, 247, 237, 0.9) !important;\n border-color: rgba(249, 168, 212, 0.6) !important;\n color: #be185d !important;\n }\n\n [data-theme="wireframe"] .lead-fast-title-bar {\n background: rgba(223, 223, 223, 0.9) !important;\n border-color: rgba(0, 0, 0, 0.3) !important;\n color: #000000 !important;\n }\n\n [data-theme="black"] .lead-fast-title-bar {\n background: rgba(0, 0, 0, 0.9) !important;\n border-color: rgba(55, 55, 55, 0.6) !important;\n color: #ffffff !important;\n }\n\n [data-theme="cmyk"] .lead-fast-title-bar {\n background: rgba(0, 255, 255, 0.9) !important;\n border-color: rgba(255, 0, 255, 0.6) !important;\n color: #000000 !important;\n }\n\n [data-theme="autumn"] .lead-fast-title-bar {\n background: rgba(139, 69, 19, 0.9) !important;\n border-color: rgba(255, 140, 0, 0.6) !important;\n color: #ff8c00 !important;\n }\n\n [data-theme="business"] .lead-fast-title-bar {\n background: rgba(29, 78, 216, 0.9) !important;\n border-color: rgba(59, 130, 246, 0.6) !important;\n color: #3b82f6 !important;\n }\n\n [data-theme="acid"] .lead-fast-title-bar {\n background: rgba(255, 255, 0, 0.9) !important;\n border-color: rgba(255, 0, 255, 0.6) !important;\n color: #000000 !important;\n }\n\n [data-theme="lemonade"] .lead-fast-title-bar {\n background: rgba(255, 255, 224, 0.9) !important;\n border-color: rgba(34, 197, 94, 0.6) !important;\n color: #15803d !important;\n }\n\n [data-theme="coffee"] .lead-fast-title-bar {\n background: rgba(101, 67, 33, 0.9) !important;\n border-color: rgba(160, 82, 45, 0.6) !important;\n color: #d2b48c !important;\n }\n\n [data-theme="winter"] .lead-fast-title-bar {\n background: rgba(248, 250, 252, 0.9) !important;\n border-color: rgba(59, 130, 246, 0.6) !important;\n color: #1e40af !important;\n }\n\n .lead-fast-title-section {\n display: flex;\n align-items: center;\n gap: 16px;\n }\n\n .lead-fast-logo {\n font-size: 20px;\n font-weight: 700;\n display: flex;\n align-items: center;\n gap: 8px;\n color: inherit;\n text-decoration: none;\n }\n\n .lead-fast-logo img {\n width: 32px;\n height: 32px;\n border-radius: 6px;\n }\n\n .lead-fast-nav {\n display: flex;\n align-items: center;\n gap: 32px;\n margin-left: 24px;\n }\n\n .lead-fast-nav-link {\n color: inherit;\n text-decoration: none;\n font-weight: 500;\n font-size: 14px;\n opacity: 0.8;\n transition: all 0.2s;\n }\n\n .lead-fast-nav-link:hover {\n opacity: 1;\n text-decoration: none;\n }\n\n .lead-fast-user-section {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .lead-fast-avatar {\n width: 36px;\n height: 36px;\n border-radius: 50%;\n background: linear-gradient(135deg, ${t}, #4f46e5);\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-weight: 600;\n font-size: 14px;\n }\n\n .lead-fast-user-info {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 2px;\n }\n\n .lead-fast-user-email {\n color: inherit !important;\n font-size: 13px;\n font-weight: 500;\n line-height: 1;\n }\n\n .lead-fast-user-status {\n display: flex;\n align-items: center;\n gap: 6px;\n }\n\n .lead-fast-badge {\n padding: 2px 6px;\n border-radius: 12px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.025em;\n line-height: 1;\n }\n\n .lead-fast-badge.premium {\n background: #10b981 !important;\n color: #ffffff !important;\n }\n\n .lead-fast-badge.free {\n background: #65c3c8 !important;\n color: #291334 !important;\n }\n\n [data-theme="dark"] .lead-fast-badge.premium {\n background: #059669 !important;\n color: #ffffff !important;\n }\n\n [data-theme="dark"] .lead-fast-badge.free {\n background: #374151 !important;\n color: #f9fafb !important;\n }\n\n .lead-fast-count {\n font-size: 10px;\n color: inherit !important;\n opacity: 0.7;\n line-height: 1;\n }\n\n .lead-fast-signout {\n background: rgba(0, 0, 0, 0.1) !important;\n border: none;\n color: inherit !important;\n cursor: pointer;\n padding: 6px 12px;\n border-radius: 8px;\n transition: all 0.2s;\n font-size: 11px;\n font-weight: 500;\n margin-left: 8px;\n }\n\n [data-theme="dark"] .lead-fast-signout {\n background: rgba(255, 255, 255, 0.1) !important;\n }\n\n [data-theme="cyberpunk"] .lead-fast-signout {\n background: rgba(14, 165, 233, 0.2) !important;\n }\n\n .lead-fast-signout:hover {\n background: rgba(0, 0, 0, 0.2) !important;\n transform: translateY(-1px);\n }\n\n [data-theme="dark"] .lead-fast-signout:hover {\n background: rgba(255, 255, 255, 0.2) !important;\n }\n\n [data-theme="cyberpunk"] .lead-fast-signout:hover {\n background: rgba(14, 165, 233, 0.3) !important;\n }\n\n .lead-fast-branding {\n position: absolute;\n bottom: -20px;\n left: 24px;\n font-size: 9px;\n color: inherit !important;\n opacity: 0.4;\n font-weight: 500;\n letter-spacing: 0.05em;\n text-transform: lowercase;\n background: rgba(255, 255, 255, 0.8);\n padding: 2px 6px;\n border-radius: 4px;\n backdrop-filter: blur(8px);\n }\n\n [data-theme="dark"] .lead-fast-branding {\n background: rgba(0, 0, 0, 0.6);\n }\n\n [data-theme="cyberpunk"] .lead-fast-branding {\n background: rgba(0, 20, 36, 0.8);\n }\n\n /* Modal Theming */\n .download-limiter-modal {\n display: none;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(0,0,0,0.5);\n z-index: 9999;\n align-items: center;\n justify-content: center;\n }\n .download-limiter-modal.show { display: flex; }\n\n .download-limiter-content {\n background: #faf7f5 !important;\n color: #291334 !important;\n padding: 2rem;\n border-radius: 12px;\n max-width: 400px;\n text-align: center;\n box-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);\n border: 1px solid #e7e2df !important;\n font-family: system-ui, -apple-system, sans-serif;\n }\n\n [data-theme="dark"] .download-limiter-content {\n background: #1f2937 !important;\n color: #f9fafb !important;\n border-color: #374151 !important;\n }\n\n [data-theme="cyberpunk"] .download-limiter-content {\n background: #001424 !important;\n color: #0ea5e9 !important;\n border-color: #075985 !important;\n }\n\n [data-theme="valentine"] .download-limiter-content {\n background: rgba(233, 30, 122, 0.05) !important;\n color: #831843 !important;\n border-color: #e91e7a !important;\n }\n\n [data-theme="bumblebee"] .download-limiter-content {\n background: rgba(255, 248, 220, 0.95) !important;\n color: #1c1917 !important;\n border-color: rgba(254, 215, 170, 0.8) !important;\n }\n\n [data-theme="garden"] .download-limiter-content {\n background: rgba(240, 253, 244, 0.95) !important;\n color: #14532d !important;\n border-color: rgba(134, 239, 172, 0.8) !important;\n }\n\n [data-theme="emerald"] .download-limiter-content {\n background: rgba(236, 253, 245, 0.95) !important;\n color: #065f46 !important;\n border-color: rgba(167, 243, 208, 0.8) !important;\n }\n\n [data-theme="corporate"] .download-limiter-content {\n background: rgba(248, 250, 252, 0.95) !important;\n color: #1e293b !important;\n border-color: rgba(226, 232, 240, 0.8) !important;\n }\n\n [data-theme="forest"] .download-limiter-content {\n background: rgba(23, 46, 23, 0.95) !important;\n color: #22c55e !important;\n border-color: rgba(34, 197, 94, 0.8) !important;\n }\n\n [data-theme="halloween"] .download-limiter-content {\n background: rgba(26, 26, 26, 0.95) !important;\n color: #ff6500 !important;\n border-color: rgba(255, 165, 0, 0.3) !important;\n }\n\n [data-theme="synthwave"] .download-limiter-content {\n background: rgba(32, 20, 64, 0.95) !important;\n color: #ba55d3 !important;\n border-color: rgba(186, 85, 211, 0.3) !important;\n }\n\n [data-theme="dracula"] .download-limiter-content {\n background: rgba(40, 42, 54, 0.95) !important;\n color: #f8f8f2 !important;\n border-color: rgba(98, 114, 164, 0.3) !important;\n }\n\n [data-theme="luxury"] .download-limiter-content {\n background: rgba(9, 9, 11, 0.95) !important;\n color: #d4af37 !important;\n border-color: rgba(212, 175, 55, 0.3) !important;\n }\n\n [data-theme="night"] .download-limiter-content {\n background: rgba(15, 23, 42, 0.95) !important;\n color: #1e40af !important;\n border-color: rgba(30, 58, 138, 0.3) !important;\n }\n\n [data-theme="light"] .download-limiter-content {\n background: rgba(255, 255, 255, 0.95) !important;\n color: #1f2937 !important;\n border-color: rgba(229, 231, 235, 0.8) !important;\n }\n\n [data-theme="cupcake"] .download-limiter-content {\n background: rgba(250, 235, 215, 0.95) !important;\n color: #8b4513 !important;\n border-color: rgba(219, 185, 156, 0.8) !important;\n }\n\n [data-theme="retro"] .download-limiter-content {\n background: rgba(212, 165, 116, 0.95) !important;\n color: #5d4037 !important;\n border-color: rgba(185, 144, 102, 0.8) !important;\n }\n\n [data-theme="aqua"] .download-limiter-content {\n background: rgba(240, 253, 250, 0.95) !important;\n color: #155e75 !important;\n border-color: rgba(125, 211, 252, 0.8) !important;\n }\n\n [data-theme="lofi"] .download-limiter-content {\n background: rgba(248, 248, 248, 0.95) !important;\n color: #1a1a1a !important;\n border-color: rgba(68, 68, 68, 0.8) !important;\n }\n\n [data-theme="pastel"] .download-limiter-content {\n background: rgba(254, 251, 255, 0.95) !important;\n color: #7c3aed !important;\n border-color: rgba(209, 196, 233, 0.8) !important;\n }\n\n [data-theme="fantasy"] .download-limiter-content {\n background: rgba(255, 247, 237, 0.95) !important;\n color: #be185d !important;\n border-color: rgba(249, 168, 212, 0.8) !important;\n }\n\n [data-theme="wireframe"] .download-limiter-content {\n background: rgba(255, 255, 255, 0.95) !important;\n color: #000000 !important;\n border-color: rgba(0, 0, 0, 0.3) !important;\n }\n\n [data-theme="black"] .download-limiter-content {\n background: rgba(0, 0, 0, 0.95) !important;\n color: #ffffff !important;\n border-color: rgba(55, 55, 55, 0.8) !important;\n }\n\n [data-theme="cmyk"] .download-limiter-content {\n background: rgba(0, 255, 255, 0.95) !important;\n color: #000000 !important;\n border-color: rgba(255, 0, 255, 0.8) !important;\n }\n\n [data-theme="autumn"] .download-limiter-content {\n background: rgba(139, 69, 19, 0.95) !important;\n color: #ff8c00 !important;\n border-color: rgba(255, 140, 0, 0.8) !important;\n }\n\n [data-theme="business"] .download-limiter-content {\n background: rgba(29, 78, 216, 0.95) !important;\n color: #3b82f6 !important;\n border-color: rgba(59, 130, 246, 0.8) !important;\n }\n\n [data-theme="acid"] .download-limiter-content {\n background: rgba(255, 255, 0, 0.95) !important;\n color: #000000 !important;\n border-color: rgba(255, 0, 255, 0.8) !important;\n }\n\n [data-theme="lemonade"] .download-limiter-content {\n background: rgba(255, 255, 224, 0.95) !important;\n color: #15803d !important;\n border-color: rgba(34, 197, 94, 0.8) !important;\n }\n\n [data-theme="coffee"] .download-limiter-content {\n background: rgba(101, 67, 33, 0.95) !important;\n color: #d2b48c !important;\n border-color: rgba(160, 82, 45, 0.8) !important;\n }\n\n [data-theme="winter"] .download-limiter-content {\n background: rgba(248, 250, 252, 0.95) !important;\n color: #1e40af !important;\n border-color: rgba(59, 130, 246, 0.8) !important;\n }\n\n .download-limiter-content h2 {\n color: inherit !important;\n margin: 0 0 1rem 0;\n font-size: 1.5rem;\n font-weight: 600;\n }\n .download-limiter-content p {\n color: inherit !important;\n margin: 0 0 1.5rem 0;\n line-height: 1.6;\n }\n .download-limiter-signin-btn {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n background: #65c3c8 !important;\n color: #291334 !important;\n border: none;\n padding: 12px 20px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n text-decoration: none;\n transition: all 0.2s;\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n }\n\n [data-theme="dark"] .download-limiter-signin-btn {\n background: #3b82f6 !important;\n color: #ffffff !important;\n }\n\n [data-theme="cyberpunk"] .download-limiter-signin-btn {\n background: #f59e0b !important;\n color: #000000 !important;\n }\n\n [data-theme="valentine"] .download-limiter-signin-btn {\n background: #e91e7a !important;\n color: #ffffff !important;\n }\n\n [data-theme="bumblebee"] .download-limiter-signin-btn {\n background: #fbbf24 !important;\n color: #1c1917 !important;\n }\n\n [data-theme="garden"] .download-limiter-signin-btn {\n background: #22c55e !important;\n color: #ffffff !important;\n }\n\n [data-theme="emerald"] .download-limiter-signin-btn {\n background: #10b981 !important;\n color: #ffffff !important;\n }\n\n [data-theme="corporate"] .download-limiter-signin-btn {\n background: #3b82f6 !important;\n color: #ffffff !important;\n }\n\n [data-theme="forest"] .download-limiter-signin-btn {\n background: #22c55e !important;\n color: #1a1a1a !important;\n }\n\n [data-theme="halloween"] .download-limiter-signin-btn {\n background: #ff6500 !important;\n color: #1a1a1a !important;\n }\n\n [data-theme="synthwave"] .download-limiter-signin-btn {\n background: #ba55d3 !important;\n color: #201040 !important;\n }\n\n [data-theme="dracula"] .download-limiter-signin-btn {\n background: #8be9fd !important;\n color: #282a36 !important;\n }\n\n [data-theme="luxury"] .download-limiter-signin-btn {\n background: #d4af37 !important;\n color: #09090b !important;\n }\n\n [data-theme="night"] .download-limiter-signin-btn {\n background: #1e40af !important;\n color: #ffffff !important;\n }\n\n [data-theme="light"] .download-limiter-signin-btn {\n background: #3b82f6 !important;\n color: #ffffff !important;\n }\n\n [data-theme="cupcake"] .download-limiter-signin-btn {\n background: #8b4513 !important;\n color: #ffffff !important;\n }\n\n [data-theme="retro"] .download-limiter-signin-btn {\n background: #d4a574 !important;\n color: #ffffff !important;\n }\n\n [data-theme="aqua"] .download-limiter-signin-btn {\n background: #0891b2 !important;\n color: #ffffff !important;\n }\n\n [data-theme="lofi"] .download-limiter-signin-btn {\n background: #1a1a1a !important;\n color: #ffffff !important;\n }\n\n [data-theme="pastel"] .download-limiter-signin-btn {\n background: #7c3aed !important;\n color: #ffffff !important;\n }\n\n [data-theme="fantasy"] .download-limiter-signin-btn {\n background: #be185d !important;\n color: #ffffff !important;\n }\n\n [data-theme="wireframe"] .download-limiter-signin-btn {\n background: #dfdfdf !important;\n color: #000000 !important;\n border: 1px solid #000000 !important;\n }\n\n [data-theme="black"] .download-limiter-signin-btn {\n background: #ffffff !important;\n color: #000000 !important;\n }\n\n [data-theme="cmyk"] .download-limiter-signin-btn {\n background: #ff00ff !important;\n color: #000000 !important;\n }\n\n [data-theme="autumn"] .download-limiter-signin-btn {\n background: #ff8c00 !important;\n color: #ffffff !important;\n }\n\n [data-theme="business"] .download-limiter-signin-btn {\n background: #3b82f6 !important;\n color: #ffffff !important;\n }\n\n [data-theme="acid"] .download-limiter-signin-btn {\n background: #ff00ff !important;\n color: #000000 !important;\n }\n\n [data-theme="lemonade"] .download-limiter-signin-btn {\n background: #22c55e !important;\n color: #ffffff !important;\n }\n\n [data-theme="coffee"] .download-limiter-signin-btn {\n background: #a0522d !important;\n color: #ffffff !important;\n }\n\n [data-theme="winter"] .download-limiter-signin-btn {\n background: #3b82f6 !important;\n color: #ffffff !important;\n }\n\n .download-limiter-signin-btn:hover {\n opacity: 0.9;\n transform: translateY(-1px);\n box-shadow: 0 4px 8px rgba(0,0,0,0.15);\n }\n\n /* Upgrade Button Styles for All Themes */\n [data-theme="dark"] .upgrade-btn {\n background: #3b82f6 !important;\n color: #ffffff !important;\n }\n\n [data-theme="cyberpunk"] .upgrade-btn {\n background: #ff073a !important;\n color: #ffffff !important;\n }\n\n [data-theme="valentine"] .upgrade-btn {\n background: #e91e7a !important;\n color: #ffffff !important;\n }\n\n [data-theme="bumblebee"] .upgrade-btn {\n background: #f59e0b !important;\n color: #ffffff !important;\n }\n\n [data-theme="garden"] .upgrade-btn {\n background: #10b981 !important;\n color: #ffffff !important;\n }\n\n [data-theme="emerald"] .upgrade-btn {\n background: #10b981 !important;\n color: #ffffff !important;\n }\n\n [data-theme="corporate"] .upgrade-btn {\n background: #3b82f6 !important;\n color: #ffffff !important;\n }\n\n [data-theme="forest"] .upgrade-btn {\n background: #10b981 !important;\n color: #ffffff !important;\n }\n\n [data-theme="halloween"] .upgrade-btn {\n background: #ff7b00 !important;\n color: #000000 !important;\n }\n\n [data-theme="synthwave"] .upgrade-btn {\n background: #e879f9 !important;\n color: #ffffff !important;\n }\n\n [data-theme="dracula"] .upgrade-btn {\n background: #bd93f9 !important;\n color: #ffffff !important;\n }\n\n [data-theme="luxury"] .upgrade-btn {\n background: #d4af37 !important;\n color: #000000 !important;\n }\n\n [data-theme="night"] .upgrade-btn {\n background: #38bdf8 !important;\n color: #ffffff !important;\n }\n\n [data-theme="light"] .upgrade-btn {\n background: #3b82f6 !important;\n color: #ffffff !important;\n }\n\n [data-theme="cupcake"] .upgrade-btn {\n background: #f472b6 !important;\n color: #ffffff !important;\n }\n\n [data-theme="retro"] .upgrade-btn {\n background: #d4a574 !important;\n color: #ffffff !important;\n }\n\n [data-theme="aqua"] .upgrade-btn {\n background: #06b6d4 !important;\n color: #ffffff !important;\n }\n\n [data-theme="lofi"] .upgrade-btn {\n background: #a3a3a3 !important;\n color: #000000 !important;\n }\n\n [data-theme="pastel"] .upgrade-btn {\n background: #a78bfa !important;\n color: #ffffff !important;\n }\n\n [data-theme="fantasy"] .upgrade-btn {\n background: #f472b6 !important;\n color: #ffffff !important;\n }\n\n [data-theme="wireframe"] .upgrade-btn {\n background: #dfdfdf !important;\n color: #000000 !important;\n border: 1px solid #000000 !important;\n }\n\n [data-theme="black"] .upgrade-btn {\n background: #ffffff !important;\n color: #000000 !important;\n }\n\n [data-theme="cmyk"] .upgrade-btn {\n background: #0891b2 !important;\n color: #ffffff !important;\n }\n\n [data-theme="autumn"] .upgrade-btn {\n background: #d97706 !important;\n color: #ffffff !important;\n }\n\n [data-theme="business"] .upgrade-btn {\n background: #3b82f6 !important;\n color: #ffffff !important;\n }\n\n [data-theme="acid"] .upgrade-btn {\n background: #84cc16 !important;\n color: #000000 !important;\n }\n\n [data-theme="lemonade"] .upgrade-btn {\n background: #22c55e !important;\n color: #ffffff !important;\n }\n\n [data-theme="coffee"] .upgrade-btn {\n background: #a0522d !important;\n color: #ffffff !important;\n }\n\n [data-theme="winter"] .upgrade-btn {\n background: #3b82f6 !important;\n color: #ffffff !important;\n }\n\n /* Cancel Button Styles for All Themes */\n [data-theme="dark"] .cancel-btn {\n background: #4b5563 !important;\n color: #ffffff !important;\n }\n\n [data-theme="cyberpunk"] .cancel-btn {\n background: #7e22ce !important;\n color: #ffffff !important;\n }\n\n [data-theme="valentine"] .cancel-btn {\n background: #c11560 !important;\n color: #ffffff !important;\n }\n\n [data-theme="bumblebee"] .cancel-btn {\n background: #d97706 !important;\n color: #ffffff !important;\n }\n\n [data-theme="garden"] .cancel-btn {\n background: #059669 !important;\n color: #ffffff !important;\n }\n\n [data-theme="emerald"] .cancel-btn {\n background: #059669 !important;\n color: #ffffff !important;\n }\n\n [data-theme="corporate"] .cancel-btn {\n background: #6b7280 !important;\n color: #ffffff !important;\n }\n\n [data-theme="forest"] .cancel-btn {\n background: #059669 !important;\n color: #ffffff !important;\n }\n\n [data-theme="halloween"] .cancel-btn {\n background: #7c3aed !important;\n color: #ffffff !important;\n }\n\n [data-theme="synthwave"] .cancel-btn {\n background: #7e22ce !important;\n color: #ffffff !important;\n }\n\n [data-theme="dracula"] .cancel-btn {\n background: #6272a4 !important;\n color: #ffffff !important;\n }\n\n [data-theme="luxury"] .cancel-btn {\n background: #8b5cf6 !important;\n color: #ffffff !important;\n }\n\n [data-theme="night"] .cancel-btn {\n background: #0284c7 !important;\n color: #ffffff !important;\n }\n\n [data-theme="light"] .cancel-btn {\n background: #6b7280 !important;\n color: #ffffff !important;\n }\n\n [data-theme="cupcake"] .cancel-btn {\n background: #ec4899 !important;\n color: #ffffff !important;\n }\n\n [data-theme="retro"] .cancel-btn {\n background: #b8925c !important;\n color: #ffffff !important;\n }\n\n [data-theme="aqua"] .cancel-btn {\n background: #0891b2 !important;\n color: #ffffff !important;\n }\n\n [data-theme="lofi"] .cancel-btn {\n background: #6b7280 !important;\n color: #ffffff !important;\n }\n\n [data-theme="pastel"] .cancel-btn {\n background: #8b5cf6 !important;\n color: #ffffff !important;\n }\n\n [data-theme="fantasy"] .cancel-btn {\n background: #ec4899 !important;\n color: #ffffff !important;\n }\n\n [data-theme="wireframe"] .cancel-btn {\n background: #f5f5f5 !important;\n color: #000000 !important;\n border: 1px solid #000000 !important;\n }\n\n [data-theme="black"] .cancel-btn {\n background: #6b7280 !important;\n color: #ffffff !important;\n }\n\n [data-theme="cmyk"] .cancel-btn {\n background: #0369a1 !important;\n color: #ffffff !important;\n }\n\n [data-theme="autumn"] .cancel-btn {\n background: #c2410c !important;\n color: #ffffff !important;\n }\n\n [data-theme="business"] .cancel-btn {\n background: #6b7280 !important;\n color: #ffffff !important;\n }\n\n [data-theme="acid"] .cancel-btn {\n background: #65a30d !important;\n color: #ffffff !important;\n }\n\n [data-theme="lemonade"] .cancel-btn {\n background: #16a34a !important;\n color: #ffffff !important;\n }\n\n [data-theme="coffee"] .cancel-btn {\n background: #8b4513 !important;\n color: #ffffff !important;\n }\n\n [data-theme="winter"] .cancel-btn {\n background: #1e40af !important;\n color: #ffffff !important;\n }\n\n /* Success Button Styles for All Themes */\n [data-theme="dark"] .success-btn {\n background: #10b981 !important;\n color: #ffffff !important;\n }\n\n [data-theme="cyberpunk"] .success-btn {\n background: #00ff41 !important;\n color: #000000 !important;\n }\n\n [data-theme="valentine"] .success-btn {\n background: #e91e7a !important;\n color: #ffffff !important;\n }\n\n [data-theme="bumblebee"] .success-btn {\n background: #f59e0b !important;\n color: #ffffff !important;\n }\n\n [data-theme="garden"] .success-btn {\n background: #10b981 !important;\n color: #ffffff !important;\n }\n\n [data-theme="emerald"] .success-btn {\n background: #10b981 !important;\n color: #ffffff !important;\n }\n\n [data-theme="corporate"] .success-btn {\n background: #10b981 !important;\n color: #ffffff !important;\n }\n\n [data-theme="forest"] .success-btn {\n background: #10b981 !important;\n color: #ffffff !important;\n }\n\n [data-theme="halloween"] .success-btn {\n background: #ff7b00 !important;\n color: #000000 !important;\n }\n\n [data-theme="synthwave"] .success-btn {\n background: #00ff41 !important;\n color: #000000 !important;\n }\n\n [data-theme="dracula"] .success-btn {\n background: #50fa7b !important;\n color: #000000 !important;\n }\n\n [data-theme="luxury"] .success-btn {\n background: #d4af37 !important;\n color: #000000 !important;\n }\n\n [data-theme="night"] .success-btn {\n background: #22d3ee !important;\n color: #ffffff !important;\n }\n\n [data-theme="light"] .success-btn {\n background: #10b981 !important;\n color: #ffffff !important;\n }\n\n [data-theme="cupcake"] .success-btn {\n background: #f472b6 !important;\n color: #ffffff !important;\n }\n\n [data-theme="retro"] .success-btn {\n background: #d4a574 !important;\n color: #ffffff !important;\n }\n\n [data-theme="aqua"] .success-btn {\n background: #06b6d4 !important;\n color: #ffffff !important;\n }\n\n [data-theme="lofi"] .success-btn {\n background: #10b981 !important;\n color: #ffffff !important;\n }\n\n [data-theme="pastel"] .success-btn {\n background: #34d399 !important;\n color: #ffffff !important;\n }\n\n [data-theme="fantasy"] .success-btn {\n background: #f472b6 !important;\n color: #ffffff !important;\n }\n\n [data-theme="wireframe"] .success-btn {\n background: #dfdfdf !important;\n color: #000000 !important;\n border: 1px solid #000000 !important;\n }\n\n [data-theme="black"] .success-btn {\n background: #10b981 !important;\n color: #ffffff !important;\n }\n\n [data-theme="cmyk"] .success-btn {\n background: #06b6d4 !important;\n color: #ffffff !important;\n }\n\n [data-theme="autumn"] .success-btn {\n background: #d97706 !important;\n color: #ffffff !important;\n }\n\n [data-theme="business"] .success-btn {\n background: #10b981 !important;\n color: #ffffff !important;\n }\n\n [data-theme="acid"] .success-btn {\n background: #84cc16 !important;\n color: #000000 !important;\n }\n\n [data-theme="lemonade"] .success-btn {\n background: #22c55e !important;\n color: #ffffff !important;\n }\n\n [data-theme="coffee"] .success-btn {\n background: #a0522d !important;\n color: #ffffff !important;\n }\n\n [data-theme="winter"] .success-btn {\n background: #3b82f6 !important;\n color: #ffffff !important;\n }\n .download-limiter-signout-btn {\n background: #dc3545;\n color: white;\n border: none;\n padding: 6px 12px;\n border-radius: 4px;\n font-size: 12px;\n cursor: pointer;\n margin-left: 8px;\n }\n .download-limiter-premium-badge {\n background: linear-gradient(45deg, #f39c12, #e74c3c);\n color: white;\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 10px;\n margin-left: 8px;\n font-weight: bold;\n }\n .download-limiter-btn-premium {\n opacity: 0.7;\n }\n .download-limiter-success-modal {\n display: none;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(0,0,0,0.5);\n z-index: 10000;\n align-items: center;\n justify-content: center;\n }\n .download-limiter-success-modal.show { display: flex; }\n .download-limiter-success-content {\n background: white;\n padding: 2rem;\n border-radius: 8px;\n max-width: 400px;\n text-align: center;\n box-shadow: 0 4px 20px rgba(0,0,0,0.15);\n border-left: 4px solid #38a169;\n }\n\n /* Single upgrade flow styles */\n .single-upgrade-container {\n margin: 20px 0;\n text-align: center;\n }\n\n .single-upgrade-content .upgrade-btn {\n background: linear-gradient(135deg, #059669, #0d9488) !important;\n color: white !important;\n border: none !important;\n padding: 16px 32px !important;\n border-radius: 12px !important;\n font-size: 18px !important;\n font-weight: 600 !important;\n cursor: pointer !important;\n transition: all 0.3s ease !important;\n box-shadow: 0 4px 12px rgba(5, 150, 105, 0.3) !important;\n margin-bottom: 16px !important;\n min-width: 200px !important;\n }\n\n .single-upgrade-content .upgrade-btn:hover {\n background: linear-gradient(135deg, #047857, #0f766e) !important;\n transform: translateY(-2px) !important;\n box-shadow: 0 6px 20px rgba(5, 150, 105, 0.4) !important;\n }\n\n .single-upgrade-content .upgrade-description {\n font-size: 14px !important;\n color: #6b7280 !important;\n margin: 12px 0 0 0 !important;\n line-height: 1.5 !important;\n max-width: 300px !important;\n margin-left: auto !important;\n margin-right: auto !important;\n }\n\n /* Anonymous user usage count styles */\n .lead-fast-anonymous-status {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .lead-fast-anonymous-status .lead-fast-count {\n background: rgba(59, 130, 246, 0.1);\n color: #1d4ed8;\n padding: 6px 12px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n border: 1px solid rgba(59, 130, 246, 0.2);\n }\n\n /* Success button theming */\n .download-limiter-btn.success-btn {\n background: #059669 !important;\n color: white !important;\n border: none !important;\n padding: 12px 24px !important;\n border-radius: 8px !important;\n cursor: pointer !important;\n margin-top: 20px !important;\n font-size: 16px !important;\n font-weight: 500 !important;\n transition: all 0.2s ease !important;\n }\n\n .download-limiter-btn.success-btn:hover {\n background: #047857 !important;\n transform: translateY(-1px) !important;\n }\n\n /* Theme-specific success button colors */\n [data-theme="cyberpunk"] .download-limiter-btn.success-btn {\n background: #0ea5e9 !important;\n box-shadow: 0 4px 12px rgba(14, 165, 233, 0.3) !important;\n }\n\n [data-theme="cyberpunk"] .download-limiter-btn.success-btn:hover {\n background: #0284c7 !important;\n }\n\n [data-theme="valentine"] .download-limiter-btn.success-btn {\n background: #be185d !important;\n }\n\n [data-theme="valentine"] .download-limiter-btn.success-btn:hover {\n background: #9d174d !important;\n }\n\n [data-theme="bumblebee"] .download-limiter-btn.success-btn {\n background: #f59e0b !important;\n }\n\n [data-theme="bumblebee"] .download-limiter-btn.success-btn:hover {\n background: #d97706 !important;\n }\n\n [data-theme="garden"] .download-limiter-btn.success-btn {\n background: #16a34a !important;\n }\n\n [data-theme="garden"] .download-limiter-btn.success-btn:hover {\n background: #15803d !important;\n }\n\n /* Google Sign-in button theming */\n .download-limiter-btn.google-signin-btn {\n background: #4285f4 !important;\n color: white !important;\n border: none !important;\n padding: 12px 24px !important;\n border-radius: 8px !important;\n cursor: pointer !important;\n margin-right: 10px !important;\n display: inline-flex !important;\n align-items: center !important;\n gap: 8px !important;\n font-size: 14px !important;\n font-weight: 500 !important;\n transition: all 0.2s ease !important;\n }\n\n .download-limiter-btn.google-signin-btn:hover {\n background: #3367d6 !important;\n transform: translateY(-1px) !important;\n }\n\n /* Upgrade button theming */\n .download-limiter-btn.upgrade-btn {\n background: #059669 !important;\n color: white !important;\n border: none !important;\n padding: 12px 24px !important;\n border-radius: 8px !important;\n cursor: pointer !important;\n margin-right: 10px !important;\n font-size: 16px !important;\n font-weight: 500 !important;\n transition: all 0.2s ease !important;\n }\n\n .download-limiter-btn.upgrade-btn:hover {\n background: #047857 !important;\n transform: translateY(-1px) !important;\n }\n\n /* Theme-specific button colors */\n [data-theme="cyberpunk"] .download-limiter-btn.upgrade-btn {\n background: #0ea5e9 !important;\n box-shadow: 0 4px 12px rgba(14, 165, 233, 0.3) !important;\n }\n\n [data-theme="valentine"] .download-limiter-btn.upgrade-btn {\n background: #be185d !important;\n }\n\n [data-theme="bumblebee"] .download-limiter-btn.upgrade-btn {\n background: #f59e0b !important;\n }\n\n [data-theme="garden"] .download-limiter-btn.upgrade-btn {\n background: #16a34a !important;\n }\n\n /* Cancel button container and styling - positioned at very bottom */\n .download-limiter-cancel-container {\n margin-top: 30px !important;\n padding-top: 20px !important;\n border-top: 1px solid rgba(0, 0, 0, 0.1) !important;\n text-align: center !important;\n position: relative !important;\n bottom: 0 !important;\n }\n\n .download-limiter-btn.cancel-btn {\n background: transparent !important;\n color: #6b7280 !important;\n border: none !important;\n padding: 8px 16px !important;\n border-radius: 6px !important;\n cursor: pointer !important;\n font-size: 13px !important;\n font-weight: 400 !important;\n transition: all 0.2s ease !important;\n text-decoration: underline !important;\n margin: 0 auto !important;\n display: block !important;\n }\n\n .download-limiter-btn.cancel-btn:hover {\n color: #374151 !important;\n background: rgba(107, 114, 128, 0.1) !important;\n text-decoration: none !important;\n }\n\n /* Theme-specific cancel button border */\n [data-theme="dark"] .download-limiter-cancel-container {\n border-top-color: rgba(255, 255, 255, 0.1) !important;\n }\n\n [data-theme="dark"] .download-limiter-btn.cancel-btn {\n color: #9ca3af !important;\n }\n\n [data-theme="dark"] .download-limiter-btn.cancel-btn:hover {\n color: #d1d5db !important;\n background: rgba(156, 163, 175, 0.1) !important;\n }\n\n [data-theme="cyberpunk"] .download-limiter-cancel-container {\n border-top-color: rgba(14, 165, 233, 0.2) !important;\n }\n\n [data-theme="cyberpunk"] .download-limiter-btn.cancel-btn {\n color: #0ea5e9 !important;\n }\n\n [data-theme="cyberpunk"] .download-limiter-btn.cancel-btn:hover {\n color: #38bdf8 !important;\n background: rgba(14, 165, 233, 0.1) !important;\n }\n `,document.head.appendChild(n)}injectDaisyUI(){if(document.querySelector('link[href*="daisyui"]')){if(this.config.theme?.name){const n=this.config.theme.name.toLowerCase();document.documentElement.setAttribute("data-theme",n)}}else if(this.config.theme?.name){const n=this.config.theme.name.toLowerCase();document.documentElement.setAttribute("data-theme",n),this.updateStatusDisplays()}}createPaywallModal(){if(document.getElementById("download-limiter-paywall"))return;const n=document.createElement("div");n.id="download-limiter-paywall",n.className="download-limiter-modal",n.innerHTML='\n <div class="download-limiter-content">\n <h3 id="download-limiter-paywall-title">Usage Limit Reached</h3>\n <p id="download-limiter-paywall-subtitle">You\'ve used all your free attempts. Upgrade to premium for unlimited usage!</p>\n\n \x3c!-- Auth Section (shows when not signed in) --\x3e\n <div id="download-limiter-auth-section" style="margin: 20px 0;">\n <p>Sign in to continue or upgrade to premium</p>\n <button id="download-limiter-signin-btn" class="download-limiter-btn google-signin-btn">\n <svg width="18" height="18" viewBox="0 0 18 18" fill="none">\n <path d="M16.51 8H8.98v3h4.3c-.18 1-.74 1.48-1.6 2.04v2.01h2.6a8.8 8.8 0 0 0 2.38-5.88c0-.57-.05-.66-.15-1.18z" fill="white"/>\n <path d="M8.98 17c2.16 0 3.97-.72 5.3-1.94l-2.6-2.04a4.8 4.8 0 0 1-2.7.75 4.8 4.8 0 0 1-4.52-3.4H1.83v2.07A8 8 0 0 0 8.98 17z" fill="white"/>\n <path d="M4.46 10.37a4.8 4.8 0 0 1-.25-1.37c0-.48.09-.94.25-1.37V5.56H1.83a8 8 0 0 0 0 6.88l2.63-2.07z" fill="white"/>\n <path d="M8.98 3.77c1.32 0 2.5.45 3.44 1.35l2.58-2.58C13.94.64 11.66 0 8.98 0A8 8 0 0 0 1.83 5.56l2.63 2.07c.61-1.8 2.26-3.86 4.52-3.86z" fill="white"/>\n </svg>\n Sign in with Google\n </button>\n </div>\n\n \x3c!-- Payment Section (shows when signed in) --\x3e\n <div id="download-limiter-payment-section" style="margin: 20px 0; display: none;">\n <button id="download-limiter-upgrade-btn" class="download-limiter-btn upgrade-btn">\n Upgrade to Premium\n </button>\n </div>\n\n <div class="download-limiter-cancel-container">\n <button id="download-limiter-close-btn" class="download-limiter-btn cancel-btn">\n Cancel\n </button>\n </div>\n </div>\n ',document.body.appendChild(n),n.querySelector("#download-limiter-signin-btn").addEventListener("click",async()=>{await this.signIn()}),n.querySelector("#download-limiter-upgrade-btn").addEventListener("click",async()=>{const n=await this.createPayment();n?.checkout_url&&(window.location.href=n.checkout_url)}),n.querySelector("#download-limiter-close-btn").addEventListener("click",()=>{this.config.options?.debug&&(console.log("🔍 DEBUG: Cancel button clicked"),console.log("🔍 DEBUG: this.config.feedback:",this.config.feedback),console.log("🔍 DEBUG: this.config.email:",this.config.email),console.log("🔍 DEBUG: Feedback config exists:",!(!this.config.feedback&&!this.config.email))),this.config.feedback||this.config.email?(this.config.options?.debug&&console.log("🔍 DEBUG: Showing feedback form"),this.showFeedbackForm()):(this.config.options?.debug&&console.log("🔍 DEBUG: No email config, just closing modal"),n.classList.remove("show"))})}createSuccessModal(){if(document.getElementById("download-limiter-success"))return;const n=document.createElement("div");n.id="download-limiter-success",n.className="download-limiter-modal",n.innerHTML='\n <div class="download-limiter-content"> \x3c!-- Use same content class as paywall for theming --\x3e\n <h3 id="download-limiter-success-title">Action Started!</h3>\n <p id="download-limiter-success-message">Your action completed successfully!</p>\n <button id="download-limiter-success-close" class="download-limiter-btn success-btn">\n OK\n </button>\n </div>\n ',document.body.appendChild(n),n.querySelector("#download-limiter-success-close").addEventListener("click",()=>{n.classList.remove("show")}),n.addEventListener("click",t=>{t.target===n&&n.classList.remove("show")})}showFeedbackForm(){const n=document.getElementById("download-limiter-paywall");n&&n.classList.remove("show"),this.createFeedbackModal();const t=document.getElementById("download-limiter-feedback");t&&t.classList.add("show")}createFeedbackModal(){if(document.getElementById("download-limiter-feedback"))return void(this.config.options?.debug&&console.log("🔍 DEBUG: Feedback modal already exists"));const n=this.config.feedback||(this.config.email?{form:{title:"Quick Feedback",description:"Why didn't you upgrade?",option1:"Not useful for my needs",option2:"Didn't find what I was looking for",option3:"Just trying it out"},email:this.config.email}:null);if(this.config.options?.debug&&(console.log("🔍 DEBUG: Feedback config:",n),console.log("🔍 DEBUG: this.config.feedback:",this.config.feedback),console.log("🔍 DEBUG: this.config.email:",this.config.email)),!n)return void(this.config.options?.debug&&console.log("🔍 DEBUG: No feedback config found, not creating modal"));const t=document.createElement("div");t.id="download-limiter-feedback",t.className="download-limiter-modal",t.innerHTML=`\n <div class="download-limiter-content">\n <h3>${n.form.title}</h3>\n <p style="margin-bottom: 20px;">${n.form.description}</p>\n\n <form id="feedback-form" style="text-align: left;">\n <div style="margin-bottom: 15px;">\n <label style="display: block; margin-bottom: 8px;">\n <input type="radio" name="reason" value="option1" style="margin-right: 8px;">\n ${n.form.option1}\n </label>\n <label style="display: block; margin-bottom: 8px;">\n <input type="radio" name="reason" value="option2" style="margin-right: 8px;">\n ${n.form.option2}\n </label>\n <label style="display: block; margin-bottom: 8px;">\n <input type="radio" name="reason" value="option3" style="margin-right: 8px;">\n ${n.form.option3}\n </label>\n </div>\n\n <div style="margin-bottom: 15px;">\n <label for="feedback-details" style="display: block; margin-bottom: 5px;">Tell us more:</label>\n <textarea\n id="feedback-details"\n name="details"\n rows="3"\n style="width: 100%; padding: 8px; border: 1px solid #ddd; border-radius: 4px;"\n placeholder="Your feedback helps us improve..." maxlength="200"></textarea>\n </div>\n\n <div style="margin-bottom: 20px;">\n <label for="feedback-email" style="display: block; margin-bottom: 5px;">\n Email (optional):\n </label>\n <input\n type="email"\n id="feedback-email"\n name="email"\n style="width: 100%; padding: 8px; border: 1px solid #ddd; border-radius: 4px;"\n placeholder="your@email.com">\n <small style="color: #666; display: block; margin-top: 4px;">\n Only if you want us to reach out about what you mentioned above. We don't follow up unless you want us to\n </small>\n </div>\n\n \n <div style="text-align: center;">\n <button type="submit" class="download-limiter-btn success-btn" style="margin-right: 10px;">\n Submit Feedback\n </button>\n <button type="button" id="feedback-skip-btn" class="download-limiter-btn cancel-btn">\n Skip\n </button>\n </div>\n </form>\n </div>\n `,document.body.appendChild(t),this.config.options?.debug&&console.log("🔍 DEBUG: Feedback modal created and added to DOM");const e=t.querySelector("#feedback-form");e.addEventListener("submit",n=>{n.preventDefault(),this.submitFeedback(e)}),t.querySelector("#feedback-skip-btn").addEventListener("click",()=>{t.classList.remove("show")}),t.addEventListener("click",n=>{n.target===t&&t.classList.remove("show")})}async submitFeedback(n){const t=new FormData(n),e=t.get("reason"),a=t.get("details"),o=t.get("email");if(!e)return void alert("Please select a reason");const r={reason:e,details:a,email:o||void 0,timestamp:(new Date).toISOString(),userAgent:navigator.userAgent,appId:this.config.appId};try{await this.sendFeedbackEmail(r);const n=document.getElementById("download-limiter-feedback");n&&n.classList.remove("show"),alert("Thank you for your feedback!")}catch(n){console.error("Failed to send feedback:",n),alert("Failed to send feedback. Please try again.")}}async sendFeedbackEmail(n){const t=this.config.feedback?.email||this.config.email;if(!t)throw new Error("Email configuration not available");const e=`\nNew Feedback from ${this.config.appId}\n\nReason: ${n.reason}\nDetails: ${n.details}\nUser Email: ${n.email||"Not provided"}\nTimestamp: ${n.timestamp}\nUser Agent: ${n.userAgent}\n `.trim(),a=await fetch("https://api.resend.com/emails",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t.resendApiKey}`},body:JSON.stringify({from:t.fromEmail,to:[t.fromEmail],subject:`Feedback from ${this.config.appId}`,text:e})});if(!a.ok)throw new Error(`Email API error: ${a.status}`)}createAuthUI(){if(document.getElementById("lead-fast-profile"))return;const n=document.createElement("div");n.id="lead-fast-profile",n.className="lead-fast-profile",document.body.appendChild(n)}createStatusDisplay(){if(document.getElementById("download-limiter-status"))return;const n=document.createElement("div");n.id="download-limiter-status",n.className="download-limiter-status",document.body.appendChild(n)}createGlobalStatusDisplay(){this.createStatusDisplay()}showPaywallInstant(n){this.createPaywallModal();const t=document.getElementById("download-limiter-paywall");if(t){const e=t.querySelector("#download-limiter-paywall-title");e&&(e.textContent=`You've used ${n.limit} free attempts`);const a=t.querySelector("#download-limiter-auth-section"),o=t.querySelector("#download-limiter-payment-section");if(this.currentUser)a.style.display="none",o.style.display="block";else{const n=t.querySelector("#download-limiter-paywall-subtitle");n&&(n.textContent="Sign in to continue. If you're already premium, you'll get unlimited access. New users can upgrade after signing in."),a.style.display="none",o.style.display="none",this.showSingleUpgradeFlow(t)}t.classList.add("show")}}async showPaywall(){const n=await this.getDownloadStatus();this.showPaywallInstant(n)}showSingleUpgradeFlow(n){let t=n.querySelector(".single-upgrade-container");if(!t){t=document.createElement("div"),t.className="single-upgrade-container",t.innerHTML='\n <div class="single-upgrade-content">\n <button class="download-limiter-btn upgrade-btn" id="single-upgrade-btn">\n Continue with Google\n </button>\n \x3c!--<p class="upgrade-description">\n Sign in to restore access. Premium members get unlimited usage immediately.\n </p>--\x3e\n </div>\n ';const e=n.querySelector(".download-limiter-cancel-container");e?n.querySelector(".download-limiter-content")?.insertBefore(t,e):n.querySelector(".download-limiter-content")?.appendChild(t)}t.style.display="block";const e=n.querySelector("#single-upgrade-btn");if(e){e.replaceWith(e.cloneNode(!0));const t=n.querySelector("#single-upgrade-btn");t?.addEventListener("click",async()=>{try{const{error:n}=await this.supabase.auth.signInWithOAuth({provider:"google",options:{redirectTo:`${window.location.origin}${window.location.pathname}?upgrade=true`}});n&&(console.error("Sign in error:",n),this.showError("Sign In Failed","Failed to sign in with Google. Please try again."))}catch(n){console.error("Upgrade flow error:",n),this.showError("Upgrade Failed","Failed to start upgrade process. Please try again.")}})}}showSuccess(n,t){const e=document.getElementById("download-limiter-success");if(e){const a=e.querySelector("#download-limiter-success-title"),o=e.querySelector("#download-limiter-success-message");a&&(a.textContent=n),o&&(o.textContent=t),e.classList.add("show")}}showError(n,t){const e=document.createElement("div");e.style.cssText="\n position: fixed;\n top: 20px;\n right: 20px;\n background: #fee2e2;\n border: 1px solid #fecaca;\n color: #dc2626;\n padding: 12px 16px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n line-height: 1.4;\n max-width: 300px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n z-index: 10000;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n ",e.innerHTML=`\n <div style="font-weight: 600; margin-bottom: 4px;">${n}</div>\n <div style="font-size: 13px; opacity: 0.9;">${t}</div>\n `,document.body.appendChild(e),setTimeout(()=>{e.parentNode&&e.parentNode.removeChild(e)},5e3),e.addEventListener("click",()=>{e.parentNode&&e.parentNode.removeChild(e)})}showConnectionError(){this.showError("Connection Error","Server connection required for download verification. Please check your configuration and try again.")}showPaymentConfigError(){this.showError("Payment Configuration Error","Payment system is not properly configured. Please contact support.")}disableDownloadButtons(n){const t=document.querySelectorAll("[data-leadfast-attached]"),e={connection:"Download disabled: Server connection required",payment:"Download disabled: Payment configuration error"},a={connection:"⚠️ Connection Error - Downloads Disabled",payment:"⚠️ Payment Config Error - Downloads Disabled"};t.forEach(t=>{const a=t;a.disabled=!0,a.style.opacity="0.5",a.style.cursor="not-allowed",a.title=e[n]});const o=document.querySelector(".lead-fast-user-section");o&&(o.innerHTML=`\n <div style="\n color: #ef4444;\n padding: 6px 8px;\n font-size: 12px;\n font-weight: 500;\n line-height: 1.2;\n border-radius: 4px;\n background: rgba(239, 68, 68, 0.05);\n border: 1px solid rgba(239, 68, 68, 0.2);\n max-width: 200px;\n text-align: center;\n ">\n ${a[n]}\n </div>\n `)}async updateStatusDisplays(){if(this.supabaseConnectionFailed)return void this.disableDownloadButtons("connection");if(this.config.payment&&this.paymentConnectionFailed)return void this.disableDownloadButtons("payment");const n=await this.getDownloadStatus();this.updateUserSection(n)}createTitleBar(){let n=document.getElementById("lead-fast-profile");n||(n=document.createElement("div"),n.id="lead-fast-profile",n.className="lead-fast-profile",document.body.appendChild(n));const t=this.config.titleBar||{},e=t.title||"My App",a=t.titleImage,o=t.links||[];n.innerHTML=`\n <div class="lead-fast-title-bar">\n <div class="lead-fast-title-section">\n <a href="#" class="lead-fast-logo">\n ${a?`<img src="${a}" alt="${e}">`:""}\n <span>${e}</span>\n </a>\n <nav class="lead-fast-nav">\n ${o.map(n=>`\n <a href="${n.url}" class="lead-fast-nav-link" ${n.target?`target="${n.target}"`:""}>\n ${n.text}\n </a>\n `).join("")}\n </nav>\n </div>\n\n <div class="lead-fast-user-section" id="lead-fast-user-section">\n \x3c!-- User section will be populated when logged in --\x3e\n </div>\n\n \x3c!-- <a href="https://www.moneyfast.bar" target="_blank" class="lead-fast-branding" style="text-decoration: none; color: inherit;">moneyfast.bar</a>--\x3e\n </div>\n `}updateUserSection(n){const t=document.getElementById("lead-fast-user-section");if(t)if(this.currentUser){const e=this.currentUser.email.charAt(0).toUpperCase(),a=this.currentUser.email,o=n.isPremium?"premium":"free",r=n.isPremium?"Premium":"Free",i=n.isPremium?"Unlimited":`${n.currentCount}/${n.limit}`;t.innerHTML=`\n <div class="lead-fast-avatar">${e}</div>\n <div class="lead-fast-user-info">\n <div class="lead-fast-user-email">${a}</div>\n <div class="lead-fast-user-status">\n <span class="lead-fast-badge ${o}">${r}</span>\n <span class="lead-fast-count">${i}</span>\n </div>\n </div>\n <button class="lead-fast-signout">signout</button>\n `;const s=document.querySelector(".lead-fast-title-bar");s&&getComputedStyle(s);const d=t.querySelector(".lead-fast-signout");d&&d.addEventListener("click",()=>{this.signOut()})}else{const e=`Attempts: ${n.currentCount}/${n.limit}`;t.innerHTML=`\n <div class="lead-fast-anonymous-status">\n <span class="lead-fast-count">${e}</span>\n </div>\n `}}setupUIUpdates(){this.on("authChanged",async()=>{this.cachedStatus=null,this.updateStatusDisplays();const n=document.getElementById("download-limiter-paywall");n&&n.classList.contains("show")&&(this.updatePaywallDisplay(),this.currentUser&&this.config.payment&&setTimeout(async()=>{if(await this.checkPremiumStatus(this.currentUser.email))n.classList.remove("show");else{const n=await this.createPayment();n?.checkout_url&&(window.location.href=n.checkout_url)}},1e3))}),this.on("countChanged",()=>{this.updateStatusDisplays()}),this.updateStatusDisplays()}updatePaywallDisplay(){const n=document.getElementById("download-limiter-paywall");if(!n)return;const t=n.querySelector("#download-limiter-auth-section"),e=n.querySelector("#download-limiter-payment-section");this.currentUser?(t.style.display="none",e.style.display="block"):(t.style.display="block",e.style.display="none")}on(n,t){this.eventListeners.has(n)||this.eventListeners.set(n,[]),this.eventListeners.get(n).push(t)}off(n,t){const e=this.eventListeners.get(n);if(e){const n=e.indexOf(t);n>-1&&e.splice(n,1)}}emit(n,t){const e=this.eventListeners.get(n);e&&e.forEach(e=>{try{e(t)}catch(t){console.error(`Error in ${n} listener:`,t)}})}validateConfig(){if(!this.config.appId)throw new Error("appId is required");if(!this.config.supabase?.url)throw new Error("supabase.url is required");if(!this.config.supabase?.anonKey)throw new Error("supabase.anonKey is required");if("number"!=typeof this.config.freeDownloadLimit||this.config.freeDownloadLimit<0)throw new Error("freeDownloadLimit must be a non-negative number")}async initializeSupabase(){try{this.supabase=t.createClient(this.config.supabase.url,this.config.supabase.anonKey),this.supabaseConnectionFailed=!1}catch(n){console.error("Failed to initialize Supabase:",n),this.supabaseConnectionFailed=!0}}async initializePayment(){if(!this.config.payment)return;const n=this.config.payment.productId;if(!n||!n.startsWith("pdt_")||n.length<10)return this.paymentConnectionFailed=!0,void(this.config.options?.debug&&console.warn("Invalid payment product ID format:",n));this.paymentConnectionFailed=!1}async initializeFingerprint(){try{this.userFingerprint=await this.generateFingerprint()}catch(n){this.userFingerprint=crypto.randomUUID?crypto.randomUUID():String(Date.now()),this.config.options?.debug&&console.warn("Fingerprint generation failed, using fallback:",n)}}async generateFingerprint(){const n=`${navigator.userAgent||""}||${Intl.DateTimeFormat().resolvedOptions().timeZone||""}||${`${screen.width}x${screen.height}`}||${navigator.language||""}`,t=(new TextEncoder).encode(n),e=await crypto.subtle.digest("SHA-256",t);return Array.from(new Uint8Array(e)).map(n=>n.toString(16).padStart(2,"0")).join("")}async setupAuthListener(){this.supabase.auth.onAuthStateChange(async(n,t)=>{const e=this.currentUser;this.currentUser=t?.user||null;let a=!1;if(this.currentUser){const n=!e||e.email!==this.currentUser.email,t=!this.cachedPremiumStatus||Date.now()-this.premiumStatusCacheTime>this.STATUS_CACHE_DURATION;n||t?(console.log(`🔥 [SUPABASE API] About to call checkPremiumStatus from setupAuthListener (userChanged: ${n}, cacheExpired: ${t})`),a=await this.checkPremiumStatus(this.currentUser.email),this.cachedPremiumStatus=a,this.premiumStatusCacheTime=Date.now()):(a=this.cachedPremiumStatus,console.log(`🔍 [CACHE] Using cached premium status from auth listener: ${a}`))}else this.cachedPremiumStatus=null,this.premiumStatusCacheTime=0;const o="true"===new URLSearchParams(window.location.search).get("upgrade");if("SIGNED_IN"===n&&!e&&this.currentUser&&this.config.payment&&o)if(a){window.history.replaceState({},document.title,window.location.pathname);const n=document.getElementById("download-limiter-paywall");n&&n.classList.remove("show")}else{const n=await this.createPayment();n?.checkout_url&&(window.history.replaceState({},document.title,window.location.pathname),window.location.href=n.checkout_url)}this.emit("authChanged",{user:this.currentUser,isPremium:a})});const{data:{user:n}}=await this.supabase.auth.getUser();this.currentUser=n}async getDownloadCount(){if(!this.userFingerprint)return 0;console.log(`🔥 [SUPABASE API] getDownloadCount called | Time: ${(new Date).toISOString()}`);try{const n=await fetch(`${this.config.supabase.url}/functions/v1/check-download-limit`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.config.supabase.anonKey}`},body:JSON.stringify({fingerprint:this.userFingerprint,app_id:this.config.appId,action:"check"})});if(console.log(`🔥 [SUPABASE API] getDownloadCount response: ${n.status}`),n.ok){const t=await n.json();return this.supabaseConnectionFailed=!1,t.current_count||0}401!==n.status&&403!==n.status||(console.warn(`Supabase authentication failed: ${n.status} - Invalid anon key`),this.supabaseConnectionFailed=!0)}catch(n){this.supabaseConnectionFailed=!0,this.config.options?.debug&&console.warn("Failed to get server usage count, connection failed:",n)}return 0}async incrementDownloadCount(){if(!this.userFingerprint)return 0;const n={fingerprint:this.userFingerprint,app_id:this.config.appId,action:"increment"};console.log(`🔥 [SUPABASE API] incrementDownloadCount called | Time: ${(new Date).toISOString()}`);try{const t=await fetch(`${this.config.supabase.url}/functions/v1/check-download-limit`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.config.supabase.anonKey}`},body:JSON.stringify(n)});if(console.log(`🔥 [SUPABASE API] incrementDownloadCount response: ${t.status}`),this.config.options?.debug&&!t.ok){const n=await t.text();console.error("🔍 DEBUG: Error response:",n)}if(t.ok){const n=await t.json();return this.supabaseConnectionFailed=!1,n.new_count||0}401!==t.status&&403!==t.status||(console.warn(`Supabase authentication failed: ${t.status} - Invalid anon key`),this.supabaseConnectionFailed=!0)}catch(n){this.supabaseConnectionFailed=!0,this.config.options?.debug&&console.warn("Failed to increment server count, connection failed:",n)}return 0}async checkPremiumStatus(n){console.log(`🔥 [SUPABASE API] checkPremiumStatus called for email: ${n} | Time: ${(new Date).toISOString()}`);try{const t=await fetch(`${this.config.supabase.url}/functions/v1/check-payment-status`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.config.supabase.anonKey}`},body:JSON.stringify({email:n,app_id:this.config.appId})});if(console.log(`🔥 [SUPABASE API] checkPremiumStatus response: ${t.status}`),t.ok){return"completed"===(await t.json()).status}}catch(n){this.config.options?.debug&&console.warn("Failed to check premium status:",n)}return!1}getLocalDownloadCount(){const n=`download_count_${this.config.appId}`,t=parseInt(localStorage.getItem(n)||"0",10);return isNaN(t)?0:t}incrementLocalDownloadCount(){const n=`download_count_${this.config.appId}`,t=this.getLocalDownloadCount()+1;return localStorage.setItem(n,String(t)),t}handleError(n){this.config.options?.debug&&console.error("Lead Fast Error:",n),this.config.callbacks?.onError?this.config.callbacks.onError(n):console.error("Lead Fast:",n.message),this.emit("error",n)}async checkPaymentStatus(){"success"===new URLSearchParams(window.location.search).get("payment")&&setTimeout(async()=>{if(this.currentUser){await this.checkPremiumStatus(this.currentUser.email)?this.showSuccess("Payment Successful!","Welcome to premium! You now have unlimited usage."):this.showSuccess("Processing Payment","Payment is being processed. Please refresh in a few moments.")}else this.showSuccess("Processing Payment","Please wait while we verify your payment...");const n=window.location.href.split("?")[0];window.history.replaceState({},document.title,n)},2e3)}},Object.defineProperty(n,"__esModule",{value:!0})});
|
|
2
|
+
//# sourceMappingURL=index.umd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.umd.js","sources":["../src/index.ts"],"sourcesContent":[null],"names":["mergeConfigs","config","windowConfig","window","APP_CONFIG","Error","constructor","this","currentUser","userFingerprint","eventListeners","Map","supabaseConnectionFailed","paymentConnectionFailed","cachedStatus","statusCacheTime","STATUS_CACHE_DURATION","initializationPromise","cachedPremiumStatus","premiumStatusCacheTime","options","validateConfig","initializeSupabase","initializePayment","initializeFingerprint","setupAuthListener","checkPaymentStatus","handleDownload","callbacks","onError","payment","checkPremiumStatus","email","onPremiumDownload","status","getDownloadStatus","currentCount","limit","onLimitReached","incrementDownloadCount","onDownloadAllowed","newStatus","emit","count","setTimeout","error","handleError","forceRefresh","console","log","Date","toISOString","cacheAge","now","fetchFreshStatus","result","isPremium","getDownloadCount","premiumCacheValid","freeDownloadLimit","isAuthenticated","remaining","Math","max","errorStatus","getUserContext","name","user_metadata","full_name","user","signIn","supabase","auth","signInWithOAuth","provider","redirectTo","location","origin","pathname","signOut","createPayment","requestBody","product_id","productId","mode","app_id","appId","return_url","response","fetch","url","method","headers","Authorization","anonKey","body","JSON","stringify","ok","errorText","text","errorData","debug","parse","includes","warn","updateStatusDisplays","json","attachToButton","selector","downloadCallback","button","document","querySelector","injectBaseStyles","createTitleBar","createPaywallModal","createSuccessModal","createAuthUI","createStatusDisplay","setAttribute","onclick","async","e","preventDefault","handleButtonClick","setupUIUpdates","attachToButtons","buttons","forEach","buttonConfig","createGlobalStatusDisplay","disabled","style","opacity","handleButtonClickInternal","showConnectionError","showPaymentConfigError","userContext","length","showPaywallInstant","freshStatus","alert","newCount","successMessage","enabled","title","message","showSuccess","getElementById","theme","injectDaisyUI","styles","createElement","id","primaryColor","textContent","head","appendChild","themeName","toLowerCase","documentElement","modal","className","innerHTML","addEventListener","checkout_url","href","feedback","showFeedbackForm","classList","remove","target","paywall","createFeedbackModal","add","feedbackConfig","form","description","option1","option2","option3","submitFeedback","formData","FormData","reason","get","details","feedbackData","undefined","timestamp","userAgent","navigator","sendFeedbackEmail","emailConfig","emailBody","trim","resendApiKey","from","fromEmail","to","subject","profileContainer","statusDiv","titleEl","authSection","paymentSection","display","subtitleEl","showSingleUpgradeFlow","showPaywall","upgradeContainer","cancelContainer","insertBefore","upgradeBtn","replaceWith","cloneNode","newUpgradeBtn","showError","messageEl","toast","cssText","parentNode","removeChild","disableDownloadButtons","errorType","querySelectorAll","errorMessages","connection","statusMessages","btnElement","cursor","userSection","updateUserSection","profileDiv","titleConfig","titleBar","titleImage","links","map","link","join","userInitial","charAt","toUpperCase","userEmail","badgeClass","badgeText","countText","getComputedStyle","signoutBtn","on","contains","updatePaywallDisplay","event","listener","has","set","push","off","listeners","index","indexOf","splice","data","createClient","startsWith","generateFingerprint","crypto","randomUUID","String","raw","Intl","DateTimeFormat","resolvedOptions","timeZone","screen","width","height","language","buf","TextEncoder","encode","hashBuffer","subtle","digest","Array","Uint8Array","b","toString","padStart","onAuthStateChange","session","previousUser","userChanged","cacheExpired","isUpgradeFlow","URLSearchParams","search","history","replaceState","getUser","fingerprint","action","current_count","new_count","getLocalDownloadCount","key","val","parseInt","localStorage","getItem","isNaN","incrementLocalDownloadCount","next","setItem","cleanUrl","split"],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
export interface MoneyBarConfig {
|
|
2
|
+
/** Unique identifier for your app (e.g., 'gif-maker', 'pdf-creator') */
|
|
3
|
+
appId: string;
|
|
4
|
+
/** Number of free attempts allowed before paywall */
|
|
5
|
+
freeDownloadLimit: number;
|
|
6
|
+
/** Supabase configuration */
|
|
7
|
+
supabase: {
|
|
8
|
+
url: string;
|
|
9
|
+
anonKey: string;
|
|
10
|
+
};
|
|
11
|
+
/** DodoPayments product configuration */
|
|
12
|
+
payment?: {
|
|
13
|
+
productId: string;
|
|
14
|
+
mode?: 'test' | 'live';
|
|
15
|
+
};
|
|
16
|
+
/** Optional: Feedback form configuration */
|
|
17
|
+
feedback?: {
|
|
18
|
+
form: {
|
|
19
|
+
title: string;
|
|
20
|
+
description: string;
|
|
21
|
+
option1: string;
|
|
22
|
+
option2: string;
|
|
23
|
+
option3: string;
|
|
24
|
+
};
|
|
25
|
+
email: {
|
|
26
|
+
resendApiKey: string;
|
|
27
|
+
fromEmail: string;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
/** @deprecated Use feedback.email instead - Email service configuration (for feedback and notifications) */
|
|
31
|
+
email?: {
|
|
32
|
+
resendApiKey: string;
|
|
33
|
+
fromEmail: string;
|
|
34
|
+
};
|
|
35
|
+
/** Callback functions for UI integration (optional when using attachToButton/attachToButtons) */
|
|
36
|
+
callbacks?: {
|
|
37
|
+
/** Called when download is allowed - trigger your actual download here */
|
|
38
|
+
onDownloadAllowed: () => void | Promise<void>;
|
|
39
|
+
/** Called when limit is reached - show your paywall here */
|
|
40
|
+
onLimitReached: (currentCount: number, limit: number) => void;
|
|
41
|
+
/** Called when premium user downloads - no limits apply */
|
|
42
|
+
onPremiumDownload: () => void | Promise<void>;
|
|
43
|
+
/** Called when authentication is required */
|
|
44
|
+
onAuthRequired: () => void;
|
|
45
|
+
/** Optional: Called on errors for custom error handling */
|
|
46
|
+
onError?: (error: Error) => void;
|
|
47
|
+
};
|
|
48
|
+
/** Optional: Custom styling/behavior options */
|
|
49
|
+
options?: {
|
|
50
|
+
/** Show debug logs in console */
|
|
51
|
+
debug?: boolean;
|
|
52
|
+
/** Fallback to localStorage when server unavailable */
|
|
53
|
+
fallbackToLocal?: boolean;
|
|
54
|
+
/** Auto-retry failed requests */
|
|
55
|
+
autoRetry?: boolean;
|
|
56
|
+
};
|
|
57
|
+
/** Optional: UI Theme configuration */
|
|
58
|
+
theme?: {
|
|
59
|
+
/** DaisyUI theme name */
|
|
60
|
+
name?: string;
|
|
61
|
+
/** Primary color for theming */
|
|
62
|
+
primaryColor?: string;
|
|
63
|
+
};
|
|
64
|
+
/** Optional: Title bar configuration */
|
|
65
|
+
titleBar?: {
|
|
66
|
+
/** Title text or image URL */
|
|
67
|
+
title?: string;
|
|
68
|
+
/** Image URL for title (if provided, overrides title text) */
|
|
69
|
+
titleImage?: string;
|
|
70
|
+
/** Array of navigation links */
|
|
71
|
+
links?: Array<{
|
|
72
|
+
text: string;
|
|
73
|
+
url: string;
|
|
74
|
+
target?: '_blank' | '_self';
|
|
75
|
+
}>;
|
|
76
|
+
};
|
|
77
|
+
/** Optional: Success message configuration */
|
|
78
|
+
successMessage?: {
|
|
79
|
+
/** Whether to show success modal (default: true) */
|
|
80
|
+
enabled?: boolean;
|
|
81
|
+
/** Success modal title */
|
|
82
|
+
title?: string;
|
|
83
|
+
/** Success modal message */
|
|
84
|
+
message?: string;
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
export interface DownloadStatus {
|
|
88
|
+
/** Current download count for this app */
|
|
89
|
+
currentCount: number;
|
|
90
|
+
/** Maximum downloads allowed */
|
|
91
|
+
limit: number;
|
|
92
|
+
/** Whether user has premium access */
|
|
93
|
+
isPremium: boolean;
|
|
94
|
+
/** Whether user is authenticated */
|
|
95
|
+
isAuthenticated: boolean;
|
|
96
|
+
/** Downloads remaining before paywall */
|
|
97
|
+
remaining: number;
|
|
98
|
+
}
|
|
99
|
+
export interface PaymentInfo {
|
|
100
|
+
email: string;
|
|
101
|
+
status: 'created' | 'completed' | 'failed';
|
|
102
|
+
productAmount?: number;
|
|
103
|
+
paidAmount?: number;
|
|
104
|
+
currency?: string;
|
|
105
|
+
paidCurrency?: string;
|
|
106
|
+
}
|
|
107
|
+
export interface UserContext {
|
|
108
|
+
/** Whether user has premium access */
|
|
109
|
+
isPremium: boolean;
|
|
110
|
+
/** Whether user is authenticated */
|
|
111
|
+
isAuthenticated: boolean;
|
|
112
|
+
/** User's email address (if authenticated) */
|
|
113
|
+
email?: string;
|
|
114
|
+
/** User's display name (if available) */
|
|
115
|
+
name?: string;
|
|
116
|
+
/** Current download count for this app */
|
|
117
|
+
currentCount: number;
|
|
118
|
+
/** Downloads remaining before paywall */
|
|
119
|
+
remaining: number;
|
|
120
|
+
/** Maximum downloads allowed */
|
|
121
|
+
limit: number;
|
|
122
|
+
/** Full user object from Supabase (if authenticated) */
|
|
123
|
+
user?: any;
|
|
124
|
+
}
|
|
125
|
+
export interface MoneyBarEvents {
|
|
126
|
+
/** Fired when download count changes */
|
|
127
|
+
countChanged: {
|
|
128
|
+
count: number;
|
|
129
|
+
limit: number;
|
|
130
|
+
};
|
|
131
|
+
/** Fired when user authentication state changes */
|
|
132
|
+
authChanged: {
|
|
133
|
+
user: any | null;
|
|
134
|
+
isPremium: boolean;
|
|
135
|
+
};
|
|
136
|
+
/** Fired when payment status changes */
|
|
137
|
+
paymentChanged: PaymentInfo;
|
|
138
|
+
/** Fired on errors */
|
|
139
|
+
error: Error;
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>MoneyBar Integration Example</title>
|
|
7
|
+
</head>
|
|
8
|
+
<body>
|
|
9
|
+
<h1>MoneyBar Integration Test</h1>
|
|
10
|
+
<button id="action-btn">Try Action (3 free uses)</button>
|
|
11
|
+
|
|
12
|
+
<!-- OPTION 1: Browser with Import Map (Recommended) -->
|
|
13
|
+
<!-- Copy this import map and uncomment -->
|
|
14
|
+
<!--
|
|
15
|
+
<script type="importmap">
|
|
16
|
+
{
|
|
17
|
+
"imports": {
|
|
18
|
+
"@supabase/supabase-js": "https://cdn.jsdelivr.net/npm/@supabase/supabase-js@2/+esm"
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
</script>
|
|
22
|
+
<script type="module" src="moneybar-config-template.js"></script>
|
|
23
|
+
-->
|
|
24
|
+
|
|
25
|
+
<!-- OPTION 2: Self-contained bundle (No import map needed) -->
|
|
26
|
+
<!-- Comment out the import map above and use this: -->
|
|
27
|
+
<script type="module">
|
|
28
|
+
import { MoneyBar } from 'https://cdn.jsdelivr.net/npm/@moneybar.online/moneybar/dist/index.bundle.js';
|
|
29
|
+
|
|
30
|
+
const moneyBar = new MoneyBar({
|
|
31
|
+
appId: 'test-app',
|
|
32
|
+
freeDownloadLimit: 3,
|
|
33
|
+
supabase: {
|
|
34
|
+
url: 'your-supabase-url',
|
|
35
|
+
anonKey: 'your-anon-key'
|
|
36
|
+
},
|
|
37
|
+
payment: {
|
|
38
|
+
productId: 'your-product-id',
|
|
39
|
+
mode: 'test'
|
|
40
|
+
},
|
|
41
|
+
theme: {
|
|
42
|
+
name: 'dark'
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
moneyBar.attachToButton('#action-btn', (userContext) => {
|
|
47
|
+
if (userContext.isPremium) {
|
|
48
|
+
alert('Premium features unlocked!');
|
|
49
|
+
} else {
|
|
50
|
+
alert(`Free trial: ${userContext.remaining} uses left`);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
</script>
|
|
54
|
+
|
|
55
|
+
<!-- OPTION 3: UMD Script Tag (No modules) -->
|
|
56
|
+
<!-- Uncomment this for traditional script tag usage: -->
|
|
57
|
+
<!--
|
|
58
|
+
<script src="https://cdn.jsdelivr.net/npm/@supabase/supabase-js@2/dist/umd/supabase.min.js"></script>
|
|
59
|
+
<script src="https://cdn.jsdelivr.net/npm/@moneybar.online/moneybar/dist/index.umd.js"></script>
|
|
60
|
+
<script>
|
|
61
|
+
const moneyBar = new MoneyBar.MoneyBar({
|
|
62
|
+
appId: 'test-app',
|
|
63
|
+
freeDownloadLimit: 3,
|
|
64
|
+
// ... configuration
|
|
65
|
+
});
|
|
66
|
+
</script>
|
|
67
|
+
-->
|
|
68
|
+
</body>
|
|
69
|
+
</html>
|