{"version":3,"file":"css/app.css","mappings":"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pB;AACA;;IAEI,kBAAkB;AACtB;AACA;;IAEI,iBAAiB;AACrB;AACA;;IAEI,mBAAmB;AACvB;AACA;;IAEI,mBAAmB;AACvB;;AAEA;;EAEE;AACF;IACI,WAAW;IACX,cAAc;IACd,iBAAiB;IACjB;;MAEE;IACF;;MAEE;AACN;AACA;;IAEI,iBAAiB;AACrB;AACA;;IAEI,aAAa;IACb,2CAA2C;AAC/C;AACA;;IAEI,aAAa;AACjB;AACA;;IAEI,wCAAwC;IACxC,2BAA2B;AAC/B;AACA;IACI,6BAA6B;AACjC;AACA;IACI,gBAAgB;AACpB;AACA;IACI,mBAAmB;AACvB;AACA;IACI,sDAAsD;IACtD,gEAAgE;IAChE,yBAAyB;IACzB,uCAAuC;AAC3C;AACA;IACI,qBAAqB;IACrB,uCAAuC;AAC3C;AACA;;IAEI,iBAAiB;AACrB;AACA;IACI,yCAAyC;AAC7C;AACA;IACI,gBAAgB;AACpB;AACA;IACI,0CAA0C;IAC1C,oDAAoD;AACxD;AACA;IACI,yCAAyC;IACzC,2CAA2C;AAC/C;AACA;IACI,0CAA0C;AAC9C;AACA;IACI,wCAAwC;AAC5C;AACA;IACI,mDAAmD;IACnD,gEAAgE;AACpE;AACA;IACI,wDAAwD;IACxD,kEAAkE;AACtE;AACA;IACI,mDAAmD;IACnD,+DAA+D;AACnE;AACA;IACI,iDAAiD;IACjD,yEAAyE;AAC7E;AACA;;;;;IAKI,mDAAmD;IACnD,qEAAqE;AACzE;AACA;;;;;IAKI,wDAAwD;IACxD,kEAAkE;AACtE;AACA;IACI,mDAAmD;IACnD,qEAAqE;AACzE;AACA;IACI,mDAAmD;IACnD,qEAAqE;AACzE;AACA;IACI,mDAAmD;IACnD,qEAAqE;AACzE;AACA;IACI,wDAAwD;IACxD,kEAAkE;AACtE;AACA;IACI,wDAAwD;IACxD,kEAAkE;AACtE;AACA;IACI,wDAAwD;IACxD,kEAAkE;AACtE;AACA;IACI,mDAAmD;IACnD,qEAAqE;AACzE;AACA;IACI,mDAAmD;IACnD,qEAAqE;AACzE;AACA;IACI,mDAAmD;IACnD,qEAAqE;AACzE;AACA;IACI,wDAAwD;IACxD,kEAAkE;AACtE;AACA;IACI,wDAAwD;IACxD,kEAAkE;AACtE;AACA;IACI,wDAAwD;IACxD,kEAAkE;AACtE;AACA;IACI,mDAAmD;IACnD,+DAA+D;AACnE;AACA;IACI,mDAAmD;IACnD,+DAA+D;AACnE;AACA;IACI,mDAAmD;IACnD,+DAA+D;AACnE;AACA;IACI,wDAAwD;IACxD,kEAAkE;AACtE;AACA;IACI,wDAAwD;IACxD,kEAAkE;AACtE;AACA;IACI,wDAAwD;IACxD,kEAAkE;AACtE;AACA;;;;;;IAMI,YAAY;AAChB;;AAEA;IACI,aAAa;IACb,8BAA8B;IAC9B,mBAAmB;;IAEnB,gBAAgB;AACpB;AACA;IACI,aAAa;IACb,8BAA8B;IAC9B,mBAAmB;AACvB;AACA;IACI,2BAA2B;IAC3B,kBAAkB;AACtB;AACA;IACI,yBAAyB;IACzB,iBAAiB;AACrB;AACA;IACI,aAAa;AACjB;;AAEA;IACI;QACI,cAAc;IAClB;IACA;QACI,cAAc;QACd,kBAAkB;IACtB;IACA;QACI,eAAe;IACnB;IACA;QACI,eAAe;IACnB;IACA;QACI,cAAc;IAClB;AACJ;AACA;IACI,iBAAiB;AACrB;AACA;IACI,gBAAgB;AACpB;AACA;IACI,WAAW;AACf;AACA;IACI,iBAAiB;IACjB,kBAAkB;AACtB;AACA;IACI,yBAAyB;AAC7B;;AAEA;IACI;QACI,eAAe;IACnB;IACA;QACI,cAAc;IAClB;AACJ;AACA;;EAEE;AACF;IACI,kBAAkB;IAClB,WAAW;AACf;AACA;IACI,sBAAsB;IACtB,kBAAkB;IAClB,YAAY;IACZ,6BAA6B;IAC7B,cAAc;IACd,gBAAgB;AACpB;AACA;IACI,sBAAsB;IACtB,kBAAkB;IAClB,YAAY;IACZ,6BAA6B;IAC7B,cAAc;AAClB;AACA;IACI,YAAY;AAChB;AACA;IACI,sBAAsB;IACtB,qBAAqB;IACrB,gBAAgB;IAChB,kBAAkB;IAClB,gBAAgB;IAChB,kBAAkB;IAClB,gCAAgC;IAChC,eAAe;IACf,yBAAyB;IACzB,6BAA6B;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","sources":["webpack://aio-login/./src/js/pages/limit-login-attempts.vue","webpack://aio-login/./src/js/pages/grecaptcha.vue","webpack://aio-login/./src/js/pages/2fa.vue","webpack://aio-login/./src/js/pages/integrations.vue","webpack://aio-login/./src/js/pages/enumeration-protection-logs.vue","webpack://aio-login/./src/js/pages/notifications.vue","webpack://aio-login/./src/js/layouts/aio-login-app.vue","webpack://aio-login/./src/js/components/aio-login-header.vue","webpack://aio-login/./src/js/components/aio-login-tabs.vue","webpack://aio-login/./src/js/components/aio-login-sub-tabs.vue","webpack://aio-login/./src/js/components/aio-login-cards.vue","webpack://aio-login/./src/js/components/aio-login-card.vue","webpack://aio-login/./src/js/components/aio-login-days-selector.vue","webpack://aio-login/./src/js/demo/components/aio-login-captcha.vue","webpack://aio-login/./src/js/components/aio-login-recaptcha-popup.vue","webpack://aio-login/./src/js/components/aio-login-hcaptcha-card.vue","webpack://aio-login/./src/js/components/aio-login-hcaptcha-popup.vue","webpack://aio-login/./src/js/components/aio-login-turnstile-card.vue","webpack://aio-login/./src/js/components/aio-login-turnstile-popup.vue","webpack://aio-login/./src/js/components/aio-login-woocommerce-popup.vue","webpack://aio-login/./src/js/components/aio-login-woocommerce-card.vue","webpack://aio-login/./src/js/components/aio-login-notification-channel-card.vue","webpack://aio-login/./src/js/components/aio-login-meta.vue","webpack://aio-login/./src/js/components/aio-login-metadata.vue","webpack://aio-login/./src/js/components/aio-login-pro-branding.vue","webpack://aio-login/./src/js/components/aio-login-recent-activity.vue","webpack://aio-login/./src/js/components/aio-login-dashboard-docs.vue","webpack://aio-login/./src/js/components/aio-login-submit-button.vue","webpack://aio-login/./src/js/components/aio-login-media.vue","webpack://aio-login/./src/js/components/fields/aio-login-toggle.vue","webpack://aio-login/./src/js/components/aio-login-snackbar.vue","webpack://aio-login/./src/js/components/aio-login-get-pro.vue","webpack://aio-login/./src/js/components/aio-login-popup.vue","webpack://aio-login/./src/js/components/aio-login-pro-popup.vue","webpack://aio-login/./src/js/components/aio-login-tooltip.vue","webpack://aio-login/./src/js/demo/components/aio-login-ip-address.vue","webpack://aio-login/./src/js/demo/components/aio-login-disable-common-usernames.vue","webpack://aio-login/./src/js/demo/components/aio-login-password-strenght-checker.vue","webpack://aio-login/./src/js/demo/components/aio-login-temporary-access.vue","webpack://aio-login/./src/js/demo/components/aio-login-templates.vue","webpack://aio-login/./src/js/demo/components/aio-login-two-factor-authentication.vue","webpack://aio-login/./src/js/demo/components/aio-login-social-login.vue","webpack://aio-login/./src/css/figtree.css","webpack://aio-login/./src/css/datatables.css","webpack://aio-login/../../../../../../../Local%20Sites/aiol-479/app/public/wp-content/plugins/aio-login/src/css/app.css"],"sourcesContent":["<template>\n\t<div v-if=\"page_loaded\" class=\"aio-login-lla-wrapper\">\n\t\t<div>\n\t\t<aio-login-form\n\t\t\t:action=\"nonce\"\n\t\t\tv-on:handle-submit=\"handleSubmit\"\n\t\t>\n\t\t\t<template v-slot:title>\n\t\t\t\t<span>Limit Login Attempts</span>\n\t\t\t\t<aio-login-tooltip\n\t\t\t\t\t:content=\"tooltipContent.limitLoginAttempts.content\"\n\t\t\t\t\tplacement=\"bottom\"\n\t\t\t\t/>\n\t\t\t</template>\n\n\t\t\t<template v-slot:form-fields>\n\t\t\t\t<tr>\n\t\t\t\t\t<th scope=\"row\">\n\t\t\t\t\t\t<label for=\"enable\">Enable</label>\n\t\t\t\t\t</th>\n\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\tid=\"enable\"\n\t\t\t\t\t\t\tname=\"aio_login__lla_enable\"\n\t\t\t\t\t\t\t:enabled=\"form_data.enabled\"\n\t\t\t\t\t\t\tv-on:toggle-input=\"handleValue\"\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t<p class=\"desc\">\n\t\t\t\t\t\t\t<strong>\n\t\t\t\t\t\t\t\tEnable to restrict repeated login attempts per IP.\n\t\t\t\t\t\t\t</strong>\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\n\t\t\t\t<tr v-if=\"form_data.enabled\">\n\t\t\t\t\t<th scope=\"row\">\n\t\t\t\t\t\t<label for=\"maximum-attempts\">Maximum Attempts</label>\n\t\t\t\t\t</th>\n\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tid=\"maximum-attempts\"\n\t\t\t\t\t        name=\"aio_login_limit_attempts_maximum_attempts\"\n\t\t\t\t\t        v-model=\"form_data.maximum_attempts\"\n\t\t\t\t\t        type=\"number\"\n\t\t\t\t\t\t\tmin=\"1\"\n\t\t\t\t\t\t\tclass=\"regular-text\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\n\t\t\t\t<tr v-if=\"form_data.enabled\">\n\t\t\t\t\t<th scope=\"row\">\n\t\t\t\t\t\t<label for=\"timeout\">Timeout (min)</label>\n\t\t\t\t\t</th>\n\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tid=\"timeout\"\n\t\t\t\t\t\t\tname=\"aio_login_limit_attempts_timeout\"\n\t\t\t\t\t\t\tv-model=\"form_data.timeout\"\n\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\tmin=\"1\"\n\t\t\t\t\t\t\tclass=\"regular-text\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\n\t\t\t\t<tr v-if=\"form_data.enabled\">\n\t\t\t\t\t<th scope=\"row\">\n\t\t\t\t\t\t<label for=\"lockout-message\">Lockout Message</label>\n\t\t\t\t\t</th>\n\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<textarea\n\t\t\t\t\t\t\tid=\"lockout-message\"\n\t\t\t\t\t\t\tname=\"aio_login_limit_attempts_lockout_message\"\n\t\t\t\t\t\t\tv-model=\"form_data.lockout_message\"\n\t\t\t\t\t\t\tclass=\"regular-text\"\n\t\t\t\t\t\t></textarea>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</template>\n\t\t</aio-login-form>\n\n\t\t<aio-login-snackbar\n\t\t\t:message=\"snackbar.message\"\n\t\t\tv-if=\"snackbar.show\"\n\t\t\t:duration=\"snackbar.timeout\"\n\t\t\tv-on:close=\"handleSnackbarClose\"\n\t\t/>\n\t\t</div>\n\n\t\t<div\n\t\t\tv-if=\"!has_pro\"\n\t\t\tclass=\"aio-login-lla-content-overflow\"\n\t\t\trole=\"presentation\"\n\t\t\t@click=\"openParentProPopup\"\n\t\t></div>\n\t</div>\n</template>\n\n<script>\nimport tooltipContent from '../tooltip-content.js';\nimport resolveParentCurrentIsPro from '../resolve-parent-current-is-pro.js';\n\nexport default {\n\tname: 'limit-login-attempts',\n\n\tcomputed: {\n\t\thas_pro() {\n\t\t\treturn resolveParentCurrentIsPro( this );\n\t\t},\n\t},\n\n\tdata: ( vm ) => ( {\n\t\ttooltipContent,\n\t\tpage_loaded: false,\n\n\t\tnonce: '',\n\n\t\tform_data: {\n\t\t\tenabled: false,\n\t\t\tmaximum_attempts: '5',\n\t\t\ttimeout: '5',\n\t\t\tlockout_message: 'You have been locked out due to too many login attempts.',\n\t\t},\n\n\t\tsnackbar: {\n\t\t\tmessage: '',\n\t\t\tshow: false,\n\t\t\ttimeout: 3000,\n\t\t},\n\n\t\tnamespace: 'aio-login/limit-login-attempts',\n\t} ),\n\n\tmethods: {\n\t\topenParentProPopup() {\n\t\t\tlet p = this.$parent;\n\t\t\twhile ( p ) {\n\t\t\t\tif ( typeof p.openProPopup === 'function' ) {\n\t\t\t\t\tp.openProPopup();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tp = p.$parent;\n\t\t\t}\n\t\t},\n\n\t\thandleValue( value ) {\n\t\t\tthis.form_data.enabled = value;\n\t\t},\n\n\t\thandleSubmit( e ) {\n\t\t\tif ( ! this.has_pro ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taxios.post( this.namespace + '/save-settings', {\n\t\t\t\tenabled: this.form_data.enabled,\n\t\t\t\tmaximum_attempts: this.form_data.maximum_attempts,\n\t\t\t\ttimeout: this.form_data.timeout,\n\t\t\t\tlockout_message: this.form_data.lockout_message,\n\t\t\t\t_wpnonce: this.nonce,\n\t\t\t} )\n\t\t\t\t.then( response => {\n\n\t\t\t\t\tthis.snackbar.message = response.data.message;\n\t\t\t\t\tthis.snackbar.show = true;\n\n\t\t\t\t} )\n\t\t\t\t.catch( error => {\n\n\t\t\t\t} );\n\t\t},\n\n\t\thandleSnackbarClose() {\n\t\t\tthis.snackbar.show = false;\n\t\t},\n\n\t\tloadSettings() {\n\t\t\taxios.get( this.namespace + '/get-settings' )\n\t\t\t\t.then( response => {\n\t\t\t\t\tthis.form_data.enabled          = response.data.enabled;\n\t\t\t\t\tthis.form_data.maximum_attempts = response.data.maximum_attempts;\n\t\t\t\t\tthis.form_data.timeout          = response.data.timeout;\n\t\t\t\t\tthis.form_data.lockout_message  = response.data.lockout_message;\n\t\t\t\t\tthis.nonce                      = response.data.nonce;\n\t\t\t\t\tthis.page_loaded                = true;\n\t\t\t\t} )\n\t\t\t\t.catch( error => {\n\t\t\t\t\tthis.page_loaded = true;\n\t\t\t\t} );\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.$nextTick( () => {\n\t\t\tif ( this.has_pro ) {\n\t\t\t\tthis.loadSettings();\n\t\t\t} else {\n\t\t\t\tthis.page_loaded = true;\n\t\t\t}\n\t\t} );\n\t},\n}\n</script>\n\n<style scoped>\n.aio-login-lla-wrapper {\n\tposition: relative;\n}\n\n.aio-login-lla-content-overflow {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n\tmin-height: 220px;\n\tz-index: 10;\n\tcursor: pointer;\n\tbackground: rgba( 255, 255, 255, 0.38 );\n\tbackdrop-filter: blur( 1px );\n}\n</style>","<template>\n\t<div>\n\t\t<div class=\"aio-login-t-wrapper\">\n\t\t\t<div>\n\t\t\t\t<h3>\n\t\t\t\t\t<span>Captcha Settings</span>\n\t\t\t\t\t<aio-login-tooltip\n\t\t\t\t\t\t:content=\"tooltipContent.captcha.content\"\n\t\t\t\t\t\tplacement=\"bottom\"\n\t\t\t\t\t/>\n\t\t\t\t</h3>\n\t\t\t\t<div v-if=\"showSingleCaptchaNotice && anyCaptchaEnabled && !noteDismissed\" class=\"captcha-note\">\n\t\t\t\t\t<span>Note: You can only enable one captcha at a time.</span>\n\t\t\t\t\t<button type=\"button\" class=\"dismiss-btn\" @click=\"dismissNote\" aria-label=\"Dismiss\">×</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"aio-login-pro__social-login\">\n\t\t\t\t<!-- Google reCAPTCHA Card -->\n\t\t\t\t<aio-login-captcha\n\t\t\t\t\t:has-pro=\"has_pro\"\n\t\t\t\t\t:enabled=\"form_data.enabled\"\n\t\t\t\t\t:config-data=\"configData\"\n\t\t\t\t\t@toggle-captcha=\"handleToggleCaptcha\"\n\t\t\t\t\t@save-settings=\"handleSaveSettings\"\n\t\t\t\t/>\n\n\t\t\t\t<!-- hCaptcha Card (Business+; reCAPTCHA card uses has_pro only) -->\n\t\t\t\t<aio-login-hcaptcha-card\n\t\t\t\t\t:has-pro=\"hcaptchaUnlocked\"\n\t\t\t\t\t:enabled=\"hcaptcha_form_data.enabled\"\n\t\t\t\t\t:config-data=\"hcaptchaConfigData\"\n\t\t\t\t\t@toggle-captcha=\"handleToggleHCaptcha\"\n\t\t\t\t\t@save-settings=\"handleSaveHCaptchaSettings\"\n\t\t\t\t/>\n\n\t\t\t\t<!-- Cloudflare Turnstile Card (Business+) -->\n\t\t\t\t<aio-login-turnstile-card\n\t\t\t\t\t:has-pro=\"turnstileUnlocked\"\n\t\t\t\t\t:enabled=\"turnstile_form_data.enabled\"\n\t\t\t\t\t:config-data=\"turnstileConfigData\"\n\t\t\t\t\t@toggle-captcha=\"handleToggleTurnstile\"\n\t\t\t\t\t@save-settings=\"handleSaveTurnstileSettings\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<aio-login-snackbar\n\t\t\t:message=\"snackbar.message\"\n\t\t\t:duration=\"snackbar.duration\"\n\t\t\tv-if=\"snackbar.show\"\n\t\t\tv-on:close=\"handleCloseSnackbar\"\n\t\t/>\n\t</div>\n</template>\n\n<script>\nimport tooltipContent from '../tooltip-content.js';\nimport resolveParentCurrentIsPro from '../resolve-parent-current-is-pro.js';\n\nexport default {\n\tname: 'grecaptcha',\n\n\tdata: () => ( {\n\t\ttooltipContent,\n\t\tnonce: '',\n\t\tnamespace: 'aio-login/grecaptcha',\n\t\tform_data: {\n\t\t\tenabled: false,\n\t\t\tversion: 'v2',\n\t\t\tv2_site_key: '',\n\t\t\tv2_secret_key: '',\n\t\t\ttheme: 'light',\n\t\t\tv3_site_key: '',\n\t\t\tv3_secret_key: '',\n\t\t\tthreshold: '0.5',\n\t\t},\n\t\thcaptcha_namespace: 'aio-login/hcaptcha',\n\t\thcaptcha_nonce: '',\n\t\thcaptcha_form_data: {\n\t\t\tenabled: false,\n\t\t\tsite_key: '',\n\t\t\tsecret_key: '',\n\t\t\ttheme: 'light',\n\t\t\tsize: 'normal',\n\t\t\tlanguage: 'en',\n\t\t},\n\t\tturnstile_namespace: 'aio-login/turnstile',\n\t\tturnstile_nonce: '',\n\t\tturnstile_form_data: {\n\t\t\tenabled: false,\n\t\t\tsite_key: '',\n\t\t\tsecret_key: '',\n\t\t\ttheme: 'auto',\n\t\t\tsize: 'normal',\n\t\t\tlanguage: 'auto',\n\t\t},\n\t\tsnackbar: {\n\t\t\tmessage: '',\n\t\t\tduration: 3000,\n\t\t\tshow: false,\n\t\t},\n\t\tnoteDismissed: false,\n\t\tshowSingleCaptchaNotice: false\n\t} ),\n\n\tcomputed: {\n\t\thas_pro() {\n\t\t\treturn resolveParentCurrentIsPro(this);\n\t\t},\n\t\thcaptchaPlanAllowed() {\n\t\t\tconst o = typeof window !== 'undefined' ? window.aio_login__app_object : null;\n\t\t\treturn o && ( o.captcha_hcaptcha_plan_unlocked === 'true' || o.captcha_hcaptcha_plan_unlocked === true );\n\t\t},\n\t\tturnstilePlanAllowed() {\n\t\t\tconst o = typeof window !== 'undefined' ? window.aio_login__app_object : null;\n\t\t\treturn o && ( o.captcha_turnstile_plan_unlocked === 'true' || o.captcha_turnstile_plan_unlocked === true );\n\t\t},\n\t\thcaptchaUnlocked() {\n\t\t\treturn this.has_pro && this.hcaptchaPlanAllowed;\n\t\t},\n\t\tturnstileUnlocked() {\n\t\t\treturn this.has_pro && this.turnstilePlanAllowed;\n\t\t},\n\t\tconfigData() {\n\t\t\treturn {\n\t\t\t\tversion: this.form_data.version,\n\t\t\t\tsiteKey: this.form_data.version === 'v2' ? this.form_data.v2_site_key : this.form_data.v3_site_key,\n\t\t\t\tsecretKey: this.form_data.version === 'v2' ? this.form_data.v2_secret_key : this.form_data.v3_secret_key,\n\t\t\t\ttheme: this.form_data.theme,\n\t\t\t\tthreshold: this.form_data.threshold\n\t\t\t};\n\t\t},\n\t\thcaptchaConfigData() {\n\t\t\treturn {\n\t\t\t\tsiteKey: this.hcaptcha_form_data.site_key,\n\t\t\t\tsecretKey: this.hcaptcha_form_data.secret_key,\n\t\t\t\ttheme: this.hcaptcha_form_data.theme,\n\t\t\t\tsize: this.hcaptcha_form_data.size,\n\t\t\t\tlanguage: this.hcaptcha_form_data.language\n\t\t\t};\n\t\t},\n\t\tturnstileConfigData() {\n\t\t\treturn {\n\t\t\t\tsiteKey: this.turnstile_form_data.site_key,\n\t\t\t\tsecretKey: this.turnstile_form_data.secret_key,\n\t\t\t\ttheme: this.turnstile_form_data.theme,\n\t\t\t\tsize: this.turnstile_form_data.size,\n\t\t\t\tlanguage: this.turnstile_form_data.language\n\t\t\t};\n\t\t},\n\t\tanyCaptchaEnabled() {\n\t\t\treturn !!(this.form_data.enabled || this.hcaptcha_form_data.enabled || this.turnstile_form_data.enabled);\n\t\t}\n\t},\n\n\tmethods: {\n\t\thasAnotherCaptchaEnabled(currentCaptcha) {\n\t\t\tconst recaptchaEnabled = !!this.form_data.enabled;\n\t\t\tconst hcaptchaEnabled = !!this.hcaptcha_form_data.enabled;\n\t\t\tconst turnstileEnabled = !!this.turnstile_form_data.enabled;\n\n\t\t\tif (currentCaptcha === 'recaptcha') {\n\t\t\t\treturn hcaptchaEnabled || turnstileEnabled;\n\t\t\t}\n\t\t\tif (currentCaptcha === 'hcaptcha') {\n\t\t\t\treturn recaptchaEnabled || turnstileEnabled;\n\t\t\t}\n\t\t\tif (currentCaptcha === 'turnstile') {\n\t\t\t\treturn recaptchaEnabled || hcaptchaEnabled;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t\tmaybeShowSingleCaptchaNotice(currentCaptcha, enabled) {\n\t\t\tif (!enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this.hasAnotherCaptchaEnabled(currentCaptcha)) {\n\t\t\t\tthis.showSingleCaptchaNotice = true;\n\t\t\t\tthis.noteDismissed = false;\n\t\t\t}\n\t\t},\n\n\t\thandleToggleCaptcha(enabled) {\n\t\t\tthis.maybeShowSingleCaptchaNotice('recaptcha', enabled);\n\t\t\tthis.form_data.enabled = enabled;\n\t\t\t\n\t\t\t// If enabling reCAPTCHA, disable hCaptcha\n\t\t\tif (enabled) {\n\t\t\t\tthis.hcaptcha_form_data.enabled = false;\n\t\t\t\tthis.turnstile_form_data.enabled = false;\n\t\t\t\t// Save hCaptcha disabled state\n\t\t\t\tthis.saveHCaptchaSettings();\n\t\t\t\tthis.saveTurnstileSettings();\n\t\t\t}\n\t\t\t\n\t\t\tthis.saveSettings();\n\t\t},\n\n\t\thandleSaveSettings(data) {\n\t\t\t// Update form data with popup data\n\t\t\tthis.form_data.version = data.version;\n\t\t\tthis.form_data.theme = data.theme;\n\t\t\tthis.form_data.threshold = data.threshold;\n\t\t\t\n\t\t\tif (data.version === 'v2') {\n\t\t\t\tthis.form_data.v2_site_key = data.siteKey;\n\t\t\t\tthis.form_data.v2_secret_key = data.secretKey;\n\t\t\t} else {\n\t\t\t\tthis.form_data.v3_site_key = data.siteKey;\n\t\t\t\tthis.form_data.v3_secret_key = data.secretKey;\n\t\t\t}\n\t\t\t\n\t\t\tthis.saveSettings();\n\t\t},\n\n\t\tsaveSettings() {\n\t\t\tthis.form_data._wpnonce = this.nonce;\n\t\t\taxios.post(this.namespace + '/save-settings', this.form_data)\n\t\t\t\t.then(response => {\n\t\t\t\t\tthis.snackbar.message = response.data.message;\n\t\t\t\t\tthis.snackbar.show = true;\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.error('Error saving settings:', error);\n\t\t\t\t});\n\t\t},\n\n\t\thandleCloseSnackbar() {\n\t\t\tthis.snackbar.show = false;\n\t\t},\n\n\t\tdismissNote() {\n\t\t\tthis.noteDismissed = true;\n\t\t},\n\n\t\thandleToggleHCaptcha(enabled) {\n\t\t\tif ( enabled && ! this.hcaptchaUnlocked ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.maybeShowSingleCaptchaNotice('hcaptcha', enabled);\n\t\t\tthis.hcaptcha_form_data.enabled = enabled;\n\t\t\t\n\t\t\t// If enabling hCaptcha, disable reCAPTCHA\n\t\t\tif (enabled) {\n\t\t\t\tthis.form_data.enabled = false;\n\t\t\t\tthis.turnstile_form_data.enabled = false;\n\t\t\t\t// Save reCAPTCHA disabled state\n\t\t\t\tthis.saveSettings();\n\t\t\t\tthis.saveTurnstileSettings();\n\t\t\t}\n\t\t\t\n\t\t\tthis.saveHCaptchaSettings();\n\t\t},\n\n\t\thandleSaveHCaptchaSettings(data) {\n\t\t\tthis.hcaptcha_form_data.theme = data.theme;\n\t\t\tthis.hcaptcha_form_data.size = data.size;\n\t\t\tthis.hcaptcha_form_data.language = data.language;\n\t\t\tthis.hcaptcha_form_data.site_key = data.siteKey;\n\t\t\tthis.hcaptcha_form_data.secret_key = data.secretKey;\n\t\t\tthis.saveHCaptchaSettings();\n\t\t},\n\n\t\tsaveHCaptchaSettings() {\n\t\t\tthis.hcaptcha_form_data._wpnonce = this.hcaptcha_nonce;\n\t\t\taxios.post(this.hcaptcha_namespace + '/save-settings', this.hcaptcha_form_data)\n\t\t\t\t.then(response => {\n\t\t\t\t\tthis.snackbar.message = response.data.message;\n\t\t\t\t\tthis.snackbar.show = true;\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.error('Error saving hCaptcha settings:', error);\n\t\t\t\t});\n\t\t},\n\n\t\thandleToggleTurnstile(enabled) {\n\t\t\tif ( enabled && ! this.turnstileUnlocked ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.maybeShowSingleCaptchaNotice('turnstile', enabled);\n\t\t\tthis.turnstile_form_data.enabled = enabled;\n\n\t\t\t// If enabling Turnstile, disable reCAPTCHA and hCaptcha.\n\t\t\tif (enabled) {\n\t\t\t\tthis.form_data.enabled = false;\n\t\t\t\tthis.hcaptcha_form_data.enabled = false;\n\t\t\t\tthis.saveSettings();\n\t\t\t\tthis.saveHCaptchaSettings();\n\t\t\t}\n\n\t\t\tthis.saveTurnstileSettings();\n\t\t},\n\n\t\thandleSaveTurnstileSettings(data) {\n\t\t\tthis.turnstile_form_data.theme = data.theme;\n\t\t\tthis.turnstile_form_data.size = data.size;\n\t\t\tthis.turnstile_form_data.language = data.language;\n\t\t\tthis.turnstile_form_data.site_key = data.siteKey;\n\t\t\tthis.turnstile_form_data.secret_key = data.secretKey;\n\t\t\tthis.saveTurnstileSettings();\n\t\t},\n\n\t\tsaveTurnstileSettings() {\n\t\t\tthis.turnstile_form_data._wpnonce = this.turnstile_nonce;\n\t\t\taxios.post(this.turnstile_namespace + '/save-settings', this.turnstile_form_data)\n\t\t\t\t.then(response => {\n\t\t\t\t\tthis.snackbar.message = response.data.message;\n\t\t\t\t\tthis.snackbar.show = true;\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.error('Error saving Turnstile settings:', error);\n\t\t\t\t});\n\t\t},\n\n\n\t\tloadHCaptchaSettings() {\n\t\t\taxios.get(this.hcaptcha_namespace + '/get-settings')\n\t\t\t\t.then(response => {\n\t\t\t\t\tthis.hcaptcha_form_data.enabled = response.data.enabled;\n\t\t\t\t\tthis.hcaptcha_form_data.site_key = response.data.site_key || '';\n\t\t\t\t\tthis.hcaptcha_form_data.secret_key = response.data.secret_key || '';\n\t\t\t\t\tthis.hcaptcha_form_data.theme = response.data.theme || 'light';\n\t\t\t\t\tthis.hcaptcha_form_data.size = response.data.size || 'normal';\n\t\t\t\t\tthis.hcaptcha_form_data.language = response.data.language || 'en';\n\t\t\t\t\tthis.hcaptcha_nonce = response.data.nonce;\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.error('Error loading hCaptcha settings:', error);\n\t\t\t\t});\n\t\t},\n\n\t\tloadTurnstileSettings() {\n\t\t\taxios.get(this.turnstile_namespace + '/get-settings')\n\t\t\t\t.then(response => {\n\t\t\t\t\tthis.turnstile_form_data.enabled = response.data.enabled;\n\t\t\t\t\tthis.turnstile_form_data.site_key = response.data.site_key || '';\n\t\t\t\t\tthis.turnstile_form_data.secret_key = response.data.secret_key || '';\n\t\t\t\t\tthis.turnstile_form_data.theme = response.data.theme || 'auto';\n\t\t\t\t\tthis.turnstile_form_data.size = response.data.size || 'normal';\n\t\t\t\t\tthis.turnstile_form_data.language = response.data.language || 'auto';\n\t\t\t\t\tthis.turnstile_nonce = response.data.nonce;\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.error('Error loading Turnstile settings:', error);\n\t\t\t\t});\n\t\t}\n\t},\n\n\tmounted() {\n\t\t// Load Google reCAPTCHA settings\n\t\taxios.get(this.namespace + '/get-settings')\n\t\t\t.then(response => {\n\t\t\t\tthis.form_data.enabled = response.data.enabled;\n\t\t\t\tthis.form_data.version = response.data.version;\n\t\t\t\tthis.form_data.v2_site_key = response.data.v2_site_key;\n\t\t\t\tthis.form_data.v2_secret_key = response.data.v2_secret_key;\n\t\t\t\tthis.form_data.theme = response.data.theme;\n\t\t\t\tthis.form_data.v3_site_key = response.data.v3_site_key;\n\t\t\t\tthis.form_data.v3_secret_key = response.data.v3_secret_key;\n\t\t\t\tthis.form_data.threshold = response.data.threshold;\n\t\t\t\tthis.nonce = response.data.nonce;\n\t\t\t})\n\t\t\t.catch(error => {\n\t\t\t\tconsole.error('Error loading settings:', error);\n\t\t\t});\n\n\t\t// Load hCaptcha settings\n\t\tthis.loadHCaptchaSettings();\n\t\t// Load Turnstile settings\n\t\tthis.loadTurnstileSettings();\n\t}\n}\n</script>\n\n<style scoped>\n/* Social Login Container */\n.aio-login-pro__social-login {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 20px;\n}\n\n.captcha-note {\n  margin: 10px 0 20px 0;\n  padding: 12px 16px;\n  background-color: #FFF3CD;\n  border-left: 4px solid #FFC107;\n  color: #856404;\n  font-size: 14px;\n  border-radius: 4px;\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  position: relative;\n}\n\n.captcha-note span {\n  flex: 1;\n}\n\n.dismiss-btn {\n  background: none;\n  border: none;\n  color: #856404;\n  font-size: 24px;\n  line-height: 1;\n  cursor: pointer;\n  padding: 0;\n  margin-left: 12px;\n  width: 24px;\n  height: 24px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  border-radius: 50%;\n  transition: background-color 0.2s ease;\n}\n\n.dismiss-btn:hover {\n  background-color: rgba(133, 100, 4, 0.1);\n}\n</style>","<template>\n\t<div class=\"aio-login-pro-feature aio-login-2fa-subtabs\">\n\t\t<div\n\t\t\tclass=\"aio-login-2fa-subtabs__inner\"\n\t\t\t:class=\"{\n\t\t\t\t'aio-login-pro-overlay': innerLocked,\n\t\t\t\t'aio-login-2fa-subtabs__inner--locked': innerLocked\n\t\t\t}\"\n\t\t\t@click=\"innerLocked ? handleProFeatureClick() : null\"\n\t\t>\n\t\t\t<aio-login-two-factor-authentication\n\t\t\t\tv-if=\"currentRouteSlug === 'authentication-methods'\"\n\t\t\t\t:key=\"currentRouteSlug\"\n\t\t\t\t:has-pro=\"has_pro\"\n\t\t\t/>\n\n\t\t\t<template v-else-if=\"currentRouteSlug === '2fa-policies'\">\n\t\t\t\t<aio-login-two-factor-policies\n\t\t\t\t\t:key=\"currentRouteSlug\"\n\t\t\t\t\t:has-pro=\"has_pro\"\n\t\t\t\t/>\n\t\t\t</template>\n\n\t\t\t<template v-else-if=\"currentRouteSlug === 'advanced-settings'\">\n\t\t\t\t<aio-login-two-factor-advanced-settings\n\t\t\t\t\t:key=\"currentRouteSlug\"\n\t\t\t\t\t:has-pro=\"has_pro\"\n\t\t\t\t/>\n\t\t\t</template>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: '2fa',\n\n\tdata: () => ( {\n\t\tis_limited_user: window.aio_login__app_object.is_limited_user === 'true',\n\t} ),\n\n\tcomputed: {\n\t\thas_pro() {\n\t\t\tlet p = this.$parent;\n\t\t\twhile ( p ) {\n\t\t\t\tif ( 'current_is_pro' in p ) {\n\t\t\t\t\treturn p.current_is_pro === true || p.current_is_pro === 'true';\n\t\t\t\t}\n\t\t\t\tp = p.$parent;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\n\t\tcurrentRouteSlug() {\n\t\t\tconst path = this.$route && this.$route.path ? this.$route.path : '';\n\t\t\treturn path.replace( '/', '' ) || 'authentication-methods';\n\t\t},\n\n\t\t/** Blur + block interactions on Authentication Methods when license is free (same pattern as other PRO screens). */\n\t\tshowProOverlay() {\n\t\t\treturn ! this.has_pro;\n\t\t},\n\n\t\t/** Policies / Advanced (and any plan-locked 2FA sub-tab): show UI under blur, click opens upgrade popup. */\n\t\tshowSubtabPlanOverlay() {\n\t\t\tif ( this.is_limited_user ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn this.isTwoFaSubTabRouteLocked( this.currentRouteSlug );\n\t\t},\n\n\t\tinnerLocked() {\n\t\t\treturn this.showProOverlay || this.showSubtabPlanOverlay;\n\t\t},\n\t},\n\n\tmounted() {\n\t\tif ( this.is_limited_user && this.currentRouteSlug !== 'authentication-methods' ) {\n\t\t\tthis.$router.replace( '/authentication-methods' );\n\t\t}\n\t},\n\n\tmethods: {\n\t\tisTwoFaSubTabRouteLocked( slug ) {\n\t\t\tconst raw = typeof window !== 'undefined' && window.aio_login__object && window.aio_login__object.tabs;\n\t\t\tif ( ! raw ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst twoFa = raw['2fa'];\n\t\t\tif ( ! twoFa || ! twoFa['sub-tabs'] ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst subs = twoFa['sub-tabs'];\n\t\t\tconst list = Array.isArray( subs ) ? subs : Object.values( subs );\n\t\t\tconst found = list.find( ( st ) => st.slug === slug );\n\t\t\treturn !!( found && found['is-pro'] );\n\t\t},\n\n\t\thandleProFeatureClick() {\n\t\t\tlet p = this.$parent;\n\t\t\twhile ( p ) {\n\t\t\t\tif ( 'popup' in p && typeof p.popup === 'boolean' ) {\n\t\t\t\t\tp.popup = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tp = p.$parent;\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n.aio-login-2fa-subtabs {\n\tposition: relative;\n\tmin-height: 380px;\n}\n\n.aio-login-2fa-subtabs__inner {\n\tposition: relative;\n\tmin-height: inherit;\n}\n\n.aio-login-2fa-subtabs__inner--locked::after {\n\tcontent: '';\n\tposition: absolute;\n\tinset: 0;\n\tbackground: rgba(255, 255, 255, 0.35);\n\tbackdrop-filter: blur(1px);\n\tz-index: 20;\n\tcursor: pointer;\n}\n\n.aio-login-2fa-subtabs__inner--locked * {\n\tuser-select: none;\n}\n</style>\n","<template>\n\t<div>\n\t\t<div class=\"aio-login-t-wrapper\">\n\t\t\t<!-- WooCommerce Required Notice -->\n\t\t\t<div v-if=\"!woocommerceActive && !showSettings\" class=\"woocommerce-admin-notice notice notice-warning is-dismissible\">\n\t\t\t\t<p>\n\t\t\t\t\t<strong>WooCommerce Integration:</strong>\n\t\t\t\t\tTo use WooCommerce Integration you have to install & activate WooCommerce.\n\t\t\t\t\t<button \n\t\t\t\t\t\t@click=\"handleInstallActivateWooCommerce\" \n\t\t\t\t\t\tclass=\"button button-primary\" \n\t\t\t\t\t\tstyle=\"margin-left: 10px;\"\n\t\t\t\t\t\t:disabled=\"installingWooCommerce\"\n\t\t\t\t\t\tv-if=\"!installingWooCommerce\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ installingWooCommerce ? 'Processing...' : (woocommerceInstalled ? 'Activate WooCommerce' : 'Install & Activate WooCommerce') }}\n\t\t\t\t\t</button>\n\t\t\t\t\t<span v-else style=\"margin-left: 10px; color: #666;\">{{ woocommerceInstalled ? 'Activating WooCommerce...' : 'Installing & Activating WooCommerce...' }}</span>\n\t\t\t\t</p>\n\t\t\t</div>\n\n\t\t\t<!-- Show Card View -->\n\t\t\t<div v-if=\"!showSettings\">\n\t\t\t\t<div>\n\t\t\t\t\t<h3>\n\t\t\t\t\t\t<span>Integrations</span>\n\t\t\t\t\t</h3>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"aio-login-pro__social-login\">\n\t\t\t\t\t<!-- WooCommerce Card -->\n\t\t\t\t\t<aio-login-woocommerce-card\n\t\t\t\t\t\t:has-pro=\"has_pro\"\n\t\t\t\t\t\t:enabled=\"woocommerceEnabled\"\n\t\t\t\t\t\t:config-data=\"woocommerceConfigData\"\n\t\t\t\t\t\t@toggle-integration=\"handleToggleWooCommerce\"\n\t\t\t\t\t\t@configure-integration=\"showWooCommerceSettings\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<!-- Show Settings View -->\n\t\t\t<div v-else class=\"woocommerce-settings-view\">\n\t\t\t\t<div class=\"settings-header\">\n\t\t\t\t\t<div class=\"settings-title\">\n\t\t\t\t\t\t<img :src=\"getWooCommerceIcon()\" alt=\"WooCommerce\" class=\"woocommerce-icon\" />\n\t\t\t\t\t\t<h2>WooCommerce Integration Settings</h2>\n\t\t\t\t\t</div>\n\t\t\t\t\t<a href=\"#\" class=\"back-link\" @click.prevent=\"goBack\">← Back</a>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"woocommerce-settings\">\n\t\t\t\t\t<!-- WooCommerce Integration Section -->\n\t\t\t\t\t<div class=\"settings-section\">\n\t\t\t\t\t\t<div class=\"section-header\">\n\t\t\t\t\t\t\t<div class=\"section-title-row\">\n\t\t\t\t\t\t\t\t<h3>\n\t\t\t\t\t\t\t\t\t<span>WooCommerce Integration</span>\n\t\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t\t\t<label class=\"toggle-switch\" :class=\"{ 'disabled': !woocommerceActive }\">\n\t\t\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\t\t\tid=\"woocommerce-integration\"\n\t\t\t\t\t\t\t\t\t\tname=\"woocommerce-integration\"\n\t\t\t\t\t\t\t\t\t\tv-on:toggle-input=\"handleWooCommerceToggle\"\n\t\t\t\t\t\t\t\t\t\t:enabled=\"settingsData.woocommerceEnabled && woocommerceActive\"\n\t\t\t\t\t\t\t\t\t\t:disabled=\"!woocommerceActive\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<p class=\"section-description\">Enable WooCommerce integration to secure user interactions with Social Login and CAPTCHA.</p>\n\t\t\t\t\t\t\t<div v-if=\"!woocommerceActive\" class=\"woocommerce-notice notice notice-warning inline\">\n\t\t\t\t\t\t\t\t<p><strong>WooCommerce is required for this integration.</strong> Please install and activate the WooCommerce plugin to use this feature.</p>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<!-- Captcha Section -->\n\t\t\t\t\t<div class=\"settings-section\">\n\t\t\t\t\t\t<div class=\"section-header\">\n\t\t\t\t\t\t\t<div class=\"section-title-row\">\n\t\t\t\t\t\t\t\t<h3>\n\t\t\t\t\t\t\t\t\t<span>Captcha</span>\n\t\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t\t\t<label class=\"toggle-switch\">\n\t\t\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\t\t\tid=\"captcha-settings\"\n\t\t\t\t\t\t\t\t\t\tname=\"captcha-settings\"\n\t\t\t\t\t\t\t\t\t\tv-on:toggle-input=\"handleCaptchaToggle\"\n\t\t\t\t\t\t\t\t\t\t:enabled=\"settingsData.captchaEnabled\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<p class=\"section-description\">\n\t\t\t\t\t\t\t\tTo protect forms from bots and spam by adding Captcha, \n\t\t\t\t\t\t\t\t<a href=\"#\" class=\"link-text\" @click.prevent=\"goToCaptcha\">click here</a>.\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\n\t\t\t\t\t<div v-if=\"settingsData.captchaEnabled\" class=\"captcha-providers\">\n\t\t\t\t\t\t<div v-if=\"providersLoading.captcha || !providersLoaded.captcha\" class=\"providers-skeleton\">\n\t\t\t\t\t\t\t<div class=\"providers-skeleton__row\">\n\t\t\t\t\t\t\t\t<div class=\"providers-skeleton__cell providers-skeleton__cell--provider\"></div>\n\t\t\t\t\t\t\t\t<div class=\"providers-skeleton__cell providers-skeleton__cell--toggle\"></div>\n\t\t\t\t\t\t\t\t<div class=\"providers-skeleton__cell providers-skeleton__cell--toggle\"></div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"providers-skeleton__row\">\n\t\t\t\t\t\t\t\t<div class=\"providers-skeleton__cell providers-skeleton__cell--provider\"></div>\n\t\t\t\t\t\t\t\t<div class=\"providers-skeleton__cell providers-skeleton__cell--toggle\"></div>\n\t\t\t\t\t\t\t\t<div class=\"providers-skeleton__cell providers-skeleton__cell--toggle\"></div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div v-if=\"providersLoaded.captcha && !providersLoading.captcha && configuredProviders.captcha.length === 0\" class=\"no-providers-message\">\n\t\t\t\t\t\t\t<p>No Captcha providers are configured. Please configure a Captcha provider first by going to the <a href=\"#\" class=\"link-text\" @click.prevent=\"goToCaptcha\">Captcha settings</a>.</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<table v-else-if=\"providersLoaded.captcha && !providersLoading.captcha\" class=\"settings-table\">\n\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<th>Provider</th>\n\t\t\t\t\t\t\t\t\t<th>Login</th>\n\t\t\t\t\t\t\t\t\t<th>Registration</th>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t<!-- reCAPTCHA -->\n\t\t\t\t\t\t\t\t<tr v-if=\"isCaptchaProviderConfigured('recaptcha')\">\n\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t<div class=\"provider-cell\">\n\t\t\t\t\t\t\t\t\t\t\t<img \n\t\t\t\t\t\t\t\t\t\t\t\t:src=\"getProviderIcon('grecaptcha')\" \n\t\t\t\t\t\t\t\t\t\t\t\talt=\"reCAPTCHA\" \n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"provider-icon\" \n\t\t\t\t\t\t\t\t\t\t\t\t@error=\"handleIconError($event, 'grecaptcha')\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"provider-name\">Recaptcha</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t<label class=\"toggle-switch\">\n\t\t\t\t\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\t\t\t\t\tid=\"recaptcha-login\"\n\t\t\t\t\t\t\t\t\t\t\t\tname=\"recaptcha-login\"\n\t\t\t\t\t\t\t\t\t\t\t\tv-on:toggle-input=\"(val) => updateProviderOption('recaptcha', 'login', val)\"\n\t\t\t\t\t\t\t\t\t\t\t\t:enabled=\"settingsData.providers.recaptcha.login\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t<label class=\"toggle-switch\">\n\t\t\t\t\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\t\t\t\t\tid=\"recaptcha-registration\"\n\t\t\t\t\t\t\t\t\t\t\t\tname=\"recaptcha-registration\"\n\t\t\t\t\t\t\t\t\t\t\t\tv-on:toggle-input=\"(val) => updateProviderOption('recaptcha', 'registration', val)\"\n\t\t\t\t\t\t\t\t\t\t\t\t:enabled=\"settingsData.providers.recaptcha.registration\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t<!-- hCaptcha -->\n\t\t\t\t\t\t\t\t<tr v-if=\"isCaptchaProviderConfigured('hcaptcha')\">\n\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t<div class=\"provider-cell\">\n\t\t\t\t\t\t\t\t\t\t\t<img \n\t\t\t\t\t\t\t\t\t\t\t\t:src=\"getProviderIcon('hcaptcha')\" \n\t\t\t\t\t\t\t\t\t\t\t\talt=\"hCaptcha\" \n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"provider-icon\" \n\t\t\t\t\t\t\t\t\t\t\t\t@error=\"handleIconError($event, 'hcaptcha')\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"provider-name\">Hcaptcha</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t<label class=\"toggle-switch\">\n\t\t\t\t\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\t\t\t\t\tid=\"hcaptcha-login\"\n\t\t\t\t\t\t\t\t\t\t\t\tname=\"hcaptcha-login\"\n\t\t\t\t\t\t\t\t\t\t\t\tv-on:toggle-input=\"(val) => updateProviderOption('hcaptcha', 'login', val)\"\n\t\t\t\t\t\t\t\t\t\t\t\t:enabled=\"settingsData.providers.hcaptcha.login\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t<label class=\"toggle-switch\">\n\t\t\t\t\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\t\t\t\t\tid=\"hcaptcha-registration\"\n\t\t\t\t\t\t\t\t\t\t\t\tname=\"hcaptcha-registration\"\n\t\t\t\t\t\t\t\t\t\t\t\tv-on:toggle-input=\"(val) => updateProviderOption('hcaptcha', 'registration', val)\"\n\t\t\t\t\t\t\t\t\t\t\t\t:enabled=\"settingsData.providers.hcaptcha.registration\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t<tr v-if=\"isCaptchaProviderConfigured('turnstile')\">\n\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t<div class=\"provider-cell\">\n\t\t\t\t\t\t\t\t\t\t\t<img \n\t\t\t\t\t\t\t\t\t\t\t\t:src=\"getProviderIcon('turnstile')\" \n\t\t\t\t\t\t\t\t\t\t\t\talt=\"Cloudflare Turnstile\" \n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"provider-icon\" \n\t\t\t\t\t\t\t\t\t\t\t\t@error=\"handleIconError($event, 'turnstile')\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"provider-name\">Turnstile</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t<label class=\"toggle-switch\">\n\t\t\t\t\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\t\t\t\t\tid=\"turnstile-login\"\n\t\t\t\t\t\t\t\t\t\t\t\tname=\"turnstile-login\"\n\t\t\t\t\t\t\t\t\t\t\t\tv-on:toggle-input=\"(val) => updateProviderOption('turnstile', 'login', val)\"\n\t\t\t\t\t\t\t\t\t\t\t\t:enabled=\"settingsData.providers.turnstile.login\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t<label class=\"toggle-switch\">\n\t\t\t\t\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\t\t\t\t\tid=\"turnstile-registration\"\n\t\t\t\t\t\t\t\t\t\t\t\tname=\"turnstile-registration\"\n\t\t\t\t\t\t\t\t\t\t\t\tv-on:toggle-input=\"(val) => updateProviderOption('turnstile', 'registration', val)\"\n\t\t\t\t\t\t\t\t\t\t\t\t:enabled=\"settingsData.providers.turnstile.registration\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<!-- Social Login Section -->\n\t\t\t\t\t<div class=\"settings-section\">\n\t\t\t\t\t\t<div class=\"section-header\">\n\t\t\t\t\t\t\t<div class=\"section-title-row\">\n\t\t\t\t\t\t\t\t<h3>\n\t\t\t\t\t\t\t\t\t<span>Social Login</span>\n\t\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t\t\t<label class=\"toggle-switch\">\n\t\t\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\t\t\tid=\"social-login-options\"\n\t\t\t\t\t\t\t\t\t\tname=\"social-login-options\"\n\t\t\t\t\t\t\t\t\t\tv-on:toggle-input=\"handleSocialLoginToggle\"\n\t\t\t\t\t\t\t\t\t\t:enabled=\"settingsData.socialLoginEnabled\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<p class=\"section-description\">\n\t\t\t\t\t\t\t\tTo allow users to log in with their social accounts, \n\t\t\t\t\t\t\t\t<a href=\"#\" class=\"link-text\" @click.prevent=\"goToSocialLogin\">click here</a>.\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\n\t\t\t\t\t<div v-if=\"settingsData.socialLoginEnabled\" class=\"social-providers\">\n\t\t\t\t\t\t<div v-if=\"providersLoading.social || !providersLoaded.social\" class=\"providers-skeleton\">\n\t\t\t\t\t\t\t<div class=\"providers-skeleton__row\">\n\t\t\t\t\t\t\t\t<div class=\"providers-skeleton__cell providers-skeleton__cell--provider\"></div>\n\t\t\t\t\t\t\t\t<div class=\"providers-skeleton__cell providers-skeleton__cell--toggle\"></div>\n\t\t\t\t\t\t\t\t<div class=\"providers-skeleton__cell providers-skeleton__cell--toggle\"></div>\n\t\t\t\t\t\t\t\t<div class=\"providers-skeleton__cell providers-skeleton__cell--toggle\"></div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"providers-skeleton__row\">\n\t\t\t\t\t\t\t\t<div class=\"providers-skeleton__cell providers-skeleton__cell--provider\"></div>\n\t\t\t\t\t\t\t\t<div class=\"providers-skeleton__cell providers-skeleton__cell--toggle\"></div>\n\t\t\t\t\t\t\t\t<div class=\"providers-skeleton__cell providers-skeleton__cell--toggle\"></div>\n\t\t\t\t\t\t\t\t<div class=\"providers-skeleton__cell providers-skeleton__cell--toggle\"></div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div v-if=\"providersLoaded.social && !providersLoading.social && configuredProviders.social.length === 0\" class=\"no-providers-message\">\n\t\t\t\t\t\t\t<p>No Social Login providers are configured. Please configure a Social Login provider first by going to the <a href=\"#\" class=\"link-text\" @click.prevent=\"goToSocialLogin\">Social Login settings</a>.</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<table v-else-if=\"providersLoaded.social && !providersLoading.social\" class=\"settings-table\">\n\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<th>Provider</th>\n\t\t\t\t\t\t\t\t\t<th>Login</th>\n\t\t\t\t\t\t\t\t\t<th>Registration</th>\n\t\t\t\t\t\t\t\t\t<th>Checkout</th>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t<!-- Dynamic loop for all social providers -->\n\t\t\t\t\t\t\t\t<template v-for=\"provider in availableSocialProviders\" :key=\"provider.key\">\n\t\t\t\t\t\t\t\t\t<tr v-if=\"isSocialProviderConfigured(provider.key)\">\n\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t<div class=\"provider-cell\">\n\t\t\t\t\t\t\t\t\t\t\t<img \n\t\t\t\t\t\t\t\t\t\t\t\t:src=\"getProviderIcon(provider.key)\" \n\t\t\t\t\t\t\t\t\t\t\t\t:alt=\"provider.name\" \n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"provider-icon\" \n\t\t\t\t\t\t\t\t\t\t\t\t@error=\"handleIconError($event, provider.key)\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"provider-name\">{{ provider.name }}</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t<label class=\"toggle-switch\">\n\t\t\t\t\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\t\t\t\t\t:id=\"`${provider.key}-login`\"\n\t\t\t\t\t\t\t\t\t\t\t\t:name=\"`${provider.key}-login`\"\n\t\t\t\t\t\t\t\t\t\t\t\tv-on:toggle-input=\"(val) => updateSocialProviderOption(provider.key, 'login', val)\"\n\t\t\t\t\t\t\t\t\t\t\t\t:enabled=\"settingsData.socialProviders[provider.key] && settingsData.socialProviders[provider.key].login\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t<label class=\"toggle-switch\">\n\t\t\t\t\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\t\t\t\t\t:id=\"`${provider.key}-registration`\"\n\t\t\t\t\t\t\t\t\t\t\t\t:name=\"`${provider.key}-registration`\"\n\t\t\t\t\t\t\t\t\t\t\t\tv-on:toggle-input=\"(val) => updateSocialProviderOption(provider.key, 'registration', val)\"\n\t\t\t\t\t\t\t\t\t\t\t\t:enabled=\"settingsData.socialProviders[provider.key] && settingsData.socialProviders[provider.key].registration\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t<label class=\"toggle-switch\">\n\t\t\t\t\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\t\t\t\t\t:id=\"`${provider.key}-checkout`\"\n\t\t\t\t\t\t\t\t\t\t\t\t:name=\"`${provider.key}-checkout`\"\n\t\t\t\t\t\t\t\t\t\t\t\tv-on:toggle-input=\"(val) => updateSocialProviderOption(provider.key, 'checkout', val)\"\n\t\t\t\t\t\t\t\t\t\t\t\t:enabled=\"settingsData.socialProviders[provider.key] && settingsData.socialProviders[provider.key].checkout\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<p class=\"submit\">\n\t\t\t\t\t<button type=\"button\" class=\"button aio-login__primary\" @click=\"saveSettings\">Save Changes</button>\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<aio-login-snackbar\n\t\t\t:message=\"snackbar.message\"\n\t\t\tv-if=\"snackbar.show\"\n\t\t\t:duration=\"snackbar.duration\"\n\t\t\tv-on:close=\"handleSnackbarClose\"\n\t\t/>\n\t</div>\n</template>\n\n<script>\nimport tooltipContent from '../tooltip-content.js';\nimport resolveParentCurrentIsPro from '../resolve-parent-current-is-pro.js';\n\nexport default {\n\tname: 'integrations',\n\n\tdata: ( vm ) => ( {\n\t\ttooltipContent,\n\t\twoocommerceEnabled: false,\n\t\twoocommerceConfigData: {},\n\t\twoocommerceActive: true, // Default to true, will be updated from API\n\t\twoocommerceInstalled: false, // Check if WooCommerce is installed but not activated\n\t\tinstallingWooCommerce: false,\n\t\tshowSettings: false,\n\t\tassetsUrl: aio_login__app_object.assets_url,\n\t\tsnackbar: {\n\t\t\tmessage: '',\n\t\t\tshow: false,\n\t\t\tduration: 3000,\n\t\t},\n\t\tconfiguredProviders: {\n\t\t\tcaptcha: [],\n\t\t\tsocial: []\n\t\t},\n\t\tprovidersLoading: {\n\t\t\tcaptcha: false,\n\t\t\tsocial: false,\n\t\t},\n\t\tprovidersLoaded: {\n\t\t\tcaptcha: false,\n\t\t\tsocial: false,\n\t\t},\n\t\tsettingsData: {\n\t\t\twoocommerceEnabled: false,\n\t\t\tcaptchaEnabled: false,\n\t\t\tsocialLoginEnabled: false,\n\t\t\tproviders: {\n\t\t\t\trecaptcha: {\n\t\t\t\t\tlogin: false,\n\t\t\t\t\tregistration: false\n\t\t\t\t},\n\t\t\t\thcaptcha: {\n\t\t\t\t\tlogin: false,\n\t\t\t\t\tregistration: false\n\t\t\t\t},\n\t\t\t\tturnstile: {\n\t\t\t\t\tlogin: false,\n\t\t\t\t\tregistration: false\n\t\t\t\t}\n\t\t\t},\n\t\t\tsocialProviders: {\n\t\t\t\tmicrosoft: {\n\t\t\t\t\tlogin: false,\n\t\t\t\t\tregistration: false,\n\t\t\t\t\tcheckout: false\n\t\t\t\t},\n\t\t\t\tgoogle: {\n\t\t\t\t\tlogin: false,\n\t\t\t\t\tregistration: false,\n\t\t\t\t\tcheckout: false\n\t\t\t\t},\n\t\t\t\tfacebook: {\n\t\t\t\t\tlogin: false,\n\t\t\t\t\tregistration: false,\n\t\t\t\t\tcheckout: false\n\t\t\t\t},\n\t\t\t\tline: {\n\t\t\t\t\tlogin: false,\n\t\t\t\t\tregistration: false,\n\t\t\t\t\tcheckout: false\n\t\t\t\t},\n\t\t\t\tgithub: {\n\t\t\t\t\tlogin: false,\n\t\t\t\t\tregistration: false,\n\t\t\t\t\tcheckout: false\n\t\t\t\t},\n\t\t\t\tdiscord: {\n\t\t\t\t\tlogin: false,\n\t\t\t\t\tregistration: false,\n\t\t\t\t\tcheckout: false\n\t\t\t\t},\n\t\t\t\tapple: {\n\t\t\t\t\tlogin: false,\n\t\t\t\t\tregistration: false,\n\t\t\t\t\tcheckout: false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} ),\n\n\tcomputed: {\n\t\thas_pro() {\n\t\t\treturn resolveParentCurrentIsPro(this);\n\t\t},\n\n\t\tavailableSocialProviders() {\n\t\t\t// Return all available social providers with their display names\n\t\t\treturn [\n\t\t\t\t{ key: 'google', name: 'Google' },\n\t\t\t\t{ key: 'microsoft', name: 'Microsoft' },\n\t\t\t\t{ key: 'facebook', name: 'Facebook' },\n\t\t\t\t{ key: 'line', name: 'LINE' },\n\t\t\t\t{ key: 'github', name: 'GitHub' },\n\t\t\t\t{ key: 'discord', name: 'Discord' },\n\t\t\t\t{ key: 'apple', name: 'Apple' }\n\t\t\t];\n\t\t}\n\t},\n\n\tasync mounted() {\n\t\t// Check URL hash immediately (don't wait for data)\n\t\tthis.checkUrlHash();\n\t\t\n\t\t// Listen for hash changes\n\t\twindow.addEventListener('hashchange', this.checkUrlHash);\n\t\t\n\t\t// Load cached settings from localStorage first (instant)\n\t\tthis.loadCachedSettings();\n\t\t\n\t\t// Load WooCommerce settings (fast, cached) - don't wait for providers\n\t\tthis.loadWooCommerceSettings().then(() => {\n\t\t\t// If WooCommerce is configured, sync settings data\n\t\t\tif (this.woocommerceConfigData && Object.keys(this.woocommerceConfigData).length > 0) {\n\t\t\t\tthis.settingsData = { ...this.settingsData, ...this.woocommerceConfigData };\n\t\t\t\t// Cache the settings\n\t\t\t\tlocalStorage.setItem('aio_login_woocommerce_settings', JSON.stringify(this.woocommerceConfigData));\n\t\t\t}\n\t\t\t// Load providers lazily if needed - force refresh to get latest enabled status\n\t\t\tif (this.settingsData.captchaEnabled || this.settingsData.socialLoginEnabled) {\n\t\t\t\tthis.loadConfiguredProviders(true).catch(error => {\n\t\t\t\t\tconsole.error('Error loading providers:', error);\n\t\t\t\t});\n\t\t\t}\n\t\t}).catch(error => {\n\t\t\tconsole.error('Error loading initial settings:', error);\n\t\t});\n\t},\n\t\n\tbeforeDestroy() {\n\t\t// Clean up event listener\n\t\twindow.removeEventListener('hashchange', this.checkUrlHash);\n\t},\n\n\tmethods: {\n\t\tresetProvidersLoadingState() {\n\t\t\t// Always mark as not loaded first; sections that become enabled\n\t\t\t// must wait for fresh provider response before showing empty/table states.\n\t\t\tthis.providersLoaded.captcha = false;\n\t\t\tthis.providersLoaded.social = false;\n\t\t\tthis.providersLoading.captcha = !!this.settingsData.captchaEnabled;\n\t\t\tthis.providersLoading.social = !!this.settingsData.socialLoginEnabled;\n\t\t},\n\t\tloadCachedSettings() {\n\t\t\t// Load cached settings from localStorage for instant display\n\t\t\ttry {\n\t\t\t\tconst cached = localStorage.getItem('aio_login_woocommerce_settings');\n\t\t\t\tif (cached) {\n\t\t\t\t\tconst settings = JSON.parse(cached);\n\t\t\t\t\tthis.woocommerceConfigData = settings;\n\t\t\t\t\tthis.woocommerceEnabled = settings.woocommerceEnabled || false;\n\t\t\t\t\tthis.settingsData.woocommerceEnabled = this.woocommerceEnabled;\n\t\t\t\t\tthis.settingsData.captchaEnabled = settings.captchaEnabled || false;\n\t\t\t\t\tthis.settingsData.socialLoginEnabled = settings.socialLoginEnabled || false;\n\t\t\t\t\tif (settings.providers) {\n\t\t\t\t\t\tthis.settingsData.providers = { ...this.settingsData.providers, ...settings.providers };\n\t\t\t\t\t}\n\t\t\t\t\tif (settings.socialProviders) {\n\t\t\t\t\t\tthis.settingsData.socialProviders = { ...this.settingsData.socialProviders, ...settings.socialProviders };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// Also load configured providers from cache\n\t\t\t\tconst cachedProviders = localStorage.getItem('aio_login_configured_providers');\n\t\t\t\tif (cachedProviders) {\n\t\t\t\t\tconst data = JSON.parse(cachedProviders);\n\t\t\t\t\t// Check if cache is less than 5 minutes old (or just use it regardless for better UX)\n\t\t\t\t\tif (data.providers) {\n\t\t\t\t\t\tthis.configuredProviders = data.providers;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error loading cached settings:', error);\n\t\t\t}\n\t\t},\n\t\tasync loadConfiguredProviders(forceRefresh = false) {\n\t\t\t// If we already have configuredProviders data from loadWooCommerceSettings, use it\n\t\t\tif (!forceRefresh && this.woocommerceConfigData && this.woocommerceConfigData.configuredProviders) {\n\t\t\t\tthis.configuredProviders = JSON.parse(JSON.stringify(this.woocommerceConfigData.configuredProviders));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If we need to refresh, call loadWooCommerceSettings which fetches all needed info in one request\n\t\t\ttry {\n\t\t\t\tthis.providersLoading.captcha = !!this.settingsData.captchaEnabled;\n\t\t\t\tthis.providersLoading.social = !!this.settingsData.socialLoginEnabled;\n\t\t\t\tthis.providersLoaded.captcha = !this.settingsData.captchaEnabled;\n\t\t\t\tthis.providersLoaded.social = !this.settingsData.socialLoginEnabled;\n\t\t\t\tawait this.loadWooCommerceSettings();\n\t\t\t\tif (this.woocommerceConfigData && this.woocommerceConfigData.configuredProviders) {\n\t\t\t\t\tthis.configuredProviders = JSON.parse(JSON.stringify(this.woocommerceConfigData.configuredProviders));\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error refreshing configured providers:', error);\n\t\t\t} finally {\n\t\t\t\tthis.providersLoading.captcha = false;\n\t\t\t\tthis.providersLoading.social = false;\n\t\t\t\tthis.providersLoaded.captcha = true;\n\t\t\t\tthis.providersLoaded.social = true;\n\t\t\t}\n\t\t},\n\t\tisCaptchaProviderConfigured(provider) {\n\t\t\treturn this.configuredProviders.captcha.includes(provider);\n\t\t},\n\t\tisSocialProviderConfigured(provider) {\n\t\t\treturn this.configuredProviders.social.includes(provider);\n\t\t},\n\t\tcheckUrlHash() {\n\t\t\t// Check if URL hash is #/woocommerce-integrations\n\t\t\tconst hash = window.location.hash;\n\t\t\tif (hash === '#/woocommerce-integrations') {\n\t\t\t\tthis.showSettings = true;\n\t\t\t\tthis.resetProvidersLoadingState();\n\t\t\t} else {\n\t\t\t\tthis.showSettings = false;\n\t\t\t\t// If hash is #/integrations or empty, remove it to keep URL clean\n\t\t\t\tif (hash === '#/integrations' || hash === '') {\n\t\t\t\t\tconst baseUrl = window.location.href.split('#')[0];\n\t\t\t\t\tif (history.pushState) {\n\t\t\t\t\t\thistory.replaceState(null, null, baseUrl);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tupdateUrlHash(hash) {\n\t\t\t// Update URL hash without triggering page reload\n\t\t\tif (history.pushState) {\n\t\t\t\t// If hash starts with #, use it directly, otherwise add it\n\t\t\t\tconst newHash = hash.startsWith('#') ? hash : '#' + hash;\n\t\t\t\tconst newUrl = window.location.href.split('#')[0] + newHash;\n\t\t\t\thistory.pushState(null, null, newUrl);\n\t\t\t\t// Trigger hashchange event manually\n\t\t\t\twindow.dispatchEvent(new HashChangeEvent('hashchange'));\n\t\t\t} else {\n\t\t\t\twindow.location.hash = hash;\n\t\t\t}\n\t\t},\n\t\tasync loadWooCommerceSettings() {\n\t\t\t// Load WooCommerce settings from backend\n\t\t\ttry {\n\t\t\t\tconst response = await axios.get('aio-login-pro/woocommerce/get-settings', {\n\t\t\t\t\ttimeout: 15000 // 15 second timeout to accommodate slower servers\n\t\t\t\t});\n\t\t\t\tif (response.data && response.data.success && response.data.data) {\n\t\t\t\t\tconst settings = response.data.data;\n\t\t\t\t\tthis.woocommerceConfigData = settings;\n\t\t\t\t\tthis.woocommerceActive = settings.woocommerceActive !== undefined ? settings.woocommerceActive : true;\n\t\t\t\t\tthis.woocommerceInstalled = settings.woocommerceInstalled !== undefined ? settings.woocommerceInstalled : false;\n\t\t\t\t\t// If WooCommerce is not active, disable the integration\n\t\t\t\t\tif (!this.woocommerceActive) {\n\t\t\t\t\t\tthis.woocommerceEnabled = false;\n\t\t\t\t\t\tthis.settingsData.woocommerceEnabled = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.woocommerceEnabled = settings.woocommerceEnabled || false;\n\t\t\t\t\t\tthis.settingsData.woocommerceEnabled = this.woocommerceEnabled;\n\t\t\t\t\t}\n\t\t\t\t\tthis.settingsData.captchaEnabled = settings.captchaEnabled || false;\n\t\t\t\t\tthis.settingsData.socialLoginEnabled = settings.socialLoginEnabled || false;\n\t\t\t\t\tthis.settingsData.providers = { ...this.settingsData.providers, ...settings.providers };\n\t\t\t\t\tthis.settingsData.socialProviders = { ...this.settingsData.socialProviders, ...settings.socialProviders };\n\t\t\t\t\t\n\t\t\t\t// Handle configured providers if returned\n\t\t\t\t// Note: We don't set configuredProviders from backend here because\n\t\t\t\t// loadConfiguredProviders() will fetch fresh data and verify enabled status\n\t\t\t\t// This prevents showing disabled providers due to stale backend snapshot\n\n\t\t\t\t\t// Cache the settings for next time\n\t\t\t\t\tlocalStorage.setItem('aio_login_woocommerce_settings', JSON.stringify(settings));\n\t\t\t\t\t\n\t\t\t\t\treturn settings;\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error loading WooCommerce settings:', error);\n\t\t\t\t// Don't reset if we have cached data\n\t\t\t\tif (!this.woocommerceConfigData || Object.keys(this.woocommerceConfigData).length === 0) {\n\t\t\t\t\tthis.woocommerceConfigData = {};\n\t\t\t\t\tthis.woocommerceEnabled = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tasync handleToggleWooCommerce(enabled) {\n\t\t\t// Prevent enabling if WooCommerce is not active\n\t\t\tif (enabled && !this.woocommerceActive) {\n\t\t\t\tthis.snackbar.message = 'WooCommerce is required for this integration. Please install and activate the WooCommerce plugin.';\n\t\t\t\tthis.snackbar.show = true;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tthis.woocommerceEnabled = enabled;\n\t\t\t// Update local state immediately\n\t\t\tthis.settingsData.woocommerceEnabled = enabled;\n\t\t\t\n\t\t\t// Cache immediately for instant feedback\n\t\t\tif (this.woocommerceConfigData) {\n\t\t\t\tthis.woocommerceConfigData.woocommerceEnabled = enabled;\n\t\t\t\tlocalStorage.setItem('aio_login_woocommerce_settings', JSON.stringify(this.woocommerceConfigData));\n\t\t\t}\n\t\t\t\n\t\t\t// Save to backend in background (non-blocking)\n\t\t\tconst currentSettings = { ...this.settingsData };\n\t\t\tcurrentSettings.woocommerceEnabled = enabled;\n\t\t\taxios.post('aio-login-pro/woocommerce/save-settings', currentSettings)\n\t\t\t\t.then((response) => {\n\t\t\t\t\tconst status = enabled ? 'enabled' : 'disabled';\n\t\t\t\t\tthis.snackbar.message = response.data.message || `WooCommerce integration ${status} successfully`;\n\t\t\t\t\tthis.snackbar.show = true;\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.error('Error saving WooCommerce toggle:', error);\n\t\t\t\t\tthis.snackbar.message = 'Error updating WooCommerce integration. Please try again.';\n\t\t\t\t\tthis.snackbar.show = true;\n\t\t\t\t});\n\t\t},\n\t\tasync showWooCommerceSettings() {\n\t\t\t// Sync the WooCommerce enabled state from card to settings BEFORE loading from backend\n\t\t\tconst currentEnabledState = this.woocommerceEnabled;\n\t\t\t\n\t\t\t// Load cached settings first for instant display\n\t\t\tthis.loadCachedSettings();\n\t\t\t\n\t\t\t// Show settings UI immediately for better UX (don't wait for anything)\n\t\t\tthis.showSettings = true;\n\t\t\tthis.resetProvidersLoadingState();\n\t\t\t// Update URL hash\n\t\t\tthis.updateUrlHash('#/woocommerce-integrations');\n\t\t\t\n\t\t\t// Override with the current enabled state from card immediately\n\t\t\tif (currentEnabledState !== this.settingsData.woocommerceEnabled) {\n\t\t\t\tthis.settingsData.woocommerceEnabled = currentEnabledState;\n\t\t\t\tthis.woocommerceEnabled = currentEnabledState;\n\t\t\t}\n\t\t\t\n\t\t\t// Load providers from cache first (instant display)\n\t\t\tconst cacheKey = 'aio_login_configured_providers';\n\t\t\ttry {\n\t\t\t\tconst cached = localStorage.getItem(cacheKey);\n\t\t\t\tif (cached) {\n\t\t\t\t\tconst cachedData = JSON.parse(cached);\n\t\t\t\t\tif (cachedData.providers) {\n\t\t\t\t\t\tthis.configuredProviders = cachedData.providers;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\t// Ignore cache errors\n\t\t\t}\n\t\t\t\n\t\t\t// Load fresh WooCommerce settings and providers in parallel (non-blocking)\n\t\t\t// Don't wait for these - UI is already shown with cached data\n\t\t\t// Load fresh WooCommerce settings\n\t\t\tthis.loadWooCommerceSettings().then((response) => {\n\t\t\t\t// Update configured providers from backend if available (without separate API calls)\n\t\t\t\tif (response && response.configuredProviders) {\n\t\t\t\t\tthis.configuredProviders = response.configuredProviders;\n\t\t\t\t\t\n\t\t\t\t\t// Cache this for next time to make it instant\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlocalStorage.setItem('aio_login_configured_providers', JSON.stringify({\n\t\t\t\t\t\t\tproviders: this.configuredProviders,\n\t\t\t\t\t\t\ttimestamp: Date.now()\n\t\t\t\t\t\t}));\n\t\t\t\t\t} catch (e) {}\n\t\t\t\t}\n\n\t\t\t\t// Update enabled state if needed\n\t\t\t\tif (currentEnabledState !== this.settingsData.woocommerceEnabled) {\n\t\t\t\t\tthis.settingsData.woocommerceEnabled = currentEnabledState;\n\t\t\t\t\tthis.woocommerceEnabled = currentEnabledState;\n\t\t\t\t}\n\t\t\t}).catch(() => {}).finally(() => {\n\t\t\t\tthis.providersLoading.captcha = false;\n\t\t\t\tthis.providersLoading.social = false;\n\t\t\t\tthis.providersLoaded.captcha = true;\n\t\t\t\tthis.providersLoaded.social = true;\n\t\t\t});\n\t\t},\n\t\t\n\t\tloadConfiguredProvidersLazy() {\n\t\t\t// Load providers in background without blocking\n\t\t\t// Only load if captcha or social login is enabled\n\t\t\tif (this.settingsData.captchaEnabled || this.settingsData.socialLoginEnabled) {\n\t\t\t\tthis.loadConfiguredProviders().catch(error => {\n\t\t\t\t\tconsole.error('Error loading providers:', error);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tgoBack() {\n\t\t\t// Keep card toggle in sync with settings view without requiring page reload.\n\t\t\tthis.woocommerceEnabled = !!this.settingsData.woocommerceEnabled;\n\t\t\tthis.woocommerceConfigData = {\n\t\t\t\t...this.woocommerceConfigData,\n\t\t\t\t...this.settingsData,\n\t\t\t\twoocommerceEnabled: this.woocommerceEnabled,\n\t\t\t};\n\t\t\tlocalStorage.setItem('aio_login_woocommerce_settings', JSON.stringify(this.woocommerceConfigData));\n\n\t\t\tthis.showSettings = false;\n\t\t\t// Update URL hash to remove the settings hash\n\t\t\tconst baseUrl = window.location.href.split('#')[0];\n\t\t\tif (history.pushState) {\n\t\t\t\thistory.pushState(null, null, baseUrl);\n\t\t\t\twindow.dispatchEvent(new HashChangeEvent('hashchange'));\n\t\t\t} else {\n\t\t\t\twindow.location.hash = '';\n\t\t\t}\n\t\t},\n\t\tgetWooCommerceIcon() {\n\t\t\treturn this.assetsUrl + 'images/icons/woo.svg';\n\t\t},\n\t\tgetProviderIcon(provider) {\n\t\t\tconst iconMap = {\n\t\t\t\t'grecaptcha': 'grecaptcha',\n\t\t\t\t'hcaptcha': 'hcaptcha',\n\t\t\t\t'turnstile': 'turnstile',\n\t\t\t\t'microsoft': 'microsoft',\n\t\t\t\t'google': 'google',\n\t\t\t\t'facebook': 'facebook',\n\t\t\t\t'line': 'line',\n\t\t\t\t'github': 'github',\n\t\t\t\t'discord': 'discord',\n\t\t\t\t'apple': 'apple'\n\t\t\t};\n\t\t\tconst iconName = iconMap[provider] || provider;\n\t\t\t// For social providers, try SVG first, then PNG as fallback\n\t\t\tif (['microsoft', 'google', 'facebook', 'line', 'github', 'discord', 'apple'].includes(iconName)) {\n\t\t\t\treturn this.assetsUrl + `images/icons/${iconName}.svg`;\n\t\t\t}\n\t\t\tif (['hcaptcha', 'turnstile'].includes(iconName)) {\n\t\t\t\treturn this.assetsUrl + `images/icons/${iconName}.svg`;\n\t\t\t}\n\t\t\t// For captcha providers, use PNG\n\t\t\treturn this.assetsUrl + `images/icons/${iconName}.png`;\n\t\t},\n\t\thandleIconError(event, provider) {\n\t\t\t// If SVG fails to load, try PNG instead\n\t\t\tconst iconMap = {\n\t\t\t\t'grecaptcha': 'grecaptcha',\n\t\t\t\t'hcaptcha': 'hcaptcha',\n\t\t\t\t'turnstile': 'turnstile',\n\t\t\t\t'microsoft': 'microsoft',\n\t\t\t\t'google': 'google',\n\t\t\t\t'facebook': 'facebook',\n\t\t\t\t'line': 'line',\n\t\t\t\t'github': 'github',\n\t\t\t\t'discord': 'discord',\n\t\t\t\t'apple': 'apple'\n\t\t\t};\n\t\t\tconst iconName = iconMap[provider] || provider;\n\t\t\tconst currentSrc = event.target.src;\n\t\t\t// Only fallback if current src is SVG\n\t\t\tif (currentSrc.endsWith('.svg')) {\n\t\t\t\tevent.target.src = this.assetsUrl + `images/icons/${iconName}.png`;\n\t\t\t}\n\t\t},\n\t\thandleWooCommerceToggle(enabled) {\n\t\t\tthis.settingsData.woocommerceEnabled = enabled;\n\t\t},\n\t\thandleCaptchaToggle(enabled) {\n\t\t\tthis.settingsData.captchaEnabled = enabled;\n\t\t},\n\t\thandleSocialLoginToggle(enabled) {\n\t\t\tthis.settingsData.socialLoginEnabled = enabled;\n\t\t},\n\t\tupdateProviderOption(provider, option, value) {\n\t\t\tif (this.settingsData.providers[provider]) {\n\t\t\t\tthis.settingsData.providers[provider][option] = value;\n\t\t\t\t\n\t\t\t\t// If enabling a captcha provider, disable the other one\n\t\t\t\tif (value === true && (option === 'login' || option === 'registration')) {\n\t\t\t\t\t// Check if this provider is configured\n\t\t\t\t\tconst isConfigured = this.configuredProviders.captcha.includes(provider);\n\t\t\t\t\t\n\t\t\t\t\tif (isConfigured) {\n\t\t\t\t\t\t// Disable the other captcha provider\n\t\t\t\t\t\tif (provider === 'hcaptcha') {\n\t\t\t\t\t\t\t// Disable reCAPTCHA and Turnstile.\n\t\t\t\t\t\t\tif (this.settingsData.providers.recaptcha) {\n\t\t\t\t\t\t\t\tthis.settingsData.providers.recaptcha[option] = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (this.settingsData.providers.grecaptcha) {\n\t\t\t\t\t\t\t\tthis.settingsData.providers.grecaptcha[option] = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (this.settingsData.providers.turnstile) {\n\t\t\t\t\t\t\t\tthis.settingsData.providers.turnstile[option] = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (provider === 'turnstile') {\n\t\t\t\t\t\t\t// Disable reCAPTCHA and hCaptcha.\n\t\t\t\t\t\t\tif (this.settingsData.providers.recaptcha) {\n\t\t\t\t\t\t\t\tthis.settingsData.providers.recaptcha[option] = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (this.settingsData.providers.grecaptcha) {\n\t\t\t\t\t\t\t\tthis.settingsData.providers.grecaptcha[option] = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (this.settingsData.providers.hcaptcha) {\n\t\t\t\t\t\t\t\tthis.settingsData.providers.hcaptcha[option] = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (provider === 'recaptcha' || provider === 'grecaptcha') {\n\t\t\t\t\t\t\t// Disable hCaptcha and Turnstile.\n\t\t\t\t\t\t\tif (this.settingsData.providers.hcaptcha) {\n\t\t\t\t\t\t\t\tthis.settingsData.providers.hcaptcha[option] = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (this.settingsData.providers.turnstile) {\n\t\t\t\t\t\t\t\tthis.settingsData.providers.turnstile[option] = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Also disable the other reCAPTCHA variant\n\t\t\t\t\t\t\tif (provider === 'recaptcha' && this.settingsData.providers.grecaptcha) {\n\t\t\t\t\t\t\t\tthis.settingsData.providers.grecaptcha[option] = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (provider === 'grecaptcha' && this.settingsData.providers.recaptcha) {\n\t\t\t\t\t\t\t\tthis.settingsData.providers.recaptcha[option] = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tupdateSocialProviderOption(provider, option, value) {\n\t\t\tif (this.settingsData.socialProviders[provider]) {\n\t\t\t\tthis.settingsData.socialProviders[provider][option] = value;\n\t\t\t}\n\t\t},\n\t\tgoToCaptcha() {\n\t\t\tconst url = new URL(window.location.href);\n\t\t\turl.searchParams.set('tab', 'security');\n\t\t\turl.hash = '#/captcha';\n\t\t\twindow.location.href = url.toString();\n\t\t},\n\t\tgoToSocialLogin() {\n\t\t\tconst url = new URL(window.location.href);\n\t\t\turl.searchParams.set('tab', 'social-login');\n\t\t\twindow.location.href = url.toString();\n\t\t},\n\t\t\t\tasync saveSettings() {\n\t\t\t\t\t// Update config data\n\t\t\t\t\tthis.woocommerceConfigData = { ...this.woocommerceConfigData, ...this.settingsData };\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// Save to backend via REST API\n\t\t\t\t\t\tconst response = await axios.post('aio-login-pro/woocommerce/save-settings', this.settingsData);\n\n\t\t\t\t\t\tif (response.data && response.data.success) {\n\t\t\t\t\t\t\t// Reflect saved state on the card immediately.\n\t\t\t\t\t\t\tthis.woocommerceEnabled = !!this.settingsData.woocommerceEnabled;\n\n\t\t\t\t\t\t\t// Show success message\n\t\t\t\t\t\t\tthis.snackbar.message = response.data.message || 'Settings saved successfully';\n\t\t\t\t\t\t\tthis.snackbar.show = true;\n\n\t\t\t\t\t\t\t// Also save to localStorage as backup\n\t\t\t\t\t\t\tlocalStorage.setItem('aio_login_woocommerce_settings', JSON.stringify(this.woocommerceConfigData));\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// Clear providers cache to force refresh on next load\n\t\t\t\t\t\t\tlocalStorage.removeItem('aio_login_configured_providers');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthrow new Error('Failed to save settings');\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error('Error saving WooCommerce settings:', error);\n\t\t\t\t\t\t// Fallback to localStorage\n\t\t\t\t\t\tthis.woocommerceEnabled = !!this.settingsData.woocommerceEnabled;\n\t\t\t\t\t\tlocalStorage.setItem('aio_login_woocommerce_settings', JSON.stringify(this.woocommerceConfigData));\n\n\t\t\t\t\t\t// Show success message even if API fails (using localStorage)\n\t\t\t\t\t\tthis.snackbar.message = 'Settings saved successfully (local storage)';\n\t\t\t\t\t\tthis.snackbar.show = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Don't close settings view - stay on the same page\n\t\t\t\t},\n\t\thandleSnackbarClose() {\n\t\t\tthis.snackbar.show = false;\n\t\t\tthis.snackbar.message = '';\n\t\t},\n\t\tasync handleInstallActivateWooCommerce() {\n\t\t\tif (this.installingWooCommerce) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.installingWooCommerce = true;\n\n\t\t\ttry {\n\t\t\t\t// Install/activate WooCommerce via AJAX\n\t\t\t\t// Get full absolute URL to bypass axios baseURL (REST API)\n\t\t\t\tlet ajaxUrl = typeof ajaxurl !== 'undefined' ? ajaxurl : (aio_login__app_object.ajax_url || window.location.origin + '/wp-admin/admin-ajax.php');\n\t\t\t\t\n\t\t\t\t// Ensure absolute URL (if relative, make it absolute)\n\t\t\t\tif (ajaxUrl && !ajaxUrl.startsWith('http')) {\n\t\t\t\t\tajaxUrl = new URL(ajaxUrl, window.location.origin).href;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tconst formData = new FormData();\n\t\t\t\tformData.append('action', 'aio_login_install_activate_woocommerce');\n\t\t\t\t// Use REST API nonce for AJAX call\n\t\t\t\tformData.append('nonce', aio_login__app_object.nonce);\n\n\t\t\t\t// Create a new axios instance without baseURL to avoid REST API routing\n\t\t\t\tconst axiosAjax = axios.create({\n\t\t\t\t\tbaseURL: '',\n\t\t\t\t\ttimeout: 60000, // 60 seconds for plugin installation\n\t\t\t\t});\n\n\t\t\t\tconst response = await axiosAjax.post(ajaxUrl, formData, {\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'Content-Type': 'multipart/form-data',\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tif (response.data && response.data.success) {\n\t\t\t\t\tthis.snackbar.message = response.data.data.message || 'WooCommerce installed and activated successfully!';\n\t\t\t\t\tthis.snackbar.show = true;\n\t\t\t\t\t\n\t\t\t\t\t// Reload WooCommerce settings to update status\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tthis.loadWooCommerceSettings().then(() => {\n\t\t\t\t\t\t\t// Reload page to reflect changes\n\t\t\t\t\t\t\twindow.location.reload();\n\t\t\t\t\t\t});\n\t\t\t\t\t}, 1000);\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(response.data.data?.message || 'Failed to install/activate WooCommerce');\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error installing/activating WooCommerce:', error);\n\t\t\t\tthis.snackbar.message = error.response?.data?.data?.message || error.message || 'Failed to install/activate WooCommerce. Please try again.';\n\t\t\t\tthis.snackbar.show = true;\n\t\t\t\tthis.installingWooCommerce = false;\n\t\t\t}\n\t\t}\n\t}\n}\n</script>\n\n<style scoped>\n.aio-login-pro__social-login {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: 20px;\n}\n\n.woocommerce-settings-view {\n\tpadding: 20px;\n}\n\n.settings-header {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n\tmargin-bottom: 30px;\n\tpadding-bottom: 20px;\n\tborder-bottom: 1px solid #EBE8EB;\n}\n\n.settings-title {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 15px;\n}\n\n.woocommerce-icon {\n\twidth: 48px;\n\theight: 48px;\n}\n\n.settings-title h2 {\n\tmargin: 0;\n\tfont-size: 24px;\n\tfont-weight: 600;\n\tcolor: #404280;\n}\n\n.back-link {\n\tcolor: #6E16DF;\n\ttext-decoration: none;\n\tfont-weight: 500;\n}\n\n.back-link:hover {\n\ttext-decoration: underline;\n}\n\n.woocommerce-settings {\n\tmargin-bottom: 30px;\n}\n\n.settings-section {\n\tmargin-bottom: 40px;\n}\n\n.section-header {\n\tmargin-bottom: 20px;\n}\n\n.section-title-row {\n\tdisplay: flex;\n\talign-items: center;\n\tmargin-bottom: 10px;\n}\n\n.section-header h3 {\n\tmargin: 0;\n\tfont-size: 20px;\n\tfont-weight: 600;\n\tcolor: #404280;\n\twhite-space: nowrap;\n\tflex-shrink: 0;\n\tmin-width: 250px;\n}\n\n.section-title-row .toggle-switch {\n\tmargin-left: 15px;\n\tflex-shrink: 0;\n}\n\n.section-description {\n\tmargin: 0;\n\tcolor: #606C80;\n\tfont-size: 14px;\n}\n\n.link-text {\n\tcolor: #6E16DF;\n\ttext-decoration: none;\n\tcursor: pointer;\n}\n\n.no-providers-message {\n\tpadding: 20px;\n\tbackground: #F7ECFD;\n\tborder: 1px solid #EBE8EB;\n\tborder-radius: 8px;\n\tmargin-top: 15px;\n}\n\n.no-providers-message p {\n\tmargin: 0;\n\tcolor: #606C80;\n\tfont-size: 14px;\n\tline-height: 1.6;\n}\n\n.link-text:hover {\n\ttext-decoration: underline;\n}\n\n\n.captcha-providers,\n.social-providers {\n\tmargin-top: 20px;\n}\n\n.providers-skeleton {\n\tdisplay: grid;\n\tgap: 12px;\n\twidth: 700px;\n\tmax-width: 100%;\n}\n\n.providers-skeleton__row {\n\tdisplay: grid;\n\tgrid-template-columns: minmax(260px, 1fr) 120px 120px;\n\tgap: 16px;\n\tpadding: 14px 16px;\n\tbackground: #fff;\n\tborder: 1px solid #ebe8eb;\n\tborder-radius: 8px;\n}\n\n.social-providers .providers-skeleton__row {\n\tgrid-template-columns: minmax(260px, 1fr) 90px 90px 90px;\n}\n\n.providers-skeleton__cell {\n\theight: 20px;\n\tborder-radius: 999px;\n\tbackground: linear-gradient(90deg, #f0edf4 25%, #e7e2ec 50%, #f0edf4 75%);\n\tbackground-size: 200% 100%;\n\tanimation: providers-skeleton-shimmer 1.2s infinite;\n}\n\n.providers-skeleton__cell--provider {\n\twidth: 70%;\n}\n\n.providers-skeleton__cell--toggle {\n\twidth: 56px;\n\tjustify-self: center;\n}\n\n@keyframes providers-skeleton-shimmer {\n\t0% { background-position: 200% 0; }\n\t100% { background-position: -200% 0; }\n}\n\n.settings-table {\n\twidth: 700px;\n\tborder-collapse: collapse;\n\tbackground: white;\n\tborder-radius: 8px;\n\toverflow: hidden;\n\tbox-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n}\n\n.settings-table thead {\n\tbackground: #F9F9F9;\n}\n\n.settings-table th {\n\tpadding: 15px 20px;\n\ttext-align: center;\n\tfont-size: 14px;\n\tfont-weight: 600;\n\tcolor: #404280;\n\tborder-bottom: 1px solid #EBE8EB;\n}\n\n.settings-table th:first-child {\n\ttext-align: left;\n}\n\n.settings-table td {\n\tpadding: 15px 20px;\n\tborder-bottom: 1px solid #EBE8EB;\n\tvertical-align: middle;\n}\n\n.settings-table td:first-child {\n\ttext-align: left;\n}\n\n.settings-table td:not(:first-child) {\n\ttext-align: center;\n}\n\n.settings-table td .toggle-switch {\n\tdisplay: inline-flex;\n\tjustify-content: center;\n\talign-items: center;\n}\n\n.settings-table tbody tr:last-child td {\n\tborder-bottom: none;\n}\n\n.settings-table tbody tr:hover {\n\tbackground: #F9F9F9;\n}\n\n.provider-cell {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 12px;\n}\n\n.provider-icon {\n\twidth: 32px;\n\theight: 32px;\n}\n\n.provider-name {\n\tfont-size: 14px;\n\tfont-weight: 600;\n\tcolor: #404280;\n}\n\n.submit {\n\tmargin-top: 20px;\n\tpadding-top: 20px;\n\tborder-top: 1px solid #EBE8EB;\n}\n\n.submit .button {\n\tpadding: 6px 12px;\n\tfont-size: 13px;\n\tline-height: 1.5;\n\theight: auto;\n\tmargin: 0;\n\tcursor: pointer;\n\tborder-width: 1px;\n\tborder-style: solid;\n\tborder-radius: 3px;\n\twhite-space: nowrap;\n\tbox-sizing: border-box;\n}\n\n.submit .button.aio-login__primary {\n\tborder-color: #9516df;\n\tbackground-color: #9416de;\n\tcolor: #fff;\n}\n\n.submit .button.aio-login__primary:hover {\n\tbackground-color: #9416de;\n\tcolor: #fff;\n}\n\n.woocommerce-notice {\n\tmargin-top: 15px;\n\tpadding: 12px;\n\tbackground: #fff3cd;\n\tborder-left: 4px solid #ffc107;\n}\n\n.woocommerce-notice p {\n\tmargin: 0;\n\tcolor: #856404;\n}\n\n.toggle-switch.disabled {\n\topacity: 0.6;\n\tcursor: not-allowed;\n\tpointer-events: none;\n}\n\n.woocommerce-admin-notice {\n\tmargin: 20px 0;\n\tpadding: 12px;\n\tbackground: #fff3cd;\n\tborder-left: 4px solid #ffc107;\n}\n\n.woocommerce-admin-notice p {\n\tmargin: 0;\n\tdisplay: flex;\n\talign-items: center;\n\tflex-wrap: wrap;\n\tgap: 10px;\n}\n\n.woocommerce-admin-notice .button {\n\tmargin-left: 0 !important;\n}\n</style>\n\n","<template>\n\t<div>\n\t\t<!-- Logging Settings Section -->\n\t\t<div class=\"aio-login-settings-section\" style=\"margin-bottom: 30px;\">\n\t\t\t<h3 style=\"margin-bottom: 20px; color: #333; font-size: 18px; font-weight: 600;\">\n\t\t\t\t<span>Logging Settings</span>\n\t\t\t\t<aio-login-tooltip\n\t\t\t\t\t:content=\"tooltipContent.loggingSettings.content\"\n\t\t\t\t\t:title=\"tooltipContent.loggingSettings.title\"\n\t\t\t\t\tplacement=\"bottom\"\n\t\t\t\t/>\n\t\t\t</h3>\n\t\t\t\n\t\t\t<div :class=\"{ 'aio-login-pro-feature': !has_pro }\">\n\t\t\t\t<div :class=\"{ 'aio-login-pro-overlay': !has_pro }\" @click=\"!has_pro ? handleProFeatureClick() : null\">\n\t\t\t\t\t<table class=\"form-table\" style=\"width: 100%; border-collapse: collapse;\">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th style=\"width: 200px; text-align: left; padding: 12px 0; vertical-align: top;\">\n\t\t\t\t\t\t\t\t<label for=\"log_enumeration_attempts\">Log Enumeration Attempts</label>\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t<td style=\"padding: 12px 0;\">\n\t\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\t\tid=\"log_enumeration_attempts\"\n\t\t\t\t\t\t\t\t\tname=\"log_enumeration_attempts\"\n\t\t\t\t\t\t\t\t\t:enabled=\"form_data.log_enumeration_attempts\"\n\t\t\t\t\t\t\t\t\tv-on:toggle-input=\"handleLogEnumerationAttempts\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<p class=\"description\" style=\"margin: 8px 0 0 0; color: #666; font-size: 14px; font-weight: 600\">Enable to monitor username discovery attempts securely.</p>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t</tr>\n\n\t\t\t\t\t\t<tr v-if=\"form_data.log_enumeration_attempts\">\n\t\t\t\t\t\t\t<th style=\"width: 200px; text-align: left; padding: 12px 0; vertical-align: top;\">\n\t\t\t\t\t\t\t\t<label for=\"log_enumeration_duration\">Log Attempts Duration (Days)</label>\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t<td style=\"padding: 12px 0;\">\n\t\t\t\t\t\t\t\t<aio-login-text\n\t\t\t\t\t\t\t\t\tid=\"log_enumeration_duration\"\n\t\t\t\t\t\t\t\t\tname=\"log_enumeration_duration\"\n\t\t\t\t\t\t\t\t\tv-model=\"form_data.log_enumeration_duration\"\n\t\t\t\t\t\t\t\t\tv-on:input=\"handleLogEnumerationDuration\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<p class=\"description\" style=\"margin: 8px 0 0 0; color: #666; font-size: 13px;\">Number of days to keep enumeration attempt logs.</p>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\n\t\t\t\t\t<div style=\"margin-top: 20px;\">\n\t\t\t\t\t\t<aio-login-submit-button @button-click=\"saveLoggingSettings\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<!-- Logs Display Section -->\n\t\t<div class=\"aio-login-logs-section\">\n\t\t\t<h3 style=\"margin-bottom: 20px; color: #333; font-size: 18px; font-weight: 600;\">\n\t\t\t\t<span>Enumeration Attempts Logs</span>\n\t\t\t\t<aio-login-tooltip\n\t\t\t\t\t:content=\"tooltipContent.userEnumerationLogs.content\"\n\t\t\t\t\t:title=\"tooltipContent.userEnumerationLogs.title\"\n\t\t\t\t\tplacement=\"bottom\"\n\t\t\t\t/>\n\t\t\t</h3>\n\t\t\t\n\t\t\t<div :class=\"{ 'aio-login-pro-feature': !has_pro }\">\n\t\t\t\t<div :class=\"{ 'aio-login-pro-overlay': !has_pro }\" @click=\"!has_pro ? handleProFeatureClick() : null\">\n\t\t\t\t\t<aio-login-datatable\n\t\t\t\t\t\t:headers=\"headers\"\n\t\t\t\t\t\t:rows=\"data\"\n\t\t\t\t\t></aio-login-datatable>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<!-- Delete Confirmation Popup -->\n\t\t<aio-login-popup \n\t\t\tv-if=\"showDeletePopup\" \n\t\t\twidth=\"500px\" \n\t\t\theight=\"auto\" \n\t\t\tcontent=\"content\"\n\t\t\t@close-popup=\"closeDeletePopup\"\n\t\t>\n\t\t\t<template #popup-title>\n\t\t\t\t<h3>Confirm Delete</h3>\n\t\t\t</template>\n\t\t\t<template #popup-content>\n\t\t\t\t<div>\n\t\t\t\t\t<p style=\"margin: 0 0 8px 0; font-size: 16px; color: #333;\">Are you sure you want to delete this log entry?</p>\n\t\t\t\t\t<p style=\"margin: 0 0 20px 0; font-size: 14px; color: #dc3545; font-weight: 500;\"><strong>This action cannot be undone.</strong></p>\n\t\t\t\t\t\n\t\t\t\t\t<div v-if=\"deleteLogDetails\" style=\"margin-top: 20px; padding: 20px; background: #f8f9fa; border-radius: 8px; border: 1px solid #e9ecef;\">\n\t\t\t\t\t<h4 style=\"margin: 0 0 15px 0; color: #333; font-size: 16px; font-weight: 600;\">Entry Details:</h4>\n\t\t\t\t\t<div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 12px; font-size: 14px; line-height: 1.5;\">\n\t\t\t\t\t\t<div style=\"padding: 8px 0; border-bottom: 1px solid #e9ecef;\">\n\t\t\t\t\t\t\t<strong style=\"color: #495057;\">ID:</strong><br>\n\t\t\t\t\t\t\t<span style=\"color: #333;\">{{ deleteLogDetails.id }}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div style=\"padding: 8px 0; border-bottom: 1px solid #e9ecef;\">\n\t\t\t\t\t\t\t<strong style=\"color: #495057;\">Username:</strong><br>\n\t\t\t\t\t\t\t<span style=\"color: #333;\">{{ deleteLogDetails.username || '-' }}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div style=\"padding: 8px 0; border-bottom: 1px solid #e9ecef;\">\n\t\t\t\t\t\t\t<strong style=\"color: #495057;\">IP Address:</strong><br>\n\t\t\t\t\t\t\t<span style=\"color: #333;\">{{ deleteLogDetails.ip_address }}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div style=\"padding: 8px 0; border-bottom: 1px solid #e9ecef;\">\n\t\t\t\t\t\t\t<strong style=\"color: #495057;\">Status:</strong><br>\n\t\t\t\t\t\t\t<span style=\"color: #333;\">{{ deleteLogDetails.status }}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div style=\"padding: 8px 0; border-bottom: 1px solid #e9ecef;\">\n\t\t\t\t\t\t\t<strong style=\"color: #495057;\">Date:</strong><br>\n\t\t\t\t\t\t\t<span style=\"color: #333;\">{{ deleteLogDetails.created_at }}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div style=\"padding: 8px 0; border-bottom: 1px solid #e9ecef;\">\n\t\t\t\t\t\t\t<strong style=\"color: #495057;\">Type:</strong><br>\n\t\t\t\t\t\t\t<span style=\"color: #333;\">{{ deleteLogDetails.type || '-' }}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div style=\"margin-top: 15px; padding: 8px 0;\">\n\t\t\t\t\t\t<strong style=\"color: #495057;\">User Agent:</strong><br>\n\t\t\t\t\t\t<span style=\"font-size: 13px; color: #666; word-break: break-all; line-height: 1.4; display: block; margin-top: 4px;\">{{ deleteLogDetails.user_agent || '-' }}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t<template #popup-footer>\n\t\t\t\t<div style=\"display: flex; justify-content: flex-end; gap: 12px; margin-top: 20px;\">\n\t\t\t\t\t<button @click=\"closeDeletePopup\" style=\"padding: 10px 20px; background: #6c757d; color: white; border: none; border-radius: 6px; cursor: pointer; font-size: 14px; font-weight: 500; transition: background-color 0.2s ease;\">Cancel</button>\n\t\t\t\t\t<button @click=\"confirmDelete\" style=\"padding: 10px 20px; background: #dc3545; color: white; border: none; border-radius: 6px; cursor: pointer; font-size: 14px; font-weight: 500; transition: background-color 0.2s ease;\">Delete</button>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t</aio-login-popup>\n\n\t\t<!-- Success Notification -->\n\t\t<div v-if=\"showSuccessMessage\" class=\"success-notification\">\n\t\t\t{{ successMessage }}\n\t\t</div>\n\n\t\t<aio-login-snackbar\n\t\t\t:message=\"snackbar.message\"\n\t\t\tv-if=\"snackbar.show\"\n\t\t\t:duration=\"snackbar.timeout\"\n\t\t\tv-on:close=\"handleSnackbarClose\"\n\t\t/>\n\t</div>\n</template>\n\n<script>\nimport tooltipContent from '../tooltip-content.js';\nimport resolveParentCurrentIsPro from '../resolve-parent-current-is-pro.js';\n\nexport default {\n\tname: 'enumeration-protection-logs',\n\n\tdata: () => ({\n\t\ttooltipContent,\n\t\tshowDeletePopup: false,\n\t\tshowSuccessMessage: false,\n\t\tsuccessMessage: '',\n\t\tdeleteLogId: null,\n\t\tdeleteLogDetails: null,\n\t\tform_data: {\n\t\t\tlog_enumeration_attempts: false,\n\t\t\tlog_enumeration_duration: 30,\n\t\t},\n\t\tsnackbar: {\n\t\t\tmessage: '',\n\t\t\tshow: false,\n\t\t\ttimeout: 3000,\n\t\t},\n\t\theaders: [\n\t\t\t{ value: 'ID', key: 'id' },\n\t\t\t{ value: 'User Login', key: 'user_login' },\n\t\t\t{ value: 'Date & Time', key: 'time' },\n\t\t\t{ value: 'Country', key: 'country' },\n\t\t\t{ value: 'City', key: 'city' },\n\t\t\t{ value: 'User Agent', key: 'user_agent' },\n\t\t\t{ value: 'IP Address', key: 'ip_address' },\n\t\t\t{ value: 'Status', key: 'status' },\n\t\t\t{ value: 'Blocked Until', key: 'blocked_until' },\n\t\t\t{ value: 'Actions', key: 'actions' },\n\t\t],\n\n\t\tdata: [\n\t\t\t{\n\t\t\t\tid: '1',\n\t\t\t\tuser_login: 'admin',\n\t\t\t\ttime: '2024-01-15 14:30:25',\n\t\t\t\tcountry: 'United States',\n\t\t\t\tcity: 'New York',\n\t\t\t\tuser_agent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)',\n\t\t\t\tip_address: '192.168.1.100',\n\t\t\t\tstatus: 'Blocked',\n\t\t\t\tblocked_until: '2024-01-16 14:30:25',\n\t\t\t\tactions: '<a href=\"#\" class=\"action-btn unblock\">Unblock</a><a href=\"#\" class=\"action-btn delete\">Delete</a>'\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: '2',\n\t\t\t\tuser_login: 'test',\n\t\t\t\ttime: '2024-01-15 13:45:12',\n\t\t\t\tcountry: 'Germany',\n\t\t\t\tcity: 'Berlin',\n\t\t\t\tuser_agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)',\n\t\t\t\tip_address: '10.0.0.50',\n\t\t\t\tstatus: 'Blocked',\n\t\t\t\tblocked_until: '2024-01-16 13:45:12',\n\t\t\t\tactions: '<a href=\"#\" class=\"action-btn unblock\">Unblock</a><a href=\"#\" class=\"action-btn delete\">Delete</a>'\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: '3',\n\t\t\t\tuser_login: 'user123',\n\t\t\t\ttime: '2024-01-15 12:20:45',\n\t\t\t\tcountry: 'United Kingdom',\n\t\t\t\tcity: 'London',\n\t\t\t\tuser_agent: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36',\n\t\t\t\tip_address: '172.16.0.25',\n\t\t\t\tstatus: 'Warning',\n\t\t\t\tblocked_until: '-',\n\t\t\t\tactions: '<a href=\"#\" class=\"action-btn block\">Block</a><a href=\"#\" class=\"action-btn delete\">Delete</a>'\n\t\t\t}\n\t\t],\n\t}),\n\n\tcomputed: {\n\t\thas_pro() {\n\t\t\treturn resolveParentCurrentIsPro(this);\n\t\t},\n\t},\n\n\tmounted() {\n\t\tif (this.has_pro) {\n\t\t\tthis.loadRealLogs();\n\t\t}\n\t\tthis.loadLoggingSettings();\n\t\t\n\t\t// Add event delegation for button clicks\n\t\tthis.$nextTick(() => {\n\t\t\tdocument.addEventListener('click', this.handleButtonClick.bind(this));\n\t\t});\n\t},\n\n\tbeforeUnmount() {\n\t\t// Clean up event listener\n\t\tdocument.removeEventListener('click', this.handleButtonClick.bind(this));\n\t},\n\n\tmethods: {\n\t\tloadLoggingSettings() {\n\t\t\taxios.get('aio-login/dashboard/activity-log-settings')\n\t\t\t\t.then(response => {\n\t\t\t\t\tif (response.data.success) {\n\t\t\t\t\t\tconst data = response.data.data;\n\t\t\t\t\t\tthis.form_data.log_enumeration_attempts = data.log_enumeration_attempts === 'on';\n\t\t\t\t\t\tthis.form_data.log_enumeration_duration = parseInt(data.log_enumeration_duration) || 30;\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.error('Error loading logging settings:', error);\n\t\t\t\t});\n\t\t},\n\n\t\thandleLogEnumerationAttempts(value) {\n\t\t\tthis.form_data.log_enumeration_attempts = value;\n\t\t},\n\n\t\thandleLogEnumerationDuration(value) {\n\t\t\tconst actualValue = value.target ? value.target.value : value;\n\t\t\t\n\t\t\t// Allow empty field, only convert to number if there's a value\n\t\t\tif (actualValue === '' || actualValue === null || actualValue === undefined) {\n\t\t\t\tthis.form_data.log_enumeration_duration = '';\n\t\t\t} else {\n\t\t\t\tconst numValue = parseInt(actualValue);\n\t\t\t\tif (!isNaN(numValue) && numValue >= 1 && numValue <= 365) {\n\t\t\t\t\tthis.form_data.log_enumeration_duration = numValue;\n\t\t\t\t} else if (numValue === 0) {\n\t\t\t\t\t// Show validation error for 0 and keep 0 in field\n\t\t\t\t\tthis.showSnackbar('Duration must be between 1 and 365 days.');\n\t\t\t\t\tthis.form_data.log_enumeration_duration = 0;\n\t\t\t\t}\n\t\t\t\t// If invalid, don't change the value\n\t\t\t}\n\t\t},\n\n\t\tsaveLoggingSettings() {\n\t\t\t// Validate duration before saving\n\t\t\tconst duration = this.form_data.log_enumeration_duration;\n\t\t\tif (duration === 0 || (duration !== '' && (duration < 1 || duration > 365))) {\n\t\t\t\tthis.showSnackbar('Duration must be between 1 and 365 days.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst settings = {\n\t\t\t\tlog_enumeration_attempts: this.form_data.log_enumeration_attempts ? 'on' : 'off',\n\t\t\t\tlog_enumeration_duration: this.form_data.log_enumeration_duration || 30,\n\t\t\t};\n\n\t\t\taxios.post('aio-login/dashboard/update/activity-log-settings', {\n\t\t\t\tsettings: settings,\n\t\t\t\t_wpnonce: aio_login__app_object.nonce\n\t\t\t})\n\t\t\t.then(response => {\n\t\t\t\tif (response.data.success) {\n\t\t\t\t\tthis.showSnackbar('Settings saved successfully!');\n\t\t\t\t} else {\n\t\t\t\t\tthis.showSnackbar('Error saving settings.');\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(error => {\n\t\t\t\tconsole.error('Error saving logging settings:', error);\n\t\t\t\tthis.showSnackbar('Error saving settings.');\n\t\t\t});\n\t\t},\n\n\t\tshowSnackbar(message) {\n\t\t\tthis.snackbar.message = message;\n\t\t\tthis.snackbar.show = true;\n\t\t},\n\n\t\thandleSnackbarClose() {\n\t\t\tthis.snackbar.show = false;\n\t\t},\n\n\t\tloadRealLogs() {\n\t\t\t// Load real logs from pro plugin\n\t\t\taxios.get('aio-login-pro/v1/enumeration-logs')\n\t\t\t\t.then(response => {\n\t\t\t\t\tif (response.data.success) {\n\t\t\t\t\t\tthis.data = response.data.data.map(log => {\n\t\t\t\t\t\t\tconsole.log('Processing log:', log.id, 'blocked_until:', log.blocked_until);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tid: log.id,\n\t\t\t\t\t\t\t\tuser_login: log.username || '-',\n\t\t\t\t\t\t\t\ttime: log.created_at,\n\t\t\t\t\t\t\t\tcountry: '-',\n\t\t\t\t\t\t\t\tcity: '-',\n\t\t\t\t\t\t\t\tuser_agent: log.user_agent || '-',\n\t\t\t\t\t\t\t\tip_address: log.ip_address,\n\t\t\t\t\t\t\t\tstatus: this.getStatus(log.blocked_until),\n\t\t\t\t\t\t\t\tblocked_until: this.getBlockedUntilDisplay(log.blocked_until),\n\t\t\t\t\t\t\t\tactions: this.generateActions(log)\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.error('Error loading real logs:', error);\n\t\t\t\t});\n\t\t},\n\n\t\tgetStatus(blockedUntil) {\n\t\t\tif (!blockedUntil || blockedUntil === 'null' || blockedUntil === null) {\n\t\t\t\treturn 'Unblocked';\n\t\t\t}\n\t\t\t\n\t\t\tconst blockedDate = new Date(blockedUntil);\n\t\t\tconst now = new Date();\n\t\t\t\n\t\t\tif (blockedDate > now) {\n\t\t\t\treturn 'Blocked';\n\t\t\t} else {\n\t\t\t\treturn 'Unblocked';\n\t\t\t}\n\t\t},\n\n\t\tgetBlockedUntilDisplay(blockedUntil) {\n\t\t\tif (!blockedUntil || blockedUntil === 'null' || blockedUntil === null) {\n\t\t\t\treturn '-';\n\t\t\t}\n\t\t\t\n\t\t\tconst blockedDate = new Date(blockedUntil);\n\t\t\tconst now = new Date();\n\t\t\t\n\t\t\tif (blockedDate > now) {\n\t\t\t\treturn blockedUntil;\n\t\t\t} else {\n\t\t\t\treturn '-';\n\t\t\t}\n\t\t},\n\n\t\tgenerateActions(log) {\n\t\t\tlet actions = '';\n\t\t\t\n\t\t\t// Check if IP is currently blocked\n\t\t\tconst isBlocked = log.blocked_until && \n\t\t\t\t\t\t\t log.blocked_until !== 'null' && \n\t\t\t\t\t\t\t log.blocked_until !== null && \n\t\t\t\t\t\t\t log.blocked_until !== '-' &&\n\t\t\t\t\t\t\t new Date(log.blocked_until) > new Date();\n\t\t\t\n\t\t\tconsole.log('Generating actions for log:', log.id, 'blocked_until:', log.blocked_until, 'isBlocked:', isBlocked);\n\t\t\t\n\t\t\t// Only show unblock button if IP is currently blocked\n\t\t\t// Don't show block button after unblocking\n\t\t\tif (isBlocked) {\n\t\t\t\tactions += `<a href=\"#\" class=\"action-btn unblock\" data-ip=\"${log.ip_address}\" data-action=\"unblock\">Unblock</a>`;\n\t\t\t}\n\t\t\t// If not blocked, don't show any block/unblock button\n\t\t\t\n\t\t\t// Add delete button\n\t\t\tactions += `<a href=\"#\" class=\"action-btn delete\" data-id=\"${log.id}\" data-action=\"delete\">Delete</a>`;\n\t\t\t\n\t\t\treturn actions;\n\t\t},\n\n\t\thandleUnblockIP(ipAddress) {\n\t\t\tconsole.log('Unblock button clicked for IP:', ipAddress);\n\t\t\t\n\t\t\tif (!this.has_pro) {\n\t\t\t\tthis.handleProFeatureClick();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taxios.post('aio-login-pro/v1/unblock-ip', {\n\t\t\t\tip_address: ipAddress\n\t\t\t})\n\t\t\t.then(response => {\n\t\t\t\tif (response.data.success) {\n\t\t\t\t\t// Show success message\n\t\t\t\t\tthis.showSuccessNotification('IP address unblocked successfully!');\n\t\t\t\t\t// Reload the logs\n\t\t\t\t\tthis.loadRealLogs();\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(error => {\n\t\t\t\tconsole.error('Error unblocking IP:', error);\n\t\t\t\tthis.showSuccessNotification('Error unblocking IP address.', 'error');\n\t\t\t});\n\t\t},\n\n\t\thandleBlockIP(ipAddress) {\n\t\t\tif (!this.has_pro) {\n\t\t\t\tthis.handleProFeatureClick();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For now, just show a message that blocking is not implemented\n\t\t\tthis.showSuccessNotification('Block IP functionality will be implemented in the next update.', 'info');\n\t\t},\n\n\t\thandleDeleteLog(logId) {\n\t\t\tconsole.log('Delete button clicked for log ID:', logId);\n\t\t\t\n\t\t\tif (!this.has_pro) {\n\t\t\t\tthis.handleProFeatureClick();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Find the log details from the current data\n\t\t\tconst logEntry = this.data.find(log => log.id == logId);\n\t\t\tif (logEntry) {\n\t\t\t\t// Get the original log data from the backend response\n\t\t\t\taxios.get('aio-login-pro/v1/enumeration-logs')\n\t\t\t\t\t.then(response => {\n\t\t\t\t\t\tif (response.data.success) {\n\t\t\t\t\t\t\tconst originalLog = response.data.data.find(log => log.id == logId);\n\t\t\t\t\t\t\tif (originalLog) {\n\t\t\t\t\t\t\t\tthis.deleteLogDetails = {\n\t\t\t\t\t\t\t\t\tid: originalLog.id,\n\t\t\t\t\t\t\t\t\tusername: originalLog.username,\n\t\t\t\t\t\t\t\t\tip_address: originalLog.ip_address,\n\t\t\t\t\t\t\t\t\tstatus: this.getStatus(originalLog.blocked_until),\n\t\t\t\t\t\t\t\t\tcreated_at: originalLog.created_at,\n\t\t\t\t\t\t\t\t\ttype: originalLog.type,\n\t\t\t\t\t\t\t\t\tuser_agent: originalLog.user_agent\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.catch(error => {\n\t\t\t\t\t\tconsole.error('Error fetching log details:', error);\n\t\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Show delete confirmation popup\n\t\t\tthis.deleteLogId = logId;\n\t\t\tthis.showDeletePopup = true;\n\t\t},\n\n\t\tcloseDeletePopup() {\n\t\t\tthis.showDeletePopup = false;\n\t\t\tthis.deleteLogId = null;\n\t\t\tthis.deleteLogDetails = null;\n\t\t},\n\n\t\tconfirmDelete() {\n\t\t\tif (!this.deleteLogId) return;\n\n\t\t\taxios.delete(`aio-login-pro/v1/enumeration-logs/${this.deleteLogId}`)\n\t\t\t.then(response => {\n\t\t\t\tif (response.data.success) {\n\t\t\t\t\t// Close popup\n\t\t\t\t\tthis.closeDeletePopup();\n\t\t\t\t\t// Show success message\n\t\t\t\t\tthis.showSuccessNotification('Log entry deleted successfully!');\n\t\t\t\t\t// Reload the logs\n\t\t\t\t\tthis.loadRealLogs();\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(error => {\n\t\t\t\tconsole.error('Error deleting log:', error);\n\t\t\t\tthis.showSuccessNotification('Error deleting log entry.', 'error');\n\t\t\t\tthis.closeDeletePopup();\n\t\t\t});\n\t\t},\n\n\t\tshowSuccessNotification(message, type = 'success') {\n\t\t\tthis.successMessage = message;\n\t\t\tthis.showSuccessMessage = true;\n\t\t\t\n\t\t\t// Auto hide after 3 seconds\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.showSuccessMessage = false;\n\t\t\t}, 3000);\n\t\t},\n\n\t\thandleButtonClick(event) {\n\t\t\t// Check if clicked element is an action button\n\t\t\tif (event.target.classList.contains('action-btn')) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\t\n\t\t\t\tconst action = event.target.getAttribute('data-action');\n\t\t\t\tconst ipAddress = event.target.getAttribute('data-ip');\n\t\t\t\tconst logId = event.target.getAttribute('data-id');\n\t\t\t\t\n\t\t\t\tconsole.log('Button clicked:', action, 'IP:', ipAddress, 'ID:', logId);\n\t\t\t\t\n\t\t\t\tswitch (action) {\n\t\t\t\t\tcase 'unblock':\n\t\t\t\t\t\tthis.handleUnblockIP(ipAddress);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'block':\n\t\t\t\t\t\tthis.handleBlockIP(ipAddress);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'delete':\n\t\t\t\t\t\tthis.handleDeleteLog(logId);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\thandleProFeatureClick() {\n\t\t\tlet p = this.$parent;\n\t\t\twhile (p) {\n\t\t\t\tif ('popup' in p && typeof p.popup === 'boolean') {\n\t\t\t\t\tp.popup = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tp = p.$parent;\n\t\t\t}\n\t\t}\n\t}\n}\n</script>\n\n<style scoped>\nh2 {\n\tmargin-top: 0;\n\tcolor: #333;\n\tfont-size: 24px;\n\tmargin-bottom: 20px;\n}\n\n.success-notification {\n\tposition: fixed;\n\ttop: 20px;\n\tright: 20px;\n\tbackground: #28a745;\n\tcolor: white;\n\tpadding: 15px 20px;\n\tborder-radius: 5px;\n\tbox-shadow: 0 4px 12px rgba(0,0,0,0.15);\n\tz-index: 10000;\n\tanimation: slideIn 0.3s ease-out;\n}\n\n.success-notification.error {\n\tbackground: #dc3545;\n}\n\n.success-notification.info {\n\tbackground: #17a2b8;\n}\n\n@keyframes slideIn {\n\tfrom {\n\t\ttransform: translateX(100%);\n\t\topacity: 0;\n\t}\n\tto {\n\t\ttransform: translateX(0);\n\t\topacity: 1;\n\t}\n}\n</style> ","<template>\n\t<div>\n\t\t<div class=\"aio-login-t-wrapper\">\n\t\t\t<div :class=\"{ 'aio-login-locked-content': !has_pro }\">\n\t\t\t<div v-if=\"!showSettings\">\n\t\t\t\t<div>\n\t\t\t\t\t<h1>\n\t\t\t\t\t\t<span>Notifications</span>\n\t\t\t\t\t\t<aio-login-tooltip\n\t\t\t\t\t\t\t:content=\"tooltipContent.notifications.content\"\n\t\t\t\t\t\t\t:title=\"tooltipContent.notifications.title\"\n\t\t\t\t\t\t\tplacement=\"bottom\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</h1>\n\t\t\t\t\t<p class=\"desc\">\n\t\t\t\t\t\tConfigure how you want to be notified about login activity and security-related events.\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"aio-login-pro__social-login\">\n\t\t\t\t\t<aio-login-notification-channel-card\n\t\t\t\t\t\tchannel=\"slack\"\n\t\t\t\t\t\t:has-pro=\"has_pro\"\n\t\t\t\t\t\t:enabled=\"slackEnabled\"\n\t\t\t\t\t\t:loading=\"isLoadingSettings\"\n\t\t\t\t\t\t:config-data=\"slackConfigData\"\n\t\t\t\t\t\t@toggle-integration=\"handleSlackToggle\"\n\t\t\t\t\t\t@configure-integration=\"showSlackSettings\"\n\t\t\t\t\t/>\n\t\t\t\t\t<aio-login-notification-channel-card\n\t\t\t\t\t\tchannel=\"webhook\"\n\t\t\t\t\t\t:has-pro=\"has_pro\"\n\t\t\t\t\t\t:enabled=\"webhookEnabled\"\n\t\t\t\t\t\t:loading=\"isLoadingSettings\"\n\t\t\t\t\t\t:config-data=\"webhookConfigData\"\n\t\t\t\t\t\t@toggle-integration=\"handleWebhookToggle\"\n\t\t\t\t\t\t@configure-integration=\"showWebhookSettings\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div v-else class=\"notifications-settings-view\">\n\t\t\t\t<div class=\"notifications-settings-header\">\n\t\t\t\t\t<div class=\"notifications-settings-header-brand\">\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t:src=\"settingsChannelIcon\"\n\t\t\t\t\t\t\t:alt=\"settingsChannelTitle\"\n\t\t\t\t\t\t\tclass=\"channel-settings-icon\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<div class=\"notifications-settings-header-text\">\n\t\t\t\t\t\t\t<h2>{{ settingsPanelHeading }}</h2>\n\t\t\t\t\t\t\t<p class=\"notifications-settings-subtitle\">\n\t\t\t\t\t\t\t\tConfigure how you want to receive alerts about security events on your website.\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclass=\"notifications-back-btn\"\n\t\t\t\t\t\t@click=\"goBack\"\n\t\t\t\t\t>\n\t\t\t\t\t\t← Back\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"notifications-settings-body\">\n\t\t\t\t\t<template v-if=\"'slack' === settingsChannel\">\n\t\t\t\t\t\t<template v-if=\"isLoadingSettings\">\n\t\t\t\t\t\t\t<div class=\"notifications-form-row\">\n\t\t\t\t\t\t\t\t<div class=\"notifications-form-label\">\n\t\t\t\t\t\t\t\t\t<span class=\"notifications-skeleton notifications-skeleton--label\"></span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"notifications-form-field\">\n\t\t\t\t\t\t\t\t\t<div class=\"notifications-skeleton notifications-skeleton--toggle\"></div>\n\t\t\t\t\t\t\t\t\t<div class=\"notifications-skeleton notifications-skeleton--hint\"></div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"notifications-form-row\">\n\t\t\t\t\t\t\t\t<div class=\"notifications-form-label\">\n\t\t\t\t\t\t\t\t\t<span class=\"notifications-skeleton notifications-skeleton--label\"></span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"notifications-form-field\">\n\t\t\t\t\t\t\t\t\t<div class=\"notifications-skeleton notifications-skeleton--input\"></div>\n\t\t\t\t\t\t\t\t\t<div class=\"notifications-skeleton notifications-skeleton--hint notifications-skeleton--hint-wide\"></div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"notifications-form-row notifications-form-row--events\">\n\t\t\t\t\t\t\t\t<div class=\"notifications-form-label\">\n\t\t\t\t\t\t\t\t\t<span class=\"notifications-skeleton notifications-skeleton--label\"></span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"notifications-form-field notifications-events-list\">\n\t\t\t\t\t\t\t\t\t<div class=\"notifications-skeleton notifications-skeleton--checkbox\"></div>\n\t\t\t\t\t\t\t\t\t<div class=\"notifications-skeleton notifications-skeleton--checkbox\"></div>\n\t\t\t\t\t\t\t\t\t<div class=\"notifications-skeleton notifications-skeleton--checkbox\"></div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template v-else>\n\t\t\t\t\t\t<div class=\"notifications-form-row\">\n\t\t\t\t\t\t\t<div class=\"notifications-form-label\">\n\t\t\t\t\t\t\t\t<span>Slack Notifications</span>\n\t\t\t\t\t\t\t\t<aio-login-tooltip\n\t\t\t\t\t\t\t\t\ttitle=\"Slack Notifications\"\n\t\t\t\t\t\t\t\t\tcontent=\"Turn on to send security notifications to your Slack workspace using an incoming webhook.\"\n\t\t\t\t\t\t\t\t\tplacement=\"top\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"notifications-form-field\">\n\t\t\t\t\t\t\t\t<label class=\"toggle-switch\" :class=\"{ 'disabled': !has_pro }\">\n\t\t\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\t\t\tid=\"notification-settings-slack-main\"\n\t\t\t\t\t\t\t\t\t\tname=\"notification-settings-slack-main\"\n\t\t\t\t\t\t\t\t\t\tv-on:toggle-input=\"handleSettingsToggle\"\n\t\t\t\t\t\t\t\t\t\t:enabled=\"slackEnabled\"\n\t\t\t\t\t\t\t\t\t\t:disabled=\"!has_pro\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t<p class=\"notifications-field-hint\">\n\t\t\t\t\t\t\t\t\tReceive real-time security alerts directly in your Slack workspace.\n\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<template v-if=\"slackEnabled && has_pro\">\n\t\t\t\t\t\t\t<div class=\"notifications-form-row\">\n\t\t\t\t\t\t\t\t<div class=\"notifications-form-label\">\n\t\t\t\t\t\t\t\t\t<span>Slack Webhook URL</span>\n\t\t\t\t\t\t\t\t\t<aio-login-tooltip\n\t\t\t\t\t\t\t\t\t\ttitle=\"Incoming webhook\"\n\t\t\t\t\t\t\t\t\t\tcontent=\"Create an incoming webhook in your Slack app settings and paste the URL here.\"\n\t\t\t\t\t\t\t\t\t\tplacement=\"top\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"notifications-form-field\">\n\t\t\t\t\t\t\t\t\t<div class=\"notifications-slack-url-row\">\n\t\t\t\t\t\t\t\t\t\t<aio-login-text\n\t\t\t\t\t\t\t\t\t\t\tid=\"aio-login-notification-url-slack\"\n\t\t\t\t\t\t\t\t\t\t\tname=\"aio-login-notification-url-slack\"\n\t\t\t\t\t\t\t\t\t\t\ttype=\"url\"\n\t\t\t\t\t\t\t\t\t\t\tv-model=\"settingsUrlDraft\"\n\t\t\t\t\t\t\t\t\t\t\tplaceholder=\"https://hooks.slack.com/services/...\"\n\t\t\t\t\t\t\t\t\t\t\t:readonly=\"true\"\n\t\t\t\t\t\t\t\t\t\t\t:disabled=\"!has_pro\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\tclass=\"button notifications-connect-slack\"\n\t\t\t\t\t\t\t\t\t\t\t:disabled=\"!has_pro || !slackConnectUrl\"\n\t\t\t\t\t\t\t\t\t\t\t@click=\"connectWithSlack\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\tConnect with Slack\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<p class=\"notifications-guide-line\">\n\t\t\t\t\t\t\t\t\t\tNeed help setting up?\n\t\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\t\t:href=\"slackGuideUrl\"\n\t\t\t\t\t\t\t\t\t\t\tclass=\"notifications-guide-link\"\n\t\t\t\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\tView configuration guide\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"notifications-external-icon\" aria-hidden=\"true\">↗</span>\n\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div class=\"notifications-form-row notifications-form-row--events\">\n\t\t\t\t\t\t\t\t<div class=\"notifications-form-label\">\n\t\t\t\t\t\t\t\t\t<span>Event Settings</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"notifications-form-field notifications-events-list\">\n\t\t\t\t\t\t\t\t\t<label class=\"notifications-checkbox-row\">\n\t\t\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\t\t\t\t\tchecked\n\t\t\t\t\t\t\t\t\t\t\tdisabled\n\t\t\t\t\t\t\t\t\t\t\tclass=\"notifications-checkbox notifications-checkbox--locked\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t<span>Lockout Attempts</span>\n\t\t\t\t\t\t\t\t\t\t<aio-login-tooltip\n\t\t\t\t\t\t\t\t\t\t\ttitle=\"Lockout Attempts\"\n\t\t\t\t\t\t\t\t\t\t\tcontent=\"Always included. Alerts when an IP or user is locked out after failed logins.\"\n\t\t\t\t\t\t\t\t\t\t\tplacement=\"top\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t<label class=\"notifications-checkbox-row\">\n\t\t\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\t\t\t\t\tv-model=\"slackEvents.failed_login\"\n\t\t\t\t\t\t\t\t\t\t\tclass=\"notifications-checkbox\"\n\t\t\t\t\t\t\t\t\t\t\t:disabled=\"!has_pro\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t<span>Failed Login Attempts</span>\n\t\t\t\t\t\t\t\t\t\t<aio-login-tooltip\n\t\t\t\t\t\t\t\t\t\t\ttitle=\"Failed Login Attempts\"\n\t\t\t\t\t\t\t\t\t\t\tcontent=\"Notify when failed login attempts are recorded according to your security settings.\"\n\t\t\t\t\t\t\t\t\t\t\tplacement=\"top\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t<label class=\"notifications-checkbox-row\">\n\t\t\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\t\t\t\t\tv-model=\"slackEvents.user_enumeration\"\n\t\t\t\t\t\t\t\t\t\t\tclass=\"notifications-checkbox\"\n\t\t\t\t\t\t\t\t\t\t\t:disabled=\"!has_pro\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t<span>User Enumeration Attempts</span>\n\t\t\t\t\t\t\t\t\t\t<aio-login-tooltip\n\t\t\t\t\t\t\t\t\t\t\ttitle=\"User Enumeration Attempts\"\n\t\t\t\t\t\t\t\t\t\t\tcontent=\"Notify when username or author enumeration is detected, if logging is enabled.\"\n\t\t\t\t\t\t\t\t\t\t\tplacement=\"top\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</template>\n\n\t\t\t\t\t<template v-else>\n\t\t\t\t\t\t<template v-if=\"isLoadingSettings\">\n\t\t\t\t\t\t\t<div class=\"notifications-form-row\">\n\t\t\t\t\t\t\t\t<div class=\"notifications-form-label\">\n\t\t\t\t\t\t\t\t\t<span class=\"notifications-skeleton notifications-skeleton--label\"></span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"notifications-form-field\">\n\t\t\t\t\t\t\t\t\t<div class=\"notifications-skeleton notifications-skeleton--toggle\"></div>\n\t\t\t\t\t\t\t\t\t<div class=\"notifications-skeleton notifications-skeleton--hint\"></div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"notifications-form-row\">\n\t\t\t\t\t\t\t\t<div class=\"notifications-form-label\">\n\t\t\t\t\t\t\t\t\t<span class=\"notifications-skeleton notifications-skeleton--label\"></span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"notifications-form-field\">\n\t\t\t\t\t\t\t\t\t<div class=\"notifications-skeleton notifications-skeleton--input\"></div>\n\t\t\t\t\t\t\t\t\t<div class=\"notifications-skeleton notifications-skeleton--hint notifications-skeleton--hint-wide\"></div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"notifications-form-row notifications-form-row--events\">\n\t\t\t\t\t\t\t\t<div class=\"notifications-form-label\">\n\t\t\t\t\t\t\t\t\t<span class=\"notifications-skeleton notifications-skeleton--label\"></span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"notifications-form-field notifications-events-list\">\n\t\t\t\t\t\t\t\t\t<div class=\"notifications-skeleton notifications-skeleton--checkbox\"></div>\n\t\t\t\t\t\t\t\t\t<div class=\"notifications-skeleton notifications-skeleton--checkbox\"></div>\n\t\t\t\t\t\t\t\t\t<div class=\"notifications-skeleton notifications-skeleton--checkbox\"></div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template v-else>\n\t\t\t\t\t\t<div class=\"notifications-form-row\">\n\t\t\t\t\t\t\t<div class=\"notifications-form-label\">\n\t\t\t\t\t\t\t\t<span>Webhook Notifications</span>\n\t\t\t\t\t\t\t\t<aio-login-tooltip\n\t\t\t\t\t\t\t\t\ttitle=\"Webhook Notifications\"\n\t\t\t\t\t\t\t\t\tcontent=\"Send security events to your own HTTPS endpoint as JSON POST requests.\"\n\t\t\t\t\t\t\t\t\tplacement=\"top\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"notifications-form-field\">\n\t\t\t\t\t\t\t\t<label class=\"toggle-switch\" :class=\"{ 'disabled': !has_pro }\">\n\t\t\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\t\t\tid=\"notification-settings-webhook-main\"\n\t\t\t\t\t\t\t\t\t\tname=\"notification-settings-webhook-main\"\n\t\t\t\t\t\t\t\t\t\tv-on:toggle-input=\"handleSettingsToggle\"\n\t\t\t\t\t\t\t\t\t\t:enabled=\"webhookEnabled\"\n\t\t\t\t\t\t\t\t\t\t:disabled=\"!has_pro\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t<p class=\"notifications-field-hint\">\n\t\t\t\t\t\t\t\t\tSend security events to your custom endpoint for integration with other tools.\n\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<template v-if=\"webhookEnabled && has_pro\">\n\t\t\t\t\t\t\t<div class=\"notifications-form-row\">\n\t\t\t\t\t\t\t\t<div class=\"notifications-form-label\">\n\t\t\t\t\t\t\t\t\t<span>Custom Webhook URL</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"notifications-form-field\">\n\t\t\t\t\t\t\t\t\t<aio-login-text\n\t\t\t\t\t\t\t\t\t\tid=\"aio-login-notification-url-webhook\"\n\t\t\t\t\t\t\t\t\t\tname=\"aio-login-notification-url-webhook\"\n\t\t\t\t\t\t\t\t\t\ttype=\"url\"\n\t\t\t\t\t\t\t\t\t\tv-model=\"settingsUrlDraft\"\n\t\t\t\t\t\t\t\t\t\tplaceholder=\"https://example.com/webhook\"\n\t\t\t\t\t\t\t\t\t\t:disabled=\"!has_pro\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<p class=\"notifications-field-hint\">\n\t\t\t\t\t\t\t\t\t\tEnter the endpoint URL where you want to receive security notifications. We'll send a POST request with event details.\n\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div class=\"notifications-form-row notifications-form-row--events\">\n\t\t\t\t\t\t\t\t<div class=\"notifications-form-label\">\n\t\t\t\t\t\t\t\t\t<span>Event Settings</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"notifications-form-field notifications-events-list\">\n\t\t\t\t\t\t\t\t\t<label class=\"notifications-checkbox-row\">\n\t\t\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\t\t\t\t\tchecked\n\t\t\t\t\t\t\t\t\t\t\tdisabled\n\t\t\t\t\t\t\t\t\t\t\tclass=\"notifications-checkbox notifications-checkbox--locked\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t<span>Lockout Attempts</span>\n\t\t\t\t\t\t\t\t\t\t<aio-login-tooltip\n\t\t\t\t\t\t\t\t\t\t\ttitle=\"Lockout Attempts\"\n\t\t\t\t\t\t\t\t\t\t\tcontent=\"Always included. Alerts when an IP or user is locked out after failed logins.\"\n\t\t\t\t\t\t\t\t\t\t\tplacement=\"top\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t<label class=\"notifications-checkbox-row\">\n\t\t\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\t\t\t\t\tv-model=\"webhookEvents.failed_login\"\n\t\t\t\t\t\t\t\t\t\t\tclass=\"notifications-checkbox\"\n\t\t\t\t\t\t\t\t\t\t\t:disabled=\"!has_pro\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t<span>Failed Login Attempts</span>\n\t\t\t\t\t\t\t\t\t\t<aio-login-tooltip\n\t\t\t\t\t\t\t\t\t\t\ttitle=\"Failed Login Attempts\"\n\t\t\t\t\t\t\t\t\t\t\tcontent=\"Notify when failed login attempts are recorded according to your security settings.\"\n\t\t\t\t\t\t\t\t\t\t\tplacement=\"top\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t<label class=\"notifications-checkbox-row\">\n\t\t\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\t\t\t\t\tv-model=\"webhookEvents.user_enumeration\"\n\t\t\t\t\t\t\t\t\t\t\tclass=\"notifications-checkbox\"\n\t\t\t\t\t\t\t\t\t\t\t:disabled=\"!has_pro\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t<span>User Enumeration Attempts</span>\n\t\t\t\t\t\t\t\t\t\t<aio-login-tooltip\n\t\t\t\t\t\t\t\t\t\t\ttitle=\"User Enumeration Attempts\"\n\t\t\t\t\t\t\t\t\t\t\tcontent=\"Notify when username or author enumeration is detected, if logging is enabled.\"\n\t\t\t\t\t\t\t\t\t\t\tplacement=\"top\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</template>\n\n\t\t\t\t\t<div class=\"submit\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclass=\"button aio-login__primary notifications-save-btn\"\n\t\t\t\t\t\t\t:disabled=\"!has_pro || saving\"\n\t\t\t\t\t\t\t@click=\"saveAllNotificationSettings\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{{ saving ? 'Saving…' : 'Save Changes' }}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div v-if=\"!has_pro\" class=\"aio-login-t-content-overflow\" @click=\"handleProFeatureClick\"></div>\n\t\t</div>\n\n\t\t<aio-login-snackbar\n\t\t\t:message=\"snackbar.message\"\n\t\t\tv-if=\"snackbar.show\"\n\t\t\t:duration=\"snackbar.duration\"\n\t\t\tv-on:close=\"handleSnackbarClose\"\n\t\t/>\n\t</div>\n</template>\n\n<script>\nimport tooltipContent from '../tooltip-content.js';\nimport resolveParentCurrentIsPro from '../resolve-parent-current-is-pro.js';\n\n// Final desired URL examples:\n// .../admin.php?page=aio-login&tab=activity-log#/notifications#/notifications-slack-settings\n// .../admin.php?page=aio-login&tab=activity-log#/notifications#/notifications-webhook-settings\nconst HASH_SLACK = '#/notifications#/notifications-slack-settings';\nconst HASH_WEBHOOK = '#/notifications#/notifications-webhook-settings';\nconst SLACK_GUIDE_URL = 'https://slack.aiologin.com/';\n\nfunction defaultEvents() {\n\treturn {\n\t\tlockout: true,\n\t\tfailed_login: false,\n\t\tuser_enumeration: false,\n\t};\n}\n\nexport default {\n\tname: 'notifications-page',\n\n\tslug: 'notifications',\n\n\tdata: () => ( {\n\t\ttooltipContent,\n\t\tslackGuideUrl: SLACK_GUIDE_URL,\n\t\tassetsUrl: aio_login__app_object.assets_url,\n\t\tassetsVer: aio_login__app_object.version || '',\n\t\tshowSettings: false,\n\t\tsettingsChannel: 'slack',\n\t\tslackEnabled: false,\n\t\twebhookEnabled: false,\n\t\tslackConfigData: { url: '' },\n\t\twebhookConfigData: { url: '' },\n\t\tslackEvents: defaultEvents(),\n\t\twebhookEvents: defaultEvents(),\n\t\tsettingsUrlDraft: '',\n\t\tsaving: false,\n\t\tpendingSlackSuccessMessage: false,\n\t\tpendingSlackErrorMessage: false,\n\t\tsnackbar: {\n\t\t\tmessage: '',\n\t\t\tshow: false,\n\t\t\tduration: 4000,\n\t\t},\n\t\tisLoadingSettings: true,\n\t} ),\n\n\tcomputed: {\n\t\thas_pro() {\n\t\t\treturn resolveParentCurrentIsPro(this);\n\t\t},\n\n\t\tsettingsChannelTitle() {\n\t\t\treturn 'slack' === this.settingsChannel ? 'Slack' : 'Webhook';\n\t\t},\n\n\t\tsettingsPanelHeading() {\n\t\t\treturn 'slack' === this.settingsChannel\n\t\t\t\t? 'Slack Notification'\n\t\t\t\t: 'Webhook Notification';\n\t\t},\n\n\t\tsettingsChannelIcon() {\n\t\t\tconst base = this.assetsUrl + 'images/icons/notification-' + this.settingsChannel + '.svg';\n\t\t\treturn this.assetsVer ? base + '?ver=' + encodeURIComponent( this.assetsVer ) : base;\n\t\t},\n\n\t\tslackConnectUrl() {\n\t\t\tconst u = aio_login__app_object.slack_connect_url;\n\t\t\treturn typeof u === 'string' && u.trim().length > 0 ? u.trim() : '';\n\t\t},\n\t},\n\n\tmounted() {\n\t\twindow.addEventListener( 'hashchange', this.checkUrlHash );\n\t\tthis.processSlackOAuthReturnFlags();\n\t\tthis.checkUrlHash();\n\t\tthis.loadNotificationSettings().then( () => {\n\t\t\tif ( this.pendingSlackSuccessMessage ) {\n\t\t\t\tthis.pendingSlackSuccessMessage = false;\n\t\t\t\tthis.slackEnabled = true;\n\t\t\t\tthis.syncSettingsUrlDraft();\n\t\t\t\tthis.snackbar.message = 'Connected with Slack successfully.';\n\t\t\t\tthis.snackbar.show = true;\n\t\t\t}\n\t\t\tif ( this.pendingSlackErrorMessage ) {\n\t\t\t\tthis.pendingSlackErrorMessage = false;\n\t\t\t\tthis.snackbar.message = 'Invalid Slack webhook. Please try Connect with Slack again.';\n\t\t\t\tthis.snackbar.show = true;\n\t\t\t}\n\t\t} );\n\t},\n\tbeforeUnmount() {\n\t\twindow.removeEventListener( 'hashchange', this.checkUrlHash );\n\t},\n\n\tmethods: {\n\t\tprocessSlackOAuthReturnFlags() {\n\t\t\ttry {\n\t\t\t\tconst u = new URL( window.location.href );\n\t\t\t\tconst saved = u.searchParams.get( 'aio_slack_saved' );\n\t\t\t\tconst err = u.searchParams.get( 'aio_slack_error' );\n\t\t\t\tif ( saved !== '1' && err !== '1' ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tu.searchParams.delete( 'aio_slack_saved' );\n\t\t\t\tu.searchParams.delete( 'aio_slack_error' );\n\t\t\t\tconst qs = u.searchParams.toString();\n\t\t\t\tconst newBase = u.pathname + ( qs ? '?' + qs : '' );\n\t\t\t\thistory.replaceState( null, '', newBase + HASH_SLACK );\n\t\t\t\t// Make sure UI opens the Slack settings panel immediately.\n\t\t\t\tthis.showSettings = true;\n\t\t\t\tthis.settingsChannel = 'slack';\n\t\t\t\tthis.syncSettingsUrlDraft();\n\n\t\t\t\tif ( saved === '1' ) {\n\t\t\t\t\tthis.pendingSlackSuccessMessage = true;\n\t\t\t\t}\n\t\t\t\tif ( err === '1' ) {\n\t\t\t\t\tthis.pendingSlackErrorMessage = true;\n\t\t\t\t}\n\t\t\t\t// Ensure hash-dependent UI updates for any edge cases.\n\t\t\t\twindow.dispatchEvent( new HashChangeEvent( 'hashchange' ) );\n\t\t\t} catch ( e ) {\n\t\t\t\t// ignore invalid URL\n\t\t\t}\n\t\t},\n\n\t\tnormalizeEvents( ev ) {\n\t\t\treturn {\n\t\t\t\tlockout: true,\n\t\t\t\tfailed_login: !!( ev && ev.failed_login ),\n\t\t\t\tuser_enumeration: !!( ev && ev.user_enumeration ),\n\t\t\t};\n\t\t},\n\n\t\tcheckUrlHash() {\n\t\t\tconst hash = window.location.hash || '';\n\t\t\t// Be tolerant: Vue-router may append / transform the hash.\n\t\t\t// We only care that the inner page is Slack/Webhook settings.\n\t\t\tconst isSlack = hash.includes( 'notifications-slack-settings' );\n\t\t\tconst isWebhook = hash.includes( 'notifications-webhook-settings' );\n\t\t\tif ( isSlack ) {\n\t\t\t\tthis.showSettings = true;\n\t\t\t\tthis.settingsChannel = 'slack';\n\t\t\t\tthis.syncSettingsUrlDraft();\n\t\t\t} else if ( isWebhook ) {\n\t\t\t\tthis.showSettings = true;\n\t\t\t\tthis.settingsChannel = 'webhook';\n\t\t\t\tthis.syncSettingsUrlDraft();\n\t\t\t} else {\n\t\t\t\tthis.showSettings = false;\n\t\t\t\tif ( hash === '' || hash === '#' ) {\n\t\t\t\t\tconst baseUrl = window.location.href.split( '#' )[0] + '#/notifications';\n\t\t\t\t\tif ( history.pushState ) {\n\t\t\t\t\t\thistory.replaceState( null, null, baseUrl );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tupdateUrlHash( hash ) {\n\t\t\tif ( history.pushState ) {\n\t\t\t\tconst newHash = hash.startsWith( '#' ) ? hash : '#' + hash;\n\t\t\t\tconst newUrl = window.location.href.split( '#' )[0] + newHash;\n\t\t\t\thistory.pushState( null, null, newUrl );\n\t\t\t\twindow.dispatchEvent( new HashChangeEvent( 'hashchange' ) );\n\t\t\t} else {\n\t\t\t\twindow.location.hash = hash;\n\t\t\t}\n\t\t},\n\n\t\tgoBack() {\n\t\t\tthis.showSettings = false;\n\t\t\tconst target = window.location.href.split( '#' )[0] + '#/notifications';\n\t\t\tif ( history.pushState ) {\n\t\t\t\thistory.pushState( null, null, target );\n\t\t\t\twindow.dispatchEvent( new HashChangeEvent( 'hashchange' ) );\n\t\t\t} else {\n\t\t\t\twindow.location.hash = '#/notifications';\n\t\t\t}\n\t\t},\n\n\t\tsyncSettingsUrlDraft() {\n\t\t\tconst url = 'slack' === this.settingsChannel\n\t\t\t\t? ( this.slackConfigData.url || '' )\n\t\t\t\t: ( this.webhookConfigData.url || '' );\n\t\t\tthis.settingsUrlDraft = url;\n\t\t},\n\n\t\tapplyUrlDraftToConfig() {\n\t\t\tconst url = String( this.settingsUrlDraft || '' ).trim();\n\t\t\tif ( 'slack' === this.settingsChannel ) {\n\t\t\t\tthis.slackConfigData = { ...this.slackConfigData, url };\n\t\t\t} else {\n\t\t\t\tthis.webhookConfigData = { ...this.webhookConfigData, url };\n\t\t\t}\n\t\t},\n\n\t\tasync loadNotificationSettings() {\n\t\t\tthis.isLoadingSettings = true;\n\t\t\tif ( ! this.has_pro ) {\n\t\t\t\tthis.isLoadingSettings = false;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst response = await axios.get( 'aio-login-pro/notifications/get-settings' );\n\t\t\t\tif ( response.data && response.data.success && response.data.data ) {\n\t\t\t\t\tconst d = response.data.data;\n\t\t\t\t\tif ( d.slack ) {\n\t\t\t\t\t\tthis.slackEnabled = !! d.slack.enabled;\n\t\t\t\t\t\tthis.slackConfigData = { url: d.slack.url || '' };\n\t\t\t\t\t\tif ( d.slack.events ) {\n\t\t\t\t\t\t\tthis.slackEvents = this.normalizeEvents( d.slack.events );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( d.webhook ) {\n\t\t\t\t\t\tthis.webhookEnabled = !! d.webhook.enabled;\n\t\t\t\t\t\tthis.webhookConfigData = { url: d.webhook.url || '' };\n\t\t\t\t\t\tif ( d.webhook.events ) {\n\t\t\t\t\t\t\tthis.webhookEvents = this.normalizeEvents( d.webhook.events );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( this.showSettings ) {\n\t\t\t\t\t\tthis.syncSettingsUrlDraft();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch ( e ) {\n\t\t\t\tconsole.error( 'Error loading notification settings:', e );\n\t\t\t} finally {\n\t\t\t\tthis.isLoadingSettings = false;\n\t\t\t}\n\t\t},\n\n\t\tpayloadFromState() {\n\t\t\treturn {\n\t\t\t\tslack: {\n\t\t\t\t\tenabled: this.slackEnabled,\n\t\t\t\t\turl: this.slackConfigData.url || '',\n\t\t\t\t\tevents: {\n\t\t\t\t\t\tlockout: true,\n\t\t\t\t\t\tfailed_login: !! this.slackEvents.failed_login,\n\t\t\t\t\t\tuser_enumeration: !! this.slackEvents.user_enumeration,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\twebhook: {\n\t\t\t\t\tenabled: this.webhookEnabled,\n\t\t\t\t\turl: this.webhookConfigData.url || '',\n\t\t\t\t\tevents: {\n\t\t\t\t\t\tlockout: true,\n\t\t\t\t\t\tfailed_login: !! this.webhookEvents.failed_login,\n\t\t\t\t\t\tuser_enumeration: !! this.webhookEvents.user_enumeration,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\n\t\tasync persistNotifications( message ) {\n\t\t\ttry {\n\t\t\t\tawait axios.post( 'aio-login-pro/notifications/save-settings', this.payloadFromState() );\n\t\t\t\tif ( message ) {\n\t\t\t\t\tthis.snackbar.message = message;\n\t\t\t\t\tthis.snackbar.show = true;\n\t\t\t\t}\n\t\t\t} catch ( e ) {\n\t\t\t\tconsole.error( 'Error saving notification settings:', e );\n\t\t\t\tthis.snackbar.message = 'Could not save settings. Please try again.';\n\t\t\t\tthis.snackbar.show = true;\n\t\t\t}\n\t\t},\n\n\t\thandleSlackToggle( on ) {\n\t\t\tif ( ! this.has_pro || this.isLoadingSettings ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.slackEnabled = on;\n\t\t\tthis.persistNotifications( on ? 'Slack notifications enabled.' : 'Slack notifications disabled.' );\n\t\t},\n\n\t\thandleWebhookToggle( on ) {\n\t\t\tif ( ! this.has_pro || this.isLoadingSettings ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.webhookEnabled = on;\n\t\t\tthis.persistNotifications( on ? 'Webhook notifications enabled.' : 'Webhook notifications disabled.' );\n\t\t},\n\n\t\tshowSlackSettings() {\n\t\t\tif ( ! this.has_pro ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.settingsChannel = 'slack';\n\t\t\tthis.showSettings = true;\n\t\t\tthis.syncSettingsUrlDraft();\n\t\t\tthis.updateUrlHash( HASH_SLACK );\n\t\t},\n\n\t\tshowWebhookSettings() {\n\t\t\tif ( ! this.has_pro ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.settingsChannel = 'webhook';\n\t\t\tthis.showSettings = true;\n\t\t\tthis.syncSettingsUrlDraft();\n\t\t\tthis.updateUrlHash( HASH_WEBHOOK );\n\t\t},\n\n\t\thandleSettingsToggle( on ) {\n\t\t\tif ( ! this.has_pro ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( 'slack' === this.settingsChannel ) {\n\t\t\t\tthis.slackEnabled = on;\n\t\t\t} else {\n\t\t\t\tthis.webhookEnabled = on;\n\t\t\t}\n\t\t},\n\n\t\tconnectWithSlack() {\n\t\t\tif ( ! this.has_pro ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( ! this.slackConnectUrl ) {\n\t\t\t\tthis.snackbar.message = 'Slack connection is not available. Open the configuration guide or contact support.';\n\t\t\t\tthis.snackbar.show = true;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\twindow.location.href = this.slackConnectUrl;\n\t\t},\n\n\t\tasync saveAllNotificationSettings() {\n\t\t\tif ( ! this.has_pro ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.applyUrlDraftToConfig();\n\t\t\tthis.saving = true;\n\t\t\ttry {\n\t\t\t\tconst response = await axios.post( 'aio-login-pro/notifications/save-settings', this.payloadFromState() );\n\t\t\t\tconst msg = ( response.data && response.data.message )\n\t\t\t\t\t? response.data.message\n\t\t\t\t\t: 'Settings saved successfully.';\n\t\t\t\tthis.snackbar.message = msg;\n\t\t\t\tthis.snackbar.show = true;\n\t\t\t} catch ( e ) {\n\t\t\t\tconsole.error( 'Error saving notification settings:', e );\n\t\t\t\tthis.snackbar.message = 'Could not save settings. Please try again.';\n\t\t\t\tthis.snackbar.show = true;\n\t\t\t} finally {\n\t\t\t\tthis.saving = false;\n\t\t\t}\n\t\t},\n\n\t\thandleSnackbarClose() {\n\t\t\tthis.snackbar.show = false;\n\t\t},\n\t\thandleProFeatureClick() {\n\t\t\tlet p = this.$parent;\n\t\t\twhile (p) {\n\t\t\t\tif ('popup' in p && typeof p.popup === 'boolean') {\n\t\t\t\t\tp.popup = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tp = p.$parent;\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n.notifications-intro {\n\tcolor: #4a5568;\n\tfont-size: 15px;\n\tline-height: 1.5;\n\tmargin: 0 0 20px;\n\tmax-width: 640px;\n}\n\n.aio-login-pro__social-login {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: 20px;\n}\n\n.aio-login-locked-content {\n\tfilter: blur(1px);\n\tpointer-events: none;\n\tuser-select: none;\n}\n\n.aio-login-t-content-overflow {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n\tbackground: rgba(255, 255, 255, 0.35);\n\tbackdrop-filter: blur(0.5px);\n\tz-index: 100;\n\tcursor: pointer;\n}\n\n.notifications-settings-view {\n\twidth: 100%;\n\tmax-width: none;\n}\n\n.notifications-settings-header {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: flex-start;\n\tgap: 24px;\n\tmargin-bottom: 8px;\n\tpadding-bottom: 24px;\n\tborder-bottom: 1px solid #ebe8eb;\n}\n\n.notifications-settings-header-brand {\n\tdisplay: flex;\n\talign-items: flex-start;\n\tgap: 16px;\n\tmin-width: 0;\n}\n\n.channel-settings-icon {\n\twidth: 48px;\n\theight: 48px;\n\tflex-shrink: 0;\n}\n\n.notifications-settings-header-text h2 {\n\tmargin: 0 0 8px;\n\tfont-size: 24px;\n\tfont-weight: 600;\n\tcolor: #404280;\n}\n\n.notifications-settings-subtitle {\n\tmargin: 0;\n\tfont-size: 14px;\n\tline-height: 1.5;\n\tcolor: #606c80;\n\tmax-width: 520px;\n}\n\n.notifications-back-btn {\n\tflex-shrink: 0;\n\tpadding: 8px 16px;\n\tfont-size: 14px;\n\tfont-weight: 500;\n\tcolor: #404280;\n\tbackground: #fff;\n\tborder: 1px solid #d1d5db;\n\tborder-radius: 6px;\n\tcursor: pointer;\n\ttransition: background 0.15s, border-color 0.15s;\n}\n\n.notifications-back-btn:hover {\n\tbackground: #f9fafb;\n\tborder-color: #9ca3af;\n}\n\n.notifications-settings-body {\n\tpadding-top: 8px;\n}\n\n.notifications-form-row {\n\tdisplay: grid;\n\tgrid-template-columns: minmax(180px, 260px) 1fr;\n\tgap: 16px 40px;\n\talign-items: start;\n\tpadding: 22px 0;\n\tborder-bottom: 1px solid #f0eef0;\n}\n\n.notifications-form-row--events {\n\talign-items: flex-start;\n}\n\n.notifications-form-label {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 4px;\n\tfont-size: 14px;\n\tfont-weight: 600;\n\tcolor: #404280;\n\tpadding-top: 6px;\n}\n\n.notifications-form-field {\n\tmin-width: 0;\n}\n\n.notifications-field-hint {\n\tmargin: 10px 0 0;\n\tfont-size: 13px;\n\tline-height: 1.5;\n\tcolor: #606c80;\n\tmax-width: 640px;\n}\n\n.notifications-slack-url-row {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-items: center;\n\tgap: 12px;\n\tmax-width: 720px;\n}\n\n.notifications-slack-url-row :deep(.regular-text) {\n\tflex: 1 1 220px;\n\tmin-width: 180px;\n\tmax-width: 100%;\n}\n\n.notifications-connect-slack {\n\tborder-color: #9516df !important;\n\tbackground-color: #9416de !important;\n\tcolor: #fff !important;\n\tpadding: 6px 16px !important;\n\theight: auto !important;\n\tline-height: 1.5 !important;\n\tborder-radius: 4px !important;\n\tcursor: pointer;\n\twhite-space: nowrap;\n}\n\n.notifications-connect-slack:hover:not(:disabled) {\n\tfilter: brightness(1.05);\n}\n\n.notifications-connect-slack:disabled {\n\topacity: 0.6;\n\tcursor: not-allowed;\n}\n\n.notifications-guide-line {\n\tmargin: 12px 0 0;\n\tfont-size: 13px;\n\tcolor: #606c80;\n}\n\n.notifications-guide-link {\n\tcolor: #6e16df;\n\ttext-decoration: none;\n\tfont-weight: 500;\n\tmargin-left: 4px;\n}\n\n.notifications-guide-link:hover {\n\ttext-decoration: underline;\n}\n\n.notifications-external-icon {\n\tfont-size: 12px;\n\tmargin-left: 2px;\n\topacity: 0.85;\n}\n\n.notifications-events-list {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 14px;\n}\n\n.notifications-checkbox-row {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 8px;\n\tfont-size: 14px;\n\tcolor: #404280;\n\tcursor: pointer;\n\tmargin: 0;\n}\n\n.notifications-checkbox {\n\twidth: 18px;\n\theight: 18px;\n\tappearance: none;\n\t-webkit-appearance: none;\n\t-moz-appearance: none;\n\tborder: 1.5px solid #b8c1d1;\n\tborder-radius: 4px;\n\tbackground: #fff;\n\tbackground-image: none !important;\n\tcursor: pointer;\n\tflex-shrink: 0;\n\tdisplay: inline-block;\n\tposition: relative;\n\ttransition: background-color 0.2s ease, border-color 0.2s ease;\n\tvertical-align: middle;\n\toutline: none;\n\tbox-shadow: none;\n}\n\n.notifications-checkbox::before,\n.notifications-checkbox:checked::before,\n.notifications-checkbox:disabled::before {\n\tcontent: none !important;\n\tdisplay: none !important;\n\tbackground: none !important;\n}\n\n.notifications-checkbox:checked {\n\tbackground: #9516df;\n\tborder-color: #9516df;\n}\n\n.notifications-checkbox:checked::after {\n\tcontent: '';\n\tposition: absolute;\n\tleft: 5px;\n\ttop: 1px;\n\twidth: 4px;\n\theight: 9px;\n\tborder: solid #fff;\n\tborder-width: 0 2px 2px 0;\n\ttransform: rotate(45deg);\n\tpointer-events: none;\n}\n\n.notifications-checkbox:disabled {\n\tcursor: not-allowed;\n\topacity: 1;\n}\n\n.notifications-checkbox--locked {\n\topacity: 0.85;\n}\n\n.toggle-switch.disabled {\n\topacity: 0.6;\n\tcursor: not-allowed;\n\tpointer-events: none;\n}\n\n.submit {\n\tmargin-top: 32px;\n\tpadding-top: 24px;\n\tborder-top: 1px solid #ebe8eb;\n}\n\n.notifications-save-btn {\n\tpadding: 10px 22px !important;\n\tfont-size: 14px !important;\n\tline-height: 1.5 !important;\n\theight: auto !important;\n\tmin-width: 160px;\n}\n\n.submit .button.aio-login__primary {\n\tborder-color: #9516df;\n\tbackground-color: #9416de;\n\tcolor: #fff;\n}\n\n.submit .button.aio-login__primary:hover:not(:disabled) {\n\tbackground-color: #7a12c4;\n\tcolor: #fff;\n}\n\n.submit .button:disabled {\n\topacity: 0.65;\n\tcursor: not-allowed;\n}\n\n.notifications-skeleton {\n\tdisplay: block;\n\tborder-radius: 6px;\n\tbackground: linear-gradient( 90deg, #f2f4f8 25%, #e7ebf3 50%, #f2f4f8 75% );\n\tbackground-size: 200% 100%;\n\tanimation: notifications-skeleton-shimmer 1.3s ease-in-out infinite;\n}\n\n.notifications-skeleton--label {\n\twidth: 150px;\n\theight: 16px;\n}\n\n.notifications-skeleton--toggle {\n\twidth: 52px;\n\theight: 28px;\n}\n\n.notifications-skeleton--hint {\n\tmargin-top: 12px;\n\twidth: 320px;\n\tmax-width: 100%;\n\theight: 12px;\n}\n\n.notifications-skeleton--hint-wide {\n\twidth: 440px;\n}\n\n.notifications-skeleton--input {\n\twidth: 100%;\n\tmax-width: 520px;\n\theight: 40px;\n}\n\n.notifications-skeleton--checkbox {\n\twidth: 260px;\n\tmax-width: 100%;\n\theight: 18px;\n}\n\n@keyframes notifications-skeleton-shimmer {\n\t0% {\n\t\tbackground-position: 200% 0;\n\t}\n\t100% {\n\t\tbackground-position: -200% 0;\n\t}\n}\n\n@media (max-width: 600px) {\n\t.notifications-form-row {\n\t\tgrid-template-columns: 1fr;\n\t\tgap: 8px;\n\t}\n\n\t.notifications-settings-header {\n\t\tflex-direction: column;\n\t\talign-items: stretch;\n\t}\n\n\t.notifications-back-btn {\n\t\talign-self: flex-start;\n\t}\n}\n</style>\n","<template>\n\t<div>\n\t\t<aio-login-header class=\"mb-25\">\n\t\t\t<template v-slot:logo>\n\t\t\t\t<img class=\"aio-login-header-img\" :src=\"assets_url + 'images/dashboard-logo.png'\" alt=\"logo\">\n\t\t\t</template>\n\t\t\t<template v-slot:version>\n\t\t\t\t<div class=\"aio-login-header-version\">\n\t\t\t\t\t<span class=\"aio-login-header-version__badge aio-login-header-version__badge--free\">\n\t\t\t\t\t\tFree v{{ version }}\n\t\t\t\t\t</span>\n\t\t\t\t\t<span\n\t\t\t\t\t\tv-if=\"show_pro_version\"\n\t\t\t\t\t\tclass=\"aio-login-header-version__badge aio-login-header-version__badge--pro\"\n\t\t\t\t\t>\n\t\t\t\t\t\tPro v{{ pro_version }}\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t<template v-slot:actions>\n\t\t\t</template>\n\t\t</aio-login-header>\n\n\t\t<div class=\"container\">\n\n\t\t\t<aio-login-tabs\n\t\t\t\t:assets-url=\"assets_url\"\n\t\t\t\t:tabs=\"tabs\"\n\t\t\t></aio-login-tabs>\n\n\t\t\t<div class=\"aio-login__container\">\n\n\t\t\t\t<div v-if=\"hasSubTabs()\">\n\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"aio-login-pro-feature\"\n\t\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t\t'aio-login-pro-overlay': is_two_factor_locked,\n\t\t\t\t\t\t\t'aio-login-subtabs-locked': is_two_factor_locked\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t@click=\"is_two_factor_locked ? openProPopup() : null\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<aio-login-sub-tabs\n\t\t\t\t\t\t\t:sub-tabs=\"sub_tabs\"\n\t\t\t\t\t\t\t:class=\"{ 'aio-login-sub-tabs--locked': is_two_factor_locked }\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t</aio-login-sub-tabs>\n\t\t\t\t\t</div>\n\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"aio-login__content-wrapper\" style=\"position: relative;\">\n\t\t\t\t\t<div v-if=\"hasSubTabs()\">\n\t\t\t\t\t\t<router-view></router-view>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div v-else>\n\t\t\t\t\t\t<router-view v-if=\"isTwoFactor()\"></router-view>\n\n\t\t\t\t\t\t<aio-login-dashboard\n\t\t\t\t\t\t\tv-if=\"isDashboard()\"\n\t\t\t\t\t\t></aio-login-dashboard>\n\n\t\t\t\t\t\t<aio-login-temp-access\n\t\t\t\t\t\t\tv-if=\"isTempAccess()\"\n\t\t\t\t\t\t></aio-login-temp-access>\n\n\t\t\t\t\t\t<aio-login-social-login-main\n\t\t\t\t\t\t\tv-if=\"isSocialLogin()\"\n\t\t\t\t\t\t></aio-login-social-login-main>\n\n\t\t\t\t\t\t<aio-login-integrations\n\t\t\t\t\t\t\tv-if=\"isIntegrations()\"\n\t\t\t\t\t\t></aio-login-integrations>\n\n\t\t\t\t\t\t<aio-login-getpro\n\t\t\t\t\t\t\tv-if=\"isGetPro()\"\n\t\t\t\t\t\t></aio-login-getpro>\n\t\t\t\t\t</div>\n\n\t\t\t\t</div>\n\n\t\t\t</div>\n\n\t\t\t<div v-if=\"! hasSubTabs() && isDashboard()\" class=\"container\">\n\t\t\t\t<aio-login-recent-activity class=\"mt-25\"></aio-login-recent-activity>\n\t\t\t\t<aio-login-dashboard-docs></aio-login-dashboard-docs>\n\t\t\t</div>\n\n\t\t</div>\n\n\t\t<aio-login-pro-popup v-if=\"popup\" v-on:close-popup=\"closePopup\" />\n\t</div>\n</template>\n\n<script>\n\nexport default {\n\tname: 'aio-login-app',\n\n\tdata: () => ( {\n\t\tversion: window.aio_login__app_object.version,\n\t\tpro_version: window.aio_login__app_object.pro_version || '',\n\t\tassets_url: window.aio_login__app_object.assets_url,\n\t\ttabs: [],\n\t\tsub_tabs: [],\n\t\tpopup: false,\n\t\tcurrent_is_pro: window.aio_login__app_object.has_pro === 'true' || window.aio_login__app_object.has_pro === true,\n\t} ),\n\n\tcomputed: {\n\t\tshow_pro_version() {\n\t\t\treturn this.has_pro_enabled && !!this.pro_version;\n\t\t},\n\n\t\thas_pro_enabled() {\n\t\t\treturn window.aio_login__app_object.has_pro === 'true' || window.aio_login__app_object.has_pro === true;\n\t\t},\n\n\t\tis_two_factor_locked() {\n\t\t\treturn this.getActiveTab() === '2fa' && ! this.has_pro_enabled;\n\t\t},\n\t},\n\n\twatch: {\n\t\t$route() {\n\t\t\tthis.syncCurrentTabAccess();\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Active router path is /{sub-tab-slug} for tabbed sections (e.g. /password-strenght-checker).\n\t\t */\n\t\tgetActiveSubTabSlug() {\n\t\t\tif ( typeof this.$route === 'undefined' || ! this.$route.path ) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\treturn String( this.$route.path ).replace( /^\\/+|\\/+$/g, '' );\n\t\t},\n\n\t\tgetActiveSubTabConfig() {\n\t\t\tif ( ! this.sub_tabs.length ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tlet slug = this.getActiveSubTabSlug();\n\t\t\tif ( ! slug && this.sub_tabs[0] && this.sub_tabs[0].slug ) {\n\t\t\t\tslug = this.sub_tabs[0].slug;\n\t\t\t}\n\t\t\tif ( ! slug ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn this.sub_tabs.find( ( st ) => st.slug === slug ) || null;\n\t\t},\n\n\t\t/**\n\t\t * \"Unlocked\" content uses current_is_pro === true. Plan-locked main tab or sub-tab => false (blur overlay).\n\t\t */\n\t\tsyncCurrentTabAccess() {\n\t\t\tconst activeTab = this.getActiveTabConfig();\n\t\t\tif ( activeTab && activeTab['is-pro'] === true ) {\n\t\t\t\tthis.current_is_pro = false;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( this.hasSubTabs() ) {\n\t\t\t\tconst sub = this.getActiveSubTabConfig();\n\t\t\t\tif ( sub && sub['is-pro'] === true ) {\n\t\t\t\t\tthis.current_is_pro = false;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.current_is_pro = true;\n\t\t},\n\n\t\tgetActiveTabConfig() {\n\t\t\tconst activeSlug = this.getActiveTab();\n\t\t\treturn this.tabs.find((tab) => tab.slug === activeSlug) || null;\n\t\t},\n\n\t\tgetTabs() {\n\t\t\tthis.tabs = Object.values( window.aio_login__object.tabs );\n\t\t\tthis.getSubTabs();\n\t\t\tthis.syncCurrentTabAccess();\n\t\t},\n\n\t\tgetSubTabs() {\n\t\t\tthis.sub_tabs = this.tabs.filter( tab => tab.slug === this.getActiveTab() );\n\t\t\ttry {\n\t\t\t\tthis.sub_tabs = Object.values( this.sub_tabs[0]['sub-tabs'] );\n\t\t\t} catch ( e ) {\n\t\t\t\tthis.sub_tabs = [];\n\t\t\t}\n\t\t},\n\n\t\tgetActiveTab() {\n\t\t\tvar location = window.location.href;\n\t\t\tvar url = new URL( location );\n\t\t\tif ( ! url.searchParams.get( 'tab' ) ) {\n\t\t\t\treturn 'dashboard';\n\t\t\t}\n\t\t\treturn url.searchParams.get( 'tab' );\n\t\t},\n\n\t\thasSubTabs() {\n\t\t\treturn this.sub_tabs.length > 0;\n\t\t},\n\n\t\tisDashboard() {\n\t\t\treturn this.getActiveTab() === 'dashboard';\n\t\t},\n\n\t\tisTempAccess() {\n\t\t\treturn this.getActiveTab() === 'temp-access';\n\t\t},\n\n\t\tisSocialLogin() {\n\t\t\treturn this.getActiveTab() === 'social-login';\n\t\t},\n\n\t\tisIntegrations() {\n\t\t\treturn this.getActiveTab() === 'integrations';\n\t\t},\n\n\t\tisGetPro() {\n\t\t\treturn this.getActiveTab() === 'getpro';\n\t\t},\n\n\t\tisTwoFactor() {\n\t\t\treturn this.getActiveTab() === '2fa';\n\t\t},\n\n\t\tclosePopup() {\n\t\t\tthis.popup = false;\n\t\t},\n\n\t\topenProPopup() {\n\t\t\tthis.popup = true;\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.getTabs();\n\n\t\tdocument.body.addEventListener( 'click', function ( e ) {\n\t\t\tif ( e.target.closest( '.aio-login__popup-wrapper' ) && ! e.target.closest( '.aio-login__popup-container' ) ) {\n\t\t\t\tthis.popup = false;\n\t\t\t}\n\t\t}.bind( this ) );\n\t}\n}\n</script>\n\n<style scoped>\n.aio-login-header-img {\n\tmargin-top: 15px;\n}\n\n.aio-login-header-version {\n\tmin-height: 100px;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 8px;\n}\n\n.aio-login-header-version__badge {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tpadding: 6px 10px;\n\tborder-radius: 999px;\n\tfont-size: 12px;\n\tfont-weight: 700;\n\tline-height: 1;\n\tletter-spacing: 0.01em;\n}\n\n.aio-login-header-version__badge--free {\n\tcolor: #4a5568;\n\tbackground: #edf2f7;\n\tborder: 1px solid #d5dee9;\n}\n\n.aio-login-header-version__badge--pro {\n\tcolor: #ffffff;\n\tbackground: linear-gradient(180deg, #9516df 0%, #510c79 100%);\n\tborder: 1px solid #7a27bf;\n}\n\n.aio-login__container {\n\tbackground: #fff;\n\tborder-radius: 0 8px 8px 8px;\n}\n\n.aio-login__content-wrapper {\n\tpadding: 25px;\n}\n\n.aio-login-subtabs-locked {\n\tposition: relative;\n}\n\n.aio-login-subtabs-locked::after {\n\tcontent: '';\n\tposition: absolute;\n\tinset: 0;\n\tbackground: rgba(255, 255, 255, 0.38);\n\tbackdrop-filter: blur(1px);\n\tz-index: 20;\n\tcursor: pointer;\n}\n\n.aio-login-sub-tabs--locked {\n\tpointer-events: none;\n\topacity: 0.45;\n}\n\n</style>","<template>\n\t<div class=\"aio-login__header-container\">\n\t\t<div class=\"container clearfix\">\n\t\t\t<div class=\"float-left\">\n\t\t\t\t<slot name=\"logo\"></slot>\n\t\t\t</div>\n\t\t\t<div class=\"float-right\" style=\"margin-left: 20px;\">\n\t\t\t\t<slot name=\"version\"></slot>\n\t\t\t</div>\n\t\t\t<div class=\"float-right\">\n\t\t\t\t<slot name=\"actions\"></slot>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'aio-login-header'\n}\n</script>\n\n<style scoped>\n.aio-login__header-container {\n\tbackground: #fff;\n\theight: 100px;\n}\n</style>","<template>\n\t<div>\n\t\t<a\n\t\t\tv-for=\"( tab, t ) in tabs\"\n\t\t\t:href=\"getHref( tab )\"\n\t\t\t:class=\"getClasses( tab )\"\n\t\t\t:key=\"t\"\n\t\t>\n\t\t\t<img\n\t\t\t\tv-if=\"'getpro' !== tab.slug\"\n\t\t\t\tclass=\"aio-login__tab-icon\"\n\t\t\t\talt=\"\"\n\t\t\t\t:src=\"getSrc( tab )\"\n\t\t\t/>\n\t\t\t{{ tab.title }}\n\t\t\t<img\n\t\t\t\tv-if=\"'getpro' === tab.slug\"\n\t\t\t\tclass=\"aio-login__getpro-crown\"\n\t\t\t\talt=\"\"\n\t\t\t\t:src=\"assetsUrl + 'images/pro-crown.svg'\"\n\t\t\t/>\n\t\t\t<span class=\"aio-login__pro-tab\" v-if=\"tab['is-pro'] && ! hasPro\">\n\t\t\t\tPRO\n\t\t\t</span>\n\t\t</a>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'aio-login-tabs',\n\tprops: {\n\t\ttabs: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\tassetsUrl: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata: ( vm ) => ( {\n\t\ttest_tab: {},\n\t} ),\n\n\tcomputed: {\n\t\thasPro() {\n\t\t\tconst h = window.aio_login__app_object && window.aio_login__app_object.has_pro;\n\t\t\treturn h === 'true' || h === true;\n\t\t},\n\t},\n\n\twatch: {\n\t\ttest_tab() {\n\t\t\t// Main tab + active sub-tab (router) both drive overlay; keep logic in aio-login-app.\n\t\t\tif ( this.$parent && typeof this.$parent.syncCurrentTabAccess === 'function' ) {\n\t\t\t\tthis.$parent.syncCurrentTabAccess();\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\tgetHref( tab ) {\n\t\t\tvar location = window.aio_login__app_object.admin_url;\n\t\t\treturn location + '&tab=' + tab.slug;\n\t\t},\n\n\t\tactiveTab( tab ) {\n\t\t\tvar location = window.location.href;\n\t\t\tvar url = new URL( location );\n\t\t\tif ( ! url.searchParams.get( 'tab' ) ) {\n\t\t\t\treturn tab.slug === 'dashboard';\n\t\t\t}\n\t\t\treturn url.searchParams.get( 'tab' ) === tab.slug;\n\t\t},\n\n\t\tgetClasses( tab ) {\n\t\t\tif ( this.activeTab( tab ) ) {\n\t\t\t\tthis.test_tab = tab;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t'active': this.activeTab( tab ),\n\t\t\t\t'aio-login__link-wrapper': true,\n\t\t\t\t'getpro': 'getpro' === tab.slug,\n\t\t\t}\n\t\t},\n\n\t\tgetSrc( tab ) {\n\t\t\tif ( 'social-login' === tab.slug || 'integrations' === tab.slug ) {\n\t\t\t\treturn this.assetsUrl + `images/icons/${ tab.icon }${ this.activeTab( tab ) ? '-active' : '' }.svg`;\n\t\t\t}\n\t\t\treturn this.assetsUrl + `images/icons/${ tab.icon }${ this.activeTab( tab ) ? '-active' : '' }.png`;\n\t\t},\n\n\t\tisset( arg ) {\n\t\t\treturn typeof arg !== 'undefined';\n\t\t}\n\t}\n}\n</script>\n\n<style scoped>\n.aio-login__link-wrapper {\n\tpadding: 14px 20px;\n\tcolor: #7691B2;\n\tfont-weight: 600;\n\tfont-size: 16px;\n\tline-height: 1.25;\n\ttext-decoration: none;\n\tbackground: #F8F8F8;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 8px;\n\tmargin-right: 2px;\n\tborder-radius: 4px 4px 0 0;\n\tvertical-align: bottom;\n}\n\n.aio-login__tab-icon {\n\tdisplay: block;\n\tflex-shrink: 0;\n\talign-self: center;\n\tmax-height: 24px;\n\twidth: auto;\n\theight: auto;\n\tobject-fit: contain;\n}\n\n.aio-login__link-wrapper.active {\n\tcolor: #9516DF;\n\tbackground: #ffffff;\n}\n\n.aio-login__pro-tab {\n\tdisplay: inline-flex;\n    align-items: center;\n    justify-content: center;\n    box-sizing: border-box;\n    min-width: 34px;\n    padding: 5px 6px;\n    margin: 0;\n    background: #9516DF;\n    border-radius: 3px;\n    color: #FFFFFF;\n    font-family: Figtree, sans-serif;\n    font-size: 12px;\n    font-weight: 700;\n    line-height: 1;\n    letter-spacing: 0.02em;\n    text-transform: uppercase;\n    /* height: 18px; */\n    flex-shrink: 0;\n}\n\n.aio-login__link-wrapper.getpro {\n\tbackground-image: linear-gradient(180deg, #9516df 0%, #510c79 100%);\n\tcolor: #fff;\n\tgap: 6px;\n\tfont-weight: 700;\n}\n\n.aio-login__getpro-crown {\n\twidth: 17px;\n\theight: 12px;\n\tobject-fit: contain;\n}\n\n</style>","<template>\n\t<div class=\"aio-login__subtabs-container\">\n\t\t<div class=\"aio-login__subtabs-links\">\n\t\t\t<router-link\n\t\t\t\tv-for=\"(subTab, index) in subTabs\"\n\t\t\t\t:key=\"index\"\n\t\t\t\t:to=\"subTab.slug\"\n\t\t\t\tclass=\"aio-login__subtab\"\n\t\t\t\tactive-class=\"active\"\n\t\t\t>\n\t\t\t\t{{ subTab.title }}\n\t\t\t\t<span class=\"aio-login__pro-tab\" v-if=\"subTab['is-pro'] && ! hasPro\">PRO</span>\n\t\t\t</router-link>\n\t\t</div>\n\t\t<div class=\"aio-login__subtabs-actions\">\n\t\t\t<slot name=\"actions\"></slot>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'aio-login-sub-tabs',\n\n\tprops: {\n\t\tsubTabs: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\thasPro() {\n\t\t\tconst h = window.aio_login__app_object && window.aio_login__app_object.has_pro;\n\t\t\treturn h === 'true' || h === true;\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n.aio-login__subtabs-container {\n\theight: 48px;\n\tborder-bottom: 1px solid #e8e8e8;\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n\tpadding-right: 25px;\n}\n\n.aio-login__subtabs-actions {\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.aio-login__subtab {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 8px;\n\tpadding: 13px 24px;\n\tcolor: #7691B2;\n\tfont-weight: 600;\n\tfont-size: 16px;\n\ttext-decoration: none;\n\tline-height: 1.25;\n}\n\n.aio-login__subtab.active {\n\tborder-bottom: 2px solid #9516DF;\n\tcolor: #9516DF;\n}\n\n.aio-login__pro-tab {\n\tdisplay: inline-flex;\n    align-items: center;\n    justify-content: center;\n    box-sizing: border-box;\n    min-width: 34px;\n    padding: 5px 6px;\n    margin: 0;\n    background: #9516DF;\n    border-radius: 3px;\n    color: #FFFFFF;\n    font-family: Figtree, sans-serif;\n    font-size: 12px;\n    font-weight: 700;\n    line-height: 1;\n    letter-spacing: 0.02em;\n    text-transform: uppercase;\n    /* height: 18px; */\n    flex-shrink: 0;\n}\n</style>\n","<template>\n\t<div class=\"aio-login__cards-container\">\n\t\t<div>\n\t\t\t<aio-login-card\n\t\t\t\ttype=\"success\"\n\t\t\t\ttitle=\"Success\"\n\t\t\t></aio-login-card>\n\t\t</div>\n\t\t<div>\n\t\t\t<aio-login-card\n\t\t\t\ttype=\"failed\"\n\t\t\t\ttitle=\"Failed\"\n\t\t\t></aio-login-card>\n\t\t</div>\n\t\t<div>\n\t\t\t<aio-login-card\n\t\t\t\ttype=\"lockouts\"\n\t\t\t\ttitle=\"Lockouts\"\n\t\t\t></aio-login-card>\n\t\t</div>\n\t\t<div>\n\t\t\t<aio-login-card type=\"customize\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'aio-login-cards'\n}\n</script>\n\n<style scoped>\n.aio-login__cards-container {\n\tdisplay: grid;\n\tgrid-template-columns: 25% 25% 25% 25%;\n}\n</style>","<template>\n\t<div :class=\"container_class\">\n\t\t<div v-if=\"'customize' === type\">\n\t\t\t<div class=\"aio-login__card-content\">\n\t\t\t\t<p>\n\t\t\t\t\tCustomize your\n\t\t\t\t\t<br>\n\t\t\t\t\tWP Login\n\t\t\t\t</p>\n\t\t\t\t<p class=\"mt-40\">\n\t\t\t\t\t<a :href=\"adminURL\">Lets Go</a>\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</div>\n\t\t<div v-else>\n\t\t\t<h3 style=\"margin-bottom: 0px;\">\n\t\t\t\t{{ title }}\n\t\t\t</h3>\n\t\t\t<aio-login-days-selector\n\t\t\t\t:type=\"type\"\n\t\t\t\tv-on:update-days=\"updateDays\"\n\t\t\t></aio-login-days-selector>\n\n\t\t\t<h2>{{ count }}</h2>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'aio-login-card',\n\tprops: {\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\trequired: true\n\t\t},\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\tdefault: ''\n\t\t}\n\t},\n\n\tdata: () => ( {\n\t\tcount: 0,\n\n\t\tadminURL: ( typeof aio_login__app_object.login_customizer_url === 'string' && aio_login__app_object.login_customizer_url )\n\t\t\t? aio_login__app_object.login_customizer_url\n\t\t\t: aio_login__app_object.admin_url,\n\t} ),\n\n\tcomputed: {\n\t\tcontainer_class() {\n\t\t\treturn {\n\t\t\t\t'aio-login__card-container': true,\n\t\t\t\t'container': true,\n\t\t\t\t'container-success': 'success' === this.type,\n\t\t\t\t'container-failed': 'failed' === this.type,\n\t\t\t\t'container-lockouts': 'lockouts' === this.type,\n\t\t\t\t'container-customize': 'customize' === this.type\n\t\t\t};\n\t\t}\n\t},\n\n\tmethods: {\n\t\tupdateDays( days, type ) {\n\t\t\tthis.getCount( type, days );\n\t\t},\n\n\t\tgetCount( type, duration ) {\n\t\t\taxios.get( 'aio-login/dashboard/get-counts', {\n\t\t\t\tparams: {\n\t\t\t\t\ttype: type,\n\t\t\t\t\tduration: duration\n\t\t\t\t},\n\t\t\t} )\n\t\t\t.then( response => {\n\t\t\t\tthis.count = response.data.count;\n\t\t\t} )\n\t\t\t.catch( error => {\n\n\t\t\t} );\n\t\t},\n\t},\n\n\tmounted() {\n\t\tif ( 'customize' !== this.type ) {\n\t\t\tthis.getCount( this.type, 'today' )\n\t\t}\n\t},\n}\n</script>\n\n<style scoped>\n.aio-login__card-container {\n\tdisplay: block;\n\tborder-radius: 8px;\n\theight: 160px;\n\tposition: relative;\n\tpadding-top: 25px !important;\n\tpadding-bottom: 25px !important;\n\tmargin-right: 15px;\n}\n\n.aio-login__card-container h3 {\n\tfont-size: 18px;\n\tfont-weight: 600;\n\tline-height: 21.6px;\n}\n\n.aio-login__card-container h2 {\n\tfont-size: 32px;\n\tfont-weight: 600;\n\tposition: absolute;\n\tbottom: 0;\n\tright: 40px;\n}\n\n.container-success {\n\tcolor: #6B998F;\n\tbackground: #ECFAF7;\n}\n\n.container-success h3,\n.container-success h2 {\n\tcolor: #6B998F;\n}\n\n.container-failed {\n\tcolor: #99876B;\n\tbackground: #FAF4EB;\n}\n\n.container-failed h3,\n.container-failed h2 {\n\tcolor: #99876B;\n}\n\n.container-lockouts {\n\tcolor: #796B99;\n\tbackground: #EEEBFA;\n}\n\n.container-lockouts h3,\n.container-lockouts h2 {\n\tcolor: #796B99;\n}\n\n.container-customize {\n\tbackground-image: url( \"../../images/magic-wand-larg.png\" ), url( \"../../images/magic-wand-small.png\" ), linear-gradient( 180deg, #00cc99 0%, #00b386 100% );\n\tbackground-repeat: no-repeat;\n\tbackground-position: top left, bottom right;\n\tcolor: #fff;\n}\n\n.aio-login__card-content {\n\ttext-align: center;\n}\n\n.aio-login__card-content p {\n\tmargin-top: 35px;\n\tmargin-bottom: 20px;\n\tfont-size: 18px;\n\tfont-weight: 600;\n\tcolor: #fff;\n\tline-height: 21.6px;\n}\n\n.aio-login__card-content a {\n\tcolor: #fff;\n\tborder: 1px solid #00A27A;\n\tbackground: #00AD82;\n\tbox-shadow: 0 4px 16px 0 #00cd9a;\n\n\ttext-decoration: none;\n\n\tfont-size: 16px;\n\tfont-weight: 600;\n\tpadding: 12px 24px;\n\tborder-radius: 4px;\n}\n</style>","<template>\n\t<div :id=\"'aio-login__days-selector-' + type\" :class=\"container_class\">\n\t\t<p style=\"margin-top: 0;\" @click=\"toggleDaysSelector\">\n\t\t\t<span>{{ title }}</span>\n\t\t\t<span class=\"aio-login__selector\"></span>\n\t\t</p>\n\n\t\t<div\n\t\t\t:id=\"'days-selector-' + type + '-container'\"\n\t\t\tclass=\"aio-login__days-selector container\"\n\t\t\t:style=\"( days_selector ) ? 'display: block;' : 'display: none;'\"\n\t\t>\n\t\t\t<div>\n\t\t\t\t<label :for=\"'today-' + type\">\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\t\t:id=\"'today-' + type\"\n\t\t\t\t\t\t:name=\"'days-' + type\"\n\t\t\t\t\t\tvalue=\"today\"\n\t\t\t\t\t\t@click=\"updateDays\"\n\t\t\t\t\t\tchecked\n\t\t\t\t\t>\n\t\t\t\t\tToday\n\t\t\t\t</label>\n\t\t\t</div>\n\t\t\t<div>\n\t\t\t\t<label :for=\"'last-7-days-' + type\">\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\t\t:id=\"'last-7-days-' + type\"\n\t\t\t\t\t\t:name=\"'days-' + type\"\n\t\t\t\t\t\tvalue=\"last_7_days\"\n\t\t\t\t\t\t@click=\"updateDays\"\n\t\t\t\t\t>\n\t\t\t\t\tLast 7 days\n\t\t\t\t</label>\n\t\t\t</div>\n\t\t\t<div>\n\t\t\t\t<label :for=\"'last-14-days-' + type\">\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\t\t:id=\"'last-14-days-' + type\"\n\t\t\t\t\t\t:name=\"'days-' + type\"\n\t\t\t\t\t\tvalue=\"last_14_days\"\n\t\t\t\t\t\t@click=\"updateDays\"\n\t\t\t\t\t>\n\t\t\t\t\tLast 14 days\n\t\t\t\t</label>\n\t\t\t</div>\n\t\t\t<div>\n\t\t\t\t<label :for=\"'last-month-days-' + type\">\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\t\t:id=\"'last-month-days-' + type\"\n\t\t\t\t\t\t:name=\"'days-' + type\"\n\t\t\t\t\t\tvalue=\"last_month\"\n\t\t\t\t\t\t@click=\"updateDays\"\n\t\t\t\t\t>\n\t\t\t\t\tLast month\n\t\t\t\t</label>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'aio-login-days-selector',\n\n\tprops: {\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata: () => ( {\n\t\ttitle: 'Today',\n\t\tdays_selector: false,\n\t\tdays: {\n\t\t\t'last_month': 'Last month',\n\t\t\t'last_14_days': 'Last 14 days',\n\t\t\t'last_7_days': 'Last 7 days',\n\t\t\t'today': 'Today',\n\t\t},\n\t} ),\n\n\twatch: {\n\t\tdays_selector( value ) {\n\t\t\tif ( value ) {\n\t\t\t\tdocument.getElementById( 'days-selector-' + this.type + '-container' ).style.display = 'block';\n\t\t\t} else {\n\t\t\t\tdocument.getElementById( 'days-selector-' + this.type + '-container' ).style.display = 'none';\n\t\t\t}\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tcontainer_class() {\n\t\t\treturn {\n\t\t\t\t'aio-login__card-selector-container': true,\n\t\t\t\t'container-success': 'success' === this.type,\n\t\t\t\t'container-failed': 'failed' === this.type,\n\t\t\t\t'container-lockouts': 'lockouts' === this.type,\n\t\t\t};\n\t\t},\n\t},\n\n\tmethods: {\n\t\ttoggleDaysSelector() {\n\t\t\tthis.days_selector = !this.days_selector;\n\t\t},\n\n\t\tupdateDays( e ) {\n\t\t\tthis.title = this.days[ e.target.value ];\n\t\t\tthis.$emit( 'update-days', e.target.value, this.type )\n\t\t\tthis.days_selector = false;\n\t\t},\n\t},\n\n\tmounted() {\n\t\tdocument.addEventListener( 'click', ( event ) => {\n\t\t\tif ( ! event.target.closest( '#aio-login__days-selector-' + this.type ) ) {\n\t\t\t\tthis.days_selector = false;\n\t\t\t}\n\t\t} );\n\t}\n}\n</script>\n\n<style scoped>\n.aio-login__selector {\n\tdisplay: inline-block;\n\tmargin-left: 5px;\n\tmargin-bottom: 5px;\n\twidth: 7px;\n\theight: 7px;\n\tborder-top-width: 1px;\n\tborder-top-style: solid;\n\tborder-left-width: 1px;\n\tborder-left-style: solid;\n\ttransform: rotate( 225deg );\n}\n\n.aio-login__card-selector-container p {\n\tfont-size: 18px;\n\tfont-weight: 500;\n\tline-height: 21.6px;\n\tcursor: pointer;\n}\n\n.container-success .aio-login__selector {\n\tborder-color: #6B998F;\n}\n\n.container-failed .aio-login__selector {\n\tborder-color: #99876B;\n}\n\n.container-lockouts .aio-login__selector {\n\tborder-color: #796B99;\n}\n\n.aio-login__days-selector {\n\tposition: absolute;\n\tbackground: #fff;\n\tborder: 1px solid #ebebeb;\n\tbox-shadow: 0px 4px 16px 0px #00000014;\n\ttop: 85px;\n\tleft: 23px;\n\tborder-radius: 8px;\n\tpadding-top: 25px !important;\n\tpadding-bottom: 25px !important;\n\tz-index: 1;\n}\n\n.aio-login__days-selector label {\n\tfont-size: 16px;\n\tfont-weight: 500;\n\tcolor: #405980;\n\tline-height: 25px;\n}\n\n.aio-login__days-selector input[type=\"radio\"] {\n\twidth: 20px;\n\theight: 20px;\n\tborder-color: #9516DF;\n}\n\n.aio-login__days-selector input[type=\"radio\"]::before {\n\tbackground-color: #9516DF;\n\twidth: 12px;\n\theight: 12px;\n}\n\n</style>","<template>\n\t<div v-if=\"page_loaded\" class=\"aio-login-pro__social-login__card\">\n\t\t\t\t<!-- Configured Tag -->\n\t\t\t\t<div \n\t\t\t\t\tv-if=\"statusBadge\" \n\t\t\t\t\tclass=\"configured-tag\"\n\t\t\t\t\t:class=\"{ 'enabled': statusBadge === 'green', 'disabled': statusBadge === 'orange' }\"\n\t\t\t\t>\n\t\t\t\t\t{{ statusBadgeText }}\n\t\t\t\t</div>\n\t\t\t\t\n\t\t\t\t<!-- Top Section -->\n\t\t\t\t<div class=\"aio-login-pro__social-login__card__top\">\n\t\t\t\t\t<img :src=\"getSrc('grecaptcha')\" :alt=\"'Google reCAPTCHA'\" />\n\t\t\t\t\t<p>\n\t\t\t\t\t\t<span>Google reCAPTCHA</span>\n\t\t\t\t\t</p>\n\t\t\t\t\t<span class=\"version-badge\">v2 & v3</span>\n\t\t\t\t</div>\n\t\t\t\t<!-- Bottom Section -->\n\t\t\t\t<div class=\"aio-login-pro__social-login__card__bottom\">\n\t\t\t\t\t<label class=\"toggle-switch\">\n\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\tid=\"grecaptcha\"\n\t\t\t\t\t\t\tname=\"grecaptcha\"\n\t\t\t\t\t\t\tv-on:toggle-input=\"handleToggle\"\n\t\t\t\t\t\t\t:enabled=\"enabled\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</label>\n\t\t\t\t\t<!-- Show Configure button only if the toggle is enabled -->\n\t\t\t\t\t<button\n\t\t\t\t\t\tv-if=\"enabled\"\n\t\t\t\t\t\tclass=\"configure-btn\"\n\t\t\t\t\t\t@click=\"configureCaptcha\"\n\t\t\t\t\t\t@mouseenter=\"onHover\"\n\t\t\t\t\t\t@mouseleave=\"onLeave\"\n\t\t\t\t\t>\n\t\t\t\t\t\tConfigure\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\n\t\t<!-- Multi-step Popup -->\n\t\t<aio-login-recaptcha-popup\n\t\t\t:show=\"showPopup\"\n\t\t\t:initial-data=\"popupData\"\n\t\t\t@close=\"closePopup\"\n\t\t\t@save=\"saveSettings\"\n\t\t/>\n\t</div>\n</template>\n\n<script>\nimport tooltipContent from '../../tooltip-content.js';\n\nexport default {\n\tname: 'aio-login-captcha',\n\n\tslug: 'grecaptcha',\n\n\tprops: {\n\t\thasPro: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tenabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tconfigData: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({})\n\t\t}\n\t},\n\n\tdata: ( vm ) => ( {\n\t\ttooltipContent,\n\t\tassetsUrl: aio_login__app_object.assets_url,\n\t\tpage_loaded: false,\n\t\tshowPopup: false,\n\t\tpopupData: {},\n\t\tisHovered: false\n\t} ),\n\n\tcomputed: {\n\t\tstatusBadge() {\n\t\t\tif (this.enabled && this.hasValidKeys()) {\n\t\t\t\treturn 'green';\n\t\t\t} else if (!this.enabled && this.hasValidKeys()) {\n\t\t\t\treturn 'orange';\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\n\t\tstatusBadgeText() {\n\t\t\tif (this.statusBadge === 'green') {\n\t\t\t\treturn 'Configured';\n\t\t\t} else if (this.statusBadge === 'orange') {\n\t\t\t\treturn 'Configured';\n\t\t\t}\n\t\t\treturn '';\n\t\t}\n\t},\n\n\tmethods: {\n\t\tloadComponent() {\n\t\t\tthis.$nextTick( () => {\n\t\t\t\tthis.page_loaded = true;\n\t\t\t} );\n\t\t},\n\n\t\tgetSrc( icon ) {\n\t\t\treturn this.assetsUrl + `images/icons/${ icon }.png`;\n\t\t},\n\n\t\thasValidKeys() {\n\t\t\treturn this.configData.siteKey && this.configData.secretKey;\n\t\t},\n\n\t\thandleToggle( enabled ) {\n\t\t\tthis.$emit('toggle-captcha', enabled);\n\t\t},\n\n\t\tconfigureCaptcha() {\n\t\t\tthis.popupData = { ...this.configData };\n\t\t\tthis.showPopup = true;\n\t\t},\n\n\t\tclosePopup() {\n\t\t\tthis.showPopup = false;\n\t\t\tthis.popupData = {};\n\t\t},\n\n\t\tsaveSettings( data ) {\n\t\t\tthis.$emit('save-settings', data);\n\t\t\tthis.closePopup();\n\t\t},\n\n\t\tonHover() {\n\t\t\tthis.isHovered = true;\n\t\t},\n\n\t\tonLeave() {\n\t\t\tthis.isHovered = false;\n\t\t}\n\t},\n\n\tmounted() {\n\t\t// Always load the component since this is a free feature\n\t\tthis.page_loaded = true;\n\t}\n}\n</script>\n\n<style scoped>\n/* Exact copy of social login pro card styling */\n.configured-tag {\n  position: absolute !important;\n  top: 8px !important;\n  right: 8px !important;\n  padding: 3px 6px !important;\n  font-size: 10px !important;\n  font-weight: 700 !important;\n  border-radius: 8px !important;\n  color: white !important;\n  z-index: 999 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.3px !important;\n  line-height: 1 !important;\n  display: inline-block !important;\n  white-space: nowrap !important;\n}\n\n.configured-tag.enabled {\n  background-color: #22c55e !important; /* Green for enabled */\n  box-shadow: 0 1px 3px rgba(34, 197, 94, 0.4) !important;\n}\n\n.configured-tag.disabled {\n  background-color: #f97316 !important; /* Orange for disabled */\n  box-shadow: 0 1px 3px rgba(249, 115, 22, 0.4) !important;\n}\n\n/* Social Login Container */\n.aio-login-pro__social-login {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 20px;\n}\n\n/* Social Login Card */\n.aio-login-pro__social-login__card {\n  position: relative !important;\n  overflow: visible !important;\n  border: 1px solid #ebe8eb;\n  border-radius: 10px;\n  height: 200px;\n  width: 320px;\n  display: flex;\n  flex-direction: column;\n  justify-content: space-between;\n}\n\n/* Top Section */\n.aio-login-pro__social-login__card__top {\n  flex: 4;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  padding: 10px;\n  text-align: center;\n}\n\n.aio-login-pro__social-login__card__top img {\n  width: 48px;\n  height: 48px;\n  margin-bottom: 10px;\n}\n\n.aio-login-pro__social-login__card__top p {\n  font-size: 14px;\n  font-weight: bold;\n  margin: 0 0 5px 0;\n}\n\n.version-badge {\n  background: #f0f0f0;\n  color: #666;\n  font-size: 12px;\n  padding: 2px 8px;\n  border-radius: 12px;\n  font-weight: 500;\n}\n\n/* Bottom Section */\n.aio-login-pro__social-login__card__bottom {\n  flex: 1;\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  padding: 10px;\n  border-top: 1px solid #ebe8eb;\n}\n\n/* Configure Button */\n.configure-btn {\n  background: #f7ecfd;\n  color: #6e16df;\n  border: none;\n  border-radius: 4px;\n  font-size: 14px;\n  cursor: pointer;\n  transition: 0.3s;\n  padding: 9px 18px;\n}\n\n.configure-btn:hover {\n  background-color: #C9D2E3;\n  color: #6e16df;\n}\n</style>","<template>\r\n\t<div v-if=\"show\" class=\"popup-overlay\" @click=\"closePopup\">\r\n\t\t<div class=\"popup-content\" @click.stop>\r\n\t\t\t<div class=\"popup-header\">\r\n\t\t\t\t<div class=\"popup-header-title\">\r\n\t\t\t\t\t<img\r\n\t\t\t\t\t\t:src=\"popupHeaderIcon\"\r\n\t\t\t\t\t\talt=\"Google reCAPTCHA\"\r\n\t\t\t\t\t\tclass=\"popup-header-title__icon\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<h2 class=\"popup-header-title__text\">Google reCAPTCHA Configuration</h2>\r\n\t\t\t\t</div>\r\n\t\t\t\t<button class=\"close-btn\" @click=\"closePopup\">&times;</button>\r\n\t\t\t</div>\r\n\r\n\t\t\t<!-- Step Indicators -->\r\n\t\t\t<div class=\"popup-steps\">\r\n\t\t\t\t<div class=\"step-container\">\r\n\t\t\t\t\t<h4>Getting Started</h4>\r\n\t\t\t\t\t<div \r\n\t\t\t\t\t\tclass=\"step\" \r\n\t\t\t\t\t\t:class=\"{ active: currentStep >= 1 }\" \r\n\t\t\t\t\t\t:style=\"{ backgroundColor: currentStep >= 1 ? '#9516DF' : '#EBE8EB', color: currentStep < 1 ? '#9516DF' : 'white' }\">\r\n\t\t\t\t\t\t1\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"connector\" :style=\"{ backgroundColor: currentStep >= 2 ? '#9516DF' : '#C9D2E3' }\"></div>\r\n\t\t\t\t\r\n\t\t\t\t<div class=\"step-container\">\r\n\t\t\t\t\t<h4>Configuration</h4>\r\n\t\t\t\t\t<div \r\n\t\t\t\t\t\tclass=\"step\" \r\n\t\t\t\t\t\t:class=\"{ active: currentStep >= 2 }\" \r\n\t\t\t\t\t\t:style=\"{ backgroundColor: currentStep >= 2 ? '#9516DF' : '#EBE8EB', color: currentStep < 2 ? '#9516DF' : 'white' }\">\r\n\t\t\t\t\t\t2\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"connector\" :style=\"{ backgroundColor: currentStep >= 3 ? '#9516DF' : '#C9D2E3' }\"></div>\r\n\r\n\t\t\t\t<div class=\"step-container\">\r\n\t\t\t\t\t<h4>Settings</h4>\r\n\t\t\t\t\t<div \r\n\t\t\t\t\t\tclass=\"step\" \r\n\t\t\t\t\t\t:class=\"{ active: currentStep >= 3 }\" \r\n\t\t\t\t\t\t:style=\"{ backgroundColor: currentStep >= 3 ? '#9516DF' : '#EBE8EB', color: currentStep < 3 ? '#9516DF' : 'white' }\">\r\n\t\t\t\t\t\t3\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\r\n\t\t\t<div class=\"popup-modal-body\">\r\n\t\t\t<!-- Step 1: Getting Started -->\r\n\t\t\t<div v-if=\"currentStep === 1\" class=\"aio-login-pro__first-step\">\r\n\t\t\t\t<h4 class=\"aio-login-pro__first-step__title\">Getting Started</h4>\r\n\t\t\t\t<p class=\"aio-login-pro__first-step__content\">To protect your website from spam and bots, start by adding Google reCAPTCHA to your WordPress login page. First, register your site to generate your Site Key and Secret Key. After getting the keys, continue the setup to secure your site.</p>\r\n\t\t\t\t<h5 class=\"aio-login-pro__first-step__instruction\">Instruction:</h5>\r\n\t\t\t\t<p class=\"aio-login-pro__first-step__instructions\">1. Register your site and get the keys → <a href=\"https://www.google.com/recaptcha/admin\" target=\"_blank\" class=\"aio-login-pro__first-step__doc-link\">Click Here</a></p>\r\n\t\t\t\t<p class=\"aio-login-pro__first-step__instructions\">2. Need help creating keys? → <a href=\"https://aiologin.com/docs/wordpress-login-security/setting-up-google-recaptcha/\" target=\"_blank\" class=\"aio-login-pro__first-step__doc-link\">Click Here</a></p>\r\n\t\t\t\t<p class=\"aio-login-pro__first-step__next-step-note\">3. After getting the Google reCAPTCHA Site Key and Secret Key, click Next to input these credentials.</p>\r\n\t\t\t</div>\r\n\r\n\t\t\t<!-- Step 2: Configuration -->\r\n\t\t\t<div v-if=\"currentStep === 2\" class=\"aio-login-pro__step2\">\r\n\t\t\t\t<p class=\"aio-login-pro__step2__description\">\r\n\t\t\t\t\tEnter your credentials for Google reCAPTCHA to authenticate and configure the login process.\r\n\t\t\t\t</p>\r\n\t\t\t\t<div class=\"aio-login-pro__inline-form\">\r\n\t\t\t\t\t<div class=\"aio-login-pro__form-group\">\r\n\t\t\t\t\t\t<label for=\"recaptcha-version\" class=\"aio-login-pro__form-label\">\r\n\t\t\t\t\t\t\tChoose reCAPTCHA version:\r\n\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t<select id=\"recaptcha-version\" v-model=\"formData.version\" @change=\"onVersionChange\" class=\"aio-login-pro__form-input\">\r\n\t\t\t\t\t\t\t<option value=\"v2\">V2</option>\r\n\t\t\t\t\t\t\t<option value=\"v3\">V3</option>\r\n\t\t\t\t\t\t</select>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"aio-login-pro__inline-form\">\r\n\t\t\t\t\t<div class=\"aio-login-pro__form-group\">\r\n\t\t\t\t\t\t<label for=\"site-key\" class=\"aio-login-pro__form-label\">\r\n\t\t\t\t\t\t\tSite Key <span class=\"aio-login-pro__required\">*</span>\r\n\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t<div class=\"input-with-delete\">\r\n\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\tid=\"site-key\"\r\n\t\t\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\t\t\tv-model=\"formData.siteKey\"\r\n\t\t\t\t\t\t\t\tclass=\"aio-login-pro__form-input\"\r\n\t\t\t\t\t\t\t\t:class=\"{ 'aio-login-pro__error': showValidationError && !formData.siteKey.trim() }\"\r\n\t\t\t\t\t\t\t\tplaceholder=\"Enter Site Key\"\r\n\t\t\t\t\t\t\t\tautocomplete=\"off\"\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t<button v-if=\"formData.siteKey\" @click=\"clearField('siteKey')\" class=\"clear-btn\">×</button>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<span \r\n\t\t\t\t\t\t\tv-if=\"showValidationError && !formData.siteKey.trim()\" \r\n\t\t\t\t\t\t\tclass=\"aio-login-pro__error-message\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\tThis field is required\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"aio-login-pro__form-group\">\r\n\t\t\t\t\t\t<label for=\"secret-key\" class=\"aio-login-pro__form-label\">\r\n\t\t\t\t\t\t\tSecret Key <span class=\"aio-login-pro__required\">*</span>\r\n\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t<div class=\"input-with-delete\">\r\n\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\tid=\"secret-key\"\r\n\t\t\t\t\t\t\t\ttype=\"password\"\r\n\t\t\t\t\t\t\t\tv-model=\"formData.secretKey\"\r\n\t\t\t\t\t\t\t\tclass=\"aio-login-pro__form-input\"\r\n\t\t\t\t\t\t\t\t:class=\"{ 'aio-login-pro__error': showValidationError && !formData.secretKey.trim() }\"\r\n\t\t\t\t\t\t\t\tplaceholder=\"Enter Secret Key\"\r\n\t\t\t\t\t\t\t\tautocomplete=\"new-password\"\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t<button v-if=\"formData.secretKey\" @click=\"clearField('secretKey')\" class=\"clear-btn\">×</button>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<span \r\n\t\t\t\t\t\t\tv-if=\"showValidationError && !formData.secretKey.trim()\" \r\n\t\t\t\t\t\t\tclass=\"aio-login-pro__error-message\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\tThis field is required\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\r\n\t\t\t<!-- Step 3: Settings -->\r\n\t\t\t<div v-if=\"currentStep === 3\" class=\"aio-login-pro__step3\">\r\n\t\t\t\t<p class=\"aio-login-pro__step3__description\">\r\n\t\t\t\t\tConfigure the settings for your Google reCAPTCHA integration.\r\n\t\t\t\t</p>\r\n\t\t\t\t<div class=\"aio-login-pro__step3__layout\">\r\n\t\t\t\t\t<!-- Settings Column -->\r\n\t\t\t\t\t<div class=\"aio-login-pro__step3__column\">\r\n\t\t\t\t\t\t<!-- V2 Settings -->\r\n\t\t\t\t\t\t<div v-if=\"formData.version === 'v2'\" class=\"aio-login-pro__form-group\">\r\n\t\t\t\t\t\t\t<label for=\"theme\" class=\"aio-login-pro__form-label\">Theme:</label>\r\n\t\t\t\t\t\t\t<select id=\"theme\" v-model=\"formData.theme\" class=\"aio-login-pro__form-input\">\r\n\t\t\t\t\t\t\t\t<option value=\"light\">Light</option>\r\n\t\t\t\t\t\t\t\t<option value=\"dark\">Dark</option>\r\n\t\t\t\t\t\t\t</select>\r\n\t\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t\t<!-- V3 Settings -->\r\n\t\t\t\t\t\t<div v-if=\"formData.version === 'v3'\" class=\"aio-login-pro__form-group\">\r\n\t\t\t\t\t\t\t<label for=\"threshold\" class=\"aio-login-pro__form-label\">Threshold Score:</label>\r\n\t\t\t\t\t\t\t<select id=\"threshold\" v-model=\"formData.threshold\" class=\"aio-login-pro__form-input\">\r\n\t\t\t\t\t\t\t\t<option value=\"0.1\">0.1</option>\r\n\t\t\t\t\t\t\t\t<option value=\"0.2\">0.2</option>\r\n\t\t\t\t\t\t\t\t<option value=\"0.3\">0.3</option>\r\n\t\t\t\t\t\t\t\t<option value=\"0.4\">0.4</option>\r\n\t\t\t\t\t\t\t\t<option value=\"0.5\">0.5 (Default)</option>\r\n\t\t\t\t\t\t\t\t<option value=\"0.6\">0.6</option>\r\n\t\t\t\t\t\t\t\t<option value=\"0.7\">0.7</option>\r\n\t\t\t\t\t\t\t\t<option value=\"0.8\">0.8</option>\r\n\t\t\t\t\t\t\t\t<option value=\"0.9\">0.9</option>\r\n\t\t\t\t\t\t\t</select>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\r\n\t\t\t</div>\r\n\r\n\t\t\t<!-- Navigation buttons -->\r\n\t\t\t<div class=\"popup-footer\">\r\n\t\t\t\t<button v-if=\"currentStep === 2\" @click=\"prevStep\" class=\"back-btn\">Back</button>\r\n\t\t\t\t<button v-if=\"currentStep === 3\" @click=\"prevStep\" class=\"back-btn\">Back</button>\r\n\t\t\t\t<div class=\"popup-footer-left\">\r\n\t\t\t\t\t<button v-if=\"currentStep === 1\" @click=\"nextStep\" class=\"next-btn\">Next</button>\r\n\t\t\t\t</div>\r\n\t\t\t\t<button v-if=\"currentStep === 2\" @click=\"nextStep\" class=\"next-btn\">Next</button>\r\n\t\t\t\t<button v-if=\"currentStep === 3\" @click=\"finish\" class=\"finish-btn\">Finished</button>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n\tname: 'aio-login-recaptcha-popup',\r\n\r\n\tprops: {\r\n\t\tshow: {\r\n\t\t\ttype: Boolean,\r\n\t\t\tdefault: false\r\n\t\t},\r\n\t\tinitialData: {\r\n\t\t\ttype: Object,\r\n\t\t\tdefault: () => ({})\r\n\t\t}\r\n\t},\r\n\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tassetsUrl: aio_login__app_object.assets_url,\r\n\t\t\tpopupHeaderIcon: aio_login__app_object.assets_url + 'images/icons/grecaptcha.png',\r\n\t\t\tcurrentStep: 1,\r\n\t\t\tshowValidationError: false,\r\n\t\t\tformData: {\r\n\t\t\t\tversion: 'v2',\r\n\t\t\t\tsiteKey: '',\r\n\t\t\t\tsecretKey: '',\r\n\t\t\t\ttheme: 'light',\r\n\t\t\t\tthreshold: '0.5'\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tcomputed: {\r\n\t\tcanProceed() {\r\n\t\t\tif (this.currentStep === 1) return true;\r\n\t\t\tif (this.currentStep === 2) {\r\n\t\t\t\treturn this.formData.siteKey.trim() !== '' && this.formData.secretKey.trim() !== '';\r\n\t\t\t}\r\n\t\t\tif (this.currentStep === 3) return true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t},\r\n\r\n\twatch: {\r\n\t\tshow(newVal) {\r\n\t\t\tif (newVal) {\r\n\t\t\t\tthis.currentStep = 1;\r\n\t\t\t\tthis.formData = { ...this.initialData };\r\n\t\t\t\tthis.showValidationError = false;\r\n\t\t\t\t// Prevent body scroll when modal is open\r\n\t\t\t\tdocument.body.style.overflow = 'hidden';\r\n\t\t\t\tdocument.body.classList.add('aio-login-modal-open');\r\n\t\t\t} else {\r\n\t\t\t\t// Restore body scroll when modal is closed\r\n\t\t\t\tdocument.body.style.overflow = '';\r\n\t\t\t\tdocument.body.classList.remove('aio-login-modal-open');\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tmethods: {\r\n\t\tclosePopup() {\r\n\t\t\tthis.$emit('close');\r\n\t\t},\r\n\r\n\t\tnextStep() {\r\n\t\t\tif (this.currentStep === 2) {\r\n\t\t\t\tthis.showValidationError = true;\r\n\t\t\t\tif (!this.canProceed) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (this.canProceed && this.currentStep < 3) {\r\n\t\t\t\tthis.currentStep++;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tprevStep() {\r\n\t\t\tif (this.currentStep > 1) {\r\n\t\t\t\tthis.currentStep--;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tonVersionChange() {\r\n\t\t\t// Reset keys when version changes\r\n\t\t\tthis.formData.siteKey = '';\r\n\t\t\tthis.formData.secretKey = '';\r\n\t\t},\r\n\r\n\t\tclearField(field) {\r\n\t\t\tthis.formData[field] = '';\r\n\t\t},\r\n\r\n\t\tfinish() {\r\n\t\t\tthis.$emit('save', this.formData);\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n/* Exact copy of pro plugin social login popup styling */\r\n.popup-overlay {\r\n\tposition: fixed;\r\n\ttop: 0;\r\n\tleft: 0;\r\n\tright: 0;\r\n\tbottom: 0;\r\n\tbackground: rgba(0, 0, 0, 0.5);\r\n\tdisplay: flex;\r\n\tjustify-content: center;\r\n\talign-items: center;\r\n\tz-index: 1000;\r\n}\r\n\r\n.popup-content {\r\n\tbackground-color: white;\r\n\tpadding: 10px 50px 50px 50px;\r\n\tborder-radius: 8px;\r\n\twidth: 80%;\r\n\tmax-width: 800px;\r\n}\r\n\r\n.popup-header {\r\n\tdisplay: flex;\r\n\tjustify-content: space-between;\r\n\talign-items: center;\r\n\tpadding-bottom: 14px;\r\n\tmargin-bottom: 14px;\r\n\tborder-bottom: 1px solid #e6e8ef;\r\n\twidth: 100%;\r\n\t/* Keep close control on the visual right in RTL admin */\r\n\tdirection: ltr;\r\n}\r\n\r\n.popup-header-title {\r\n\tdisplay: inline-flex;\r\n\talign-items: center;\r\n\tgap: 10px;\r\n\tmin-width: 0;\r\n}\r\n\r\n.popup-header-title__icon {\r\n\twidth: 32px;\r\n\theight: 32px;\r\n\tobject-fit: contain;\r\n\tflex-shrink: 0;\r\n}\r\n\r\n.popup-header-title__text {\r\n\tmargin: 0;\r\n\tcolor: #202939;\r\n\tfont-size: clamp(24px, 2.2vw, 32px);\r\n\tfont-weight: 600;\r\n\tline-height: 1.15;\r\n\tletter-spacing: -0.02em;\r\n\tword-break: break-word;\r\n}\r\n\r\n.popup-steps {\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n\tmargin: 0 auto 20px;\r\n\twidth: fit-content;\r\n\tmax-width: 100%;\r\n\tgap: 0;\r\n}\r\n\r\n.step {\r\n\\twidth: 40px;\r\n\theight: 40px;\r\n\tborder-radius: 50%;\r\n\tdisplay: flex;\r\n\tjustify-content: center;\r\n\talign-items: center;\r\n\tcolor: white;\r\n\tfont-weight: bold;\r\n\tfont-size: 16px;\r\n\ttransition: background-color 0.3s ease;\r\n\tbackground-color: #EBE8EB;\r\n}\r\n\r\n.step.active {\r\n\tbackground-color: #9516DF;\r\n}\r\n\r\n.popup-footer {\r\n\tdisplay: flex;\r\n\tjustify-content: space-between;\r\n\twidth: 100%;\r\n\tmargin-top: 40px;\r\n}\r\n\r\n.popup-footer-left {\r\n\tflex-grow: 1;\r\n\ttext-align: right;\r\n}\r\n\r\n.popup-footer-right {\r\n\ttext-align: left;\r\n}\r\n\r\n.next-btn, .finish-btn, .back-btn {\r\n\tpadding: 10px 20px;\r\n\tborder: none;\r\n\tborder-radius: 5px;\r\n\tfont-size: 16px;\r\n\tcursor: pointer;\r\n}\r\n\r\n.next-btn {\r\n\tbackground: linear-gradient(262.54deg, #F7ECFD -5.51%, #8076FF 252.88%);\r\n\tcolor: #6E16DF;\r\n}\r\n\r\n.finish-btn {\r\n\tbackground: linear-gradient(262.54deg, #F7ECFD -5.51%, #8076FF 252.88%);\r\n\tcolor: #6E16DF;\r\n}\r\n\r\n.back-btn {\r\n\tbackground: linear-gradient(262.54deg, #EBE8EB -5.51%, #C9D2E3 252.88%);\r\n\tcolor: #8498B4;\r\n}\r\n\r\n.close-btn {\r\n\tposition: relative;\r\n\tfont-size: 21px;\r\n\tborder-radius: 50%;\r\n\tcursor: pointer;\r\n\tbackground: none;\r\n\tborder: 1px solid #7E869E40;\r\n\tflex-shrink: 0;\r\n}\r\n\r\n.connector {\r\n\theight: 2px;\r\n\tflex: 0 0 200px;\r\n\tbackground-color: #C9D2E3;\r\n\tmargin: 0;\r\n\tmin-width: 200px;\r\n}\r\n\r\n.step-container {\r\n\tflex: 0 0 40px;\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n\twidth: 40px;\r\n\tposition: relative;\r\n\tpadding-top: 26px;\r\n}\r\n\r\n.step-container h4 {\r\n\tposition: absolute;\r\n\tleft: 50%;\r\n\tbottom: calc(100% + 8px);\r\n\ttransform: translateX(-50%);\r\n\tfont-size: 13px;\r\n\tfont-weight: bold;\r\n\tcolor: #9516DF;\r\n\tmargin: 0;\r\n\twhite-space: nowrap;\r\n}\r\n\r\n/* First Step Styling */\r\n.aio-login-pro__first-step .aio-login-pro__first-step__title{\r\n\tcolor: #404280;\r\n\tfont-size: 24px;\r\n\tfont-style: normal;\r\n\tfont-weight: 600;\r\n\tline-height: normal;\r\n}\r\n\r\n.aio-login-pro__first-step .aio-login-pro__first-step__instruction{\r\n\tcolor: #404280;\r\n\tfont-size: 20px;\r\n\tfont-style: normal;\r\n\tfont-weight: 600;\r\n\tline-height: normal;\r\n}\r\n\r\n.aio-login-pro__first-step .aio-login-pro__first-step__content{\r\n\tcolor: #606C80;\r\n\tfont-size: 14px;\r\n\tfont-style: normal;\r\n\tfont-weight: 400;\r\n}\r\n\r\n.aio-login-pro__first-step .aio-login-pro__first-step__doc-link{\r\n\tcolor: #6E16DF;\r\n\tfont-family: Figtree;\r\n\tfont-size: 12px;\r\n\tfont-style: normal;\r\n\tfont-weight: 700;\r\n\tline-height: 12px;\r\n\ttext-decoration-line: underline;\r\n\ttext-decoration-style: solid;\r\n\ttext-decoration-skip-ink: none;\r\n\ttext-decoration-thickness: auto;\r\n\ttext-underline-offset: auto;\r\n\ttext-underline-position: from-font;\r\n}\r\n\r\n.aio-login-pro__first-step p{\r\n\tcolor: #606C80;\r\n\tfont-family: Figtree;\r\n\tfont-size: 12px;\r\n\tfont-style: normal;\r\n\tfont-weight: 400;\r\n}\r\n\r\n/* Step 2 Styling */\r\n.aio-login-pro__step2__description {\r\n\tcolor: #606C80;\r\n\tfont-size: 14px;\r\n\tmargin-bottom: 20px;\r\n}\r\n\r\n.aio-login-pro__inline-form {\r\n\tdisplay: flex;\r\n\tgap: 20px;\r\n\tmargin-top: 10px;\r\n}\r\n\r\n.aio-login-pro__form-group {\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\tflex: 1;\r\n}\r\n\r\n.aio-login-pro__form-label {\r\n\tfont-size: 14px;\r\n\tmargin-bottom: 5px;\r\n\tfont-weight: 600;\r\n}\r\n\r\n.aio-login-pro__form-input {\r\n\tpadding: 10px 35px 10px 10px;\r\n\tfont-size: 14px;\r\n\tborder-radius: 4px;\r\n\ttransition: border-color 0.2s ease-in-out;\r\n\tborder: 1px solid #EBE8EB !important;\r\n\tbackground: #FFF;\r\n\theight: 40px;\r\n\twidth: 100%;\r\n\tbox-sizing: border-box;\r\n}\r\n\r\n/* Dropdown specific styling */\r\n.aio-login-pro__form-input[type=\"text\"] {\r\n\tpadding: 10px 35px 10px 10px;\r\n}\r\n\r\n.aio-login-pro__form-input[type=\"password\"] {\r\n\tpadding: 10px 35px 10px 10px;\r\n}\r\n\r\nselect.aio-login-pro__form-input {\r\n\tpadding: 12px 30px 12px 10px;\r\n\tbackground-image: url(\"data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6,9 12,15 18,9'%3e%3c/polyline%3e%3c/svg%3e\");\r\n\tbackground-repeat: no-repeat;\r\n\tbackground-position: right 10px center;\r\n\tbackground-size: 16px;\r\n\tappearance: none;\r\n\t-moz-appearance: none;\r\n\t-webkit-appearance: none;\r\n\ttext-align: left;\r\n\ttext-align-last: left;\r\n\tline-height: 1.4;\r\n\theight: 44px;\r\n\tbox-sizing: border-box;\r\n}\r\n\r\nselect.aio-login-pro__form-input option {\r\n\ttext-align: left;\r\n\tpadding: 5px;\r\n}\r\n\r\n.aio-login-pro__form-input:focus {\r\n\toutline: none;\r\n\tborder-color: #9516df;\r\n}\r\n\r\n.aio-login-pro__required {\r\n\tcolor: #ff0000;\r\n}\r\n\r\n.aio-login-pro__error {\r\n\tborder-color: #ff0000 !important;\r\n}\r\n\r\n.aio-login-pro__error-message {\r\n\tcolor: #ff0000;\r\n\tfont-size: 12px;\r\n\tmargin-top: 5px;\r\n}\r\n\r\n/* Step 3 Styling */\r\n.aio-login-pro__step3__description {\r\n\tcolor: #606C80;\r\n\tfont-size: 14px;\r\n\tmargin-bottom: 20px;\r\n}\r\n\r\n.aio-login-pro__step3__layout {\r\n\tdisplay: flex;\r\n\tgap: 20px;\r\n}\r\n\r\n.aio-login-pro__step3__column {\r\n\tflex: 1;\r\n}\r\n\r\n.aio-login-pro__step3__image-column {\r\n\tdisplay: flex;\r\n\tjustify-content: center;\r\n\talign-items: center;\r\n}\r\n\r\n.aio-login-pro__step3__image {\r\n\twidth: 100px;\r\n\theight: 100px;\r\n\tobject-fit: contain;\r\n}\r\n\r\n/* Input with delete button */\r\n.input-with-delete {\r\n\tposition: relative;\r\n}\r\n\r\n.clear-btn {\r\n\tposition: absolute;\r\n\tright: 8px;\r\n\ttop: 50%;\r\n\ttransform: translateY(-50%);\r\n\tbackground: transparent;\r\n\tcolor: #999;\r\n\tborder: none;\r\n\twidth: 24px;\r\n\theight: 24px;\r\n\tcursor: pointer;\r\n\tfont-size: 18px;\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n\tz-index: 10;\r\n\tpointer-events: auto;\r\n}\r\n\r\n.clear-btn:hover {\r\n\tcolor: #999;\r\n}\r\n\r\n/* Global overrides for pro plugin compatibility */\r\nbody.aio-login-modal-open {\r\n\toverflow: hidden !important;\r\n}\r\n\r\n/* Ensure modal is always on top */\r\n.popup-overlay * {\r\n\tbox-sizing: border-box !important;\r\n}\r\n\r\n/* Social login popup parity overrides */\r\n.popup-content {\r\n\tpadding: 28px 50px 36px 50px;\r\n\tmax-height: min(90vh, calc(100vh - 32px));\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\tbox-sizing: border-box;\r\n\toverflow: hidden;\r\n\tmargin: auto;\r\n}\r\n\r\n.popup-header {\r\n\talign-items: center;\r\n\tjustify-content: space-between;\r\n\tpadding-bottom: 16px;\r\n\tmargin-bottom: 50px;\r\n\tborder-bottom: 1px solid #e3e7ef;\r\n\tflex-shrink: 0;\r\n}\r\n\r\n.popup-header-title__icon {\r\n\twidth: 36px;\r\n\theight: 36px;\r\n\tobject-fit: contain;\r\n}\r\n\r\n.popup-header-title__text {\r\n\tmargin: 0 0 2px 10px;\r\n\tcolor: #202939;\r\n\tfont-size: clamp(18px, 2.5vw, 30px);\r\n\tfont-weight: 600;\r\n\tline-height: 1.35;\r\n\tword-break: normal;\r\n}\r\n\r\n.popup-modal-body {\r\n\tflex: 1 1 auto;\r\n\tmin-height: 0;\r\n\toverflow-x: hidden;\r\n\toverflow-y: auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\toverscroll-behavior: contain;\r\n\tpadding: 4px 8px 0 0;\r\n\tbox-sizing: border-box;\r\n\tscrollbar-width: thin;\r\n\tscrollbar-color: #c9d2e3 transparent;\r\n}\r\n\r\n.popup-steps {\r\n\tpadding: 0;\r\n\tflex-shrink: 0;\r\n}\r\n\r\n.step {\r\n\twidth: 30px;\r\n\theight: 30px;\r\n\tfont-size: 14px;\r\n}\r\n\r\n.connector {\r\n\tflex: 0 0 210px;\r\n\tmin-width: 210px;\r\n}\r\n\r\n.step-container {\r\n\tflex: 0 0 30px;\r\n\twidth: 30px;\r\n\tpadding-top: 0;\r\n}\r\n\r\n.step-container h4 {\r\n\tfont-size: 14px;\r\n\tfont-weight: 600;\r\n\tline-height: 1.2;\r\n\ttext-align: center;\r\n}\r\n\r\n.popup-footer {\r\n\tflex-shrink: 0;\r\n\tmargin-top: auto;\r\n\tpadding-top: 16px;\r\n\tborder-top: 1px solid #e3e7ef;\r\n}\r\n\r\n.popup-footer-left {\r\n\ttext-align: right;\r\n}\r\n\r\n.next-btn,\r\n.finish-btn,\r\n.back-btn {\r\n\tpadding: 14px 28px;\r\n\tfont-weight: 700;\r\n}\r\n\r\n.back-btn {\r\n\tcolor: #404280;\r\n}\r\n</style>\r\n","<template>\n\t<div v-if=\"page_loaded\" class=\"aio-login-pro__social-login__card\">\n\t\t\t<!-- Pro Tag -->\n\t\t\t<span v-if=\"showProMarketingBadge\" class=\"aio-login__pro-tab\">PRO</span>\n\t\t\t\n\t\t\t<!-- Configured Tag -->\n\t\t\t<div \n\t\t\t\tv-if=\"statusBadge && hasPro\" \n\t\t\t\tclass=\"configured-tag\"\n\t\t\t\t:class=\"{ 'enabled': statusBadge === 'green', 'disabled': statusBadge === 'orange' }\"\n\t\t\t>\n\t\t\t\t{{ statusBadgeText }}\n\t\t\t</div>\n\t\t\t\n\t\t\t<!-- Top Section -->\n\t\t\t<div class=\"aio-login-pro__social-login__card__top\">\n\t\t\t\t<img :src=\"getSrc('hcaptcha')\" :alt=\"'hCaptcha'\" />\n\t\t\t\t<p>\n\t\t\t\t\t<span>hCaptcha</span>\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t\t<!-- Bottom Section -->\n\t\t\t<div class=\"aio-login-pro__social-login__card__bottom\">\n\t\t\t\t<label class=\"toggle-switch\" @click=\"handleToggleClick\">\n\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\tid=\"hcaptcha\"\n\t\t\t\t\t\tname=\"hcaptcha\"\n\t\t\t\t\t\tv-on:toggle-input=\"handleToggle\"\n\t\t\t\t\t\t:enabled=\"enabled\"\n\t\t\t\t\t\t:disabled=\"!hasPro\"\n\t\t\t\t\t/>\n\t\t\t\t</label>\n\t\t\t\t<!-- Show Configure button only if the toggle is enabled and Pro is active -->\n\t\t\t\t<button\n\t\t\t\t\tv-if=\"enabled && hasPro\"\n\t\t\t\t\tclass=\"configure-btn\"\n\t\t\t\t\t@click=\"configureCaptcha\"\n\t\t\t\t\t@mouseenter=\"onHover\"\n\t\t\t\t\t@mouseleave=\"onLeave\"\n\t\t\t\t>\n\t\t\t\t\tConfigure\n\t\t\t\t</button>\n\t\t\t</div>\n\n\t\t<!-- Pro Overlay for Free Users -->\n\t\t<div v-if=\"!hasPro\" class=\"aio-login-t-content-overflow\" @click.stop=\"iWasTriggered\"></div>\n\n\t\t<!-- Multi-step Popup -->\n\t\t<aio-login-hcaptcha-popup\n\t\t\t:show=\"showPopup\"\n\t\t\t:initial-data=\"popupData\"\n\t\t\t@close=\"closePopup\"\n\t\t\t@save=\"saveSettings\"\n\t\t/>\n\t</div>\n</template>\n\n<script>\nimport tooltipContent from '../tooltip-content.js';\n\nexport default {\n\tname: 'aio-login-hcaptcha-card',\n\n\tprops: {\n\t\thasPro: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tenabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tconfigData: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({})\n\t\t}\n\t},\n\n\tdata: ( vm ) => ( {\n\t\ttooltipContent,\n\t\tassetsUrl: aio_login__app_object.assets_url,\n\t\tpage_loaded: false,\n\t\tshowPopup: false,\n\t\tpopupData: {},\n\t\tisHovered: false\n\t} ),\n\n\tcomputed: {\n\t\tproPluginActive() {\n\t\t\tconst o = typeof window !== 'undefined' ? window.aio_login__app_object : null;\n\t\t\treturn !!( o && ( o.has_pro === 'true' || o.has_pro === true ) );\n\t\t},\n\t\tshowProMarketingBadge() {\n\t\t\treturn ! this.hasPro && ! this.proPluginActive;\n\t\t},\n\t\tstatusBadge() {\n\t\t\tif (this.enabled && this.hasValidKeys()) {\n\t\t\t\treturn 'green';\n\t\t\t} else if (!this.enabled && this.hasValidKeys()) {\n\t\t\t\treturn 'orange';\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\n\t\tstatusBadgeText() {\n\t\t\tif (this.statusBadge === 'green') {\n\t\t\t\treturn 'Configured';\n\t\t\t} else if (this.statusBadge === 'orange') {\n\t\t\t\treturn 'Configured';\n\t\t\t}\n\t\t\treturn '';\n\t\t}\n\t},\n\n\tmethods: {\n\t\tloadComponent() {\n\t\t\tthis.$nextTick( () => {\n\t\t\t\tthis.page_loaded = true;\n\t\t\t} );\n\t\t},\n\n\t\tgetSrc( icon ) {\n\t\t\tif (icon === 'hcaptcha') {\n\t\t\t\t// Try SVG first, then PNG, then fallback\n\t\t\t\treturn this.assetsUrl + 'images/icons/hcaptcha.svg';\n\t\t\t}\n\t\t\treturn this.assetsUrl + `images/icons/${ icon }.png`;\n\t\t},\n\n\t\thasValidKeys() {\n\t\t\treturn this.configData.siteKey && this.configData.secretKey;\n\t\t},\n\n\t\thandleCardClick(event) {\n\t\t\t// If Pro is not active, show popup on card click\n\t\t\tif (!this.hasPro) {\n\t\t\t\t// Only if click is not on toggle or button (they have their own handlers)\n\t\t\t\tif (!event.target.closest('.toggle-switch') && !event.target.closest('.configure-btn')) {\n\t\t\t\t\tthis.iWasTriggered();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\thandleToggleClick(event) {\n\t\t\t// If Pro is not active, show popup on toggle click\n\t\t\tif (!this.hasPro) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\tthis.iWasTriggered();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\thandleToggle( enabled ) {\n\t\t\tif (this.hasPro) {\n\t\t\t\tthis.$emit('toggle-captcha', enabled);\n\t\t\t} else {\n\t\t\t\tthis.showProPopup();\n\t\t\t}\n\t\t},\n\n\t\tconfigureCaptcha() {\n\t\t\tif (this.hasPro) {\n\t\t\t\tthis.popupData = { ...this.configData };\n\t\t\t\tthis.showPopup = true;\n\t\t\t} else {\n\t\t\t\tthis.showProPopup();\n\t\t\t}\n\t\t},\n\n\n\t\tiWasTriggered() {\n\t\t\t// Find the root app component that has the popup property\n\t\t\tlet parent = this.$parent;\n\t\t\twhile (parent) {\n\t\t\t\tif (parent.popup !== undefined) {\n\t\t\t\t\tparent.popup = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tparent = parent.$parent;\n\t\t\t}\n\t\t\t// Fallback: try direct parent chain\n\t\t\tif (this.$parent && this.$parent.$parent) {\n\t\t\t\tthis.$parent.$parent.popup = true;\n\t\t\t}\n\t\t},\n\n\t\tclosePopup() {\n\t\t\tthis.showPopup = false;\n\t\t\tthis.popupData = {};\n\t\t},\n\n\t\tsaveSettings( data ) {\n\t\t\tthis.$emit('save-settings', data);\n\t\t\tthis.closePopup();\n\t\t},\n\n\n\t\tonHover() {\n\t\t\tthis.isHovered = true;\n\t\t},\n\n\t\tonLeave() {\n\t\t\tthis.isHovered = false;\n\t\t}\n\t},\n\n\tmounted() {\n\t\tthis.page_loaded = true;\n\t}\n}\n</script>\n\n<style scoped>\n/* Exact copy of social login pro card styling */\n.aio-login-t-content-overflow {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n\tbackdrop-filter: blur(0.5px);\n\tz-index: 100;\n\tcursor: pointer;\n\tbackground: rgba(255, 255, 255, 0.3);\n}\n\n.aio-login__pro-tab {\n\tposition: absolute;\n\ttop: 8px;\n\tleft: 8px;\n\tdisplay: inline-flex;\n    align-items: center;\n    justify-content: center;\n    box-sizing: border-box;\n    min-width: 34px;\n    padding: 5px 6px;\n    margin: 0;\n    background: #9516DF;\n    border-radius: 3px;\n    color: #FFFFFF;\n    font-family: Figtree, sans-serif;\n    font-size: 12px;\n    font-weight: 700;\n    line-height: 1;\n    letter-spacing: 0.02em;\n    text-transform: uppercase;\n    /* height: 18px; */\n    flex-shrink: 0;\n\tz-index: 101;\n}\n\n.configured-tag {\n  position: absolute !important;\n  top: 8px !important;\n  right: 8px !important;\n  padding: 3px 6px !important;\n  font-size: 10px !important;\n  font-weight: 700 !important;\n  border-radius: 8px !important;\n  color: white !important;\n  z-index: 999 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.3px !important;\n  line-height: 1 !important;\n  display: inline-block !important;\n  white-space: nowrap !important;\n}\n\n.configured-tag.enabled {\n  background-color: #22c55e !important; /* Green for enabled */\n  box-shadow: 0 1px 3px rgba(34, 197, 94, 0.4) !important;\n}\n\n.configured-tag.disabled {\n  background-color: #f97316 !important; /* Orange for disabled */\n  box-shadow: 0 1px 3px rgba(249, 115, 22, 0.4) !important;\n}\n\n/* Social Login Card */\n.aio-login-pro__social-login__card {\n  position: relative !important;\n  overflow: visible !important;\n  border: 1px solid #ebe8eb;\n  border-radius: 10px;\n  height: 200px;\n  width: 320px;\n  display: flex;\n  flex-direction: column;\n  justify-content: space-between;\n}\n\n/* Top Section */\n.aio-login-pro__social-login__card__top {\n  flex: 4;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  padding: 10px;\n  text-align: center;\n}\n\n.aio-login-pro__social-login__card__top img {\n  width: 48px;\n  height: 48px;\n  margin-bottom: 10px;\n  object-fit: contain;\n}\n\n.aio-login-pro__social-login__card__top p {\n  font-size: 14px;\n  font-weight: bold;\n  margin: 0 0 5px 0;\n}\n\n/* Bottom Section */\n.aio-login-pro__social-login__card__bottom {\n  flex: 1;\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  padding: 10px;\n  border-top: 1px solid #ebe8eb;\n}\n\n/* Configure Button */\n.configure-btn {\n  background: #f7ecfd;\n  color: #6e16df;\n  border: none;\n  border-radius: 4px;\n  font-size: 14px;\n  cursor: pointer;\n  transition: 0.3s;\n  padding: 9px 18px;\n}\n\n.configure-btn:hover {\n  background-color: #C9D2E3;\n  color: #6e16df;\n}\n</style>\n\n","<template>\r\n\t<div v-if=\"show\" class=\"popup-overlay\" @click=\"closePopup\">\r\n\t\t<div class=\"popup-content\" @click.stop>\r\n\t\t\t<div class=\"popup-header\">\r\n\t\t\t\t<div class=\"popup-header-title\">\r\n\t\t\t\t\t<img\r\n\t\t\t\t\t\t:src=\"popupHeaderIcon\"\r\n\t\t\t\t\t\talt=\"hCaptcha\"\r\n\t\t\t\t\t\tclass=\"popup-header-title__icon\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<h2 class=\"popup-header-title__text\">hCaptcha Configuration</h2>\r\n\t\t\t\t</div>\r\n\t\t\t\t<button class=\"close-btn\" @click=\"closePopup\">&times;</button>\r\n\t\t\t</div>\r\n\r\n\t\t\t<!-- Step Indicators -->\r\n\t\t\t<div class=\"popup-steps\">\r\n\t\t\t\t<div class=\"step-container\">\r\n\t\t\t\t\t<h4>Getting Started</h4>\r\n\t\t\t\t\t<div \r\n\t\t\t\t\t\tclass=\"step\" \r\n\t\t\t\t\t\t:class=\"{ active: currentStep >= 1 }\" \r\n\t\t\t\t\t\t:style=\"{ backgroundColor: currentStep >= 1 ? '#9516DF' : '#EBE8EB', color: currentStep < 1 ? '#9516DF' : 'white' }\">\r\n\t\t\t\t\t\t1\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"connector\" :style=\"{ backgroundColor: currentStep >= 2 ? '#9516DF' : '#C9D2E3' }\"></div>\r\n\t\t\t\t\r\n\t\t\t\t<div class=\"step-container\">\r\n\t\t\t\t\t<h4>Configuration</h4>\r\n\t\t\t\t\t<div \r\n\t\t\t\t\t\tclass=\"step\" \r\n\t\t\t\t\t\t:class=\"{ active: currentStep >= 2 }\" \r\n\t\t\t\t\t\t:style=\"{ backgroundColor: currentStep >= 2 ? '#9516DF' : '#EBE8EB', color: currentStep < 2 ? '#9516DF' : 'white' }\">\r\n\t\t\t\t\t\t2\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"connector\" :style=\"{ backgroundColor: currentStep >= 3 ? '#9516DF' : '#C9D2E3' }\"></div>\r\n\r\n\t\t\t\t<div class=\"step-container\">\r\n\t\t\t\t\t<h4>Settings</h4>\r\n\t\t\t\t\t<div \r\n\t\t\t\t\t\tclass=\"step\" \r\n\t\t\t\t\t\t:class=\"{ active: currentStep >= 3 }\" \r\n\t\t\t\t\t\t:style=\"{ backgroundColor: currentStep >= 3 ? '#9516DF' : '#EBE8EB', color: currentStep < 3 ? '#9516DF' : 'white' }\">\r\n\t\t\t\t\t\t3\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\r\n\t\t\t<div class=\"popup-modal-body\">\r\n\t\t\t<!-- Step 1: Getting Started -->\r\n\t\t\t<div v-if=\"currentStep === 1\" class=\"aio-login-pro__first-step\">\r\n\t\t\t\t<h4 class=\"aio-login-pro__first-step__title\">Getting Started</h4>\r\n\t\t\t\t<p class=\"aio-login-pro__first-step__content\">To protect your website from spam and bots, start by adding hCaptcha to your WordPress login page.</p>\r\n\t\t\t\t<h5 class=\"aio-login-pro__first-step__instruction\">Instruction:</h5>\r\n\t\t\t\t<p class=\"aio-login-pro__first-step__instructions\">1. Register your site and get the keys → <a href=\"https://dashboard.hcaptcha.com/signup\" target=\"_blank\" class=\"aio-login-pro__first-step__doc-link\">Click Here</a></p>\r\n\t\t\t\t<p class=\"aio-login-pro__first-step__instructions\">2. Need help creating keys? → <a href=\"https://aiologin.com/docs/wordpress-login-security/setting-up-hcaptcha/\" target=\"_blank\" class=\"aio-login-pro__first-step__doc-link\">Click Here</a></p>\r\n\t\t\t\t<p class=\"aio-login-pro__first-step__next-step-note\">3. Once you have your keys, click Next to enter them.</p>\r\n\t\t\t</div>\r\n\r\n\t\t\t<!-- Step 2: Configuration -->\r\n\t\t\t<div v-if=\"currentStep === 2\" class=\"aio-login-pro__step2\">\r\n\t\t\t\t<p class=\"aio-login-pro__step2__description\">\r\n\t\t\t\t\tEnter your hCaptcha details.\r\n\t\t\t\t</p>\r\n\t\t\t\t<div class=\"aio-login-pro__inline-form\">\r\n\t\t\t\t\t<div class=\"aio-login-pro__form-group\">\r\n\t\t\t\t\t\t<label for=\"hcaptcha-site-key\" class=\"aio-login-pro__form-label\">\r\n\t\t\t\t\t\t\tSite Key <span class=\"aio-login-pro__required\">*</span>\r\n\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t<div class=\"input-with-delete\">\r\n\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\tid=\"hcaptcha-site-key\"\r\n\t\t\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\t\t\tv-model=\"formData.siteKey\"\r\n\t\t\t\t\t\t\t\tclass=\"aio-login-pro__form-input\"\r\n\t\t\t\t\t\t\t\t:class=\"{ 'aio-login-pro__error': showValidationError && !formData.siteKey.trim() }\"\r\n\t\t\t\t\t\t\t\tplaceholder=\"Enter Site Key\"\r\n\t\t\t\t\t\t\t\tautocomplete=\"off\"\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t<button v-if=\"formData.siteKey\" @click=\"clearField('siteKey')\" class=\"clear-btn\">×</button>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<span \r\n\t\t\t\t\t\t\tv-if=\"showValidationError && !formData.siteKey.trim()\" \r\n\t\t\t\t\t\t\tclass=\"aio-login-pro__error-message\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\tThis field is required\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"aio-login-pro__form-group\">\r\n\t\t\t\t\t\t<label for=\"hcaptcha-secret-key\" class=\"aio-login-pro__form-label\">\r\n\t\t\t\t\t\t\tSecret Key <span class=\"aio-login-pro__required\">*</span>\r\n\t\t\t\t\t\t</label>\r\n\t\t\t\t\t\t<div class=\"input-with-delete\">\r\n\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\tid=\"hcaptcha-secret-key\"\r\n\t\t\t\t\t\t\t\ttype=\"password\"\r\n\t\t\t\t\t\t\t\tv-model=\"formData.secretKey\"\r\n\t\t\t\t\t\t\t\tclass=\"aio-login-pro__form-input\"\r\n\t\t\t\t\t\t\t\t:class=\"{ 'aio-login-pro__error': showValidationError && !formData.secretKey.trim() }\"\r\n\t\t\t\t\t\t\t\tplaceholder=\"Enter Secret Key\"\r\n\t\t\t\t\t\t\t\tautocomplete=\"new-password\"\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t<button v-if=\"formData.secretKey\" @click=\"clearField('secretKey')\" class=\"clear-btn\">×</button>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<span \r\n\t\t\t\t\t\t\tv-if=\"showValidationError && !formData.secretKey.trim()\" \r\n\t\t\t\t\t\t\tclass=\"aio-login-pro__error-message\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\tThis field is required\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\r\n\t\t\t<!-- Step 3: Other Settings -->\r\n\t\t\t<div v-if=\"currentStep === 3\" class=\"aio-login-pro__step3\">\r\n\t\t\t\t<p class=\"aio-login-pro__step3__description\">\r\n\t\t\t\t\tThese settings are not compulsory.\r\n\t\t\t\t</p>\r\n\t\t\t\t<div class=\"aio-login-pro__step3__layout\">\r\n\t\t\t\t\t<div class=\"aio-login-pro__step3__column\">\r\n\t\t\t\t\t\t<div class=\"aio-login-pro__form-group\">\r\n\t\t\t\t\t\t\t<label for=\"hcaptcha-language\" class=\"aio-login-pro__form-label\">Language for Captcha:</label>\r\n\t\t\t\t\t\t\t<select id=\"hcaptcha-language\" v-model=\"formData.language\" class=\"aio-login-pro__form-input\">\r\n\t\t\t\t\t\t\t\t<option value=\"en\">English</option>\r\n\t\t\t\t\t\t\t\t<option value=\"ar\">Arabic</option>\r\n\t\t\t\t\t\t\t\t<option value=\"af\">Afrikaans</option>\r\n\t\t\t\t\t\t\t\t<option value=\"am\">Amharic</option>\r\n\t\t\t\t\t\t\t\t<option value=\"hy\">Armenian</option>\r\n\t\t\t\t\t\t\t\t<option value=\"az\">Azerbaijani</option>\r\n\t\t\t\t\t\t\t\t<option value=\"eu\">Basque</option>\r\n\t\t\t\t\t\t\t\t<option value=\"bn\">Bengali</option>\r\n\t\t\t\t\t\t\t\t<option value=\"bg\">Bulgarian</option>\r\n\t\t\t\t\t\t\t\t<option value=\"ca\">Catalan</option>\r\n\t\t\t\t\t\t\t\t<option value=\"zh-HK\">Chinese (Hong Kong)</option>\r\n\t\t\t\t\t\t\t\t<option value=\"zh-CN\">Chinese (Simplified)</option>\r\n\t\t\t\t\t\t\t\t<option value=\"zh-TW\">Chinese (Traditional)</option>\r\n\t\t\t\t\t\t\t\t<option value=\"hr\">Croatian</option>\r\n\t\t\t\t\t\t\t\t<option value=\"cs\">Czech</option>\r\n\t\t\t\t\t\t\t\t<option value=\"da\">Danish</option>\r\n\t\t\t\t\t\t\t\t<option value=\"nl\">Dutch</option>\r\n\t\t\t\t\t\t\t\t<option value=\"et\">Estonian</option>\r\n\t\t\t\t\t\t\t\t<option value=\"fil\">Filipino</option>\r\n\t\t\t\t\t\t\t\t<option value=\"fi\">Finnish</option>\r\n\t\t\t\t\t\t\t\t<option value=\"fr\">French</option>\r\n\t\t\t\t\t\t\t\t<option value=\"gl\">Galician</option>\r\n\t\t\t\t\t\t\t\t<option value=\"ka\">Georgian</option>\r\n\t\t\t\t\t\t\t\t<option value=\"de\">German</option>\r\n\t\t\t\t\t\t\t\t<option value=\"el\">Greek</option>\r\n\t\t\t\t\t\t\t\t<option value=\"gu\">Gujarati</option>\r\n\t\t\t\t\t\t\t\t<option value=\"iw\">Hebrew</option>\r\n\t\t\t\t\t\t\t\t<option value=\"hi\">Hindi</option>\r\n\t\t\t\t\t\t\t\t<option value=\"hu\">Hungarian</option>\r\n\t\t\t\t\t\t\t\t<option value=\"is\">Icelandic</option>\r\n\t\t\t\t\t\t\t\t<option value=\"id\">Indonesian</option>\r\n\t\t\t\t\t\t\t\t<option value=\"it\">Italian</option>\r\n\t\t\t\t\t\t\t\t<option value=\"ja\">Japanese</option>\r\n\t\t\t\t\t\t\t\t<option value=\"kn\">Kannada</option>\r\n\t\t\t\t\t\t\t\t<option value=\"ko\">Korean</option>\r\n\t\t\t\t\t\t\t\t<option value=\"lo\">Lao</option>\r\n\t\t\t\t\t\t\t\t<option value=\"lv\">Latvian</option>\r\n\t\t\t\t\t\t\t\t<option value=\"lt\">Lithuanian</option>\r\n\t\t\t\t\t\t\t\t<option value=\"ms\">Malay</option>\r\n\t\t\t\t\t\t\t\t<option value=\"ml\">Malayalam</option>\r\n\t\t\t\t\t\t\t\t<option value=\"mr\">Marathi</option>\r\n\t\t\t\t\t\t\t\t<option value=\"mn\">Mongolian</option>\r\n\t\t\t\t\t\t\t\t<option value=\"my\">Myanmar</option>\r\n\t\t\t\t\t\t\t\t<option value=\"ne\">Nepali</option>\r\n\t\t\t\t\t\t\t\t<option value=\"no\">Norwegian</option>\r\n\t\t\t\t\t\t\t\t<option value=\"fa\">Persian</option>\r\n\t\t\t\t\t\t\t\t<option value=\"pl\">Polish</option>\r\n\t\t\t\t\t\t\t\t<option value=\"pt\">Portuguese</option>\r\n\t\t\t\t\t\t\t\t<option value=\"ro\">Romanian</option>\r\n\t\t\t\t\t\t\t\t<option value=\"ru\">Russian</option>\r\n\t\t\t\t\t\t\t\t<option value=\"sr\">Serbian</option>\r\n\t\t\t\t\t\t\t\t<option value=\"si\">Sinhalese</option>\r\n\t\t\t\t\t\t\t\t<option value=\"sk\">Slovak</option>\r\n\t\t\t\t\t\t\t\t<option value=\"sl\">Slovenian</option>\r\n\t\t\t\t\t\t\t\t<option value=\"es\">Spanish</option>\r\n\t\t\t\t\t\t\t\t<option value=\"sw\">Swahili</option>\r\n\t\t\t\t\t\t\t\t<option value=\"sv\">Swedish</option>\r\n\t\t\t\t\t\t\t\t<option value=\"ta\">Tamil</option>\r\n\t\t\t\t\t\t\t\t<option value=\"te\">Telugu</option>\r\n\t\t\t\t\t\t\t\t<option value=\"th\">Thai</option>\r\n\t\t\t\t\t\t\t\t<option value=\"tr\">Turkish</option>\r\n\t\t\t\t\t\t\t\t<option value=\"uk\">Ukrainian</option>\r\n\t\t\t\t\t\t\t\t<option value=\"ur\">Urdu</option>\r\n\t\t\t\t\t\t\t\t<option value=\"vi\">Vietnamese</option>\r\n\t\t\t\t\t\t\t\t<option value=\"zu\">Zulu</option>\r\n\t\t\t\t\t\t\t</select>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"aio-login-pro__form-group\">\r\n\t\t\t\t\t\t\t<label for=\"hcaptcha-theme\" class=\"aio-login-pro__form-label\">Theme:</label>\r\n\t\t\t\t\t\t\t<select id=\"hcaptcha-theme\" v-model=\"formData.theme\" class=\"aio-login-pro__form-input\">\r\n\t\t\t\t\t\t\t\t<option value=\"light\">Light</option>\r\n\t\t\t\t\t\t\t\t<option value=\"dark\">Dark</option>\r\n\t\t\t\t\t\t\t</select>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"aio-login-pro__form-group\">\r\n\t\t\t\t\t\t\t<label for=\"hcaptcha-size\" class=\"aio-login-pro__form-label\">Size:</label>\r\n\t\t\t\t\t\t\t<select id=\"hcaptcha-size\" v-model=\"formData.size\" class=\"aio-login-pro__form-input\">\r\n\t\t\t\t\t\t\t\t<option value=\"normal\">Normal</option>\r\n\t\t\t\t\t\t\t\t<option value=\"compact\">Compact</option>\r\n\t\t\t\t\t\t\t</select>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\r\n\t\t\t</div>\r\n\r\n\t\t\t<!-- Navigation buttons -->\r\n\t\t\t<div class=\"popup-footer\">\r\n\t\t\t\t<button v-if=\"currentStep === 2\" @click=\"prevStep\" class=\"back-btn\">Back</button>\r\n\t\t\t\t<button v-if=\"currentStep === 3\" @click=\"prevStep\" class=\"back-btn\">Back</button>\r\n\t\t\t\t<div class=\"popup-footer-left\">\r\n\t\t\t\t\t<button v-if=\"currentStep === 1\" @click=\"nextStep\" class=\"next-btn\">Next</button>\r\n\t\t\t\t</div>\r\n\t\t\t\t<button v-if=\"currentStep === 2\" @click=\"nextStep\" class=\"next-btn\">Next</button>\r\n\t\t\t\t<button v-if=\"currentStep === 3\" @click=\"finish\" class=\"finish-btn\">Finished</button>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n\tname: 'aio-login-hcaptcha-popup',\r\n\r\n\tprops: {\r\n\t\tshow: {\r\n\t\t\ttype: Boolean,\r\n\t\t\tdefault: false\r\n\t\t},\r\n\t\tinitialData: {\r\n\t\t\ttype: Object,\r\n\t\t\tdefault: () => ({})\r\n\t\t}\r\n\t},\r\n\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tassetsUrl: aio_login__app_object.assets_url,\r\n\t\t\tpopupHeaderIcon: aio_login__app_object.assets_url + 'images/icons/hcaptcha.svg',\r\n\t\t\tcurrentStep: 1,\r\n\t\t\tshowValidationError: false,\r\n\t\t\tformData: {\r\n\t\t\t\tsiteKey: '',\r\n\t\t\t\tsecretKey: '',\r\n\t\t\t\ttheme: 'light',\r\n\t\t\t\tsize: 'normal',\r\n\t\t\t\tlanguage: 'en'\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tcomputed: {\r\n\t\tcanProceed() {\r\n\t\t\tif (this.currentStep === 1) return true;\r\n\t\t\tif (this.currentStep === 2) {\r\n\t\t\t\treturn this.formData.siteKey.trim() !== '' && this.formData.secretKey.trim() !== '';\r\n\t\t\t}\r\n\t\t\tif (this.currentStep === 3) return true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t},\r\n\r\n\twatch: {\r\n\t\tshow(newVal) {\r\n\t\t\tif (newVal) {\r\n\t\t\t\tthis.currentStep = 1;\r\n\t\t\t\tthis.formData = { ...this.initialData };\r\n\t\t\t\tif (!this.formData.theme) this.formData.theme = 'light';\r\n\t\t\t\tif (!this.formData.size) this.formData.size = 'normal';\r\n\t\t\t\tif (!this.formData.language) this.formData.language = 'en';\r\n\t\t\t\tthis.showValidationError = false;\r\n\t\t\t\t// Prevent body scroll when modal is open\r\n\t\t\t\tdocument.body.style.overflow = 'hidden';\r\n\t\t\t\tdocument.body.classList.add('aio-login-modal-open');\r\n\t\t\t} else {\r\n\t\t\t\t// Restore body scroll when modal is closed\r\n\t\t\t\tdocument.body.style.overflow = '';\r\n\t\t\t\tdocument.body.classList.remove('aio-login-modal-open');\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tmethods: {\r\n\t\tclosePopup() {\r\n\t\t\tthis.$emit('close');\r\n\t\t},\r\n\r\n\t\tnextStep() {\r\n\t\t\tif (this.currentStep === 2) {\r\n\t\t\t\tthis.showValidationError = true;\r\n\t\t\t\tif (!this.canProceed) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (this.canProceed && this.currentStep < 3) {\r\n\t\t\t\tthis.currentStep++;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tprevStep() {\r\n\t\t\tif (this.currentStep > 1) {\r\n\t\t\t\tthis.currentStep--;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tclearField(field) {\r\n\t\t\tthis.formData[field] = '';\r\n\t\t},\r\n\r\n\t\tfinish() {\r\n\t\t\tthis.$emit('save', this.formData);\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n/* Exact copy of pro plugin social login popup styling */\r\n.popup-overlay {\r\n\tposition: fixed;\r\n\ttop: 0;\r\n\tleft: 0;\r\n\tright: 0;\r\n\tbottom: 0;\r\n\tbackground: rgba(0, 0, 0, 0.5);\r\n\tdisplay: flex;\r\n\tjustify-content: center;\r\n\talign-items: center;\r\n\tz-index: 1000;\r\n}\r\n\r\n.popup-content {\r\n\tbackground-color: white;\r\n\tpadding: 10px 50px 50px 50px;\r\n\tborder-radius: 8px;\r\n\twidth: 80%;\r\n\tmax-width: 800px;\r\n}\r\n\r\n.popup-header {\r\n\tdisplay: flex;\r\n\tjustify-content: space-between;\r\n\talign-items: center;\r\n\tpadding-bottom: 14px;\r\n\tmargin-bottom: 14px;\r\n\tborder-bottom: 1px solid #e6e8ef;\r\n\twidth: 100%;\r\n\t/* Keep close control on the visual right in RTL admin */\r\n\tdirection: ltr;\r\n}\r\n\r\n.popup-header-title {\r\n\tdisplay: inline-flex;\r\n\talign-items: center;\r\n\tgap: 10px;\r\n\tmin-width: 0;\r\n}\r\n\r\n.popup-header-title__icon {\r\n\twidth: 32px;\r\n\theight: 32px;\r\n\tobject-fit: contain;\r\n\tflex-shrink: 0;\r\n}\r\n\r\n.popup-header-title__text {\r\n\tmargin: 0;\r\n\tcolor: #202939;\r\n\tfont-size: clamp(24px, 2.2vw, 32px);\r\n\tfont-weight: 600;\r\n\tline-height: 1.15;\r\n\tletter-spacing: -0.02em;\r\n\tword-break: break-word;\r\n}\r\n\r\n.popup-steps {\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n\tmargin: 0 auto 20px;\r\n\twidth: fit-content;\r\n\tmax-width: 100%;\r\n\tgap: 0;\r\n}\r\n\r\n.step {\r\n\\twidth: 40px;\r\n\theight: 40px;\r\n\tborder-radius: 50%;\r\n\tdisplay: flex;\r\n\tjustify-content: center;\r\n\talign-items: center;\r\n\tcolor: white;\r\n\tfont-weight: bold;\r\n\tfont-size: 16px;\r\n\ttransition: background-color 0.3s ease;\r\n\tbackground-color: #EBE8EB;\r\n}\r\n\r\n.step.active {\r\n\tbackground-color: #9516DF;\r\n}\r\n\r\n.popup-footer {\r\n\tdisplay: flex;\r\n\tjustify-content: space-between;\r\n\twidth: 100%;\r\n\tmargin-top: 40px;\r\n}\r\n\r\n.popup-footer-left {\r\n\tflex-grow: 1;\r\n\ttext-align: right;\r\n}\r\n\r\n.next-btn, .finish-btn, .back-btn {\r\n\tpadding: 10px 20px;\r\n\tborder: none;\r\n\tborder-radius: 5px;\r\n\tfont-size: 16px;\r\n\tcursor: pointer;\r\n}\r\n\r\n.next-btn {\r\n\tbackground: linear-gradient(262.54deg, #F7ECFD -5.51%, #8076FF 252.88%);\r\n\tcolor: #6E16DF;\r\n}\r\n\r\n.finish-btn {\r\n\tbackground: linear-gradient(262.54deg, #F7ECFD -5.51%, #8076FF 252.88%);\r\n\tcolor: #6E16DF;\r\n}\r\n\r\n.back-btn {\r\n\tbackground: linear-gradient(262.54deg, #EBE8EB -5.51%, #C9D2E3 252.88%);\r\n\tcolor: #8498B4;\r\n}\r\n\r\n.close-btn {\r\n\tposition: relative;\r\n\tfont-size: 21px;\r\n\tborder-radius: 50%;\r\n\tcursor: pointer;\r\n\tbackground: none;\r\n\tborder: 1px solid #7E869E40;\r\n\tflex-shrink: 0;\r\n}\r\n\r\n.connector {\r\n\theight: 2px;\r\n\tflex: 0 0 200px;\r\n\tbackground-color: #C9D2E3;\r\n\tmargin: 0;\r\n\tmin-width: 200px;\r\n}\r\n\r\n.step-container {\r\n\tflex: 0 0 40px;\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n\twidth: 40px;\r\n\tposition: relative;\r\n\tpadding-top: 26px;\r\n}\r\n\r\n.step-container h4 {\r\n\tposition: absolute;\r\n\tleft: 50%;\r\n\tbottom: calc(100% + 8px);\r\n\ttransform: translateX(-50%);\r\n\tfont-size: 13px;\r\n\tfont-weight: bold;\r\n\tcolor: #9516DF;\r\n\tmargin: 0;\r\n\twhite-space: nowrap;\r\n}\r\n\r\n/* First Step Styling */\r\n.aio-login-pro__first-step .aio-login-pro__first-step__title{\r\n\tcolor: #404280;\r\n\tfont-size: 24px;\r\n\tfont-style: normal;\r\n\tfont-weight: 600;\r\n\tline-height: normal;\r\n}\r\n\r\n.aio-login-pro__first-step .aio-login-pro__first-step__instruction{\r\n\tcolor: #404280;\r\n\tfont-size: 20px;\r\n\tfont-style: normal;\r\n\tfont-weight: 600;\r\n\tline-height: normal;\r\n}\r\n\r\n.aio-login-pro__first-step .aio-login-pro__first-step__content{\r\n\tcolor: #606C80;\r\n\tfont-size: 14px;\r\n\tfont-style: normal;\r\n\tfont-weight: 400;\r\n}\r\n\r\n.aio-login-pro__first-step .aio-login-pro__first-step__doc-link{\r\n\tcolor: #6E16DF;\r\n\tfont-family: Figtree;\r\n\tfont-size: 12px;\r\n\tfont-style: normal;\r\n\tfont-weight: 700;\r\n\tline-height: 12px;\r\n\ttext-decoration-line: underline;\r\n\ttext-decoration-style: solid;\r\n\ttext-decoration-skip-ink: none;\r\n\ttext-decoration-thickness: auto;\r\n\ttext-underline-offset: auto;\r\n\ttext-underline-position: from-font;\r\n}\r\n\r\n.aio-login-pro__first-step p{\r\n\tcolor: #606C80;\r\n\tfont-family: Figtree;\r\n\tfont-size: 12px;\r\n\tfont-style: normal;\r\n\tfont-weight: 400;\r\n}\r\n\r\n/* Step 2 Styling */\r\n.aio-login-pro__step2__description {\r\n\tcolor: #606C80;\r\n\tfont-size: 14px;\r\n\tmargin-bottom: 20px;\r\n}\r\n\r\n.aio-login-pro__inline-form {\r\n\tdisplay: flex;\r\n\tgap: 20px;\r\n\tmargin-top: 10px;\r\n}\r\n\r\n.aio-login-pro__form-group {\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\tflex: 1;\r\n}\r\n\r\n.aio-login-pro__form-label {\r\n\tfont-size: 14px;\r\n\tmargin-bottom: 5px;\r\n\tfont-weight: 600;\r\n}\r\n\r\n.aio-login-pro__form-input {\r\n\tpadding: 10px 35px 10px 10px;\r\n\tfont-size: 14px;\r\n\tborder-radius: 4px;\r\n\ttransition: border-color 0.2s ease-in-out;\r\n\tborder: 1px solid #EBE8EB !important;\r\n\tbackground: #FFF;\r\n\theight: 40px;\r\n\twidth: 100%;\r\n\tbox-sizing: border-box;\r\n}\r\n\r\n.aio-login-pro__form-input[type=\"text\"] {\r\n\tpadding: 10px 35px 10px 10px;\r\n}\r\n\r\n.aio-login-pro__form-input[type=\"password\"] {\r\n\tpadding: 10px 35px 10px 10px;\r\n}\r\n\r\nselect.aio-login-pro__form-input {\r\n\tpadding: 12px 30px 12px 10px;\r\n\tbackground-image: url(\"data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6,9 12,15 18,9'%3e%3c/polyline%3e%3c/svg%3e\");\r\n\tbackground-repeat: no-repeat;\r\n\tbackground-position: right 10px center;\r\n\tbackground-size: 16px;\r\n\tappearance: none;\r\n\t-moz-appearance: none;\r\n\t-webkit-appearance: none;\r\n\ttext-align: left;\r\n\ttext-align-last: left;\r\n\tline-height: 1.4;\r\n\theight: 44px;\r\n\tbox-sizing: border-box;\r\n}\r\n\r\nselect.aio-login-pro__form-input option {\r\n\ttext-align: left;\r\n\tpadding: 5px;\r\n}\r\n\r\n.aio-login-pro__form-input:focus {\r\n\toutline: none;\r\n\tborder-color: #9516df;\r\n}\r\n\r\n.aio-login-pro__required {\r\n\tcolor: #ff0000;\r\n}\r\n\r\n.aio-login-pro__error {\r\n\tborder-color: #ff0000 !important;\r\n}\r\n\r\n.aio-login-pro__error-message {\r\n\tcolor: #ff0000;\r\n\tfont-size: 12px;\r\n\tmargin-top: 5px;\r\n}\r\n\r\n/* Step 3 Styling */\r\n.aio-login-pro__step3__description {\r\n\tcolor: #606C80;\r\n\tfont-size: 14px;\r\n\tmargin-bottom: 20px;\r\n}\r\n\r\n.aio-login-pro__step3__layout {\r\n\tdisplay: flex;\r\n\tgap: 20px;\r\n}\r\n\r\n.aio-login-pro__step3__column {\r\n\tflex: 1;\r\n}\r\n\r\n/* Input with delete button */\r\n.input-with-delete {\r\n\tposition: relative;\r\n}\r\n\r\n.clear-btn {\r\n\tposition: absolute;\r\n\tright: 8px;\r\n\ttop: 50%;\r\n\ttransform: translateY(-50%);\r\n\tbackground: transparent;\r\n\tcolor: #999;\r\n\tborder: none;\r\n\twidth: 24px;\r\n\theight: 24px;\r\n\tcursor: pointer;\r\n\tfont-size: 18px;\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n\tz-index: 10;\r\n\tpointer-events: auto;\r\n}\r\n\r\n.clear-btn:hover {\r\n\tcolor: #999;\r\n}\r\n\r\n/* Global overrides for pro plugin compatibility */\r\nbody.aio-login-modal-open {\r\n\toverflow: hidden !important;\r\n}\r\n\r\n/* Ensure modal is always on top */\r\n.popup-overlay * {\r\n\tbox-sizing: border-box !important;\r\n}\r\n\r\n/* Social login popup parity overrides */\r\n.popup-content {\r\n\tpadding: 28px 50px 36px 50px;\r\n\tmax-height: min(90vh, calc(100vh - 32px));\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\tbox-sizing: border-box;\r\n\toverflow: hidden;\r\n\tmargin: auto;\r\n}\r\n\r\n.popup-header {\r\n\talign-items: center;\r\n\tjustify-content: space-between;\r\n\tpadding-bottom: 16px;\r\n\tmargin-bottom: 50px;\r\n\tborder-bottom: 1px solid #e3e7ef;\r\n\tflex-shrink: 0;\r\n}\r\n\r\n.popup-header-title__icon {\r\n\twidth: 36px;\r\n\theight: 36px;\r\n\tobject-fit: contain;\r\n}\r\n\r\n.popup-header-title__text {\r\n\tmargin: 0 0 2px 10px;\r\n\tcolor: #202939;\r\n\tfont-size: clamp(18px, 2.5vw, 30px);\r\n\tfont-weight: 600;\r\n\tline-height: 1.35;\r\n\tword-break: normal;\r\n}\r\n\r\n.popup-modal-body {\r\n\tflex: 1 1 auto;\r\n\tmin-height: 0;\r\n\toverflow-x: hidden;\r\n\toverflow-y: auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\toverscroll-behavior: contain;\r\n\tpadding: 4px 8px 0 0;\r\n\tbox-sizing: border-box;\r\n\tscrollbar-width: thin;\r\n\tscrollbar-color: #c9d2e3 transparent;\r\n}\r\n\r\n.popup-steps {\r\n\tpadding: 0;\r\n\tflex-shrink: 0;\r\n}\r\n\r\n.step {\r\n\twidth: 30px;\r\n\theight: 30px;\r\n\tfont-size: 14px;\r\n}\r\n\r\n.connector {\r\n\tflex: 0 0 210px;\r\n\tmin-width: 210px;\r\n}\r\n\r\n.step-container {\r\n\tflex: 0 0 30px;\r\n\twidth: 30px;\r\n\tpadding-top: 0;\r\n}\r\n\r\n.step-container h4 {\r\n\tfont-size: 14px;\r\n\tfont-weight: 600;\r\n\tline-height: 1.2;\r\n\ttext-align: center;\r\n}\r\n\r\n.popup-footer {\r\n\tflex-shrink: 0;\r\n\tmargin-top: auto;\r\n\tpadding-top: 16px;\r\n\tborder-top: 1px solid #e3e7ef;\r\n}\r\n\r\n.popup-footer-left {\r\n\ttext-align: right;\r\n}\r\n\r\n.next-btn,\r\n.finish-btn,\r\n.back-btn {\r\n\tpadding: 14px 28px;\r\n\tfont-weight: 700;\r\n}\r\n\r\n.back-btn {\r\n\tcolor: #404280;\r\n}\r\n</style>\r\n\r\n","<template>\n\t<div v-if=\"page_loaded\" class=\"aio-login-pro__social-login__card\">\n\t\t<span v-if=\"showProMarketingBadge\" class=\"aio-login__pro-tab\">PRO</span>\n\n\t\t<div\n\t\t\tv-if=\"statusBadge && hasPro\"\n\t\t\tclass=\"configured-tag\"\n\t\t\t:class=\"{ 'enabled': statusBadge === 'green', 'disabled': statusBadge === 'orange' }\"\n\t\t>\n\t\t\t{{ statusBadgeText }}\n\t\t</div>\n\n\t\t<div class=\"aio-login-pro__social-login__card__top\">\n\t\t\t<img :src=\"getSrc('turnstile')\" :alt=\"'Cloudflare Turnstile'\" />\n\t\t\t<p>\n\t\t\t\t<span>Cloudflare Turnstile</span>\n\t\t\t</p>\n\t\t</div>\n\n\t\t<div class=\"aio-login-pro__social-login__card__bottom\">\n\t\t\t<label class=\"toggle-switch\" @click=\"handleToggleClick\">\n\t\t\t\t<aio-login-toggle\n\t\t\t\t\tid=\"turnstile\"\n\t\t\t\t\tname=\"turnstile\"\n\t\t\t\t\tv-on:toggle-input=\"handleToggle\"\n\t\t\t\t\t:enabled=\"enabled\"\n\t\t\t\t\t:disabled=\"!hasPro\"\n\t\t\t\t/>\n\t\t\t</label>\n\t\t\t<button\n\t\t\t\tv-if=\"enabled && hasPro\"\n\t\t\t\tclass=\"configure-btn\"\n\t\t\t\t@click=\"configureCaptcha\"\n\t\t\t\t@mouseenter=\"onHover\"\n\t\t\t\t@mouseleave=\"onLeave\"\n\t\t\t>\n\t\t\t\tConfigure\n\t\t\t</button>\n\t\t</div>\n\n\t\t<div v-if=\"!hasPro\" class=\"aio-login-t-content-overflow\" @click.stop=\"iWasTriggered\"></div>\n\n\t\t<aio-login-turnstile-popup\n\t\t\t:show=\"showPopup\"\n\t\t\t:initial-data=\"popupData\"\n\t\t\t@close=\"closePopup\"\n\t\t\t@save=\"saveSettings\"\n\t\t/>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'aio-login-turnstile-card',\n\n\tprops: {\n\t\thasPro: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tenabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tconfigData: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({})\n\t\t}\n\t},\n\n\tdata: () => ({\n\t\tassetsUrl: aio_login__app_object.assets_url,\n\t\tpage_loaded: false,\n\t\tshowPopup: false,\n\t\tpopupData: {},\n\t\tisHovered: false\n\t}),\n\n\tcomputed: {\n\t\tproPluginActive() {\n\t\t\tconst o = typeof window !== 'undefined' ? window.aio_login__app_object : null;\n\t\t\treturn !!( o && ( o.has_pro === 'true' || o.has_pro === true ) );\n\t\t},\n\t\tshowProMarketingBadge() {\n\t\t\treturn ! this.hasPro && ! this.proPluginActive;\n\t\t},\n\t\tstatusBadge() {\n\t\t\tif (this.enabled && this.hasValidKeys()) {\n\t\t\t\treturn 'green';\n\t\t\t} else if (!this.enabled && this.hasValidKeys()) {\n\t\t\t\treturn 'orange';\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tstatusBadgeText() {\n\t\t\treturn this.statusBadge ? 'Configured' : '';\n\t\t}\n\t},\n\n\tmethods: {\n\t\tgetSrc(icon) {\n\t\t\tif (icon === 'turnstile') {\n\t\t\t\treturn this.assetsUrl + 'images/icons/turnstile.svg';\n\t\t\t}\n\t\t\treturn this.assetsUrl + `images/icons/${icon}.png`;\n\t\t},\n\t\thasValidKeys() {\n\t\t\treturn this.configData.siteKey && this.configData.secretKey;\n\t\t},\n\t\thandleToggleClick(event) {\n\t\t\tif (!this.hasPro) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\tthis.iWasTriggered();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\thandleToggle(enabled) {\n\t\t\tif (this.hasPro) {\n\t\t\t\tthis.$emit('toggle-captcha', enabled);\n\t\t\t} else {\n\t\t\t\tthis.iWasTriggered();\n\t\t\t}\n\t\t},\n\t\tconfigureCaptcha() {\n\t\t\tif (this.hasPro) {\n\t\t\t\tthis.popupData = { ...this.configData };\n\t\t\t\tthis.showPopup = true;\n\t\t\t} else {\n\t\t\t\tthis.iWasTriggered();\n\t\t\t}\n\t\t},\n\t\tiWasTriggered() {\n\t\t\tlet parent = this.$parent;\n\t\t\twhile (parent) {\n\t\t\t\tif (parent.popup !== undefined) {\n\t\t\t\t\tparent.popup = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tparent = parent.$parent;\n\t\t\t}\n\t\t\tif (this.$parent && this.$parent.$parent) {\n\t\t\t\tthis.$parent.$parent.popup = true;\n\t\t\t}\n\t\t},\n\t\tclosePopup() {\n\t\t\tthis.showPopup = false;\n\t\t\tthis.popupData = {};\n\t\t},\n\t\tsaveSettings(data) {\n\t\t\tthis.$emit('save-settings', data);\n\t\t\tthis.closePopup();\n\t\t},\n\t\tonHover() {\n\t\t\tthis.isHovered = true;\n\t\t},\n\t\tonLeave() {\n\t\t\tthis.isHovered = false;\n\t\t}\n\t},\n\n\tmounted() {\n\t\tthis.page_loaded = true;\n\t}\n}\n</script>\n\n<style scoped>\n.aio-login-t-content-overflow { position: absolute; top: 0; left: 0; width: 100%; height: 100%; backdrop-filter: blur(0.5px); z-index: 100; cursor: pointer; background: rgba(255, 255, 255, 0.3); }\n.aio-login__pro-tab { position: absolute;\n\ttop: 8px;\n\tleft: 8px;\n\tdisplay: inline-flex;\n    align-items: center;\n    justify-content: center;\n    box-sizing: border-box;\n    min-width: 34px;\n    padding: 5px 6px;\n    margin: 0;\n    background: #9516DF;\n    border-radius: 3px;\n    color: #FFFFFF;\n    font-family: Figtree, sans-serif;\n    font-size: 12px;\n    font-weight: 700;\n    line-height: 1;\n    letter-spacing: 0.02em;\n    text-transform: uppercase;\n    /* height: 18px; */\n    flex-shrink: 0;\n\tz-index: 101; }\n.configured-tag { position: absolute !important; top: 8px !important; right: 8px !important; padding: 3px 6px !important; font-size: 10px !important; font-weight: 700 !important; border-radius: 8px !important; color: white !important; z-index: 999 !important; text-transform: uppercase !important; white-space: nowrap !important; }\n.configured-tag.enabled { background-color: #22c55e !important; }\n.configured-tag.disabled { background-color: #f97316 !important; }\n.aio-login-pro__social-login__card { position: relative !important; overflow: visible !important; border: 1px solid #ebe8eb; border-radius: 10px; height: 200px; width: 320px; display: flex; flex-direction: column; justify-content: space-between; }\n.aio-login-pro__social-login__card__top { flex: 4; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 10px; text-align: center; }\n.aio-login-pro__social-login__card__top img { width: 48px; height: 48px; margin-bottom: 10px; object-fit: contain; }\n.aio-login-pro__social-login__card__top p { font-size: 14px; font-weight: bold; margin: 0 0 5px 0; }\n.aio-login-pro__social-login__card__bottom { flex: 1; display: flex; justify-content: space-between; align-items: center; padding: 10px; border-top: 1px solid #ebe8eb; }\n.configure-btn { background: #f7ecfd; color: #6e16df; border: none; border-radius: 4px; font-size: 14px; cursor: pointer; transition: 0.3s; padding: 9px 18px; }\n.configure-btn:hover { background-color: #C9D2E3; color: #6e16df; }\n</style>\n","<template>\n\t<div v-if=\"show\" class=\"popup-overlay\" @click=\"closePopup\">\n\t\t<div class=\"popup-content\" @click.stop>\n\t\t\t<div class=\"popup-header\">\n\t\t\t\t<div class=\"popup-header-title\">\n\t\t\t\t\t<img\n\t\t\t\t\t\t:src=\"popupHeaderIcon\"\n\t\t\t\t\t\talt=\"Cloudflare Turnstile\"\n\t\t\t\t\t\tclass=\"popup-header-title__icon\"\n\t\t\t\t\t/>\n\t\t\t\t\t<h2 class=\"popup-header-title__text\">Turnstile Configuration</h2>\n\t\t\t\t</div>\n\t\t\t\t<button class=\"close-btn\" @click=\"closePopup\">&times;</button>\n\t\t\t</div>\n\n\t\t\t<div class=\"popup-steps\">\n\t\t\t\t<div class=\"step-container\">\n\t\t\t\t\t<h4>Getting Started</h4>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"step\"\n\t\t\t\t\t\t:class=\"{ active: currentStep >= 1 }\"\n\t\t\t\t\t\t:style=\"{ backgroundColor: currentStep >= 1 ? '#9516DF' : '#EBE8EB', color: currentStep < 1 ? '#9516DF' : 'white' }\">\n\t\t\t\t\t\t1\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"connector\" :style=\"{ backgroundColor: currentStep >= 2 ? '#9516DF' : '#C9D2E3' }\"></div>\n\n\t\t\t\t<div class=\"step-container\">\n\t\t\t\t\t<h4>Configuration</h4>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"step\"\n\t\t\t\t\t\t:class=\"{ active: currentStep >= 2 }\"\n\t\t\t\t\t\t:style=\"{ backgroundColor: currentStep >= 2 ? '#9516DF' : '#EBE8EB', color: currentStep < 2 ? '#9516DF' : 'white' }\">\n\t\t\t\t\t\t2\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"connector\" :style=\"{ backgroundColor: currentStep >= 3 ? '#9516DF' : '#C9D2E3' }\"></div>\n\n\t\t\t\t<div class=\"step-container\">\n\t\t\t\t\t<h4>Settings</h4>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"step\"\n\t\t\t\t\t\t:class=\"{ active: currentStep >= 3 }\"\n\t\t\t\t\t\t:style=\"{ backgroundColor: currentStep >= 3 ? '#9516DF' : '#EBE8EB', color: currentStep < 3 ? '#9516DF' : 'white' }\">\n\t\t\t\t\t\t3\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"popup-modal-body\">\n\t\t\t<div v-if=\"currentStep === 1\" class=\"aio-login-pro__first-step\">\n\t\t\t\t<h4 class=\"aio-login-pro__first-step__title\">Getting Started</h4>\n\t\t\t\t<p class=\"aio-login-pro__first-step__content\">To protect your website from spam and bots, start by adding Cloudflare Turnstile to your WordPress login page.</p>\n\t\t\t\t<h5 class=\"aio-login-pro__first-step__instruction\">Instruction:</h5>\n\t\t\t\t<p class=\"aio-login-pro__first-step__instructions\">1. Register your site and get the keys -> <a href=\"https://dash.cloudflare.com/?to=/:account/turnstile\" target=\"_blank\" class=\"aio-login-pro__first-step__doc-link\">Click Here</a></p>\n\t\t\t\t<p class=\"aio-login-pro__first-step__instructions\">2. Need help creating keys? -> <a href=\"https://developers.cloudflare.com/turnstile/get-started/\" target=\"_blank\" class=\"aio-login-pro__first-step__doc-link\">Click Here</a></p>\n\t\t\t\t<p class=\"aio-login-pro__first-step__next-step-note\">3. Once you have your keys, click Next to enter them.</p>\n\t\t\t</div>\n\n\t\t\t<div v-if=\"currentStep === 2\" class=\"aio-login-pro__step2\">\n\t\t\t\t<p class=\"aio-login-pro__step2__description\">\n\t\t\t\t\tEnter your Cloudflare Turnstile details.\n\t\t\t\t</p>\n\t\t\t\t<div class=\"aio-login-pro__inline-form\">\n\t\t\t\t\t<div class=\"aio-login-pro__form-group\">\n\t\t\t\t\t\t<label for=\"turnstile-site-key\" class=\"aio-login-pro__form-label\">\n\t\t\t\t\t\t\tSite Key <span class=\"aio-login-pro__required\">*</span>\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<div class=\"input-with-delete\">\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tid=\"turnstile-site-key\"\n\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\tv-model=\"formData.siteKey\"\n\t\t\t\t\t\t\t\tclass=\"aio-login-pro__form-input\"\n\t\t\t\t\t\t\t\t:class=\"{ 'aio-login-pro__error': showValidationError && !formData.siteKey.trim() }\"\n\t\t\t\t\t\t\t\tplaceholder=\"Enter Site Key\"\n\t\t\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<button v-if=\"formData.siteKey\" @click=\"clearField('siteKey')\" class=\"clear-btn\">×</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tv-if=\"showValidationError && !formData.siteKey.trim()\"\n\t\t\t\t\t\t\tclass=\"aio-login-pro__error-message\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tThis field is required\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"aio-login-pro__form-group\">\n\t\t\t\t\t\t<label for=\"turnstile-secret-key\" class=\"aio-login-pro__form-label\">\n\t\t\t\t\t\t\tSecret Key <span class=\"aio-login-pro__required\">*</span>\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<div class=\"input-with-delete\">\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tid=\"turnstile-secret-key\"\n\t\t\t\t\t\t\t\ttype=\"password\"\n\t\t\t\t\t\t\t\tv-model=\"formData.secretKey\"\n\t\t\t\t\t\t\t\tclass=\"aio-login-pro__form-input\"\n\t\t\t\t\t\t\t\t:class=\"{ 'aio-login-pro__error': showValidationError && !formData.secretKey.trim() }\"\n\t\t\t\t\t\t\t\tplaceholder=\"Enter Secret Key\"\n\t\t\t\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<button v-if=\"formData.secretKey\" @click=\"clearField('secretKey')\" class=\"clear-btn\">×</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tv-if=\"showValidationError && !formData.secretKey.trim()\"\n\t\t\t\t\t\t\tclass=\"aio-login-pro__error-message\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tThis field is required\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div v-if=\"currentStep === 3\" class=\"aio-login-pro__step3\">\n\t\t\t\t<p class=\"aio-login-pro__step3__description\">\n\t\t\t\t\tThese settings are not compulsory.\n\t\t\t\t</p>\n\t\t\t\t<div class=\"aio-login-pro__step3__layout\">\n\t\t\t\t\t<div class=\"aio-login-pro__step3__column\">\n\t\t\t\t\t\t<div class=\"aio-login-pro__form-group\">\n\t\t\t\t\t\t\t<label for=\"turnstile-language\" class=\"aio-login-pro__form-label\">Language for Captcha:</label>\n\t\t\t\t\t\t\t<select id=\"turnstile-language\" v-model=\"formData.language\" class=\"aio-login-pro__form-input\">\n\t\t\t\t\t\t\t\t<option value=\"auto\">Auto (Browser language)</option>\n\t\t\t\t\t\t\t\t<option value=\"en\">English</option>\n\t\t\t\t\t\t\t\t<option value=\"ar\">Arabic</option>\n\t\t\t\t\t\t\t\t<option value=\"de\">German</option>\n\t\t\t\t\t\t\t\t<option value=\"es\">Spanish</option>\n\t\t\t\t\t\t\t\t<option value=\"fr\">French</option>\n\t\t\t\t\t\t\t\t<option value=\"hi\">Hindi</option>\n\t\t\t\t\t\t\t\t<option value=\"id\">Indonesian</option>\n\t\t\t\t\t\t\t\t<option value=\"it\">Italian</option>\n\t\t\t\t\t\t\t\t<option value=\"ja\">Japanese</option>\n\t\t\t\t\t\t\t\t<option value=\"ko\">Korean</option>\n\t\t\t\t\t\t\t\t<option value=\"nl\">Dutch</option>\n\t\t\t\t\t\t\t\t<option value=\"pl\">Polish</option>\n\t\t\t\t\t\t\t\t<option value=\"pt\">Portuguese</option>\n\t\t\t\t\t\t\t\t<option value=\"ru\">Russian</option>\n\t\t\t\t\t\t\t\t<option value=\"tr\">Turkish</option>\n\t\t\t\t\t\t\t\t<option value=\"uk\">Ukrainian</option>\n\t\t\t\t\t\t\t\t<option value=\"ur\">Urdu</option>\n\t\t\t\t\t\t\t\t<option value=\"vi\">Vietnamese</option>\n\t\t\t\t\t\t\t\t<option value=\"zh-CN\">Chinese (Simplified)</option>\n\t\t\t\t\t\t\t\t<option value=\"zh-TW\">Chinese (Traditional)</option>\n\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"aio-login-pro__form-group\">\n\t\t\t\t\t\t\t<label for=\"turnstile-theme\" class=\"aio-login-pro__form-label\">Theme:</label>\n\t\t\t\t\t\t\t<select id=\"turnstile-theme\" v-model=\"formData.theme\" class=\"aio-login-pro__form-input\">\n\t\t\t\t\t\t\t\t<option value=\"auto\">Auto</option>\n\t\t\t\t\t\t\t\t<option value=\"light\">Light</option>\n\t\t\t\t\t\t\t\t<option value=\"dark\">Dark</option>\n\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"aio-login-pro__form-group\">\n\t\t\t\t\t\t\t<label for=\"turnstile-size\" class=\"aio-login-pro__form-label\">Size:</label>\n\t\t\t\t\t\t\t<select id=\"turnstile-size\" v-model=\"formData.size\" class=\"aio-login-pro__form-input\">\n\t\t\t\t\t\t\t\t<option value=\"normal\">Normal</option>\n\t\t\t\t\t\t\t\t<option value=\"compact\">Compact</option>\n\t\t\t\t\t\t\t\t<option value=\"flexible\">Flexible</option>\n\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t</div>\n\n\t\t\t<div class=\"popup-footer\">\n\t\t\t\t<button v-if=\"currentStep === 2\" @click=\"prevStep\" class=\"back-btn\">Back</button>\n\t\t\t\t<button v-if=\"currentStep === 3\" @click=\"prevStep\" class=\"back-btn\">Back</button>\n\t\t\t\t<div class=\"popup-footer-left\">\n\t\t\t\t\t<button v-if=\"currentStep === 1\" @click=\"nextStep\" class=\"next-btn\">Next</button>\n\t\t\t\t</div>\n\t\t\t\t<button v-if=\"currentStep === 2\" @click=\"nextStep\" class=\"next-btn\">Next</button>\n\t\t\t\t<button v-if=\"currentStep === 3\" @click=\"finish\" class=\"finish-btn\">Finished</button>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'aio-login-turnstile-popup',\n\n\tprops: {\n\t\tshow: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false\n\t\t},\n\t\tinitialData: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({})\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tassetsUrl: aio_login__app_object.assets_url,\n\t\t\tpopupHeaderIcon: aio_login__app_object.assets_url + 'images/icons/turnstile.svg',\n\t\t\tcurrentStep: 1,\n\t\t\tshowValidationError: false,\n\t\t\tformData: {\n\t\t\t\tsiteKey: '',\n\t\t\t\tsecretKey: '',\n\t\t\t\ttheme: 'auto',\n\t\t\t\tsize: 'normal',\n\t\t\t\tlanguage: 'auto'\n\t\t\t}\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tcanProceed() {\n\t\t\tif (this.currentStep === 1) return true;\n\t\t\tif (this.currentStep === 2) {\n\t\t\t\treturn this.formData.siteKey.trim() !== '' && this.formData.secretKey.trim() !== '';\n\t\t\t}\n\t\t\tif (this.currentStep === 3) return true;\n\t\t\treturn false;\n\t\t}\n\t},\n\n\twatch: {\n\t\tshow(newVal) {\n\t\t\tif (newVal) {\n\t\t\t\tthis.currentStep = 1;\n\t\t\t\tthis.formData = { ...this.initialData };\n\t\t\t\tif (!this.formData.theme) this.formData.theme = 'auto';\n\t\t\t\tif (!this.formData.size) this.formData.size = 'normal';\n\t\t\t\tif (!this.formData.language) this.formData.language = 'auto';\n\t\t\t\tthis.showValidationError = false;\n\t\t\t\tdocument.body.style.overflow = 'hidden';\n\t\t\t\tdocument.body.classList.add('aio-login-modal-open');\n\t\t\t} else {\n\t\t\t\tdocument.body.style.overflow = '';\n\t\t\t\tdocument.body.classList.remove('aio-login-modal-open');\n\t\t\t}\n\t\t}\n\t},\n\n\tmethods: {\n\t\tclosePopup() {\n\t\t\tthis.$emit('close');\n\t\t},\n\n\t\tnextStep() {\n\t\t\tif (this.currentStep === 2) {\n\t\t\t\tthis.showValidationError = true;\n\t\t\t\tif (!this.canProceed) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.canProceed && this.currentStep < 3) {\n\t\t\t\tthis.currentStep++;\n\t\t\t}\n\t\t},\n\n\t\tprevStep() {\n\t\t\tif (this.currentStep > 1) {\n\t\t\t\tthis.currentStep--;\n\t\t\t}\n\t\t},\n\n\t\tclearField(field) {\n\t\t\tthis.formData[field] = '';\n\t\t},\n\n\t\tfinish() {\n\t\t\tthis.$emit('save', this.formData);\n\t\t}\n\t}\n}\n</script>\n\n<style scoped>\n.popup-overlay {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tbackground: rgba(0, 0, 0, 0.5);\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\tz-index: 1000;\n}\n\n.popup-content {\n\tbackground-color: white;\n\tpadding: 10px 50px 50px 50px;\n\tborder-radius: 8px;\n\twidth: 80%;\n\tmax-width: 800px;\n}\n\n.popup-header {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n\tpadding-bottom: 14px;\n\tmargin-bottom: 14px;\n\tborder-bottom: 1px solid #e6e8ef;\n\twidth: 100%;\n\t/* Keep close control on the visual right in RTL admin */\n\tdirection: ltr;\n}\n\n.popup-header-title {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 10px;\n\tmin-width: 0;\n}\n\n.popup-header-title__icon {\n\twidth: 32px;\n\theight: 32px;\n\tobject-fit: contain;\n\tflex-shrink: 0;\n}\n\n.popup-header-title__text {\n\tmargin: 0;\n\tcolor: #202939;\n\tfont-size: clamp(24px, 2.2vw, 32px);\n\tfont-weight: 600;\n\tline-height: 1.15;\n\tletter-spacing: -0.02em;\n\tword-break: break-word;\n}\n\n.popup-steps {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tmargin: 0 auto 20px;\n\twidth: fit-content;\n\tmax-width: 100%;\n\tgap: 0;\n}\n\n.step {\n\twidth: 40px;\n\theight: 40px;\n\tborder-radius: 50%;\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\tcolor: white;\n\tfont-weight: bold;\n\tfont-size: 16px;\n\ttransition: background-color 0.3s ease;\n\tbackground-color: #EBE8EB;\n}\n\n.step.active {\n\tbackground-color: #9516DF;\n}\n\n.popup-footer {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\twidth: 100%;\n\tmargin-top: 40px;\n}\n\n.popup-footer-left {\n\tflex-grow: 1;\n\ttext-align: right;\n}\n\n.next-btn, .finish-btn, .back-btn {\n\tpadding: 10px 20px;\n\tborder: none;\n\tborder-radius: 5px;\n\tfont-size: 16px;\n\tcursor: pointer;\n}\n\n.next-btn {\n\tbackground: linear-gradient(262.54deg, #F7ECFD -5.51%, #8076FF 252.88%);\n\tcolor: #6E16DF;\n}\n\n.finish-btn {\n\tbackground: linear-gradient(262.54deg, #F7ECFD -5.51%, #8076FF 252.88%);\n\tcolor: #6E16DF;\n}\n\n.back-btn {\n\tbackground: linear-gradient(262.54deg, #EBE8EB -5.51%, #C9D2E3 252.88%);\n\tcolor: #8498B4;\n}\n\n.close-btn {\n\tposition: relative;\n\tfont-size: 21px;\n\tborder-radius: 50%;\n\tcursor: pointer;\n\tbackground: none;\n\tborder: 1px solid #7E869E40;\n\tflex-shrink: 0;\n}\n\n.connector {\n\theight: 2px;\n\tflex: 0 0 200px;\n\tbackground-color: #C9D2E3;\n\tmargin: 0;\n\tmin-width: 200px;\n}\n\n.step-container {\n\tflex: 0 0 40px;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: 40px;\n\tposition: relative;\n\tpadding-top: 26px;\n}\n\n.step-container h4 {\n\tposition: absolute;\n\tleft: 50%;\n\tbottom: calc(100% + 8px);\n\ttransform: translateX(-50%);\n\tfont-size: 13px;\n\tfont-weight: bold;\n\tcolor: #9516DF;\n\tmargin: 0;\n\twhite-space: nowrap;\n}\n\n.aio-login-pro__first-step .aio-login-pro__first-step__title{\n\tcolor: #404280;\n\tfont-size: 24px;\n\tfont-style: normal;\n\tfont-weight: 600;\n\tline-height: normal;\n}\n\n.aio-login-pro__first-step .aio-login-pro__first-step__instruction{\n\tcolor: #404280;\n\tfont-size: 20px;\n\tfont-style: normal;\n\tfont-weight: 600;\n\tline-height: normal;\n}\n\n.aio-login-pro__first-step .aio-login-pro__first-step__content{\n\tcolor: #606C80;\n\tfont-size: 14px;\n\tfont-style: normal;\n\tfont-weight: 400;\n}\n\n.aio-login-pro__first-step .aio-login-pro__first-step__doc-link{\n\tcolor: #6E16DF;\n\tfont-family: Figtree;\n\tfont-size: 12px;\n\tfont-style: normal;\n\tfont-weight: 700;\n\tline-height: 12px;\n\ttext-decoration-line: underline;\n\ttext-decoration-style: solid;\n\ttext-decoration-skip-ink: none;\n\ttext-decoration-thickness: auto;\n\ttext-underline-offset: auto;\n\ttext-underline-position: from-font;\n}\n\n.aio-login-pro__first-step p{\n\tcolor: #606C80;\n\tfont-family: Figtree;\n\tfont-size: 12px;\n\tfont-style: normal;\n\tfont-weight: 400;\n}\n\n.aio-login-pro__step2__description {\n\tcolor: #606C80;\n\tfont-size: 14px;\n\tmargin-bottom: 20px;\n}\n\n.aio-login-pro__inline-form {\n\tdisplay: flex;\n\tgap: 20px;\n\tmargin-top: 10px;\n}\n\n.aio-login-pro__form-group {\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex: 1;\n}\n\n.aio-login-pro__form-label {\n\tfont-size: 14px;\n\tmargin-bottom: 5px;\n\tfont-weight: 600;\n}\n\n.aio-login-pro__form-input {\n\tpadding: 10px 35px 10px 10px;\n\tfont-size: 14px;\n\tborder-radius: 4px;\n\ttransition: border-color 0.2s ease-in-out;\n\tborder: 1px solid #EBE8EB !important;\n\tbackground: #FFF;\n\theight: 40px;\n\twidth: 100%;\n\tbox-sizing: border-box;\n}\n\n.aio-login-pro__form-input[type=\"text\"],\n.aio-login-pro__form-input[type=\"password\"] {\n\tpadding: 10px 35px 10px 10px;\n}\n\nselect.aio-login-pro__form-input {\n\tpadding: 12px 30px 12px 10px;\n\tbackground-image: url(\"data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6,9 12,15 18,9'%3e%3c/polyline%3e%3c/svg%3e\");\n\tbackground-repeat: no-repeat;\n\tbackground-position: right 10px center;\n\tbackground-size: 16px;\n\tappearance: none;\n\t-moz-appearance: none;\n\t-webkit-appearance: none;\n\ttext-align: left;\n\ttext-align-last: left;\n\tline-height: 1.4;\n\theight: 44px;\n\tbox-sizing: border-box;\n}\n\nselect.aio-login-pro__form-input option {\n\ttext-align: left;\n\tpadding: 5px;\n}\n\n.aio-login-pro__form-input:focus {\n\toutline: none;\n\tborder-color: #9516df;\n}\n\n.aio-login-pro__required {\n\tcolor: #ff0000;\n}\n\n.aio-login-pro__error {\n\tborder-color: #ff0000 !important;\n}\n\n.aio-login-pro__error-message {\n\tcolor: #ff0000;\n\tfont-size: 12px;\n\tmargin-top: 5px;\n}\n\n.aio-login-pro__step3__description {\n\tcolor: #606C80;\n\tfont-size: 14px;\n\tmargin-bottom: 20px;\n}\n\n.aio-login-pro__step3__layout {\n\tdisplay: flex;\n\tgap: 20px;\n}\n\n.aio-login-pro__step3__column {\n\tflex: 1;\n}\n\n.input-with-delete {\n\tposition: relative;\n}\n\n.clear-btn {\n\tposition: absolute;\n\tright: 8px;\n\ttop: 50%;\n\ttransform: translateY(-50%);\n\tbackground: transparent;\n\tcolor: #999;\n\tborder: none;\n\twidth: 24px;\n\theight: 24px;\n\tcursor: pointer;\n\tfont-size: 18px;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tz-index: 10;\n\tpointer-events: auto;\n}\n\n.clear-btn:hover {\n\tcolor: #999;\n}\n\nbody.aio-login-modal-open {\n\toverflow: hidden !important;\n}\n\n.popup-overlay * {\n\tbox-sizing: border-box !important;\n}\n\n/* Social login popup parity overrides */\n.popup-content {\n\tpadding: 28px 50px 36px 50px;\n\tmax-height: min(90vh, calc(100vh - 32px));\n\tdisplay: flex;\n\tflex-direction: column;\n\tbox-sizing: border-box;\n\toverflow: hidden;\n\tmargin: auto;\n}\n\n.popup-header {\n\talign-items: center;\n\tjustify-content: space-between;\n\tpadding-bottom: 16px;\n\tmargin-bottom: 50px;\n\tborder-bottom: 1px solid #e3e7ef;\n\tflex-shrink: 0;\n}\n\n.popup-header-title__icon {\n\twidth: 36px;\n\theight: 36px;\n\tobject-fit: contain;\n}\n\n.popup-header-title__text {\n\tmargin: 0 0 2px 10px;\n\tcolor: #202939;\n\tfont-size: clamp(18px, 2.5vw, 30px);\n\tfont-weight: 600;\n\tline-height: 1.35;\n\tword-break: normal;\n}\n\n.popup-modal-body {\n\tflex: 1 1 auto;\n\tmin-height: 0;\n\toverflow-x: hidden;\n\toverflow-y: auto;\n\t-webkit-overflow-scrolling: touch;\n\toverscroll-behavior: contain;\n\tpadding: 4px 8px 0 0;\n\tbox-sizing: border-box;\n\tscrollbar-width: thin;\n\tscrollbar-color: #c9d2e3 transparent;\n}\n\n.popup-steps {\n\tpadding: 0;\n\tflex-shrink: 0;\n}\n\n.step {\n\twidth: 30px;\n\theight: 30px;\n\tfont-size: 14px;\n}\n\n.connector {\n\tflex: 0 0 210px;\n\tmin-width: 210px;\n}\n\n.step-container {\n\tflex: 0 0 30px;\n\twidth: 30px;\n\tpadding-top: 0;\n}\n\n.step-container h4 {\n\tfont-size: 14px;\n\tfont-weight: 600;\n\tline-height: 1.2;\n\ttext-align: center;\n}\n\n.popup-footer {\n\tflex-shrink: 0;\n\tmargin-top: auto;\n\tpadding-top: 16px;\n\tborder-top: 1px solid #e3e7ef;\n}\n\n.popup-footer-left {\n\ttext-align: right;\n}\n\n.next-btn,\n.finish-btn,\n.back-btn {\n\tpadding: 14px 28px;\n\tfont-weight: 700;\n}\n\n.back-btn {\n\tcolor: #404280;\n}\n</style>\n","<template>\n\t<div v-if=\"show\" class=\"popup-overlay\" @click=\"closePopup\">\n\t\t<div class=\"popup-content woocommerce-popup\" @click.stop>\n\t\t\t<div class=\"popup-header\">\n\t\t\t\t<div class=\"popup-title\">\n\t\t\t\t\t<img :src=\"getWooCommerceIcon()\" alt=\"WooCommerce\" class=\"woocommerce-icon\" />\n\t\t\t\t\t<h2>WooCommerce Integration Settings</h2>\n\t\t\t\t</div>\n\t\t\t\t<a href=\"#\" class=\"back-link\" @click.prevent=\"closePopup\">← Back</a>\n\t\t\t</div>\n\n\t\t\t<div class=\"woocommerce-settings\">\n\t\t\t\t<!-- WooCommerce Integration Section -->\n\t\t\t\t<div class=\"settings-section\">\n\t\t\t\t\t<div class=\"section-header\">\n\t\t\t\t\t\t<h3>WooCommerce Integration</h3>\n\t\t\t\t\t\t<p class=\"section-description\">Enable WooCommerce integration to secure user interactions with Social Login and CAPTCHA.</p>\n\t\t\t\t\t\t<div v-if=\"!woocommerceActive\" class=\"woocommerce-notice notice notice-warning inline\" style=\"margin-top: 15px;\">\n\t\t\t\t\t\t\t<p><strong>WooCommerce is required for this integration.</strong> Please install and activate the WooCommerce plugin to use this feature.</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"toggle-wrapper\">\n\t\t\t\t\t\t<label class=\"toggle-switch\" :class=\"{ 'disabled': !woocommerceActive }\">\n\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\tid=\"woocommerce-integration\"\n\t\t\t\t\t\t\t\tname=\"woocommerce-integration\"\n\t\t\t\t\t\t\t\tv-on:toggle-input=\"handleWooCommerceToggle\"\n\t\t\t\t\t\t\t\t:enabled=\"formData.woocommerceEnabled && woocommerceActive\"\n\t\t\t\t\t\t\t\t:disabled=\"!woocommerceActive\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Captcha Section -->\n\t\t\t\t<div class=\"settings-section\">\n\t\t\t\t\t<div class=\"section-header\">\n\t\t\t\t\t\t<h3>Captcha</h3>\n\t\t\t\t\t\t<p class=\"section-description\">\n\t\t\t\t\t\t\tTo protect forms from bots and spam by adding Captcha, \n\t\t\t\t\t\t\t<a href=\"#\" class=\"link-text\" @click.prevent=\"goToCaptcha\">click here</a>.\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"toggle-wrapper\">\n\t\t\t\t\t\t<label class=\"toggle-switch\">\n\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\tid=\"captcha-settings\"\n\t\t\t\t\t\t\t\tname=\"captcha-settings\"\n\t\t\t\t\t\t\t\tv-on:toggle-input=\"handleCaptchaToggle\"\n\t\t\t\t\t\t\t\t:enabled=\"formData.captchaEnabled\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\t\t\t\t\t<div v-if=\"formData.captchaEnabled\" class=\"captcha-providers\">\n\t\t\t\t\t\t<!-- reCAPTCHA -->\n\t\t\t\t\t\t<div class=\"provider-item\">\n\t\t\t\t\t\t\t<div class=\"provider-header\">\n\t\t\t\t\t\t\t\t<img :src=\"getProviderIcon('recaptcha')\" alt=\"reCAPTCHA\" class=\"provider-icon\" />\n\t\t\t\t\t\t\t\t<span class=\"provider-name\">Recaptcha</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"provider-options\">\n\t\t\t\t\t\t\t\t<div class=\"option-item\">\n\t\t\t\t\t\t\t\t\t<span>Login</span>\n\t\t\t\t\t\t\t\t\t<label class=\"toggle-switch\">\n\t\t\t\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\t\t\t\tid=\"recaptcha-login\"\n\t\t\t\t\t\t\t\t\t\t\tname=\"recaptcha-login\"\n\t\t\t\t\t\t\t\t\t\t\tv-on:toggle-input=\"(val) => updateProviderOption('recaptcha', 'login', val)\"\n\t\t\t\t\t\t\t\t\t\t\t:enabled=\"formData.providers.recaptcha.login\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"option-item\">\n\t\t\t\t\t\t\t\t\t<span>Registration</span>\n\t\t\t\t\t\t\t\t\t<label class=\"toggle-switch\">\n\t\t\t\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\t\t\t\tid=\"recaptcha-registration\"\n\t\t\t\t\t\t\t\t\t\t\tname=\"recaptcha-registration\"\n\t\t\t\t\t\t\t\t\t\t\tv-on:toggle-input=\"(val) => updateProviderOption('recaptcha', 'registration', val)\"\n\t\t\t\t\t\t\t\t\t\t\t:enabled=\"formData.providers.recaptcha.registration\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<!-- hCaptcha -->\n\t\t\t\t\t\t<div class=\"provider-item\">\n\t\t\t\t\t\t\t<div class=\"provider-header\">\n\t\t\t\t\t\t\t\t<img :src=\"getProviderIcon('hcaptcha')\" alt=\"hCaptcha\" class=\"provider-icon\" />\n\t\t\t\t\t\t\t\t<span class=\"provider-name\">Hcaptcha</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"provider-options\">\n\t\t\t\t\t\t\t\t<div class=\"option-item\">\n\t\t\t\t\t\t\t\t\t<span>Login</span>\n\t\t\t\t\t\t\t\t\t<label class=\"toggle-switch\">\n\t\t\t\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\t\t\t\tid=\"hcaptcha-login\"\n\t\t\t\t\t\t\t\t\t\t\tname=\"hcaptcha-login\"\n\t\t\t\t\t\t\t\t\t\t\tv-on:toggle-input=\"(val) => updateProviderOption('hcaptcha', 'login', val)\"\n\t\t\t\t\t\t\t\t\t\t\t:enabled=\"formData.providers.hcaptcha.login\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"option-item\">\n\t\t\t\t\t\t\t\t\t<span>Registration</span>\n\t\t\t\t\t\t\t\t\t<label class=\"toggle-switch\">\n\t\t\t\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\t\t\t\tid=\"hcaptcha-registration\"\n\t\t\t\t\t\t\t\t\t\t\tname=\"hcaptcha-registration\"\n\t\t\t\t\t\t\t\t\t\t\tv-on:toggle-input=\"(val) => updateProviderOption('hcaptcha', 'registration', val)\"\n\t\t\t\t\t\t\t\t\t\t\t:enabled=\"formData.providers.hcaptcha.registration\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Social Login Section -->\n\t\t\t\t<div class=\"settings-section\">\n\t\t\t\t\t<div class=\"section-header\">\n\t\t\t\t\t\t<h3>Social Login</h3>\n\t\t\t\t\t\t<p class=\"section-description\">\n\t\t\t\t\t\t\tTo allow users to log in with their social accounts, \n\t\t\t\t\t\t\t<a href=\"#\" class=\"link-text\" @click.prevent=\"goToSocialLogin\">click here</a>.\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"toggle-wrapper\">\n\t\t\t\t\t\t<label class=\"toggle-switch\">\n\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\tid=\"social-login-options\"\n\t\t\t\t\t\t\t\tname=\"social-login-options\"\n\t\t\t\t\t\t\t\tv-on:toggle-input=\"handleSocialLoginToggle\"\n\t\t\t\t\t\t\t\t:enabled=\"formData.socialLoginEnabled\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\t\t\t\t\t<div v-if=\"formData.socialLoginEnabled\" class=\"social-providers\">\n\t\t\t\t\t\t<!-- Microsoft -->\n\t\t\t\t\t\t<div class=\"provider-item\">\n\t\t\t\t\t\t\t<div class=\"provider-header\">\n\t\t\t\t\t\t\t\t<img :src=\"getProviderIcon('microsoft')\" alt=\"Microsoft\" class=\"provider-icon\" />\n\t\t\t\t\t\t\t\t<span class=\"provider-name\">Microsoft</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"provider-options\">\n\t\t\t\t\t\t\t\t<div class=\"option-item\">\n\t\t\t\t\t\t\t\t\t<span>Login</span>\n\t\t\t\t\t\t\t\t\t<label class=\"toggle-switch\">\n\t\t\t\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\t\t\t\tid=\"microsoft-login\"\n\t\t\t\t\t\t\t\t\t\t\tname=\"microsoft-login\"\n\t\t\t\t\t\t\t\t\t\t\tv-on:toggle-input=\"(val) => updateSocialProviderOption('microsoft', 'login', val)\"\n\t\t\t\t\t\t\t\t\t\t\t:enabled=\"formData.socialProviders.microsoft.login\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"option-item\">\n\t\t\t\t\t\t\t\t\t<span>Registration</span>\n\t\t\t\t\t\t\t\t\t<label class=\"toggle-switch\">\n\t\t\t\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\t\t\t\tid=\"microsoft-registration\"\n\t\t\t\t\t\t\t\t\t\t\tname=\"microsoft-registration\"\n\t\t\t\t\t\t\t\t\t\t\tv-on:toggle-input=\"(val) => updateSocialProviderOption('microsoft', 'registration', val)\"\n\t\t\t\t\t\t\t\t\t\t\t:enabled=\"formData.socialProviders.microsoft.registration\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"option-item\">\n\t\t\t\t\t\t\t\t\t<span>Checkout</span>\n\t\t\t\t\t\t\t\t\t<label class=\"toggle-switch\">\n\t\t\t\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\t\t\t\tid=\"microsoft-checkout\"\n\t\t\t\t\t\t\t\t\t\t\tname=\"microsoft-checkout\"\n\t\t\t\t\t\t\t\t\t\t\tv-on:toggle-input=\"(val) => updateSocialProviderOption('microsoft', 'checkout', val)\"\n\t\t\t\t\t\t\t\t\t\t\t:enabled=\"formData.socialProviders.microsoft.checkout\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<!-- Google -->\n\t\t\t\t\t\t<div class=\"provider-item\">\n\t\t\t\t\t\t\t<div class=\"provider-header\">\n\t\t\t\t\t\t\t\t<img :src=\"getProviderIcon('google')\" alt=\"Google\" class=\"provider-icon\" />\n\t\t\t\t\t\t\t\t<span class=\"provider-name\">Google</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"provider-options\">\n\t\t\t\t\t\t\t\t<div class=\"option-item\">\n\t\t\t\t\t\t\t\t\t<span>Login</span>\n\t\t\t\t\t\t\t\t\t<label class=\"toggle-switch\">\n\t\t\t\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\t\t\t\tid=\"google-login\"\n\t\t\t\t\t\t\t\t\t\t\tname=\"google-login\"\n\t\t\t\t\t\t\t\t\t\t\tv-on:toggle-input=\"(val) => updateSocialProviderOption('google', 'login', val)\"\n\t\t\t\t\t\t\t\t\t\t\t:enabled=\"formData.socialProviders.google.login\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"option-item\">\n\t\t\t\t\t\t\t\t\t<span>Registration</span>\n\t\t\t\t\t\t\t\t\t<label class=\"toggle-switch\">\n\t\t\t\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\t\t\t\tid=\"google-registration\"\n\t\t\t\t\t\t\t\t\t\t\tname=\"google-registration\"\n\t\t\t\t\t\t\t\t\t\t\tv-on:toggle-input=\"(val) => updateSocialProviderOption('google', 'registration', val)\"\n\t\t\t\t\t\t\t\t\t\t\t:enabled=\"formData.socialProviders.google.registration\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"option-item\">\n\t\t\t\t\t\t\t\t\t<span>Checkout</span>\n\t\t\t\t\t\t\t\t\t<label class=\"toggle-switch\">\n\t\t\t\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\t\t\t\tid=\"google-checkout\"\n\t\t\t\t\t\t\t\t\t\t\tname=\"google-checkout\"\n\t\t\t\t\t\t\t\t\t\t\tv-on:toggle-input=\"(val) => updateSocialProviderOption('google', 'checkout', val)\"\n\t\t\t\t\t\t\t\t\t\t\t:enabled=\"formData.socialProviders.google.checkout\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<!-- Facebook -->\n\t\t\t\t\t\t<div class=\"provider-item\">\n\t\t\t\t\t\t\t<div class=\"provider-header\">\n\t\t\t\t\t\t\t\t<img :src=\"getProviderIcon('facebook')\" alt=\"Facebook\" class=\"provider-icon\" />\n\t\t\t\t\t\t\t\t<span class=\"provider-name\">Facebook</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"provider-options\">\n\t\t\t\t\t\t\t\t<div class=\"option-item\">\n\t\t\t\t\t\t\t\t\t<span>Login</span>\n\t\t\t\t\t\t\t\t\t<label class=\"toggle-switch\">\n\t\t\t\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\t\t\t\tid=\"facebook-login\"\n\t\t\t\t\t\t\t\t\t\t\tname=\"facebook-login\"\n\t\t\t\t\t\t\t\t\t\t\tv-on:toggle-input=\"(val) => updateSocialProviderOption('facebook', 'login', val)\"\n\t\t\t\t\t\t\t\t\t\t\t:enabled=\"formData.socialProviders.facebook.login\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"option-item\">\n\t\t\t\t\t\t\t\t\t<span>Registration</span>\n\t\t\t\t\t\t\t\t\t<label class=\"toggle-switch\">\n\t\t\t\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\t\t\t\tid=\"facebook-registration\"\n\t\t\t\t\t\t\t\t\t\t\tname=\"facebook-registration\"\n\t\t\t\t\t\t\t\t\t\t\tv-on:toggle-input=\"(val) => updateSocialProviderOption('facebook', 'registration', val)\"\n\t\t\t\t\t\t\t\t\t\t\t:enabled=\"formData.socialProviders.facebook.registration\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"option-item\">\n\t\t\t\t\t\t\t\t\t<span>Checkout</span>\n\t\t\t\t\t\t\t\t\t<label class=\"toggle-switch\">\n\t\t\t\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\t\t\t\tid=\"facebook-checkout\"\n\t\t\t\t\t\t\t\t\t\t\tname=\"facebook-checkout\"\n\t\t\t\t\t\t\t\t\t\t\tv-on:toggle-input=\"(val) => updateSocialProviderOption('facebook', 'checkout', val)\"\n\t\t\t\t\t\t\t\t\t\t\t:enabled=\"formData.socialProviders.facebook.checkout\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<!-- Apple -->\n\t\t\t\t\t\t<div class=\"provider-item\">\n\t\t\t\t\t\t\t<div class=\"provider-header\">\n\t\t\t\t\t\t\t\t<img :src=\"getProviderIcon('apple')\" alt=\"Apple\" class=\"provider-icon\" />\n\t\t\t\t\t\t\t\t<span class=\"provider-name\">Apple</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"provider-options\">\n\t\t\t\t\t\t\t\t<div class=\"option-item\">\n\t\t\t\t\t\t\t\t\t<span>Login</span>\n\t\t\t\t\t\t\t\t\t<label class=\"toggle-switch\">\n\t\t\t\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\t\t\t\tid=\"apple-login\"\n\t\t\t\t\t\t\t\t\t\t\tname=\"apple-login\"\n\t\t\t\t\t\t\t\t\t\t\tv-on:toggle-input=\"(val) => updateSocialProviderOption('apple', 'login', val)\"\n\t\t\t\t\t\t\t\t\t\t\t:enabled=\"formData.socialProviders.apple.login\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"option-item\">\n\t\t\t\t\t\t\t\t\t<span>Registration</span>\n\t\t\t\t\t\t\t\t\t<label class=\"toggle-switch\">\n\t\t\t\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\t\t\t\tid=\"apple-registration\"\n\t\t\t\t\t\t\t\t\t\t\tname=\"apple-registration\"\n\t\t\t\t\t\t\t\t\t\t\tv-on:toggle-input=\"(val) => updateSocialProviderOption('apple', 'registration', val)\"\n\t\t\t\t\t\t\t\t\t\t\t:enabled=\"formData.socialProviders.apple.registration\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"option-item\">\n\t\t\t\t\t\t\t\t\t<span>Checkout</span>\n\t\t\t\t\t\t\t\t\t<label class=\"toggle-switch\">\n\t\t\t\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\t\t\t\tid=\"apple-checkout\"\n\t\t\t\t\t\t\t\t\t\t\tname=\"apple-checkout\"\n\t\t\t\t\t\t\t\t\t\t\tv-on:toggle-input=\"(val) => updateSocialProviderOption('apple', 'checkout', val)\"\n\t\t\t\t\t\t\t\t\t\t\t:enabled=\"formData.socialProviders.apple.checkout\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"popup-footer\">\n\t\t\t\t<button class=\"save-btn\" @click=\"saveSettings\">Save</button>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'aio-login-woocommerce-popup',\n\n\tprops: {\n\t\tshow: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false\n\t\t},\n\t\tinitialData: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({})\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tassetsUrl: aio_login__app_object.assets_url,\n\t\t\twoocommerceActive: true, // Default to true, will be updated from initialData\n\t\t\tformData: {\n\t\t\t\twoocommerceEnabled: false,\n\t\t\t\tcaptchaEnabled: false,\n\t\t\t\tsocialLoginEnabled: false,\n\t\t\t\tproviders: {\n\t\t\t\t\trecaptcha: {\n\t\t\t\t\t\tlogin: false,\n\t\t\t\t\t\tregistration: false\n\t\t\t\t\t},\n\t\t\t\t\thcaptcha: {\n\t\t\t\t\t\tlogin: false,\n\t\t\t\t\t\tregistration: false\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tsocialProviders: {\n\t\t\t\t\tmicrosoft: {\n\t\t\t\t\t\tlogin: false,\n\t\t\t\t\t\tregistration: false,\n\t\t\t\t\t\tcheckout: false\n\t\t\t\t\t},\n\t\t\t\t\tgoogle: {\n\t\t\t\t\t\tlogin: false,\n\t\t\t\t\t\tregistration: false,\n\t\t\t\t\t\tcheckout: false\n\t\t\t\t\t},\n\t\t\t\t\tfacebook: {\n\t\t\t\t\t\tlogin: false,\n\t\t\t\t\t\tregistration: false,\n\t\t\t\t\t\tcheckout: false\n\t\t\t\t\t},\n\t\t\t\t\tapple: {\n\t\t\t\t\t\tlogin: false,\n\t\t\t\t\t\tregistration: false,\n\t\t\t\t\t\tcheckout: false\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\twatch: {\n\t\tinitialData: {\n\t\t\thandler(newData) {\n\t\t\t\tif (newData && Object.keys(newData).length > 0) {\n\t\t\t\t\tthis.formData = { ...this.formData, ...newData };\n\t\t\t\t\t// Update WooCommerce active status\n\t\t\t\t\tif (newData.woocommerceActive !== undefined) {\n\t\t\t\t\t\tthis.woocommerceActive = newData.woocommerceActive;\n\t\t\t\t\t\t// If WooCommerce is not active, disable the integration\n\t\t\t\t\t\tif (!this.woocommerceActive) {\n\t\t\t\t\t\t\tthis.formData.woocommerceEnabled = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\timmediate: true,\n\t\t\tdeep: true\n\t\t}\n\t},\n\n\tmethods: {\n\t\tgetWooCommerceIcon() {\n\t\t\treturn this.assetsUrl + 'images/icons/woocommerce-logo.png';\n\t\t},\n\n\t\tgetProviderIcon(provider) {\n\t\t\tconst iconMap = {\n\t\t\t\t'recaptcha': 'recaptcha',\n\t\t\t\t'hcaptcha': 'hcaptcha',\n\t\t\t\t'microsoft': 'microsoft',\n\t\t\t\t'google': 'google',\n\t\t\t\t'facebook': 'facebook'\n\t\t\t};\n\t\t\treturn this.assetsUrl + `images/icons/${iconMap[provider] || provider}.png`;\n\t\t},\n\n\t\thandleWooCommerceToggle(enabled) {\n\t\t\t// Prevent enabling if WooCommerce is not active\n\t\t\tif (enabled && !this.woocommerceActive) {\n\t\t\t\tthis.$emit('error', 'WooCommerce is required for this integration. Please install and activate the WooCommerce plugin.');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.formData.woocommerceEnabled = enabled;\n\t\t},\n\n\t\thandleCaptchaToggle(enabled) {\n\t\t\tthis.formData.captchaEnabled = enabled;\n\t\t},\n\n\t\thandleSocialLoginToggle(enabled) {\n\t\t\tthis.formData.socialLoginEnabled = enabled;\n\t\t},\n\n\t\tupdateProviderOption(provider, option, value) {\n\t\t\tif (this.formData.providers[provider]) {\n\t\t\t\tthis.formData.providers[provider][option] = value;\n\t\t\t}\n\t\t},\n\n\t\tupdateSocialProviderOption(provider, option, value) {\n\t\t\tif (this.formData.socialProviders[provider]) {\n\t\t\t\tthis.formData.socialProviders[provider][option] = value;\n\t\t\t}\n\t\t},\n\n\t\tgoToCaptcha() {\n\t\t\t// Navigate to captcha settings\n\t\t\tconst url = new URL(window.location.href);\n\t\t\turl.searchParams.set('tab', 'security');\n\t\t\twindow.location.href = url.toString();\n\t\t},\n\n\t\tgoToSocialLogin() {\n\t\t\t// Navigate to social login settings\n\t\t\tconst url = new URL(window.location.href);\n\t\t\turl.searchParams.set('tab', 'social-login');\n\t\t\twindow.location.href = url.toString();\n\t\t},\n\n\t\tclosePopup() {\n\t\t\tthis.$emit('close');\n\t\t},\n\n\t\tsaveSettings() {\n\t\t\tthis.$emit('save', { ...this.formData });\n\t\t\tthis.closePopup();\n\t\t}\n\t}\n}\n</script>\n\n<style scoped>\n.popup-overlay {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tbackground: rgba(0, 0, 0, 0.5);\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\tz-index: 10000;\n}\n\n.popup-content.woocommerce-popup {\n\tbackground-color: white;\n\tborder-radius: 8px;\n\twidth: 90%;\n\tmax-width: 900px;\n\tmax-height: 90vh;\n\toverflow-y: auto;\n\tpadding: 0;\n}\n\n.popup-header {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n\tpadding: 30px 40px;\n\tborder-bottom: 1px solid #EBE8EB;\n}\n\n.popup-title {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 15px;\n}\n\n.woocommerce-icon {\n\twidth: 48px;\n\theight: 48px;\n}\n\n.popup-title h2 {\n\tmargin: 0;\n\tfont-size: 24px;\n\tfont-weight: 600;\n\tcolor: #404280;\n}\n\n.back-link {\n\tcolor: #6E16DF;\n\ttext-decoration: none;\n\tfont-weight: 500;\n}\n\n.back-link:hover {\n\ttext-decoration: underline;\n}\n\n.woocommerce-settings {\n\tpadding: 30px 40px;\n}\n\n.settings-section {\n\tmargin-bottom: 40px;\n}\n\n.section-header {\n\tmargin-bottom: 20px;\n}\n\n.section-header h3 {\n\tmargin: 0 0 10px 0;\n\tfont-size: 20px;\n\tfont-weight: 600;\n\tcolor: #404280;\n}\n\n.section-description {\n\tmargin: 0;\n\tcolor: #606C80;\n\tfont-size: 14px;\n}\n\n.link-text {\n\tcolor: #6E16DF;\n\ttext-decoration: none;\n\tcursor: pointer;\n}\n\n.link-text:hover {\n\ttext-decoration: underline;\n}\n\n.toggle-wrapper {\n\tmargin: 20px 0;\n}\n\n.captcha-providers,\n.social-providers {\n\tmargin-top: 20px;\n\tpadding-left: 20px;\n}\n\n.provider-item {\n\tmargin-bottom: 30px;\n\tpadding: 20px;\n\tbackground: #F9F9F9;\n\tborder-radius: 8px;\n}\n\n.provider-header {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 12px;\n\tmargin-bottom: 15px;\n}\n\n.provider-icon {\n\twidth: 32px;\n\theight: 32px;\n}\n\n.provider-name {\n\tfont-size: 16px;\n\tfont-weight: 600;\n\tcolor: #404280;\n}\n\n.provider-options {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 15px;\n}\n\n.option-item {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n\tpadding: 10px 0;\n\tborder-bottom: 1px solid #EBE8EB;\n}\n\n.option-item:last-child {\n\tborder-bottom: none;\n}\n\n.option-item span {\n\tfont-size: 14px;\n\tcolor: #606C80;\n}\n\n.popup-footer {\n\tpadding: 20px 40px;\n\tborder-top: 1px solid #EBE8EB;\n\ttext-align: right;\n}\n\n.save-btn {\n\tbackground: #6E16DF;\n\tcolor: white;\n\tborder: none;\n\tborder-radius: 4px;\n\tpadding: 12px 40px;\n\tfont-size: 16px;\n\tfont-weight: 600;\n\tcursor: pointer;\n\ttransition: background 0.3s;\n}\n\n.save-btn:hover {\n\tbackground: #510C79;\n}\n</style>\n\n","<template>\n\t<div v-if=\"page_loaded\" class=\"aio-login-pro__social-login__card\">\n\t\t<!-- Configured Tag -->\n\t\t<div \n\t\t\tv-if=\"statusBadge && hasPro\" \n\t\t\tclass=\"configured-tag\"\n\t\t\t:class=\"{ 'enabled': statusBadge === 'green', 'disabled': statusBadge === 'orange' }\"\n\t\t>\n\t\t\t{{ statusBadgeText }}\n\t\t</div>\n\t\t\n\t\t<!-- Top Section -->\n\t\t<div class=\"aio-login-pro__social-login__card__top\">\n\t\t\t<img :src=\"getSrc('woocommerce')\" :alt=\"'WooCommerce'\" />\n\t\t</div>\n\t\t\n\t\t<!-- Bottom Section -->\n\t\t<div class=\"aio-login-pro__social-login__card__bottom\">\n\t\t\t<label class=\"toggle-switch\" @click=\"handleToggleClick\" :class=\"{ 'disabled': !woocommerceActive }\">\n\t\t\t\t<aio-login-toggle\n\t\t\t\t\tid=\"woocommerce\"\n\t\t\t\t\tname=\"woocommerce\"\n\t\t\t\t\tv-on:toggle-input=\"handleToggle\"\n\t\t\t\t\t:enabled=\"enabled && woocommerceActive\"\n\t\t\t\t\t:disabled=\"!hasPro || !woocommerceActive\"\n\t\t\t\t/>\n\t\t\t</label>\n\t\t\t<!-- Show Configure button only if the toggle is enabled and Pro is active -->\n\t\t\t<button\n\t\t\t\tv-if=\"enabled && hasPro\"\n\t\t\t\tclass=\"configure-btn\"\n\t\t\t\t@click=\"configureIntegration\"\n\t\t\t\t@mouseenter=\"onHover\"\n\t\t\t\t@mouseleave=\"onLeave\"\n\t\t\t>\n\t\t\t\tConfigure\n\t\t\t</button>\n\t\t</div>\n\n\t\t<!-- Pro Overlay for Free Users -->\n\t\t<div v-if=\"!hasPro\" class=\"aio-login-t-content-overflow\" @click.stop=\"iWasTriggered\"></div>\n\t</div>\n</template>\n\n<script>\nimport tooltipContent from '../tooltip-content.js';\n\nexport default {\n\tname: 'aio-login-woocommerce-card',\n\n\tprops: {\n\t\thasPro: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tenabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tconfigData: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({})\n\t\t}\n\t},\n\n\tdata: ( vm ) => ( {\n\t\ttooltipContent,\n\t\tassetsUrl: aio_login__app_object.assets_url,\n\t\tpage_loaded: true,\n\t\tisHovered: false,\n\t\twoocommerceActive: true // Default to true, will be updated from configData\n\t} ),\n\n\tcomputed: {\n\t\tstatusBadge() {\n\t\t\tif (this.enabled && this.isConfigured()) {\n\t\t\t\treturn 'green';\n\t\t\t} else if (!this.enabled && this.isConfigured()) {\n\t\t\t\treturn 'orange';\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\n\t\tstatusBadgeText() {\n\t\t\tif (this.statusBadge === 'green') {\n\t\t\t\treturn 'Configured';\n\t\t\t} else if (this.statusBadge === 'orange') {\n\t\t\t\treturn 'Configured';\n\t\t\t}\n\t\t\treturn '';\n\t\t}\n\t},\n\n\tmethods: {\n\t\tloadComponent() {\n\t\t\tthis.$nextTick( () => {\n\t\t\t\tthis.page_loaded = true;\n\t\t\t} );\n\t\t},\n\n\t\tgetSrc( icon ) {\n\t\t\tif (icon === 'woocommerce') {\n\t\t\t\treturn this.assetsUrl + 'images/icons/woocommerce.svg';\n\t\t\t}\n\t\t\treturn this.assetsUrl + `images/icons/${ icon }.png`;\n\t\t},\n\n\t\tisConfigured() {\n\t\t\t// Check if WooCommerce is actually configured\n\t\t\tif (!this.configData || Object.keys(this.configData).length === 0) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t\n\t\t\t// Check if Captcha is enabled and has at least one provider configured\n\t\t\tif (this.configData.captchaEnabled) {\n\t\t\t\tconst providers = this.configData.providers || {};\n\t\t\t\tfor (const provider in providers) {\n\t\t\t\t\tif (providers[provider].login || providers[provider].registration) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// Check if Social Login is enabled and has at least one provider configured\n\t\t\tif (this.configData.socialLoginEnabled) {\n\t\t\t\tconst socialProviders = this.configData.socialProviders || {};\n\t\t\t\tfor (const provider in socialProviders) {\n\t\t\t\t\tif (socialProviders[provider].login || socialProviders[provider].registration || socialProviders[provider].checkout) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn false;\n\t\t},\n\n\t\thandleToggleClick(event) {\n\t\t\t// If Pro is not active, show popup on toggle click\n\t\t\tif (!this.hasPro) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\tthis.iWasTriggered();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\thandleToggle( enabled ) {\n\t\t\tif (!this.woocommerceActive && enabled) {\n\t\t\t\t// Don't allow enabling if WooCommerce is not active\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this.hasPro) {\n\t\t\t\tthis.$emit('toggle-integration', enabled);\n\t\t\t} else {\n\t\t\t\tthis.iWasTriggered();\n\t\t\t}\n\t\t},\n\n\t\tconfigureIntegration() {\n\t\t\tif (this.hasPro) {\n\t\t\t\tthis.$emit('configure-integration');\n\t\t\t} else {\n\t\t\t\tthis.iWasTriggered();\n\t\t\t}\n\t\t},\n\n\t\tiWasTriggered() {\n\t\t\t// Find the root app component that has the popup property\n\t\t\tlet parent = this.$parent;\n\t\t\twhile (parent) {\n\t\t\t\tif (parent.popup !== undefined) {\n\t\t\t\t\tparent.popup = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tparent = parent.$parent;\n\t\t\t}\n\t\t\t// Fallback: try direct parent chain\n\t\t\tif (this.$parent && this.$parent.$parent) {\n\t\t\t\tthis.$parent.$parent.popup = true;\n\t\t\t}\n\t\t},\n\n\t\tonHover() {\n\t\t\tthis.isHovered = true;\n\t\t},\n\n\t\tonLeave() {\n\t\t\tthis.isHovered = false;\n\t\t}\n\t},\n\n\twatch: {\n\t\tconfigData: {\n\t\t\thandler(newData) {\n\t\t\t\tif (newData && newData.woocommerceActive !== undefined) {\n\t\t\t\t\tthis.woocommerceActive = newData.woocommerceActive;\n\t\t\t\t}\n\t\t\t},\n\t\t\timmediate: true,\n\t\t\tdeep: true\n\t\t}\n\t},\n\n\tmounted() {\n\t\t// Component is ready\n\t\t// Check configData for WooCommerce active status\n\t\tif (this.configData && this.configData.woocommerceActive !== undefined) {\n\t\t\tthis.woocommerceActive = this.configData.woocommerceActive;\n\t\t}\n\t}\n}\n</script>\n\n<style scoped>\n/* Exact copy of social login pro card styling */\n.aio-login-t-content-overflow {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n\tbackdrop-filter: blur(0.5px);\n\tz-index: 100;\n\tcursor: pointer;\n\tbackground: rgba(255, 255, 255, 0.3);\n}\n\n.aio-login__pro-tag {\n\tposition: absolute;\n\ttop: 8px;\n\tleft: 8px;\n\tdisplay: inline-flex;\n    align-items: center;\n    justify-content: center;\n    box-sizing: border-box;\n    min-width: 34px;\n    padding: 5px 6px;\n    margin: 0;\n    background: #9516DF;\n    border-radius: 3px;\n    color: #FFFFFF;\n    font-family: Figtree, sans-serif;\n    font-size: 12px;\n    font-weight: 700;\n    line-height: 1;\n    letter-spacing: 0.02em;\n    text-transform: uppercase;\n    /* height: 18px; */\n    flex-shrink: 0;\n\tz-index: 101;\n}\n\n.configured-tag {\n  position: absolute !important;\n  top: 8px !important;\n  right: 8px !important;\n  padding: 3px 6px !important;\n  font-size: 10px !important;\n  font-weight: 700 !important;\n  border-radius: 8px !important;\n  color: white !important;\n  z-index: 999 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.3px !important;\n  line-height: 1 !important;\n  display: inline-block !important;\n  white-space: nowrap !important;\n}\n\n.configured-tag.enabled {\n  background-color: #22c55e !important; /* Green for enabled */\n  box-shadow: 0 1px 3px rgba(34, 197, 94, 0.4) !important;\n}\n\n.configured-tag.disabled {\n  background-color: #f97316 !important; /* Orange for disabled */\n  box-shadow: 0 1px 3px rgba(249, 115, 22, 0.4) !important;\n}\n\n/* Social Login Card */\n.aio-login-pro__social-login__card {\n  position: relative !important;\n  overflow: visible !important;\n  border: 1px solid #ebe8eb;\n  border-radius: 10px;\n  height: 200px;\n  width: 320px;\n  display: flex;\n  flex-direction: column;\n  justify-content: space-between;\n}\n\n/* Top Section */\n.aio-login-pro__social-login__card__top {\n  flex: 2;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  padding: 10px;\n  text-align: center;\n}\n\n.aio-login-pro__social-login__card__top img {\n  width: auto;\n  height: auto;\n  max-width: 230px;\n  max-height: 100px;\n  object-fit: contain;\n}\n\n.aio-login-pro__social-login__card__top p {\n  font-size: 14px;\n  font-weight: bold;\n  margin: 0 0 5px 0;\n}\n\n/* Bottom Section */\n.aio-login-pro__social-login__card__bottom {\n  flex: 1;\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  padding: 10px;\n  border-top: 1px solid #ebe8eb;\n}\n\n/* Configure Button */\n.configure-btn {\n  background: #f7ecfd;\n  color: #6e16df;\n  border: none;\n  border-radius: 4px;\n  font-size: 14px;\n  cursor: pointer;\n  transition: 0.3s;\n  padding: 9px 18px;\n}\n\n.configure-btn:hover {\n  background-color: #C9D2E3;\n  color: #6e16df;\n}\n\n.woocommerce-required-notice {\n  margin-top: 10px;\n  padding: 8px 12px;\n  background: #fff3cd;\n  border: 1px solid #ffc107;\n  border-radius: 4px;\n  text-align: center;\n}\n\n.woocommerce-required-notice p {\n  margin: 0;\n  font-size: 11px;\n  color: #856404;\n  font-weight: 600;\n}\n\n.toggle-switch.disabled {\n  opacity: 0.6;\n  cursor: not-allowed;\n}\n</style>\n\n\n","<template>\n\t<div v-if=\"page_loaded\" class=\"aio-login-pro__social-login__card\">\n\t\t<template v-if=\"loading\">\n\t\t\t<div class=\"aio-login-pro__social-login__card__top\">\n\t\t\t\t<div class=\"notifications-card-skeleton notifications-card-skeleton--logo\"></div>\n\t\t\t\t<div class=\"notifications-card-skeleton notifications-card-skeleton--title\"></div>\n\t\t\t</div>\n\t\t\t<div class=\"aio-login-pro__social-login__card__bottom\">\n\t\t\t\t<div class=\"notifications-card-skeleton notifications-card-skeleton--toggle\"></div>\n\t\t\t\t<div class=\"notifications-card-skeleton notifications-card-skeleton--button\"></div>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else>\n\t\t<span v-if=\"showProMarketingBadge\" class=\"aio-login__pro-tab\">PRO</span>\n\t\t<div\n\t\t\tv-if=\"statusBadge && hasPro\"\n\t\t\tclass=\"configured-tag\"\n\t\t\t:class=\"{ 'enabled': statusBadge === 'green', 'disabled': statusBadge === 'orange' }\"\n\t\t>\n\t\t\t{{ statusBadgeText }}\n\t\t</div>\n\n\t\t<div class=\"aio-login-pro__social-login__card__top\">\n\t\t\t<img :src=\"iconSrc\" :alt=\"title\" />\n\t\t\t<p class=\"aio-login-pro__social-login__card__title\">\n\t\t\t\t<span>{{ title }}</span>\n\t\t\t</p>\n\t\t</div>\n\n\t\t<div class=\"aio-login-pro__social-login__card__bottom\">\n\t\t\t<label class=\"toggle-switch\" @click=\"handleToggleClick\">\n\t\t\t\t<aio-login-toggle\n\t\t\t\t\t:id=\"toggleId\"\n\t\t\t\t\t:name=\"toggleName\"\n\t\t\t\t\tv-on:toggle-input=\"handleToggle\"\n\t\t\t\t\t:enabled=\"enabled\"\n\t\t\t\t\t:disabled=\"!hasPro\"\n\t\t\t\t/>\n\t\t\t</label>\n\t\t\t<button\n\t\t\t\tv-if=\"enabled && hasPro\"\n\t\t\t\tclass=\"configure-btn\"\n\t\t\t\t@click=\"configureIntegration\"\n\t\t\t\t@mouseenter=\"onHover\"\n\t\t\t\t@mouseleave=\"onLeave\"\n\t\t\t>\n\t\t\t\tConfigure\n\t\t\t</button>\n\t\t</div>\n\n\t\t<div v-if=\"!hasPro\" class=\"aio-login-t-content-overflow\" @click.stop=\"iWasTriggered\"></div>\n\t\t</template>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'aio-login-notification-channel-card',\n\n\tprops: {\n\t\tchannel: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t\tvalidator: ( v ) => [ 'slack', 'webhook' ].includes( v ),\n\t\t},\n\t\thasPro: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tenabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tconfigData: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ( {} ),\n\t\t},\n\t},\n\n\tdata: () => ( {\n\t\tassetsUrl: aio_login__app_object.assets_url,\n\t\tassetsVer: aio_login__app_object.version || '',\n\t\tpage_loaded: true,\n\t\tisHovered: false,\n\t} ),\n\n\tcomputed: {\n\t\tproPluginActive() {\n\t\t\tconst o = typeof window !== 'undefined' ? window.aio_login__app_object : null;\n\t\t\treturn !!( o && ( o.has_pro === 'true' || o.has_pro === true ) );\n\t\t},\n\t\tshowProMarketingBadge() {\n\t\t\treturn ! this.hasPro && ! this.proPluginActive;\n\t\t},\n\t\ttitle() {\n\t\t\treturn 'slack' === this.channel ? 'Slack' : 'Webhook';\n\t\t},\n\n\t\ttoggleId() {\n\t\t\treturn 'aio-login-notification-' + this.channel;\n\t\t},\n\n\t\ttoggleName() {\n\t\t\treturn 'aio-login-notification-' + this.channel;\n\t\t},\n\n\t\ticonSrc() {\n\t\t\tconst base = this.assetsUrl + 'images/icons/notification-' + this.channel + '.svg';\n\t\t\treturn this.assetsVer ? base + '?ver=' + encodeURIComponent( this.assetsVer ) : base;\n\t\t},\n\n\t\tstatusBadge() {\n\t\t\tif ( this.enabled && this.isConfigured() ) {\n\t\t\t\treturn 'green';\n\t\t\t}\n\t\t\tif ( ! this.enabled && this.isConfigured() ) {\n\t\t\t\treturn 'orange';\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\n\t\tstatusBadgeText() {\n\t\t\tif ( this.statusBadge === 'green' || this.statusBadge === 'orange' ) {\n\t\t\t\treturn 'Configured';\n\t\t\t}\n\t\t\treturn '';\n\t\t},\n\t},\n\n\tmethods: {\n\t\tisConfigured() {\n\t\t\tconst url = this.configData && ( this.configData.url || this.configData.webhook_url || '' );\n\t\t\treturn String( url ).trim().length > 0;\n\t\t},\n\n\t\thandleToggleClick( event ) {\n\t\t\tif ( ! this.hasPro ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\tthis.iWasTriggered();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\thandleToggle( on ) {\n\t\t\tif ( this.hasPro ) {\n\t\t\t\tthis.$emit( 'toggle-integration', on );\n\t\t\t} else {\n\t\t\t\tthis.iWasTriggered();\n\t\t\t}\n\t\t},\n\n\t\tconfigureIntegration() {\n\t\t\tif ( this.hasPro ) {\n\t\t\t\tthis.$emit( 'configure-integration' );\n\t\t\t} else {\n\t\t\t\tthis.iWasTriggered();\n\t\t\t}\n\t\t},\n\n\t\tiWasTriggered() {\n\t\t\tlet parent = this.$parent;\n\t\t\twhile ( parent ) {\n\t\t\t\tif ( parent.popup !== undefined ) {\n\t\t\t\t\tparent.popup = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tparent = parent.$parent;\n\t\t\t}\n\t\t\tif ( this.$parent && this.$parent.$parent ) {\n\t\t\t\tthis.$parent.$parent.popup = true;\n\t\t\t}\n\t\t},\n\n\t\tonHover() {\n\t\t\tthis.isHovered = true;\n\t\t},\n\n\t\tonLeave() {\n\t\t\tthis.isHovered = false;\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n.aio-login-t-content-overflow {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n\tbackdrop-filter: blur(0.5px);\n\tz-index: 100;\n\tcursor: pointer;\n\tbackground: rgba(255, 255, 255, 0.3);\n}\n\n.aio-login__pro-tag {\n\tposition: absolute;\n\ttop: 8px;\n\tleft: 8px;\n\tdisplay: inline-flex;\n    align-items: center;\n    justify-content: center;\n    box-sizing: border-box;\n    min-width: 34px;\n    padding: 5px 6px;\n    margin: 0;\n    background: #9516DF;\n    border-radius: 3px;\n    color: #FFFFFF;\n    font-family: Figtree, sans-serif;\n    font-size: 12px;\n    font-weight: 700;\n    line-height: 1;\n    letter-spacing: 0.02em;\n    text-transform: uppercase;\n    /* height: 18px; */\n    flex-shrink: 0;\n\tz-index: 101;\n}\n\n.configured-tag {\n\tposition: absolute !important;\n\ttop: 8px !important;\n\tright: 8px !important;\n\tpadding: 3px 6px !important;\n\tfont-size: 10px !important;\n\tfont-weight: 700 !important;\n\tborder-radius: 8px !important;\n\tcolor: white !important;\n\tz-index: 999 !important;\n\ttext-transform: uppercase !important;\n\tletter-spacing: 0.3px !important;\n\tline-height: 1 !important;\n\tdisplay: inline-block !important;\n\twhite-space: nowrap !important;\n}\n\n.configured-tag.enabled {\n\tbackground-color: #22c55e !important;\n\tbox-shadow: 0 1px 3px rgba(34, 197, 94, 0.4) !important;\n}\n\n.configured-tag.disabled {\n\tbackground-color: #f97316 !important;\n\tbox-shadow: 0 1px 3px rgba(249, 115, 22, 0.4) !important;\n}\n\n.aio-login-pro__social-login__card {\n\tposition: relative !important;\n\toverflow: visible !important;\n\tborder: 1px solid #ebe8eb;\n\tborder-radius: 10px;\n\theight: 200px;\n\twidth: 320px;\n\tdisplay: flex;\n\tflex-direction: column;\n\tjustify-content: space-between;\n}\n\n.aio-login-pro__social-login__card__top {\n\tflex: 2;\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tjustify-content: center;\n\tpadding: 10px;\n\ttext-align: center;\n}\n\n.aio-login-pro__social-login__card__top img {\n\twidth: auto;\n\theight: auto;\n\tmax-width: 230px;\n\tmax-height: 100px;\n\tobject-fit: contain;\n}\n\n.aio-login-pro__social-login__card__top p {\n\tfont-size: 14px;\n\tfont-weight: bold;\n\tmargin: 0 0 5px 0;\n}\n\n.aio-login-pro__social-login__card__bottom {\n\tflex: 1;\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n\tpadding: 10px;\n\tborder-top: 1px solid #ebe8eb;\n}\n\n.configure-btn {\n\tbackground: #f7ecfd;\n\tcolor: #6e16df;\n\tborder: none;\n\tborder-radius: 4px;\n\tfont-size: 14px;\n\tcursor: pointer;\n\ttransition: 0.3s;\n\tpadding: 9px 18px;\n}\n\n.configure-btn:hover {\n\tbackground-color: #c9d2e3;\n\tcolor: #6e16df;\n}\n\n.notifications-card-skeleton {\n\tdisplay: block;\n\tborder-radius: 6px;\n\tbackground: linear-gradient( 90deg, #f2f4f8 25%, #e7ebf3 50%, #f2f4f8 75% );\n\tbackground-size: 200% 100%;\n\tanimation: notifications-card-skeleton-shimmer 1.3s ease-in-out infinite;\n}\n\n.notifications-card-skeleton--logo {\n\twidth: 160px;\n\theight: 56px;\n}\n\n.notifications-card-skeleton--title {\n\twidth: 90px;\n\theight: 14px;\n\tmargin-top: 10px;\n}\n\n.notifications-card-skeleton--toggle {\n\twidth: 50px;\n\theight: 24px;\n}\n\n.notifications-card-skeleton--button {\n\twidth: 90px;\n\theight: 32px;\n}\n\n@keyframes notifications-card-skeleton-shimmer {\n\t0% {\n\t\tbackground-position: 200% 0;\n\t}\n\t100% {\n\t\tbackground-position: -200% 0;\n\t}\n}\n</style>\n","<template>\n\t<div class=\"aio-login__meta-container\">\n\t\t<div>\n\t\t\t<aio-login-metadata\n\t\t\t\ttitle=\"Custom Login URL\"\n\t\t\t\tdescription=\"Attackers often try exploits on /wp-login or /wp-admin as a default login URL for WordPress. Change it to avoid these attacks and have an easily memorizable login URL.\"\n\t\t\t>\n\t\t\t\t<template v-slot:configuration>\n\t\t\t\t\t<div class=\"aio-login__configuration-switch aio-login-configuration-btn-wrapper\">\n\t\t\t\t\t\t<a class=\"aio-login-configuration-btn\" :href=\"adminURL + '&tab=login-protection'\">Configure</a>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t</aio-login-metadata>\n\t\t</div>\n\t\t<div>\n\t\t\t<aio-login-metadata\n\t\t\t\ttitle=\"Limit Login Attempts\"\n\t\t\t\tdescription=\"Limit the number of times a user IP can attempt to log in to your wp-admin with incorrect credentials. Once the login attempt limit is reached, the IP from which the attempts have originated will be blocked for default period of time.\"\n\t\t\t\t@click=\"iWasTriggered\"\n\t\t\t>\n\t\t\t\t<template v-slot:configuration>\n\t\t\t\t\t<div class=\"aio-login__configuration-switch\">\n\t\t\t\t\t\t<select\n\t\t\t\t\t\t\tclass=\"aio-login__configuration-select\"\n\t\t\t\t\t\t\t:class=\"{ 'aio-login__configuration-select--locked': !has_pro }\"\n\t\t\t\t\t\t\tv-model=\"limit_login_attempts\"\n\t\t\t\t\t\t\t@change=\"limitLoginAttempts\"\n\t\t\t\t\t\t\t@mousedown=\"handleLimitLoginSelectInteraction\"\n\t\t\t\t\t\t\t@click=\"handleLimitLoginSelectInteraction\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<option value=\"on\">On</option>\n\t\t\t\t\t\t\t<option value=\"off\">Off</option>\n\t\t\t\t\t\t</select>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t</aio-login-metadata>\n\t\t</div>\n\t\t<div>\n\t\t\t<aio-login-metadata\n\t\t\t\ttitle=\"Two Factor Authentication\"\n\t\t\t\tdescription=\"Two-factor authentication forces admin users to login only after providing a token, generated from the Authenticator applications. When you enable this option, all admin users will be asked to configure their two-factor authentication in the Authenticator app on their next login.\"\n\t\t\t\t@click=\"handleTwoFactorCardClick\"\n\t\t\t>\n\t\t\t\t<template v-slot:configuration>\n\t\t\t\t\t<div class=\"aio-login__configuration-switch\">\n\t\t\t\t\t\t<div class=\"\">\n\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\tid=\"toggle-tfa\"\n\t\t\t\t\t\t\t\tname=\"toggle-tfa\"\n\t\t\t\t\t\t\t\t:disabled=\"!has_pro || !two_factor_allowed\"\n\t\t\t\t\t\t\t\tv-on:toggle-input=\"twoFactorAuthenticationSettings\"\n\t\t\t\t\t\t\t\t:enabled=\"two_factor_auth\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t</aio-login-metadata>\n\t\t</div>\n\t\t<div>\n\t\t\t<aio-login-metadata\n\t\t\t\ttitle=\"Block IP Address\"\n\t\t\t\tdescription=\"By default your WordPress login can be accessed by any IP or user. You can use this feature to allow login only for specific IPs or users in order to prevent brute-force attacks or malicious login attempts.\"\n\t\t\t\t@click=\"iWasTriggered\"\n\t\t\t>\n\t\t\t\t<template v-slot:configuration>\n\t\t\t\t\t<div class=\"aio-login__configuration-switch\">\n\t\t\t\t\t\t<div class=\"\">\n\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\tid=\"toggle-bipa\"\n\t\t\t\t\t\t\t\tname=\"toggle-bipa\"\n\t\t\t\t\t\t\t\t:disabled=\"! has_pro\"\n\t\t\t\t\t\t\t\tv-on:toggle-input=\"blockIPAddressSettings\"\n\t\t\t\t\t\t\t\t:enabled=\"block_ip_address\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t</aio-login-metadata>\n\t\t</div>\n\n\n\t\t<aio-login-snackbar\n\t\t\t:message=\"snackbar.message\"\n\t\t\t:duration=\"snackbar.duration\"\n\t\t\tv-if=\"snackbar.show\"\n\n\t\t\tv-on:close=\"handleCloseSnackbar\"\n\t\t/>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'aio-login-meta',\n\n\tdata: ( vm ) => ( {\n\t\tadminURL: aio_login__app_object.admin_url,\n\n\t\thas_pro: 'true' === aio_login__app_object.has_pro,\n\t\ttwo_factor_allowed: 'true' === aio_login__app_object['2fa_authenticator_allowed'],\n\n\t\tlimit_login_attempts: 'off',\n\n\t\ttwo_factor_auth: false,\n\t\tblock_ip_address: false,\n\n\t\tsnackbar: {\n\t\t\tmessage: 'Settings saved successfully',\n\t\t\tduration: 3000,\n\t\t\tshow: false\n\t\t},\n\t} ),\n\n\twatch: {\n\t},\n\n\tmethods: {\n\n\t\tiWasTriggered() {\n\t\t\tif ( ! this.has_pro ) {\n\t\t\t\tthis.$parent.$parent.popup = true;\n\t\t\t}\n\t\t},\n\n\t\thandleTwoFactorCardClick() {\n\t\t\tif ( ! this.has_pro || ! this.two_factor_allowed ) {\n\t\t\t\tthis.$parent.$parent.popup = true;\n\t\t\t}\n\t\t},\n\n\t\tlimitLoginAttempts() {\n\t\t\tif ( ! this.has_pro ) {\n\t\t\t\tthis.iWasTriggered();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\taxios.post( 'aio-login/dashboard/update/limit-login-attempts', {\n\t\t\t\tvalue: this.limit_login_attempts,\n\t\t\t} )\n\t\t\t.then( response => {\n\t\t\t\tif ( 'success' === response.data.status\t) {\n\t\t\t\t\tif ( 'on' === this.limit_login_attempts ) {\n\t\t\t\t\t\twindow.location.href = aio_login__app_object.admin_url + '&tab=login-protection#/limit-login-attempts';\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.snackbar.message = response.data.message;\n\t\t\t\tthis.snackbar.show = true;\n\t\t\t} )\n\t\t\t.catch( error => {\n\n\t\t\t}  );\n\t\t},\n\n\t\thandleCloseSnackbar() {\n\t\t\tthis.snackbar.show = false;\n\t\t},\n\n\t\ttwoFactorAuthenticationSettings( i ) {\n\t\t\tif ( ! this.has_pro || ! this.two_factor_allowed ) {\n\t\t\t\tthis.handleTwoFactorCardClick();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar value = i ? 'on' : 'off';\n\n\t\t\taxios.post( 'aio-login/dashboard/update/two-factor-authentication', {\n\t\t\t\tvalue: value\n\t\t\t} )\n\t\t\t\t.then( response => {\n\t\t\t\t\tif ( 'success' === response.data.status\t) {\n\t\t\t\t\t\tif ( i ) {\n\t\t\t\t\t\t\twindow.location.href = aio_login__app_object.admin_url + '&tab=2fa#/authentication-methods';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.snackbar.message = response.data.message;\n\t\t\t\t\tthis.snackbar.show = true;\n\t\t\t\t} )\n\t\t\t\t.catch( error => {\n\n\t\t\t\t}  );\n\t\t},\n\n\t\thandleLimitLoginSelectInteraction( event ) {\n\t\t\tif ( this.has_pro ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t\tthis.iWasTriggered();\n\t\t},\n\n\t\tblockIPAddressSettings( i ) {\n\t\t\tvar value = i ? 'on' : 'off';\n\n\t\t\taxios.post( 'aio-login/dashboard/update/block-ip-address', {\n\t\t\t\tvalue: value\n\t\t\t} )\n\t\t\t\t.then( response => {\n\t\t\t\t\tif ( 'success' === response.data.status\t) {\n\t\t\t\t\t\tif ( i ) {\n\t\t\t\t\t\t\twindow.location.href = aio_login__app_object.admin_url + '&tab=security#/block-ip-addresses';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.snackbar.message = response.data.message;\n\t\t\t\t\tthis.snackbar.show = true;\n\t\t\t\t} )\n\t\t\t\t.catch( error => {\n\n\t\t\t\t}  );\n\t\t},\n\n\n\t},\n\n\tmounted() {\n\t\taxios.get( 'aio-login/dashboard/get-settings' )\n\t\t\t.then( response => {\n\t\t\t\tthis.limit_login_attempts = response.data.limit_login_attempts;\n\t\t\t\tthis.two_factor_auth = 'on' === response.data.two_factor_auth;\n\t\t\t\tthis.block_ip_address = 'on' === response.data.block_ip_address;\n\t\t\t} )\n\t\t\t.catch( error => {} );\n\t},\n}\n</script>\n\n<style scoped>\n.aio-login__meta-container {\n\tdisplay: grid;\n\tgrid-template-columns: 50% 50%;\n}\n\n.aio-login-configuration-btn-wrapper {\n\tbackground: #F7ECFD;\n\tborder-radius: 4px;\n\tpadding: 12px 24px;\n}\n\n.aio-login-configuration-btn {\n\tcolor: #9516DF;\n\tline-height: 14px;\n\ttext-decoration: none;\n\tfont-size: 16px;\n\tfont-weight: 600;\n}\n\n.aio-login__configuration-select {\n\tmargin-top: 20px !important;\n\tpadding: 12px 16px !important;\n\twidth: 100px !important;\n\tfont-size: 14px !important;\n\tline-height: 14px !important;\n\tfont-weight: 600 !important;\n\tcolor: #9516DF !important;\n\tborder: 1px solid #9516DF !important;\n}\n\n.aio-login__configuration-select--locked {\n\topacity: 0.6;\n\tcursor: not-allowed;\n}\n\n.aio-login__configuration-switch {\n\tposition: absolute;\n\tbottom: 25px;\n\tright: 25px;\n}\n</style>","<template>\n\t<div class=\"aio-login__metadata-container container\">\n\t\t<h2>{{ title }}</h2>\n\t\t<p>{{ description }}</p>\n\t\t<slot name=\"configuration\"></slot>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'aio-login-metadata',\n\n\tprops: {\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\tdefault: ''\n\t\t},\n\t\tdescription: {\n\t\t\ttype: String,\n\t\t\tdefault: ''\n\t\t}\n\t}\n}\n</script>\n\n<style scoped>\n.aio-login__metadata-container {\n\theight: 180px;\n\tposition: relative;\n\tborder: 1px solid #ebebeb;\n\tbackground: #fff;\n\tborder-radius: 8px;\n\tpadding-top: 25px !important;\n\tpadding-bottom: 25px !important;\n\tmargin-right: 15px;\n\tmargin-bottom: 15px;\n\tbox-shadow: 0px 4px 16px 0px #00000014;\n}\n\n.aio-login__metadata-container h2 {\n\tfont-size: 18px;\n\tfont-weight: 600;\n\tline-height: 18px;\n\tcolor: #405980;\n}\n\n.aio-login__metadata-container p {\n\tfont-size: 14px;\n\tfont-weight: 400;\n\tline-height: 21px;\n\tcolor: #405980;\n}\n</style>","<template>\n\t<div class=\"aio-login__pro-branding-container\">\n\t\t<div class=\"aio-login__pro-flex\">\n\t\t\t<div>\n\t\t\t\t<h2>Get the Most Powerful WordPress Login Plugin Today</h2>\n\t\t\t\t<p>\n\t\t\t\t\tJoin over 90K smart website owners who use AIO Login to improve their\n\t\t\t\t\t<br />\n\t\t\t\t\tWordPress admin login security and customization\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t\t<div class=\"aio-login__button-wrapper\">\n\t\t\t\t<a\n\t\t\t\t\thref=\"https://aiologin.com/pricing/?utm_source=plugin&utm_medium=dashboard_pro_banner&utm_campaign=plugin\"\n\t\t\t\t>Get AIO Login Pro</a>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'aio-login-pro-branding'\n}\n</script>\n\n<style scoped>\n.aio-login__pro-branding-container {\n\theight: 238px;\n\tbackground-color: #630f95;\n\tbackground-image: url(\"../../images/colored-lock-left.png\"), url(\"../../images/colored-lock-right.png\");\n\tbackground-position: top left, bottom right;\n\tbackground-repeat: no-repeat;\n\tborder-radius: 8px;\n\tpadding: 0 65px 0 82px;\n}\n\n.aio-login__pro-flex {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n\twidth: 100%;\n\theight: 100%;\n}\n\n.aio-login__pro-branding-container h2, .aio-login__pro-branding-container p {\n\tcolor: #fff;\n}\n\n.aio-login__pro-branding-container h2 {\n\tfont-weight: 600;\n\tfont-size: 24px;\n\tline-height: 24px;\n}\n\n.aio-login__pro-branding-container p {\n\tfont-weight: 400;\n\tfont-size: 18px;\n\tline-height: 27px;\n}\n\n.aio-login__pro-branding-container a {\n\tfont-weight: 600;\n\tfont-size: 18px;\n\tline-height: 18px;\n\tcolor: #630F95;\n\ttext-decoration: none;\n}\n\n.aio-login__button-wrapper {\n\tborder-radius: 8px;\n\tpadding: 16px 32px;\n\tmargin-top: 20px;\n\tbackground: #FFBA08;\n}\n</style>","<template>\n\t<div>\n\t\t<div class=\"aio-login__recent-activity-wrapper\">\n\t\t\t<h2>\n\t\t\t\t<span>Recent Activity</span>\n\t\t\t\t<aio-login-tooltip\n\t\t\t\t\t:content=\"tooltipContent.recentActivity.content\"\n\t\t\t\t\t:title=\"tooltipContent.recentActivity.title\"\n\t\t\t\t\tplacement=\"bottom\"\n\t\t\t\t/>\n\t\t\t</h2>\n\n\t\t\t<div class=\"aio-login__table-wrapper\">\n\t\t\t\t<div class=\"aio-login-table-nav\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-for=\"(tab, i ) in tabs\"\n\t\t\t\t\t\t:class=\"{'aio-login__table-nav-item': true, 'active': tab.active }\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\tclass=\"aio-login__activate\"\n\t\t\t\t\t\t\t:href=\"'#' + tab.slug\"\n\t\t\t\t\t\t\t@click=\"e => toggleShift( e, tab )\"\n\t\t\t\t\t\t>{{ tab.title }}</a>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div style=\"border-radius: 0 0 5px 5px;overflow: hidden;\" v-if=\"'lockouts' === current_tab\">\n\t\t\t\t\t<table class=\"aio-login__table\">\n\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th v-for=\"lockout in lockout_headers\">\n\t\t\t\t\t\t\t\t{{ lockout.title }}\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</thead>\n\n\t\t\t\t\t\t<tr v-if=\"lockouts.length\" v-for=\"lockout in lockouts\">\n\t\t\t\t\t\t\t<td v-for=\"lockout_header in lockout_headers\">\n\t\t\t\t\t\t\t\t{{ lockout[ lockout_header.value ] }}\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t<tr v-else>\n\t\t\t\t\t\t\t<td colspan=\"5\">No lockouts found</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</div>\n\n\t\t\t\t<div style=\"border-radius: 0 0 5px 5px;overflow: hidden;\" v-if=\"'failed-logins' === current_tab\">\n\t\t\t\t\t<table class=\"aio-login__table\">\n\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th v-for=\"failed_login in failed_login_headers\">\n\t\t\t\t\t\t\t\t{{ failed_login.title }}\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</thead>\n\n\t\t\t\t\t\t<tr v-if=\"failed_logins.length\" v-for=\"failed_login in failed_logins\">\n\t\t\t\t\t\t\t<td v-for=\"failed_login_header in failed_login_headers\">\n\t\t\t\t\t\t\t\t{{ failed_login[ failed_login_header.value ] }}\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t</tr>\n\n\t\t\t\t\t\t<tr v-else>\n\t\t\t\t\t\t\t<td colspan=\"7\">No failed logins found</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</table>\n\t\t\t\t</div>\n\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"mt-25 mb-25 text-center\">\n\t\t\t<a\n\t\t\t\t:href=\"view_all_activity_logs\"\n\t\t\t\tclass=\"aio-login__view-all-activity\"\n\t\t\t>View All Activity</a>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport tooltipContent from '../tooltip-content.js';\n\nexport default {\n\tname: 'aio-login-recent-activity',\n\n\tdata: () => ( {\n\t\ttooltipContent,\n\t\tview_all_activity_logs: aio_login__app_object.admin_url + '&tab=activity-log',\n\n\t\ttabs: [\n\t\t\t{\n\t\t\t\ttitle: 'Lockouts',\n\t\t\t\tslug: 'lockouts',\n\t\t\t\turl: '',\n\t\t\t\tactive: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: 'Failed Logins',\n\t\t\t\tslug: 'failed-logins',\n\t\t\t\turl: '',\n\t\t\t\tactive: false,\n\t\t\t},\n\t\t],\n\n\t\tlockout_headers: [\n\t\t\t{ title: 'Date & Time', value: 'time' },\n\t\t\t{ title: 'Country', value: 'country' },\n\t\t\t{ title: 'City', value: 'city' },\n\t\t\t{ title: 'User Agent', value: 'user_agent' },\n\t\t\t{ title: 'IP Address', value: 'ip_address' },\n\t\t],\n\t\tlockouts: [],\n\n\t\tfailed_login_headers: [\n\t\t\t{ title: 'ID', value: 'id' },\n\t\t\t{ title: 'User login', value: 'user_login' },\n\t\t\t{ title: 'Date & Time', value: 'time' },\n\t\t\t{ title: 'Country', value: 'country' },\n\t\t\t{ title: 'City', value: 'city' },\n\t\t\t{ title: 'User Agent', value: 'user_agent' },\n\t\t\t{ title: 'IP Address', value: 'ip_address' },\n\t\t],\n\t\tfailed_logins: [],\n\n\t\tcurrent_tab: 'lockouts',\n\t} ),\n\n\twatch: {\n\t\tcurrent_tab( val ) {\n\t\t\tif ( 'lockouts' === val ) {\n\t\t\t\t// this.getLockoutLogs();\n\t\t\t\tthis.view_all_activity_logs = aio_login__app_object.admin_url + '&tab=activity-log#/lockouts';\n\t\t\t}\n\t\t\tif ( 'failed-logins' === val ) {\n\t\t\t\t// this.getFailedAttemptLogs();\n\t\t\t\tthis.view_all_activity_logs = aio_login__app_object.admin_url + '&tab=activity-log#/failed-logins';\n\t\t\t}\n\t\t}\n\t},\n\n\tmethods: {\n\t\ttoggleShift( e, tab ) {\n\t\t\te.preventDefault();\n\n\t\t\tthis.tabs.forEach( tab => {\n\t\t\t\ttab.active = false;\n\t\t\t} );\n\n\t\t\ttab.active       = true;\n\t\t\tthis.current_tab = tab.slug;\n\t\t},\n\n\t\tgetFailedAttemptLogs() {\n\t\t\taxios.get( 'aio-login/dashboard/logs/lockouts' )\n\t\t\t\t.then( response => {\n\t\t\t\t\tthis.lockouts = response.data;\n\t\t\t\t} )\n\t\t\t\t.catch( error => {} );\n\t\t},\n\n\t\tgetLockoutLogs() {\n\t\t\taxios.get( 'aio-login/dashboard/logs/failed-logins' )\n\t\t\t\t.then( response => {\n\t\t\t\t\tthis.failed_logins = response.data;\n\t\t\t\t} )\n\t\t\t\t.catch( error => {} );\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.getFailedAttemptLogs();\n\t\tthis.getLockoutLogs();\n\t},\n}\n</script>\n\n<style scoped>\n.aio-login__recent-activity-wrapper h2 {\n\tcolor: #405980;\n\tfont-size: 24px;\n\tfont-weight: 600;\n}\n\n.aio-login-table-nav {\n\theight: 48px;\n\tborder-radius: 8px 8px 0 0;\n\tbackground: #FBF5FF;\n}\n\n.aio-login__table-nav-item {\n\tpadding: 15px 30px;\n\tdisplay: inline-block;\n}\n\n.aio-login__table-nav-item a {\n\tcolor: #9516DF;\n\tfont-weight: 600;\n\tfont-size: 16px;\n\tline-height: 16px;\n\ttext-decoration: none;\n}\n\n.aio-login__table-nav-item:first-child {\n\tborder-radius: 8px 0 0 0;\n}\n\n.aio-login__table-nav-item.active {\n\tbackground: #9516DF;\n}\n\n.aio-login__table-nav-item.active a {\n\tcolor: #fff;\n}\n\n.aio-login__activate {\n\tcursor: pointer;\n\tdisplay: inline-block;\n}\n\n.aio-login__table {\n\twidth: 100%;\n\tborder-collapse: collapse;\n}\n\n.aio-login__table thead th {\n\tfont-size: 16px;\n\tcolor: #405980;\n\tpadding: 15px 30px;\n\tbackground: #e8e5e8;\n\ttext-align: left;\n\tborder-bottom: 1px solid #EBE8EB;\n\tfont-weight: 600;\n}\n\n.aio-login__table td {\n\tfont-weight: 400;\n\tfont-size: 16px;\n\tcolor: #405980;\n\tbackground: #ffffff;\n\tborder-bottom: 1px solid #EBE8EB;\n\tpadding: 15px 30px;\n\ttext-align: left;\n}\n\n.aio-login__table tr:last-child td {\n\tborder-bottom: none;\n}\n\n.aio-login__view-all-activity {\n\tcolor: #9516DF;\n\tfont-weight: 600;\n\tfont-size: 16px;\n\tline-height: 16px;\n\ttext-decoration: none;\n\tbackground: #fff;\n\tpadding: 12px 24px;\n\tborder-radius: 4px;\n}\n</style>","<template>\n\t<section class=\"aio-login-dashboard-docs\">\n\t\t<div class=\"aio-login-dashboard-docs__head\">\n\t\t\t<h2>Guides and Documentation</h2>\n\t\t\t<a :href=\"docsBaseUrl\" target=\"_blank\" rel=\"noopener noreferrer\">View All</a>\n\t\t</div>\n\t\t<div class=\"aio-login-dashboard-docs__grid\">\n\t\t\t<article v-for=\"section in docSections\" :key=\"section.title\" class=\"aio-login-dashboard-docs__card\">\n\t\t\t\t<h3>{{ section.title }}</h3>\n\t\t\t\t<ul>\n\t\t\t\t\t<li v-for=\"item in section.items\" :key=\"item.label\">\n\t\t\t\t\t\t<a :href=\"item.url\" target=\"_blank\" rel=\"noopener noreferrer\">{{ item.label }}</a>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t\t<a class=\"aio-login-dashboard-docs__more\" :href=\"section.moreUrl\" target=\"_blank\" rel=\"noopener noreferrer\">More →</a>\n\t\t\t</article>\n\t\t</div>\n\t</section>\n</template>\n\n<script>\nexport default {\n\tname: 'aio-login-dashboard-docs',\n\tdata: () => ( {\n\t\tdocsBaseUrl: 'https://aiologin.com/docs/',\n\t\tdocSections: [\n\t\t\t{\n\t\t\t\ttitle: 'Getting Started',\n\t\t\t\tmoreUrl: 'https://aiologin.com/docs/getting-started/',\n\t\t\t\titems: [\n\t\t\t\t\t{ label: 'Installation and Activation Guide', url: 'https://aiologin.com/docs/getting-started/installation-and-activation-guide/' },\n\t\t\t\t\t{ label: 'AIO Login Pro Installation and Activation Guide', url: 'https://aiologin.com/docs/getting-started/aio-login-pro-installation-and-activation-guide/' },\n\t\t\t\t\t{ label: 'AIO Login Dashboard', url: 'https://aiologin.com/docs/getting-started/aio-login-dashboard/' },\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: 'WordPress Login Protection',\n\t\t\t\tmoreUrl: 'https://aiologin.com/docs/wordpress-login-protection/',\n\t\t\t\titems: [\n\t\t\t\t\t{ label: 'Change your WP-Admin Login URL', url: 'https://aiologin.com/docs/wordpress-login-protection/change-your-wp-admin-login-url/' },\n\t\t\t\t\t{ label: 'Enabling Limit Login Attempts', url: 'https://aiologin.com/docs/wordpress-login-protection/enabling-limit-login-attempts/' },\n\t\t\t\t\t{ label: 'Blocking WordPress IP Addresses', url: 'https://aiologin.com/docs/wordpress-login-protection/blocking-wordpress-ip-addresses/' },\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: 'WordPress Login Security',\n\t\t\t\tmoreUrl: 'https://aiologin.com/docs/wordpress-login-security/',\n\t\t\t\titems: [\n\t\t\t\t\t{ label: 'Setting Up Google reCAPTCHA', url: 'https://aiologin.com/docs/wordpress-login-security/setting-up-google-recaptcha/' },\n\t\t\t\t\t{ label: 'Two Factor Authentication', url: 'https://aiologin.com/docs/wordpress-login-security/two-factor-authentication/' },\n\t\t\t\t\t{ label: 'Temporary Access', url: 'https://aiologin.com/docs/wordpress-login-security/temporary-access/' },\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: 'Activity Logs',\n\t\t\t\tmoreUrl: 'https://aiologin.com/docs/wordpress-login-page-activity-log/',\n\t\t\t\titems: [\n\t\t\t\t\t{ label: 'Lockout Users Activity Logs', url: 'https://aiologin.com/docs/wordpress-login-page-activity-log/activity-logs-for-lockout-users/' },\n\t\t\t\t\t{ label: 'Failed Login Attempts Logs', url: 'https://aiologin.com/docs/wordpress-login-page-activity-log/activity-logs-for-failed-login-attempts/' },\n\t\t\t\t\t{ label: 'User Enumeration Logs', url: 'https://aiologin.com/docs/wordpress-login-page-activity-log/logs-for-users-enumeration/' },\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: 'Social Login Apps',\n\t\t\t\tmoreUrl: 'https://aiologin.com/docs/social-login-apps/',\n\t\t\t\titems: [\n\t\t\t\t\t{ label: 'Google Social Login App', url: 'https://aiologin.com/docs/social-login-apps/google-social-login-app/' },\n\t\t\t\t\t{ label: 'Microsoft Social Login App', url: 'https://aiologin.com/docs/social-login-apps/microsoft-social-login-app/' },\n\t\t\t\t\t{ label: 'Facebook Social Login App', url: 'https://aiologin.com/docs/social-login-apps/facebook-social-login-app/' },\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: 'Integrations',\n\t\t\t\tmoreUrl: 'https://aiologin.com/docs/integrations/',\n\t\t\t\titems: [\n\t\t\t\t\t{ label: 'WooCommerce Integration', url: 'https://aiologin.com/docs/integrations/aiologin-woocommerce-integrations/' },\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t} ),\n}\n</script>\n\n<style scoped>\n.aio-login-dashboard-docs {\n\twidth: 100%;\n\tbox-sizing: border-box;\n\toverflow: hidden;\n\tborder: 1px solid #dde3ee;\n\tborder-radius: 10px;\n\tbackground: linear-gradient(180deg, #f8fbff 0%, #f4f8ff 100%);\n\tpadding: 16px;\n\tmargin-bottom: 24px;\n}\n\n.aio-login-dashboard-docs__head {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tmargin-bottom: 14px;\n\tpadding: 0 4px;\n}\n\n.aio-login-dashboard-docs__head h2 {\n\tmargin: 0;\n\tfont-size: 19px;\n\tfont-weight: 600;\n\tletter-spacing: 0.1px;\n\tcolor: #27364b;\n}\n\n.aio-login-dashboard-docs__head a {\n\tcolor: #445b7c;\n\ttext-decoration: none;\n\tfont-weight: 600;\n\tfont-size: 12px;\n}\n\n.aio-login-dashboard-docs__head a:hover {\n\tcolor: #27364b;\n\ttext-decoration: underline;\n}\n\n.aio-login-dashboard-docs__grid {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(3, minmax(0, 1fr));\n\tgap: 12px;\n}\n\n.aio-login-dashboard-docs__card {\n\tbackground: #ffffff;\n\tborder: 1px solid #e1e7f0;\n\tborder-radius: 8px;\n\tpadding: 13px 14px;\n\tmin-height: 140px;\n\tbox-sizing: border-box;\n\ttransition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;\n}\n\n.aio-login-dashboard-docs__card:hover {\n\tborder-color: #cfd9ea;\n\tbox-shadow: 0 4px 14px rgba(39, 54, 75, 0.07);\n\ttransform: translateY(-1px);\n}\n\n.aio-login-dashboard-docs__card h3 {\n\tmargin: 0 0 9px;\n\tcolor: #2f425f;\n\tfont-size: 15px;\n\tfont-weight: 600;\n}\n\n.aio-login-dashboard-docs__card ul {\n\tmargin: 0;\n\tpadding: 0;\n\tlist-style: none;\n}\n\n.aio-login-dashboard-docs__card li + li {\n\tmargin-top: 7px;\n}\n\n.aio-login-dashboard-docs__card a {\n\tcolor: #4f617d;\n\tfont-size: 12px;\n\ttext-decoration: none;\n\tline-height: 1.45;\n\tword-break: break-word;\n}\n\n.aio-login-dashboard-docs__card a:hover {\n\tcolor: #27364b;\n\ttext-decoration: underline;\n}\n\n.aio-login-dashboard-docs__more {\n\tdisplay: inline-block;\n\tmargin-top: 11px;\n\tcolor: #2d4568;\n\tfont-weight: 600;\n\tfont-size: 12px;\n}\n\n@media (max-width: 1200px) {\n\t.aio-login-dashboard-docs__grid {\n\t\tgrid-template-columns: repeat(2, minmax(0, 1fr));\n\t}\n}\n\n@media (max-width: 782px) {\n\t.aio-login-dashboard-docs__grid {\n\t\tgrid-template-columns: 1fr;\n\t}\n}\n</style>\n","<template>\n\t<div>\n\t\t<p class=\"submit\">\n\t\t\t<button\n\t\t\t\ttype=\"submit\"\n\t\t\t\t:class=\"class\"\n\t\t\t\t@click=\"( e ) => $emit('button-click', e )\">\n\t\t\t<slot>Save Changes</slot></button>\n\t\t</p>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'aio-login-submit-button',\n\n\tprops: {\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\tdefault: 'primary'\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tclass() {\n\t\t\treturn {\n\t\t\t\t'button': true,\n\t\t\t\t'aio-login__primary': this.type === 'primary',\n\t\t\t\t'button-secondary': this.type === 'secondary',\n\t\t\t};\n\t\t}\n\t}\n}\n</script>\n\n<style scoped>\n.aio-login__primary {\n\tborder: #9516df;\n\tbackground-color: #9416de;\n\tcolor: #fff;\n}\n\n.aio-login__primary:hover {\n\tbackground-color: #9416de;\n\tcolor: #fff;\n}\n</style>","<template>\n\t<div class=\"aio-login__media-uploader\" :style=\"backgroundImage\">\n\t\t<button\n\t\t\t:id=\"id\"\n\t\t\ttype=\"button\"\n\t\t\t@click=\"handleUploadImage\"\n\t\t\tclass=\"button button-secondary\"\n\t\t\t:style=\"displayUploadedImage\"\n\t\t>{{ title }}</button>\n\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\t:style=\"displayRemoveImage\"\n\t\t\t@click=\"handleRemoveImage\"\n\t\t\tclass=\"button button-secondary\"\n\t\t>Remove</button>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'aio-login-media',\n\n\tprops: {\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\tdefault: 'Upload Image'\n\t\t},\n\n\t\tdefaultImage: {\n\t\t\ttype: String,\n\t\t\tdefault: ''\n\t\t},\n\n\t\timage: {\n\t\t\ttype: String,\n\t\t\tdefault: ''\n\t\t},\n\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true\n\t\t}\n\t},\n\n\tdata: ( vm ) => ( {\n\t\tmedia_uploader: null,\n\t\timage_url: vm.image,\n\t\timage_id: '',\n\t} ),\n\n\tmethods: {\n\t\thandleUploadImage( e ) {\n\t\t\te.preventDefault();\n\n\t\t\tif ( this.media_uploader ) {\n\t\t\t\tthis.media_uploader.open();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.media_uploader = wp.media.frames.file_frame = wp.media( {\n\t\t\t\ttitle: this.title,\n\t\t\t\tmultiple: false,\n\t\t\t\tbutton: {\n\t\t\t\t\ttext: 'Choose Picture',\n\t\t\t\t},\n\t\t\t} );\n\n\t\t\tthis.media_uploader.on( 'select', () => {\n\t\t\t\tvar attachment = this.media_uploader.state().get('selection').first().toJSON();\n\t\t\t\tthis.image_url = attachment.url;\n\t\t\t\tthis.image_id  = attachment.id;\n\n\t\t\t\tthis.$emit( 'image-updated', attachment );\n\t\t\t} );\n\n\t\t\tthis.media_uploader.open();\n\t\t},\n\n\t\thandleRemoveImage( e ) {\n\t\t\te.preventDefault();\n\n\t\t\tthis.image_url = this.defaultImage;\n\t\t\tthis.image_id  = '';\n\n\t\t\tthis.$emit( 'image-removed' );\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tdisplayUploadedImage() {\n\t\t\tif ( this.image_url === this.defaultImage ) {\n\t\t\t\treturn { display: 'block' }\n\t\t\t} else {\n\t\t\t\treturn { display: 'none' }\n\t\t\t}\n\t\t},\n\n\t\tdisplayRemoveImage() {\n\t\t\tif ( this.image_url === this.defaultImage ) {\n\t\t\t\treturn { display: 'none' }\n\t\t\t} else {\n\t\t\t\treturn { display: 'block' }\n\t\t\t}\n\t\t},\n\n\t\tbackgroundImage() {\n\t\t\treturn {\n\t\t\t\tbackgroundImage: 'url(' + this.image_url + ')'\n\t\t\t}\n\t\t}\n\t}\n}\n</script>\n\n<style scoped>\n.aio-login__media-uploader {\n\twidth: 250px;\n\theight: 250px;\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\tbackground-repeat: no-repeat;\n\tbackground-position: center;\n\tbackground-size: cover;\n\tbackground-color: rgba(0,0,0,0.5);\n\tborder-radius: 50%;\n}\n</style>","<template>\n\t<div class=\"aio-login__toggle-switch-wrapper\">\n\t\t<input\n\t\t\tclass=\"aio-login__toggle-field\"\n\t\t\ttype=\"checkbox\"\n\t\t\t:id=\"id\"\n\t\t\t:name=\"name\"\n\t\t\tvalue=\"1\"\n\t\t\t:checked=\"enabled\"\n\t\t\t:disabled=\"disabled\"\n\t\t\t@click=\"handelEvent\"\n\t\t/>\n\t\t<label\n\t\t\tclass=\"aio-login__toggle-switch\"\n\t\t\t:for=\"id\"\n\t\t>\n\t\t\t<span class=\"aio-login__toggle-indicator\"></span>\n\t\t</label>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'aio-login-toggle',\n\n\tprops: {\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tenabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata: ( vm ) => ( {} ),\n\n\tmethods: {\n\t\thandelEvent( e ) {\n\t\t\tthis.$emit( 'toggle-input', e.target.checked );\n\t\t}\n\t}\n}\n</script>\n\n<style scoped>\n.aio-login__toggle-switch-wrapper {\n\twidth: 48px;\n\theight: 24px;\n\tborder: 1px solid #9516DF;\n\tborder-radius: 50px;\n}\n\n.aio-login__toggle-switch {\n\twidth: 100%;\n\theight: 100%;\n\tdisplay: block;\n\tborder-radius: 50px;\n\tbackground: #F7ECFD;\n\tposition: relative;\n\tleft: 0;\n\ttransition: left 0.2s ease-in-out;\n}\n\n.aio-login__toggle-indicator {\n\twidth: 20px;\n\theight: 20px;\n\tborder-radius: 50px;\n\tbackground: #9516DF;\n\tposition: absolute;\n\ttop: 2px;\n\tleft: 2px;\n\ttransition: left 0.2s ease-in-out;\n}\n\n.aio-login__toggle-field:checked + .aio-login__toggle-switch {\n\tbackground: #9516DF;\n\ttransition: all 0.2s ease-in-out;\n}\n\n.aio-login__toggle-field:checked + .aio-login__toggle-switch .aio-login__toggle-indicator {\n\tleft: 26px;\n\tbackground-color: #F7ECFD;\n\ttransition: all 0.2s ease-in-out;\n}\n\n.aio-login__toggle-field {\n\tdisplay: none;\n}\n\n.aio-login__toggle-field:disabled + .aio-login__toggle-switch {\n\topacity: 0.5;\n}\n</style>","<template>\n\t<div class=\"aio-login__snackbar\">\n\t\t<div class=\"aio-login__snackbar__content\">\n\n\t\t\t{{ message }}\n\n\t\t\t<button @click=\"handleClose\">&times;</button>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'aio-login-snackbar',\n\n\tprops: {\n\t\tmessage: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\n\t\tduration: {\n\t\t\ttype: Number,\n\t\t\tdefault: 5000,\n\t\t},\n\t},\n\n\tdata: ( vm ) => ( {\n\t\tdisable: false,\n\t} ),\n\n\twatch: {\n\t\tdisable( value ) {\n\t\t\tif ( value ) {\n\t\t\t\tthis.$emit( 'close' );\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\thandleClose() {\n\t\t\tthis.disable = true;\n\t\t},\n\t},\n\n\tmounted() {\n\t\tsetTimeout( () => {\n\t\t\tthis.disable = true;\n\t\t}, this.duration );\n\t},\n}\n</script>\n\n<style scoped>\n.aio-login__snackbar {\n\tposition: fixed;\n\tbottom: 40px;\n\tright: 40px;\n\tbackground: #9516df;\n\tcolor: #fff;\n\tpadding: 10px 20px;\n\tborder-radius: 5px;\n}\n\n.aio-login__snackbar__content {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n}\n\n.aio-login__snackbar__content button {\n\tbackground: none;\n\tborder: none;\n\tcolor: #fff;\n\tcursor: pointer;\n}\n</style>","<template>\n\t<div class=\"aio-login__get-pro-shell\">\n\t\t<div class=\"aio-login__get-pro-content\">\n\t\t\t<h1>All-In-One Login <span>PRO</span> Features 👑</h1>\n\t\t\t<div class=\"aio-login__features-grid\">\n\t\t\t\t<div class=\"aio-login__feature\" v-for=\"feature in features\" :key=\"feature.title\">\n\t\t\t\t\t<div class=\"aio-login__feature-icon-wrap\">\n\t\t\t\t\t\t<img class=\"aio-login__feature-icon\" :src=\"assetsUrl + feature.img\" :alt=\"feature.title\">\n\t\t\t\t\t</div>\n\t\t\t\t\t<h3 class=\"aio-login__feature-title\">{{ feature.title }}</h3>\n\t\t\t\t\t<p class=\"aio-login__feature-desc\">{{ feature.description }}</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"aio-login__cta-wrap\">\n\t\t\t\t<a\n\t\t\t\t\tclass=\"aio-login__get-pro-btn\"\n\t\t\t\t\thref=\"https://aiologin.com/pricing/?utm_source=plugin&utm_medium=get_pro_tab&utm_campaign=plugin\"\n\t\t\t\t>\n\t\t\t\t\tGet AIO Login Pro\n\t\t\t\t</a>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'aio-login-get-pro',\n\tdata: () => ( {\n\t\tassetsUrl: aio_login__app_object.assets_url,\n\t\tfeatures: [\n\t\t\t{\n\t\t\t\timg: 'images/icons/get-pro-icons/2fa-authentication.svg',\n\t\t\t\ttitle: '2FA Authentication',\n\t\t\t\tdescription: 'Add extra security with 2FA using authenticator apps (TOTP) or email verification for safer user logins.',\n\t\t\t},\n\t\t\t{\n\t\t\t\timg: 'images/icons/get-pro-icons/social-login.svg',\n\t\t\t\ttitle: 'Social Login',\n\t\t\t\tdescription: 'Let users log in via Google, Facebook, Apple, Discord, and GitHub for a fast, secure, and seamless experience.',\n\t\t\t},\n\t\t\t{\n\t\t\t\timg: 'images/icons/get-pro-icons/customize-design.svg',\n\t\t\t\ttitle: 'Customize Design',\n\t\t\t\tdescription: 'Customize your login page with templates, fonts, and styling options to match your brand and improve UX.',\n\t\t\t},\n\t\t\t{\n\t\t\t\timg: 'images/icons/get-pro-icons/limit-login-attepmt.svg',\n\t\t\t\ttitle: 'Limit Login Attempts',\n\t\t\t\tdescription: 'Prevent brute-force attacks by limiting login attempts and automatically blocking suspicious IP addresses.',\n\t\t\t},\n\t\t\t{\n\t\t\t\timg: 'images/icons/get-pro-icons/passwordless-login.svg',\n\t\t\t\ttitle: 'Passwordless Login (Temp Access URL)',\n\t\t\t\tdescription: 'Generate secure temporary access links so users can log in without passwords, ensuring quick and controlled access.',\n\t\t\t},\n\t\t\t{\n\t\t\t\timg: 'images/icons/get-pro-icons/ip-access-control.svg',\n\t\t\t\ttitle: 'IP Access Control (Whitelist & Blacklist)',\n\t\t\t\tdescription: 'Allow trusted IPs and block suspicious ones to control access and protect your login page from unauthorized users.',\n\t\t\t},\n\t\t\t{\n\t\t\t\timg: 'images/icons/get-pro-icons/spam-protection.svg',\n\t\t\t\ttitle: 'Spam Protection (CAPTCHA)',\n\t\t\t\tdescription: 'Protect forms and logins using hCaptcha and Cloudflare Turnstile to block bots and reduce spam effectively.',\n\t\t\t},\n\t\t\t{\n\t\t\t\timg: 'images/icons/get-pro-icons/woocommerce.svg',\n\t\t\t\ttitle: 'WooCommerce (Integration)',\n\t\t\t\tdescription: 'Secure WooCommerce login with social login and seamless authentication for a safer store experience.',\n\t\t\t},\n\t\t],\n\t} ),\n}\n</script>\n\n<style scoped>\n.aio-login__get-pro-shell {\n\tbackground: #ffffff;\n\tpadding: 20px;\n}\n\n.aio-login__get-pro-content {\n\tpadding: 52px 64px 48px;\n\tborder-radius: 16px;\n\tposition: relative;\n\toverflow: hidden;\n\tbackground-image:\n\t\tradial-gradient(152% 132% at 136% 112%, #00CC99 13%, #141B34 45%, #9516df 127%),\n\t\tlinear-gradient(118deg, #000000 0%, #ffffff 54%, #142448 100%);\n\tbackground-repeat: no-repeat;\n\tbackground-size: cover;\n\tbackground-position: center;\n\tcolor: #fff;\n\tisolation: isolate;\n}\n\n.aio-login__get-pro-content::before {\n\tcontent: '';\n\tposition: absolute;\n\tinset: 0;\n\tbackground: url('../../images/aoibg.svg') center/cover no-repeat;\n\topacity: 0.42;\n\tpointer-events: none;\n\tz-index: 0;\n}\n\n.aio-login__get-pro-content::after {\n\tcontent: '';\n\tposition: absolute;\n\tinset: 0;\n\tbackground:\n\t\tradial-gradient(56% 60% at 89% 94%, rgba(197, 145, 255, 0.35) 0%, rgba(197, 145, 255, 0) 72%),\n\t\tradial-gradient(42% 45% at 9% 12%, rgba(146, 47, 223, 0.28) 0%, rgba(146, 47, 223, 0) 70%);\n\tpointer-events: none;\n\tz-index: 0;\n}\n\n.aio-login__get-pro-content > * {\n\tposition: relative;\n\tz-index: 1;\n}\n\n.aio-login__get-pro-content h1 {\n\tmargin: 0;\n\ttext-align: center;\n\tcolor: #fff;\n\tfont-family: Figtree, sans-serif;\n\tfont-size: 44px;\n\tfont-weight: 700;\n\tline-height: 1.2;\n}\n\n.aio-login__get-pro-content h1 span {\n\tcolor: #fbbc09;\n}\n\n.aio-login__features-grid {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(4, minmax(0, 1fr));\n\tgap: 50px;\n\tmargin-top: 58px;\n}\n\n.aio-login__feature {\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: flex-start;\n}\n\n.aio-login__feature-icon {\n\twidth: 52px;\n\theight: 52px;\n\tobject-fit: contain;\n}\n\n.aio-login__feature-title {\n\tmargin: 12px 0 12px;\n\tcolor: #fff;\n\tfont-family: Figtree, sans-serif !important;\n\tfont-size: 26px;\n\tfont-weight: 700;\n\tline-height: 1.22;\n}\n\n.aio-login__feature-desc {\n\tmargin: 0;\n\tcolor: #ebc8ff;\n\tfont-family: Figtree, sans-serif;\n\tfont-size: 14px;\n\tfont-weight: 500;\n\tline-height: 1.44;\n}\n\n.aio-login__cta-wrap {\n\tmargin-top: 42px;\n\ttext-align: center;\n}\n\n.aio-login__get-pro-btn {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tbox-sizing: border-box;\n\tgap: 10px;\n\tpadding: 16px 38px;\n\tborder-radius: 8px;\n\tborder: 2px solid transparent;\n\tbackground:\n\t\tlinear-gradient(#141b34, #141b34) padding-box,\n\t\tlinear-gradient(90deg, #00cc99 0%, #ffc130 33%, #de79ff 66%, #ff8f67 100%) border-box;\n\tbackground-size: auto, 220% 100%;\n\tbackground-position: 0 0, 0% 50%;\n\tcolor: #fff;\n\ttext-decoration: none;\n\tfont-family: Figtree, sans-serif;\n\tfont-weight: 600;\n\tfont-size: 24px;\n\tline-height: 1.2;\n\ttransition: transform 0.2s ease;\n}\n\n.aio-login__get-pro-btn:hover {\n\tanimation: aio-login-get-pro-border-move 1.2s linear infinite;\n\ttransform: translateY(-1px);\n}\n\n.aio-login__get-pro-btn::after {\n\tcontent: '';\n\twidth: 28px;\n\theight: 10px;\n\tbackground: url('../../images/aoa-arrow.svg') center/contain no-repeat;\n}\n\n@keyframes aio-login-get-pro-border-move {\n\t0% {\n\t\tbackground-position: 0 0, 0% 50%;\n\t}\n\t100% {\n\t\tbackground-position: 0 0, 220% 50%;\n\t}\n}\n\n@media (max-width: 1366px) {\n\t.aio-login__features-grid {\n\t\tgrid-template-columns: repeat(2, minmax(0, 1fr));\n\t\tgap: 38px 30px;\n\t}\n}\n\n@media (max-width: 1024px) {\n\t.aio-login__get-pro-shell {\n\t\tpadding: 14px;\n\t}\n\n\t.aio-login__get-pro-content {\n\t\tpadding: 30px 22px 28px;\n\t}\n\n\t.aio-login__get-pro-content h1 {\n\t\tfont-size: 34px;\n\t}\n\n\t.aio-login__features-grid {\n\t\tmargin-top: 30px;\n\t\tgap: 30px 24px;\n\t}\n\n\t.aio-login__feature-title {\n\t\tfont-size: 21px;\n\t}\n\n\t.aio-login__feature-desc {\n\t\tfont-size: 13px;\n\t}\n\n\t.aio-login__get-pro-btn {\n\t\tfont-size: 20px;\n\t\tpadding: 14px 28px;\n\t}\n}\n\n@media (max-width: 767px) {\n\t.aio-login__get-pro-content {\n\t\tpadding: 22px 16px 22px;\n\t}\n\n\t.aio-login__get-pro-content h1 {\n\t\tfont-size: 24px;\n\t\tline-height: 1.28;\n\t}\n\n\t.aio-login__features-grid {\n\t\tgrid-template-columns: 1fr;\n\t\tgap: 22px;\n\t\tmargin-top: 24px;\n\t}\n\n\t.aio-login__feature-title {\n\t\tfont-size: 28px;\n\t\tmargin: 10px 0 8px;\n\t}\n\n\t.aio-login__feature-desc {\n\t\tfont-size: 16px;\n\t}\n\n\t.aio-login__cta-wrap {\n\t\tmargin-top: 26px;\n\t}\n\n\t.aio-login__get-pro-btn {\n\t\twidth: 100%;\n\t\tmax-width: 100%;\n\t\tfont-size: 18px;\n\t\tpadding: 13px 14px;\n\t}\n}\n\n</style>","<template>\n\t<div class=\"aio-login__popup-wrapper\">\n\t\t<div class=\"aio-login__popup-container\" :class=\"containerClass\" :style=\"container_style\">\n\t\t\t<span class=\"aio-login__popup-close\">\n\t\t\t\t<button :style=\"'color: ' + ( 'nocontent' === content ? '#ffffff' : '#000000' ) + ';' \" @click=\"e => $emit( 'close-popup' )\">&times;</button>\n\t\t\t</span>\n\t\t\t<div class=\"container\" v-if=\"'content' === content\">\n\n\t\t\t\t<div v-if=\"'content' === content\" class=\"aio-login__popup-title\">\n\t\t\t\t\t<h2>\n\t\t\t\t\t\t<slot name=\"popup-title\"></slot>\n\t\t\t\t\t</h2>\n\t\t\t\t</div>\n\n\t\t\t\t<div v-if=\"'content' === content\" class=\"aio-login__popup-content\">\n\t\t\t\t\t<slot name=\"popup-content\"></slot>\n\t\t\t\t</div>\n\n\t\t\t\t<div v-if=\"'content' === content\" class=\"aio-login__popup-footer\">\n\t\t\t\t\t<slot name=\"popup-footer\"></slot>\n\t\t\t\t</div>\n\n\t\t\t</div>\n\t\t\t<div v-if=\"'nocontent' === content\">\n\t\t\t\t<slot name=\"default\"></slot>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'aio-login-popup',\n\n\tprops: {\n\t\twidth: {\n\t\t\ttype: String,\n\t\t\tdefault: '500px'\n\t\t},\n\n\t\theight: {\n\t\t\ttype: String,\n\t\t\tdefault: '500px'\n\t\t},\n\n\t\tcontent: {\n\t\t\ttype: String,\n\t\t\tdefault: 'content'\n\t\t},\n\n\t\tstyle: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {}\n\t\t},\n\n\t\t/** Extra class on the modal box (e.g. per-screen styling from Pro). */\n\t\tcontainerClass: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tcontainer_style() {\n\t\t\treturn {\n\t\t\t\twidth: this.width,\n\t\t\t\theight: this.height\n\t\t\t};\n\t\t}\n\t}\n}\n</script>\n\n<style scoped>\n.aio-login__popup-wrapper {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n\tbackground-color: rgba( 0, 0, 0, 0.5);\n\tz-index: 9999;\n\tbackdrop-filter: blur( 1px );\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n}\n\n.aio-login__popup-container {\n\twidth: 500px;\n\theight: 500px;\n\tbackground-color: #fff;\n\tbox-shadow: 0 0 10px rgba( 0, 0, 0, 0.1 );\n\tposition: relative;\n\tborder: 1px solid #9416de;\n}\n\n.aio-login__popup-close {\n\tposition: absolute;\n\ttop: 10px;\n\tright: 10px;\n\tz-index: 40;\n}\n\n.aio-login__popup-close button {\n\tbackground: none;\n    border: none;\n    font-size: 30px;\n    font-weight: 700;\n    color: #6e16df !important;\n    cursor: pointer;\n}\n\n.aio-login__popup-title {\n\theight: 33px;\n}\n\n.aio-login__popup-content {\n\t/* height: 400px; */\n}\n\n.aio-login__popup-footer {\n\theight: 50px;\n}\n\n</style>","<template>\n\n\t<div :style=\"popupCssVars\">\n\t\t<aio-login-popup :width=\"popupWidth\" :height=\"popupHeight\" content=\"nocontent\" :container-class=\"isAppSumoPopup ? 'aio-login-pro-popup--appsumo-shell' : 'aio-login-pro-popup--freemius-shell'\" v-on:close-popup=\"e => $emit( 'close-popup', e )\">\n\t\t\t<template v-slot:default>\n\t\t\t\t<div class=\"aio-login-pro__container\" :class=\"{ 'aio-login-pro__container--appsumo': isAppSumoPopup, 'aio-login-pro__container--freemius': !isAppSumoPopup }\">\n\t\t\t\t\t<template v-if=\"isAppSumoPopup\">\n\t\t\t\t\t\t<div class=\"aio-login-appsumo-popup\">\n\t\t\t\t\t\t\t<div class=\"aio-login-appsumo-popup__logo-wrap\">\n\t\t\t\t\t\t\t\t<img :src=\"appsumoImageBase + 'logo.svg'\" alt=\"AIO Login\" class=\"aio-login-appsumo-popup__logo\">\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div class=\"aio-login-appsumo-popup__headline\">\n\t\t\t\t\t\t\t\t<div class=\"aio-login-appsumo-popup__title-row\">\n\t\t\t\t\t\t\t\t\t<h2 class=\"aio-login-appsumo-popup__title\">Go Unlimited with AIO Login</h2>\n\t\t\t\t\t\t\t\t\t<img :src=\"appsumoImageBase + 'infinity.svg'\" alt=\"\" class=\"aio-login-appsumo-popup__infinity\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<p class=\"aio-login-appsumo-popup__subtitle\">Unlimited Sites + Lifetime Access</p>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div class=\"aio-login-appsumo-popup__features\">\n\t\t\t\t\t\t\t\t<div class=\"aio-login-appsumo-popup__feature\">\n\t\t\t\t\t\t\t\t\t<img :src=\"appsumoImageBase + 'feature-2fa.svg'\" alt=\"\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t<span>2FA Authenticator</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"aio-login-appsumo-popup__feature\">\n\t\t\t\t\t\t\t\t\t<img :src=\"appsumoImageBase + 'feature-ip.svg'\" alt=\"\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t<span>IP Protection</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"aio-login-appsumo-popup__feature\">\n\t\t\t\t\t\t\t\t\t<img :src=\"appsumoImageBase + 'feature-social.svg'\" alt=\"\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t<span>Social Login</span>\n\t\t\t\t\t\t\t\t\t<span class=\"aio-login-appsumo-popup__social-icons\">\n\t\t\t\t\t\t\t\t\t\t<img :src=\"appsumoImageBase + 'social-discord.svg'\" alt=\"\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t<img :src=\"appsumoImageBase + 'social-apple.svg'\" alt=\"\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"aio-login-appsumo-popup__feature\">\n\t\t\t\t\t\t\t\t\t<img :src=\"appsumoImageBase + 'feature-cloudflare.svg'\" alt=\"\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t<span>Cloudflare turnstile</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"aio-login-appsumo-popup__feature\">\n\t\t\t\t\t\t\t\t\t<img :src=\"appsumoImageBase + 'feature-woo.svg'\" alt=\"\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t<span>WooCommerce Integration</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"aio-login-appsumo-popup__feature\">\n\t\t\t\t\t\t\t\t\t<img :src=\"appsumoImageBase + 'feature-customizer.svg'\" alt=\"\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t<span>Login Page Customizer</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<a class=\"aio-login-appsumo-popup__cta\" href=\"https://appsumo.com/products/aiologin/?p=1#pricePlans\" target=\"_blank\" rel=\"noopener noreferrer\">\n\t\t\t\t\t\t\t\tUpgrade Now\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t\t<div v-else class=\"aio-login-freemius-popup\">\n\t\t\t\t\t\t<div class=\"aio-login-freemius-popup__logo-wrap\">\n\t\t\t\t\t\t\t<img :src=\"assets_url + 'images/logo.svg'\" alt=\"AIO Login\" class=\"aio-login-freemius-popup__logo\">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<h2 class=\"aio-login-freemius-popup__title\">To access more features and options</h2>\n\t\t\t\t\t\t<div class=\"aio-login-freemius-popup__features\">\n\t\t\t\t\t\t\t<div class=\"aio-login-freemius-popup__feature\">\n\t\t\t\t\t\t\t\t<img :src=\"assets_url + 'images/feature-2fa.svg'\" alt=\"\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t<span>2FA Authenticator</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"aio-login-freemius-popup__feature\">\n\t\t\t\t\t\t\t\t<img :src=\"assets_url + 'images/feature-ip.svg'\" alt=\"\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t<span>IP Protection</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"aio-login-freemius-popup__feature\">\n\t\t\t\t\t\t\t\t<img :src=\"assets_url + 'images/feature-social.svg'\" alt=\"\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t<span>Social Login</span>\n\t\t\t\t\t\t\t\t<span class=\"aio-login-freemius-popup__social-icons\">\n\t\t\t\t\t\t\t\t\t<img :src=\"assets_url + 'images/social-discord.svg'\" alt=\"\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t<img :src=\"assets_url + 'images/social-apple.svg'\" alt=\"\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t<img :src=\"assets_url + 'images/social-google.svg'\" alt=\"\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"aio-login-freemius-popup__feature\">\n\t\t\t\t\t\t\t\t<img :src=\"assets_url + 'images/feature-customizer.svg'\" alt=\"\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t<span>Security Notification</span>\n\t\t\t\t\t\t\t\t<span class=\"aio-login-freemius-popup__social-icons\">\n\t\t\t\t\t\t\t\t\t<span class=\"aio-login-freemius-popup__notify-pill\">\n\t\t\t\t\t\t\t\t\t\t<img :src=\"assets_url + 'images/icons/notification-slack.svg'\" class=\"aio-login-freemius-popup__notify-icon\" alt=\"\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t<span class=\"aio-login-freemius-popup__notify-pill\">\n\t\t\t\t\t\t\t\t\t\t<img :src=\"assets_url + 'images/icons/notification-webhook.svg'\" class=\"aio-login-freemius-popup__notify-icon\" alt=\"\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"aio-login-freemius-popup__feature\">\n\t\t\t\t\t\t\t\t<img :src=\"assets_url + 'images/feature-woo.svg'\" alt=\"\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t<span>WooCommerce Integration</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"aio-login-freemius-popup__feature\">\n\t\t\t\t\t\t\t\t<img :src=\"assets_url + 'images/feature-cloudflare.svg'\" alt=\"\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t<span>Cloudflare turnstile</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<a class=\"aio-login-freemius-popup__cta\" target=\"_blank\" href=\"https://aiologin.com/pricing/?utm_source=plugin&utm_medium=pro_pop_up&utm_campaign=plugin\">{{ popupCtaLabel }}</a>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t</aio-login-popup>\n\t</div>\n\n</template>\n\n<script>\nexport default {\n\tname: 'aio-login-pro-popup',\n\tdata: () => ( {\n\t\tassets_url: window.aio_login__app_object.assets_url,\n\t} ),\n\tcomputed: {\n\t\tisAppSumoPopup() {\n\t\t\tconst o = typeof window !== 'undefined' ? window.aio_login__app_object : null;\n\t\t\treturn o && o.upgrade_popup_variant === 'appsumo';\n\t\t},\n\t\tproPluginActive() {\n\t\t\tconst o = typeof window !== 'undefined' ? window.aio_login__app_object : null;\n\t\t\treturn !!( o && ( o.has_pro === 'true' || o.has_pro === true ) );\n\t\t},\n\t\tpopupCtaLabel() {\n\t\t\treturn this.proPluginActive ? 'Get Business Plan Now' : 'Get AIO Login Pro';\n\t\t},\n\t\tpopupWidth() {\n\t\t\treturn this.isAppSumoPopup ? '550px' : '550px';\n\t\t},\n\t\tpopupHeight() {\n\t\t\treturn this.isAppSumoPopup ? '483px' : '483px';\n\t\t},\n\t\tappsumoImageBase() {\n\t\t\treturn this.assets_url + 'images/';\n\t\t},\n\t\tpopupCssVars() {\n\t\t\treturn {\n\t\t\t\t'--aio-login-appsumo-close-url': `url(\"${this.assets_url}images/close.svg\")`,\n\t\t\t};\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n.aio-login-pro__container {\n\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\n\twidth: 576px;\n\theight: 340px;\n\tbackground-color: #490f95;\n\tbox-shadow: 0px 4px 16px 6px rgba( 0, 0, 0, 0.08 );\n\tposition: relative;\n\tbackground-image: url( ../../images/popup-left.png ), url( ../../images/popup-right.png );\n\tbackground-repeat: no-repeat;\n\tbackground-position: left bottom, right bottom;\n\toverflow: hidden;\n}\n\n.aio-login-pro__container::before {\n\tcontent: '';\n\tposition: absolute;\n\tbottom: 0;\n\tleft: -120px;\n\twidth: 270px;\n\theight: 270px;\n\tbackground-color: #0c9;\n\topacity: 0.5;\n\tborder-radius: 270px;\n\tfilter: blur( 125px )\n}\n\n/* AppSumo build: slightly warmer accent glow */\n.aio-login-pro__container--appsumo::before {\n\tbackground-color: #ff6b35;\n\topacity: 0.45;\n}\n\n.aio-login-pro__container::after {\n\tcontent: '';\n\tposition: absolute;\n\tbottom: 0;\n\tright: -120px;\n\twidth: 270px;\n\theight: 270px;\n\tbackground-color: #FFBA08;\n\topacity: 0.5;\n\tborder-radius: 270px;\n\tfilter: blur( 125px )\n}\n\n.aio-login__button {\n\tdisplay: inline-flex;\n\tpadding: 16px 32px;\n\tjustify-content: center;\n\talign-items: center;\n\tgap: 10px;\n\n\tborder-radius: 4px;\n\tbackground: #FFBA08;\n\n\ttext-decoration: none;\n\n\tcolor: #490F95;\n\tfont-family: Figtree;\n\tfont-size: 18px;\n\tfont-style: normal;\n\tfont-weight: 600;\n\tline-height: 100%; /* 18px */\n}\n\n.aio-login__title {\n\tcolor: #FFF;\n\tfont-family: Figtree;\n\tfont-size: 24px;\n\tfont-style: normal;\n\tfont-weight: 400;\n\tline-height: 24px; /* 100% */\n}\n\n.aio-login-pro__container--appsumo {\n\twidth: 550px;\n\theight: 483px;\n\tposition: relative;\n\tborder-radius: 30px;\n\tbackground: linear-gradient(133.124deg, #ffffff 9.9663%, #bda0ee 100%);\n\tbox-shadow: 0 0 44px rgba(0, 0, 0, 0.45);\n\toverflow: hidden;\n}\n\n.aio-login-pro__container--appsumo::before,\n.aio-login-pro__container--appsumo::after {\n\tdisplay: none;\n}\n\n.aio-login-pro__container--freemius {\n\twidth: 550px;\n\theight: 483px;\n\tborder-radius: 30px;\n\tbackground: transparent;\n\tbox-shadow: none;\n}\n\n.aio-login-pro__container--freemius::before,\n.aio-login-pro__container--freemius::after {\n\tdisplay: none;\n}\n\n:deep(.aio-login__popup-container.aio-login-pro-popup--freemius-shell) {\n\tborder: none !important;\n\tbackground: transparent !important;\n\tbox-shadow: none !important;\n}\n\n.aio-login-pro-popup--freemius-shell :deep(.aio-login__popup-close) {\n\ttop: 19px;\n\tright: 13px;\n}\n\n.aio-login-pro-popup--freemius-shell :deep(.aio-login__popup-close button) {\n\twidth: 26px;\n\theight: 26px;\n\tpadding: 0;\n\tborder-radius: 50%;\n\tbackground: transparent;\n\tcolor: transparent !important;\n\tbackground-image: var(--aio-login-appsumo-close-url);\n\tbackground-repeat: no-repeat;\n\tbackground-position: center;\n\tbackground-size: contain;\n}\n\n.aio-login-freemius-popup {\n\tposition: relative;\n\twidth: 100%;\n\theight: 100%;\n\tpadding: 0;\n\tbox-sizing: border-box;\n\tborder-radius: 30px;\n\tbackground: linear-gradient(129.44deg, #FFFFFF 9.97%, #6E16DF 225.3%);\n\tbox-shadow: 0 0 44px rgba(0, 0, 0, 0.45);\n\toverflow: hidden;\n}\n\n.aio-login-freemius-popup__logo-wrap {\n\tposition: absolute;\n\ttop: 36px;\n\tleft: 50%;\n\ttransform: translateX(-50%);\n}\n\n.aio-login-freemius-popup__logo {\n\twidth: 196px;\n\theight: 72px;\n\tobject-fit: contain;\n}\n\n.aio-login-freemius-popup__title {\n\tposition: absolute;\n\ttop: 156px;\n\tleft: 50%;\n\ttransform: translateX(-50%);\n\tmargin: 0;\n\twidth: 460px;\n\ttext-align: center;\n\tfont-family: Poppins, sans-serif !important;\n\tfont-size: 30px;\n\tfont-weight: 700;\n\tline-height: 1.2;\n\tcolor: #6e16df;\n}\n\n.aio-login-freemius-popup__features {\n\tposition: absolute;\n\tleft: 33px;\n\ttop: 264px;\n\twidth: 484px;\n\tdisplay: grid;\n\tgrid-template-columns: 1fr 1fr;\n\tcolumn-gap: 26px;\n\trow-gap: 13px;\n}\n\n.aio-login-freemius-popup__feature {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 10px;\n\tcolor: #3c0c79;\n\tfont-family: Poppins, sans-serif !important;\n\tfont-size: 14px;\n\tfont-weight: 500;\n\tline-height: 1.35;\n}\n\n.aio-login-freemius-popup__feature > img {\n\twidth: 20px;\n\theight: 20px;\n\tflex: 0 0 20px;\n}\n\n.aio-login-freemius-popup__social-icons {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 4px;\n}\n\n.aio-login-freemius-popup__social-icons img {\n\twidth: 20px;\n\theight: 20px;\n}\n\n.aio-login-freemius-popup__social-icons .aio-login-freemius-popup__notify-icon {\n\twidth: 12px;\n\theight: 12px;\n\tdisplay: block;\n\tflex: 0 0 12px;\n}\n\n.aio-login-freemius-popup__social-icons .aio-login-freemius-popup__notify-pill {\n\twidth: 20px;\n\theight: 20px;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tbackground: #ffffff;\n\tborder-radius: 50%;\n\tbox-shadow: 0 1px 2px rgba(17, 24, 39, 0.18);\n}\n\n.aio-login-freemius-popup__cta {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 388px;\n\ttransform: translateX(-50%);\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tpadding: 15px 20px;\n\tmin-width: 238px;\n\tborder-radius: 10px;\n\tbackground: #6e16df;\n\tcolor: #fff;\n\tfont-family: Poppins, sans-serif !important;\n\tfont-size: 18px;\n\tfont-weight: 600;\n\tline-height: 1.5;\n\ttext-decoration: none;\n}\n\n.aio-login-freemius-popup__cta:hover {\n\tbackground: #5e11c3;\n}\n\n:deep(.aio-login__popup-container.aio-login-pro-popup--appsumo-shell) {\n\tborder: none !important;\n\tbackground: transparent !important;\n\tbox-shadow: none !important;\n}\n\n.aio-login-pro-popup--appsumo-shell :deep(.aio-login__popup-close) {\n\ttop: 19px;\n\tright: 13px;\n}\n\n.aio-login-pro-popup--appsumo-shell :deep(.aio-login__popup-close button) {\n\twidth: 26px;\n\theight: 26px;\n\tpadding: 0;\n\tborder-radius: 50%;\n\tbackground: transparent;\n\tcolor: transparent !important;\n\tbackground-image: var(--aio-login-appsumo-close-url);\n\tbackground-repeat: no-repeat;\n\tbackground-position: center;\n\tbackground-size: contain;\n}\n\n.aio-login-appsumo-popup {\n\tposition: relative;\n\twidth: 100%;\n\theight: 100%;\n}\n\n.aio-login-appsumo-popup__logo-wrap {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 40px;\n\ttransform: translateX(-50%);\n}\n\n.aio-login-appsumo-popup__logo {\n\tdisplay: block;\n\twidth: 196px;\n\theight: 72px;\n\tobject-fit: contain;\n}\n\n.aio-login-appsumo-popup__headline {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 154px;\n\ttransform: translateX(-50%);\n\twidth: 471px;\n}\n\n.aio-login-appsumo-popup__title-row {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tgap: 8px;\n}\n\n.aio-login-appsumo-popup__title {\n\tmargin: 0;\n\tfont-family: Poppins, sans-serif !important;\n\tfont-size: 30px;\n\tfont-weight: 700;\n\tline-height: 1;\n\tcolor: #6e16df;\n\twhite-space: nowrap;\n}\n\n.aio-login-appsumo-popup__infinity {\n\twidth: 40px;\n\theight: 20px;\n\tflex: 0 0 40px;\n}\n\n.aio-login-appsumo-popup__subtitle {\n\tmargin: 14px 0 0;\n\ttext-align: center;\n\tfont-family: Poppins, sans-serif !important;\n\tfont-size: 18px;\n\tfont-weight: 500;\n\tline-height: 1.4;\n\tcolor: #3c0c79;\n}\n\n.aio-login-appsumo-popup__features {\n\tposition: absolute;\n\tleft: 54px;\n\ttop: 267px;\n\twidth: 484px;\n\tdisplay: grid;\n\tgrid-template-columns: 1fr 1fr;\n\tcolumn-gap: 26px;\n\trow-gap: 13px;\n}\n\n.aio-login-appsumo-popup__feature {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 12px;\n\tfont-family: Poppins, sans-serif !important;\n\tfont-size: 14.246px;\n\tfont-weight: 600;\n\tline-height: 1.4;\n\tcolor: #3c0c79;\n}\n\n.aio-login-appsumo-popup__feature > img {\n\twidth: 20px;\n\theight: 20px;\n\tflex: 0 0 20px;\n\tdisplay: block;\n}\n\n.aio-login-appsumo-popup__social-icons {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 5px;\n\tmargin-left: -2px;\n}\n\n.aio-login-appsumo-popup__social-icons img {\n\twidth: 20px;\n\theight: 20px;\n\tdisplay: block;\n}\n\n.aio-login-appsumo-popup__cta {\n\tposition: absolute;\n\tleft: 193px;\n\ttop: 396px;\n\twidth: 164px;\n\theight: 47px;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tborder-radius: 10px;\n\tbackground: #6e16df;\n\tcolor: #fff;\n\ttext-decoration: none;\n\tfont-family: Poppins, sans-serif !important;\n\tfont-size: 18px;\n\tfont-weight: 600;\n\tline-height: 1.5;\n}\n.aio-login-appsumo-popup__cta:hover{\n\tbackground: linear-gradient(129.44deg, #FFFFFF 9.97%, #6E16DF 225.3%);\n    color: #6e16df;\n\tborder: 1px solid;\n}\n</style>\n","<template>\n\t<span class=\"aio-login-tooltip-wrap\" ref=\"wrapRef\" @mouseenter=\"show\" @mouseleave=\"hide\">\n\t\t<span\n\t\t\tclass=\"aio-login-tooltip-icon\"\n\t\t\taria-label=\"Help\"\n\t\t\trole=\"img\"\n\t\t>?</span>\n\t\t<transition name=\"aio-login-tooltip-fade\">\n\t\t\t<div\n\t\t\t\tv-show=\"visible\"\n\t\t\t\tclass=\"aio-login-tooltip-modal\"\n\t\t\t\t:class=\"placement\"\n\t\t\t\tref=\"popoverRef\"\n\t\t\t\t@mouseenter=\"keepVisible\"\n\t\t\t\t@mouseleave=\"hide\"\n\t\t\t\trole=\"tooltip\"\n\t\t\t>\n\t\t\t\t<p v-if=\"title\" class=\"aio-login-tooltip-title\">{{ title }}</p>\n\t\t\t\t<div class=\"aio-login-tooltip-body\" v-html=\"content\"></div>\n\t\t\t</div>\n\t\t</transition>\n\t</span>\n</template>\n\n<script>\nexport default {\n\tname: 'aio-login-tooltip',\n\tprops: {\n\t\tcontent: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tplacement: {\n\t\t\ttype: String,\n\t\t\tdefault: 'bottom',\n\t\t\tvalidator: (v) => ['top', 'bottom', 'left', 'right'].includes(v),\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tvisible: false,\n\t\t\thideTimer: null,\n\t\t};\n\t},\n\tmethods: {\n\t\tshow() {\n\t\t\tif (this.hideTimer) {\n\t\t\t\tclearTimeout(this.hideTimer);\n\t\t\t\tthis.hideTimer = null;\n\t\t\t}\n\t\t\tthis.visible = true;\n\t\t},\n\t\tkeepVisible() {\n\t\t\tif (this.hideTimer) {\n\t\t\t\tclearTimeout(this.hideTimer);\n\t\t\t\tthis.hideTimer = null;\n\t\t\t}\n\t\t},\n\t\thide() {\n\t\t\tthis.hideTimer = setTimeout(() => {\n\t\t\t\tthis.visible = false;\n\t\t\t\tthis.hideTimer = null;\n\t\t\t}, 100);\n\t\t},\n\t},\n};\n</script>\n\n<style scoped>\n.aio-login-tooltip-wrap {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tvertical-align: middle;\n\tmargin-left: 6px;\n\tposition: relative;\n}\n.aio-login-tooltip-icon {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: 18px;\n\theight: 18px;\n\tborder-radius: 50%;\n\tborder: 1px solid #c9d2e3;\n\tbackground: #f5f6f9;\n\tcolor: #7691b2;\n\tfont-size: 12px;\n\tfont-weight: 600;\n\tline-height: 1;\n}\n.aio-login-tooltip-icon:hover {\n\tborder-color: #9516df;\n\tcolor: #9516df;\n\tbackground: #faf5fd;\n}\n.aio-login-tooltip-modal {\n\tposition: absolute;\n\tz-index: 100000;\n\tmin-width: 220px;\n\tmax-width: 360px;\n\tpadding: 12px 14px;\n\tbackground: #fff;\n\tborder: 1px solid #e8e8e8;\n\tborder-radius: 8px;\n\tbox-shadow: 0 4px 20px rgba(0, 0, 0, 0.12);\n\tfont-size: 13px;\n\tline-height: 1.5;\n\tcolor: #333;\n\ttext-align: left;\n\tpointer-events: auto;\n}\n.aio-login-tooltip-modal.bottom {\n\ttop: calc(100% + 8px);\n\tleft: 0;\n}\n.aio-login-tooltip-modal.top {\n\tbottom: calc(100% + 8px);\n\tleft: 0;\n}\n.aio-login-tooltip-modal.left {\n\tright: calc(100% + 8px);\n\ttop: 50%;\n\ttransform: translateY(-50%);\n}\n.aio-login-tooltip-modal.right {\n\tleft: calc(100% + 8px);\n\ttop: 50%;\n\ttransform: translateY(-50%);\n}\n.aio-login-tooltip-title {\n\tmargin: 0 0 6px 0;\n\tfont-weight: 600;\n\tcolor: #151515;\n}\n.aio-login-tooltip-body {\n\tmargin: 0;\n}\n.aio-login-tooltip-body :deep(p) {\n\tmargin: 0 0 6px 0;\n}\n.aio-login-tooltip-body :deep(p:last-child) {\n\tmargin-bottom: 0;\n}\n.aio-login-tooltip-fade-enter-active,\n.aio-login-tooltip-fade-leave-active {\n\ttransition: opacity 0.15s ease;\n}\n.aio-login-tooltip-fade-enter-from,\n.aio-login-tooltip-fade-leave-to {\n\topacity: 0;\n}\n</style>\n","<template>\n\t<div v-if=\"page_loaded\" class=\"aio-login-ipa-wrapper\" @click=\"iWasTriggered\">\n\t\t<div>\n\n\t\t\t<aio-login-form\n\t\t\t\t:action=\"nonce\"\n\t\t\t\tv-on:handle-submit=\"handleSubmit\"\n\t\t\t>\n\t\t\t\t<template v-slot:title>\n\t\t\t\t\t<span>Block IP Address</span>\n\t\t\t\t\t<aio-login-tooltip\n\t\t\t\t\t\t:content=\"tooltipContent.blockIpAddresses.content\"\n\t\t\t\t\t\t:title=\"tooltipContent.blockIpAddresses.title\"\n\t\t\t\t\t\tplacement=\"bottom\"\n\t\t\t\t\t/>\n\t\t\t\t</template>\n\n\t\t\t\t<template v-slot:form-fields>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t<label for=\"enable\">Enable</label>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\tid=\"enable\"\n\t\t\t\t\t\t\t\tname=\"enable\"\n\t\t\t\t\t\t\t\t:enabled=\"form_data.enabled\"\n\t\t\t\t\t\t\t\tv-on:toggle-input=\"toggleInput\"\n\t\t\t\t\t\t\t></aio-login-toggle>\n\t\t\t\t\t\t\t<p class=\"desc\">\n\t\t\t\t\t\t\t\t<strong>\n\t\t\t\t\t\t\t\t\tEnable to control access using whitelist or blacklist.\n\t\t\t\t\t\t\t\t</strong>\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\n\t\t\t\t\t<tr v-if=\"form_data.enabled\">\n\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t<label for=\"mode\">Mode</label>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<select\n\t\t\t\t\t\t\t\tid=\"mode\"\n\t\t\t\t\t\t\t\tclass=\"regular-text\"\n\t\t\t\t\t\t\t\tv-model=\"form_data.mode\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<option value=\"whitelist\">Whitelist mode - allow access to specific IPs, lockout all others</option>\n\t\t\t\t\t\t\t\t<option value=\"blacklist\">Blacklist mode - block access to specific IPs, lockout all others</option>\n\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\n\t\t\t\t\t<tr v-if=\"form_data.enabled && 'blacklist' === form_data.mode\">\n\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t<label for=\"blacklist\">Blacklist</label>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<textarea\n\t\t\t\t\t\t\t\tid=\"blacklist\"\n\t\t\t\t\t\t\t\tclass=\"regular-text\"\n\t\t\t\t\t\t\t\tv-model=\"form_data.blacklist\"\n\t\t\t\t\t\t\t></textarea>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\n\t\t\t\t\t<tr v-if=\"form_data.enabled && 'whitelist' === form_data.mode\">\n\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t<label for=\"whitelist\">Whitelist</label>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<textarea\n\t\t\t\t\t\t\t\tid=\"whitelist\"\n\t\t\t\t\t\t\t\tclass=\"regular-text\"\n\t\t\t\t\t\t\t\tv-model=\"form_data.whitelist\"\n\t\t\t\t\t\t\t></textarea>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\n\t\t\t\t\t<tr v-if=\"form_data.enabled\">\n\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t<label for=\"block-message\">Block Message</label>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<textarea\n\t\t\t\t\t\t\t\tid=\"block-message\"\n\t\t\t\t\t\t\t\tclass=\"regular-text\"\n\t\t\t\t\t\t\t\tv-model=\"form_data.block_message\"\n\t\t\t\t\t\t\t></textarea>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t</template>\n\t\t\t</aio-login-form>\n\n\t\t</div>\n\n\t\t<div class=\"aio-login-ipa-content-overflow\" v-if=\"! hasPro\">\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport tooltipContent from '../../tooltip-content.js';\n\nexport default {\n\tname: 'aio-login-block-ip-address',\n\n\tslug: 'block-ip-addresses',\n\n\tprops: {\n\t\thasPro: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata: ( vm ) => ( {\n\t\ttooltipContent,\n\t\tnonce: '',\n\n\t\tform_data: {\n\t\t\tenabled: false,\n\t\t\tmode: 'blacklist',\n\t\t\tblacklist: '',\n\t\t\twhitelist: '',\n\t\t\tblock_message: 'Your IP Address is blocked',\n\t\t},\n\n\t\tpage_loaded: false,\n\t} ),\n\n\tmethods: {\n\t\tiWasTriggered() {\n\t\t\tthis.$parent.$parent.$parent.popup = true;\n\t\t},\n\n\t\ttoggleInput( val ) {\n\t\t\tthis.form_data.enabled = val;\n\t\t},\n\n\t\thandleSubmit() {\n\t\t\tif ( this.hasPro ) {\n\t\t\t\tthis.form_data['_wpnonce'] = this.nonce;\n\n\t\t\t\taxios.post( 'aio-login-pro/block-ip-address/save-settings', this.form_data )\n\t\t\t\t\t.then( response => {\n\t\t\t\t\t} )\n\t\t\t\t\t.catch( error => {\n\t\t\t\t\t} );\n\t\t\t}\n\t\t},\n\n\t\tloadComponent() {\n\t\t\tthis.$nextTick( () => {\n\t\t\t\tthis.page_loaded = true;\n\t\t\t} );\n\n\t\t\taxios.get( 'aio-login-pro/block-ip-address/get-settings' )\n\t\t\t\t.then( response => {\n\t\t\t\t\tthis.nonce = response.data.nonce;\n\n\t\t\t\t\tthis.form_data.enabled       = response.data.enabled;\n\t\t\t\t\tthis.form_data.mode          = response.data.mode;\n\t\t\t\t\tthis.form_data.blacklist     = response.data.blacklist;\n\t\t\t\t\tthis.form_data.whitelist     = response.data.whitelist;\n\t\t\t\t\tthis.form_data.block_message = response.data.block_message;\n\n\t\t\t\t} )\n\t\t\t\t.catch( error => {\n\t\t\t\t} );\n\t\t},\n\t},\n\n\tmounted() {\n\t\tif ( ! this.hasPro ) {\n\t\t\tthis.page_loaded = true;\n\t\t} else {\n\t\t\tthis.loadComponent();\n\t\t}\n\t}\n}\n</script>\n\n<style scoped>\n.aio-login-ipa-wrapper {\n\tposition: relative;\n}\n\n.aio-login-ipa-content-overflow {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n\n\tbackdrop-filter: blur(1px);\n}\n</style>","<template>\n\t<div v-if=\"page_loaded\" class=\"aio-login-dcu-wrapper\" @click=\"iWasTriggered\">\n\t\t<div>\n\t\t\t<aio-login-form\n\t\t\t\t:action=\"nonce\"\n\t\t\t\tv-on:handle-submit=\"handleSubmit\"\n\t\t\t>\n\t\t\t\t<template v-slot:title>\n\t\t\t\t\t<span>Disable Common Usernames</span>\n\t\t\t\t\t<aio-login-tooltip\n\t\t\t\t\t\t:content=\"tooltipContent.disableCommonUsernames.content\"\n\t\t\t\t\t\t:title=\"tooltipContent.disableCommonUsernames.title\"\n\t\t\t\t\t\tplacement=\"bottom\"\n\t\t\t\t\t/>\n\t\t\t\t</template>\n\n\t\t\t\t<template v-slot:form-fields>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t<label for=\"enable\">Enable</label>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\tid=\"enable\"\n\t\t\t\t\t\t\t\tname=\"enable\"\n\t\t\t\t\t\t\t\t:enabled=\"form_data.enabled\"\n\t\t\t\t\t\t\t\tv-on:toggle-input=\"toggleInput\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<p class=\"desc\">\n\t\t\t\t\t\t\t\t<strong>\n\t\t\t\t\t\t\t\t\tEnable to prevent use of common usernames.\n\t\t\t\t\t\t\t\t</strong>\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\n\t\t\t\t\t<tr v-if=\"form_data.enabled\">\n\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t<label for=\"disable-usernames\">Usernames to disable</label>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<textarea\n\t\t\t\t\t\t\t\tclass=\"regular-text\"\n\t\t\t\t\t\t\t\tv-model=\"form_data.usernames\"\n\t\t\t\t\t\t\t></textarea>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t</template>\n\t\t\t</aio-login-form>\n\t\t</div>\n\t\t<div class=\"aio-login-dcu-content-overflow\" v-if=\"! hasPro\"></div>\n\t</div>\n</template>\n\n<script>\nimport tooltipContent from '../../tooltip-content.js';\n\nexport default {\n\tname: 'aio-login-disable-common-usernames',\n\n\tslug: 'disable-common-usernames',\n\n\tprops: {\n\t\thasPro: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata: ( vm ) => ( {\n\t\ttooltipContent,\n\t\tnonce: '',\n\t\tform_data: {\n\t\t\tenabled: false,\n\t\t\tusernames: 'admin, test, user, admin123, test123, username',\n\t\t},\n\n\t\tpage_loaded: false,\n\t} ),\n\n\tmethods: {\n\t\tiWasTriggered() {\n\t\t\tthis.$parent.$parent.$parent.popup = true;\n\t\t},\n\t\ttoggleInput( value ) {\n\t\t\tthis.form_data.enabled = value;\n\t\t},\n\n\t\tloadComponent() {\n\t\t\tthis.$nextTick( () => {\n\t\t\t\tthis.page_loaded = true;\n\t\t\t} );\n\n\t\t\taxios.get( 'aio-login-pro/disable-common-usernames/get-settings' )\n\t\t\t\t.then( response => {\n\t\t\t\t\tthis.form_data.enabled   = response.data.enabled;\n\t\t\t\t\tthis.form_data.usernames = response.data.usernames;\n\t\t\t\t\tthis.nonce               = response.data.nonce;\n\t\t\t\t} )\n\t\t\t\t.catch( error => {\n\t\t\t\t} );\n\t\t},\n\n\t\thandleSubmit() {\n\t\t\tif ( this.hasPro ) {\n\t\t\t\tthis.form_data['_wpnonce'] = this.nonce;\n\n\t\t\t\taxios.post( 'aio-login-pro/disable-common-usernames/save-settings', this.form_data )\n\t\t\t\t.then( response => {\n\t\t\t\t} )\n\t\t\t\t.catch( error => {\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t},\n\n\tmounted() {\n\t\tif ( ! this.hasPro ) {\n\t\t\tthis.page_loaded = true;\n\t\t} else {\n\t\t\tthis.loadComponent();\n\t\t}\n\t}\n}\n</script>\n\n<style scoped>\n.aio-login-dcu-wrapper {\n\tposition: relative;\n}\n\n.aio-login-dcu-content-overflow {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n\n\tbackdrop-filter: blur(1px);\n}\n</style>","<template>\n\t<div v-if=\"page_loaded\" class=\"aio-login-psc-wrapper\" @click=\"iWasTriggered\">\n\t\t<div>\n\t\t\t<aio-login-form\n\t\t\t\t:action=\"nonce\"\n\t\t\t\tv-on:handle-submit=\"handleSubmit\"\n\t\t\t>\n\t\t\t\t<template v-slot:title>\n\t\t\t\t\t<span>Password Strength Checker</span>\n\t\t\t\t\t<aio-login-tooltip\n\t\t\t\t\t\t:content=\"tooltipContent.passwordStrengthChecker.content\"\n\t\t\t\t\t\t:title=\"tooltipContent.passwordStrengthChecker.title\"\n\t\t\t\t\t\tplacement=\"bottom\"\n\t\t\t\t\t/>\n\t\t\t\t</template>\n\n\t\t\t\t<template v-slot:form-fields>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t<label for=\"enable\">Enable</label>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\t\tid=\"enable\"\n\t\t\t\t\t\t\t\tname=\"enable\"\n\t\t\t\t\t\t\t\t:enabled=\"form_data.enabled\"\n\t\t\t\t\t\t\t\tv-on:toggle-input=\"toggleInput\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<p class=\"desc\">\n\t\t\t\t\t\t\t\t<strong>\n\t\t\t\t\t\t\t\t\tEnable to set rules to improve user password security.\n\t\t\t\t\t\t\t\t</strong>\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t</template>\n\t\t\t</aio-login-form>\n\t\t</div>\n\t\t<div class=\"aio-login-psc-content-overflow\" v-if=\"! hasPro\"></div>\n\t</div>\n</template>\n\n<script>\nimport tooltipContent from '../../tooltip-content.js';\n\nexport default {\n\tname: 'aio-login-password-strenght-checker',\n\n\tslug: 'password-strenght-checker',\n\n\tprops: {\n\t\thasPro: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata: ( vm ) => ( {\n\t\ttooltipContent,\n\t\tnonce: '',\n\t\tform_data: {\n\t\t\tenabled: false,\n\t\t},\n\n\t\tpage_loaded: false,\n\t} ),\n\n\tmethods: {\n\t\tiWasTriggered() {\n\t\t\tthis.$parent.$parent.$parent.popup = true;\n\t\t},\n\t\ttoggleInput( value ) {\n\t\t\tthis.form_data.enabled = value;\n\t\t},\n\n\t\tloadComponent() {\n\t\t\tthis.$nextTick( () => {\n\t\t\t\tthis.page_loaded = true;\n\t\t\t} );\n\n\t\t\taxios.get( 'aio-login-pro/password-strenght-checker/get-settings' )\n\t\t\t\t.then( response => {\n\t\t\t\t\tthis.form_data.enabled   = response.data.enabled;\n\t\t\t\t\tthis.nonce               = response.data.nonce;\n\t\t\t\t} )\n\t\t\t\t.catch( error => {\n\t\t\t\t} );\n\t\t},\n\n\t\thandleSubmit() {\n\t\t\tif ( this.hasPro ) {\n\t\t\t\tthis.form_data['_wpnonce'] = this.nonce;\n\n\t\t\t\taxios.post( 'aio-login-pro/password-strenght-checker/save-settings', this.form_data )\n\t\t\t\t.then( response => {\n\t\t\t\t} )\n\t\t\t\t.catch( error => {\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t},\n\n\tmounted() {\n\t\tif ( ! this.hasPro ) {\n\t\t\tthis.page_loaded = true;\n\t\t} else {\n\t\t\tthis.loadComponent();\n\t\t}\n\t}\n}\n</script>\n\n<style scoped>\n.aio-login-psc-wrapper {\n\tposition: relative;\n}\n\n.aio-login-psc-content-overflow {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n\n\tbackdrop-filter: blur(1px);\n}\n</style>","<template>\n\t<div\n\t\tv-if=\"page_loaded\"\n\t\tclass=\"aio-login-ta-wrapper\"\n\t\t@click=\"iWasTriggered\"\n\t>\n\n\t\t<aio-login-form\n\t\t\t:action=\"nonce\"\n\t\t\tv-on:handle-submit=\"handleSubmit\"\n\t\t>\n\t\t\t<template v-slot:title>\n\t\t\t\t<span>Temporary Access</span>\n\t\t\t\t<aio-login-tooltip\n\t\t\t\t\t:content=\"tooltipContent.temporaryAccess.content\"\n\t\t\t\t\t:title=\"tooltipContent.temporaryAccess.title\"\n\t\t\t\t\tplacement=\"bottom\"\n\t\t\t\t/>\n\t\t\t</template>\n\n\t\t\t<template v-slot:description>\n\t\t\t\tCreate a temporary login link that you can share with other people. You can set the link’s lifespan and the maximum usage limit to prevent abuse.\n\t\t\t\t<br>\n\t\t\t\tIf needed\n\t\t\t\t<a href=\"https://wordpress-1080859-4061994.cloudwaysapps.com/wp-admin/user-new.php\">create a new WP user </a>\n\t\t\t\t\"guest\" instead of using one of the existing user.\n\t\t\t</template>\n\n\t\t\t<template v-slot:form-fields>\n\t\t\t\t<tr>\n\t\t\t\t\t<th>\n\t\t\t\t\t\t<label for=\"enable\">Enable Temp Access</label>\n\t\t\t\t\t</th>\n\t\t\t\t\t<td>\n\n\t\t\t\t\t\t<aio-login-toggle\n\t\t\t\t\t\t\tid=\"enable\"\n\t\t\t\t\t\t\tname=\"enable_temp_access\"\n\t\t\t\t\t\t\t:enabled=\"form_fields.enabled\"\n\n\t\t\t\t\t\t\tv-on:toggle-input=\"e => form_fields.enabled = e\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<p class=\"desc\">\n\t\t\t\t\t\t\t<strong>\n\t\t\t\t\t\t\t\tEnable to allow users temporary admin access securely.\n\t\t\t\t\t\t\t</strong>\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</template>\n\t\t</aio-login-form>\n\n\t\t<div v-if=\"load_application\">\n\n\t\t\t<aio-login-datatable :headers=\"[]\" :features=\"[\n\t\t\t\t{\n\t\t\t\t\thook: 'myToolbar',\n\t\t\t\t\tcallback: testCallback,\n\t\t\t\t\tdata: {},\n\t\t\t\t}\n\t\t\t]\"></aio-login-datatable>\n\n\t\t</div>\n\n\t\t<div\n\t\t\tclass=\"aio-login-ta-content-overflow\"\n\t\t\tv-if=\"! hasPro\"\n\t\t></div>\n\t</div>\n</template>\n\n<script>\nimport tooltipContent from '../../tooltip-content.js';\n\nexport default {\n\tname: 'aio-login-temporary-access',\n\n\tslug: 'temp-access',\n\n\tprops: {\n\t\thasPro: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false\n\t\t}\n\t},\n\n\tdata: ( vm ) => ( {\n\t\ttooltipContent,\n\t\tnonce: '',\n\t\tpage_loaded: false,\n\n\t\tform_fields: {\n\t\t\tenabled: false,\n\t\t},\n\n\t\tapplication_loaded: false,\n\n\t\ttemp_access_enabled: false,\n\t} ),\n\n\twatch: {\n\t\t'form_fields.enabled'( value ) {\n\t\t\tthis.temp_access_enabled = value;\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tload_application() {\n\t\t\treturn this.application_loaded && this.hasPro && this.page_loaded && this.temp_access_enabled;\n\t\t}\n\t},\n\n\tmethods: {\n\t\tiWasTriggered() {\n\t\t\tthis.$parent.$parent.popup = true;\n\t\t},\n\t\tloadComponent() {\n\t\t\tthis.$nextTick( () => {\n\t\t\t\tthis.page_loaded = true;\n\t\t\t} );\n\n\t\t\taxios.get( 'aio-login-pro/temporary-access/get-settings' )\n\t\t\t\t.then( response => {\n\t\t\t\t\tthis.form_fields.enabled = response.data.enabled;\n\t\t\t\t\tthis.nonce = response.data.nonce;\n\n\t\t\t\t\tthis.application_loaded = true;\n\t\t\t\t} )\n\t\t\t\t.catch( error => {\n\t\t\t\t} );\n\t\t},\n\n\t\thandleSubmit() {\n\t\t\tif ( this.hasPro ) {\n\t\t\t\tthis.form_fields['_wpnonce'] = this.nonce;\n\t\t\t\taxios.post( 'aio-login-pro/temporary-access/save-settings', this.form_fields )\n\t\t\t\t\t.then( response => {\n\t\t\t\t\t} )\n\t\t\t\t\t.catch( error => {\n\t\t\t\t\t} );\n\t\t\t}\n\t\t},\n\n\t\ttestCallback( s, o ) {\n\t\t\tlet container = document.createElement( 'div' );\n\n\t\t\tlet button = document.createElement( 'button' );\n\t\t\tbutton.innerText = 'Test Button';\n\t\t\tbutton.addEventListener( 'click', () => {\n\t\t\t\talert( 'Button Clicked' );\n\t\t\t} );\n\n\t\t\tcontainer.appendChild( button );\n\n\t\t\treturn container;\n\t\t}\n\t},\n\n\tmounted() {\n\t\tif ( ! this.hasPro ) {\n\t\t\tthis.page_loaded = true;\n\t\t} else {\n\t\t\tthis.loadComponent();\n\t\t}\n\t},\n\n}\n</script>\n\n<style scoped>\n.aio-login-ta-wrapper {\n\tposition: relative;\n}\n\n.aio-login-ta-content-overflow {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n\n\tbackdrop-filter: blur(1px);\n}\n</style>","<template>\n\t<div v-if=\"page_loaded\" class=\"aio-login-t-wrapper\">\n\n\t\t<div>\n\t\t\t<aio-login-form\n\t\t\t\taction=\"nonce\"\n\t\t\t>\n\t\t\t\t<template v-slot:title>\n\t\t\t\t\t<span>Templates</span>\n\t\t\t\t\t<aio-login-tooltip\n\t\t\t\t\t\t:content=\"tooltipContent.templates.content\"\n\t\t\t\t\t\t:title=\"tooltipContent.templates.title\"\n\t\t\t\t\t\tplacement=\"bottom\"\n\t\t\t\t\t/>\n\t\t\t\t</template>\n\n\t\t\t\t<template v-slot:form-fields>\n\t\t\t\t\t\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<div class=\"aio-login-pro__templates\">\n\n\t\t\t\t\t\t\t\t<div v-for=\"template in templates\" :key=\"template.id\" class=\"aio-login-pro__template-item\" :class=\"{ 'aio-login-pro__template-item--pro-locked': templateLocked(template) }\">\n\t\t\t\t\t\t\t\t\t<label v-if=\"!templateLocked(template)\" :for=\"template.id\">\n\t\t\t\t\t\t\t\t\t\t<input type=\"radio\" :id=\"template.id\" name=\"template\" :value=\"template.id\" >\n\t\t\t\t\t\t\t\t\t\t<div class=\"template-image-container\">\n\t\t\t\t\t\t\t\t\t\t\t<img :src=\"template.img\" :alt=\"template.name\">\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"template-preview-eye\" @click.stop.prevent=\"showPreview(template)\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"dashicons dashicons-visibility\"></span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<span class=\"template-name\">{{ template.name }}</span>\n\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\tv-else\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\tclass=\"aio-login-pro__template-pro-card\"\n\t\t\t\t\t\t\t\t\t\t@click=\"openProPopup\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<div class=\"template-image-container\">\n\t\t\t\t\t\t\t\t\t\t\t<img :src=\"template.img\" :alt=\"template.name\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"aio-login-pro__template-pro-badge\">PRO</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<span class=\"template-name\">{{ template.name }}</span>\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t\n\t\t\t\t</template>\n\t\t\t</aio-login-form>\n\n\t\t\t<!-- Template Preview Modal -->\n\t\t\t<div v-if=\"preview_modal.show\" class=\"aio-login-preview-modal-overlay\" @click=\"closePreview\">\n\t\t\t\t<div class=\"aio-login-preview-modal-content\" @click.stop>\n\t\t\t\t\t<div class=\"aio-login-preview-modal-header\">\n\t\t\t\t\t\t<h3>{{ preview_modal.template.name }} Preview</h3>\n\t\t\t\t\t\t<button class=\"aio-login-preview-modal-close\" @click=\"closePreview\">&times;</button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"aio-login-preview-modal-body\">\n\t\t\t\t\t\t<img :src=\"preview_modal.template.img\" :alt=\"preview_modal.template.name\">\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t</div>\n</template>\n\n<script>\nimport tooltipContent from '../../tooltip-content.js';\n\nexport default {\n\tname: 'aio-login-templates',\n\n\tslug: 'templates',\n\n\tprops: {\n\t\thasPro: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tpremiumTemplatesUnlocked: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\ttooltipContent,\n\t\t\tpage_loaded: false,\n\t\t\tpreview_modal: {\n\t\t\t\tshow: false,\n\t\t\t\ttemplate: null\n\t\t\t}\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tassets_url() {\n\t\t\treturn typeof aio_login__app_object !== 'undefined' ? aio_login__app_object.assets_url : '';\n\t\t},\n\t\ttemplates() {\n\t\t\t// Future Tech (template-8) is the free default; others require Pro.\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tid: 'template-8',\n\t\t\t\t\timg: this.assets_url + '/images/templates/template-08.png',\n\t\t\t\t\tname: 'Future Tech Split',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'default',\n\t\t\t\t\timg: this.assets_url + '/images/templates/default.jpg',\n\t\t\t\t\tname: 'Modern Center',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'template-1',\n\t\t\t\t\timg: this.assets_url + '/images/templates/template-01.jpg',\n\t\t\t\t\tname: 'Classic Bold',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'template-2',\n\t\t\t\t\timg: this.assets_url + '/images/templates/template-02.jpg',\n\t\t\t\t\tname: 'Midnight Dark',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'template-3',\n\t\t\t\t\timg: this.assets_url + '/images/templates/template-03.png',\n\t\t\t\t\tname: 'Dynamic Split',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'template-4',\n\t\t\t\t\timg: this.assets_url + '/images/templates/template-04.png',\n\t\t\t\t\tname: 'Deep Glass',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'template-5',\n\t\t\t\t\timg: this.assets_url + '/images/templates/template-05.png',\n\t\t\t\t\tname: 'Corporate Pro',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'template-6',\n\t\t\t\t\timg: this.assets_url + '/images/templates/template-06.png',\n\t\t\t\t\tname: 'Vibrant Duo',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'template-7',\n\t\t\t\t\timg: this.assets_url + '/images/templates/template-07.png',\n\t\t\t\t\tname: 'Elegant Frost',\n\t\t\t\t},\n\t\t\t];\n\t\t}\n\t},\n\n\tmethods: {\n\t\ttemplateLocked(template) {\n\t\t\tconst freeIds = ['default', 'template-8'];\n\t\t\tif (freeIds.includes(template.id)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn !this.premiumTemplatesUnlocked;\n\t\t},\n\n\t\topenProPopup() {\n\t\t\tthis.$parent.$parent.$parent.popup = true;\n\t\t},\n\n\t\tloadComponent() {\n\t\t\tthis.$nextTick( () => {\n\t\t\t\tthis.page_loaded = true;\n\t\t\t} );\n\t\t},\n\n\t\tshowPreview(template) {\n\t\t\tthis.preview_modal.template = template;\n\t\t\tthis.preview_modal.show = true;\n\t\t},\n\n\t\tclosePreview() {\n\t\t\tthis.preview_modal.show = false;\n\t\t\tthis.preview_modal.template = null;\n\t\t}\n\t},\n\n\tmounted() {\n\t\tif ( ! this.hasPro ) {\n\t\t\tthis.page_loaded = true;\n\t\t} else {\n\t\t\tthis.loadComponent();\n\t\t}\n\t}\n}\n</script>\n\n<style scoped>\n.aio-login-t-wrapper {\n\tposition: relative;\n}\n\n.aio-login-pro__template-item--pro-locked .template-image-container {\n\topacity: 0.92;\n}\n\n.aio-login-pro__template-pro-card {\n\tdisplay: block;\n\twidth: 100%;\n\tmargin: 0;\n\tpadding: 0;\n\tborder: none;\n\tbackground: transparent;\n\tcursor: pointer;\n\ttext-align: center;\n\tfont: inherit;\n\tcolor: inherit;\n}\n\n.aio-login-pro__template-pro-card:focus-visible {\n\toutline: 2px solid #9416de;\n\toutline-offset: 2px;\n}\n\n.aio-login-pro__template-pro-badge {\n\tposition: absolute;\n\ttop: 8px;\n\tleft: 8px;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tmin-width: 40px;\n\tpadding: 2px 6px;\n\tbackground: linear-gradient(180deg, #6e16df 0%, #510c79 121.05%);\n\tborder-radius: 2px;\n\tcolor: #ffce50;\n\tfont-size: 12px;\n\tfont-weight: 600;\n\ttext-transform: uppercase;\n\tz-index: 12;\n}\n\n.aio-login-pro__templates {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: 30px;\n\tpadding: 20px 0;\n}\n\n.aio-login-pro__template-item {\n\twidth: 210px;\n\ttext-align: center;\n\tmargin-bottom: 20px;\n}\n\n.aio-login-pro__template-item label {\n\tcursor: pointer;\n\tdisplay: block;\n\tposition: relative;\n}\n\n.aio-login-pro__templates input[type=\"radio\"] {\n\tdisplay: none;\n}\n\n.template-image-container {\n\tposition: relative;\n\twidth: 200px;\n\theight: 130px;\n\tmargin: 0 auto 10px auto;\n}\n\n.aio-login-pro__templates img {\n\tdisplay: block;\n\twidth: 100%;\n\theight: 100%;\n\tobject-fit: cover;\n\tborder: 2px solid #eee;\n\tborder-radius: 8px;\n\ttransition: all 0.3s ease;\n}\n\n.template-preview-eye {\n\tposition: absolute;\n\ttop: 8px;\n\tright: 8px;\n\tbackground: #ffffff;\n\twidth: 32px;\n\theight: 32px;\n\tborder-radius: 6px;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tbox-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n\ttransition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n\tz-index: 10;\n\tcolor: #64748b;\n\topacity: 0;\n\ttransform: translateY(5px);\n}\n\n.aio-login-pro__template-item:hover .template-preview-eye {\n\topacity: 1;\n\ttransform: translateY(0);\n}\n\n.template-preview-eye:hover {\n\tbackground: #6D16DF;\n\tcolor: #fff;\n\ttransform: scale(1.1);\n}\n\n.aio-login-pro__template-item .template-name {\n\tdisplay: block;\n\tfont-size: 13px;\n\tfont-weight: 600;\n\tcolor: #404280;\n\tmargin-top: 5px;\n}\n\n.aio-login-pro__templates input:checked + .template-image-container img {\n\tborder-color: #9416de;\n\tbox-shadow: 0 4px 15px rgba(148, 22, 222, 0.2);\n\ttransform: translateY(-2px);\n}\n\n.aio-login-pro__templates input:checked ~ .template-name {\n\tcolor: #9416de;\n}\n\n/* Modal Styling */\n.aio-login-preview-modal-overlay {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tbackground: rgba(0, 0, 0, 0.75);\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\tz-index: 99999;\n\tbackdrop-filter: blur(4px);\n}\n\n.aio-login-preview-modal-content {\n\tbackground: #fff;\n\tborder-radius: 12px;\n\twidth: 90%;\n\tmax-width: 900px;\n\tmax-height: 90vh;\n\tdisplay: flex;\n\tflex-direction: column;\n\toverflow: hidden;\n\tbox-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);\n\tanimation: aioModalIn 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n@keyframes aioModalIn {\n\tfrom {\n\t\topacity: 0;\n\t\ttransform: scale(0.95) translateY(10px);\n\t}\n\tto {\n\t\topacity: 1;\n\t\ttransform: scale(1) translateY(0);\n\t}\n}\n\n.aio-login-preview-modal-header {\n\tpadding: 15px 20px;\n\tborder-bottom: 1px solid #eee;\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n\tbackground: #fcfcfc;\n}\n\n.aio-login-preview-modal-header h3 {\n\tmargin: 0 !important;\n\tfont-size: 16px !important;\n\tcolor: #1e293b !important;\n}\n\n.aio-login-preview-modal-close {\n\tbackground: none;\n\tborder: none;\n\tfont-size: 24px;\n\tcursor: pointer;\n\tcolor: #64748b;\n\tline-height: 1;\n\tpadding: 0;\n}\n\n.aio-login-preview-modal-close:hover {\n\tcolor: #ef4444;\n}\n\n.aio-login-preview-modal-body {\n\tpadding: 20px;\n\toverflow-y: auto;\n\ttext-align: center;\n}\n\n.aio-login-preview-modal-body img {\n\tmax-width: 100%;\n\theight: auto;\n\tborder-radius: 4px;\n\tbox-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);\n}\n</style>","<template>\n\t<div class=\"aio-login-2fa-methods\">\n\t\t<p class=\"aio-login-2fa-methods__method-note\">\n\t\t\tOnly one site-wide method can be active: turn on either Email OTP or Authenticator App, not both.\n\t\t</p>\n\n\t\t<div class=\"aio-login-2fa-methods__list\">\n\t\t\t<div class=\"aio-login-2fa-methods__item aio-login-2fa-policies__card\">\n\t\t\t\t<div class=\"aio-login-2fa-policies__card-header\">\n\t\t\t\t\t<span class=\"aio-login-2fa-policies__icon\" aria-hidden=\"true\">\n\t\t\t\t\t\t<svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t\t\t<path d=\"M4 6.5h16c.83 0 1.5.67 1.5 1.5v8c0 .83-.67 1.5-1.5 1.5H4A1.5 1.5 0 012.5 16V8c0-.83.67-1.5 1.5-1.5z\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linejoin=\"round\"/>\n\t\t\t\t\t\t\t<path d=\"M3 7.5l8.65 5.77a1.5 1.5 0 001.7 0L22 7.5\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</span>\n\t\t\t\t\t<div class=\"aio-login-2fa-methods__content\">\n\t\t\t\t\t\t<h2 class=\"aio-login-2fa-methods__title\">\n\t\t\t\t\t\t\tEmail One-Time Code\n\t\t\t\t\t\t\t<aio-login-tooltip :content=\"tooltipContent.twoFactorEmailOtp.content\" />\n\t\t\t\t\t\t</h2>\n\t\t\t\t\t\t<div class=\"aio-login-2fa-methods__desc\">Send a one-time verification code to users via email during login.</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"aio-login-2fa-methods__controls\">\n\t\t\t\t\t\t<button type=\"button\" class=\"aio-login-2fa-methods__expand-btn\" disabled tabindex=\"-1\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t<span class=\"aio-login-2fa-methods__chevron\" />\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<aio-login-toggle id=\"demo_email_otp\" name=\"demo_email_otp\" :enabled=\"false\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"aio-login-2fa-methods__item aio-login-2fa-policies__card\">\n\t\t\t\t<div class=\"aio-login-2fa-policies__card-header\">\n\t\t\t\t\t<span class=\"aio-login-2fa-policies__icon\" aria-hidden=\"true\">\n\t\t\t\t\t\t<svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t\t\t<rect x=\"7\" y=\"3\" width=\"10\" height=\"18\" rx=\"2.25\" stroke=\"currentColor\" stroke-width=\"1.75\"/>\n\t\t\t\t\t\t\t<path d=\"M10 6.5h4\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\"/>\n\t\t\t\t\t\t\t<circle cx=\"12\" cy=\"17.25\" r=\"1.1\" fill=\"currentColor\"/>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</span>\n\t\t\t\t\t<div class=\"aio-login-2fa-methods__content\">\n\t\t\t\t\t\t<h2 class=\"aio-login-2fa-methods__title\">\n\t\t\t\t\t\t\tAuthenticator App (TOTP)\n\t\t\t\t\t\t\t<aio-login-tooltip :content=\"tooltipContent.twoFactorTotp.content\" />\n\t\t\t\t\t\t</h2>\n\t\t\t\t\t\t<div class=\"aio-login-2fa-methods__desc\">Allow users to verify login using an authenticator app such as Google Authenticator.</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"aio-login-2fa-methods__controls\">\n\t\t\t\t\t\t<button type=\"button\" class=\"aio-login-2fa-methods__expand-btn\" disabled tabindex=\"-1\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t<span class=\"aio-login-2fa-methods__chevron\" />\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<aio-login-toggle id=\"demo_totp\" name=\"demo_totp\" :enabled=\"false\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"aio-login-2fa-methods__item aio-login-2fa-policies__card\">\n\t\t\t\t<div class=\"aio-login-2fa-policies__card-header\">\n\t\t\t\t\t<span class=\"aio-login-2fa-policies__icon\" aria-hidden=\"true\">\n\t\t\t\t\t\t<svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t\t\t<path d=\"M12 2.75a7.25 7.25 0 017.25 7.25v2.1l1.28 2.2c.38.66-.1 1.48-.86 1.48H4.33c-.76 0-1.24-.82-.86-1.48l1.28-2.2V10A7.25 7.25 0 0112 2.75z\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linejoin=\"round\"/>\n\t\t\t\t\t\t\t<path d=\"M9.5 18.25a2.5 2.5 0 005 0\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\"/>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</span>\n\t\t\t\t\t<div class=\"aio-login-2fa-methods__content\">\n\t\t\t\t\t\t<h2 class=\"aio-login-2fa-methods__title\">\n\t\t\t\t\t\t\tRemember Device\n\t\t\t\t\t\t\t<aio-login-tooltip :content=\"tooltipContent.twoFactorRememberDevice.content\" />\n\t\t\t\t\t\t</h2>\n\t\t\t\t\t\t<div class=\"aio-login-2fa-methods__desc\">Skip OTP verification on trusted browsers for a specific duration.</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"aio-login-2fa-methods__controls\">\n\t\t\t\t\t\t<button type=\"button\" class=\"aio-login-2fa-methods__expand-btn\" disabled tabindex=\"-1\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t<span class=\"aio-login-2fa-methods__chevron\" />\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<aio-login-toggle id=\"demo_remember\" name=\"demo_remember\" :enabled=\"false\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"aio-login-2fa-methods__actions\">\n\t\t\t<aio-login-submit-button v-on:button-click=\"noopDemoSave\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport tooltipContent from '../../tooltip-content.js';\n\nexport default {\n\tname: 'aio-login-two-factor-authentication',\n\n\tslug: 'authentication-methods',\n\n\tprops: {\n\t\thasPro: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata: () => ( {\n\t\ttooltipContent,\n\t} ),\n\n\tmethods: {\n\t\tnoopDemoSave() {},\n\t},\n}\n</script>\n\n<style scoped>\n.aio-login-2fa-methods__expand-btn[disabled] {\n\topacity: 0.6;\n\tcursor: default;\n\tpointer-events: none;\n}\n</style>\n","<template>\n\t<div v-if=\"page_loaded\" class=\"aio-login-t-wrapper\" @click=\"iWasTriggered\">\n\t\t<h3>Social Login Settings</h3>\n            <div class=\"aio-login-pro__social-login\">\n                <div v-for=\"provider in providers\" :key=\"provider.id\" class=\"aio-login-pro__social-login__card\">\n                <!-- Top Section -->\n                <div class=\"aio-login-pro__social-login__card__top\">\n                    <img :src=\"getSrc( provider.id )\" :alt=\"provider.name\" />\n                    <p>{{ provider.name }}</p>\n                </div>\n                <!-- Bottom Section -->\n                <div class=\"aio-login-pro__social-login__card__bottom\">\n                    <label class=\"toggle-switch\">\n                    <aio-login-toggle\n                        :id=\"provider.id\"\n                        :name=\"provider.id\"\n                        v-on:toggle-input=\"handleToggle\"\n                        :enabled=\"provider.enabled\"\n                    />\n                    </label>\n                    <button class=\"configure-btn\" @click=\"configureProvider(provider.id)\">\n                    Configure\n                    </button>\n                </div>\n                </div>\n            </div>\n\t\t<!-- Overflow Content for Free Users -->\n\t\t<div v-if=\"!hasPro\" class=\"aio-login-t-content-overflow\" @click=\"iWasTriggered\"></div>\n\t</div>\n</template>\n\n\n<script>\nexport default {\n\tname: 'aio-login-social-login',\n\n  slug: 'social-login',\n\n\tprops: {\n\t\thasPro: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n        providers: {\n            type: Array,\n            required: true,\n            default: () => [\n                { id: \"google\", name: \"Google\", enabled: false },\n                { id: \"microsoft\", name: \"Microsoft\", enabled: false },\n                { id: \"facebook\", name: \"Facebook\", enabled: false },\n                { id: \"line\", name: \"Line\", enabled: false },\n                { id: \"github\", name: \"GitHub\", enabled: false },\n                { id: \"discord\", name: \"Discord\", enabled: false },\n                { id: \"apple\", name: \"Apple\", enabled: false },\n            ],\n        },\n\t},\n\n\tdata: ( vm ) => ( {\n        assetsUrl: aio_login__app_object.assets_url,\n\t\tpage_loaded: false,\n\t} ),\n\n\tmethods: {\n\t\tiWasTriggered() {\n\t\t\tthis.$parent.$parent.popup = true;\n\t\t},\n\n\t\tloadComponent() {\n\t\t\tthis.$nextTick( () => {\n\t\t\t\tthis.page_loaded = true;\n\t\t\t} );\n\t\t},\n        getSrc( icon ) {\n\t\t\t\treturn this.assetsUrl + `images/icons/${ icon }.png`;\n\t\t},\n\n\t\thandleToggle( providerId, enabled ) {\n\t\t\t// Trigger popup for free users\n\t\t\tif ( ! this.hasPro ) {\n\t\t\t\tthis.iWasTriggered();\n\t\t\t}\n\t\t},\n\n\t\tconfigureProvider( providerId ) {\n\t\t\t// Trigger popup for free users\n\t\t\tif ( ! this.hasPro ) {\n\t\t\t\tthis.iWasTriggered();\n\t\t\t}\n\t\t},\n\t},\n\n\tmounted() {\n\t\tif ( ! this.hasPro ) {\n\t\t\tthis.page_loaded = true;\n\t\t} else {\n\t\t\tthis.loadComponent();\n\t\t}\n\t}\n}\n</script>\n\n<style scoped>\n.aio-login-t-wrapper {\n\tposition: relative;\n}\n\n.aio-login-t-content-overflow {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n\tbackdrop-filter: blur(1px);\n}\n\n/* Social Login Container */\n.aio-login-pro__social-login {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 20px;\n}\n\n/* Social Login Card */\n.aio-login-pro__social-login__card {\n  border: 1px solid #ebe8eb;\n  border-radius: 10px;\n  height: 200px;\n  width: 320px;\n  display: flex;\n  flex-direction: column;\n  justify-content: space-between;\n}\n\n/* Top Section */\n.aio-login-pro__social-login__card__top {\n  flex: 4;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  padding: 10px;\n  text-align: center;\n}\n\n.aio-login-pro__social-login__card__top img {\n  width: 48px;\n  height: 48px;\n  margin-bottom: 10px;\n}\n\n.aio-login-pro__social-login__card__top p {\n  font-size: 14px;\n  font-weight: bold;\n  margin: 0;\n}\n\n/* Bottom Section */\n.aio-login-pro__social-login__card__bottom {\n  flex: 1;\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  padding: 10px;\n  border-top: 1px solid #ebe8eb;\n}\n\n/* Configure Button */\n.configure-btn {\n  background: #f7ecfd;\n  color: #6e16df;\n  border: none;\n  border-radius: 4px;\n  font-size: 14px;\n  cursor: pointer;\n  transition: 0.3s;\n  padding: 9px 18px;\n}\n\n.configure-btn:hover {\n  background-color: #0d74c2;\n  color: #fff;\n}\n\n\n</style>","/* latin-ext */\n@font-face {\n    font-family: 'Figtree';\n    font-style: normal;\n    font-weight: 400;\n    font-display: swap;\n    src: url(../fonts/figtree-400.woff2) format('woff2');\n    unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n    font-family: 'Figtree';\n    font-style: normal;\n    font-weight: 400;\n    font-display: swap;\n    src: url(../fonts/figtree-400-2.woff2) format('woff2');\n    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin-ext */\n@font-face {\n    font-family: 'Figtree';\n    font-style: normal;\n    font-weight: 500;\n    font-display: swap;\n    src: url(../fonts/figtree-500.woff2) format('woff2');\n    unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n    font-family: 'Figtree';\n    font-style: normal;\n    font-weight: 500;\n    font-display: swap;\n    src: url(../fonts/figtree-500-2.woff2) format('woff2');\n    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin-ext */\n@font-face {\n    font-family: 'Figtree';\n    font-style: normal;\n    font-weight: 600;\n    font-display: swap;\n    src: url(../fonts/figtree-600.woff2) format('woff2');\n    unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n    font-family: 'Figtree';\n    font-style: normal;\n    font-weight: 600;\n    font-display: swap;\n    src: url(../fonts/figtree-600-2.woff2) format('woff2');\n    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}","@charset \"UTF-8\";\n:root {\n    --dt-row-selected: 13, 110, 253;\n    --dt-row-selected-text: 255, 255, 255;\n    --dt-row-selected-link: 9, 10, 11;\n    --dt-row-stripe: 0, 0, 0;\n    --dt-row-hover: 0, 0, 0;\n    --dt-column-ordering: 0, 0, 0;\n    --dt-html-background: white;\n}\n:root.dark {\n    --dt-html-background: rgb(33, 37, 41);\n}\n\ntable.dataTable td.dt-control {\n    text-align: center;\n    cursor: pointer;\n}\ntable.dataTable td.dt-control:before {\n    display: inline-block;\n    box-sizing: border-box;\n    content: \"\";\n    border-top: 5px solid transparent;\n    border-left: 10px solid rgba(0, 0, 0, 0.5);\n    border-bottom: 5px solid transparent;\n    border-right: 0px solid transparent;\n}\ntable.dataTable tr.dt-hasChild td.dt-control:before {\n    border-top: 10px solid rgba(0, 0, 0, 0.5);\n    border-left: 5px solid transparent;\n    border-bottom: 0px solid transparent;\n    border-right: 5px solid transparent;\n}\n\nhtml.dark table.dataTable td.dt-control:before,\n:root[data-bs-theme=dark] table.dataTable td.dt-control:before,\n:root[data-theme=dark] table.dataTable td.dt-control:before {\n    border-left-color: rgba(255, 255, 255, 0.5);\n}\nhtml.dark table.dataTable tr.dt-hasChild td.dt-control:before,\n:root[data-bs-theme=dark] table.dataTable tr.dt-hasChild td.dt-control:before,\n:root[data-theme=dark] table.dataTable tr.dt-hasChild td.dt-control:before {\n    border-top-color: rgba(255, 255, 255, 0.5);\n    border-left-color: transparent;\n}\n\ndiv.dt-scroll {\n    width: 100%;\n}\n\ndiv.dt-scroll-body thead tr,\ndiv.dt-scroll-body tfoot tr {\n    height: 0;\n}\ndiv.dt-scroll-body thead tr th, div.dt-scroll-body thead tr td,\ndiv.dt-scroll-body tfoot tr th,\ndiv.dt-scroll-body tfoot tr td {\n    height: 0 !important;\n    padding-top: 0px !important;\n    padding-bottom: 0px !important;\n    border-top-width: 0px !important;\n    border-bottom-width: 0px !important;\n}\ndiv.dt-scroll-body thead tr th div.dt-scroll-sizing, div.dt-scroll-body thead tr td div.dt-scroll-sizing,\ndiv.dt-scroll-body tfoot tr th div.dt-scroll-sizing,\ndiv.dt-scroll-body tfoot tr td div.dt-scroll-sizing {\n    height: 0 !important;\n    overflow: hidden !important;\n}\n\ntable.dataTable thead > tr > th:active,\ntable.dataTable thead > tr > td:active {\n    outline: none;\n}\ntable.dataTable thead > tr > th.dt-orderable-asc span.dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order:before,\ntable.dataTable thead > tr > td.dt-orderable-asc span.dt-column-order:before,\ntable.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order:before {\n    position: absolute;\n    display: block;\n    bottom: 50%;\n    content: \"▲\";\n    content: \"▲\"/\"\";\n}\ntable.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order:after,\ntable.dataTable thead > tr > td.dt-orderable-desc span.dt-column-order:after,\ntable.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order:after {\n    position: absolute;\n    display: block;\n    top: 50%;\n    content: \"▼\";\n    content: \"▼\"/\"\";\n}\ntable.dataTable thead > tr > th.dt-orderable-asc, table.dataTable thead > tr > th.dt-orderable-desc, table.dataTable thead > tr > th.dt-ordering-asc, table.dataTable thead > tr > th.dt-ordering-desc,\ntable.dataTable thead > tr > td.dt-orderable-asc,\ntable.dataTable thead > tr > td.dt-orderable-desc,\ntable.dataTable thead > tr > td.dt-ordering-asc,\ntable.dataTable thead > tr > td.dt-ordering-desc {\n    position: relative;\n    padding-right: 30px;\n}\ntable.dataTable thead > tr > th.dt-orderable-asc span.dt-column-order, table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order, table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order,\ntable.dataTable thead > tr > td.dt-orderable-asc span.dt-column-order,\ntable.dataTable thead > tr > td.dt-orderable-desc span.dt-column-order,\ntable.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order,\ntable.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order {\n    position: absolute;\n    right: 12px;\n    top: 0;\n    bottom: 0;\n    width: 12px;\n}\ntable.dataTable thead > tr > th.dt-orderable-asc span.dt-column-order:before, table.dataTable thead > tr > th.dt-orderable-asc span.dt-column-order:after, table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order:before, table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order:after,\ntable.dataTable thead > tr > td.dt-orderable-asc span.dt-column-order:before,\ntable.dataTable thead > tr > td.dt-orderable-asc span.dt-column-order:after,\ntable.dataTable thead > tr > td.dt-orderable-desc span.dt-column-order:before,\ntable.dataTable thead > tr > td.dt-orderable-desc span.dt-column-order:after,\ntable.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order:before,\ntable.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order:after,\ntable.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order:before,\ntable.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order:after {\n    left: 0;\n    opacity: 0.125;\n    line-height: 9px;\n    font-size: 0.8em;\n}\ntable.dataTable thead > tr > th.dt-orderable-asc, table.dataTable thead > tr > th.dt-orderable-desc,\ntable.dataTable thead > tr > td.dt-orderable-asc,\ntable.dataTable thead > tr > td.dt-orderable-desc {\n    cursor: pointer;\n}\ntable.dataTable thead > tr > th.dt-orderable-asc:hover, table.dataTable thead > tr > th.dt-orderable-desc:hover,\ntable.dataTable thead > tr > td.dt-orderable-asc:hover,\ntable.dataTable thead > tr > td.dt-orderable-desc:hover {\n    outline: 2px solid rgba(0, 0, 0, 0.05);\n    outline-offset: -2px;\n}\ntable.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order:after,\ntable.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order:before,\ntable.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order:after {\n    opacity: 0.6;\n}\ntable.dataTable thead > tr > th.sorting_desc_disabled span.dt-column-order:after, table.dataTable thead > tr > th.sorting_asc_disabled span.dt-column-order:before,\ntable.dataTable thead > tr > td.sorting_desc_disabled span.dt-column-order:after,\ntable.dataTable thead > tr > td.sorting_asc_disabled span.dt-column-order:before {\n    display: none;\n}\ntable.dataTable thead > tr > th:active,\ntable.dataTable thead > tr > td:active {\n    outline: none;\n}\n\ndiv.dt-scroll-body > table.dataTable > thead > tr > th,\ndiv.dt-scroll-body > table.dataTable > thead > tr > td {\n    overflow: hidden;\n}\n\n:root.dark table.dataTable thead > tr > th.dt-orderable-asc:hover, :root.dark table.dataTable thead > tr > th.dt-orderable-desc:hover,\n:root.dark table.dataTable thead > tr > td.dt-orderable-asc:hover,\n:root.dark table.dataTable thead > tr > td.dt-orderable-desc:hover,\n:root[data-bs-theme=dark] table.dataTable thead > tr > th.dt-orderable-asc:hover,\n:root[data-bs-theme=dark] table.dataTable thead > tr > th.dt-orderable-desc:hover,\n:root[data-bs-theme=dark] table.dataTable thead > tr > td.dt-orderable-asc:hover,\n:root[data-bs-theme=dark] table.dataTable thead > tr > td.dt-orderable-desc:hover {\n    outline: 2px solid rgba(255, 255, 255, 0.05);\n}\n\ndiv.dt-processing {\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    width: 200px;\n    margin-left: -100px;\n    margin-top: -22px;\n    text-align: center;\n    padding: 2px;\n    z-index: 10;\n}\ndiv.dt-processing > div:last-child {\n    position: relative;\n    width: 80px;\n    height: 15px;\n    margin: 1em auto;\n}\ndiv.dt-processing > div:last-child > div {\n    position: absolute;\n    top: 0;\n    width: 13px;\n    height: 13px;\n    border-radius: 50%;\n    background: rgb(13, 110, 253);\n    background: rgb(var(--dt-row-selected));\n    animation-timing-function: cubic-bezier(0, 1, 1, 0);\n}\ndiv.dt-processing > div:last-child > div:nth-child(1) {\n    left: 8px;\n    animation: datatables-loader-1 0.6s infinite;\n}\ndiv.dt-processing > div:last-child > div:nth-child(2) {\n    left: 8px;\n    animation: datatables-loader-2 0.6s infinite;\n}\ndiv.dt-processing > div:last-child > div:nth-child(3) {\n    left: 32px;\n    animation: datatables-loader-2 0.6s infinite;\n}\ndiv.dt-processing > div:last-child > div:nth-child(4) {\n    left: 56px;\n    animation: datatables-loader-3 0.6s infinite;\n}\n\n@keyframes datatables-loader-1 {\n    0% {\n        transform: scale(0);\n    }\n    100% {\n        transform: scale(1);\n    }\n}\n@keyframes datatables-loader-3 {\n    0% {\n        transform: scale(1);\n    }\n    100% {\n        transform: scale(0);\n    }\n}\n@keyframes datatables-loader-2 {\n    0% {\n        transform: translate(0, 0);\n    }\n    100% {\n        transform: translate(24px, 0);\n    }\n}\ntable.dataTable.nowrap th, table.dataTable.nowrap td {\n    white-space: nowrap;\n}\ntable.dataTable th,\ntable.dataTable td {\n    box-sizing: border-box;\n}\ntable.dataTable th.dt-left,\ntable.dataTable td.dt-left {\n    text-align: left;\n}\ntable.dataTable th.dt-center,\ntable.dataTable td.dt-center {\n    text-align: center;\n}\ntable.dataTable th.dt-right,\ntable.dataTable td.dt-right {\n    text-align: right;\n}\ntable.dataTable th.dt-justify,\ntable.dataTable td.dt-justify {\n    text-align: justify;\n}\ntable.dataTable th.dt-nowrap,\ntable.dataTable td.dt-nowrap {\n    white-space: nowrap;\n}\ntable.dataTable th.dt-empty,\ntable.dataTable td.dt-empty {\n    text-align: center;\n    vertical-align: top;\n}\ntable.dataTable th.dt-type-numeric, table.dataTable th.dt-type-date,\ntable.dataTable td.dt-type-numeric,\ntable.dataTable td.dt-type-date {\n    text-align: left;\n}\ntable.dataTable thead th,\ntable.dataTable thead td,\ntable.dataTable tfoot th,\ntable.dataTable tfoot td {\n    text-align: left;\n}\ntable.dataTable thead th.dt-head-left,\ntable.dataTable thead td.dt-head-left,\ntable.dataTable tfoot th.dt-head-left,\ntable.dataTable tfoot td.dt-head-left {\n    text-align: left;\n}\ntable.dataTable thead th.dt-head-center,\ntable.dataTable thead td.dt-head-center,\ntable.dataTable tfoot th.dt-head-center,\ntable.dataTable tfoot td.dt-head-center {\n    text-align: center;\n}\ntable.dataTable thead th.dt-head-right,\ntable.dataTable thead td.dt-head-right,\ntable.dataTable tfoot th.dt-head-right,\ntable.dataTable tfoot td.dt-head-right {\n    text-align: right;\n}\ntable.dataTable thead th.dt-head-justify,\ntable.dataTable thead td.dt-head-justify,\ntable.dataTable tfoot th.dt-head-justify,\ntable.dataTable tfoot td.dt-head-justify {\n    text-align: justify;\n}\ntable.dataTable thead th.dt-head-nowrap,\ntable.dataTable thead td.dt-head-nowrap,\ntable.dataTable tfoot th.dt-head-nowrap,\ntable.dataTable tfoot td.dt-head-nowrap {\n    white-space: nowrap;\n}\ntable.dataTable tbody th.dt-body-left,\ntable.dataTable tbody td.dt-body-left {\n    text-align: left;\n}\ntable.dataTable tbody th.dt-body-center,\ntable.dataTable tbody td.dt-body-center {\n    text-align: center;\n}\ntable.dataTable tbody th.dt-body-right,\ntable.dataTable tbody td.dt-body-right {\n    text-align: right;\n}\ntable.dataTable tbody th.dt-body-justify,\ntable.dataTable tbody td.dt-body-justify {\n    text-align: justify;\n}\ntable.dataTable tbody th.dt-body-nowrap,\ntable.dataTable tbody td.dt-body-nowrap {\n    white-space: nowrap;\n}\n\n/*\n * Table styles\n */\ntable.dataTable {\n    width: 100%;\n    margin: 0 auto;\n    border-spacing: 0;\n    /*\n     * Header and footer styles\n     */\n    /*\n     * Body styles\n     */\n}\ntable.dataTable thead th,\ntable.dataTable tfoot th {\n    font-weight: bold;\n}\ntable.dataTable > thead > tr > th,\ntable.dataTable > thead > tr > td {\n    padding: 10px;\n    border-bottom: 1px solid rgba(0, 0, 0, 0.3);\n}\ntable.dataTable > thead > tr > th:active,\ntable.dataTable > thead > tr > td:active {\n    outline: none;\n}\ntable.dataTable > tfoot > tr > th,\ntable.dataTable > tfoot > tr > td {\n    border-top: 1px solid rgba(0, 0, 0, 0.3);\n    padding: 10px 10px 6px 10px;\n}\ntable.dataTable > tbody > tr {\n    background-color: transparent;\n}\ntable.dataTable > tbody > tr:first-child > * {\n    border-top: none;\n}\ntable.dataTable > tbody > tr:last-child > * {\n    border-bottom: none;\n}\ntable.dataTable > tbody > tr.selected > * {\n    box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.9);\n    box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.9);\n    color: rgb(255, 255, 255);\n    color: rgb(var(--dt-row-selected-text));\n}\ntable.dataTable > tbody > tr.selected a {\n    color: rgb(9, 10, 11);\n    color: rgb(var(--dt-row-selected-link));\n}\ntable.dataTable > tbody > tr > th,\ntable.dataTable > tbody > tr > td {\n    padding: 8px 10px;\n}\ntable.dataTable.row-border > tbody > tr > *, table.dataTable.display > tbody > tr > * {\n    border-top: 1px solid rgba(0, 0, 0, 0.15);\n}\ntable.dataTable.row-border > tbody > tr:first-child > *, table.dataTable.display > tbody > tr:first-child > * {\n    border-top: none;\n}\ntable.dataTable.row-border > tbody > tr.selected + tr.selected > td, table.dataTable.display > tbody > tr.selected + tr.selected > td {\n    border-top-color: rgba(13, 110, 253, 0.65);\n    border-top-color: rgba(var(--dt-row-selected), 0.65);\n}\ntable.dataTable.cell-border > tbody > tr > * {\n    border-top: 1px solid rgba(0, 0, 0, 0.15);\n    border-right: 1px solid rgba(0, 0, 0, 0.15);\n}\ntable.dataTable.cell-border > tbody > tr > *:first-child {\n    border-left: 1px solid rgba(0, 0, 0, 0.15);\n}\ntable.dataTable.cell-border > tbody > tr:first-child > * {\n    border-top: 1px solid rgba(0, 0, 0, 0.3);\n}\ntable.dataTable.stripe > tbody > tr:nth-child(odd) > *, table.dataTable.display > tbody > tr:nth-child(odd) > * {\n    box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.023);\n    box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-stripe), 0.023);\n}\ntable.dataTable.stripe > tbody > tr:nth-child(odd).selected > *, table.dataTable.display > tbody > tr:nth-child(odd).selected > * {\n    box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.923);\n    box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.923);\n}\ntable.dataTable.hover > tbody > tr:hover > *, table.dataTable.display > tbody > tr:hover > * {\n    box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.035);\n    box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-hover), 0.035);\n}\ntable.dataTable.hover > tbody > tr.selected:hover > *, table.dataTable.display > tbody > tr.selected:hover > * {\n    box-shadow: inset 0 0 0 9999px #0d6efd !important;\n    box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 1) !important;\n}\ntable.dataTable.order-column > tbody tr > .sorting_1,\ntable.dataTable.order-column > tbody tr > .sorting_2,\ntable.dataTable.order-column > tbody tr > .sorting_3, table.dataTable.display > tbody tr > .sorting_1,\ntable.dataTable.display > tbody tr > .sorting_2,\ntable.dataTable.display > tbody tr > .sorting_3 {\n    box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.019);\n    box-shadow: inset 0 0 0 9999px rgba(var(--dt-column-ordering), 0.019);\n}\ntable.dataTable.order-column > tbody tr.selected > .sorting_1,\ntable.dataTable.order-column > tbody tr.selected > .sorting_2,\ntable.dataTable.order-column > tbody tr.selected > .sorting_3, table.dataTable.display > tbody tr.selected > .sorting_1,\ntable.dataTable.display > tbody tr.selected > .sorting_2,\ntable.dataTable.display > tbody tr.selected > .sorting_3 {\n    box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.919);\n    box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.919);\n}\ntable.dataTable.display > tbody > tr:nth-child(odd) > .sorting_1, table.dataTable.order-column.stripe > tbody > tr:nth-child(odd) > .sorting_1 {\n    box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.054);\n    box-shadow: inset 0 0 0 9999px rgba(var(--dt-column-ordering), 0.054);\n}\ntable.dataTable.display > tbody > tr:nth-child(odd) > .sorting_2, table.dataTable.order-column.stripe > tbody > tr:nth-child(odd) > .sorting_2 {\n    box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.047);\n    box-shadow: inset 0 0 0 9999px rgba(var(--dt-column-ordering), 0.047);\n}\ntable.dataTable.display > tbody > tr:nth-child(odd) > .sorting_3, table.dataTable.order-column.stripe > tbody > tr:nth-child(odd) > .sorting_3 {\n    box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.039);\n    box-shadow: inset 0 0 0 9999px rgba(var(--dt-column-ordering), 0.039);\n}\ntable.dataTable.display > tbody > tr:nth-child(odd).selected > .sorting_1, table.dataTable.order-column.stripe > tbody > tr:nth-child(odd).selected > .sorting_1 {\n    box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.954);\n    box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.954);\n}\ntable.dataTable.display > tbody > tr:nth-child(odd).selected > .sorting_2, table.dataTable.order-column.stripe > tbody > tr:nth-child(odd).selected > .sorting_2 {\n    box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.947);\n    box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.947);\n}\ntable.dataTable.display > tbody > tr:nth-child(odd).selected > .sorting_3, table.dataTable.order-column.stripe > tbody > tr:nth-child(odd).selected > .sorting_3 {\n    box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.939);\n    box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.939);\n}\ntable.dataTable.display > tbody > tr.even > .sorting_1, table.dataTable.order-column.stripe > tbody > tr.even > .sorting_1 {\n    box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.019);\n    box-shadow: inset 0 0 0 9999px rgba(var(--dt-column-ordering), 0.019);\n}\ntable.dataTable.display > tbody > tr.even > .sorting_2, table.dataTable.order-column.stripe > tbody > tr.even > .sorting_2 {\n    box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.011);\n    box-shadow: inset 0 0 0 9999px rgba(var(--dt-column-ordering), 0.011);\n}\ntable.dataTable.display > tbody > tr.even > .sorting_3, table.dataTable.order-column.stripe > tbody > tr.even > .sorting_3 {\n    box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.003);\n    box-shadow: inset 0 0 0 9999px rgba(var(--dt-column-ordering), 0.003);\n}\ntable.dataTable.display > tbody > tr.even.selected > .sorting_1, table.dataTable.order-column.stripe > tbody > tr.even.selected > .sorting_1 {\n    box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.919);\n    box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.919);\n}\ntable.dataTable.display > tbody > tr.even.selected > .sorting_2, table.dataTable.order-column.stripe > tbody > tr.even.selected > .sorting_2 {\n    box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.911);\n    box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.911);\n}\ntable.dataTable.display > tbody > tr.even.selected > .sorting_3, table.dataTable.order-column.stripe > tbody > tr.even.selected > .sorting_3 {\n    box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.903);\n    box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.903);\n}\ntable.dataTable.display tbody tr:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1 {\n    box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.082);\n    box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-hover), 0.082);\n}\ntable.dataTable.display tbody tr:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2 {\n    box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.074);\n    box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-hover), 0.074);\n}\ntable.dataTable.display tbody tr:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3 {\n    box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.062);\n    box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-hover), 0.062);\n}\ntable.dataTable.display tbody tr:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1 {\n    box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.982);\n    box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.982);\n}\ntable.dataTable.display tbody tr:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2 {\n    box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.974);\n    box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.974);\n}\ntable.dataTable.display tbody tr:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3 {\n    box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.962);\n    box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.962);\n}\ntable.dataTable.compact thead th,\ntable.dataTable.compact thead td,\ntable.dataTable.compact tfoot th,\ntable.dataTable.compact tfoot td,\ntable.dataTable.compact tbody th,\ntable.dataTable.compact tbody td {\n    padding: 4px;\n}\n\ndiv.dt-container div.dt-layout-row {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n\n    margin: 0.75em 0;\n}\ndiv.dt-container div.dt-layout-row div.dt-layout-cell {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n}\ndiv.dt-container div.dt-layout-row div.dt-layout-cell.dt-layout-start {\n    justify-content: flex-start;\n    margin-right: auto;\n}\ndiv.dt-container div.dt-layout-row div.dt-layout-cell.dt-layout-end {\n    justify-content: flex-end;\n    margin-left: auto;\n}\ndiv.dt-container div.dt-layout-row div.dt-layout-cell:empty {\n    display: none;\n}\n\n@media screen and (max-width: 767px) {\n    div.dt-container div.dt-layout-row:not(.dt-layout-table) {\n        display: block;\n    }\n    div.dt-container div.dt-layout-row:not(.dt-layout-table) div.dt-layout-cell {\n        display: block;\n        text-align: center;\n    }\n    div.dt-container div.dt-layout-row:not(.dt-layout-table) div.dt-layout-cell > * {\n        margin: 0.5em 0;\n    }\n    div.dt-container div.dt-layout-row:not(.dt-layout-table) div.dt-layout-cell.dt-layout-start {\n        margin-right: 0;\n    }\n    div.dt-container div.dt-layout-row:not(.dt-layout-table) div.dt-layout-cell.dt-layout-end {\n        margin-left: 0;\n    }\n}\ndiv.dt-container div.dt-layout-start > *:not(:last-child) {\n    margin-right: 1em;\n}\ndiv.dt-container div.dt-layout-end > *:not(:first-child) {\n    margin-left: 1em;\n}\ndiv.dt-container div.dt-layout-full {\n    width: 100%;\n}\ndiv.dt-container div.dt-layout-full > *:only-child {\n    margin-left: auto;\n    margin-right: auto;\n}\ndiv.dt-container div.dt-layout-table > div {\n    display: block !important;\n}\n\n@media screen and (max-width: 767px) {\n    div.dt-container div.dt-layout-start > *:not(:last-child) {\n        margin-right: 0;\n    }\n    div.dt-container div.dt-layout-end > *:not(:first-child) {\n        margin-left: 0;\n    }\n}\n/*\n * Control feature layout\n */\ndiv.dt-container {\n    position: relative;\n    clear: both;\n}\ndiv.dt-container .dt-search input {\n    border: 1px solid #aaa;\n    border-radius: 3px;\n    padding: 5px;\n    background-color: transparent;\n    color: inherit;\n    margin-left: 3px;\n}\ndiv.dt-container .dt-input {\n    border: 1px solid #aaa;\n    border-radius: 3px;\n    padding: 5px;\n    background-color: transparent;\n    color: inherit;\n}\ndiv.dt-container select.dt-input {\n    padding: 4px;\n}\ndiv.dt-container .dt-paging .dt-paging-button {\n    box-sizing: border-box;\n    display: inline-block;\n    min-width: 1.5em;\n    padding: 0.5em 1em;\n    margin-left: 2px;\n    text-align: center;\n    text-decoration: none !important;\n    cursor: pointer;\n    color: inherit !important;\n    border: 1px solid transparent;\n    border-radius: 2px;\n    background: transparent;\n}\ndiv.dt-container .dt-paging .dt-paging-button.current, div.dt-container .dt-paging .dt-paging-button.current:hover {\n    color: inherit !important;\n    border: 1px solid rgba(0, 0, 0, 0.3);\n    background-color: rgba(0, 0, 0, 0.05);\n    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(230, 230, 230, 0.05)), color-stop(100%, rgba(0, 0, 0, 0.05))); /* Chrome,Safari4+ */\n    background: -webkit-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%); /* Chrome10+,Safari5.1+ */\n    background: -moz-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%); /* FF3.6+ */\n    background: -ms-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%); /* IE10+ */\n    background: -o-linear-gradient(top, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%); /* Opera 11.10+ */\n    background: linear-gradient(to bottom, rgba(230, 230, 230, 0.05) 0%, rgba(0, 0, 0, 0.05) 100%); /* W3C */\n}\ndiv.dt-container .dt-paging .dt-paging-button.disabled, div.dt-container .dt-paging .dt-paging-button.disabled:hover, div.dt-container .dt-paging .dt-paging-button.disabled:active {\n    cursor: default;\n    color: rgba(0, 0, 0, 0.5) !important;\n    border: 1px solid transparent;\n    background: transparent;\n    box-shadow: none;\n}\ndiv.dt-container .dt-paging .dt-paging-button:hover {\n    color: white !important;\n    border: 1px solid #111;\n    background-color: #111;\n    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111)); /* Chrome,Safari4+ */\n    background: -webkit-linear-gradient(top, #585858 0%, #111 100%); /* Chrome10+,Safari5.1+ */\n    background: -moz-linear-gradient(top, #585858 0%, #111 100%); /* FF3.6+ */\n    background: -ms-linear-gradient(top, #585858 0%, #111 100%); /* IE10+ */\n    background: -o-linear-gradient(top, #585858 0%, #111 100%); /* Opera 11.10+ */\n    background: linear-gradient(to bottom, #585858 0%, #111 100%); /* W3C */\n}\ndiv.dt-container .dt-paging .dt-paging-button:active {\n    outline: none;\n    background-color: #0c0c0c;\n    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c)); /* Chrome,Safari4+ */\n    background: -webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); /* Chrome10+,Safari5.1+ */\n    background: -moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); /* FF3.6+ */\n    background: -ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); /* IE10+ */\n    background: -o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); /* Opera 11.10+ */\n    background: linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%); /* W3C */\n    box-shadow: inset 0 0 3px #111;\n}\ndiv.dt-container .dt-paging .ellipsis {\n    padding: 0 1em;\n}\ndiv.dt-container .dt-length,\ndiv.dt-container .dt-search,\ndiv.dt-container .dt-info,\ndiv.dt-container .dt-processing,\ndiv.dt-container .dt-paging {\n    color: inherit;\n}\ndiv.dt-container .dataTables_scroll {\n    clear: both;\n}\ndiv.dt-container .dataTables_scroll div.dt-scroll-body {\n    -webkit-overflow-scrolling: touch;\n}\ndiv.dt-container .dataTables_scroll div.dt-scroll-body > table > thead > tr > th, div.dt-container .dataTables_scroll div.dt-scroll-body > table > thead > tr > td, div.dt-container .dataTables_scroll div.dt-scroll-body > table > tbody > tr > th, div.dt-container .dataTables_scroll div.dt-scroll-body > table > tbody > tr > td {\n    vertical-align: middle;\n}\ndiv.dt-container .dataTables_scroll div.dt-scroll-body > table > thead > tr > th > div.dataTables_sizing,\ndiv.dt-container .dataTables_scroll div.dt-scroll-body > table > thead > tr > td > div.dataTables_sizing, div.dt-container .dataTables_scroll div.dt-scroll-body > table > tbody > tr > th > div.dataTables_sizing,\ndiv.dt-container .dataTables_scroll div.dt-scroll-body > table > tbody > tr > td > div.dataTables_sizing {\n    height: 0;\n    overflow: hidden;\n    margin: 0 !important;\n    padding: 0 !important;\n}\ndiv.dt-container.dt-empty-footer tbody > tr:last-child > * {\n    border-bottom: 1px solid rgba(0, 0, 0, 0.3);\n}\ndiv.dt-container.dt-empty-footer .dt-scroll-body {\n    border-bottom: 1px solid rgba(0, 0, 0, 0.3);\n}\ndiv.dt-container.dt-empty-footer .dt-scroll-body tbody > tr:last-child > * {\n    border-bottom: none;\n}\n\nhtml.dark {\n    --dt-row-hover: 255, 255, 255;\n    --dt-row-stripe: 255, 255, 255;\n    --dt-column-ordering: 255, 255, 255;\n}\nhtml.dark table.dataTable > thead > tr > th,\nhtml.dark table.dataTable > thead > tr > td {\n    border-bottom: 1px solid rgb(89, 91, 94);\n}\nhtml.dark table.dataTable > thead > tr > th:active,\nhtml.dark table.dataTable > thead > tr > td:active {\n    outline: none;\n}\nhtml.dark table.dataTable > tfoot > tr > th,\nhtml.dark table.dataTable > tfoot > tr > td {\n    border-top: 1px solid rgb(89, 91, 94);\n}\nhtml.dark table.dataTable.row-border > tbody > tr > *, html.dark table.dataTable.display > tbody > tr > * {\n    border-top: 1px solid rgb(64, 67, 70);\n}\nhtml.dark table.dataTable.row-border > tbody > tr:first-child > *, html.dark table.dataTable.display > tbody > tr:first-child > * {\n    border-top: none;\n}\nhtml.dark table.dataTable.row-border > tbody > tr.selected + tr.selected > td, html.dark table.dataTable.display > tbody > tr.selected + tr.selected > td {\n    border-top-color: rgba(13, 110, 253, 0.65);\n    border-top-color: rgba(var(--dt-row-selected), 0.65);\n}\nhtml.dark table.dataTable.cell-border > tbody > tr > th,\nhtml.dark table.dataTable.cell-border > tbody > tr > td {\n    border-top: 1px solid rgb(64, 67, 70);\n    border-right: 1px solid rgb(64, 67, 70);\n}\nhtml.dark table.dataTable.cell-border > tbody > tr > th:first-child,\nhtml.dark table.dataTable.cell-border > tbody > tr > td:first-child {\n    border-left: 1px solid rgb(64, 67, 70);\n}\nhtml.dark .dt-container.dt-empty-footer table.dataTable {\n    border-bottom: 1px solid rgb(89, 91, 94);\n}\nhtml.dark .dt-container .dt-search input,\nhtml.dark .dt-container .dt-length select {\n    border: 1px solid rgba(255, 255, 255, 0.2);\n    background-color: var(--dt-html-background);\n}\nhtml.dark .dt-container .dt-paging .dt-paging-button.current, html.dark .dt-container .dt-paging .dt-paging-button.current:hover {\n    border: 1px solid rgb(89, 91, 94);\n    background: rgba(255, 255, 255, 0.15);\n}\nhtml.dark .dt-container .dt-paging .dt-paging-button.disabled, html.dark .dt-container .dt-paging .dt-paging-button.disabled:hover, html.dark .dt-container .dt-paging .dt-paging-button.disabled:active {\n    color: #666 !important;\n}\nhtml.dark .dt-container .dt-paging .dt-paging-button:hover {\n    border: 1px solid rgb(53, 53, 53);\n    background: rgb(53, 53, 53);\n}\nhtml.dark .dt-container .dt-paging .dt-paging-button:active {\n    background: #3a3a3a;\n}\n\n/*\n * Overrides for RTL support\n */\n*[dir=rtl] table.dataTable thead th,\n*[dir=rtl] table.dataTable thead td,\n*[dir=rtl] table.dataTable tfoot th,\n*[dir=rtl] table.dataTable tfoot td {\n    text-align: right;\n}\n*[dir=rtl] table.dataTable th.dt-type-numeric, *[dir=rtl] table.dataTable th.dt-type-date,\n*[dir=rtl] table.dataTable td.dt-type-numeric,\n*[dir=rtl] table.dataTable td.dt-type-date {\n    text-align: left;\n}\n*[dir=rtl] div.dt-container div.dt-layout-cell.dt-start {\n    text-align: right;\n}\n*[dir=rtl] div.dt-container div.dt-layout-cell.dt-end {\n    text-align: left;\n}\n*[dir=rtl] div.dt-container div.dt-search input {\n    margin: 0 3px 0 0;\n}\n","@import \"figtree.css\";\n\n@import \"datatables.css\";\n\n#aio-login__app *:not(.dashicons) {\n\tfont-family: Figtree;\n}\n\n#aio-login__app .dashicons {\n\tfont-family: dashicons !important;\n}\n\n#aio-login__app .float-left {\n\tfloat: left;\n}\n\n#aio-login__app .float-right {\n\tfloat: right;\n}\n\n#aio-login__app .text-center {\n\ttext-align: center;\n}\n\n#aio-login__app .text-left {\n\ttext-align: left;\n}\n\n#aio-login__app .text-right {\n\ttext-align: right;\n}\n\n#aio-login__app .clearfix::after {\n\tcontent: \"\";\n\tclear: both;\n\tdisplay: table;\n}\n\n#aio-login__app .container {\n\tpadding: 0 25px;\n}\n\n#aio-login__app .mb-25 {\n\tmargin-bottom: 25px;\n}\n\n#aio-login__app .mt-25 {\n\tmargin-top: 25px;\n}\n\n#aio-login__app .m-5 {\n\tmargin: 5px;\n}\n\n#wpcontent {\n\tpadding-left: 0 !important;\n}\n\n\n.dt-layout-cell.dt-layout-start {\n\tfloat: left;\n}\n\n.dt-layout-cell.dt-layout-end {\n\tfloat: right;\n}\n\n.dt-layout-row::after {\n\tclear: both;\n\tcontent: '';\n\tdisplay: table;\n}\n\n.dt-layout-row {\n\tbackground: #FBF5FF;\n\tpadding: 15px;\n}\n\n.dt-layout-row.dt-layout-table {\n\tbackground: #fff;\n\tpadding: 0;\n}\n\n#DataTables_Table_0 thead th,\n#DataTables_Table_0 tfoot th {\n\tbackground: #e8e5e8;\n}\n\n.dt-paging-button {\n\tbackground: #e8e5e8;\n\tborder: 1px solid #e8e5e8;\n\tcolor: #000;\n\tpadding: 15px;\n\tfont-size: 14px;\n\tcursor: pointer;\n}\n\n.dt-paging-button.disabled {\n\tbackground: #f5f5f5;\n\tborder: 1px solid #f5f5f5;\n\tcolor: #ccc;\n\tcursor: not-allowed;\n}\n\nselect.dt-input {\n\twidth: 60px !important;\n}\n\n\ndiv.dt-container div.dt-layout-row {\n\tmargin: 0 !important;\n}\n\n.mt-40 {\n\tmargin-top: 40px;\n}\n\n#aio-login__app a:focus,\n#aio-login__app a:active {\n\tbox-shadow: none;\n}\n\n/* Ensure disabled inputs are properly styled */\n.aio-login-pro-overlay input:disabled,\n.aio-login-pro-overlay select:disabled,\n.aio-login-pro-overlay textarea:disabled {\n\topacity: 0.6;\n\tcursor: not-allowed;\n}\n\n/* Pro Feature Overlay */\n.aio-login-pro-feature {\n\tposition: relative;\n}\n\n.aio-login-pro-overlay {\n\tposition: relative;\n\tcursor: pointer;\n\tfilter: blur(1px);\n\ttransition: all 0.3s ease;\n}\n\n.aio-login-pro-overlay::before {\n\tcontent: '';\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tz-index: 10;\n\tpointer-events: auto;\n\tcursor: pointer;\n}\n\n.aio-login-pro-label {\n\tcolor: #667eea !important;\n\tfont-weight: 600;\n}\n\n.aio-login-pro-desc {\n\tcolor: #667eea !important;\n\topacity: 0.8;\n}\n\n.aio-login-pro-overlay input:disabled,\n.aio-login-pro-overlay select:disabled,\n.aio-login-pro-overlay button:disabled {\n\topacity: 0.5;\n\tcursor: not-allowed;\n}\n\n/* Prevent table interactions */\n.aio-login-pro-overlay table,\n.aio-login-pro-overlay .dataTables_wrapper,\n.aio-login-pro-overlay .dataTables_filter,\n.aio-login-pro-overlay .dataTables_length,\n.aio-login-pro-overlay .dataTables_paginate {\n\tpointer-events: none;\n}\n\n/* Prevent form interactions in pro overlay */\n.aio-login-pro-overlay .aio-login-toggle,\n.aio-login-pro-overlay .aio-login-text,\n.aio-login-pro-overlay input,\n.aio-login-pro-overlay select,\n.aio-login-pro-overlay button {\n\tpointer-events: none;\n}\n\n/* Action Buttons with Theme Colors */\n.action-btn {\n\tdisplay: inline-block;\n\tpadding: 6px 12px;\n\tborder: none;\n\tborder-radius: 4px;\n\tfont-size: 12px;\n\tfont-weight: 500;\n\tcursor: pointer;\n\tmargin-right: 8px;\n\ttext-decoration: none;\n\tcolor: white;\n\ttransition: all 0.2s ease;\n\tbackground: #9416de;\n\tvertical-align: middle;\n\twhite-space: nowrap;\n}\n\n.action-btn.unblock {\n\tbackground: #9416de;\n}\n\n.action-btn.unblock:hover {\n\tbackground: #9516df;\n}\n\n.action-btn.block {\n\tbackground: #9416de;\n}\n\n.action-btn.block:hover {\n\tbackground: #9516df;\n}\n\n.action-btn.delete {\n\tbackground: #dc3545;\n}\n\n.action-btn.delete:hover {\n\tbackground: #c82333;\n}\n\n.action-btn:last-child {\n\tmargin-right: 0;\n}\n\n/* Ensure buttons stay inline */\n.action-btn:not(:last-child)::after {\n\tcontent: '';\n\tmargin: 0;\n}\n\n/* Keep action buttons inline only in datatables */\ntable.dataTable td:last-child {\n\twhite-space: nowrap;\n}\n\n/* Note Section Styling */\n.aio-login__note-section {\n\tmargin-top: 30px;\n}\n\n.aio-login__note {\n\tbackground: #fff;\n\tborder-left: 4px solid #9416de;\n\tpadding: 15px 20px;\n\tborder-radius: 4px;\n\tbox-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n}\n\n.aio-login__note p {\n\tmargin: 0;\n\tcolor: #333;\n\tfont-size: 14px;\n\tline-height: 1.5;\n}\n\n.aio-login__note strong {\n\tcolor: #9416de;\n\tfont-weight: 600;\n}\n\n/* Global styles for AIO Login Pro components */\n.aio-login-pro__inline-form {\n\tdisplay: flex;\n\tgap: 20px;\n\tmargin-top: 10px;\n}\n\n.aio-login-pro__form-group {\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex: 1;\n}\n\n.aio-login-pro__form-label {\n\tfont-size: 14px;\n\tmargin-bottom: 5px;\n\tfont-weight: 600;\n}\n\n.aio-login-pro__form-input {\n\tpadding: 10px 35px 10px 10px;\n\tfont-size: 14px;\n\tborder-radius: 4px;\n\ttransition: border-color 0.2s ease-in-out;\n\tborder: 1px solid #EBE8EB !important;\n\tbackground: #FFF;\n\theight: 40px;\n\twidth: 100%;\n\tbox-sizing: border-box;\n}\n\n.aio-login-pro__form-input[type='text'],\n.aio-login-pro__form-input[type='password'] {\n\tpadding: 10px 35px 10px 10px;\n}\n\n.aio-login-pro__form-input:focus {\n\toutline: none;\n\tborder-color: #9516df;\n}\n\n.aio-login-pro__required {\n\tcolor: #ff0000;\n}\n\n.aio-login-pro__error {\n\tborder-color: #ff0000 !important;\n}\n\n.aio-login-pro__error-message {\n\tcolor: #ff0000;\n\tfont-size: 12px;\n\tmargin-top: 5px;\n}\n\n.input-with-delete {\n\tposition: relative;\n\twidth: 100%;\n}\n\n.clear-btn {\n\tposition: absolute;\n\tright: 8px;\n\ttop: 50%;\n\ttransform: translateY(-50%);\n\tbackground: transparent;\n\tcolor: #999;\n\tborder: none;\n\twidth: 24px;\n\theight: 24px;\n\tcursor: pointer;\n\tfont-size: 18px;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tz-index: 10;\n\tpointer-events: auto;\n}\n\n.clear-btn:hover {\n\tcolor: #666;\n}\n\n/* Spacing for WooCommerce Social Login vs Captcha */\n.aio-login-social-login-buttons-wrapper.woocommerce-social-login {\n\tmargin-bottom: 20px !important;\n}\n\n/* 2FA Authentication Methods — structure aligned with aio-login-pro (free preview when Pro JS/CSS not loaded) */\n.aio-login-2fa-methods {\n\tposition: relative;\n}\n\n.aio-login-2fa-methods__list {\n\tpadding: 8px 0;\n}\n\n.aio-login-2fa-methods__item {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tpadding: 14px 16px;\n\tborder: 1px solid #eceff3;\n\tborder-radius: 8px;\n\tbackground: #fff;\n\tmargin-top: 12px;\n\tbox-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);\n}\n\n.aio-login-2fa-methods__item:first-child {\n\tmargin-top: 0;\n}\n\n.aio-login-2fa-methods__method-note {\n\tmargin: 0 0 12px;\n\tfont-size: 13px;\n\tcolor: #6b7280;\n\tline-height: 1.45;\n\tfont-weight: 500;\n}\n\n.aio-login-2fa-methods__content {\n\tpadding-right: 14px;\n}\n\n.aio-login-2fa-methods__controls {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 10px;\n}\n\n.aio-login-2fa-methods__expand-btn {\n\tborder: 1px solid #dbe2ea;\n\tbackground: #fff;\n\tborder-radius: 6px;\n\twidth: 28px;\n\theight: 28px;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tcursor: pointer;\n\tpadding: 0;\n}\n\n.aio-login-2fa-methods__expand-btn:hover {\n\tborder-color: #9516df;\n}\n\n.aio-login-2fa-methods__expand-btn:focus {\n\toutline: none;\n\tbox-shadow: 0 0 0 1px rgba(149, 22, 223, 0.24);\n\tborder-color: #9516df;\n}\n\n.aio-login-2fa-methods__chevron {\n\twidth: 8px;\n\theight: 8px;\n\tborder-right: 2px solid #6b7280;\n\tborder-bottom: 2px solid #6b7280;\n\ttransform: rotate(45deg);\n\tmargin-top: -2px;\n\ttransition: transform 0.2s ease, border-color 0.2s ease;\n}\n\n.aio-login-2fa-methods__title {\n\tmargin: 0;\n\tfont-weight: 600;\n\tcolor: #1f2937;\n\tfont-size: 17px;\n\tline-height: 1.3;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 6px;\n}\n\n.aio-login-2fa-methods__desc {\n\tfont-size: 14px;\n\tcolor: #6b7280;\n\tmargin-top: 4px;\n\tline-height: 1.45;\n}\n\n.aio-login-2fa-policies__list {\n\tpadding: 8px 0;\n}\n\n.aio-login-2fa-policies__card {\n\tflex-direction: column;\n\talign-items: stretch !important;\n}\n\n.aio-login-2fa-policies__card-header {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 14px;\n\twidth: 100%;\n}\n\n.aio-login-2fa-policies__card-header .aio-login-2fa-methods__content {\n\tflex: 1;\n\tmin-width: 0;\n}\n\n.aio-login-2fa-policies__icon {\n\tflex-shrink: 0;\n\twidth: 44px;\n\theight: 44px;\n\tborder-radius: 8px;\n\tbackground: #f5f0ff;\n\tcolor: #9416de;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.aio-login-2fa-methods__actions {\n\tmargin-top: 16px;\n}"],"names":[],"sourceRoot":""}