@acorex-platform/module-auth-client 0.0.59 → 0.0.61

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.
Files changed (83) hide show
  1. package/fesm2022/{acorex-platform-module-auth-client-accept-invitation.component-Ct28GG3a.mjs → acorex-platform-module-auth-client-accept-invitation.component-Bq49K_8F.mjs} +3 -3
  2. package/fesm2022/{acorex-platform-module-auth-client-accept-invitation.component-Ct28GG3a.mjs.map → acorex-platform-module-auth-client-accept-invitation.component-Bq49K_8F.mjs.map} +1 -1
  3. package/fesm2022/{acorex-platform-module-auth-client-acorex-platform-module-auth-client-CQEt9bXJ.mjs → acorex-platform-module-auth-client-acorex-platform-module-auth-client-DINrCCAx.mjs} +75 -51
  4. package/fesm2022/acorex-platform-module-auth-client-acorex-platform-module-auth-client-DINrCCAx.mjs.map +1 -0
  5. package/fesm2022/{acorex-platform-module-auth-client-app-chooser.component-SUwPTueG.mjs → acorex-platform-module-auth-client-app-chooser.component-C1fUi_Mp.mjs} +4 -4
  6. package/fesm2022/{acorex-platform-module-auth-client-app-chooser.component-SUwPTueG.mjs.map → acorex-platform-module-auth-client-app-chooser.component-C1fUi_Mp.mjs.map} +1 -1
  7. package/fesm2022/{acorex-platform-module-auth-client-change-password.command-DRwzhNlO.mjs → acorex-platform-module-auth-client-change-password.command-UvBqwF9V.mjs} +48 -23
  8. package/fesm2022/acorex-platform-module-auth-client-change-password.command-UvBqwF9V.mjs.map +1 -0
  9. package/fesm2022/{acorex-platform-module-auth-client-change-photo.command-C1Fm_MdA.mjs → acorex-platform-module-auth-client-change-photo.command-2e7ZjiEf.mjs} +2 -2
  10. package/fesm2022/{acorex-platform-module-auth-client-change-photo.command-C1Fm_MdA.mjs.map → acorex-platform-module-auth-client-change-photo.command-2e7ZjiEf.mjs.map} +1 -1
  11. package/fesm2022/{acorex-platform-module-auth-client-get-user-activity.query-CLdmidQb.mjs → acorex-platform-module-auth-client-get-user-activity.query-BGOYJ4FC.mjs} +2 -2
  12. package/fesm2022/{acorex-platform-module-auth-client-get-user-activity.query-CLdmidQb.mjs.map → acorex-platform-module-auth-client-get-user-activity.query-BGOYJ4FC.mjs.map} +1 -1
  13. package/fesm2022/{acorex-platform-module-auth-client-lock-screen.command-CHbe_N-Z.mjs → acorex-platform-module-auth-client-lock-screen.command-BOKKr6WW.mjs} +2 -2
  14. package/fesm2022/{acorex-platform-module-auth-client-lock-screen.command-CHbe_N-Z.mjs.map → acorex-platform-module-auth-client-lock-screen.command-BOKKr6WW.mjs.map} +1 -1
  15. package/fesm2022/{acorex-platform-module-auth-client-login.module-BM3L_d8i.mjs → acorex-platform-module-auth-client-login.module-gi6wea8m.mjs} +3 -3
  16. package/fesm2022/{acorex-platform-module-auth-client-login.module-BM3L_d8i.mjs.map → acorex-platform-module-auth-client-login.module-gi6wea8m.mjs.map} +1 -1
  17. package/fesm2022/{acorex-platform-module-auth-client-manage-two-factor.command-BOM6_896.mjs → acorex-platform-module-auth-client-manage-two-factor.command-DRsNZWZF.mjs} +2 -2
  18. package/fesm2022/{acorex-platform-module-auth-client-manage-two-factor.command-BOM6_896.mjs.map → acorex-platform-module-auth-client-manage-two-factor.command-DRsNZWZF.mjs.map} +1 -1
  19. package/fesm2022/{acorex-platform-module-auth-client-oauth-callback.component-BgUSFibH.mjs → acorex-platform-module-auth-client-oauth-callback.component-DLrIDQXn.mjs} +3 -3
  20. package/fesm2022/{acorex-platform-module-auth-client-oauth-callback.component-BgUSFibH.mjs.map → acorex-platform-module-auth-client-oauth-callback.component-DLrIDQXn.mjs.map} +1 -1
  21. package/fesm2022/{acorex-platform-module-auth-client-open-sessions.command-Dq9eJ-bY.mjs → acorex-platform-module-auth-client-open-sessions.command-CwWtPiTG.mjs} +5 -5
  22. package/fesm2022/{acorex-platform-module-auth-client-open-sessions.command-Dq9eJ-bY.mjs.map → acorex-platform-module-auth-client-open-sessions.command-CwWtPiTG.mjs.map} +1 -1
  23. package/fesm2022/{acorex-platform-module-auth-client-password.component-SpEVRPaE.mjs → acorex-platform-module-auth-client-password.component-CAZ3tVPG.mjs} +5 -5
  24. package/fesm2022/{acorex-platform-module-auth-client-password.component-SpEVRPaE.mjs.map → acorex-platform-module-auth-client-password.component-CAZ3tVPG.mjs.map} +1 -1
  25. package/fesm2022/{acorex-platform-module-auth-client-password.component-Ci5Wy3rO.mjs → acorex-platform-module-auth-client-password.component-CE2nXYCz.mjs} +3 -3
  26. package/fesm2022/{acorex-platform-module-auth-client-password.component-Ci5Wy3rO.mjs.map → acorex-platform-module-auth-client-password.component-CE2nXYCz.mjs.map} +1 -1
  27. package/fesm2022/{acorex-platform-module-auth-client-platform-settings-unavailable.component-LwuokJiZ.mjs → acorex-platform-module-auth-client-platform-settings-unavailable.component-BJMtsa99.mjs} +4 -4
  28. package/fesm2022/{acorex-platform-module-auth-client-platform-settings-unavailable.component-LwuokJiZ.mjs.map → acorex-platform-module-auth-client-platform-settings-unavailable.component-BJMtsa99.mjs.map} +1 -1
  29. package/fesm2022/{acorex-platform-module-auth-client-profile-activity-chart.component-DcMdz44P.mjs → acorex-platform-module-auth-client-profile-activity-chart.component-BcbVLmZo.mjs} +4 -4
  30. package/fesm2022/{acorex-platform-module-auth-client-profile-activity-chart.component-DcMdz44P.mjs.map → acorex-platform-module-auth-client-profile-activity-chart.component-BcbVLmZo.mjs.map} +1 -1
  31. package/fesm2022/{acorex-platform-module-auth-client-profile-delete-account-danger-zone.component-DTujROAP.mjs → acorex-platform-module-auth-client-profile-delete-account-danger-zone.component-Dx2-o9XL.mjs} +3 -3
  32. package/fesm2022/{acorex-platform-module-auth-client-profile-delete-account-danger-zone.component-DTujROAP.mjs.map → acorex-platform-module-auth-client-profile-delete-account-danger-zone.component-Dx2-o9XL.mjs.map} +1 -1
  33. package/fesm2022/{acorex-platform-module-auth-client-profile-page-component.provider-CelasDrw.mjs → acorex-platform-module-auth-client-profile-page-component.provider-DEVBmVKd.mjs} +4 -4
  34. package/fesm2022/{acorex-platform-module-auth-client-profile-page-component.provider-CelasDrw.mjs.map → acorex-platform-module-auth-client-profile-page-component.provider-DEVBmVKd.mjs.map} +1 -1
  35. package/fesm2022/{acorex-platform-module-auth-client-profile-page.component-iGdfjv6g.mjs → acorex-platform-module-auth-client-profile-page.component-BNYoh2IL.mjs} +7 -7
  36. package/fesm2022/{acorex-platform-module-auth-client-profile-page.component-iGdfjv6g.mjs.map → acorex-platform-module-auth-client-profile-page.component-BNYoh2IL.mjs.map} +1 -1
  37. package/fesm2022/{acorex-platform-module-auth-client-register-password.component-CaztyyPx.mjs → acorex-platform-module-auth-client-register-password.component-DArLfswX.mjs} +4 -4
  38. package/fesm2022/{acorex-platform-module-auth-client-register-password.component-CaztyyPx.mjs.map → acorex-platform-module-auth-client-register-password.component-DArLfswX.mjs.map} +1 -1
  39. package/fesm2022/{acorex-platform-module-auth-client-register.module-R-yxS0EI.mjs → acorex-platform-module-auth-client-register.module-BXMV9tp3.mjs} +4 -4
  40. package/fesm2022/{acorex-platform-module-auth-client-register.module-R-yxS0EI.mjs.map → acorex-platform-module-auth-client-register.module-BXMV9tp3.mjs.map} +1 -1
  41. package/fesm2022/{acorex-platform-module-auth-client-remove-pin-code.command-DHY46WWD.mjs → acorex-platform-module-auth-client-remove-pin-code.command-D9uLV6je.mjs} +2 -2
  42. package/fesm2022/{acorex-platform-module-auth-client-remove-pin-code.command-DHY46WWD.mjs.map → acorex-platform-module-auth-client-remove-pin-code.command-D9uLV6je.mjs.map} +1 -1
  43. package/fesm2022/{acorex-platform-module-auth-client-reset-password.component-BQfKSqpW.mjs → acorex-platform-module-auth-client-reset-password.component-Cz4UePgF.mjs} +3 -3
  44. package/fesm2022/{acorex-platform-module-auth-client-reset-password.component-BQfKSqpW.mjs.map → acorex-platform-module-auth-client-reset-password.component-Cz4UePgF.mjs.map} +1 -1
  45. package/fesm2022/{acorex-platform-module-auth-client-result.component-DuMch6Ge.mjs → acorex-platform-module-auth-client-result.component-BS5uizi6.mjs} +4 -4
  46. package/fesm2022/{acorex-platform-module-auth-client-result.component-DuMch6Ge.mjs.map → acorex-platform-module-auth-client-result.component-BS5uizi6.mjs.map} +1 -1
  47. package/fesm2022/acorex-platform-module-auth-client-routes-Dw8YhBrw.mjs +21 -0
  48. package/fesm2022/acorex-platform-module-auth-client-routes-Dw8YhBrw.mjs.map +1 -0
  49. package/fesm2022/{acorex-platform-module-auth-client-session-limit.component-Dc6TIn-2.mjs → acorex-platform-module-auth-client-session-limit.component-DH58dRba.mjs} +3 -3
  50. package/fesm2022/{acorex-platform-module-auth-client-session-limit.component-Dc6TIn-2.mjs.map → acorex-platform-module-auth-client-session-limit.component-DH58dRba.mjs.map} +1 -1
  51. package/fesm2022/{acorex-platform-module-auth-client-session-lock-overlay.component-DBJjSIOq.mjs → acorex-platform-module-auth-client-session-lock-overlay.component-D_IKdJl8.mjs} +5 -5
  52. package/fesm2022/{acorex-platform-module-auth-client-session-lock-overlay.component-DBJjSIOq.mjs.map → acorex-platform-module-auth-client-session-lock-overlay.component-D_IKdJl8.mjs.map} +1 -1
  53. package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.command-CheMeghC.mjs → acorex-platform-module-auth-client-set-pin-code.command-DRLTGXEF.mjs} +3 -3
  54. package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.command-CheMeghC.mjs.map → acorex-platform-module-auth-client-set-pin-code.command-DRLTGXEF.mjs.map} +1 -1
  55. package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.component-BWl3vLOO.mjs → acorex-platform-module-auth-client-set-pin-code.component-m7SwyaZH.mjs} +5 -5
  56. package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.component-BWl3vLOO.mjs.map → acorex-platform-module-auth-client-set-pin-code.component-m7SwyaZH.mjs.map} +1 -1
  57. package/fesm2022/{acorex-platform-module-auth-client-tenant-chooser.component-BEtlhGUb.mjs → acorex-platform-module-auth-client-tenant-chooser.component-CdqBeKVw.mjs} +4 -4
  58. package/fesm2022/{acorex-platform-module-auth-client-tenant-chooser.component-BEtlhGUb.mjs.map → acorex-platform-module-auth-client-tenant-chooser.component-CdqBeKVw.mjs.map} +1 -1
  59. package/fesm2022/acorex-platform-module-auth-client-tenant-request.component-B-qx-HIi.mjs +256 -0
  60. package/fesm2022/acorex-platform-module-auth-client-tenant-request.component-B-qx-HIi.mjs.map +1 -0
  61. package/fesm2022/{acorex-platform-module-auth-client-two-factor-code.component-4XVRgh6H.mjs → acorex-platform-module-auth-client-two-factor-code.component-B1334bPg.mjs} +4 -4
  62. package/fesm2022/{acorex-platform-module-auth-client-two-factor-code.component-4XVRgh6H.mjs.map → acorex-platform-module-auth-client-two-factor-code.component-B1334bPg.mjs.map} +1 -1
  63. package/fesm2022/{acorex-platform-module-auth-client-two-factor.module-CrLPxje1.mjs → acorex-platform-module-auth-client-two-factor.module-C0mkbR4X.mjs} +2 -2
  64. package/fesm2022/{acorex-platform-module-auth-client-two-factor.module-CrLPxje1.mjs.map → acorex-platform-module-auth-client-two-factor.module-C0mkbR4X.mjs.map} +1 -1
  65. package/fesm2022/{acorex-platform-module-auth-client-view-login-history.command-qrd0bNM9.mjs → acorex-platform-module-auth-client-view-login-history.command-CerhsvHF.mjs} +2 -2
  66. package/fesm2022/{acorex-platform-module-auth-client-view-login-history.command-qrd0bNM9.mjs.map → acorex-platform-module-auth-client-view-login-history.command-CerhsvHF.mjs.map} +1 -1
  67. package/fesm2022/acorex-platform-module-auth-client-waiting-room.component-Wu8iPiTm.mjs +327 -0
  68. package/fesm2022/acorex-platform-module-auth-client-waiting-room.component-Wu8iPiTm.mjs.map +1 -0
  69. package/fesm2022/{acorex-platform-module-auth-client-welcome-onboarding-page.component-3yva-FyV.mjs → acorex-platform-module-auth-client-welcome-onboarding-page.component-BKqHYkv2.mjs} +5 -5
  70. package/fesm2022/{acorex-platform-module-auth-client-welcome-onboarding-page.component-3yva-FyV.mjs.map → acorex-platform-module-auth-client-welcome-onboarding-page.component-BKqHYkv2.mjs.map} +1 -1
  71. package/fesm2022/{acorex-platform-module-auth-client-welcome-onboarding.command-CFpMZAwC.mjs → acorex-platform-module-auth-client-welcome-onboarding.command--Rr0duJS.mjs} +2 -2
  72. package/fesm2022/{acorex-platform-module-auth-client-welcome-onboarding.command-CFpMZAwC.mjs.map → acorex-platform-module-auth-client-welcome-onboarding.command--Rr0duJS.mjs.map} +1 -1
  73. package/fesm2022/acorex-platform-module-auth-client.mjs +1 -1
  74. package/i18n/en-AU/auth.json +70 -5
  75. package/i18n/en-US/auth.json +70 -5
  76. package/i18n/fa-IR/auth.json +70 -5
  77. package/package.json +3 -2
  78. package/fesm2022/acorex-platform-module-auth-client-acorex-platform-module-auth-client-CQEt9bXJ.mjs.map +0 -1
  79. package/fesm2022/acorex-platform-module-auth-client-change-password.command-DRwzhNlO.mjs.map +0 -1
  80. package/fesm2022/acorex-platform-module-auth-client-routes-90eFjxx8.mjs +0 -17
  81. package/fesm2022/acorex-platform-module-auth-client-routes-90eFjxx8.mjs.map +0 -1
  82. package/fesm2022/acorex-platform-module-auth-client-waiting-room.component-IAVIt1fY.mjs +0 -165
  83. package/fesm2022/acorex-platform-module-auth-client-waiting-room.component-IAVIt1fY.mjs.map +0 -1
@@ -12,7 +12,7 @@ import { AXPasswordBoxModule } from '@acorex/components/password-box';
12
12
  import { AXToastService } from '@acorex/components/toast';
13
13
  import * as i5 from '@acorex/core/translation';
14
14
  import { AXTranslationService, AXTranslationModule } from '@acorex/core/translation';
15
- import * as i3 from '@angular/common';
15
+ import * as i5$1 from '@angular/common';
16
16
  import { CommonModule } from '@angular/common';
17
17
  import * as i0 from '@angular/core';
18
18
  import { inject, signal, ChangeDetectionStrategy, Component } from '@angular/core';
@@ -144,7 +144,7 @@ class AXPAcceptInvitationComponent {
144
144
  }
145
145
  }
146
146
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPAcceptInvitationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
147
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPAcceptInvitationComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<ng-container *translate=\"let t\">\n <div class=\"axp-auth-form\">\n <!-- ----- Checking the token before any password fields are shown ----- -->\n @if (phase() === 'checking') {\n <div class=\"text-center mb-3 lg:mb-5\">\n <p class=\"text-base text-neutral-600\">\n {{ '@auth:accept-invitation.checking' | translate | async }}\n </p>\n </div>\n }\n <!-- ----- Used, unknown, or expired link: message and login, no password form ----- -->\n @else if (phase() === 'unusable') {\n <div class=\"text-center mb-3 lg:mb-5\">\n <h1 class=\"font-bold text-xl mb-1 lg:mb-2\">\n {{ '@auth:accept-invitation.unavailable.title' | translate | async }}\n </h1>\n <p class=\"text-base text-neutral-600\">\n {{ '@auth:accept-invitation.unavailable.description' | translate | async }}\n </p>\n </div>\n <ax-button\n color=\"primary\"\n class=\"mt-4 lg:mt-6 w-full\"\n [text]=\"'@auth:accept-invitation.unavailable.go-to-login' | translate | async\"\n (onClick)=\"goToLogin()\"\n ></ax-button>\n }\n <!-- ----- Open invitation: set a password ----- -->\n @else {\n <div class=\"text-center mb-3 lg:mb-5\">\n <h1 class=\"font-bold text-xl mb-1 lg:mb-2\">\n {{ '@auth:accept-invitation.title' | translate | async }}\n </h1>\n <p class=\"text-base text-neutral-600\">\n {{ '@auth:accept-invitation.hint' | translate | async }}\n </p>\n </div>\n <ax-form>\n <div class=\"flex flex-col gap-4 lg:gap-6\">\n <ax-form-field>\n <ax-label>{{\n '@auth:accept-invitation.new-password' | translate | async\n }}</ax-label>\n <ax-password-box\n name=\"newPassword\"\n [(value)]=\"newPassword\"\n [disabled]=\"submitting\"\n ></ax-password-box>\n </ax-form-field>\n <ax-form-field>\n <ax-label>{{\n '@auth:accept-invitation.confirm-password' | translate | async\n }}</ax-label>\n <ax-password-box\n name=\"confirmPassword\"\n [(value)]=\"confirmPassword\"\n [disabled]=\"submitting\"\n ></ax-password-box>\n </ax-form-field>\n </div>\n <ax-button\n color=\"primary\"\n class=\"mt-4 lg:mt-6 w-full\"\n [text]=\"'@auth:accept-invitation.submit' | translate | async\"\n [disabled]=\"submitting\"\n (onClick)=\"submit()\"\n ></ax-button>\n <p class=\"text-center mt-6 text-neutral-400 text-sm\">\n {{ '@auth:tenant-chooser.footer' | translate | async }}\n <a\n [routerLink]=\"['/auth/login']\"\n class=\"text-primary font-medium cursor-pointer hover:underline\"\n >\n {{ '@auth:backLogin' | translate | async }}\n </a>\n </p>\n </ax-form>\n }\n </div>\n</ng-container>\n", styles: [":host{display:block;width:100%}.axp-auth-form{width:100%;margin-inline:auto}@media(min-width:768px){.axp-auth-form{width:24rem;max-width:100%}}.axp-auth-form ax-form,.axp-auth-form ax-form-field,.axp-auth-form ax-password-box{display:block;width:100%}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i1.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "component", type: i1.AXFormComponent, selector: "ax-form", inputs: ["disabled", "readonly", "labelMode", "look", "messageStyle", "updateOn", "inUserInteractionActive"], outputs: ["onValidate", "updateOnChange"] }, { kind: "ngmodule", type: AXPasswordBoxModule }, { kind: "component", type: i2.AXPasswordBoxComponent, selector: "ax-password-box", inputs: ["readonly", "disabled", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "autoComplete", "showToggleButton", "class"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i4.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i5.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
147
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPAcceptInvitationComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<ng-container *translate=\"let t\">\n <div class=\"axp-auth-form\">\n <!-- ----- Checking the token before any password fields are shown ----- -->\n @if (phase() === 'checking') {\n <div class=\"text-center mb-3 lg:mb-5\">\n <p class=\"text-base text-neutral-600\">\n {{ '@auth:accept-invitation.checking' | translate | async }}\n </p>\n </div>\n }\n <!-- ----- Used, unknown, or expired link: message and login, no password form ----- -->\n @else if (phase() === 'unusable') {\n <div class=\"text-center mb-3 lg:mb-5\">\n <h1 class=\"font-bold text-xl mb-1 lg:mb-2\">\n {{ '@auth:accept-invitation.unavailable.title' | translate | async }}\n </h1>\n <p class=\"text-base text-neutral-600\">\n {{ '@auth:accept-invitation.unavailable.description' | translate | async }}\n </p>\n </div>\n <ax-button\n color=\"primary\"\n class=\"mt-4 lg:mt-6 w-full\"\n [text]=\"'@auth:accept-invitation.unavailable.go-to-login' | translate | async\"\n (onClick)=\"goToLogin()\"\n ></ax-button>\n }\n <!-- ----- Open invitation: set a password ----- -->\n @else {\n <div class=\"text-center mb-3 lg:mb-5\">\n <h1 class=\"font-bold text-xl mb-1 lg:mb-2\">\n {{ '@auth:accept-invitation.title' | translate | async }}\n </h1>\n <p class=\"text-base text-neutral-600\">\n {{ '@auth:accept-invitation.hint' | translate | async }}\n </p>\n </div>\n <ax-form>\n <div class=\"flex flex-col gap-4 lg:gap-6\">\n <ax-form-field>\n <ax-label>{{\n '@auth:accept-invitation.new-password' | translate | async\n }}</ax-label>\n <ax-password-box\n name=\"newPassword\"\n [(value)]=\"newPassword\"\n [disabled]=\"submitting\"\n ></ax-password-box>\n </ax-form-field>\n <ax-form-field>\n <ax-label>{{\n '@auth:accept-invitation.confirm-password' | translate | async\n }}</ax-label>\n <ax-password-box\n name=\"confirmPassword\"\n [(value)]=\"confirmPassword\"\n [disabled]=\"submitting\"\n ></ax-password-box>\n </ax-form-field>\n </div>\n <ax-button\n color=\"primary\"\n class=\"mt-4 lg:mt-6 w-full\"\n [text]=\"'@auth:accept-invitation.submit' | translate | async\"\n [disabled]=\"submitting\"\n (onClick)=\"submit()\"\n ></ax-button>\n <p class=\"text-center mt-6 text-neutral-400 text-sm\">\n {{ '@auth:tenant-chooser.footer' | translate | async }}\n <a\n [routerLink]=\"['/auth/login']\"\n class=\"text-primary font-medium cursor-pointer hover:underline\"\n >\n {{ '@auth:backLogin' | translate | async }}\n </a>\n </p>\n </ax-form>\n }\n </div>\n</ng-container>\n", styles: [":host{display:block;width:100%}.axp-auth-form{width:100%;margin-inline:auto}@media(min-width:768px){.axp-auth-form{width:24rem;max-width:100%}}.axp-auth-form ax-form,.axp-auth-form ax-form-field,.axp-auth-form ax-password-box{display:block;width:100%}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i1.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "component", type: i1.AXFormComponent, selector: "ax-form", inputs: ["disabled", "readonly", "labelMode", "look", "messageStyle", "updateOn", "inUserInteractionActive"], outputs: ["onValidate", "updateOnChange"] }, { kind: "ngmodule", type: AXPasswordBoxModule }, { kind: "component", type: i2.AXPasswordBoxComponent, selector: "ax-password-box", inputs: ["readonly", "disabled", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "autoComplete", "showToggleButton", "class"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i4.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i5.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "pipe", type: i5$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
148
148
  }
149
149
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPAcceptInvitationComponent, decorators: [{
150
150
  type: Component,
@@ -176,4 +176,4 @@ function isPasswordRequired(code, text) {
176
176
  }
177
177
 
178
178
  export { AXPAcceptInvitationComponent };
179
- //# sourceMappingURL=acorex-platform-module-auth-client-accept-invitation.component-Ct28GG3a.mjs.map
179
+ //# sourceMappingURL=acorex-platform-module-auth-client-accept-invitation.component-Bq49K_8F.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-auth-client-accept-invitation.component-Ct28GG3a.mjs","sources":["../../../../libs/modules/auth/client/src/lib/pages/accept-invitation/accept-invitation.component.ts","../../../../libs/modules/auth/client/src/lib/pages/accept-invitation/accept-invitation.component.html"],"sourcesContent":["import { commandMessageTextForError } from '@acorex-platform/framework-client/common';\nimport { AXPCommandService } from '@acorex-platform/framework-client/runtime';\nimport {\n AXM_ACCEPT_INVITATION_ERROR_CODES,\n AXMSecurityManagementServerCommands,\n type AXMAcceptInvitationPreviewResult,\n} from '@acorex-platform/module-security-management-client/contracts';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXPasswordBoxModule } from '@acorex/components/password-box';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, OnInit, inject, signal } from '@angular/core';\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\n\n//#region ----- Types -----\n\ntype AcceptInvitationPhase = 'checking' | 'form' | 'unusable';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n templateUrl: './accept-invitation.component.html',\n styleUrls: ['./accept-invitation.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n AXFormModule,\n AXPasswordBoxModule,\n AXButtonModule,\n AXLabelModule,\n AXTranslationModule,\n RouterModule,\n ],\n})\nexport class AXPAcceptInvitationComponent implements OnInit {\n //#region ----- Services & Dependencies -----\n\n private readonly route = inject(ActivatedRoute);\n private readonly router = inject(Router);\n private readonly commandService = inject(AXPCommandService);\n private readonly toast = inject(AXToastService);\n private readonly translation = inject(AXTranslationService);\n\n //#endregion\n\n //#region ----- State Signals -----\n\n /** `unusable` hides the password form and shows the used/invalid message. */\n protected readonly phase = signal<AcceptInvitationPhase>('checking');\n\n //#endregion\n\n //#region ----- Form State -----\n\n protected token = '';\n protected newPassword = '';\n protected confirmPassword = '';\n protected submitting = false;\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n ngOnInit(): void {\n this.token = this.route.snapshot.queryParamMap.get('token') ?? '';\n void this.loadPreview();\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected goToLogin(): void {\n void this.router.navigate(['/auth/login']);\n }\n\n protected async submit(): Promise<void> {\n if (this.submitting || this.phase() !== 'form') {\n return;\n }\n\n const token = this.token.trim();\n if (!token) {\n this.phase.set('unusable');\n return;\n }\n\n if (this.newPassword && this.newPassword.length < 6) {\n const msg = await this.translation\n .translateAsync('@auth:accept-invitation.password-too-short')\n .catch(() => 'Password must be at least 6 characters.');\n this.toast.show({ color: 'warning', title: msg, content: msg });\n return;\n }\n\n if (this.newPassword !== this.confirmPassword) {\n const msg = await this.translation\n .translateAsync('@auth:accept-invitation.password-mismatch')\n .catch(() => 'Passwords do not match.');\n this.toast.show({ color: 'warning', title: msg, content: msg });\n return;\n }\n\n this.submitting = true;\n try {\n const result = await this.commandService.executeRemote(\n AXMSecurityManagementServerCommands.AcceptInvitation,\n {\n token,\n newPassword: this.newPassword || undefined,\n },\n );\n\n if (!result?.success) {\n const messageText = commandMessageTextForError(result?.message?.text);\n if (isInvitationLinkUnusable(result?.message?.code, messageText)) {\n this.phase.set('unusable');\n return;\n }\n throw new Error(messageText || 'Accept failed');\n }\n\n const [title, content] = await Promise.all([\n this.translation\n .translateAsync('@auth:accept-invitation.success.title')\n .catch(() => 'Invitation Accepted'),\n this.translation\n .translateAsync('@auth:accept-invitation.success.description')\n .catch(() => 'Your invitation was accepted. You can sign in now.'),\n ]);\n this.toast.show({ color: 'success', title, content, timeOut: 4000 });\n await this.router.navigate(['/auth/login']);\n } catch (error) {\n const [title, fallbackContent] = await Promise.all([\n this.translation\n .translateAsync('@auth:accept-invitation.error.title')\n .catch(() => 'Accept Failed'),\n this.translation\n .translateAsync('@auth:accept-invitation.error.description')\n .catch(() => 'Unable to accept the invitation. The link may have expired.'),\n ]);\n const content =\n error instanceof Error && error.message ? error.message : fallbackContent;\n this.toast.show({ color: 'danger', title, content, timeOut: 5000 });\n } finally {\n this.submitting = false;\n }\n }\n\n //#endregion\n\n //#region ----- Preview -----\n\n private async loadPreview(): Promise<void> {\n const token = this.token.trim();\n if (!token) {\n this.phase.set('unusable');\n return;\n }\n\n try {\n const result = await this.commandService.executeRemote(\n AXMSecurityManagementServerCommands.AcceptInvitation,\n { token, preview: true },\n );\n\n if (!result?.success) {\n // Older API ignores `preview` and rejects a missing password — still show the form.\n const messageText = commandMessageTextForError(result?.message?.text);\n if (isPasswordRequired(result?.message?.code, messageText)) {\n this.phase.set('form');\n return;\n }\n this.phase.set('unusable');\n return;\n }\n\n const preview = result.data as AXMAcceptInvitationPreviewResult | undefined;\n this.phase.set(preview?.usable === false ? 'unusable' : 'form');\n } catch {\n this.phase.set('unusable');\n }\n }\n\n //#endregion\n}\n\n//#endregion\n\n//#region ----- Helpers -----\n\nfunction isInvitationLinkUnusable(code: string | undefined, text: string | undefined): boolean {\n if (\n code === AXM_ACCEPT_INVITATION_ERROR_CODES.Invalid ||\n code === AXM_ACCEPT_INVITATION_ERROR_CODES.Expired\n ) {\n return true;\n }\n const normalized = (text ?? '').toLowerCase();\n return normalized.includes('invalid') || normalized.includes('expired') || normalized.includes('token is required');\n}\n\nfunction isPasswordRequired(code: string | undefined, text: string | undefined): boolean {\n if (code === AXM_ACCEPT_INVITATION_ERROR_CODES.PasswordRequired) {\n return true;\n }\n return (text ?? '').toLowerCase().includes('password');\n}\n\n//#endregion\n","<ng-container *translate=\"let t\">\n <div class=\"axp-auth-form\">\n <!-- ----- Checking the token before any password fields are shown ----- -->\n @if (phase() === 'checking') {\n <div class=\"text-center mb-3 lg:mb-5\">\n <p class=\"text-base text-neutral-600\">\n {{ '@auth:accept-invitation.checking' | translate | async }}\n </p>\n </div>\n }\n <!-- ----- Used, unknown, or expired link: message and login, no password form ----- -->\n @else if (phase() === 'unusable') {\n <div class=\"text-center mb-3 lg:mb-5\">\n <h1 class=\"font-bold text-xl mb-1 lg:mb-2\">\n {{ '@auth:accept-invitation.unavailable.title' | translate | async }}\n </h1>\n <p class=\"text-base text-neutral-600\">\n {{ '@auth:accept-invitation.unavailable.description' | translate | async }}\n </p>\n </div>\n <ax-button\n color=\"primary\"\n class=\"mt-4 lg:mt-6 w-full\"\n [text]=\"'@auth:accept-invitation.unavailable.go-to-login' | translate | async\"\n (onClick)=\"goToLogin()\"\n ></ax-button>\n }\n <!-- ----- Open invitation: set a password ----- -->\n @else {\n <div class=\"text-center mb-3 lg:mb-5\">\n <h1 class=\"font-bold text-xl mb-1 lg:mb-2\">\n {{ '@auth:accept-invitation.title' | translate | async }}\n </h1>\n <p class=\"text-base text-neutral-600\">\n {{ '@auth:accept-invitation.hint' | translate | async }}\n </p>\n </div>\n <ax-form>\n <div class=\"flex flex-col gap-4 lg:gap-6\">\n <ax-form-field>\n <ax-label>{{\n '@auth:accept-invitation.new-password' | translate | async\n }}</ax-label>\n <ax-password-box\n name=\"newPassword\"\n [(value)]=\"newPassword\"\n [disabled]=\"submitting\"\n ></ax-password-box>\n </ax-form-field>\n <ax-form-field>\n <ax-label>{{\n '@auth:accept-invitation.confirm-password' | translate | async\n }}</ax-label>\n <ax-password-box\n name=\"confirmPassword\"\n [(value)]=\"confirmPassword\"\n [disabled]=\"submitting\"\n ></ax-password-box>\n </ax-form-field>\n </div>\n <ax-button\n color=\"primary\"\n class=\"mt-4 lg:mt-6 w-full\"\n [text]=\"'@auth:accept-invitation.submit' | translate | async\"\n [disabled]=\"submitting\"\n (onClick)=\"submit()\"\n ></ax-button>\n <p class=\"text-center mt-6 text-neutral-400 text-sm\">\n {{ '@auth:tenant-chooser.footer' | translate | async }}\n <a\n [routerLink]=\"['/auth/login']\"\n class=\"text-primary font-medium cursor-pointer hover:underline\"\n >\n {{ '@auth:backLogin' | translate | async }}\n </a>\n </p>\n </ax-form>\n }\n </div>\n</ng-container>\n"],"names":["i3","i7"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-auth-client-accept-invitation.component-Bq49K_8F.mjs","sources":["../../../../libs/modules/auth/client/src/lib/pages/accept-invitation/accept-invitation.component.ts","../../../../libs/modules/auth/client/src/lib/pages/accept-invitation/accept-invitation.component.html"],"sourcesContent":["import { commandMessageTextForError } from '@acorex-platform/framework-client/common';\nimport { AXPCommandService } from '@acorex-platform/framework-client/runtime';\nimport {\n AXM_ACCEPT_INVITATION_ERROR_CODES,\n AXMSecurityManagementServerCommands,\n type AXMAcceptInvitationPreviewResult,\n} from '@acorex-platform/module-security-management-client/contracts';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXPasswordBoxModule } from '@acorex/components/password-box';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, OnInit, inject, signal } from '@angular/core';\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\n\n//#region ----- Types -----\n\ntype AcceptInvitationPhase = 'checking' | 'form' | 'unusable';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n templateUrl: './accept-invitation.component.html',\n styleUrls: ['./accept-invitation.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n AXFormModule,\n AXPasswordBoxModule,\n AXButtonModule,\n AXLabelModule,\n AXTranslationModule,\n RouterModule,\n ],\n})\nexport class AXPAcceptInvitationComponent implements OnInit {\n //#region ----- Services & Dependencies -----\n\n private readonly route = inject(ActivatedRoute);\n private readonly router = inject(Router);\n private readonly commandService = inject(AXPCommandService);\n private readonly toast = inject(AXToastService);\n private readonly translation = inject(AXTranslationService);\n\n //#endregion\n\n //#region ----- State Signals -----\n\n /** `unusable` hides the password form and shows the used/invalid message. */\n protected readonly phase = signal<AcceptInvitationPhase>('checking');\n\n //#endregion\n\n //#region ----- Form State -----\n\n protected token = '';\n protected newPassword = '';\n protected confirmPassword = '';\n protected submitting = false;\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n ngOnInit(): void {\n this.token = this.route.snapshot.queryParamMap.get('token') ?? '';\n void this.loadPreview();\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected goToLogin(): void {\n void this.router.navigate(['/auth/login']);\n }\n\n protected async submit(): Promise<void> {\n if (this.submitting || this.phase() !== 'form') {\n return;\n }\n\n const token = this.token.trim();\n if (!token) {\n this.phase.set('unusable');\n return;\n }\n\n if (this.newPassword && this.newPassword.length < 6) {\n const msg = await this.translation\n .translateAsync('@auth:accept-invitation.password-too-short')\n .catch(() => 'Password must be at least 6 characters.');\n this.toast.show({ color: 'warning', title: msg, content: msg });\n return;\n }\n\n if (this.newPassword !== this.confirmPassword) {\n const msg = await this.translation\n .translateAsync('@auth:accept-invitation.password-mismatch')\n .catch(() => 'Passwords do not match.');\n this.toast.show({ color: 'warning', title: msg, content: msg });\n return;\n }\n\n this.submitting = true;\n try {\n const result = await this.commandService.executeRemote(\n AXMSecurityManagementServerCommands.AcceptInvitation,\n {\n token,\n newPassword: this.newPassword || undefined,\n },\n );\n\n if (!result?.success) {\n const messageText = commandMessageTextForError(result?.message?.text);\n if (isInvitationLinkUnusable(result?.message?.code, messageText)) {\n this.phase.set('unusable');\n return;\n }\n throw new Error(messageText || 'Accept failed');\n }\n\n const [title, content] = await Promise.all([\n this.translation\n .translateAsync('@auth:accept-invitation.success.title')\n .catch(() => 'Invitation Accepted'),\n this.translation\n .translateAsync('@auth:accept-invitation.success.description')\n .catch(() => 'Your invitation was accepted. You can sign in now.'),\n ]);\n this.toast.show({ color: 'success', title, content, timeOut: 4000 });\n await this.router.navigate(['/auth/login']);\n } catch (error) {\n const [title, fallbackContent] = await Promise.all([\n this.translation\n .translateAsync('@auth:accept-invitation.error.title')\n .catch(() => 'Accept Failed'),\n this.translation\n .translateAsync('@auth:accept-invitation.error.description')\n .catch(() => 'Unable to accept the invitation. The link may have expired.'),\n ]);\n const content =\n error instanceof Error && error.message ? error.message : fallbackContent;\n this.toast.show({ color: 'danger', title, content, timeOut: 5000 });\n } finally {\n this.submitting = false;\n }\n }\n\n //#endregion\n\n //#region ----- Preview -----\n\n private async loadPreview(): Promise<void> {\n const token = this.token.trim();\n if (!token) {\n this.phase.set('unusable');\n return;\n }\n\n try {\n const result = await this.commandService.executeRemote(\n AXMSecurityManagementServerCommands.AcceptInvitation,\n { token, preview: true },\n );\n\n if (!result?.success) {\n // Older API ignores `preview` and rejects a missing password — still show the form.\n const messageText = commandMessageTextForError(result?.message?.text);\n if (isPasswordRequired(result?.message?.code, messageText)) {\n this.phase.set('form');\n return;\n }\n this.phase.set('unusable');\n return;\n }\n\n const preview = result.data as AXMAcceptInvitationPreviewResult | undefined;\n this.phase.set(preview?.usable === false ? 'unusable' : 'form');\n } catch {\n this.phase.set('unusable');\n }\n }\n\n //#endregion\n}\n\n//#endregion\n\n//#region ----- Helpers -----\n\nfunction isInvitationLinkUnusable(code: string | undefined, text: string | undefined): boolean {\n if (\n code === AXM_ACCEPT_INVITATION_ERROR_CODES.Invalid ||\n code === AXM_ACCEPT_INVITATION_ERROR_CODES.Expired\n ) {\n return true;\n }\n const normalized = (text ?? '').toLowerCase();\n return normalized.includes('invalid') || normalized.includes('expired') || normalized.includes('token is required');\n}\n\nfunction isPasswordRequired(code: string | undefined, text: string | undefined): boolean {\n if (code === AXM_ACCEPT_INVITATION_ERROR_CODES.PasswordRequired) {\n return true;\n }\n return (text ?? '').toLowerCase().includes('password');\n}\n\n//#endregion\n","<ng-container *translate=\"let t\">\n <div class=\"axp-auth-form\">\n <!-- ----- Checking the token before any password fields are shown ----- -->\n @if (phase() === 'checking') {\n <div class=\"text-center mb-3 lg:mb-5\">\n <p class=\"text-base text-neutral-600\">\n {{ '@auth:accept-invitation.checking' | translate | async }}\n </p>\n </div>\n }\n <!-- ----- Used, unknown, or expired link: message and login, no password form ----- -->\n @else if (phase() === 'unusable') {\n <div class=\"text-center mb-3 lg:mb-5\">\n <h1 class=\"font-bold text-xl mb-1 lg:mb-2\">\n {{ '@auth:accept-invitation.unavailable.title' | translate | async }}\n </h1>\n <p class=\"text-base text-neutral-600\">\n {{ '@auth:accept-invitation.unavailable.description' | translate | async }}\n </p>\n </div>\n <ax-button\n color=\"primary\"\n class=\"mt-4 lg:mt-6 w-full\"\n [text]=\"'@auth:accept-invitation.unavailable.go-to-login' | translate | async\"\n (onClick)=\"goToLogin()\"\n ></ax-button>\n }\n <!-- ----- Open invitation: set a password ----- -->\n @else {\n <div class=\"text-center mb-3 lg:mb-5\">\n <h1 class=\"font-bold text-xl mb-1 lg:mb-2\">\n {{ '@auth:accept-invitation.title' | translate | async }}\n </h1>\n <p class=\"text-base text-neutral-600\">\n {{ '@auth:accept-invitation.hint' | translate | async }}\n </p>\n </div>\n <ax-form>\n <div class=\"flex flex-col gap-4 lg:gap-6\">\n <ax-form-field>\n <ax-label>{{\n '@auth:accept-invitation.new-password' | translate | async\n }}</ax-label>\n <ax-password-box\n name=\"newPassword\"\n [(value)]=\"newPassword\"\n [disabled]=\"submitting\"\n ></ax-password-box>\n </ax-form-field>\n <ax-form-field>\n <ax-label>{{\n '@auth:accept-invitation.confirm-password' | translate | async\n }}</ax-label>\n <ax-password-box\n name=\"confirmPassword\"\n [(value)]=\"confirmPassword\"\n [disabled]=\"submitting\"\n ></ax-password-box>\n </ax-form-field>\n </div>\n <ax-button\n color=\"primary\"\n class=\"mt-4 lg:mt-6 w-full\"\n [text]=\"'@auth:accept-invitation.submit' | translate | async\"\n [disabled]=\"submitting\"\n (onClick)=\"submit()\"\n ></ax-button>\n <p class=\"text-center mt-6 text-neutral-400 text-sm\">\n {{ '@auth:tenant-chooser.footer' | translate | async }}\n <a\n [routerLink]=\"['/auth/login']\"\n class=\"text-primary font-medium cursor-pointer hover:underline\"\n >\n {{ '@auth:backLogin' | translate | async }}\n </a>\n </p>\n </ax-form>\n }\n </div>\n</ng-container>\n"],"names":["i3","i7"],"mappings":"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"}