{"version":3,"file":"css/app.css","mappings":"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;IACN,WAAW;IACX,YAAY;IACZ,kBAAkB;IAClB,6BAA6B;IAC7B,uCAAuC;IACvC,mDAAmD;AACvD;AACA;IACI,SAAS;IACT,4CAA4C;AAChD;AACA;IACI,SAAS;IACT,4CAA4C;AAChD;AACA;IACI,UAAU;IACV,4CAA4C;AAChD;AACA;IACI,UAAU;IACV,4CAA4C;AAChD;;AAEA;IACI;QACI,mBAAmB;IACvB;IACA;QACI,mBAAmB;IACvB;AACJ;AACA;IACI;QACI,mBAAmB;IACvB;IACA;QACI,mBAAmB;IACvB;AACJ;AACA;IACI;QACI,0BAA0B;IAC9B;IACA;QACI,6BAA6B;IACjC;AACJ;AACA;IACI,mBAAmB;AACvB;AACA;;IAEI,sBAAsB;AAC1B;AACA;;IAEI,gBAAgB;AACpB;AACA;;IAEI,kBAAkB;AACtB;AACA;;IAEI,iBAAiB;AACrB;AACA;;IAEI,mBAAmB;AACvB;AACA;;IAEI,mBAAmB;AACvB;AACA;;IAEI,kBAAkB;IAClB,mBAAmB;AACvB;AACA;;;IAGI,gBAAgB;AACpB;AACA;;;;IAII,gBAAgB;AACpB;AACA;;;;IAII,gBAAgB;AACpB;AACA;;;;IAII,kBAAkB;AACtB;AACA;;;;IAII,iBAAiB;AACrB;AACA;;;;IAII,mBAAmB;AACvB;AACA;;;;IAII,mBAAmB;AACvB;AACA;;IAEI,gBAAgB;AACpB;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;IAC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","sources":["webpack://aio-login/./src/js/pages/grecaptcha.vue","webpack://aio-login/./src/js/pages/integrations.vue","webpack://aio-login/./src/js/pages/enumeration-protection-logs.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-woocommerce-popup.vue","webpack://aio-login/./src/js/components/aio-login-woocommerce-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-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/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-405/app/public/wp-content/plugins/aio-login/src/css/app.css"],"sourcesContent":["<template>\n\t<div>\n\t\t<div class=\"aio-login-t-wrapper\">\n\t\t\t<div>\n\t\t\t\t<h3>Captcha Settings</h3>\n\t\t\t\t<div v-if=\"(form_data.enabled || hcaptcha_form_data.enabled) && !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 -->\n\t\t\t\t<aio-login-hcaptcha-card\n\t\t\t\t\t:has-pro=\"has_pro\"\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\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>\n\nexport default {\n\tname: 'grecaptcha',\n\n\tdata: () => ( {\n\t\thas_pro: 'true' === aio_login__app_object.has_pro,\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\tsnackbar: {\n\t\t\tmessage: '',\n\t\t\tduration: 3000,\n\t\t\tshow: false,\n\t\t},\n\t\tnoteDismissed: false\n\t} ),\n\n\tcomputed: {\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},\n\n\tmethods: {\n\t\thandleToggleCaptcha(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\t// Save hCaptcha disabled state\n\t\t\t\tthis.saveHCaptchaSettings();\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\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\t// Save reCAPTCHA disabled state\n\t\t\t\tthis.saveSettings();\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\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\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}\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>\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>Integrations</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>WooCommerce Integration</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>Captcha</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=\"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 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</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>Social Login</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=\"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 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>\nexport default {\n\tname: 'integrations',\n\n\tdata: ( vm ) => ( {\n\t\thas_pro: 'true' === aio_login__app_object.has_pro,\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\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},\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}\n\t\t}\n\t} ),\n\n\tcomputed: {\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];\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\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// Check cache first (5 minute cache) unless force refresh is requested\n\t\t\tconst cacheKey = 'aio_login_configured_providers';\n\t\t\tconst cacheExpiry = 5 * 60 * 1000; // 5 minutes\n\t\t\tif (!forceRefresh) {\n\t\t\t\ttry {\n\t\t\t\t\tconst cached = localStorage.getItem(cacheKey);\n\t\t\t\t\tif (cached) {\n\t\t\t\t\t\tconst cachedData = JSON.parse(cached);\n\t\t\t\t\t\tif (cachedData.timestamp && (Date.now() - cachedData.timestamp) < cacheExpiry) {\n\t\t\t\t\t\t\tthis.configuredProviders = cachedData.providers;\n\t\t\t\t\t\t\treturn; // Use cached data\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\t// Ignore cache errors\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Reset configured providers\n\t\t\tthis.configuredProviders.captcha = [];\n\t\t\tthis.configuredProviders.social = [];\n\n\t\t\t// Load all providers in parallel for better performance\n\t\t\ttry {\n\t\t\t\t// Load captcha providers in parallel\n\t\t\t\tconst [grecaptchaResponse, hcaptchaResponse] = await Promise.all([\n\t\t\t\t\taxios.get('aio-login/grecaptcha/get-settings').catch(() => null),\n\t\t\t\t\taxios.get('aio-login/hcaptcha/get-settings').catch(() => null)\n\t\t\t\t]);\n\n\t\t\t\t// Check reCAPTCHA\n\t\t\t\tif (grecaptchaResponse && grecaptchaResponse.data) {\n\t\t\t\t\tconst grecaptchaData = grecaptchaResponse.data;\n\t\t\t\t\tconst hasV2Keys = grecaptchaData.v2_site_key && String(grecaptchaData.v2_site_key).trim().length > 0 && \n\t\t\t\t\t\t\t\t\t  grecaptchaData.v2_secret_key && String(grecaptchaData.v2_secret_key).trim().length > 0;\n\t\t\t\t\tconst hasV3Keys = grecaptchaData.v3_site_key && String(grecaptchaData.v3_site_key).trim().length > 0 && \n\t\t\t\t\t\t\t\t\t  grecaptchaData.v3_secret_key && String(grecaptchaData.v3_secret_key).trim().length > 0;\n\t\t\t\t\tconst isEnabled = grecaptchaData.enabled === true || grecaptchaData.enabled === 'on';\n\t\t\t\t\tif ((hasV2Keys || hasV3Keys) && isEnabled) {\n\t\t\t\t\t\tthis.configuredProviders.captcha.push('recaptcha');\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Check hCaptcha\n\t\t\t\tif (hcaptchaResponse && hcaptchaResponse.data) {\n\t\t\t\t\tconst hcaptchaData = hcaptchaResponse.data;\n\t\t\t\t\tconst hasSiteKey = hcaptchaData.site_key && String(hcaptchaData.site_key).trim().length > 0;\n\t\t\t\t\tconst hasSecretKey = hcaptchaData.secret_key && String(hcaptchaData.secret_key).trim().length > 0;\n\t\t\t\t\tconst isEnabled = hcaptchaData.enabled === true || hcaptchaData.enabled === 'on';\n\t\t\t\t\tif (hasSiteKey && hasSecretKey && isEnabled) {\n\t\t\t\t\t\tthis.configuredProviders.captcha.push('hcaptcha');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\t// Silently handle errors\n\t\t\t}\n\n\t\t\t// Load configured social login providers in parallel\n\t\t\ttry {\n\t\t\t\t// Get enabled status for all providers and all provider settings in parallel\n\t\t\t\tconst [providersResponse, ...socialProviderResponses] = await Promise.all([\n\t\t\t\t\taxios.get('aio-login-pro/social-login/get-providers').catch(() => ({ data: { success: false } })),\n\t\t\t\t\t...['google', 'microsoft', 'facebook', 'line'].map(provider => \n\t\t\t\t\t\taxios.get(`aio-login-pro/social-login/get-settings?provider=${provider}`).catch(() => null)\n\t\t\t\t\t)\n\t\t\t\t]);\n\n\t\t\t\tlet enabledProviders = {};\n\t\t\t\tif (providersResponse.data && providersResponse.data.success && providersResponse.data.providers) {\n\t\t\t\t\tenabledProviders = providersResponse.data.providers;\n\t\t\t\t}\n\n\t\t\t\t// Process all social provider responses\n\t\t\t\tconst socialProviders = ['google', 'microsoft', 'facebook', 'line'];\n\t\t\t\tsocialProviderResponses.forEach((response, index) => {\n\t\t\t\t\tif (!response || !response.data) return;\n\t\t\t\t\t\n\t\t\t\t\tconst provider = socialProviders[index];\n\t\t\t\t\tconst responseData = response.data;\n\t\t\t\t\tlet providerData = null;\n\t\t\t\t\t\n\t\t\t\t\t// Handle nested response structure\n\t\t\t\t\tif (responseData.success && responseData.data) {\n\t\t\t\t\t\tif (responseData.data.data) {\n\t\t\t\t\t\t\tproviderData = responseData.data.data;\n\t\t\t\t\t\t} else if (responseData.data.client_id) {\n\t\t\t\t\t\t\tproviderData = responseData.data;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (responseData.client_id) {\n\t\t\t\t\t\tproviderData = responseData;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (providerData) {\n\t\t\t\t\t\tconst hasClientId = providerData.client_id && String(providerData.client_id).trim().length > 0;\n\t\t\t\t\t\tconst hasClientSecret = providerData.client_secret && String(providerData.client_secret).trim().length > 0;\n\t\t\t\t\t\tconst isEnabled = enabledProviders[provider] === true || enabledProviders[provider] === '1';\n\n\t\t\t\t\t\tif (hasClientId && hasClientSecret && isEnabled) {\n\t\t\t\t\t\t\tthis.configuredProviders.social.push(provider);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t// Cache the providers for 5 minutes\n\t\t\t\ttry {\n\t\t\t\t\tlocalStorage.setItem(cacheKey, JSON.stringify({\n\t\t\t\t\t\tproviders: this.configuredProviders,\n\t\t\t\t\t\ttimestamp: Date.now()\n\t\t\t\t\t}));\n\t\t\t\t} catch (error) {\n\t\t\t\t\t// Ignore cache errors\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\t// Silently handle errors\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} 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: 3000 // 3 second timeout for faster failure\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\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(() => {});\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\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'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};\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'].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'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};\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\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} else if (provider === 'recaptcha' || provider === 'grecaptcha') {\n\t\t\t\t\t\t\t// Disable hCaptcha\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\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// 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\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.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;\">Logging Settings</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: 13px;\">Logs user enumeration attempts to AIO Login Activity Logs for monitoring and Fail2Ban integration.</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;\">Enumeration Attempts Logs</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>\nexport default {\n\tname: 'enumeration-protection-logs',\n\n\tdata: () => ({\n\t\thas_pro: false,\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\tmounted() {\n\t\tthis.loadProStatus();\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\tloadProStatus() {\n\t\t\t// Check if pro plugin is active by checking the user enumeration settings\n\t\t\taxios.get('aio-login/dashboard/user-enumeration-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.has_pro = data.has_pro === 'true';\n\t\t\t\t\t\t\n\t\t\t\t\t\t// If pro plugin is active, load real logs data\n\t\t\t\t\t\tif (this.has_pro) {\n\t\t\t\t\t\t\tthis.loadRealLogs();\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 pro status:', error);\n\t\t\t\t});\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\tthis.$parent.$parent.popup = true;\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<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<span class=\"aio-login-header-version\">Version: {{ version }}</span>\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\" :class=\"is_pro_class\" :style=\"backgroundColor\">\n\n\t\t\t\t<div v-if=\"hasSubTabs()\">\n\n\t\t\t\t\t<aio-login-sub-tabs\n\t\t\t\t\t\t:sub-tabs=\"sub_tabs\"\n\t\t\t\t\t></aio-login-sub-tabs>\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<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</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\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: false,\n\t} ),\n\n\tcomputed: {\n\t\tbackgroundColor() {\n\t\t\tif ( this.isGetPro() ) {\n\t\t\t\treturn {\n\t\t\t\t\tbackgroundImage: 'radial-gradient(128.97% 130.43% at 126.02% 137.76%, #B480F8 0%, #141B34 100%)',\n          position: 'relative',\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\treturn {\n\t\t\t\t\tbackgroundImage: '#ffffff',\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\n    is_pro_class() {\n      return {\n        'aio-login__pro-container': this.isGetPro(),\n      };\n    }\n\t},\n\n\tmethods: {\n\t\tgetTabs() {\n\t\t\tthis.tabs = Object.values( window.aio_login__object.tabs );\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\tclosePopup() {\n\t\t\tthis.popup = false;\n\t\t}\n\t},\n\n\tmounted() {\n\t\tthis.getTabs();\n\n\t\tthis.getSubTabs();\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\tline-height: 100px;\n\tfont-weight: 400;\n\tfont-size: 14px;\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__pro-container::before {\n  content: '';\n  position: absolute;\n  left: 0;\n  right: 0;\n  width: 100%;\n  height: 100%;\n  background: url(../../images/aoibg.svg);\n  z-index: 1;\n}\n\n.aio-login__pro-container .aio-login__content-wrapper {\n  position: relative;\n  z-index: 2;\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\">\n\t\t\t\t<slot name=\"version\"></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\t:style=\"( tab['is-pro'] ? 'padding-top: 16px;' : 'padding: 15px 24px;' )\"\n\t\t>\n\t\t\t<img\n\t\t\t\talt=\"icon\"\n\t\t\t\t:src=\"getSrc( tab )\"\n\t\t\t\t:style=\"getStyle( tab )\"\n\t\t\t/>\n\t\t\t{{ tab.title }}\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\thasPro: 'true' === window.aio_login__app_object.has_pro,\n\t} ),\n\n\twatch: {\n\t\ttest_tab( value ) {\n\t\t\tif ( this.isset( value['is-pro'] ) && this.isset( value['plan'] ) ) {\n\t\t\t\tthis.$parent.current_is_pro = true;\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 ( 'getpro' === tab.slug ) {\n\t\t\t\treturn this.assetsUrl + `images/icons/${ tab.icon }.png`;\n\t\t\t}\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\tgetStyle( tab ) {\n\t\t\tif ( 'dashboard' === tab.slug ) {\n\t\t\t\treturn {\n\t\t\t\t\tmarginBottom: '-5px',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif ( 'getpro' === tab.slug ) {\n\t\t\t\treturn {\n\t\t\t\t\tmarginBottom: '-2px',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tmarginBottom: '-7px'\n\t\t\t};\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: 13px 24px;\n\tcolor: #7691B2;\n\tfont-weight: 600;\n\tfont-size: 16px;\n\ttext-decoration: none;\n\tbackground: #F8F8F8;\n\tdisplay: inline-block;\n\tmargin-right: 2px;\n\tborder-radius: 4px 4px 0 0;\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\twidth: 40px;\n\tjustify-content: center;\n\tbackground: linear-gradient(180deg, #6E16DF 0%, #510C79 121.05%);\n\tborder-radius: 2px;\n\ttext-align: center;\n\tcolor: #ffce50;\n\tfont-family: Figtree;\n\tfont-size: 12.88px;\n\tfont-weight: 600;\n\ttext-transform: uppercase;\n\theight: 20px;\n\talign-items: center;\n\tmargin-left: 10px !important;\n}\n\n.aio-login__link-wrapper.getpro {\n\tbackground-image: linear-gradient(180deg, #6D16DF 0%, #490F95 100%);\n\tcolor: #fff;\n}\n\n</style>","<template>\n\t<div class=\"aio-login__subtabs-container\">\n\t\t<router-link\n\t\t\tv-for=\"(subTab, index) in subTabs\"\n\t\t\t:to=\"subTab.slug\"\n\t\t\tclass=\"aio-login__subtab\"\n\t\t\tactive-class=\"active\"\n\t\t\t>\n\t\t\t{{ subTab.title }}\n\t\t\t<span class=\"aio-login__pro-tab\" v-if=\"subTab['is-pro']\">PRO</span>\n\t\t</router-link>\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</script>\n\n<style scoped>\n.aio-login__subtabs-container {\n\theight: 48px;\n\tborder-bottom: 1px solid #e8e8e8;\n}\n\n.aio-login__subtab {\n\tpadding: 13px 24px;\n\tcolor: #7691B2;\n\tfont-weight: 600;\n\tfont-size: 16px;\n\ttext-decoration: none;\n\tline-height: 50px;\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\twidth: 40px;\n\tjustify-content: center;\n\tbackground: linear-gradient(180deg, #6E16DF 0%, #510C79 121.05%);\n\tborder-radius: 2px;\n\ttext-align: center;\n\tcolor: #ffce50;\n\tfont-family: Figtree;\n\tfont-size: 12.88px;\n\tfont-weight: 600;\n\ttext-transform: uppercase;\n\theight: 20px;\n\talign-items: center;\n\tmargin-left: 10px !important;\n}\n</style>","<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 + '&tab=customization'\">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;\">{{ title }}</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: 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>Google reCAPTCHA</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>\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\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>\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<button class=\"close-btn\" @click=\"closePopup\">&times;</button>\n\t\t\t</div>\n\n\t\t\t<!-- Step Indicators -->\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\t\t\t\t\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<!-- Step 1: Getting Started -->\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 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>\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://www.google.com/recaptcha/admin\" 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://aiologin.com/docs/wordpress-login-security/setting-up-google-recaptcha/\" 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. After getting the Google reCAPTCHA Site Key and Secret Key, click Next to input these credentials.</p>\n\t\t\t</div>\n\n\t\t\t<!-- Step 2: Configuration -->\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 credentials for Google reCAPTCHA to authenticate and configure the login process.\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=\"recaptcha-version\" class=\"aio-login-pro__form-label\">\n\t\t\t\t\t\t\tChoose reCAPTCHA version:\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<select id=\"recaptcha-version\" v-model=\"formData.version\" @change=\"onVersionChange\" class=\"aio-login-pro__form-input\">\n\t\t\t\t\t\t\t<option value=\"v2\">V2</option>\n\t\t\t\t\t\t\t<option value=\"v3\">V3</option>\n\t\t\t\t\t\t</select>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\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=\"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=\"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=\"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=\"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<!-- Step 3: Settings -->\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\tConfigure the settings for your Google reCAPTCHA integration.\n\t\t\t\t</p>\n\t\t\t\t<div class=\"aio-login-pro__step3__layout\">\n\t\t\t\t\t<!-- Settings Column -->\n\t\t\t\t\t<div class=\"aio-login-pro__step3__column\">\n\t\t\t\t\t\t<!-- V2 Settings -->\n\t\t\t\t\t\t<div v-if=\"formData.version === 'v2'\" class=\"aio-login-pro__form-group\">\n\t\t\t\t\t\t\t<label for=\"theme\" class=\"aio-login-pro__form-label\">Theme:</label>\n\t\t\t\t\t\t\t<select id=\"theme\" v-model=\"formData.theme\" class=\"aio-login-pro__form-input\">\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\n\t\t\t\t\t\t<!-- V3 Settings -->\n\t\t\t\t\t\t<div v-if=\"formData.version === 'v3'\" class=\"aio-login-pro__form-group\">\n\t\t\t\t\t\t\t<label for=\"threshold\" class=\"aio-login-pro__form-label\">Threshold Score:</label>\n\t\t\t\t\t\t\t<select id=\"threshold\" v-model=\"formData.threshold\" class=\"aio-login-pro__form-input\">\n\t\t\t\t\t\t\t\t<option value=\"0.1\">0.1</option>\n\t\t\t\t\t\t\t\t<option value=\"0.2\">0.2</option>\n\t\t\t\t\t\t\t\t<option value=\"0.3\">0.3</option>\n\t\t\t\t\t\t\t\t<option value=\"0.4\">0.4</option>\n\t\t\t\t\t\t\t\t<option value=\"0.5\">0.5 (Default)</option>\n\t\t\t\t\t\t\t\t<option value=\"0.6\">0.6</option>\n\t\t\t\t\t\t\t\t<option value=\"0.7\">0.7</option>\n\t\t\t\t\t\t\t\t<option value=\"0.8\">0.8</option>\n\t\t\t\t\t\t\t\t<option value=\"0.9\">0.9</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<!-- Navigation buttons -->\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-recaptcha-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\tcurrentStep: 1,\n\t\t\tshowValidationError: false,\n\t\t\tformData: {\n\t\t\t\tversion: 'v2',\n\t\t\t\tsiteKey: '',\n\t\t\t\tsecretKey: '',\n\t\t\t\ttheme: 'light',\n\t\t\t\tthreshold: '0.5'\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\tthis.showValidationError = false;\n\t\t\t\t// Prevent body scroll when modal is open\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\t// Restore body scroll when modal is closed\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\tonVersionChange() {\n\t\t\t// Reset keys when version changes\n\t\t\tthis.formData.siteKey = '';\n\t\t\tthis.formData.secretKey = '';\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/* Exact copy of pro plugin social login popup styling */\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\ttext-align: right;\n\tpadding-bottom: 60px;\n}\n\n.popup-steps {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\tmargin-bottom: 20px;\n\twidth: 100%;\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.popup-footer-right {\n\ttext-align: left;\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}\n\n.connector {\n\theight: 2px;\n\twidth: 100%;\n\tbackground-color: #C9D2E3;\n\tmargin-top: 20px;\n}\n\n.step-container {\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\twidth: 100px;\n\tposition: relative;\n}\n\n.step-container h4 {\n\tposition: absolute;\n\ttop: -60px;\n\tfont-size: 13px;\n\tfont-weight: bold;\n\tcolor: #9516DF;\n}\n\n/* First Step Styling */\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/* Step 2 Styling */\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/* Dropdown specific styling */\n.aio-login-pro__form-input[type=\"text\"] {\n\tpadding: 10px 35px 10px 10px;\n}\n\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/* Step 3 Styling */\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.aio-login-pro__step3__image-column {\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n}\n\n.aio-login-pro__step3__image {\n\twidth: 100px;\n\theight: 100px;\n\tobject-fit: contain;\n}\n\n/* Input with delete button */\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\n/* Global overrides for pro plugin compatibility */\nbody.aio-login-modal-open {\n\toverflow: hidden !important;\n}\n\n/* Ensure modal is always on top */\n.popup-overlay * {\n\tbox-sizing: border-box !important;\n}\n</style>","<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=\"!hasPro\" class=\"aio-login__pro-tag\">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>hCaptcha</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>\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\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\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-tag {\n\tposition: absolute;\n\ttop: 8px;\n\tleft: 8px;\n\tdisplay: inline-flex;\n\twidth: 40px;\n\tjustify-content: center;\n\tbackground: linear-gradient(180deg, #6E16DF 0%, #510C79 121.05%);\n\tborder-radius: 2px;\n\ttext-align: center;\n\tcolor: #ffce50;\n\tfont-family: Figtree;\n\tfont-size: 12.88px;\n\tfont-weight: 600;\n\ttext-transform: uppercase;\n\theight: 20px;\n\talign-items: center;\n\tz-index: 101;\n\tbox-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\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>\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<button class=\"close-btn\" @click=\"closePopup\">&times;</button>\n\t\t\t</div>\n\n\t\t\t<!-- Step Indicators -->\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\t\t\t\t\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<!-- Step 1: Getting Started -->\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 hCaptcha 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://dashboard.hcaptcha.com/signup\" 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://aiologin.com/docs/wordpress-login-security/setting-up-hcaptcha/\" 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<!-- Step 2: Configuration -->\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 hCaptcha 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=\"hcaptcha-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=\"hcaptcha-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=\"hcaptcha-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=\"hcaptcha-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<!-- Step 3: Other Settings -->\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=\"hcaptcha-language\" class=\"aio-login-pro__form-label\">Language for Captcha:</label>\n\t\t\t\t\t\t\t<select id=\"hcaptcha-language\" v-model=\"formData.language\" class=\"aio-login-pro__form-input\">\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=\"af\">Afrikaans</option>\n\t\t\t\t\t\t\t\t<option value=\"am\">Amharic</option>\n\t\t\t\t\t\t\t\t<option value=\"hy\">Armenian</option>\n\t\t\t\t\t\t\t\t<option value=\"az\">Azerbaijani</option>\n\t\t\t\t\t\t\t\t<option value=\"eu\">Basque</option>\n\t\t\t\t\t\t\t\t<option value=\"bn\">Bengali</option>\n\t\t\t\t\t\t\t\t<option value=\"bg\">Bulgarian</option>\n\t\t\t\t\t\t\t\t<option value=\"ca\">Catalan</option>\n\t\t\t\t\t\t\t\t<option value=\"zh-HK\">Chinese (Hong Kong)</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\t<option value=\"hr\">Croatian</option>\n\t\t\t\t\t\t\t\t<option value=\"cs\">Czech</option>\n\t\t\t\t\t\t\t\t<option value=\"da\">Danish</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=\"et\">Estonian</option>\n\t\t\t\t\t\t\t\t<option value=\"fil\">Filipino</option>\n\t\t\t\t\t\t\t\t<option value=\"fi\">Finnish</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=\"gl\">Galician</option>\n\t\t\t\t\t\t\t\t<option value=\"ka\">Georgian</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=\"el\">Greek</option>\n\t\t\t\t\t\t\t\t<option value=\"gu\">Gujarati</option>\n\t\t\t\t\t\t\t\t<option value=\"iw\">Hebrew</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=\"hu\">Hungarian</option>\n\t\t\t\t\t\t\t\t<option value=\"is\">Icelandic</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=\"kn\">Kannada</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=\"lo\">Lao</option>\n\t\t\t\t\t\t\t\t<option value=\"lv\">Latvian</option>\n\t\t\t\t\t\t\t\t<option value=\"lt\">Lithuanian</option>\n\t\t\t\t\t\t\t\t<option value=\"ms\">Malay</option>\n\t\t\t\t\t\t\t\t<option value=\"ml\">Malayalam</option>\n\t\t\t\t\t\t\t\t<option value=\"mr\">Marathi</option>\n\t\t\t\t\t\t\t\t<option value=\"mn\">Mongolian</option>\n\t\t\t\t\t\t\t\t<option value=\"my\">Myanmar</option>\n\t\t\t\t\t\t\t\t<option value=\"ne\">Nepali</option>\n\t\t\t\t\t\t\t\t<option value=\"no\">Norwegian</option>\n\t\t\t\t\t\t\t\t<option value=\"fa\">Persian</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=\"ro\">Romanian</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=\"sr\">Serbian</option>\n\t\t\t\t\t\t\t\t<option value=\"si\">Sinhalese</option>\n\t\t\t\t\t\t\t\t<option value=\"sk\">Slovak</option>\n\t\t\t\t\t\t\t\t<option value=\"sl\">Slovenian</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=\"sw\">Swahili</option>\n\t\t\t\t\t\t\t\t<option value=\"sv\">Swedish</option>\n\t\t\t\t\t\t\t\t<option value=\"ta\">Tamil</option>\n\t\t\t\t\t\t\t\t<option value=\"te\">Telugu</option>\n\t\t\t\t\t\t\t\t<option value=\"th\">Thai</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=\"zu\">Zulu</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=\"hcaptcha-theme\" class=\"aio-login-pro__form-label\">Theme:</label>\n\t\t\t\t\t\t\t<select id=\"hcaptcha-theme\" v-model=\"formData.theme\" class=\"aio-login-pro__form-input\">\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=\"hcaptcha-size\" class=\"aio-login-pro__form-label\">Size:</label>\n\t\t\t\t\t\t\t<select id=\"hcaptcha-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</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<!-- Navigation buttons -->\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-hcaptcha-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\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: 'light',\n\t\t\t\tsize: 'normal',\n\t\t\t\tlanguage: 'en'\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 = 'light';\n\t\t\t\tif (!this.formData.size) this.formData.size = 'normal';\n\t\t\t\tif (!this.formData.language) this.formData.language = 'en';\n\t\t\t\tthis.showValidationError = false;\n\t\t\t\t// Prevent body scroll when modal is open\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\t// Restore body scroll when modal is closed\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/* Exact copy of pro plugin social login popup styling */\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\ttext-align: right;\n\tpadding-bottom: 60px;\n}\n\n.popup-steps {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\tmargin-bottom: 20px;\n\twidth: 100%;\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}\n\n.connector {\n\theight: 2px;\n\twidth: 100%;\n\tbackground-color: #C9D2E3;\n\tmargin-top: 20px;\n}\n\n.step-container {\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\twidth: 100px;\n\tposition: relative;\n}\n\n.step-container h4 {\n\tposition: absolute;\n\ttop: -60px;\n\tfont-size: 13px;\n\tfont-weight: bold;\n\tcolor: #9516DF;\n}\n\n/* First Step Styling */\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/* Step 2 Styling */\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\tpadding: 10px 35px 10px 10px;\n}\n\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/* Step 3 Styling */\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 button */\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\n/* Global overrides for pro plugin compatibility */\nbody.aio-login-modal-open {\n\toverflow: hidden !important;\n}\n\n/* Ensure modal is always on top */\n.popup-overlay * {\n\tbox-sizing: border-box !important;\n}\n</style>\n\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\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}\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\t<div v-if=\"!woocommerceActive\" class=\"woocommerce-required-notice\">\n\t\t\t\t<p>WooCommerce Required</p>\n\t\t\t</div>\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>\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\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\twidth: 40px;\n\tjustify-content: center;\n\tbackground: linear-gradient(180deg, #6E16DF 0%, #510C79 121.05%);\n\tborder-radius: 2px;\n\ttext-align: center;\n\tcolor: #ffce50;\n\tfont-family: Figtree;\n\tfont-size: 12.88px;\n\tfont-weight: 600;\n\ttext-transform: uppercase;\n\theight: 20px;\n\talign-items: center;\n\tz-index: 101;\n\tbox-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\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 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>\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 class=\"aio-login__configuration-select\" v-model=\"limit_login_attempts\" @change=\"limitLoginAttempts\">\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=\"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-tfa\"\n\t\t\t\t\t\t\t\tname=\"toggle-tfa\"\n\t\t\t\t\t\t\t\t:disabled=\"! has_pro\"\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\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\tlimitLoginAttempts() {\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\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=security#/2fa';\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\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-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>Recent Activity</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>\nexport default {\n\tname: 'aio-login-recent-activity',\n\n\tdata: () => ( {\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<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-content\">\n\t\t<h1 class=\"text-center\">All-In-One Login <span>PRO</span> Features 👑</h1>\n\n    <div>\n      <div class=\"aio-login__features\" v-for=\"feature in features\">\n        <div class=\"aio-login__feature\" v-for=\"feature_row in feature\">\n          <img :src=\"assetsUrl + 'images/features/' + feature_row.img\" :alt=\"feature_row.img\">\n          <h3 class=\"aio-login__feature-title\">{{ feature_row.title }}</h3>\n          <p class=\"aio-login__feature-desc\">{{ feature_row.description }}</p>\n        </div>\n      </div>\n    </div>\n\n\t\t<div class=\"text-center mb-25 mt-25\">\n\t\t\t<a\n\t\t\t\tclass=\"aio-login__get-pro-btn text-center\"\n\t\t\t\thref=\"https://aiologin.com/pricing/?utm_source=plugin&utm_medium=get_pro_tab&utm_campaign=plugin\"\n\t\t\t>Get AIO Login Pro</a>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'aio-login-get-pro',\n\n\tsetup: () => ( {\n\t\tfeatures: [\n      [\n        {\n          img: 'ban-user-ip.svg',\n          title: 'Ban User / IP',\n          description: 'Instantly ban WordPress user IP addresses to prevent unauthorized access',\n        },\n        {\n          img: '2fa.svg',\n          title: 'App Based 2FA',\n          description: 'Enable two-factor authentication via mobile apps for added security',\n        },\n        {\n          img: 'temp-access-link.svg',\n          title: 'Temp Access URL',\n          description: 'Generate WordPress temp access URL for specific users.',\n        },\n        {\n          img: 'social-login.svg',\n          title: 'Social Login',\n          description: 'Easily connect your site using popular social accounts like Facebook, Microsoft, Google, and more.',\n        },\n      ],\n      [\n        {\n          img: 'customize-pro.svg',\n          title: 'Customize Design Pro',\n          description: 'Take login page customization further with pre-built templates.',\n        },\n        {\n          img: 'whitelist-ip.svg',\n          title: 'Whitelist IP Addresses',\n          description: 'Allow access to only whitelisted IP addresses to your WordPress login page.',\n        },\n        {\n          img: 'block-login-attempts.svg',\n          title: 'Block Login Attempts',\n          description: 'You can block any user or IP address from accessing your wp-login page.',\n        },\n      ],\n\t\t],\n\t} ),\n\n\tdata: () => ( {\n\t\tassetsUrl: aio_login__app_object.assets_url,\n\t} ),\n}\n</script>\n\n<style scoped>\n\n.aio-login__get-pro-content h1 {\n  color: #FFF;\n  font-family: Figtree;\n  font-size: 35.236px;\n  font-style: normal;\n  font-weight: 700;\n  line-height: 62.642px; /* 177.778% */\n}\n\n.aio-login__get-pro-content h1 span {\n  color: #FBBC09;\n}\n\n.text-center {\n\ttext-align: center;\n}\n.aio-login__get-pro-btn {\n\ttext-decoration: none;\n\n\tmargin-top: 20px;\n\tfont-weight: 600;\n\tfont-size: 18px;\n\tborder-radius: 4px;\n\n  animation: spin 2.5s infinite linear paused;\n  background: linear-gradient(to bottom, #000, #000) padding-box, conic-gradient(from var(--bg-angle) in oklch longer hue, #6013C3 0 0, #E56767 0 0, #00CC99 0 0, #FFC130 0 0) border-box !important;\n  border: 2px solid transparent;\n  animation-play-state: running;\n  color: #fff;\n  padding: 16px 49px;\n  display: inline-flex;\n  align-items: center;\n  gap: 10px;\n  line-height: 27px;\n}\n.aio-login__get-pro-btn::after {\n  content: \"\";\n  background: url(../../images/aoa-arrow.svg) no-repeat;\n  width: 40px;\n  height: 15px;\n}\n@property --bg-angle {\n  inherits: false;\n  initial-value: 0deg;\n  syntax: \"<angle>\";\n}\n@keyframes spin {\n  to {\n    --bg-angle: 360deg;\n  }\n}\n\n.aio-login__feature-title {\n  color: #FFF;\n  leading-trim: both;\n  text-edge: cap;\n  font-family: Figtree;\n  font-size: 26px;\n  font-style: normal;\n  font-weight: 700;\n  line-height: 62.642px; /* 240.932% */\n  margin-top: 0;\n  margin-bottom: 22px;\n}\n\n.aio-login__feature-desc {\n  color: #EBC8FF;\n  leading-trim: both;\n  text-edge: cap;\n  font-family: Figtree;\n  font-size: 16px;\n  font-style: normal;\n  font-weight: 500;\n  line-height: normal;\n  margin-top: 0;\n}\n\n.aio-login__feature {\n  width: 305px;\n  margin-right: 80px;\n}\n\n.aio-login__feature:last-child {\n  margin-right: 0;\n}\n\n.aio-login__features {\n  display: flex;\n  flex-direction: row;\n  justify-content: center;\n  margin-bottom: 20px;\n}\n\n.aio-login__features:last-child {\n  margin-bottom: 0;\n}\n\n</style>","<template>\n\t<div class=\"aio-login__popup-wrapper\">\n\t\t<div class=\"aio-login__popup-container\" :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\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\tborder: none;\n\tfont-size: 24px;\n\tcolor: #333;\n\tcursor: 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>\n\t\t<aio-login-popup width=\"576px\" height=\"340px\" content=\"nocontent\" 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\">\n\t\t\t\t\t<div class=\"text-center aio-login__popup-container\">\n\t\t\t\t\t\t<img :src=\"assets_url + 'images/dashboard-logo-white.png'\" alt=\"AIO Login Logo\">\n\n\t\t\t\t\t\t<h2 class=\"aio-login__title\">To access more features and options</h2>\n\n\t\t\t\t\t\t<a class=\"aio-login__button\" href=\"https://aiologin.com/pricing/?utm_source=plugin&utm_medium=pro_pop_up&utm_campaign=plugin\">Get AIO Login Pro</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}\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.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</style>","<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\tBlock IP Address\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</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>\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\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\tDisable Common Usernames\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</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>\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\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\tPassword Strength Checker\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</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>\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\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\tTemporary Access\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\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>\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\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\" @click=\"iWasTriggered\">\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>Templates</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<th>\n\t\t\t\t\t\t\t<label for=\"templates\">Templates</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<div class=\"aio-login-pro__templates\">\n\n\t\t\t\t\t\t\t\t<div v-for=\"template in templates\">\n\t\t\t\t\t\t\t\t\t<label :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<img :src=\"template.img\" :alt=\"template.name\">\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\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\t\t</div>\n\n\t\t<div v-if=\"! hasPro\" class=\"aio-login-t-content-overflow\"></div>\n\t</div>\n</template>\n\n<script>\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},\n\n\tdata: ( vm ) => ( {\n    assets_url: window.aio_login__app_object.assets_url,\n\t\ttemplates: [\n\t\t\t{\n\t\t\t\tid: 'default',\n\t\t\t\timg: window.aio_login__app_object.assets_url + 'images/templates/default.jpg',\n\t\t\t\tname: 'Default',\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'template-1',\n\t\t\t\timg: window.aio_login__app_object.assets_url + 'images/templates/template-01.jpg',\n\t\t\t\tname: 'Template 1',\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'template-2',\n        img: window.aio_login__app_object.assets_url + 'images/templates/template-02.jpg',\n\t\t\t\tname: 'Template 2',\n\t\t\t},\n\t\t],\n\n\t\tpage_loaded: false,\n\t} ),\n\n\tmethods: {\n\t\tiWasTriggered() {\n\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\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\n\tbackdrop-filter: blur(1px);\n}\n\n.aio-login-pro__templates {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n}\n\n.aio-login-pro__templates input[type=\"radio\"] {\n\tdisplay: none;\n}\n\n.aio-login-pro__templates img {\n\twidth: 200px;\n\theight: auto;\n\tborder: 2px solid transparent;\n\tmargin: 10px;\n\tcursor: pointer;\n}\n\n.aio-login-pro__templates input:checked + img {\n\tborder-color: #9416de;\n}\n</style>","<template>\n\t<div v-if=\"page_loaded\" style=\"position: relative;\" @click=\"iWasTriggered\">\n\t\t<aio-login-form action=\"nonce\" v-on:handle-submit=\"handleSubmit\">\n\t\t\t<template v-slot:title>\n\t\t\t\tTwo Factor Authentication\n\t\t\t</template>\n\t\t\t\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 Two Factor Authentication</label>\n\t\t\t\t\t</th>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<aio-login-toggle id=\"enable\" name=\"enable\" v-on:toggle-input=\"toggleInput\" :enabled=\"enable\" />\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\n\n\t\t<div style=\"position:absolute;top:0;left:0;width: 100%;height: 100%;backdrop-filter: blur(1px)\" v-if=\"! hasPro\">\n\n\t\t</div>\n\t</div>\n</template>\n\n<script>\n\nexport default {\n\tname: 'aio-login-two-factor-authentication',\n\n\tslug: '2fa',\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\tpage_loaded: false,\n\t\tenable: false,\n\t\tmodal: false,\n\t\tscreen_1: false,\n\t\tscreen_2: false,\n\n\t\tvalue_changed: false,\n\n\t\tqrcode: '',\n\t\tsecret: '',\n\t\tuser_enabled: false,\n\n\t\tnonce: '',\n\n\t\tform_data: {\n\t\t\tenabled: vm.enable,\n\t\t\totp: '',\n\t\t\tsecret: vm.secret,\n\t\t\tuser_id: '',\n\t\t}\n\t} ),\n\n\twatch: {\n\t\tenable( value ) {\n\t\t\tif ( value ) {\n\t\t\t\tthis.modal = true;\n\t\t\t}\n\n\t\t\tthis.value_changed = true;\n\t\t\tthis.form_data.enabled = value;\n\t\t},\n\n\t\tmodal( value ) {\n\t\t\tif ( value ) {\n\t\t\t\tthis.screen_1 = true;\n\t\t\t} else {\n\t\t\t\tthis.screen_1 = false;\n\t\t\t\tthis.screen_2 = false;\n\t\t\t}\n\t\t},\n\n\t\tsecret( v ) {\n\t\t\tthis.form_data.secret = v;\n\t\t}\n\t},\n\n\tmethods: {\n\t\tiWasTriggered() {\n\n\t\t\tthis.$parent.$parent.$parent.popup = true;\n\t\t},\n\t\tloadComponent() {\n\t\t\tthis.$nextTick( () => {\n\t\t\t\taxios.get( 'aio-login-pro/tfa/get-settings' )\n\t\t\t\t\t.then( response => {\n\t\t\t\t\t\tthis.page_loaded = true;\n\n\t\t\t\t\t\tthis.enable = response.data.enabled;\n\t\t\t\t\t\tthis.qrcode = response.data.qrcode_url;\n\t\t\t\t\t\tthis.secret = response.data.base32;\n\t\t\t\t\t\tthis.user_enabled = response.data.user_enabled;\n\t\t\t\t\t\tthis.form_data.user_id = response.data.user_id;\n\n\t\t\t\t\t\tthis.nonce = response.data.enable_nonce;\n\t\t\t\t\t} );\n\t\t\t} );\n\n\t\t},\n\n\t\ttoggleInput( e ) {\n\t\t\tthis.enable = e;\n\t\t},\n\n\t\tclosePopup() {\n\t\t\tthis.modal = false;\n\t\t\tthis.enable = false;\n\t\t},\n\n\t\tverifyTOTP( e ) {\n\t\t\te.preventDefault();\n\n\t\t\taxios.post( 'aio-login-pro/tfa/verify', this.form_data )\n\t\t\t\t.then()\n\t\t\t\t.catch( error => {\n\t\t\t\t} );\n\t\t},\n\n\t\thandleSubmit( e ) {\n\t\t\tlet allow = true;\n\t\t\tif ( ! this.form_data.enabled && this.value_changed ) {\n\t\t\t\tallow = confirm( 'Are you sure you want to disable Two Factor Authentication? It will be disabled for all users' );\n\t\t\t}\n\n\t\t\tif ( allow ) {\n\t\t\t\tthis.form_data['_wpnonce'] = this.nonce;\n\n\t\t\t\taxios.post( 'aio-login-pro/tfa/save-settings', this.form_data )\n\t\t\t\t\t.then( response => {\n\t\t\t\t\t\tthis.value_changed = false;\n\t\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\tthis.enable = true;\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__screen {\n\twidth: 100%;\n\theight: 400px;\n}\n\n/*\nslide-fade-new-screen\nslide-fade-prev-screen\n*/\n\n.slide-fade-new-screen-enter-active {\n\ttransition: all 0.3s ease;\n}\n\n.slide-fade-new-screen-leave-active {\n\ttransition: all 0.8s cubic-bezier(1, 0.5, 0.8, 1);\n}\n\n.slide-fade-new-screen-enter-from,\n.slide-fade-new-screen-leave-to {\n\ttransform: translateX(20px);\n\topacity: 0;\n}\n\n.slide-fade-prev-screen-enter-active {\n\ttransition: all 0.3s ease;\n}\n\n.slide-fade-prev-screen-leave-active {\n\ttransition: all 0.8s cubic-bezier(1, 0.5, 0.8, 1);\n}\n\n.slide-fade-prev-screen-enter-from,\n.slide-fade-prev-screen-leave-to {\n\ttransform: translateX(20px);\n\topacity: 0;\n}\n\n.aio-login__clearfix::after {\n\tclear: both;\n\tdisplay: table;\n\tcontent: '';\n}\n</style>","<template>\n\t<div v-if=\"page_loaded\" class=\"aio-login-t-wrapper\" @click=\"iWasTriggered\">\n\t\t<div>\n\t\t\t<h3>Social Login Settings</h3>\n\t\t</div>\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            ],\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 * {\n\tfont-family: Figtree;\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/* Force inline display for action buttons container */\ntd: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}"],"names":[],"sourceRoot":""}