@autenticar-me/vue 0.9.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +272 -56
- package/dist/components/Buttons/SignInButton.vue.d.ts +2 -2
- package/dist/components/Buttons/SignInButton.vue.d.ts.map +1 -1
- package/dist/components/Buttons/SignUpButton.vue.d.ts +2 -2
- package/dist/components/Buttons/SignUpButton.vue.d.ts.map +1 -1
- package/dist/components/Modals/SignInModal.vue.d.ts +5 -3
- package/dist/components/Modals/SignInModal.vue.d.ts.map +1 -1
- package/dist/components/Modals/SignUpModal.vue.d.ts +5 -3
- package/dist/components/Modals/SignUpModal.vue.d.ts.map +1 -1
- package/dist/components/SignIn.vue.d.ts +9 -3
- package/dist/components/SignIn.vue.d.ts.map +1 -1
- package/dist/components/SignUp.vue.d.ts +12 -3
- package/dist/components/SignUp.vue.d.ts.map +1 -1
- package/dist/index.cjs +243 -229
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +244 -230
- package/dist/index.js.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
(function() {
|
|
3
3
|
if (typeof document !== 'undefined') {
|
|
4
4
|
const style = document.createElement('style');
|
|
5
|
-
style.textContent = ":root {\n --atm-bg-primary: #ffffff;\n --atm-bg-secondary: #f8f9fa;\n --atm-bg-tertiary: #f0f0f0;\n\n --atm-text-primary: #333333;\n --atm-text-secondary: #666666;\n --atm-text-tertiary: #999999;\n --atm-text-muted: #888888;\n\n --atm-border-color: #dddddd;\n --atm-border-hover: #cccccc;\n\n --atm-input-bg: #ffffff;\n --atm-input-disabled: #f5f5f5;\n --atm-input-border: #dddddd;\n\n --atm-error-color: #dc3545;\n --atm-success-color: #28a745;\n\n --atm-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.1);\n --atm-shadow-md: 0 4px 6px rgba(0, 0, 0, 0.1);\n}\n\n.atm-theme-dark,\n:root.atm-theme-dark {\n --atm-bg-primary: #1a1a1a;\n --atm-bg-secondary: #2d2d2d;\n --atm-bg-tertiary: #404040;\n\n --atm-text-primary: #e0e0e0;\n --atm-text-secondary: #b0b0b0;\n --atm-text-tertiary: #808080;\n --atm-text-muted: #999999;\n\n --atm-border-color: #404040;\n --atm-border-hover: #505050;\n\n --atm-input-bg: #2d2d2d;\n --atm-input-disabled: #1f1f1f;\n --atm-input-border: #404040;\n\n --atm-error-color: #ff6b6b;\n --atm-success-color: #51cf66;\n\n --atm-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.3);\n --atm-shadow-md: 0 4px 6px rgba(0, 0, 0, 0.5);\n}\n\n.atm-overlay[data-v-5a315eca] {\n position: fixed;\n inset: 0;\n z-index: 99999;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(4px);\n overflow-y: auto;\n padding: 1.5rem 0;\n}\n.atm-container[data-v-5a315eca] {\n padding: 0 1.5rem;\n width: 100%;\n margin: auto;\n}\n.atm-fade-layer[data-v-5a315eca] {\n position: fixed;\n inset: 0;\n transition: opacity 0.2s ease;\n pointer-events: none;\n}\n.atm-fade-bg[data-v-5a315eca] {\n position: absolute;\n inset: 0;\n opacity: 0.75;\n}\n.atm-modal[data-v-5a315eca] {\n position: relative;\n display: inline-block;\n vertical-align: bottom;\n background-color: var(--atm-bg-primary);\n border-radius: 0.5rem;\n text-align: left;\n box-shadow: var(--atm-shadow-md);\n transform: translate(0);\n transition: all 0.2s ease-in-out;\n max-width: 32rem;\n width: 100%;\n max-height: calc(100vh - 3rem);\n display: flex;\n flex-direction: column;\n}\n.atm-close-button[data-v-5a315eca] {\n position: absolute;\n top: 1rem;\n right: 1rem;\n color: var(--atm-text-tertiary);\n background: transparent;\n border: none;\n cursor: pointer;\n padding: 0.25rem;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10;\n transition: color 0.2s;\n}\n.atm-close-button[data-v-5a315eca]:hover {\n color: var(--atm-text-secondary);\n}\n.atm-icon[data-v-5a315eca] {\n width: 1.5rem;\n height: 1.5rem;\n}\n.atm-modal-content[data-v-5a315eca] {\n padding: 1.25rem;\n overflow-y: auto;\n flex: 1;\n min-height: 0;\n}\n.atm-modal-title[data-v-5a315eca] {\n font-size: 1.125rem;\n font-weight: 500;\n color: var(--atm-text-primary);\n margin: 0;\n margin-bottom: 0.75rem;\n}\n@media (max-width: 768px) {\n.atm-overlay[data-v-5a315eca] {\n padding: 1rem 0;\n}\n.atm-container[data-v-5a315eca] {\n padding: 0 1rem;\n}\n.atm-modal[data-v-5a315eca] {\n border-radius: 0.375rem;\n max-height: calc(100vh - 2rem);\n}\n.atm-modal-content[data-v-5a315eca] {\n padding: 1rem;\n}\n.atm-modal-title[data-v-5a315eca] {\n font-size: 1rem;\n margin-bottom: 0.75rem;\n}\n.atm-close-button[data-v-5a315eca] {\n top: 0.75rem;\n right: 0.75rem;\n}\n.atm-icon[data-v-5a315eca] {\n width: 1.25rem;\n height: 1.25rem;\n}\n}\n@media (max-width: 480px) {\n.atm-overlay[data-v-5a315eca] {\n padding: 0.5rem 0;\n}\n.atm-container[data-v-5a315eca] {\n padding: 0 0.5rem;\n}\n.atm-modal[data-v-5a315eca] {\n border-radius: 0.25rem;\n max-width: 100%;\n max-height: calc(100vh - 1rem);\n}\n.atm-modal-content[data-v-5a315eca] {\n padding: 0.875rem;\n}\n.atm-modal-title[data-v-5a315eca] {\n font-size: 0.9375rem;\n margin-bottom: 0.625rem;\n}\n.atm-close-button[data-v-5a315eca] {\n top: 0.5rem;\n right: 0.5rem;\n}\n}\n@media (max-width: 360px) {\n.atm-overlay[data-v-5a315eca] {\n padding: 0.25rem 0;\n}\n.atm-container[data-v-5a315eca] {\n padding: 0 0.25rem;\n}\n.atm-modal[data-v-5a315eca] {\n max-height: calc(100vh - 0.5rem);\n}\n.atm-modal-content[data-v-5a315eca] {\n padding: 0.75rem;\n}\n.atm-modal-title[data-v-5a315eca] {\n font-size: 0.875rem;\n margin-bottom: 0.5rem;\n}\n}\n\n.atm-login-container[data-v-4e744a2c] {\n background: var(--atm-bg-primary);\n border-radius: 8px;\n font-family: 'Segoe UI', system-ui, sans-serif;\n text-align: center;\n}\n.atm-logo-container[data-v-4e744a2c] {\n margin-bottom: 12px;\n}\n.atm-logo-placeholder[data-v-4e744a2c] {\n width: 44px;\n height: 44px;\n margin: 0 auto;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--atm-bg-tertiary);\n border-radius: 50%;\n color: var(--atm-text-muted);\n font-size: 11px;\n}\n.atm-logo-image[data-v-4e744a2c] {\n max-width: 44px;\n max-height: 44px;\n margin: 0 auto;\n display: block;\n border-radius: 4px;\n object-fit: contain;\n}\n.atm-project-name[data-v-4e744a2c] {\n margin: 0 0 4px 0;\n font-size: 18px;\n color: var(--v68f877d9);\n font-weight: 600;\n}\n.atm-welcome-text[data-v-4e744a2c] {\n margin: 0 0 16px 0;\n font-size: 14px;\n color: var(--atm-text-secondary);\n}\n.atm-form-group[data-v-4e744a2c] {\n margin-bottom: 12px;\n text-align: left;\n}\n.atm-input-label[data-v-4e744a2c] {\n display: block;\n margin-bottom: 4px;\n font-size: 13px;\n color: var(--atm-text-primary);\n font-weight: 500;\n}\n.atm-input-field[data-v-4e744a2c] {\n width: 100%;\n padding: 8px 10px;\n background: var(--atm-input-bg);\n color: var(--atm-text-primary);\n border: 1px solid var(--atm-input-border);\n border-radius: 6px;\n font-size: 14px;\n box-sizing: border-box;\n transition: border-color 0.2s;\n}\n.atm-input-field[data-v-4e744a2c]:focus {\n outline: none;\n border-color: var(--v68f877d9);\n box-shadow: 0 0 0 2px rgba(74, 144, 226, 0.1);\n}\n.atm-input-field[data-v-4e744a2c]:disabled {\n background-color: var(--atm-input-disabled);\n cursor: not-allowed;\n}\n.atm-field-error[data-v-4e744a2c] {\n color: var(--atm-error-color);\n font-size: 12px;\n margin-top: 4px;\n text-align: left;\n}\n.atm-alternative-options[data-v-4e744a2c] {\n margin-top: 8px;\n text-align: center;\n}\n.atm-forgot-password-link[data-v-4e744a2c] {\n font-size: 12px;\n background: none;\n border: none;\n color: var(--v358114b2);\n cursor: pointer;\n text-decoration: none;\n padding: 0;\n font-family: inherit;\n}\n.atm-forgot-password-link[data-v-4e744a2c]:hover:not(:disabled) {\n text-decoration: underline;\n}\n.atm-forgot-password-link[data-v-4e744a2c]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.atm-strategy-choice[data-v-4e744a2c] {\n text-align: center;\n margin-bottom: 12px;\n}\n.atm-strategy-title[data-v-4e744a2c] {\n font-size: 14px;\n color: var(--atm-text-secondary);\n margin-bottom: 12px;\n}\n.atm-strategy-buttons[data-v-4e744a2c] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.atm-strategy-button[data-v-4e744a2c] {\n width: 100%;\n padding: 10px;\n background: var(--atm-bg-secondary);\n color: var(--atm-text-primary);\n border: 1px solid var(--atm-border-color);\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n transition: all 0.2s;\n}\n.atm-strategy-button[data-v-4e744a2c]:hover:not(:disabled) {\n background: var(--atm-bg-tertiary);\n border-color: var(--v68f877d9);\n}\n.atm-strategy-button[data-v-4e744a2c]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.atm-email-link-text[data-v-4e744a2c] {\n font-size: 14px;\n color: var(--atm-text-secondary);\n margin: 0;\n text-align: center;\n}\n.atm-login-button[data-v-4e744a2c] {\n width: 100%;\n padding: 10px;\n margin-top: 4px;\n background: var(--v68f877d9);\n color: #ffffff;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s;\n min-height: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.atm-login-button[data-v-4e744a2c]:hover:not(:disabled) {\n opacity: 0.9;\n transform: translateY(-1px);\n}\n.atm-login-button[data-v-4e744a2c]:disabled {\n opacity: 0.8;\n cursor: not-allowed;\n transform: none;\n}\n.button-spinner[data-v-4e744a2c] {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n color: #fff;\n font-weight: 500;\n}\n.spinner-svg[data-v-4e744a2c] {\n animation: spin-4e744a2c 1s linear infinite;\n width: 18px;\n height: 18px;\n stroke: #fff;\n}\n.spinner-circle[data-v-4e744a2c] {\n stroke-dasharray: 90, 150;\n stroke-linecap: round;\n}\n@keyframes spin-4e744a2c {\n0% {\n transform: rotate(0deg);\n}\n100% {\n transform: rotate(360deg);\n}\n}\n.atm-footer-links[data-v-4e744a2c] {\n margin-top: 16px;\n font-size: 13px;\n}\n.atm-signup-text[data-v-4e744a2c] {\n color: var(--atm-text-secondary);\n margin-bottom: 6px;\n}\n.atm-signup-link[data-v-4e744a2c] {\n color: var(--v358114b2);\n text-decoration: none;\n cursor: pointer;\n}\n.atm-signup-link[data-v-4e744a2c]:hover {\n text-decoration: underline;\n}\n.atm-powered-by[data-v-4e744a2c] {\n color: var(--atm-text-tertiary);\n font-size: 11px;\n margin: 0;\n}\n@media (max-width: 768px) {\n.atm-project-name[data-v-4e744a2c] {\n font-size: 17px;\n}\n.atm-welcome-text[data-v-4e744a2c] {\n font-size: 13px;\n margin-bottom: 14px;\n}\n.atm-form-group[data-v-4e744a2c] {\n margin-bottom: 10px;\n}\n.atm-input-label[data-v-4e744a2c] {\n font-size: 12px;\n margin-bottom: 4px;\n}\n.atm-input-field[data-v-4e744a2c] {\n padding: 8px 10px;\n font-size: 13px;\n}\n.atm-login-button[data-v-4e744a2c] {\n font-size: 13px;\n padding: 9px;\n min-height: 40px;\n}\n.atm-strategy-button[data-v-4e744a2c] {\n padding: 9px;\n font-size: 13px;\n}\n.atm-footer-links[data-v-4e744a2c] {\n margin-top: 14px;\n font-size: 12px;\n}\n}\n@media (max-width: 480px) {\n.atm-logo-placeholder[data-v-4e744a2c] {\n width: 40px;\n height: 40px;\n font-size: 10px;\n}\n.atm-logo-image[data-v-4e744a2c] {\n max-width: 40px;\n max-height: 40px;\n}\n.atm-project-name[data-v-4e744a2c] {\n font-size: 16px;\n margin-bottom: 4px;\n}\n.atm-welcome-text[data-v-4e744a2c] {\n font-size: 12px;\n margin-bottom: 12px;\n}\n.atm-form-group[data-v-4e744a2c] {\n margin-bottom: 10px;\n}\n.atm-input-label[data-v-4e744a2c] {\n font-size: 12px;\n margin-bottom: 3px;\n}\n.atm-input-field[data-v-4e744a2c] {\n padding: 7px 9px;\n font-size: 13px;\n}\n.atm-login-button[data-v-4e744a2c] {\n font-size: 13px;\n padding: 9px;\n min-height: 38px;\n}\n.atm-forgot-password-link[data-v-4e744a2c] {\n font-size: 11px;\n}\n.atm-strategy-title[data-v-4e744a2c] {\n font-size: 13px;\n margin-bottom: 10px;\n}\n.atm-strategy-button[data-v-4e744a2c] {\n padding: 9px;\n font-size: 13px;\n}\n.atm-email-link-text[data-v-4e744a2c] {\n font-size: 13px;\n}\n.atm-footer-links[data-v-4e744a2c] {\n margin-top: 12px;\n font-size: 12px;\n}\n.atm-powered-by[data-v-4e744a2c] {\n font-size: 10px;\n}\n.spinner-svg[data-v-4e744a2c] {\n width: 16px;\n height: 16px;\n}\n.button-spinner[data-v-4e744a2c] {\n gap: 6px;\n}\n}\n@media (max-width: 360px) {\n.atm-logo-placeholder[data-v-4e744a2c] {\n width: 36px;\n height: 36px;\n font-size: 9px;\n}\n.atm-logo-image[data-v-4e744a2c] {\n max-width: 36px;\n max-height: 36px;\n}\n.atm-project-name[data-v-4e744a2c] {\n font-size: 15px;\n margin-bottom: 3px;\n}\n.atm-welcome-text[data-v-4e744a2c] {\n font-size: 11px;\n margin-bottom: 10px;\n}\n.atm-form-group[data-v-4e744a2c] {\n margin-bottom: 8px;\n}\n.atm-input-label[data-v-4e744a2c] {\n font-size: 11px;\n margin-bottom: 3px;\n}\n.atm-input-field[data-v-4e744a2c] {\n padding: 6px 8px;\n font-size: 12px;\n}\n.atm-login-button[data-v-4e744a2c] {\n font-size: 12px;\n padding: 8px;\n min-height: 36px;\n}\n.atm-strategy-button[data-v-4e744a2c] {\n padding: 8px;\n font-size: 12px;\n}\n.atm-footer-links[data-v-4e744a2c] {\n margin-top: 10px;\n font-size: 11px;\n}\n.spinner-svg[data-v-4e744a2c] {\n width: 14px;\n height: 14px;\n}\n}\n\n.atm-notification-container[data-v-f5e47084] {\n font-family: Arial, Helvetica, sans-serif;\n position: fixed;\n top: 20px;\n right: 20px;\n z-index: 99999;\n pointer-events: none;\n}\n.atm-notification[data-v-f5e47084] {\n padding: 12px 16px;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n min-width: 250px;\n max-width: 350px;\n pointer-events: auto;\n}\n.atm-notification--error[data-v-f5e47084] {\n background: #ff3333;\n color: #FFF;\n}\n.atm-notification--success[data-v-f5e47084] {\n background: #00a622;\n color: #FFF;\n}\n.atm-notification--warning[data-v-f5e47084] {\n background: #ffa500;\n color: #FFF;\n}\n.atm-notification-enter-active[data-v-f5e47084] {\n transition: all 0.3s ease-out;\n}\n.atm-notification-leave-active[data-v-f5e47084] {\n transition: all 0.3s ease-in;\n}\n.atm-notification-enter-from[data-v-f5e47084] {\n transform: translateX(100%);\n opacity: 0;\n}\n.atm-notification-leave-to[data-v-f5e47084] {\n transform: translateX(100%);\n opacity: 0;\n}\n@media (max-width: 768px) {\n.atm-notification-container[data-v-f5e47084] {\n top: 16px;\n right: 16px;\n left: 16px;\n}\n.atm-notification[data-v-f5e47084] {\n min-width: auto;\n max-width: 100%;\n padding: 11px 14px;\n font-size: 13px;\n}\n}\n@media (max-width: 480px) {\n.atm-notification-container[data-v-f5e47084] {\n top: 12px;\n right: 12px;\n left: 12px;\n}\n.atm-notification[data-v-f5e47084] {\n padding: 10px 12px;\n font-size: 12px;\n border-radius: 5px;\n}\n}\n@media (max-width: 360px) {\n.atm-notification-container[data-v-f5e47084] {\n top: 10px;\n right: 10px;\n left: 10px;\n}\n.atm-notification[data-v-f5e47084] {\n padding: 9px 11px;\n font-size: 11px;\n border-radius: 4px;\n}\n}\n\n.atm-signup-container[data-v-9668f28a] {\n width: 100%;\n background: var(--atm-bg-primary);\n border-radius: 8px;\n font-family: 'Segoe UI', system-ui, sans-serif;\n text-align: center;\n}\n.atm-logo-container[data-v-9668f28a] {\n margin-bottom: 12px;\n}\n.atm-logo-placeholder[data-v-9668f28a] {\n width: 44px;\n height: 44px;\n margin: 0 auto;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--atm-bg-tertiary);\n border-radius: 50%;\n color: var(--atm-text-muted);\n font-size: 11px;\n}\n.atm-logo-image[data-v-9668f28a] {\n max-width: 44px;\n max-height: 44px;\n margin: 0 auto;\n display: block;\n border-radius: 4px;\n object-fit: contain;\n}\n.atm-project-name[data-v-9668f28a] {\n margin: 0 0 4px 0;\n font-size: 18px;\n color: var(--v1eb0b99e);\n font-weight: 600;\n}\n.atm-welcome-text[data-v-9668f28a] {\n margin: 0 0 16px 0;\n font-size: 14px;\n color: var(--atm-text-secondary);\n}\n.atm-form-group[data-v-9668f28a] {\n margin-bottom: 12px;\n text-align: left;\n}\n.atm-input-label[data-v-9668f28a] {\n display: block;\n margin-bottom: 4px;\n font-size: 13px;\n color: var(--atm-text-primary);\n font-weight: 500;\n}\n.atm-input-field[data-v-9668f28a] {\n width: 100%;\n padding: 8px 10px;\n background: var(--atm-input-bg);\n color: var(--atm-text-primary);\n border: 1px solid var(--atm-input-border);\n border-radius: 6px;\n font-size: 14px;\n box-sizing: border-box;\n transition: border-color 0.2s;\n}\n.atm-input-field[data-v-9668f28a]:focus {\n outline: none;\n border-color: var(--v1eb0b99e);\n box-shadow: 0 0 0 2px rgba(74, 144, 226, 0.1);\n}\n.atm-input-field[data-v-9668f28a]:disabled {\n background-color: var(--atm-input-disabled);\n cursor: not-allowed;\n}\n.atm-field-error[data-v-9668f28a] {\n color: var(--atm-error-color);\n font-size: 12px;\n margin-top: 4px;\n text-align: left;\n}\n.atm-signup-button[data-v-9668f28a] {\n width: 100%;\n padding: 10px;\n margin-top: 4px;\n background: var(--v1eb0b99e);\n color: #ffffff;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s;\n min-height: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.atm-signup-button[data-v-9668f28a]:hover:not(:disabled) {\n opacity: 0.9;\n transform: translateY(-1px);\n}\n.atm-signup-button[data-v-9668f28a]:disabled {\n opacity: 0.8;\n cursor: not-allowed;\n transform: none;\n}\n.button-spinner[data-v-9668f28a] {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n color: #fff;\n font-weight: 500;\n}\n.spinner-svg[data-v-9668f28a] {\n animation: spin-9668f28a 1s linear infinite;\n width: 18px;\n height: 18px;\n stroke: #fff;\n}\n.spinner-circle[data-v-9668f28a] {\n stroke-dasharray: 90, 150;\n stroke-linecap: round;\n}\n@keyframes spin-9668f28a {\n0% {\n transform: rotate(0deg);\n}\n100% {\n transform: rotate(360deg);\n}\n}\n.atm-footer-links[data-v-9668f28a] {\n margin-top: 16px;\n font-size: 13px;\n}\n.atm-login-text[data-v-9668f28a] {\n color: var(--atm-text-secondary);\n margin-bottom: 6px;\n}\n.atm-login-link[data-v-9668f28a] {\n color: var(--v3dd12aff);\n text-decoration: none;\n cursor: pointer;\n transition: opacity 0.2s;\n}\n.atm-login-link[data-v-9668f28a]:hover:not(.disabled-link) {\n text-decoration: underline;\n}\n.atm-login-link.disabled-link[data-v-9668f28a] {\n opacity: 0.5;\n cursor: not-allowed;\n pointer-events: none;\n}\n.atm-powered-by[data-v-9668f28a] {\n color: var(--atm-text-tertiary);\n font-size: 11px;\n margin: 0;\n}\n@media (max-width: 768px) {\n.atm-project-name[data-v-9668f28a] {\n font-size: 17px;\n}\n.atm-welcome-text[data-v-9668f28a] {\n font-size: 13px;\n margin-bottom: 14px;\n}\n.atm-form-group[data-v-9668f28a] {\n margin-bottom: 10px;\n}\n.atm-input-label[data-v-9668f28a] {\n font-size: 12px;\n margin-bottom: 4px;\n}\n.atm-input-field[data-v-9668f28a] {\n padding: 8px 10px;\n font-size: 13px;\n}\n.atm-signup-button[data-v-9668f28a] {\n font-size: 13px;\n padding: 9px;\n min-height: 40px;\n}\n.atm-footer-links[data-v-9668f28a] {\n margin-top: 14px;\n font-size: 12px;\n}\n}\n@media (max-width: 480px) {\n.atm-logo-placeholder[data-v-9668f28a] {\n width: 40px;\n height: 40px;\n font-size: 10px;\n}\n.atm-logo-image[data-v-9668f28a] {\n max-width: 40px;\n max-height: 40px;\n}\n.atm-project-name[data-v-9668f28a] {\n font-size: 16px;\n margin-bottom: 4px;\n}\n.atm-welcome-text[data-v-9668f28a] {\n font-size: 12px;\n margin-bottom: 12px;\n}\n.atm-form-group[data-v-9668f28a] {\n margin-bottom: 10px;\n}\n.atm-input-label[data-v-9668f28a] {\n font-size: 12px;\n margin-bottom: 3px;\n}\n.atm-input-field[data-v-9668f28a] {\n padding: 7px 9px;\n font-size: 13px;\n}\n.atm-signup-button[data-v-9668f28a] {\n font-size: 13px;\n padding: 9px;\n min-height: 38px;\n}\n.atm-footer-links[data-v-9668f28a] {\n margin-top: 12px;\n font-size: 12px;\n}\n.atm-powered-by[data-v-9668f28a] {\n font-size: 10px;\n}\n.spinner-svg[data-v-9668f28a] {\n width: 16px;\n height: 16px;\n}\n.button-spinner[data-v-9668f28a] {\n gap: 6px;\n}\n}\n@media (max-width: 360px) {\n.atm-logo-placeholder[data-v-9668f28a] {\n width: 36px;\n height: 36px;\n font-size: 9px;\n}\n.atm-logo-image[data-v-9668f28a] {\n max-width: 36px;\n max-height: 36px;\n}\n.atm-project-name[data-v-9668f28a] {\n font-size: 15px;\n margin-bottom: 3px;\n}\n.atm-welcome-text[data-v-9668f28a] {\n font-size: 11px;\n margin-bottom: 10px;\n}\n.atm-form-group[data-v-9668f28a] {\n margin-bottom: 8px;\n}\n.atm-input-label[data-v-9668f28a] {\n font-size: 11px;\n margin-bottom: 3px;\n}\n.atm-input-field[data-v-9668f28a] {\n padding: 6px 8px;\n font-size: 12px;\n}\n.atm-signup-button[data-v-9668f28a] {\n font-size: 12px;\n padding: 8px;\n min-height: 36px;\n}\n.atm-footer-links[data-v-9668f28a] {\n margin-top: 10px;\n font-size: 11px;\n}\n.spinner-svg[data-v-9668f28a] {\n width: 14px;\n height: 14px;\n}\n}\n\n.atm-signin-btn[data-v-e490ca63] {\n padding: 12px;\n margin-top: 8px;\n background: var(--v111e7704);\n color: #FFF;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.2s;\n min-height: 44px;\n}\n.atm-signin-btn[data-v-e490ca63]:hover {\n opacity: 0.9;\n}\n@media (max-width: 768px) {\n.atm-signin-btn[data-v-e490ca63] {\n padding: 11px;\n font-size: 13px;\n min-height: 42px;\n}\n}\n@media (max-width: 480px) {\n.atm-signin-btn[data-v-e490ca63] {\n padding: 10px;\n font-size: 13px;\n min-height: 40px;\n}\n}\n@media (max-width: 360px) {\n.atm-signin-btn[data-v-e490ca63] {\n padding: 9px;\n font-size: 12px;\n min-height: 38px;\n}\n}\n\n.atm-registration-disabled[data-v-05bfbd78] {\n padding: 24px;\n text-align: center;\n}\n.atm-disabled-message[data-v-05bfbd78] {\n margin-bottom: 16px;\n color: var(--atm-text-primary);\n}\n.atm-disabled-login-btn[data-v-05bfbd78] {\n padding: 12px 24px;\n background: #007bff;\n color: #ffffff;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n transition: opacity 0.2s;\n}\n.atm-disabled-login-btn[data-v-05bfbd78]:hover {\n opacity: 0.9;\n}\n\n.atm-signup-btn[data-v-7346e92d] {\n padding: 12px;\n margin-top: 8px;\n background: var(--v334adbc1);\n color: #FFF;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.2s;\n min-height: 44px;\n}\n.atm-signup-btn[data-v-7346e92d]:hover {\n opacity: 0.9;\n}\n@media (max-width: 768px) {\n.atm-signup-btn[data-v-7346e92d] {\n padding: 11px;\n font-size: 13px;\n min-height: 42px;\n}\n}\n@media (max-width: 480px) {\n.atm-signup-btn[data-v-7346e92d] {\n padding: 10px;\n font-size: 13px;\n min-height: 40px;\n}\n}\n@media (max-width: 360px) {\n.atm-signup-btn[data-v-7346e92d] {\n padding: 9px;\n font-size: 12px;\n min-height: 38px;\n}\n}\n\n.atm-profile-container {\n position: relative;\n display: inline-block;\n font-family: 'Segoe UI', system-ui, sans-serif;\n}\n.atm-profile-button {\n display: flex;\n align-items: center;\n gap: 8px;\n background: none;\n border: none;\n cursor: pointer;\n padding: 8px 12px;\n border-radius: 6px;\n transition: background 0.2s;\n}\n.atm-profile-button:hover {\n background: var(--atm-bg-secondary);\n}\n.atm-profile-avatar {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background-color: var(--feed21a4);\n color: #ffffff;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n font-weight: 500;\n}\n.atm-profile-avatar.large {\n width: 48px;\n height: 48px;\n font-size: 16px;\n}\n.atm-profile-avatar-img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 50%;\n}\n.atm-profile-name {\n font-size: 14px;\n color: var(--atm-text-primary);\n font-weight: 500;\n}\n.atm-profile-arrow {\n width: 16px;\n height: 16px;\n color: var(--atm-text-primary);\n transition: transform 0.2s;\n}\n.atm-rotate {\n transform: rotate(180deg);\n}\n.atm-profile-menu {\n position: absolute;\n top: 100%;\n width: 280px;\n background: var(--atm-bg-primary);\n border: 1px solid var(--atm-border-color);\n border-radius: 8px;\n box-shadow: var(--atm-shadow-md);\n z-index: 1000;\n overflow: hidden;\n margin-top: 4px;\n}\n.atm-position-left {\n left: 0;\n right: auto;\n}\n.atm-position-right {\n right: 0;\n left: auto;\n}\n.atm-profile-info {\n display: flex;\n gap: 12px;\n padding: 16px;\n border-bottom: 1px solid var(--atm-border-color);\n}\n.atm-profile-details {\n flex: 1;\n min-width: 0;\n}\n.atm-profile-fullname {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--atm-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.atm-profile-email {\n margin: 4px 0 0;\n font-size: 13px;\n color: var(--atm-text-secondary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.atm-profile-options {\n padding: 8px 0;\n}\n.atm-profile-option {\n display: flex;\n align-items: center;\n width: 100%;\n padding: 10px 16px;\n background: none;\n border: none;\n text-align: left;\n cursor: pointer;\n font-size: 14px;\n color: var(--atm-text-primary);\n gap: 10px;\n transition: background 0.2s;\n}\n.atm-profile-option:hover {\n background: var(--atm-bg-secondary);\n}\n.atm-profile-icon {\n width: 18px;\n height: 18px;\n color: var(--atm-text-secondary);\n}\n.atm-fade-enter-active,\n.atm-fade-leave-active {\n transition: opacity 0.2s, transform 0.2s;\n}\n.atm-fade-enter-from,\n.atm-fade-leave-to {\n opacity: 0;\n transform: translateY(-10px);\n}\n.atm-profile-modal {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 9999;\n display: flex;\n justify-content: center;\n align-items: center;\n overflow-y: auto;\n padding: 1.5rem;\n}\n.atm-profile-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.5);\n pointer-events: none;\n}\n.atm-profile-content {\n position: relative;\n width: 100%;\n max-width: 450px;\n background: var(--atm-bg-primary);\n border-radius: 12px;\n box-shadow: var(--atm-shadow-md);\n z-index: 1;\n max-height: calc(100vh - 3rem);\n display: flex;\n flex-direction: column;\n margin: auto;\n}\n.atm-profile-header {\n padding: 16px;\n border-bottom: 1px solid var(--atm-border-color);\n display: flex;\n align-items: center;\n}\n.atm-profile-close {\n background: none;\n border: none;\n font-size: 24px;\n cursor: pointer;\n padding: 8px;\n margin-right: 12px;\n color: var(--atm-text-secondary);\n transition: color 0.2s;\n}\n.atm-profile-close:hover {\n color: var(--atm-text-primary);\n}\n.atm-profile-title {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--atm-text-primary);\n}\n.atm-profile-tabs {\n display: flex;\n border-bottom: 1px solid var(--atm-border-color);\n background: var(--atm-bg-secondary);\n}\n.atm-tab {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n padding: 12px 16px;\n background: none;\n border: none;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n color: var(--atm-text-secondary);\n transition: all 0.2s;\n}\n.atm-tab:hover {\n background: var(--atm-bg-tertiary);\n color: var(--atm-text-primary);\n}\n.atm-tab-active {\n color: var(--feed21a4) !important;\n background: var(--atm-bg-primary);\n border-bottom: 2px solid var(--feed21a4);\n}\n.atm-tab-icon {\n width: 16px;\n height: 16px;\n}\n.atm-profile-body {\n padding: 24px;\n text-align: center;\n overflow-y: auto;\n flex: 1;\n min-height: 0;\n}\n.atm-profile-avatar-large {\n width: 80px;\n height: 80px;\n border-radius: 50%;\n background-color: var(--feed21a4);\n color: #ffffff;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 24px;\n font-weight: 600;\n margin: 0 auto 20px;\n}\n.atm-profile-info-grid {\n width: 100%;\n text-align: left;\n margin-top: 20px;\n}\n.atm-profile-info-row {\n display: flex;\n flex-direction: column;\n margin-bottom: 16px;\n}\n.atm-profile-info-label {\n font-size: 13px;\n color: var(--atm-text-secondary);\n margin-bottom: 4px;\n}\n.atm-profile-info-value {\n font-size: 16px;\n color: var(--atm-text-primary);\n font-weight: 500;\n}\n.atm-profile-edit-form {\n width: 100%;\n text-align: left;\n margin-top: 20px;\n}\n.atm-form-group {\n margin-bottom: 16px;\n}\n.atm-input-label {\n display: block;\n margin-bottom: 6px;\n font-size: 13px;\n color: var(--atm-text-primary);\n font-weight: 500;\n}\n.atm-input-field {\n width: 100%;\n padding: 10px 12px;\n background: var(--atm-input-bg);\n color: var(--atm-text-primary);\n border: 1px solid var(--atm-input-border);\n border-radius: 6px;\n font-size: 14px;\n box-sizing: border-box;\n transition: border-color 0.2s;\n}\n.atm-input-field:focus {\n outline: none;\n border-color: var(--feed21a4);\n box-shadow: 0 0 0 2px rgba(74, 144, 226, 0.1);\n}\n.atm-form-actions {\n display: flex;\n gap: 12px;\n margin-top: 24px;\n}\n.atm-save-btn,\n.atm-edit-profile-btn,\n.atm-reset-password-btn,\n.atm-add-email-btn {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px;\n background: var(--feed21a4);\n color: #FFF;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: opacity 0.2s;\n justify-content: center;\n}\n.atm-save-btn:hover,\n.atm-edit-profile-btn:hover,\n.atm-reset-password-btn:hover,\n.atm-add-email-btn:hover {\n opacity: 0.9;\n}\n.atm-cancel-btn {\n display: flex;\n align-items: center;\n gap: 8px;\n flex: 1;\n padding: 12px;\n background: var(--atm-bg-secondary);\n color: var(--atm-text-secondary);\n border: 1px solid var(--atm-border-color);\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s;\n justify-content: center;\n}\n.atm-cancel-btn:hover {\n background: var(--atm-bg-tertiary);\n color: var(--atm-text-primary);\n}\n.atm-btn-icon {\n width: 16px;\n height: 16px;\n}\n.atm-email-add-section {\n margin-bottom: 24px;\n text-align: left;\n}\n.atm-email-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n text-align: left;\n}\n.atm-email-item {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px;\n background: var(--atm-bg-secondary);\n border-radius: 6px;\n border: 1px solid var(--atm-border-color);\n}\n.atm-email-info {\n display: flex;\n flex-direction: column;\n gap: 8px;\n flex: 1;\n}\n.atm-email-address {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--atm-text-primary);\n}\n.atm-email-icon {\n width: 16px;\n height: 16px;\n color: var(--v5c6febbc);\n}\n.atm-email-badges {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n.atm-badge {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 2px 8px;\n font-size: 11px;\n font-weight: 500;\n border-radius: 12px;\n text-transform: uppercase;\n}\n.atm-badge-icon {\n width: 12px;\n height: 12px;\n}\n.atm-badge-primary {\n background: #e3f2fd;\n color: #1976d2;\n}\n.atm-badge-verified {\n background: #e8f5e8;\n color: #2e7d32;\n}\n.atm-badge-unverified {\n background: #fff3e0;\n color: #f57c00;\n}\n.atm-email-actions {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n.atm-verify-btn {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 6px 12px;\n background: var(--feed21a4);\n color: white;\n border: none;\n border-radius: 4px;\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: opacity 0.2s;\n}\n.atm-verify-btn:hover {\n opacity: 0.9;\n}\n.atm-delete-btn {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 6px 12px;\n background: #dc3545;\n color: white;\n border: none;\n border-radius: 4px;\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: opacity 0.2s;\n}\n.atm-delete-btn:hover {\n opacity: 0.9;\n}\n.atm-password-section {\n text-align: left;\n}\n.atm-sessions-section {\n text-align: left;\n}\n.atm-sessions-info {\n margin-bottom: 20px;\n}\n.atm-sessions-description {\n margin: 0;\n font-size: 14px;\n color: var(--atm-text-secondary);\n line-height: 1.5;\n}\n.atm-sessions-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n.atm-session-item {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px;\n background: var(--atm-bg-secondary);\n border-radius: 8px;\n border: 1px solid var(--atm-border-color);\n gap: 16px;\n}\n.atm-session-header {\n display: flex;\n gap: 12px;\n align-items: flex-start;\n}\n.atm-session-icon {\n width: 24px;\n height: 24px;\n color: var(--v5c6febbc);\n flex-shrink: 0;\n}\n.atm-session-details {\n flex: 1;\n min-width: 0;\n}\n.atm-session-title {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 4px;\n font-size: 15px;\n font-weight: 600;\n color: var(--atm-text-primary);\n}\n.atm-session-device-info {\n font-size: 13px;\n color: var(--atm-text-secondary);\n margin-bottom: 8px;\n}\n.atm-badge-current {\n background: #d1f4e0;\n color: #0f9d58;\n}\n.atm-session-timestamps {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n.atm-session-timestamp {\n display: flex;\n gap: 6px;\n font-size: 13px;\n color: var(--atm-text-secondary);\n}\n.atm-timestamp-label {\n font-weight: 500;\n color: var(--atm-text-primary);\n}\n.atm-session-actions {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.atm-close-session-btn {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 14px;\n background: #dc3545;\n color: white;\n border: none;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: opacity 0.2s;\n white-space: nowrap;\n}\n.atm-close-session-btn:hover {\n opacity: 0.9;\n}\n@media (max-width: 768px) {\n.atm-profile-button {\n padding: 6px 10px;\n gap: 6px;\n}\n.atm-profile-name {\n font-size: 13px;\n}\n.atm-profile-menu {\n width: 260px;\n}\n.atm-profile-modal {\n padding: 1rem;\n}\n.atm-profile-content {\n max-width: 90%;\n max-height: calc(100vh - 2rem);\n}\n.atm-profile-header {\n padding: 14px;\n}\n.atm-profile-title {\n font-size: 16px;\n}\n.atm-profile-body {\n padding: 20px;\n}\n.atm-tab {\n padding: 10px 12px;\n font-size: 13px;\n gap: 4px;\n}\n.atm-tab-icon {\n width: 14px;\n height: 14px;\n}\n.atm-profile-avatar-large {\n width: 70px;\n height: 70px;\n font-size: 22px;\n}\n.atm-email-item {\n flex-direction: column;\n gap: 12px;\n align-items: flex-start;\n}\n.atm-email-actions {\n flex-direction: row;\n width: 100%;\n}\n.atm-verify-btn,\n .atm-delete-btn {\n flex: 1;\n justify-content: center;\n}\n.atm-session-item {\n flex-direction: column;\n align-items: flex-start;\n}\n.atm-session-actions {\n width: 100%;\n}\n.atm-close-session-btn {\n width: 100%;\n justify-content: center;\n}\n}\n@media (max-width: 480px) {\n.atm-profile-button {\n padding: 4px 8px;\n gap: 4px;\n}\n.atm-profile-avatar {\n width: 28px;\n height: 28px;\n font-size: 11px;\n}\n.atm-profile-avatar.large {\n width: 40px;\n height: 40px;\n font-size: 14px;\n}\n.atm-profile-name {\n font-size: 12px;\n}\n.atm-profile-arrow {\n width: 14px;\n height: 14px;\n}\n.atm-profile-menu {\n width: calc(100vw - 20px);\n max-width: 240px;\n}\n.atm-profile-info {\n padding: 12px;\n gap: 10px;\n}\n.atm-profile-fullname {\n font-size: 13px;\n}\n.atm-profile-email {\n font-size: 12px;\n}\n.atm-profile-option {\n padding: 8px 12px;\n font-size: 13px;\n gap: 8px;\n}\n.atm-profile-icon {\n width: 16px;\n height: 16px;\n}\n.atm-profile-modal {\n padding: 0.5rem;\n}\n.atm-profile-content {\n max-width: 95%;\n max-height: calc(100vh - 1rem);\n}\n.atm-profile-header {\n padding: 12px;\n}\n.atm-profile-close {\n font-size: 20px;\n padding: 4px;\n margin-right: 8px;\n}\n.atm-profile-title {\n font-size: 15px;\n}\n.atm-profile-body {\n padding: 16px;\n}\n.atm-tab {\n padding: 8px 8px;\n font-size: 12px;\n gap: 3px;\n}\n.atm-tab-icon {\n width: 13px;\n height: 13px;\n}\n.atm-profile-avatar-large {\n width: 60px;\n height: 60px;\n font-size: 20px;\n margin-bottom: 16px;\n}\n.atm-profile-info-label {\n font-size: 12px;\n}\n.atm-profile-info-value {\n font-size: 14px;\n}\n.atm-input-label {\n font-size: 12px;\n}\n.atm-input-field {\n padding: 8px 10px;\n font-size: 13px;\n}\n.atm-form-actions {\n flex-direction: column;\n gap: 8px;\n}\n.atm-save-btn,\n .atm-cancel-btn,\n .atm-edit-profile-btn,\n .atm-reset-password-btn {\n width: 100%;\n padding: 10px;\n font-size: 13px;\n}\n.atm-email-item {\n padding: 10px;\n}\n.atm-email-address {\n font-size: 13px;\n}\n.atm-badge {\n font-size: 10px;\n padding: 2px 6px;\n}\n}\n@media (max-width: 360px) {\n.atm-profile-button {\n padding: 4px 6px;\n}\n.atm-profile-avatar {\n width: 26px;\n height: 26px;\n font-size: 10px;\n}\n.atm-profile-name {\n display: none;\n}\n.atm-profile-menu {\n width: calc(100vw - 16px);\n max-width: 220px;\n}\n.atm-profile-modal {\n padding: 0.25rem;\n}\n.atm-profile-content {\n max-width: 98%;\n max-height: calc(100vh - 0.5rem);\n}\n.atm-profile-body {\n padding: 12px;\n}\n.atm-tab {\n padding: 8px 6px;\n font-size: 11px;\n flex-direction: column;\n gap: 2px;\n}\n.atm-profile-avatar-large {\n width: 50px;\n height: 50px;\n font-size: 18px;\n}\n.atm-email-item {\n padding: 8px;\n}\n}\n\n.atm-auth-buttons[data-v-0c63ecb8] {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n}\n@media (max-width: 768px) {\n.atm-auth-buttons[data-v-0c63ecb8] {\n gap: 14px;\n}\n}\n@media (max-width: 480px) {\n.atm-auth-buttons[data-v-0c63ecb8] {\n gap: 12px;\n flex-direction: column;\n}\n}\n@media (max-width: 360px) {\n.atm-auth-buttons[data-v-0c63ecb8] {\n gap: 10px;\n}\n}\n\n.atm-logout-btn[data-v-7157f989] {\n padding: 12px;\n margin-top: 8px;\n background: var(--v2ec0f896);\n color: #FFF;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: opacity 0.2s;\n min-height: 44px;\n}\n.atm-logout-btn[data-v-7157f989]:hover {\n opacity: 0.9;\n}\n@media (max-width: 768px) {\n.atm-logout-btn[data-v-7157f989] {\n padding: 11px;\n font-size: 13px;\n min-height: 42px;\n}\n}\n@media (max-width: 480px) {\n.atm-logout-btn[data-v-7157f989] {\n padding: 10px;\n font-size: 13px;\n min-height: 40px;\n}\n}\n@media (max-width: 360px) {\n.atm-logout-btn[data-v-7157f989] {\n padding: 9px;\n font-size: 12px;\n min-height: 38px;\n}\n}\n";
|
|
5
|
+
style.textContent = ":root {\n --atm-bg-primary: #ffffff;\n --atm-bg-secondary: #f8f9fa;\n --atm-bg-tertiary: #f0f0f0;\n\n --atm-text-primary: #333333;\n --atm-text-secondary: #666666;\n --atm-text-tertiary: #999999;\n --atm-text-muted: #888888;\n\n --atm-border-color: #dddddd;\n --atm-border-hover: #cccccc;\n\n --atm-input-bg: #ffffff;\n --atm-input-disabled: #f5f5f5;\n --atm-input-border: #dddddd;\n\n --atm-error-color: #dc3545;\n --atm-success-color: #28a745;\n\n --atm-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.1);\n --atm-shadow-md: 0 4px 6px rgba(0, 0, 0, 0.1);\n}\n\n.atm-theme-dark,\n:root.atm-theme-dark {\n --atm-bg-primary: #1a1a1a;\n --atm-bg-secondary: #2d2d2d;\n --atm-bg-tertiary: #404040;\n\n --atm-text-primary: #e0e0e0;\n --atm-text-secondary: #b0b0b0;\n --atm-text-tertiary: #808080;\n --atm-text-muted: #999999;\n\n --atm-border-color: #404040;\n --atm-border-hover: #505050;\n\n --atm-input-bg: #2d2d2d;\n --atm-input-disabled: #1f1f1f;\n --atm-input-border: #404040;\n\n --atm-error-color: #ff6b6b;\n --atm-success-color: #51cf66;\n\n --atm-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.3);\n --atm-shadow-md: 0 4px 6px rgba(0, 0, 0, 0.5);\n}\n\n.atm-overlay[data-v-5a315eca] {\n position: fixed;\n inset: 0;\n z-index: 99999;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(4px);\n overflow-y: auto;\n padding: 1.5rem 0;\n}\n.atm-container[data-v-5a315eca] {\n padding: 0 1.5rem;\n width: 100%;\n margin: auto;\n}\n.atm-fade-layer[data-v-5a315eca] {\n position: fixed;\n inset: 0;\n transition: opacity 0.2s ease;\n pointer-events: none;\n}\n.atm-fade-bg[data-v-5a315eca] {\n position: absolute;\n inset: 0;\n opacity: 0.75;\n}\n.atm-modal[data-v-5a315eca] {\n position: relative;\n display: inline-block;\n vertical-align: bottom;\n background-color: var(--atm-bg-primary);\n border-radius: 0.5rem;\n text-align: left;\n box-shadow: var(--atm-shadow-md);\n transform: translate(0);\n transition: all 0.2s ease-in-out;\n max-width: 32rem;\n width: 100%;\n max-height: calc(100vh - 3rem);\n display: flex;\n flex-direction: column;\n}\n.atm-close-button[data-v-5a315eca] {\n position: absolute;\n top: 1rem;\n right: 1rem;\n color: var(--atm-text-tertiary);\n background: transparent;\n border: none;\n cursor: pointer;\n padding: 0.25rem;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10;\n transition: color 0.2s;\n}\n.atm-close-button[data-v-5a315eca]:hover {\n color: var(--atm-text-secondary);\n}\n.atm-icon[data-v-5a315eca] {\n width: 1.5rem;\n height: 1.5rem;\n}\n.atm-modal-content[data-v-5a315eca] {\n padding: 1.25rem;\n overflow-y: auto;\n flex: 1;\n min-height: 0;\n}\n.atm-modal-title[data-v-5a315eca] {\n font-size: 1.125rem;\n font-weight: 500;\n color: var(--atm-text-primary);\n margin: 0;\n margin-bottom: 0.75rem;\n}\n@media (max-width: 768px) {\n.atm-overlay[data-v-5a315eca] {\n padding: 1rem 0;\n}\n.atm-container[data-v-5a315eca] {\n padding: 0 1rem;\n}\n.atm-modal[data-v-5a315eca] {\n border-radius: 0.375rem;\n max-height: calc(100vh - 2rem);\n}\n.atm-modal-content[data-v-5a315eca] {\n padding: 1rem;\n}\n.atm-modal-title[data-v-5a315eca] {\n font-size: 1rem;\n margin-bottom: 0.75rem;\n}\n.atm-close-button[data-v-5a315eca] {\n top: 0.75rem;\n right: 0.75rem;\n}\n.atm-icon[data-v-5a315eca] {\n width: 1.25rem;\n height: 1.25rem;\n}\n}\n@media (max-width: 480px) {\n.atm-overlay[data-v-5a315eca] {\n padding: 0.5rem 0;\n}\n.atm-container[data-v-5a315eca] {\n padding: 0 0.5rem;\n}\n.atm-modal[data-v-5a315eca] {\n border-radius: 0.25rem;\n max-width: 100%;\n max-height: calc(100vh - 1rem);\n}\n.atm-modal-content[data-v-5a315eca] {\n padding: 0.875rem;\n}\n.atm-modal-title[data-v-5a315eca] {\n font-size: 0.9375rem;\n margin-bottom: 0.625rem;\n}\n.atm-close-button[data-v-5a315eca] {\n top: 0.5rem;\n right: 0.5rem;\n}\n}\n@media (max-width: 360px) {\n.atm-overlay[data-v-5a315eca] {\n padding: 0.25rem 0;\n}\n.atm-container[data-v-5a315eca] {\n padding: 0 0.25rem;\n}\n.atm-modal[data-v-5a315eca] {\n max-height: calc(100vh - 0.5rem);\n}\n.atm-modal-content[data-v-5a315eca] {\n padding: 0.75rem;\n}\n.atm-modal-title[data-v-5a315eca] {\n font-size: 0.875rem;\n margin-bottom: 0.5rem;\n}\n}\n\n.atm-notification-container[data-v-f5e47084] {\n font-family: Arial, Helvetica, sans-serif;\n position: fixed;\n top: 20px;\n right: 20px;\n z-index: 99999;\n pointer-events: none;\n}\n.atm-notification[data-v-f5e47084] {\n padding: 12px 16px;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n min-width: 250px;\n max-width: 350px;\n pointer-events: auto;\n}\n.atm-notification--error[data-v-f5e47084] {\n background: #ff3333;\n color: #FFF;\n}\n.atm-notification--success[data-v-f5e47084] {\n background: #00a622;\n color: #FFF;\n}\n.atm-notification--warning[data-v-f5e47084] {\n background: #ffa500;\n color: #FFF;\n}\n.atm-notification-enter-active[data-v-f5e47084] {\n transition: all 0.3s ease-out;\n}\n.atm-notification-leave-active[data-v-f5e47084] {\n transition: all 0.3s ease-in;\n}\n.atm-notification-enter-from[data-v-f5e47084] {\n transform: translateX(100%);\n opacity: 0;\n}\n.atm-notification-leave-to[data-v-f5e47084] {\n transform: translateX(100%);\n opacity: 0;\n}\n@media (max-width: 768px) {\n.atm-notification-container[data-v-f5e47084] {\n top: 16px;\n right: 16px;\n left: 16px;\n}\n.atm-notification[data-v-f5e47084] {\n min-width: auto;\n max-width: 100%;\n padding: 11px 14px;\n font-size: 13px;\n}\n}\n@media (max-width: 480px) {\n.atm-notification-container[data-v-f5e47084] {\n top: 12px;\n right: 12px;\n left: 12px;\n}\n.atm-notification[data-v-f5e47084] {\n padding: 10px 12px;\n font-size: 12px;\n border-radius: 5px;\n}\n}\n@media (max-width: 360px) {\n.atm-notification-container[data-v-f5e47084] {\n top: 10px;\n right: 10px;\n left: 10px;\n}\n.atm-notification[data-v-f5e47084] {\n padding: 9px 11px;\n font-size: 11px;\n border-radius: 4px;\n}\n}\n\n.atm-login-container[data-v-b88e6b76] {\n background: var(--atm-bg-primary);\n border-radius: 8px;\n font-family: 'Segoe UI', system-ui, sans-serif;\n text-align: center;\n}\n.atm-logo-container[data-v-b88e6b76] {\n margin-bottom: 12px;\n}\n.atm-logo-placeholder[data-v-b88e6b76] {\n width: 44px;\n height: 44px;\n margin: 0 auto;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--atm-bg-tertiary);\n border-radius: 50%;\n color: var(--atm-text-muted);\n font-size: 11px;\n}\n.atm-logo-image[data-v-b88e6b76] {\n max-width: 44px;\n max-height: 44px;\n margin: 0 auto;\n display: block;\n border-radius: 4px;\n object-fit: contain;\n}\n.atm-project-name[data-v-b88e6b76] {\n margin: 0 0 4px 0;\n font-size: 18px;\n color: var(--v70f1a692);\n font-weight: 600;\n}\n.atm-welcome-text[data-v-b88e6b76] {\n margin: 0 0 16px 0;\n font-size: 14px;\n color: var(--atm-text-secondary);\n}\n.atm-form-group[data-v-b88e6b76] {\n margin-bottom: 12px;\n text-align: left;\n}\n.atm-input-label[data-v-b88e6b76] {\n display: block;\n margin-bottom: 4px;\n font-size: 13px;\n color: var(--atm-text-primary);\n font-weight: 500;\n}\n.atm-input-field[data-v-b88e6b76] {\n width: 100%;\n padding: 8px 10px;\n background: var(--atm-input-bg);\n color: var(--atm-text-primary);\n border: 1px solid var(--atm-input-border);\n border-radius: 6px;\n font-size: 14px;\n box-sizing: border-box;\n transition: border-color 0.2s;\n}\n.atm-input-field[data-v-b88e6b76]:focus {\n outline: none;\n border-color: var(--v70f1a692);\n box-shadow: 0 0 0 2px rgba(74, 144, 226, 0.1);\n}\n.atm-input-field[data-v-b88e6b76]:disabled {\n background-color: var(--atm-input-disabled);\n cursor: not-allowed;\n}\n.atm-field-error[data-v-b88e6b76] {\n color: var(--atm-error-color);\n font-size: 12px;\n margin-top: 4px;\n text-align: left;\n}\n.atm-alternative-options[data-v-b88e6b76] {\n margin-top: 8px;\n text-align: center;\n}\n.atm-forgot-password-link[data-v-b88e6b76] {\n font-size: 12px;\n background: none;\n border: none;\n color: var(--v4a1729f6);\n cursor: pointer;\n text-decoration: none;\n padding: 0;\n font-family: inherit;\n}\n.atm-forgot-password-link[data-v-b88e6b76]:hover:not(:disabled) {\n text-decoration: underline;\n}\n.atm-forgot-password-link[data-v-b88e6b76]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.atm-strategy-choice[data-v-b88e6b76] {\n text-align: center;\n margin-bottom: 12px;\n}\n.atm-strategy-title[data-v-b88e6b76] {\n font-size: 14px;\n color: var(--atm-text-secondary);\n margin-bottom: 12px;\n}\n.atm-strategy-buttons[data-v-b88e6b76] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.atm-strategy-button[data-v-b88e6b76] {\n width: 100%;\n padding: 10px;\n background: var(--atm-bg-secondary);\n color: var(--atm-text-primary);\n border: 1px solid var(--atm-border-color);\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n transition: all 0.2s;\n}\n.atm-strategy-button[data-v-b88e6b76]:hover:not(:disabled) {\n background: var(--atm-bg-tertiary);\n border-color: var(--v70f1a692);\n}\n.atm-strategy-button[data-v-b88e6b76]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.atm-email-link-text[data-v-b88e6b76] {\n font-size: 14px;\n color: var(--atm-text-secondary);\n margin: 0;\n text-align: center;\n}\n.atm-login-button[data-v-b88e6b76] {\n width: 100%;\n padding: 10px;\n margin-top: 4px;\n background: var(--v70f1a692);\n color: #ffffff;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s;\n min-height: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.atm-login-button[data-v-b88e6b76]:hover:not(:disabled) {\n opacity: 0.9;\n transform: translateY(-1px);\n}\n.atm-login-button[data-v-b88e6b76]:disabled {\n opacity: 0.8;\n cursor: not-allowed;\n transform: none;\n}\n.button-spinner[data-v-b88e6b76] {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n color: #fff;\n font-weight: 500;\n}\n.spinner-svg[data-v-b88e6b76] {\n animation: spin-b88e6b76 1s linear infinite;\n width: 18px;\n height: 18px;\n stroke: #fff;\n}\n.spinner-circle[data-v-b88e6b76] {\n stroke-dasharray: 90, 150;\n stroke-linecap: round;\n}\n@keyframes spin-b88e6b76 {\n0% {\n transform: rotate(0deg);\n}\n100% {\n transform: rotate(360deg);\n}\n}\n.atm-footer-links[data-v-b88e6b76] {\n margin-top: 16px;\n font-size: 13px;\n}\n.atm-signup-text[data-v-b88e6b76] {\n color: var(--atm-text-secondary);\n margin-bottom: 6px;\n}\n.atm-signup-link[data-v-b88e6b76] {\n color: var(--v4a1729f6);\n text-decoration: none;\n cursor: pointer;\n}\n.atm-signup-link[data-v-b88e6b76]:hover {\n text-decoration: underline;\n}\n.atm-powered-by[data-v-b88e6b76] {\n color: var(--atm-text-tertiary);\n font-size: 11px;\n margin: 0;\n}\n@media (max-width: 768px) {\n.atm-project-name[data-v-b88e6b76] {\n font-size: 17px;\n}\n.atm-welcome-text[data-v-b88e6b76] {\n font-size: 13px;\n margin-bottom: 14px;\n}\n.atm-form-group[data-v-b88e6b76] {\n margin-bottom: 10px;\n}\n.atm-input-label[data-v-b88e6b76] {\n font-size: 12px;\n margin-bottom: 4px;\n}\n.atm-input-field[data-v-b88e6b76] {\n padding: 8px 10px;\n font-size: 13px;\n}\n.atm-login-button[data-v-b88e6b76] {\n font-size: 13px;\n padding: 9px;\n min-height: 40px;\n}\n.atm-strategy-button[data-v-b88e6b76] {\n padding: 9px;\n font-size: 13px;\n}\n.atm-footer-links[data-v-b88e6b76] {\n margin-top: 14px;\n font-size: 12px;\n}\n}\n@media (max-width: 480px) {\n.atm-logo-placeholder[data-v-b88e6b76] {\n width: 40px;\n height: 40px;\n font-size: 10px;\n}\n.atm-logo-image[data-v-b88e6b76] {\n max-width: 40px;\n max-height: 40px;\n}\n.atm-project-name[data-v-b88e6b76] {\n font-size: 16px;\n margin-bottom: 4px;\n}\n.atm-welcome-text[data-v-b88e6b76] {\n font-size: 12px;\n margin-bottom: 12px;\n}\n.atm-form-group[data-v-b88e6b76] {\n margin-bottom: 10px;\n}\n.atm-input-label[data-v-b88e6b76] {\n font-size: 12px;\n margin-bottom: 3px;\n}\n.atm-input-field[data-v-b88e6b76] {\n padding: 7px 9px;\n font-size: 13px;\n}\n.atm-login-button[data-v-b88e6b76] {\n font-size: 13px;\n padding: 9px;\n min-height: 38px;\n}\n.atm-forgot-password-link[data-v-b88e6b76] {\n font-size: 11px;\n}\n.atm-strategy-title[data-v-b88e6b76] {\n font-size: 13px;\n margin-bottom: 10px;\n}\n.atm-strategy-button[data-v-b88e6b76] {\n padding: 9px;\n font-size: 13px;\n}\n.atm-email-link-text[data-v-b88e6b76] {\n font-size: 13px;\n}\n.atm-footer-links[data-v-b88e6b76] {\n margin-top: 12px;\n font-size: 12px;\n}\n.atm-powered-by[data-v-b88e6b76] {\n font-size: 10px;\n}\n.spinner-svg[data-v-b88e6b76] {\n width: 16px;\n height: 16px;\n}\n.button-spinner[data-v-b88e6b76] {\n gap: 6px;\n}\n}\n@media (max-width: 360px) {\n.atm-logo-placeholder[data-v-b88e6b76] {\n width: 36px;\n height: 36px;\n font-size: 9px;\n}\n.atm-logo-image[data-v-b88e6b76] {\n max-width: 36px;\n max-height: 36px;\n}\n.atm-project-name[data-v-b88e6b76] {\n font-size: 15px;\n margin-bottom: 3px;\n}\n.atm-welcome-text[data-v-b88e6b76] {\n font-size: 11px;\n margin-bottom: 10px;\n}\n.atm-form-group[data-v-b88e6b76] {\n margin-bottom: 8px;\n}\n.atm-input-label[data-v-b88e6b76] {\n font-size: 11px;\n margin-bottom: 3px;\n}\n.atm-input-field[data-v-b88e6b76] {\n padding: 6px 8px;\n font-size: 12px;\n}\n.atm-login-button[data-v-b88e6b76] {\n font-size: 12px;\n padding: 8px;\n min-height: 36px;\n}\n.atm-strategy-button[data-v-b88e6b76] {\n padding: 8px;\n font-size: 12px;\n}\n.atm-footer-links[data-v-b88e6b76] {\n margin-top: 10px;\n font-size: 11px;\n}\n.spinner-svg[data-v-b88e6b76] {\n width: 14px;\n height: 14px;\n}\n}\n\n.atm-signup-container[data-v-83e9452d] {\n width: 100%;\n background: var(--atm-bg-primary);\n border-radius: 8px;\n font-family: 'Segoe UI', system-ui, sans-serif;\n text-align: center;\n}\n.atm-logo-container[data-v-83e9452d] {\n margin-bottom: 12px;\n}\n.atm-logo-placeholder[data-v-83e9452d] {\n width: 44px;\n height: 44px;\n margin: 0 auto;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--atm-bg-tertiary);\n border-radius: 50%;\n color: var(--atm-text-muted);\n font-size: 11px;\n}\n.atm-logo-image[data-v-83e9452d] {\n max-width: 44px;\n max-height: 44px;\n margin: 0 auto;\n display: block;\n border-radius: 4px;\n object-fit: contain;\n}\n.atm-project-name[data-v-83e9452d] {\n margin: 0 0 4px 0;\n font-size: 18px;\n color: var(--v2dc4b763);\n font-weight: 600;\n}\n.atm-welcome-text[data-v-83e9452d] {\n margin: 0 0 16px 0;\n font-size: 14px;\n color: var(--atm-text-secondary);\n}\n.atm-form-group[data-v-83e9452d] {\n margin-bottom: 12px;\n text-align: left;\n}\n.atm-input-label[data-v-83e9452d] {\n display: block;\n margin-bottom: 4px;\n font-size: 13px;\n color: var(--atm-text-primary);\n font-weight: 500;\n}\n.atm-input-field[data-v-83e9452d] {\n width: 100%;\n padding: 8px 10px;\n background: var(--atm-input-bg);\n color: var(--atm-text-primary);\n border: 1px solid var(--atm-input-border);\n border-radius: 6px;\n font-size: 14px;\n box-sizing: border-box;\n transition: border-color 0.2s;\n}\n.atm-input-field[data-v-83e9452d]:focus {\n outline: none;\n border-color: var(--v2dc4b763);\n box-shadow: 0 0 0 2px rgba(74, 144, 226, 0.1);\n}\n.atm-input-field[data-v-83e9452d]:disabled {\n background-color: var(--atm-input-disabled);\n cursor: not-allowed;\n}\n.atm-field-error[data-v-83e9452d] {\n color: var(--atm-error-color);\n font-size: 12px;\n margin-top: 4px;\n text-align: left;\n}\n.atm-signup-button[data-v-83e9452d] {\n width: 100%;\n padding: 10px;\n margin-top: 4px;\n background: var(--v2dc4b763);\n color: #ffffff;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s;\n min-height: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.atm-signup-button[data-v-83e9452d]:hover:not(:disabled) {\n opacity: 0.9;\n transform: translateY(-1px);\n}\n.atm-signup-button[data-v-83e9452d]:disabled {\n opacity: 0.8;\n cursor: not-allowed;\n transform: none;\n}\n.button-spinner[data-v-83e9452d] {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n color: #fff;\n font-weight: 500;\n}\n.spinner-svg[data-v-83e9452d] {\n animation: spin-83e9452d 1s linear infinite;\n width: 18px;\n height: 18px;\n stroke: #fff;\n}\n.spinner-circle[data-v-83e9452d] {\n stroke-dasharray: 90, 150;\n stroke-linecap: round;\n}\n@keyframes spin-83e9452d {\n0% {\n transform: rotate(0deg);\n}\n100% {\n transform: rotate(360deg);\n}\n}\n.atm-footer-links[data-v-83e9452d] {\n margin-top: 16px;\n font-size: 13px;\n}\n.atm-login-text[data-v-83e9452d] {\n color: var(--atm-text-secondary);\n margin-bottom: 6px;\n}\n.atm-login-link[data-v-83e9452d] {\n color: var(--b00c0a9e);\n text-decoration: none;\n cursor: pointer;\n transition: opacity 0.2s;\n}\n.atm-login-link[data-v-83e9452d]:hover:not(.disabled-link) {\n text-decoration: underline;\n}\n.atm-login-link.disabled-link[data-v-83e9452d] {\n opacity: 0.5;\n cursor: not-allowed;\n pointer-events: none;\n}\n.atm-powered-by[data-v-83e9452d] {\n color: var(--atm-text-tertiary);\n font-size: 11px;\n margin: 0;\n}\n@media (max-width: 768px) {\n.atm-project-name[data-v-83e9452d] {\n font-size: 17px;\n}\n.atm-welcome-text[data-v-83e9452d] {\n font-size: 13px;\n margin-bottom: 14px;\n}\n.atm-form-group[data-v-83e9452d] {\n margin-bottom: 10px;\n}\n.atm-input-label[data-v-83e9452d] {\n font-size: 12px;\n margin-bottom: 4px;\n}\n.atm-input-field[data-v-83e9452d] {\n padding: 8px 10px;\n font-size: 13px;\n}\n.atm-signup-button[data-v-83e9452d] {\n font-size: 13px;\n padding: 9px;\n min-height: 40px;\n}\n.atm-footer-links[data-v-83e9452d] {\n margin-top: 14px;\n font-size: 12px;\n}\n}\n@media (max-width: 480px) {\n.atm-logo-placeholder[data-v-83e9452d] {\n width: 40px;\n height: 40px;\n font-size: 10px;\n}\n.atm-logo-image[data-v-83e9452d] {\n max-width: 40px;\n max-height: 40px;\n}\n.atm-project-name[data-v-83e9452d] {\n font-size: 16px;\n margin-bottom: 4px;\n}\n.atm-welcome-text[data-v-83e9452d] {\n font-size: 12px;\n margin-bottom: 12px;\n}\n.atm-form-group[data-v-83e9452d] {\n margin-bottom: 10px;\n}\n.atm-input-label[data-v-83e9452d] {\n font-size: 12px;\n margin-bottom: 3px;\n}\n.atm-input-field[data-v-83e9452d] {\n padding: 7px 9px;\n font-size: 13px;\n}\n.atm-signup-button[data-v-83e9452d] {\n font-size: 13px;\n padding: 9px;\n min-height: 38px;\n}\n.atm-footer-links[data-v-83e9452d] {\n margin-top: 12px;\n font-size: 12px;\n}\n.atm-powered-by[data-v-83e9452d] {\n font-size: 10px;\n}\n.spinner-svg[data-v-83e9452d] {\n width: 16px;\n height: 16px;\n}\n.button-spinner[data-v-83e9452d] {\n gap: 6px;\n}\n}\n@media (max-width: 360px) {\n.atm-logo-placeholder[data-v-83e9452d] {\n width: 36px;\n height: 36px;\n font-size: 9px;\n}\n.atm-logo-image[data-v-83e9452d] {\n max-width: 36px;\n max-height: 36px;\n}\n.atm-project-name[data-v-83e9452d] {\n font-size: 15px;\n margin-bottom: 3px;\n}\n.atm-welcome-text[data-v-83e9452d] {\n font-size: 11px;\n margin-bottom: 10px;\n}\n.atm-form-group[data-v-83e9452d] {\n margin-bottom: 8px;\n}\n.atm-input-label[data-v-83e9452d] {\n font-size: 11px;\n margin-bottom: 3px;\n}\n.atm-input-field[data-v-83e9452d] {\n padding: 6px 8px;\n font-size: 12px;\n}\n.atm-signup-button[data-v-83e9452d] {\n font-size: 12px;\n padding: 8px;\n min-height: 36px;\n}\n.atm-footer-links[data-v-83e9452d] {\n margin-top: 10px;\n font-size: 11px;\n}\n.spinner-svg[data-v-83e9452d] {\n width: 14px;\n height: 14px;\n}\n}\n\n.atm-signin-btn[data-v-43bf662d] {\n padding: 12px;\n margin-top: 8px;\n background: var(--v12e673a0);\n color: #FFF;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.2s;\n min-height: 44px;\n}\n.atm-signin-btn[data-v-43bf662d]:hover {\n opacity: 0.9;\n}\n@media (max-width: 768px) {\n.atm-signin-btn[data-v-43bf662d] {\n padding: 11px;\n font-size: 13px;\n min-height: 42px;\n}\n}\n@media (max-width: 480px) {\n.atm-signin-btn[data-v-43bf662d] {\n padding: 10px;\n font-size: 13px;\n min-height: 40px;\n}\n}\n@media (max-width: 360px) {\n.atm-signin-btn[data-v-43bf662d] {\n padding: 9px;\n font-size: 12px;\n min-height: 38px;\n}\n}\n\n.atm-registration-disabled[data-v-b58cb91d] {\n padding: 24px;\n text-align: center;\n}\n.atm-disabled-message[data-v-b58cb91d] {\n margin-bottom: 16px;\n color: var(--atm-text-primary);\n}\n.atm-disabled-login-btn[data-v-b58cb91d] {\n padding: 12px 24px;\n background: #007bff;\n color: #ffffff;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n transition: opacity 0.2s;\n}\n.atm-disabled-login-btn[data-v-b58cb91d]:hover {\n opacity: 0.9;\n}\n\n.atm-signup-btn[data-v-d9ac9b54] {\n padding: 12px;\n margin-top: 8px;\n background: var(--v1c336c46);\n color: #FFF;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.2s;\n min-height: 44px;\n}\n.atm-signup-btn[data-v-d9ac9b54]:hover {\n opacity: 0.9;\n}\n@media (max-width: 768px) {\n.atm-signup-btn[data-v-d9ac9b54] {\n padding: 11px;\n font-size: 13px;\n min-height: 42px;\n}\n}\n@media (max-width: 480px) {\n.atm-signup-btn[data-v-d9ac9b54] {\n padding: 10px;\n font-size: 13px;\n min-height: 40px;\n}\n}\n@media (max-width: 360px) {\n.atm-signup-btn[data-v-d9ac9b54] {\n padding: 9px;\n font-size: 12px;\n min-height: 38px;\n}\n}\n\n.atm-profile-container {\n position: relative;\n display: inline-block;\n font-family: 'Segoe UI', system-ui, sans-serif;\n}\n.atm-profile-button {\n display: flex;\n align-items: center;\n gap: 8px;\n background: none;\n border: none;\n cursor: pointer;\n padding: 8px 12px;\n border-radius: 6px;\n transition: background 0.2s;\n}\n.atm-profile-button:hover {\n background: var(--atm-bg-secondary);\n}\n.atm-profile-avatar {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background-color: var(--feed21a4);\n color: #ffffff;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n font-weight: 500;\n}\n.atm-profile-avatar.large {\n width: 48px;\n height: 48px;\n font-size: 16px;\n}\n.atm-profile-avatar-img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 50%;\n}\n.atm-profile-name {\n font-size: 14px;\n color: var(--atm-text-primary);\n font-weight: 500;\n}\n.atm-profile-arrow {\n width: 16px;\n height: 16px;\n color: var(--atm-text-primary);\n transition: transform 0.2s;\n}\n.atm-rotate {\n transform: rotate(180deg);\n}\n.atm-profile-menu {\n position: absolute;\n top: 100%;\n width: 280px;\n background: var(--atm-bg-primary);\n border: 1px solid var(--atm-border-color);\n border-radius: 8px;\n box-shadow: var(--atm-shadow-md);\n z-index: 1000;\n overflow: hidden;\n margin-top: 4px;\n}\n.atm-position-left {\n left: 0;\n right: auto;\n}\n.atm-position-right {\n right: 0;\n left: auto;\n}\n.atm-profile-info {\n display: flex;\n gap: 12px;\n padding: 16px;\n border-bottom: 1px solid var(--atm-border-color);\n}\n.atm-profile-details {\n flex: 1;\n min-width: 0;\n}\n.atm-profile-fullname {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--atm-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.atm-profile-email {\n margin: 4px 0 0;\n font-size: 13px;\n color: var(--atm-text-secondary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.atm-profile-options {\n padding: 8px 0;\n}\n.atm-profile-option {\n display: flex;\n align-items: center;\n width: 100%;\n padding: 10px 16px;\n background: none;\n border: none;\n text-align: left;\n cursor: pointer;\n font-size: 14px;\n color: var(--atm-text-primary);\n gap: 10px;\n transition: background 0.2s;\n}\n.atm-profile-option:hover {\n background: var(--atm-bg-secondary);\n}\n.atm-profile-icon {\n width: 18px;\n height: 18px;\n color: var(--atm-text-secondary);\n}\n.atm-fade-enter-active,\n.atm-fade-leave-active {\n transition: opacity 0.2s, transform 0.2s;\n}\n.atm-fade-enter-from,\n.atm-fade-leave-to {\n opacity: 0;\n transform: translateY(-10px);\n}\n.atm-profile-modal {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 9999;\n display: flex;\n justify-content: center;\n align-items: center;\n overflow-y: auto;\n padding: 1.5rem;\n}\n.atm-profile-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.5);\n pointer-events: none;\n}\n.atm-profile-content {\n position: relative;\n width: 100%;\n max-width: 450px;\n background: var(--atm-bg-primary);\n border-radius: 12px;\n box-shadow: var(--atm-shadow-md);\n z-index: 1;\n max-height: calc(100vh - 3rem);\n display: flex;\n flex-direction: column;\n margin: auto;\n}\n.atm-profile-header {\n padding: 16px;\n border-bottom: 1px solid var(--atm-border-color);\n display: flex;\n align-items: center;\n}\n.atm-profile-close {\n background: none;\n border: none;\n font-size: 24px;\n cursor: pointer;\n padding: 8px;\n margin-right: 12px;\n color: var(--atm-text-secondary);\n transition: color 0.2s;\n}\n.atm-profile-close:hover {\n color: var(--atm-text-primary);\n}\n.atm-profile-title {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--atm-text-primary);\n}\n.atm-profile-tabs {\n display: flex;\n border-bottom: 1px solid var(--atm-border-color);\n background: var(--atm-bg-secondary);\n}\n.atm-tab {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n padding: 12px 16px;\n background: none;\n border: none;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n color: var(--atm-text-secondary);\n transition: all 0.2s;\n}\n.atm-tab:hover {\n background: var(--atm-bg-tertiary);\n color: var(--atm-text-primary);\n}\n.atm-tab-active {\n color: var(--feed21a4) !important;\n background: var(--atm-bg-primary);\n border-bottom: 2px solid var(--feed21a4);\n}\n.atm-tab-icon {\n width: 16px;\n height: 16px;\n}\n.atm-profile-body {\n padding: 24px;\n text-align: center;\n overflow-y: auto;\n flex: 1;\n min-height: 0;\n}\n.atm-profile-avatar-large {\n width: 80px;\n height: 80px;\n border-radius: 50%;\n background-color: var(--feed21a4);\n color: #ffffff;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 24px;\n font-weight: 600;\n margin: 0 auto 20px;\n}\n.atm-profile-info-grid {\n width: 100%;\n text-align: left;\n margin-top: 20px;\n}\n.atm-profile-info-row {\n display: flex;\n flex-direction: column;\n margin-bottom: 16px;\n}\n.atm-profile-info-label {\n font-size: 13px;\n color: var(--atm-text-secondary);\n margin-bottom: 4px;\n}\n.atm-profile-info-value {\n font-size: 16px;\n color: var(--atm-text-primary);\n font-weight: 500;\n}\n.atm-profile-edit-form {\n width: 100%;\n text-align: left;\n margin-top: 20px;\n}\n.atm-form-group {\n margin-bottom: 16px;\n}\n.atm-input-label {\n display: block;\n margin-bottom: 6px;\n font-size: 13px;\n color: var(--atm-text-primary);\n font-weight: 500;\n}\n.atm-input-field {\n width: 100%;\n padding: 10px 12px;\n background: var(--atm-input-bg);\n color: var(--atm-text-primary);\n border: 1px solid var(--atm-input-border);\n border-radius: 6px;\n font-size: 14px;\n box-sizing: border-box;\n transition: border-color 0.2s;\n}\n.atm-input-field:focus {\n outline: none;\n border-color: var(--feed21a4);\n box-shadow: 0 0 0 2px rgba(74, 144, 226, 0.1);\n}\n.atm-form-actions {\n display: flex;\n gap: 12px;\n margin-top: 24px;\n}\n.atm-save-btn,\n.atm-edit-profile-btn,\n.atm-reset-password-btn,\n.atm-add-email-btn {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px;\n background: var(--feed21a4);\n color: #FFF;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: opacity 0.2s;\n justify-content: center;\n}\n.atm-save-btn:hover,\n.atm-edit-profile-btn:hover,\n.atm-reset-password-btn:hover,\n.atm-add-email-btn:hover {\n opacity: 0.9;\n}\n.atm-cancel-btn {\n display: flex;\n align-items: center;\n gap: 8px;\n flex: 1;\n padding: 12px;\n background: var(--atm-bg-secondary);\n color: var(--atm-text-secondary);\n border: 1px solid var(--atm-border-color);\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s;\n justify-content: center;\n}\n.atm-cancel-btn:hover {\n background: var(--atm-bg-tertiary);\n color: var(--atm-text-primary);\n}\n.atm-btn-icon {\n width: 16px;\n height: 16px;\n}\n.atm-email-add-section {\n margin-bottom: 24px;\n text-align: left;\n}\n.atm-email-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n text-align: left;\n}\n.atm-email-item {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px;\n background: var(--atm-bg-secondary);\n border-radius: 6px;\n border: 1px solid var(--atm-border-color);\n}\n.atm-email-info {\n display: flex;\n flex-direction: column;\n gap: 8px;\n flex: 1;\n}\n.atm-email-address {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--atm-text-primary);\n}\n.atm-email-icon {\n width: 16px;\n height: 16px;\n color: var(--v5c6febbc);\n}\n.atm-email-badges {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n.atm-badge {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 2px 8px;\n font-size: 11px;\n font-weight: 500;\n border-radius: 12px;\n text-transform: uppercase;\n}\n.atm-badge-icon {\n width: 12px;\n height: 12px;\n}\n.atm-badge-primary {\n background: #e3f2fd;\n color: #1976d2;\n}\n.atm-badge-verified {\n background: #e8f5e8;\n color: #2e7d32;\n}\n.atm-badge-unverified {\n background: #fff3e0;\n color: #f57c00;\n}\n.atm-email-actions {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n.atm-verify-btn {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 6px 12px;\n background: var(--feed21a4);\n color: white;\n border: none;\n border-radius: 4px;\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: opacity 0.2s;\n}\n.atm-verify-btn:hover {\n opacity: 0.9;\n}\n.atm-delete-btn {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 6px 12px;\n background: #dc3545;\n color: white;\n border: none;\n border-radius: 4px;\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: opacity 0.2s;\n}\n.atm-delete-btn:hover {\n opacity: 0.9;\n}\n.atm-password-section {\n text-align: left;\n}\n.atm-sessions-section {\n text-align: left;\n}\n.atm-sessions-info {\n margin-bottom: 20px;\n}\n.atm-sessions-description {\n margin: 0;\n font-size: 14px;\n color: var(--atm-text-secondary);\n line-height: 1.5;\n}\n.atm-sessions-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n.atm-session-item {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px;\n background: var(--atm-bg-secondary);\n border-radius: 8px;\n border: 1px solid var(--atm-border-color);\n gap: 16px;\n}\n.atm-session-header {\n display: flex;\n gap: 12px;\n align-items: flex-start;\n}\n.atm-session-icon {\n width: 24px;\n height: 24px;\n color: var(--v5c6febbc);\n flex-shrink: 0;\n}\n.atm-session-details {\n flex: 1;\n min-width: 0;\n}\n.atm-session-title {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 4px;\n font-size: 15px;\n font-weight: 600;\n color: var(--atm-text-primary);\n}\n.atm-session-device-info {\n font-size: 13px;\n color: var(--atm-text-secondary);\n margin-bottom: 8px;\n}\n.atm-badge-current {\n background: #d1f4e0;\n color: #0f9d58;\n}\n.atm-session-timestamps {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n.atm-session-timestamp {\n display: flex;\n gap: 6px;\n font-size: 13px;\n color: var(--atm-text-secondary);\n}\n.atm-timestamp-label {\n font-weight: 500;\n color: var(--atm-text-primary);\n}\n.atm-session-actions {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.atm-close-session-btn {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 14px;\n background: #dc3545;\n color: white;\n border: none;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: opacity 0.2s;\n white-space: nowrap;\n}\n.atm-close-session-btn:hover {\n opacity: 0.9;\n}\n@media (max-width: 768px) {\n.atm-profile-button {\n padding: 6px 10px;\n gap: 6px;\n}\n.atm-profile-name {\n font-size: 13px;\n}\n.atm-profile-menu {\n width: 260px;\n}\n.atm-profile-modal {\n padding: 1rem;\n}\n.atm-profile-content {\n max-width: 90%;\n max-height: calc(100vh - 2rem);\n}\n.atm-profile-header {\n padding: 14px;\n}\n.atm-profile-title {\n font-size: 16px;\n}\n.atm-profile-body {\n padding: 20px;\n}\n.atm-tab {\n padding: 10px 12px;\n font-size: 13px;\n gap: 4px;\n}\n.atm-tab-icon {\n width: 14px;\n height: 14px;\n}\n.atm-profile-avatar-large {\n width: 70px;\n height: 70px;\n font-size: 22px;\n}\n.atm-email-item {\n flex-direction: column;\n gap: 12px;\n align-items: flex-start;\n}\n.atm-email-actions {\n flex-direction: row;\n width: 100%;\n}\n.atm-verify-btn,\n .atm-delete-btn {\n flex: 1;\n justify-content: center;\n}\n.atm-session-item {\n flex-direction: column;\n align-items: flex-start;\n}\n.atm-session-actions {\n width: 100%;\n}\n.atm-close-session-btn {\n width: 100%;\n justify-content: center;\n}\n}\n@media (max-width: 480px) {\n.atm-profile-button {\n padding: 4px 8px;\n gap: 4px;\n}\n.atm-profile-avatar {\n width: 28px;\n height: 28px;\n font-size: 11px;\n}\n.atm-profile-avatar.large {\n width: 40px;\n height: 40px;\n font-size: 14px;\n}\n.atm-profile-name {\n font-size: 12px;\n}\n.atm-profile-arrow {\n width: 14px;\n height: 14px;\n}\n.atm-profile-menu {\n width: calc(100vw - 20px);\n max-width: 240px;\n}\n.atm-profile-info {\n padding: 12px;\n gap: 10px;\n}\n.atm-profile-fullname {\n font-size: 13px;\n}\n.atm-profile-email {\n font-size: 12px;\n}\n.atm-profile-option {\n padding: 8px 12px;\n font-size: 13px;\n gap: 8px;\n}\n.atm-profile-icon {\n width: 16px;\n height: 16px;\n}\n.atm-profile-modal {\n padding: 0.5rem;\n}\n.atm-profile-content {\n max-width: 95%;\n max-height: calc(100vh - 1rem);\n}\n.atm-profile-header {\n padding: 12px;\n}\n.atm-profile-close {\n font-size: 20px;\n padding: 4px;\n margin-right: 8px;\n}\n.atm-profile-title {\n font-size: 15px;\n}\n.atm-profile-body {\n padding: 16px;\n}\n.atm-tab {\n padding: 8px 8px;\n font-size: 12px;\n gap: 3px;\n}\n.atm-tab-icon {\n width: 13px;\n height: 13px;\n}\n.atm-profile-avatar-large {\n width: 60px;\n height: 60px;\n font-size: 20px;\n margin-bottom: 16px;\n}\n.atm-profile-info-label {\n font-size: 12px;\n}\n.atm-profile-info-value {\n font-size: 14px;\n}\n.atm-input-label {\n font-size: 12px;\n}\n.atm-input-field {\n padding: 8px 10px;\n font-size: 13px;\n}\n.atm-form-actions {\n flex-direction: column;\n gap: 8px;\n}\n.atm-save-btn,\n .atm-cancel-btn,\n .atm-edit-profile-btn,\n .atm-reset-password-btn {\n width: 100%;\n padding: 10px;\n font-size: 13px;\n}\n.atm-email-item {\n padding: 10px;\n}\n.atm-email-address {\n font-size: 13px;\n}\n.atm-badge {\n font-size: 10px;\n padding: 2px 6px;\n}\n}\n@media (max-width: 360px) {\n.atm-profile-button {\n padding: 4px 6px;\n}\n.atm-profile-avatar {\n width: 26px;\n height: 26px;\n font-size: 10px;\n}\n.atm-profile-name {\n display: none;\n}\n.atm-profile-menu {\n width: calc(100vw - 16px);\n max-width: 220px;\n}\n.atm-profile-modal {\n padding: 0.25rem;\n}\n.atm-profile-content {\n max-width: 98%;\n max-height: calc(100vh - 0.5rem);\n}\n.atm-profile-body {\n padding: 12px;\n}\n.atm-tab {\n padding: 8px 6px;\n font-size: 11px;\n flex-direction: column;\n gap: 2px;\n}\n.atm-profile-avatar-large {\n width: 50px;\n height: 50px;\n font-size: 18px;\n}\n.atm-email-item {\n padding: 8px;\n}\n}\n\n.atm-auth-buttons[data-v-0c63ecb8] {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n}\n@media (max-width: 768px) {\n.atm-auth-buttons[data-v-0c63ecb8] {\n gap: 14px;\n}\n}\n@media (max-width: 480px) {\n.atm-auth-buttons[data-v-0c63ecb8] {\n gap: 12px;\n flex-direction: column;\n}\n}\n@media (max-width: 360px) {\n.atm-auth-buttons[data-v-0c63ecb8] {\n gap: 10px;\n}\n}\n\n.atm-logout-btn[data-v-7157f989] {\n padding: 12px;\n margin-top: 8px;\n background: var(--v2ec0f896);\n color: #FFF;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: opacity 0.2s;\n min-height: 44px;\n}\n.atm-logout-btn[data-v-7157f989]:hover {\n opacity: 0.9;\n}\n@media (max-width: 768px) {\n.atm-logout-btn[data-v-7157f989] {\n padding: 11px;\n font-size: 13px;\n min-height: 42px;\n}\n}\n@media (max-width: 480px) {\n.atm-logout-btn[data-v-7157f989] {\n padding: 10px;\n font-size: 13px;\n min-height: 40px;\n}\n}\n@media (max-width: 360px) {\n.atm-logout-btn[data-v-7157f989] {\n padding: 9px;\n font-size: 12px;\n min-height: 38px;\n}\n}\n";
|
|
6
6
|
document.head.appendChild(style);
|
|
7
7
|
}
|
|
8
8
|
})();
|
|
9
|
-
import { inject, defineComponent, createElementBlock, openBlock, createElementVNode, normalizeStyle, createCommentVNode, toDisplayString, renderSlot,
|
|
9
|
+
import { inject, defineComponent, createElementBlock, openBlock, createElementVNode, normalizeStyle, createCommentVNode, toDisplayString, renderSlot, createBlock, Teleport, createVNode, Transition, withCtx, normalizeClass, useCssVars, computed, ref, onMounted, nextTick, watch, Fragment, unref, withModifiers, withDirectives, vModelText, renderList, createTextVNode, getCurrentInstance, onUnmounted, provide } from "vue";
|
|
10
10
|
import UniversalCookie from "universal-cookie";
|
|
11
11
|
import { AtmClient } from "@autenticar-me/client-js";
|
|
12
12
|
const writeAccessTokenInCookie = (accessToken) => {
|
|
@@ -190,7 +190,36 @@ const getDeviceToken = async (client) => {
|
|
|
190
190
|
throw error;
|
|
191
191
|
}
|
|
192
192
|
};
|
|
193
|
-
const _hoisted_1$7 = {
|
|
193
|
+
const _hoisted_1$7 = {
|
|
194
|
+
key: 0,
|
|
195
|
+
class: "atm-notification-container"
|
|
196
|
+
};
|
|
197
|
+
const _sfc_main$b = /* @__PURE__ */ defineComponent({
|
|
198
|
+
__name: "Notification",
|
|
199
|
+
props: {
|
|
200
|
+
show: { type: Boolean },
|
|
201
|
+
message: {},
|
|
202
|
+
type: { default: "error" }
|
|
203
|
+
},
|
|
204
|
+
setup(__props) {
|
|
205
|
+
return (_ctx, _cache) => {
|
|
206
|
+
return openBlock(), createBlock(Teleport, { to: "body" }, [
|
|
207
|
+
createVNode(Transition, { name: "atm-notification" }, {
|
|
208
|
+
default: withCtx(() => [
|
|
209
|
+
__props.show ? (openBlock(), createElementBlock("div", _hoisted_1$7, [
|
|
210
|
+
createElementVNode("div", {
|
|
211
|
+
class: normalizeClass(["atm-notification", `atm-notification--${__props.type}`])
|
|
212
|
+
}, toDisplayString(__props.message), 3)
|
|
213
|
+
])) : createCommentVNode("", true)
|
|
214
|
+
]),
|
|
215
|
+
_: 1
|
|
216
|
+
})
|
|
217
|
+
]);
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
const Notification = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["__scopeId", "data-v-f5e47084"]]);
|
|
222
|
+
const _hoisted_1$6 = { class: "atm-login-container" };
|
|
194
223
|
const _hoisted_2$2 = { class: "atm-logo-container" };
|
|
195
224
|
const _hoisted_3$2 = ["src"];
|
|
196
225
|
const _hoisted_4$2 = {
|
|
@@ -252,11 +281,12 @@ const _hoisted_28$1 = {
|
|
|
252
281
|
key: 0,
|
|
253
282
|
class: "atm-signup-text"
|
|
254
283
|
};
|
|
255
|
-
const _sfc_main$
|
|
284
|
+
const _sfc_main$a = /* @__PURE__ */ defineComponent({
|
|
256
285
|
__name: "SignIn",
|
|
257
286
|
props: {
|
|
258
|
-
|
|
259
|
-
|
|
287
|
+
fallbackRedirectUrl: { default: "/" },
|
|
288
|
+
initialValues: {},
|
|
289
|
+
signUpUrl: {}
|
|
260
290
|
},
|
|
261
291
|
emits: [
|
|
262
292
|
"completed",
|
|
@@ -264,15 +294,29 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
|
|
|
264
294
|
],
|
|
265
295
|
setup(__props, { emit: __emit }) {
|
|
266
296
|
useCssVars((_ctx) => ({
|
|
267
|
-
"
|
|
268
|
-
"
|
|
297
|
+
"v70f1a692": atmPrimaryColor.value,
|
|
298
|
+
"v4a1729f6": atmSecondaryColor.value
|
|
269
299
|
}));
|
|
270
300
|
const props = __props;
|
|
271
301
|
const emit = __emit;
|
|
272
|
-
const
|
|
302
|
+
const notification = ref({
|
|
303
|
+
show: false,
|
|
304
|
+
message: "",
|
|
305
|
+
type: "error"
|
|
306
|
+
});
|
|
307
|
+
const showNotification = (message, type = "error") => {
|
|
308
|
+
notification.value = {
|
|
309
|
+
show: true,
|
|
310
|
+
message,
|
|
311
|
+
type
|
|
312
|
+
};
|
|
313
|
+
setTimeout(() => {
|
|
314
|
+
notification.value.show = false;
|
|
315
|
+
}, 3e3);
|
|
316
|
+
};
|
|
273
317
|
const form = ref({
|
|
274
|
-
emailAddress: "",
|
|
275
|
-
password: ""
|
|
318
|
+
emailAddress: props.initialValues?.emailAddress || "",
|
|
319
|
+
password: props.initialValues?.password || ""
|
|
276
320
|
});
|
|
277
321
|
const currentStep = ref("email");
|
|
278
322
|
const signInStep = ref(null);
|
|
@@ -291,7 +335,7 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
|
|
|
291
335
|
const { configurations } = useAtm();
|
|
292
336
|
const atmPrimaryColor = computed(() => configurations.value?.design?.primaryColor);
|
|
293
337
|
const atmSecondaryColor = computed(() => configurations.value?.design?.secondaryColor);
|
|
294
|
-
const logoUrl = computed(() => configurations.value?.project?.logo
|
|
338
|
+
const logoUrl = computed(() => configurations.value?.project?.logo);
|
|
295
339
|
const isRegisterEnabled = computed(() => configurations.value?.register?.enable !== false);
|
|
296
340
|
const buttonText = computed(() => {
|
|
297
341
|
if (currentStep.value === "email") return "Entrar";
|
|
@@ -439,13 +483,13 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
|
|
|
439
483
|
showNotification?.("Login realizado com sucesso!", "success");
|
|
440
484
|
setTimeout(() => {
|
|
441
485
|
emit("completed");
|
|
442
|
-
if (props.
|
|
486
|
+
if (props.fallbackRedirectUrl) {
|
|
443
487
|
const instance = getCurrentInstance();
|
|
444
488
|
const router = instance?.appContext.config.globalProperties.$router;
|
|
445
489
|
if (router) {
|
|
446
|
-
router.push(props.
|
|
490
|
+
router.push(props.fallbackRedirectUrl);
|
|
447
491
|
} else {
|
|
448
|
-
window.location.href = props.
|
|
492
|
+
window.location.href = props.fallbackRedirectUrl;
|
|
449
493
|
}
|
|
450
494
|
}
|
|
451
495
|
}, 1e3);
|
|
@@ -500,13 +544,13 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
|
|
|
500
544
|
}
|
|
501
545
|
};
|
|
502
546
|
const signUp = () => {
|
|
503
|
-
if (props.
|
|
547
|
+
if (props.signUpUrl) {
|
|
504
548
|
const instance = getCurrentInstance();
|
|
505
549
|
const router = instance?.appContext.config.globalProperties.$router;
|
|
506
550
|
if (router) {
|
|
507
|
-
router.push(props.
|
|
551
|
+
router.push(props.signUpUrl);
|
|
508
552
|
} else {
|
|
509
|
-
window.location.href = props.
|
|
553
|
+
window.location.href = props.signUpUrl;
|
|
510
554
|
}
|
|
511
555
|
} else {
|
|
512
556
|
emit("sign-up");
|
|
@@ -527,157 +571,135 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
|
|
|
527
571
|
});
|
|
528
572
|
});
|
|
529
573
|
return (_ctx, _cache) => {
|
|
530
|
-
return
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
"
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
"
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
createElementVNode("button", {
|
|
577
|
-
type: "button",
|
|
578
|
-
onClick: _cache[2] || (_cache[2] = ($event) => sendResetPasswordLink()),
|
|
579
|
-
class: "atm-forgot-password-link",
|
|
574
|
+
return openBlock(), createElementBlock(Fragment, null, [
|
|
575
|
+
createVNode(Notification, {
|
|
576
|
+
show: notification.value.show,
|
|
577
|
+
message: notification.value.message,
|
|
578
|
+
type: notification.value.type
|
|
579
|
+
}, null, 8, ["show", "message", "type"]),
|
|
580
|
+
unref(configurations) ? (openBlock(), createElementBlock("form", {
|
|
581
|
+
key: 0,
|
|
582
|
+
onSubmit: _cache[4] || (_cache[4] = withModifiers(($event) => submit(), ["prevent"]))
|
|
583
|
+
}, [
|
|
584
|
+
createElementVNode("div", _hoisted_1$6, [
|
|
585
|
+
createElementVNode("div", _hoisted_2$2, [
|
|
586
|
+
logoUrl.value ? (openBlock(), createElementBlock("img", {
|
|
587
|
+
key: 0,
|
|
588
|
+
src: logoUrl.value,
|
|
589
|
+
alt: "Logo",
|
|
590
|
+
class: "atm-logo-image"
|
|
591
|
+
}, null, 8, _hoisted_3$2)) : (openBlock(), createElementBlock("div", _hoisted_4$2, "Logo"))
|
|
592
|
+
]),
|
|
593
|
+
createElementVNode("h2", _hoisted_5$2, toDisplayString(unref(configurations).project.name), 1),
|
|
594
|
+
_cache[13] || (_cache[13] = createElementVNode("p", { class: "atm-welcome-text" }, "Bem-vindo de volta! Faça login para continuar", -1)),
|
|
595
|
+
currentStep.value !== "forgot_password_message" ? (openBlock(), createElementBlock("div", _hoisted_6$2, [
|
|
596
|
+
showEmailField.value ? (openBlock(), createElementBlock("div", _hoisted_7$2, [
|
|
597
|
+
createElementVNode("label", _hoisted_8$2, toDisplayString(labelText.value), 1),
|
|
598
|
+
withDirectives(createElementVNode("input", {
|
|
599
|
+
ref_key: "emailInput",
|
|
600
|
+
ref: emailInput,
|
|
601
|
+
type: "text",
|
|
602
|
+
class: "atm-input-field",
|
|
603
|
+
placeholder: inputPlaceholder.value,
|
|
604
|
+
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => form.value.emailAddress = $event),
|
|
605
|
+
disabled: currentStep.value !== "email" || isLoading.value
|
|
606
|
+
}, null, 8, _hoisted_9$2), [
|
|
607
|
+
[vModelText, form.value.emailAddress]
|
|
608
|
+
]),
|
|
609
|
+
fieldErrors.value.emailAddress.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_10$2, toDisplayString(fieldErrors.value.emailAddress[0]), 1)) : createCommentVNode("", true)
|
|
610
|
+
])) : createCommentVNode("", true),
|
|
611
|
+
showPasswordField.value ? (openBlock(), createElementBlock("div", _hoisted_11$2, [
|
|
612
|
+
_cache[5] || (_cache[5] = createElementVNode("label", { class: "atm-input-label" }, "Senha", -1)),
|
|
613
|
+
withDirectives(createElementVNode("input", {
|
|
614
|
+
ref_key: "passwordInput",
|
|
615
|
+
ref: passwordInput,
|
|
616
|
+
type: "password",
|
|
617
|
+
class: "atm-input-field",
|
|
618
|
+
placeholder: "Digite sua senha",
|
|
619
|
+
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => form.value.password = $event),
|
|
580
620
|
disabled: isLoading.value
|
|
581
|
-
},
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(availableStrategies.value, (strategy) => {
|
|
588
|
-
return openBlock(), createElementBlock("button", {
|
|
589
|
-
key: strategy.strategy,
|
|
590
|
-
onClick: ($event) => selectStrategy(strategy),
|
|
621
|
+
}, null, 8, _hoisted_12$2), [
|
|
622
|
+
[vModelText, form.value.password]
|
|
623
|
+
]),
|
|
624
|
+
fieldErrors.value.password.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_13$2, toDisplayString(fieldErrors.value.password[0]), 1)) : createCommentVNode("", true),
|
|
625
|
+
createElementVNode("div", _hoisted_14$2, [
|
|
626
|
+
createElementVNode("button", {
|
|
591
627
|
type: "button",
|
|
592
|
-
|
|
628
|
+
onClick: _cache[2] || (_cache[2] = ($event) => sendResetPasswordLink()),
|
|
629
|
+
class: "atm-forgot-password-link",
|
|
593
630
|
disabled: isLoading.value
|
|
594
|
-
},
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
631
|
+
}, " Esqueci a minha senha ", 8, _hoisted_15$2)
|
|
632
|
+
])
|
|
633
|
+
])) : createCommentVNode("", true),
|
|
634
|
+
showStrategyChoice.value ? (openBlock(), createElementBlock("div", _hoisted_16$2, [
|
|
635
|
+
_cache[6] || (_cache[6] = createElementVNode("p", { class: "atm-strategy-title" }, "Escolha como deseja fazer login:", -1)),
|
|
636
|
+
createElementVNode("div", _hoisted_17$2, [
|
|
637
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(availableStrategies.value, (strategy) => {
|
|
638
|
+
return openBlock(), createElementBlock("button", {
|
|
639
|
+
key: strategy.strategy,
|
|
640
|
+
onClick: ($event) => selectStrategy(strategy),
|
|
641
|
+
type: "button",
|
|
642
|
+
class: "atm-strategy-button",
|
|
643
|
+
disabled: isLoading.value
|
|
644
|
+
}, [
|
|
645
|
+
strategy.strategy === "email_link" ? (openBlock(), createElementBlock("span", _hoisted_19$2, "Usar link por email")) : createCommentVNode("", true)
|
|
646
|
+
], 8, _hoisted_18$2);
|
|
647
|
+
}), 128))
|
|
648
|
+
])
|
|
649
|
+
])) : createCommentVNode("", true),
|
|
650
|
+
currentStep.value === "email_link" ? (openBlock(), createElementBlock("div", _hoisted_20$2, [..._cache[7] || (_cache[7] = [
|
|
651
|
+
createElementVNode("p", { class: "atm-email-link-text" }, " Link de verificação enviado para seu email. Verifique sua caixa de entrada. ", -1)
|
|
652
|
+
])])) : createCommentVNode("", true)
|
|
653
|
+
])) : (openBlock(), createElementBlock("div", _hoisted_21$2, [
|
|
654
|
+
createElementVNode("p", null, [
|
|
655
|
+
_cache[8] || (_cache[8] = createTextVNode("Foi enviado um link para resetar a senha para o email ", -1)),
|
|
656
|
+
createElementVNode("strong", null, toDisplayString(form.value.emailAddress), 1),
|
|
657
|
+
_cache[9] || (_cache[9] = createTextVNode(". Verifique sua caixa de entrada.", -1))
|
|
598
658
|
])
|
|
599
|
-
]))
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
659
|
+
])),
|
|
660
|
+
buttonText.value ? (openBlock(), createElementBlock("button", {
|
|
661
|
+
key: 2,
|
|
662
|
+
type: "submit",
|
|
663
|
+
class: "atm-login-button",
|
|
664
|
+
disabled: isLoading.value
|
|
665
|
+
}, [
|
|
666
|
+
!isLoading.value ? (openBlock(), createElementBlock("span", _hoisted_23$2, toDisplayString(buttonText.value), 1)) : (openBlock(), createElementBlock("span", _hoisted_24$2, [
|
|
667
|
+
_cache[10] || (_cache[10] = createElementVNode("svg", {
|
|
668
|
+
class: "spinner-svg",
|
|
669
|
+
viewBox: "0 0 50 50"
|
|
670
|
+
}, [
|
|
671
|
+
createElementVNode("circle", {
|
|
672
|
+
class: "spinner-circle",
|
|
673
|
+
cx: "25",
|
|
674
|
+
cy: "25",
|
|
675
|
+
r: "20",
|
|
676
|
+
fill: "none",
|
|
677
|
+
"stroke-width": "5"
|
|
678
|
+
})
|
|
679
|
+
], -1)),
|
|
680
|
+
currentStep.value === "email" ? (openBlock(), createElementBlock("span", _hoisted_25$2, "Verificando...")) : (openBlock(), createElementBlock("span", _hoisted_26$2, "Entrando..."))
|
|
681
|
+
]))
|
|
682
|
+
], 8, _hoisted_22$2)) : createCommentVNode("", true),
|
|
683
|
+
createElementVNode("div", _hoisted_27$2, [
|
|
684
|
+
isRegisterEnabled.value ? (openBlock(), createElementBlock("p", _hoisted_28$1, [
|
|
685
|
+
_cache[11] || (_cache[11] = createTextVNode(" Ainda não tem uma conta? ", -1)),
|
|
686
|
+
createElementVNode("a", {
|
|
687
|
+
onClick: _cache[3] || (_cache[3] = ($event) => signUp()),
|
|
688
|
+
class: "atm-signup-link"
|
|
689
|
+
}, "Cadastre aqui")
|
|
690
|
+
])) : createCommentVNode("", true),
|
|
691
|
+
_cache[12] || (_cache[12] = createElementVNode("p", { class: "atm-powered-by" }, [
|
|
692
|
+
createTextVNode(" Secured by "),
|
|
693
|
+
createElementVNode("strong", null, "Autenticar.me")
|
|
694
|
+
], -1))
|
|
608
695
|
])
|
|
609
|
-
])),
|
|
610
|
-
buttonText.value ? (openBlock(), createElementBlock("button", {
|
|
611
|
-
key: 2,
|
|
612
|
-
type: "submit",
|
|
613
|
-
class: "atm-login-button",
|
|
614
|
-
disabled: isLoading.value
|
|
615
|
-
}, [
|
|
616
|
-
!isLoading.value ? (openBlock(), createElementBlock("span", _hoisted_23$2, toDisplayString(buttonText.value), 1)) : (openBlock(), createElementBlock("span", _hoisted_24$2, [
|
|
617
|
-
_cache[10] || (_cache[10] = createElementVNode("svg", {
|
|
618
|
-
class: "spinner-svg",
|
|
619
|
-
viewBox: "0 0 50 50"
|
|
620
|
-
}, [
|
|
621
|
-
createElementVNode("circle", {
|
|
622
|
-
class: "spinner-circle",
|
|
623
|
-
cx: "25",
|
|
624
|
-
cy: "25",
|
|
625
|
-
r: "20",
|
|
626
|
-
fill: "none",
|
|
627
|
-
"stroke-width": "5"
|
|
628
|
-
})
|
|
629
|
-
], -1)),
|
|
630
|
-
currentStep.value === "email" ? (openBlock(), createElementBlock("span", _hoisted_25$2, "Verificando...")) : (openBlock(), createElementBlock("span", _hoisted_26$2, "Entrando..."))
|
|
631
|
-
]))
|
|
632
|
-
], 8, _hoisted_22$2)) : createCommentVNode("", true),
|
|
633
|
-
createElementVNode("div", _hoisted_27$2, [
|
|
634
|
-
isRegisterEnabled.value ? (openBlock(), createElementBlock("p", _hoisted_28$1, [
|
|
635
|
-
_cache[11] || (_cache[11] = createTextVNode(" Ainda não tem uma conta? ", -1)),
|
|
636
|
-
createElementVNode("a", {
|
|
637
|
-
onClick: _cache[3] || (_cache[3] = ($event) => signUp()),
|
|
638
|
-
class: "atm-signup-link"
|
|
639
|
-
}, "Cadastre aqui")
|
|
640
|
-
])) : createCommentVNode("", true),
|
|
641
|
-
_cache[12] || (_cache[12] = createElementVNode("p", { class: "atm-powered-by" }, [
|
|
642
|
-
createTextVNode(" Secured by "),
|
|
643
|
-
createElementVNode("strong", null, "Autenticar.me")
|
|
644
|
-
], -1))
|
|
645
696
|
])
|
|
646
|
-
])
|
|
647
|
-
],
|
|
648
|
-
};
|
|
649
|
-
}
|
|
650
|
-
});
|
|
651
|
-
const SignIn = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["__scopeId", "data-v-4e744a2c"]]);
|
|
652
|
-
const _hoisted_1$6 = {
|
|
653
|
-
key: 0,
|
|
654
|
-
class: "atm-notification-container"
|
|
655
|
-
};
|
|
656
|
-
const _sfc_main$a = /* @__PURE__ */ defineComponent({
|
|
657
|
-
__name: "Notification",
|
|
658
|
-
props: {
|
|
659
|
-
show: { type: Boolean },
|
|
660
|
-
message: {},
|
|
661
|
-
type: { default: "error" }
|
|
662
|
-
},
|
|
663
|
-
setup(__props) {
|
|
664
|
-
return (_ctx, _cache) => {
|
|
665
|
-
return openBlock(), createBlock(Teleport, { to: "body" }, [
|
|
666
|
-
createVNode(Transition, { name: "atm-notification" }, {
|
|
667
|
-
default: withCtx(() => [
|
|
668
|
-
__props.show ? (openBlock(), createElementBlock("div", _hoisted_1$6, [
|
|
669
|
-
createElementVNode("div", {
|
|
670
|
-
class: normalizeClass(["atm-notification", `atm-notification--${__props.type}`])
|
|
671
|
-
}, toDisplayString(__props.message), 3)
|
|
672
|
-
])) : createCommentVNode("", true)
|
|
673
|
-
]),
|
|
674
|
-
_: 1
|
|
675
|
-
})
|
|
676
|
-
]);
|
|
697
|
+
], 32)) : createCommentVNode("", true)
|
|
698
|
+
], 64);
|
|
677
699
|
};
|
|
678
700
|
}
|
|
679
701
|
});
|
|
680
|
-
const
|
|
702
|
+
const SignIn = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__scopeId", "data-v-b88e6b76"]]);
|
|
681
703
|
const _hoisted_1$5 = { class: "atm-signup-container" };
|
|
682
704
|
const _hoisted_2$1 = { class: "atm-logo-container" };
|
|
683
705
|
const _hoisted_3$1 = ["src"];
|
|
@@ -741,24 +763,25 @@ const _hoisted_27$1 = { class: "atm-login-text" };
|
|
|
741
763
|
const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
742
764
|
__name: "SignUp",
|
|
743
765
|
props: {
|
|
744
|
-
|
|
745
|
-
|
|
766
|
+
fallbackRedirectUrl: { default: "/" },
|
|
767
|
+
initialValues: {},
|
|
768
|
+
signInUrl: {}
|
|
746
769
|
},
|
|
747
770
|
emits: ["completed", "sign-in"],
|
|
748
771
|
setup(__props, { emit: __emit }) {
|
|
749
772
|
useCssVars((_ctx) => ({
|
|
750
|
-
"
|
|
751
|
-
"
|
|
773
|
+
"v2dc4b763": atmPrimaryColor.value,
|
|
774
|
+
"b00c0a9e": atmSecondaryColor.value
|
|
752
775
|
}));
|
|
753
776
|
const props = __props;
|
|
754
777
|
const emit = __emit;
|
|
755
778
|
const { configurations } = useAtm();
|
|
756
779
|
const form = ref({
|
|
757
|
-
first_name: "",
|
|
758
|
-
last_name: "",
|
|
759
|
-
email_address: "",
|
|
760
|
-
password: "",
|
|
761
|
-
confirm_password: ""
|
|
780
|
+
first_name: props.initialValues?.first_name || "",
|
|
781
|
+
last_name: props.initialValues?.last_name || "",
|
|
782
|
+
email_address: props.initialValues?.email_address || "",
|
|
783
|
+
password: props.initialValues?.password || "",
|
|
784
|
+
confirm_password: props.initialValues?.confirm_password || ""
|
|
762
785
|
});
|
|
763
786
|
const notification = ref({
|
|
764
787
|
show: false,
|
|
@@ -796,7 +819,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
|
796
819
|
});
|
|
797
820
|
const atmPrimaryColor = computed(() => configurations.value?.design?.primaryColor);
|
|
798
821
|
const atmSecondaryColor = computed(() => configurations.value?.design?.secondaryColor);
|
|
799
|
-
const logoUrl = computed(() => configurations.value?.project?.logo
|
|
822
|
+
const logoUrl = computed(() => configurations.value?.project?.logo);
|
|
800
823
|
const hasFirstName = computed(() => configurations.value?.firstName?.required === true);
|
|
801
824
|
const hasLastName = computed(() => configurations.value?.lastName?.required === true);
|
|
802
825
|
const hasPassword = computed(() => configurations.value?.password?.enable !== false);
|
|
@@ -892,13 +915,13 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
|
892
915
|
showNotification("Login realizado com sucesso!", "success");
|
|
893
916
|
setTimeout(() => {
|
|
894
917
|
emit("completed");
|
|
895
|
-
if (props.
|
|
918
|
+
if (props.fallbackRedirectUrl) {
|
|
896
919
|
const instance = getCurrentInstance();
|
|
897
920
|
const router = instance?.appContext.config.globalProperties.$router;
|
|
898
921
|
if (router) {
|
|
899
|
-
router.push(props.
|
|
922
|
+
router.push(props.fallbackRedirectUrl);
|
|
900
923
|
} else {
|
|
901
|
-
window.location.href = props.
|
|
924
|
+
window.location.href = props.fallbackRedirectUrl;
|
|
902
925
|
}
|
|
903
926
|
}
|
|
904
927
|
}, 1e3);
|
|
@@ -912,13 +935,13 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
|
912
935
|
}
|
|
913
936
|
};
|
|
914
937
|
const signIn = () => {
|
|
915
|
-
if (props.
|
|
938
|
+
if (props.signInUrl) {
|
|
916
939
|
const instance = getCurrentInstance();
|
|
917
940
|
const router = instance?.appContext.config.globalProperties.$router;
|
|
918
941
|
if (router) {
|
|
919
|
-
router.push(props.
|
|
942
|
+
router.push(props.signInUrl);
|
|
920
943
|
} else {
|
|
921
|
-
window.location.href = props.
|
|
944
|
+
window.location.href = props.signInUrl;
|
|
922
945
|
}
|
|
923
946
|
} else {
|
|
924
947
|
emit("sign-in");
|
|
@@ -1056,23 +1079,30 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
|
1056
1079
|
};
|
|
1057
1080
|
}
|
|
1058
1081
|
});
|
|
1059
|
-
const SignUp = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["__scopeId", "data-v-
|
|
1082
|
+
const SignUp = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["__scopeId", "data-v-83e9452d"]]);
|
|
1060
1083
|
const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
1061
1084
|
__name: "SignInModal",
|
|
1062
1085
|
props: {
|
|
1063
|
-
|
|
1064
|
-
|
|
1086
|
+
fallbackRedirectUrl: { default: "/" },
|
|
1087
|
+
signUpUrl: {}
|
|
1065
1088
|
},
|
|
1066
1089
|
emits: [
|
|
1067
1090
|
"close"
|
|
1068
1091
|
],
|
|
1069
1092
|
setup(__props, { emit: __emit }) {
|
|
1093
|
+
const props = __props;
|
|
1070
1094
|
const emit = __emit;
|
|
1071
1095
|
const close = () => {
|
|
1072
1096
|
emit("close");
|
|
1073
1097
|
};
|
|
1074
1098
|
const component = ref("sign-in");
|
|
1075
|
-
const signUp = () =>
|
|
1099
|
+
const signUp = () => {
|
|
1100
|
+
if (props.signUpUrl) {
|
|
1101
|
+
window.location.href = props.signUpUrl;
|
|
1102
|
+
} else {
|
|
1103
|
+
component.value = "sign-up";
|
|
1104
|
+
}
|
|
1105
|
+
};
|
|
1076
1106
|
const signIn = () => component.value = "sign-in";
|
|
1077
1107
|
const windowWidth = ref(typeof window !== "undefined" ? window.innerWidth : 1024);
|
|
1078
1108
|
const maxWidth = computed(() => {
|
|
@@ -1098,17 +1128,16 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
|
1098
1128
|
default: withCtx(() => [
|
|
1099
1129
|
component.value === "sign-in" ? (openBlock(), createBlock(SignIn, {
|
|
1100
1130
|
key: 0,
|
|
1101
|
-
|
|
1102
|
-
signUpLink: __props.signUpLink,
|
|
1131
|
+
fallbackRedirectUrl: __props.fallbackRedirectUrl,
|
|
1103
1132
|
onSignUp: _cache[0] || (_cache[0] = ($event) => signUp()),
|
|
1104
1133
|
onCompleted: _cache[1] || (_cache[1] = ($event) => close())
|
|
1105
|
-
}, null, 8, ["
|
|
1134
|
+
}, null, 8, ["fallbackRedirectUrl"])) : createCommentVNode("", true),
|
|
1106
1135
|
component.value === "sign-up" ? (openBlock(), createBlock(SignUp, {
|
|
1107
1136
|
key: 1,
|
|
1108
|
-
|
|
1137
|
+
fallbackRedirectUrl: __props.fallbackRedirectUrl,
|
|
1109
1138
|
onSignIn: _cache[2] || (_cache[2] = ($event) => signIn()),
|
|
1110
1139
|
onCompleted: _cache[3] || (_cache[3] = ($event) => close())
|
|
1111
|
-
}, null, 8, ["
|
|
1140
|
+
}, null, 8, ["fallbackRedirectUrl"])) : createCommentVNode("", true)
|
|
1112
1141
|
]),
|
|
1113
1142
|
_: 1
|
|
1114
1143
|
}, 8, ["max-width"]);
|
|
@@ -1118,48 +1147,27 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
|
1118
1147
|
const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
1119
1148
|
__name: "SignInButton",
|
|
1120
1149
|
props: {
|
|
1121
|
-
|
|
1122
|
-
|
|
1150
|
+
fallbackRedirectUrl: {},
|
|
1151
|
+
signUpUrl: {}
|
|
1123
1152
|
},
|
|
1124
1153
|
setup(__props) {
|
|
1125
1154
|
useCssVars((_ctx) => ({
|
|
1126
|
-
"
|
|
1155
|
+
"v12e673a0": atmPrimaryColor.value
|
|
1127
1156
|
}));
|
|
1128
1157
|
const showSignInModal = ref(false);
|
|
1129
1158
|
const { configurations } = useAtm();
|
|
1130
1159
|
const atmPrimaryColor = computed(() => configurations.value?.design?.primaryColor);
|
|
1131
|
-
const notification = ref({
|
|
1132
|
-
show: false,
|
|
1133
|
-
message: "",
|
|
1134
|
-
type: "error"
|
|
1135
|
-
});
|
|
1136
|
-
const showNotification = (message, type = "error") => {
|
|
1137
|
-
notification.value = {
|
|
1138
|
-
show: true,
|
|
1139
|
-
message,
|
|
1140
|
-
type
|
|
1141
|
-
};
|
|
1142
|
-
setTimeout(() => {
|
|
1143
|
-
notification.value.show = false;
|
|
1144
|
-
}, 3e3);
|
|
1145
|
-
};
|
|
1146
|
-
provide("showNotification", showNotification);
|
|
1147
1160
|
const signIn = () => {
|
|
1148
1161
|
showSignInModal.value = true;
|
|
1149
1162
|
};
|
|
1150
1163
|
return (_ctx, _cache) => {
|
|
1151
1164
|
return openBlock(), createElementBlock(Fragment, null, [
|
|
1152
|
-
createVNode(Notification, {
|
|
1153
|
-
show: notification.value.show,
|
|
1154
|
-
message: notification.value.message,
|
|
1155
|
-
type: notification.value.type
|
|
1156
|
-
}, null, 8, ["show", "message", "type"]),
|
|
1157
1165
|
showSignInModal.value ? (openBlock(), createBlock(_sfc_main$8, {
|
|
1158
1166
|
key: 0,
|
|
1159
|
-
|
|
1160
|
-
|
|
1167
|
+
fallbackRedirectUrl: __props.fallbackRedirectUrl,
|
|
1168
|
+
signUpUrl: __props.signUpUrl,
|
|
1161
1169
|
onClose: _cache[0] || (_cache[0] = () => showSignInModal.value = false)
|
|
1162
|
-
}, null, 8, ["
|
|
1170
|
+
}, null, 8, ["fallbackRedirectUrl", "signUpUrl"])) : createCommentVNode("", true),
|
|
1163
1171
|
createElementVNode("button", {
|
|
1164
1172
|
onClick: _cache[1] || (_cache[1] = ($event) => signIn()),
|
|
1165
1173
|
class: "atm-signin-btn"
|
|
@@ -1168,7 +1176,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
|
1168
1176
|
};
|
|
1169
1177
|
}
|
|
1170
1178
|
});
|
|
1171
|
-
const SignInButton = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__scopeId", "data-v-
|
|
1179
|
+
const SignInButton = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__scopeId", "data-v-43bf662d"]]);
|
|
1172
1180
|
const _hoisted_1$4 = {
|
|
1173
1181
|
key: 2,
|
|
1174
1182
|
class: "atm-registration-disabled"
|
|
@@ -1176,13 +1184,14 @@ const _hoisted_1$4 = {
|
|
|
1176
1184
|
const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
1177
1185
|
__name: "SignUpModal",
|
|
1178
1186
|
props: {
|
|
1179
|
-
|
|
1180
|
-
|
|
1187
|
+
fallbackRedirectUrl: { default: "/" },
|
|
1188
|
+
signInUrl: {}
|
|
1181
1189
|
},
|
|
1182
1190
|
emits: [
|
|
1183
1191
|
"close"
|
|
1184
1192
|
],
|
|
1185
1193
|
setup(__props, { emit: __emit }) {
|
|
1194
|
+
const props = __props;
|
|
1186
1195
|
const { configurations } = useAtm();
|
|
1187
1196
|
const emit = __emit;
|
|
1188
1197
|
const close = () => {
|
|
@@ -1191,7 +1200,13 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
1191
1200
|
const component = ref("sign-up");
|
|
1192
1201
|
const isRegistrationAllowed = computed(() => configurations.value?.register?.enable !== false);
|
|
1193
1202
|
const signUp = () => component.value = "sign-up";
|
|
1194
|
-
const signIn = () =>
|
|
1203
|
+
const signIn = () => {
|
|
1204
|
+
if (props.signInUrl) {
|
|
1205
|
+
window.location.href = props.signInUrl;
|
|
1206
|
+
} else {
|
|
1207
|
+
component.value = "sign-in";
|
|
1208
|
+
}
|
|
1209
|
+
};
|
|
1195
1210
|
const windowWidth = ref(typeof window !== "undefined" ? window.innerWidth : 1024);
|
|
1196
1211
|
const maxWidth = computed(() => {
|
|
1197
1212
|
if (windowWidth.value <= 360) return 340;
|
|
@@ -1216,17 +1231,16 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
1216
1231
|
default: withCtx(() => [
|
|
1217
1232
|
component.value === "sign-in" ? (openBlock(), createBlock(SignIn, {
|
|
1218
1233
|
key: 0,
|
|
1219
|
-
|
|
1234
|
+
fallbackRedirectUrl: __props.fallbackRedirectUrl,
|
|
1220
1235
|
onSignUp: _cache[0] || (_cache[0] = ($event) => signUp()),
|
|
1221
1236
|
onCompleted: _cache[1] || (_cache[1] = ($event) => close())
|
|
1222
|
-
}, null, 8, ["
|
|
1237
|
+
}, null, 8, ["fallbackRedirectUrl"])) : createCommentVNode("", true),
|
|
1223
1238
|
component.value === "sign-up" && isRegistrationAllowed.value ? (openBlock(), createBlock(SignUp, {
|
|
1224
1239
|
key: 1,
|
|
1225
|
-
|
|
1226
|
-
signInLink: __props.signInLink,
|
|
1240
|
+
fallbackRedirectUrl: __props.fallbackRedirectUrl,
|
|
1227
1241
|
onSignIn: _cache[2] || (_cache[2] = ($event) => signIn()),
|
|
1228
1242
|
onCompleted: _cache[3] || (_cache[3] = ($event) => close())
|
|
1229
|
-
}, null, 8, ["
|
|
1243
|
+
}, null, 8, ["fallbackRedirectUrl"])) : component.value === "sign-up" ? (openBlock(), createElementBlock("div", _hoisted_1$4, [
|
|
1230
1244
|
_cache[6] || (_cache[6] = createElementVNode("p", { class: "atm-disabled-message" }, "Registro não está disponível no momento", -1)),
|
|
1231
1245
|
createElementVNode("button", {
|
|
1232
1246
|
onClick: _cache[4] || (_cache[4] = ($event) => signIn()),
|
|
@@ -1239,16 +1253,16 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
1239
1253
|
};
|
|
1240
1254
|
}
|
|
1241
1255
|
});
|
|
1242
|
-
const SignUpModal = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__scopeId", "data-v-
|
|
1256
|
+
const SignUpModal = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__scopeId", "data-v-b58cb91d"]]);
|
|
1243
1257
|
const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
1244
1258
|
__name: "SignUpButton",
|
|
1245
1259
|
props: {
|
|
1246
|
-
|
|
1247
|
-
|
|
1260
|
+
fallbackRedirectUrl: {},
|
|
1261
|
+
signInUrl: {}
|
|
1248
1262
|
},
|
|
1249
1263
|
setup(__props) {
|
|
1250
1264
|
useCssVars((_ctx) => ({
|
|
1251
|
-
"
|
|
1265
|
+
"v1c336c46": atmPrimaryColor.value
|
|
1252
1266
|
}));
|
|
1253
1267
|
const showSignUpModal = ref(false);
|
|
1254
1268
|
const { configurations } = useAtm();
|
|
@@ -1261,10 +1275,10 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
|
1261
1275
|
return openBlock(), createElementBlock(Fragment, null, [
|
|
1262
1276
|
showSignUpModal.value ? (openBlock(), createBlock(SignUpModal, {
|
|
1263
1277
|
key: 0,
|
|
1264
|
-
|
|
1265
|
-
|
|
1278
|
+
fallbackRedirectUrl: __props.fallbackRedirectUrl,
|
|
1279
|
+
signInUrl: __props.signInUrl,
|
|
1266
1280
|
onClose: _cache[0] || (_cache[0] = () => showSignUpModal.value = false)
|
|
1267
|
-
}, null, 8, ["
|
|
1281
|
+
}, null, 8, ["fallbackRedirectUrl", "signInUrl"])) : createCommentVNode("", true),
|
|
1268
1282
|
isRegistrationAllowed.value ? (openBlock(), createElementBlock("button", {
|
|
1269
1283
|
key: 1,
|
|
1270
1284
|
onClick: _cache[1] || (_cache[1] = ($event) => signUp()),
|
|
@@ -1274,7 +1288,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
|
1274
1288
|
};
|
|
1275
1289
|
}
|
|
1276
1290
|
});
|
|
1277
|
-
const SignUpButton = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__scopeId", "data-v-
|
|
1291
|
+
const SignUpButton = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__scopeId", "data-v-d9ac9b54"]]);
|
|
1278
1292
|
const _hoisted_1$3 = {
|
|
1279
1293
|
key: 0,
|
|
1280
1294
|
class: "atm-profile-container"
|
|
@@ -2428,7 +2442,7 @@ const atmPlugin = {
|
|
|
2428
2442
|
const atmClient = new AtmClient({
|
|
2429
2443
|
domain: pluginOptions.domain,
|
|
2430
2444
|
publicKey: pluginOptions.publicKey,
|
|
2431
|
-
ssl:
|
|
2445
|
+
ssl: false
|
|
2432
2446
|
});
|
|
2433
2447
|
const client = ref(atmClient);
|
|
2434
2448
|
const user = ref(null);
|