@acorex-platform/module-auth-client 0.0.51 → 0.0.54

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 (62) hide show
  1. package/fesm2022/{acorex-platform-module-auth-client-acorex-platform-module-auth-client-C1oSPf12.mjs → acorex-platform-module-auth-client-acorex-platform-module-auth-client-BpCPkKC9.mjs} +74 -315
  2. package/fesm2022/acorex-platform-module-auth-client-acorex-platform-module-auth-client-BpCPkKC9.mjs.map +1 -0
  3. package/fesm2022/{acorex-platform-module-auth-client-app-chooser.component-CLKLwWW8.mjs → acorex-platform-module-auth-client-app-chooser.component-EKZpp1BW.mjs} +2 -2
  4. package/fesm2022/{acorex-platform-module-auth-client-app-chooser.component-CLKLwWW8.mjs.map → acorex-platform-module-auth-client-app-chooser.component-EKZpp1BW.mjs.map} +1 -1
  5. package/fesm2022/{acorex-platform-module-auth-client-change-password.command-CknYaMZD.mjs → acorex-platform-module-auth-client-change-password.command-CKeSpikK.mjs} +2 -2
  6. package/fesm2022/{acorex-platform-module-auth-client-change-password.command-CknYaMZD.mjs.map → acorex-platform-module-auth-client-change-password.command-CKeSpikK.mjs.map} +1 -1
  7. package/fesm2022/{acorex-platform-module-auth-client-change-photo.command-CML784Lg.mjs → acorex-platform-module-auth-client-change-photo.command-Bv9ttDAn.mjs} +2 -2
  8. package/fesm2022/{acorex-platform-module-auth-client-change-photo.command-CML784Lg.mjs.map → acorex-platform-module-auth-client-change-photo.command-Bv9ttDAn.mjs.map} +1 -1
  9. package/fesm2022/{acorex-platform-module-auth-client-get-user-activity.query-CV9mdOBi.mjs → acorex-platform-module-auth-client-get-user-activity.query-C0tOES_Q.mjs} +2 -2
  10. package/fesm2022/{acorex-platform-module-auth-client-get-user-activity.query-CV9mdOBi.mjs.map → acorex-platform-module-auth-client-get-user-activity.query-C0tOES_Q.mjs.map} +1 -1
  11. package/fesm2022/{acorex-platform-module-auth-client-lock-screen.command-BH3Q6lJE.mjs → acorex-platform-module-auth-client-lock-screen.command-TKTC-1hk.mjs} +2 -2
  12. package/fesm2022/{acorex-platform-module-auth-client-lock-screen.command-BH3Q6lJE.mjs.map → acorex-platform-module-auth-client-lock-screen.command-TKTC-1hk.mjs.map} +1 -1
  13. package/fesm2022/{acorex-platform-module-auth-client-login.module-DtvnPpBH.mjs → acorex-platform-module-auth-client-login.module-ewiwr6VL.mjs} +3 -3
  14. package/fesm2022/{acorex-platform-module-auth-client-login.module-DtvnPpBH.mjs.map → acorex-platform-module-auth-client-login.module-ewiwr6VL.mjs.map} +1 -1
  15. package/fesm2022/{acorex-platform-module-auth-client-manage-two-factor.command-BAg2W20W.mjs → acorex-platform-module-auth-client-manage-two-factor.command-DR8NUf_4.mjs} +2 -2
  16. package/fesm2022/{acorex-platform-module-auth-client-manage-two-factor.command-BAg2W20W.mjs.map → acorex-platform-module-auth-client-manage-two-factor.command-DR8NUf_4.mjs.map} +1 -1
  17. package/fesm2022/{acorex-platform-module-auth-client-open-sessions.command-CEpu6c7D.mjs → acorex-platform-module-auth-client-open-sessions.command-ZMYyVU1K.mjs} +5 -5
  18. package/fesm2022/{acorex-platform-module-auth-client-open-sessions.command-CEpu6c7D.mjs.map → acorex-platform-module-auth-client-open-sessions.command-ZMYyVU1K.mjs.map} +1 -1
  19. package/fesm2022/{acorex-platform-module-auth-client-password.component-ddh-_0k3.mjs → acorex-platform-module-auth-client-password.component-C1Ic8qul.mjs} +8 -8
  20. package/fesm2022/{acorex-platform-module-auth-client-password.component-ddh-_0k3.mjs.map → acorex-platform-module-auth-client-password.component-C1Ic8qul.mjs.map} +1 -1
  21. package/fesm2022/{acorex-platform-module-auth-client-profile-activity-chart.component-D4bqeKCd.mjs → acorex-platform-module-auth-client-profile-activity-chart.component-D4q4Cnl9.mjs} +5 -5
  22. package/fesm2022/{acorex-platform-module-auth-client-profile-activity-chart.component-D4bqeKCd.mjs.map → acorex-platform-module-auth-client-profile-activity-chart.component-D4q4Cnl9.mjs.map} +1 -1
  23. package/fesm2022/{acorex-platform-module-auth-client-profile-delete-account-danger-zone.component-DWNbDzDd.mjs → acorex-platform-module-auth-client-profile-delete-account-danger-zone.component-DTujROAP.mjs} +4 -4
  24. package/fesm2022/{acorex-platform-module-auth-client-profile-delete-account-danger-zone.component-DWNbDzDd.mjs.map → acorex-platform-module-auth-client-profile-delete-account-danger-zone.component-DTujROAP.mjs.map} +1 -1
  25. package/fesm2022/{acorex-platform-module-auth-client-profile-page-component.provider-DLTbTEe6.mjs → acorex-platform-module-auth-client-profile-page-component.provider-D364KW58.mjs} +4 -4
  26. package/fesm2022/{acorex-platform-module-auth-client-profile-page-component.provider-DLTbTEe6.mjs.map → acorex-platform-module-auth-client-profile-page-component.provider-D364KW58.mjs.map} +1 -1
  27. package/fesm2022/{acorex-platform-module-auth-client-profile-page.component-BhmMsO3g.mjs → acorex-platform-module-auth-client-profile-page.component-DtI-_Kng.mjs} +5 -5
  28. package/fesm2022/{acorex-platform-module-auth-client-profile-page.component-BhmMsO3g.mjs.map → acorex-platform-module-auth-client-profile-page.component-DtI-_Kng.mjs.map} +1 -1
  29. package/fesm2022/{acorex-platform-module-auth-client-register-password.component-M-ayP7oO.mjs → acorex-platform-module-auth-client-register-password.component-BZj1bmwP.mjs} +2 -2
  30. package/fesm2022/{acorex-platform-module-auth-client-register-password.component-M-ayP7oO.mjs.map → acorex-platform-module-auth-client-register-password.component-BZj1bmwP.mjs.map} +1 -1
  31. package/fesm2022/{acorex-platform-module-auth-client-register.module-Qa3ovje0.mjs → acorex-platform-module-auth-client-register.module-jbBjiAHz.mjs} +4 -4
  32. package/fesm2022/{acorex-platform-module-auth-client-register.module-Qa3ovje0.mjs.map → acorex-platform-module-auth-client-register.module-jbBjiAHz.mjs.map} +1 -1
  33. package/fesm2022/{acorex-platform-module-auth-client-remove-pin-code.command-BenNCyt6.mjs → acorex-platform-module-auth-client-remove-pin-code.command-BDN-ehow.mjs} +2 -2
  34. package/fesm2022/{acorex-platform-module-auth-client-remove-pin-code.command-BenNCyt6.mjs.map → acorex-platform-module-auth-client-remove-pin-code.command-BDN-ehow.mjs.map} +1 -1
  35. package/fesm2022/{acorex-platform-module-auth-client-result.component-PhPaEAgh.mjs → acorex-platform-module-auth-client-result.component-Bo1QkwMu.mjs} +3 -3
  36. package/fesm2022/{acorex-platform-module-auth-client-result.component-PhPaEAgh.mjs.map → acorex-platform-module-auth-client-result.component-Bo1QkwMu.mjs.map} +1 -1
  37. package/fesm2022/{acorex-platform-module-auth-client-session-lock-overlay.component-ChigSAI-.mjs → acorex-platform-module-auth-client-session-lock-overlay.component-DlLih00S.mjs} +6 -6
  38. package/fesm2022/{acorex-platform-module-auth-client-session-lock-overlay.component-ChigSAI-.mjs.map → acorex-platform-module-auth-client-session-lock-overlay.component-DlLih00S.mjs.map} +1 -1
  39. package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.command-CefSbJz8.mjs → acorex-platform-module-auth-client-set-pin-code.command-ZzialSjs.mjs} +3 -3
  40. package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.command-CefSbJz8.mjs.map → acorex-platform-module-auth-client-set-pin-code.command-ZzialSjs.mjs.map} +1 -1
  41. package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.component-DqFW_4rM.mjs → acorex-platform-module-auth-client-set-pin-code.component-DTmtx45j.mjs} +5 -5
  42. package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.component-DqFW_4rM.mjs.map → acorex-platform-module-auth-client-set-pin-code.component-DTmtx45j.mjs.map} +1 -1
  43. package/fesm2022/{acorex-platform-module-auth-client-tenant-chooser.component-DCdRCf1m.mjs → acorex-platform-module-auth-client-tenant-chooser.component-BdOXSMVU.mjs} +2 -2
  44. package/fesm2022/{acorex-platform-module-auth-client-tenant-chooser.component-DCdRCf1m.mjs.map → acorex-platform-module-auth-client-tenant-chooser.component-BdOXSMVU.mjs.map} +1 -1
  45. package/fesm2022/{acorex-platform-module-auth-client-two-factor-code.component-CtSv3MQu.mjs → acorex-platform-module-auth-client-two-factor-code.component-CxBUushO.mjs} +2 -2
  46. package/fesm2022/{acorex-platform-module-auth-client-two-factor-code.component-CtSv3MQu.mjs.map → acorex-platform-module-auth-client-two-factor-code.component-CxBUushO.mjs.map} +1 -1
  47. package/fesm2022/{acorex-platform-module-auth-client-two-factor.module-B7tETPbq.mjs → acorex-platform-module-auth-client-two-factor.module-DIq7MnHw.mjs} +2 -2
  48. package/fesm2022/{acorex-platform-module-auth-client-two-factor.module-B7tETPbq.mjs.map → acorex-platform-module-auth-client-two-factor.module-DIq7MnHw.mjs.map} +1 -1
  49. package/fesm2022/{acorex-platform-module-auth-client-view-login-history.command-CKPbyVWd.mjs → acorex-platform-module-auth-client-view-login-history.command-Bx61ZM1U.mjs} +2 -2
  50. package/fesm2022/{acorex-platform-module-auth-client-view-login-history.command-CKPbyVWd.mjs.map → acorex-platform-module-auth-client-view-login-history.command-Bx61ZM1U.mjs.map} +1 -1
  51. package/fesm2022/{acorex-platform-module-auth-client-welcome-onboarding-page.component-C2WYgv4l.mjs → acorex-platform-module-auth-client-welcome-onboarding-page.component-zGdD8pkX.mjs} +2 -2
  52. package/fesm2022/{acorex-platform-module-auth-client-welcome-onboarding-page.component-C2WYgv4l.mjs.map → acorex-platform-module-auth-client-welcome-onboarding-page.component-zGdD8pkX.mjs.map} +1 -1
  53. package/fesm2022/{acorex-platform-module-auth-client-welcome-onboarding.command-Ck1A26BI.mjs → acorex-platform-module-auth-client-welcome-onboarding.command-B5NBzcTY.mjs} +2 -2
  54. package/fesm2022/{acorex-platform-module-auth-client-welcome-onboarding.command-Ck1A26BI.mjs.map → acorex-platform-module-auth-client-welcome-onboarding.command-B5NBzcTY.mjs.map} +1 -1
  55. package/fesm2022/acorex-platform-module-auth-client.mjs +1 -1
  56. package/package.json +2 -2
  57. package/types/acorex-platform-module-auth-client.d.ts +29 -2
  58. package/fesm2022/acorex-platform-module-auth-client-acorex-platform-module-auth-client-C1oSPf12.mjs.map +0 -1
  59. package/fesm2022/acorex-platform-module-auth-client-master.layout-B3krDskY.mjs +0 -39
  60. package/fesm2022/acorex-platform-module-auth-client-master.layout-B3krDskY.mjs.map +0 -1
  61. package/fesm2022/acorex-platform-module-auth-client-pwa-install.component-BJOvT0hW.mjs +0 -84
  62. package/fesm2022/acorex-platform-module-auth-client-pwa-install.component-BJOvT0hW.mjs.map +0 -1
@@ -3,7 +3,7 @@ import { AXPLayoutBuilderService } from '@acorex-platform/framework-client/layou
3
3
  import * as i0 from '@angular/core';
4
4
  import { inject, Injectable } from '@angular/core';
5
5
  import { isEmpty } from 'lodash';
6
- import { t as AXPLoginHistoryService } from './acorex-platform-module-auth-client-acorex-platform-module-auth-client-C1oSPf12.mjs';
6
+ import { t as AXPLoginHistoryService } from './acorex-platform-module-auth-client-acorex-platform-module-auth-client-BpCPkKC9.mjs';
7
7
 
8
8
  //#region ---- View login history command ----
9
9
  /** Opens a read-only dialog listing recent sign-in attempts for the current user. */
@@ -104,4 +104,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
104
104
  }] });
105
105
 
106
106
  export { AXPViewLoginHistoryCommand };
107
- //# sourceMappingURL=acorex-platform-module-auth-client-view-login-history.command-CKPbyVWd.mjs.map
107
+ //# sourceMappingURL=acorex-platform-module-auth-client-view-login-history.command-Bx61ZM1U.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-auth-client-view-login-history.command-CKPbyVWd.mjs","sources":["../../../../libs/modules/auth/client/src/lib/commands/view-login-history.command.ts"],"sourcesContent":["import { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPLayoutBuilderService } from '@acorex-platform/framework-client/layout/builder';\n\nimport { inject, Injectable } from '@angular/core';\nimport { isEmpty } from 'lodash';\nimport { AXPLoginHistoryEntry, AXPLoginHistoryService } from '../shared/services/login-history.service';\n\n//#region ---- View login history command ----\n\n/** Opens a read-only dialog listing recent sign-in attempts for the current user. */\n@Injectable({ providedIn: 'root' })\nexport class AXPViewLoginHistoryCommand implements AXPCommand {\n //#region ---- Services & Dependencies ----\n\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly loginHistoryService = inject(AXPLoginHistoryService);\n private readonly translateService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Command ----\n\n async execute(): AXPCommandExecuteResultPromise<void> {\n const entries = await this.loginHistoryService.getEntries();\n const rows = await this.buildRows(entries);\n\n const dialogTitle = await this.translateService.translateAsync(\n '@auth:profile-page.commands.view-login-history.dialog.title',\n );\n\n await this.layoutBuilder\n .create()\n .dialog((dialog) => {\n dialog.setTitle(dialogTitle).setSize('lg').setCloseButton(true);\n\n if (isEmpty(rows)) {\n dialog.setMessage('@auth:profile-page.commands.view-login-history.empty');\n } else {\n dialog.content((layout) => {\n layout.list((list) => {\n list\n .setDataSource(rows)\n .setColumns([\n {\n name: 'lastLoginDate',\n title: '@auth:profile-page.commands.view-login-history.columns.date',\n width: '180px',\n widget: {\n type: 'date-time-editor',\n path: 'lastLoginDate',\n options: { format: 'datetime', readOnly: true },\n },\n },\n {\n name: 'device',\n title: '@auth:profile-page.commands.view-login-history.columns.device',\n widget: { type: 'text-editor', path: 'device', options: { readOnly: true } },\n },\n {\n name: 'location',\n title: '@auth:profile-page.commands.view-login-history.columns.location',\n widget: { type: 'text-editor', path: 'location', options: { readOnly: true } },\n },\n {\n name: 'ipAddress',\n title: '@auth:profile-page.commands.view-login-history.columns.ip-address',\n width: '140px',\n widget: { type: 'text-editor', path: 'ipAddress', options: { readOnly: true } },\n },\n {\n name: 'browser',\n title: '@auth:profile-page.commands.view-login-history.columns.browser',\n widget: { type: 'text-editor', path: 'browser', options: { readOnly: true } },\n },\n {\n name: 'statusLabel',\n title: '@auth:profile-page.commands.view-login-history.columns.status',\n width: '120px',\n widget: { type: 'text-editor', path: 'statusLabel', options: { readOnly: true } },\n },\n ])\n .setPaging(true)\n .setShowHeader(true)\n .setAllowSelection(false)\n .setMinHeight(360);\n });\n });\n }\n })\n .show();\n\n return {\n success: true,\n kind: 'object',\n data: undefined,\n metadata: { refresh: false },\n };\n }\n\n //#endregion\n\n //#region ---- Utility Methods ----\n\n private async buildRows(\n entries: AXPLoginHistoryEntry[],\n ): Promise<Array<AXPLoginHistoryEntry & { statusLabel: string }>> {\n return Promise.all(\n entries.map(async (entry) => ({\n ...entry,\n statusLabel: await this.translateService.translateAsync(\n `@auth:profile-page.commands.view-login-history.status.${entry.status}`,\n ),\n })),\n );\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-auth-client-view-login-history.command-Bx61ZM1U.mjs","sources":["../../../../libs/modules/auth/client/src/lib/commands/view-login-history.command.ts"],"sourcesContent":["import { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPLayoutBuilderService } from '@acorex-platform/framework-client/layout/builder';\n\nimport { inject, Injectable } from '@angular/core';\nimport { isEmpty } from 'lodash';\nimport { AXPLoginHistoryEntry, AXPLoginHistoryService } from '../shared/services/login-history.service';\n\n//#region ---- View login history command ----\n\n/** Opens a read-only dialog listing recent sign-in attempts for the current user. */\n@Injectable({ providedIn: 'root' })\nexport class AXPViewLoginHistoryCommand implements AXPCommand {\n //#region ---- Services & Dependencies ----\n\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly loginHistoryService = inject(AXPLoginHistoryService);\n private readonly translateService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Command ----\n\n async execute(): AXPCommandExecuteResultPromise<void> {\n const entries = await this.loginHistoryService.getEntries();\n const rows = await this.buildRows(entries);\n\n const dialogTitle = await this.translateService.translateAsync(\n '@auth:profile-page.commands.view-login-history.dialog.title',\n );\n\n await this.layoutBuilder\n .create()\n .dialog((dialog) => {\n dialog.setTitle(dialogTitle).setSize('lg').setCloseButton(true);\n\n if (isEmpty(rows)) {\n dialog.setMessage('@auth:profile-page.commands.view-login-history.empty');\n } else {\n dialog.content((layout) => {\n layout.list((list) => {\n list\n .setDataSource(rows)\n .setColumns([\n {\n name: 'lastLoginDate',\n title: '@auth:profile-page.commands.view-login-history.columns.date',\n width: '180px',\n widget: {\n type: 'date-time-editor',\n path: 'lastLoginDate',\n options: { format: 'datetime', readOnly: true },\n },\n },\n {\n name: 'device',\n title: '@auth:profile-page.commands.view-login-history.columns.device',\n widget: { type: 'text-editor', path: 'device', options: { readOnly: true } },\n },\n {\n name: 'location',\n title: '@auth:profile-page.commands.view-login-history.columns.location',\n widget: { type: 'text-editor', path: 'location', options: { readOnly: true } },\n },\n {\n name: 'ipAddress',\n title: '@auth:profile-page.commands.view-login-history.columns.ip-address',\n width: '140px',\n widget: { type: 'text-editor', path: 'ipAddress', options: { readOnly: true } },\n },\n {\n name: 'browser',\n title: '@auth:profile-page.commands.view-login-history.columns.browser',\n widget: { type: 'text-editor', path: 'browser', options: { readOnly: true } },\n },\n {\n name: 'statusLabel',\n title: '@auth:profile-page.commands.view-login-history.columns.status',\n width: '120px',\n widget: { type: 'text-editor', path: 'statusLabel', options: { readOnly: true } },\n },\n ])\n .setPaging(true)\n .setShowHeader(true)\n .setAllowSelection(false)\n .setMinHeight(360);\n });\n });\n }\n })\n .show();\n\n return {\n success: true,\n kind: 'object',\n data: undefined,\n metadata: { refresh: false },\n };\n }\n\n //#endregion\n\n //#region ---- Utility Methods ----\n\n private async buildRows(\n entries: AXPLoginHistoryEntry[],\n ): Promise<Array<AXPLoginHistoryEntry & { statusLabel: string }>> {\n return Promise.all(\n entries.map(async (entry) => ({\n ...entry,\n statusLabel: await this.translateService.translateAsync(\n `@auth:profile-page.commands.view-login-history.status.${entry.status}`,\n ),\n })),\n );\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@ import { CommonModule } from '@angular/common';
16
16
  import * as i0 from '@angular/core';
17
17
  import { inject, DestroyRef, signal, viewChild, computed, effect, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
18
18
  import { ActivatedRoute, Router } from '@angular/router';
19
- import { u as AXPWelcomeOnboardingFlowService, E as AXPOnboardingProgressService } from './acorex-platform-module-auth-client-acorex-platform-module-auth-client-C1oSPf12.mjs';
19
+ import { u as AXPWelcomeOnboardingFlowService, D as AXPOnboardingProgressService } from './acorex-platform-module-auth-client-acorex-platform-module-auth-client-BpCPkKC9.mjs';
20
20
 
21
21
  //#region ----- Scoped palette CSS -----
22
22
  const WELCOME_PALETTE_SCOPE = '.axp-welcome-onboarding';
@@ -810,4 +810,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
810
810
  }], propDecorators: { formScrollHost: [{ type: i0.ViewChild, args: ['formScrollHost', { isSignal: true }] }], confettiHost: [{ type: i0.ViewChild, args: ['confettiHost', { isSignal: true }] }] } });
811
811
 
812
812
  export { AXPAuthWelcomeOnboardingPageComponent };
813
- //# sourceMappingURL=acorex-platform-module-auth-client-welcome-onboarding-page.component-C2WYgv4l.mjs.map
813
+ //# sourceMappingURL=acorex-platform-module-auth-client-welcome-onboarding-page.component-zGdD8pkX.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-auth-client-welcome-onboarding-page.component-C2WYgv4l.mjs","sources":["../../../../libs/modules/auth/client/src/lib/pages/account/welcome-onboarding/welcome-onboarding-palette-scope.util.ts","../../../../libs/modules/auth/client/src/lib/pages/account/welcome-onboarding/welcome-onboarding-confetti.util.ts","../../../../libs/modules/auth/client/src/lib/pages/account/welcome-onboarding/welcome-onboarding-typography-preview.util.ts","../../../../libs/modules/auth/client/src/lib/pages/account/welcome-onboarding/welcome-onboarding-page.component.ts","../../../../libs/modules/auth/client/src/lib/pages/account/welcome-onboarding/welcome-onboarding-page.component.html"],"sourcesContent":["//#region ----- Scoped palette CSS -----\n\nconst WELCOME_PALETTE_SCOPE = '.axp-welcome-onboarding';\n\nfunction normalizeHexColor(value: string): string | undefined {\n const raw = value.trim();\n const withoutHash = raw.startsWith('#') ? raw.slice(1) : raw;\n if (/^[0-9a-fA-F]{3}$/.test(withoutHash)) {\n return withoutHash\n .split('')\n .map((char) => char + char)\n .join('')\n .toLowerCase();\n }\n if (/^[0-9a-fA-F]{6}$/.test(withoutHash)) {\n return withoutHash.toLowerCase();\n }\n return undefined;\n}\n\nfunction hexToRgb(hex: string): [number, number, number] {\n return [\n Number.parseInt(hex.slice(0, 2), 16),\n Number.parseInt(hex.slice(2, 4), 16),\n Number.parseInt(hex.slice(4, 6), 16),\n ];\n}\n\nfunction rgbChannels([r, g, b]: [number, number, number]): string {\n return `${r}, ${g}, ${b}`;\n}\n\nfunction mixTowardWhite(hex: string, amount: number): [number, number, number] {\n const [r, g, b] = hexToRgb(hex);\n return [\n Math.round(r + (255 - r) * amount),\n Math.round(g + (255 - g) * amount),\n Math.round(b + (255 - b) * amount),\n ];\n}\n\nfunction mixTowardBlack(hex: string, amount: number): [number, number, number] {\n const [r, g, b] = hexToRgb(hex);\n const keep = 1 - amount;\n return [Math.round(r * keep), Math.round(g * keep), Math.round(b * keep)];\n}\n\nfunction relativeLuminance(hex: string): number {\n const [r, g, b] = hexToRgb(hex).map((channel) => {\n const scaled = channel / 255;\n return scaled <= 0.03928 ? scaled / 12.92 : Math.pow((scaled + 0.055) / 1.055, 2.4);\n });\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n}\n\nfunction rgbToHex([r, g, b]: [number, number, number]): string {\n const toByte = (channel: number) =>\n Math.max(0, Math.min(255, Math.round(channel)))\n .toString(16)\n .padStart(2, '0');\n return `${toByte(r)}${toByte(g)}${toByte(b)}`;\n}\n\nfunction contrastForegroundHex(backgroundHex: string): string {\n return relativeLuminance(backgroundHex) > 0.55 ? '171717' : 'ffffff';\n}\n\n/**\n * Maps palette primary hex to ax-sys primary tokens so ax-button and theme choosers\n * inside the welcome host follow the preview palette (not the global app theme).\n */\nexport function buildWelcomePaletteSysColorVars(primaryHex: string): Record<string, string> {\n const hex = normalizeHexColor(primaryHex);\n if (!hex) {\n return {};\n }\n\n const base = hexToRgb(hex);\n const lighter = mixTowardWhite(hex, 0.78);\n const lightest = mixTowardWhite(hex, 0.9);\n const darker = mixTowardBlack(hex, 0.14);\n const border = mixTowardBlack(hex, 0.1);\n const onPrimary = hexToRgb(contrastForegroundHex(hex));\n const onLighter = hexToRgb(contrastForegroundHex(rgbToHex(lighter)));\n\n const sys = {\n '--ax-sys-color-primary-500': rgbChannels(base),\n '--ax-sys-color-primary-600': rgbChannels(darker),\n '--ax-sys-color-primary-50': rgbChannels(lightest),\n '--ax-sys-color-primary-100': rgbChannels(lighter),\n '--ax-sys-color-primary-lighter-surface': rgbChannels(lighter),\n '--ax-sys-color-primary-surface': rgbChannels(base),\n '--ax-sys-color-on-primary-surface': rgbChannels(onPrimary),\n '--ax-sys-color-on-primary-lighter-surface': rgbChannels(onLighter),\n '--ax-sys-color-border-primary-surface': rgbChannels(border),\n '--ax-sys-color-border-primary-lighter-surface': rgbChannels(mixTowardWhite(hex, 0.45)),\n };\n\n /* ax-primary / primary-lighter-surface read --color-* aliases (often bound on :root). */\n const aliases = {\n '--color-primary': 'rgba(var(--ax-sys-color-primary-surface))',\n '--color-on-primary': 'rgba(var(--ax-sys-color-on-primary-surface))',\n '--color-border-primary': 'rgba(var(--ax-sys-color-border-primary-surface))',\n '--color-primary-lighter': 'rgba(var(--ax-sys-color-primary-lighter-surface))',\n '--color-on-primary-lighter': 'rgba(var(--ax-sys-color-on-primary-lighter-surface))',\n '--color-border-primary-lighter': 'rgba(var(--ax-sys-color-border-primary-lighter-surface))',\n };\n\n return { ...sys, ...aliases };\n}\n\n/**\n * Rewrites palette asset selectors so tokens apply under the welcome page host only.\n */\nexport function scopeWelcomePaletteCss(css: string): string {\n return css.replace(/:root/g, WELCOME_PALETTE_SCOPE);\n}\n\nexport function welcomePaletteCssUrl(paletteName: string): string {\n const safeName = paletteName.trim().length > 0 ? paletteName.trim() : 'default';\n return `/assets/themes/palettes/css/${safeName}.css`;\n}\n\n//#endregion\n","//#region ----- Welcome confetti (canvas, no external package) -----\n\ntype ConfettiPiece = {\n x: number;\n y: number;\n w: number;\n h: number;\n vx: number;\n vy: number;\n rotation: number;\n spin: number;\n color: string;\n opacity: number;\n};\n\nconst CONFETTI_COLORS = [\n '#7c3aed',\n '#2563eb',\n '#0d9488',\n '#eab308',\n '#f97316',\n '#ec4899',\n '#22c55e',\n];\n\nconst DURATION_MS = 4200;\n\nfunction prefersReducedMotion(): boolean {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {\n return false;\n }\n return window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n}\n\n/** Runs a one-shot top-to-bottom confetti burst inside `host`. Returns a cleanup function. */\nexport function runWelcomeOnboardingConfetti(host: HTMLElement): () => void {\n if (prefersReducedMotion()) {\n return () => undefined;\n }\n\n const canvas = document.createElement('canvas');\n canvas.className = 'axp-welcome-onboarding__confetti-canvas';\n canvas.setAttribute('aria-hidden', 'true');\n host.appendChild(canvas);\n\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n canvas.remove();\n return () => undefined;\n }\n\n let width = 0;\n let height = 0;\n let rafId = 0;\n let running = true;\n const startedAt = performance.now();\n\n const resize = (): void => {\n const rect = host.getBoundingClientRect();\n width = Math.max(1, Math.floor(rect.width));\n height = Math.max(1, Math.floor(rect.height));\n canvas.width = width;\n canvas.height = height;\n canvas.style.width = `${width}px`;\n canvas.style.height = `${height}px`;\n };\n\n resize();\n const onResize = (): void => resize();\n window.addEventListener('resize', onResize);\n\n const pieces: ConfettiPiece[] = [];\n const count = Math.min(160, Math.max(80, Math.floor(width / 6)));\n for (let i = 0; i < count; i += 1) {\n pieces.push({\n x: Math.random() * width,\n y: -20 - Math.random() * height * 0.35,\n w: 6 + Math.random() * 6,\n h: 10 + Math.random() * 8,\n vx: (Math.random() - 0.5) * 2.4,\n vy: 2.2 + Math.random() * 3.8,\n rotation: Math.random() * Math.PI * 2,\n spin: (Math.random() - 0.5) * 0.18,\n color: CONFETTI_COLORS[i % CONFETTI_COLORS.length] ?? '#7c3aed',\n opacity: 0.85 + Math.random() * 0.15,\n });\n }\n\n const tick = (now: number): void => {\n if (!running) {\n return;\n }\n\n const elapsed = now - startedAt;\n ctx.clearRect(0, 0, width, height);\n\n for (const piece of pieces) {\n piece.x += piece.vx;\n piece.y += piece.vy;\n piece.vy += 0.06;\n piece.vx *= 0.995;\n piece.rotation += piece.spin;\n\n const fade =\n elapsed > DURATION_MS - 900 ? Math.max(0, (DURATION_MS - elapsed) / 900) : piece.opacity;\n\n ctx.save();\n ctx.globalAlpha = fade * piece.opacity;\n ctx.translate(piece.x, piece.y);\n ctx.rotate(piece.rotation);\n ctx.fillStyle = piece.color;\n ctx.fillRect(-piece.w / 2, -piece.h / 2, piece.w, piece.h);\n ctx.restore();\n }\n\n if (elapsed >= DURATION_MS) {\n running = false;\n cleanup();\n return;\n }\n\n rafId = requestAnimationFrame(tick);\n };\n\n const cleanup = (): void => {\n running = false;\n if (rafId) {\n cancelAnimationFrame(rafId);\n }\n window.removeEventListener('resize', onResize);\n canvas.remove();\n };\n\n rafId = requestAnimationFrame(tick);\n return cleanup;\n}\n\n//#endregion\n","import { getRegionalFontStylesheet } from '@acorex-platform/framework-client/themes/shared';\n\n//#region ----- Constants -----\n\nconst FONT_SIZE_KEYWORDS = new Set(['small', 'medium', 'large', 'x-large']);\nconst DEFAULT_FONT_FAMILY = 'system-ui';\nconst DEFAULT_FONT_SIZE = 'medium';\nconst FONT_FALLBACK = 'Tahoma, system-ui, sans-serif';\n\n//#endregion\n\n//#region ----- Helpers -----\n\nexport function resolveWelcomePreviewFontFamily(value: unknown): string {\n return typeof value === 'string' && value.trim().length > 0 ? value.trim() : DEFAULT_FONT_FAMILY;\n}\n\nexport function resolveWelcomePreviewFontSize(value: unknown): string {\n return typeof value === 'string' && FONT_SIZE_KEYWORDS.has(value) ? value : DEFAULT_FONT_SIZE;\n}\n\n/** Same CSS family contract as theme.service (`resolveFontCssFamily`). */\nfunction resolveWelcomeFontCssFamily(fontId: string): string {\n if (fontId === 'system-ui') {\n return `system-ui, ${FONT_FALLBACK}`;\n }\n if (fontId === 'tahoma') {\n return 'Tahoma, system-ui, sans-serif';\n }\n return `\"${fontId}\", ${FONT_FALLBACK}`;\n}\n\nfunction resolveWelcomeFontVariationSettings(fontId: string): string | undefined {\n if (fontId === 'iranyekanx') {\n return '\"dots\" 1';\n }\n return undefined;\n}\n\nexport function buildWelcomeTypographyStyle(\n fontId: string,\n fontSize: string,\n): Record<string, string> {\n const variation = resolveWelcomeFontVariationSettings(fontId);\n const style: Record<string, string> = {\n fontFamily: resolveWelcomeFontCssFamily(fontId),\n fontSize,\n };\n if (variation) {\n style['fontVariationSettings'] = variation;\n }\n return style;\n}\n\nexport function ensureWelcomeFontStylesLoaded(fontId: string): void {\n if (typeof document === 'undefined') {\n return;\n }\n\n const href = getRegionalFontStylesheet(fontId);\n if (!href) {\n return;\n }\n\n const selector = `link[data-axp-regional-font=\"${href}\"]`;\n if (document.head.querySelector(selector)) {\n return;\n }\n\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.href = href;\n link.setAttribute('data-axp-regional-font', href);\n document.head.appendChild(link);\n}\n\nexport function applyWelcomeTypographyToHtml(fontId: string, fontSize: string): void {\n if (typeof document === 'undefined') {\n return;\n }\n\n const html = document.documentElement;\n html.style.fontFamily = resolveWelcomeFontCssFamily(fontId);\n html.style.fontVariationSettings = resolveWelcomeFontVariationSettings(fontId) ?? '';\n html.style.fontSize = fontSize;\n}\n\n//#endregion\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXTranslationModule, AXTranslationService, resolveMultiLanguageString } from '@acorex/core/translation';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPHomePageService, AXPPlatformBrandingService } from '@acorex-platform/framework-client/common';\nimport { AXPLogoComponent } from '@acorex-platform/framework-client/core';\nimport { AXPLayoutRendererComponent } from '@acorex-platform/framework-client/layout/builder';\nimport { AXPUserAvatarComponent } from '@acorex-platform/framework-client/layout/components';\nimport type { AXPWidgetNode } from '@acorex-platform/framework-shared/core';\nimport {\n AXP_THEME_PALETTE_PROVIDER,\n AXPLayoutThemeService,\n AXPMenuOrientation,\n AXPMenuVerticalMode,\n AXPThemeLayoutSetting,\n AXPThemeMode,\n type AXPThemePalette,\n} from '@acorex-platform/framework-client/themes/shared';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n OnInit,\n ViewEncapsulation,\n computed,\n effect,\n inject,\n signal,\n ElementRef,\n viewChild,\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport type { AXPOnboardingContext, AXPOnboardingStep } from '../../../onboarding/onboarding.types';\nimport { AXPOnboardingProgressService } from '../../../onboarding/onboarding-progress.service';\nimport { AXPWelcomeOnboardingFlowService } from '../../../onboarding/welcome-onboarding-flow.service';\nimport {\n buildWelcomePaletteSysColorVars,\n scopeWelcomePaletteCss,\n welcomePaletteCssUrl,\n} from './welcome-onboarding-palette-scope.util';\nimport { runWelcomeOnboardingConfetti } from './welcome-onboarding-confetti.util';\nimport {\n applyWelcomeTypographyToHtml,\n buildWelcomeTypographyStyle,\n ensureWelcomeFontStylesLoaded,\n resolveWelcomePreviewFontFamily,\n resolveWelcomePreviewFontSize,\n} from './welcome-onboarding-typography-preview.util';\n\n//#region ----- Types -----\n\ntype WelcomeFinishOutcome = 'completed' | 'skipped' | 'deferred' | null;\n\n//#endregion\n\n//#region ----- Welcome onboarding page -----\n\n@Component({\n selector: 'axp-auth-welcome-onboarding-page',\n templateUrl: './welcome-onboarding-page.component.html',\n styleUrls: ['./welcome-onboarding-page.component.css'],\n imports: [\n CommonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXTranslationModule,\n AXPLogoComponent,\n AXPUserAvatarComponent,\n AXPLayoutRendererComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXPAuthWelcomeOnboardingPageComponent implements OnInit {\n //#region ----- Services & Dependencies -----\n\n private readonly flowService = inject(AXPWelcomeOnboardingFlowService);\n private readonly progressService = inject(AXPOnboardingProgressService);\n private readonly sessionService = inject(AXPSessionService);\n private readonly homePageService = inject(AXPHomePageService);\n private readonly platformBranding = inject(AXPPlatformBrandingService);\n private readonly route = inject(ActivatedRoute);\n private readonly router = inject(Router);\n private readonly paletteProvider = inject(AXP_THEME_PALETTE_PROVIDER);\n private readonly themeService = inject(AXPLayoutThemeService);\n private readonly translationService = inject(AXTranslationService);\n private readonly destroyRef = inject(DestroyRef);\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected readonly palettes = signal<AXPThemePalette[]>([]);\n protected readonly systemPrefersDark = signal(false);\n protected readonly loading = signal(true);\n protected readonly platformTitle = signal('ACoreX');\n protected readonly steps = signal<AXPOnboardingStep[]>([]);\n protected readonly stepIndex = signal(0);\n protected readonly formContext = signal<Record<string, unknown>>({});\n protected readonly finishOutcome = signal<WelcomeFinishOutcome>(null);\n protected readonly busy = signal(false);\n protected readonly backdropLayerA = signal<Record<string, string>>({});\n protected readonly backdropLayerB = signal<Record<string, string>>({});\n protected readonly activeBackdropLayer = signal<'a' | 'b'>('a');\n protected readonly previewTaskSkeletonRows = [0, 1, 2];\n\n private readonly formScrollHost = viewChild<ElementRef<HTMLElement>>('formScrollHost');\n private readonly confettiHost = viewChild<ElementRef<HTMLElement>>('confettiHost');\n\n private sessionContext: AXPOnboardingContext | null = null;\n private forcePlan = false;\n private backdropCrossfadeKey = '';\n private paletteStyleEl: HTMLStyleElement | null = null;\n private paletteLoadToken = 0;\n private confettiRanForOutcome: WelcomeFinishOutcome = null;\n private stopConfetti: (() => void) | null = null;\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n protected readonly currentStep = computed(() => {\n const list = this.steps();\n const index = this.stepIndex();\n return list[index] ?? null;\n });\n\n protected readonly isFirstStep = computed(() => this.stepIndex() === 0);\n\n protected readonly isLastStep = computed(() => {\n const list = this.steps();\n return list.length > 0 && this.stepIndex() === list.length - 1;\n });\n\n protected readonly stepLayout = computed((): AXPWidgetNode | undefined => {\n const step = this.currentStep();\n if (!step || this.finishOutcome()) {\n return undefined;\n }\n return this.flowService.buildStepLayout(step);\n });\n\n protected readonly showAppearancePreview = computed(\n () => this.currentStep()?.id === 'welcome-appearance',\n );\n\n protected readonly showTypographyPreview = computed(\n () => this.currentStep()?.id === 'welcome-typography',\n );\n\n protected readonly showProfileAvatar = computed(() => this.currentStep()?.id === 'profile-basics');\n\n protected readonly previewOrganizationTitle = computed((): string => {\n const tenant = this.sessionService.tenant;\n const locale = this.translationService.getActiveLang();\n const fromTitle = tenant?.title\n ? resolveMultiLanguageString(tenant.title, locale).trim()\n : '';\n if (fromTitle.length > 0) {\n return fromTitle;\n }\n const name = tenant?.name?.trim();\n if (name) {\n return name;\n }\n return this.platformTitle();\n });\n\n protected readonly orbIconClass = computed((): string => {\n switch (this.currentStep()?.id) {\n case 'welcome-intro':\n return 'fa-solid fa-earth-americas';\n case 'welcome-appearance':\n return 'fa-solid fa-palette';\n case 'welcome-navigation':\n return 'fa-solid fa-table-columns';\n case 'welcome-typography':\n return 'fa-solid fa-font';\n case 'profile-basics':\n return 'fa-solid fa-user';\n case 'whs-orientation':\n return 'fa-solid fa-shield-check';\n default:\n return 'fa-solid fa-sparkles';\n }\n });\n\n protected readonly doneOrbIconClass = 'fa-solid fa-check';\n\n protected readonly previewPaletteName = computed(() => {\n const palette = this.formContext()[AXPThemeLayoutSetting.Palette];\n return typeof palette === 'string' && palette.length > 0 ? palette : 'default';\n });\n\n protected readonly previewResolvedDark = computed(() => {\n const mode = this.formContext()[AXPThemeLayoutSetting.Mode];\n if (mode === AXPThemeMode.Dark) {\n return true;\n }\n if (mode === AXPThemeMode.Light) {\n return false;\n }\n return this.systemPrefersDark();\n });\n\n protected readonly previewSurfaceStyle = computed(() => {\n const name = this.previewPaletteName();\n const list = this.palettes();\n const match =\n list.find((item) => item.name === name) ??\n list.find((item) => item.name === 'default') ??\n list[0];\n const colors = match?.colors;\n const isDark = this.previewResolvedDark();\n\n const primary = colors?.primary ?? '#237f6a';\n const secondary = colors?.secondary ?? '#4b9e8f';\n const accent = colors?.accents?.[0] ?? secondary ?? '#7fc6b5';\n const lightSurface = colors?.light ?? '#f2f5f7';\n const darkSurface = colors?.dark ?? '#1a1f1e';\n const surface = isDark ? darkSurface : lightSurface;\n\n return {\n ...buildWelcomePaletteSysColorVars(primary),\n '--axp-welcome-preview-primary': primary,\n '--axp-welcome-preview-secondary': secondary,\n '--axp-welcome-preview-surface': surface,\n '--axp-welcome-preview-accent': accent,\n '--axp-welcome-preview-panel': isDark\n ? `color-mix(in srgb, ${surface} 88%, white 6%)`\n : '#ffffff',\n '--axp-welcome-preview-card': isDark\n ? `color-mix(in srgb, ${surface} 72%, white 12%)`\n : '#ffffff',\n '--axp-welcome-preview-text': isDark ? '#e3eee9' : `color-mix(in srgb, ${primary} 70%, black)`,\n '--axp-welcome-preview-muted': isDark ? '#b5c7bf' : '#64736f',\n '--axp-welcome-preview-border': isDark\n ? `color-mix(in srgb, ${surface} 55%, white 14%)`\n : '#fdfdfd',\n '--axp-welcome-page-glow-start': isDark\n ? `color-mix(in srgb, ${accent} 38%, ${surface} 62%)`\n : `color-mix(in srgb, ${accent} 52%, white 48%)`,\n '--axp-welcome-page-glow-end': isDark\n ? `color-mix(in srgb, ${secondary} 42%, ${surface} 58%)`\n : `color-mix(in srgb, ${secondary} 38%, white 62%)`,\n '--axp-welcome-page-base': isDark\n ? `color-mix(in srgb, ${surface} 94%, black 6%)`\n : `color-mix(in srgb, ${lightSurface} 86%, ${accent} 14%)`,\n };\n });\n\n protected readonly previewFontFamily = computed(() =>\n resolveWelcomePreviewFontFamily(this.formContext()[AXPThemeLayoutSetting.Font]),\n );\n\n protected readonly previewFontSize = computed(() =>\n resolveWelcomePreviewFontSize(this.formContext()[AXPThemeLayoutSetting.FontSize]),\n );\n\n protected readonly previewTypographyStyle = computed(() =>\n buildWelcomeTypographyStyle(this.previewFontFamily(), this.previewFontSize()),\n );\n\n protected readonly previewHostStyle = computed(() => ({\n ...this.previewSurfaceStyle(),\n ...this.previewTypographyStyle(),\n }));\n\n //#region ----- Confetti (completion) -----\n\n private readonly completionConfettiEffect = effect(() => {\n const outcome = this.finishOutcome();\n if (!outcome || outcome !== 'completed') {\n return;\n }\n if (this.confettiRanForOutcome === outcome) {\n return;\n }\n\n queueMicrotask(() => {\n const host = this.confettiHost()?.nativeElement;\n if (!host || this.confettiRanForOutcome === 'completed') {\n return;\n }\n this.confettiRanForOutcome = outcome;\n this.stopConfetti?.();\n this.stopConfetti = runWelcomeOnboardingConfetti(host);\n });\n });\n\n //#endregion\n\n //#region ----- Live typography (font + size) -----\n\n private readonly typographyPreviewEffect = effect(() => {\n if (this.loading()) {\n return;\n }\n\n const family = this.previewFontFamily();\n const size = this.previewFontSize();\n ensureWelcomeFontStylesLoaded(family);\n applyWelcomeTypographyToHtml(family, size);\n });\n\n //#endregion\n\n //#region ----- Scoped palette (buttons + surfaces) -----\n\n private readonly scopedPaletteEffect = effect(() => {\n const name = this.previewPaletteName();\n const token = ++this.paletteLoadToken;\n void this.loadScopedPaletteCss(name, token);\n });\n\n //#endregion\n\n //#region ----- Backdrop crossfade -----\n\n private readonly backdropCrossfadeEffect = effect(() => {\n const style = this.previewSurfaceStyle();\n const key = JSON.stringify(style);\n if (key === this.backdropCrossfadeKey) {\n return;\n }\n\n if (!this.backdropCrossfadeKey) {\n this.backdropCrossfadeKey = key;\n this.backdropLayerA.set(style);\n this.backdropLayerB.set(style);\n this.activeBackdropLayer.set('a');\n return;\n }\n\n this.backdropCrossfadeKey = key;\n if (this.activeBackdropLayer() === 'a') {\n this.backdropLayerB.set(style);\n this.activeBackdropLayer.set('b');\n return;\n }\n\n this.backdropLayerA.set(style);\n this.activeBackdropLayer.set('a');\n });\n\n //#endregion\n\n protected readonly previewMenuHorizontal = computed(() => {\n const value = this.formContext()[AXPThemeLayoutSetting.MenuOrientation];\n return value === AXPMenuOrientation.Horizontal;\n });\n\n protected readonly previewMenuCompact = computed(() => {\n const value = this.formContext()[AXPThemeLayoutSetting.MenuVerticalMode];\n return value === AXPMenuVerticalMode.Compact;\n });\n\n protected readonly previewHeaderColored = computed(() => {\n const value = this.formContext()[AXPThemeLayoutSetting.HeaderAppearance];\n return value !== 'simple';\n });\n\n protected get user() {\n return this.sessionService.user;\n }\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n async ngOnInit(): Promise<void> {\n const title = await this.platformBranding.resolvePlatformTitle().catch(() => '');\n this.platformTitle.set(title || 'ACoreX');\n\n this.forcePlan =\n this.route.snapshot.queryParamMap.get('force') === '1' ||\n this.route.snapshot.queryParamMap.get('force') === 'true';\n\n const provider = await this.paletteProvider;\n this.palettes.set(await provider.getList());\n\n this.bindSystemColorSchemeListener();\n\n this.destroyRef.onDestroy(() => {\n this.paletteStyleEl?.remove();\n this.paletteStyleEl = null;\n this.stopConfetti?.();\n this.stopConfetti = null;\n void this.themeService.loadSettings();\n\n const step = this.currentStep();\n if (step && this.sessionContext && !this.finishOutcome()) {\n this.flowService.setResumeState(this.sessionContext, step.id);\n }\n });\n\n await this.bootstrap();\n }\n\n //#endregion\n\n //#region ----- Palette CSS loading -----\n\n private async loadScopedPaletteCss(paletteName: string, token: number): Promise<void> {\n const candidates = [paletteName, 'default'].filter(\n (name, index, list) => name.trim().length > 0 && list.indexOf(name) === index,\n );\n\n let cssText: string | null = null;\n for (const name of candidates) {\n try {\n const response = await fetch(welcomePaletteCssUrl(name));\n if (response.ok) {\n cssText = await response.text();\n break;\n }\n } catch {\n /* try next candidate */\n }\n }\n\n if (token !== this.paletteLoadToken || !cssText) {\n return;\n }\n\n if (!this.paletteStyleEl) {\n this.paletteStyleEl = document.createElement('style');\n this.paletteStyleEl.setAttribute('data-welcome-onboarding-palette', '');\n document.head.appendChild(this.paletteStyleEl);\n }\n\n this.paletteStyleEl.setAttribute('data-welcome-onboarding-palette', paletteName);\n this.paletteStyleEl.textContent = scopeWelcomePaletteCss(cssText);\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected onFormContextChange(next: Record<string, unknown>): void {\n const host = this.formScrollHost()?.nativeElement;\n const scrollTop = host?.scrollTop ?? 0;\n this.formContext.set(next);\n if (!host) {\n return;\n }\n const restoreScroll = (): void => {\n host.scrollTop = scrollTop;\n };\n queueMicrotask(restoreScroll);\n requestAnimationFrame(restoreScroll);\n }\n\n protected async goToStep(index: number): Promise<void> {\n const list = this.steps();\n if (index < 0 || index >= list.length) {\n return;\n }\n this.stepIndex.set(index);\n const step = list[index];\n if (step && this.sessionContext) {\n this.flowService.setResumeState(this.sessionContext, step.id);\n }\n }\n\n protected async previous(): Promise<void> {\n if (this.isFirstStep()) {\n return;\n }\n this.stepIndex.update((i) => i - 1);\n }\n\n protected async next(): Promise<void> {\n const step = this.currentStep();\n if (!step || !this.sessionContext || this.busy()) {\n return;\n }\n\n if (this.isLastStep()) {\n await this.complete('completed');\n return;\n }\n\n this.busy.set(true);\n try {\n await this.flowService.savePreferences(this.formContext());\n await this.flowService.markStep(step, this.sessionContext, 'completed');\n\n const nextIndex = this.stepIndex() + 1;\n this.stepIndex.set(nextIndex);\n\n const nextStep = this.steps()[nextIndex];\n if (nextStep) {\n this.flowService.setResumeState(this.sessionContext, nextStep.id);\n }\n } finally {\n this.busy.set(false);\n }\n }\n\n protected async skipAll(): Promise<void> {\n if (this.busy() || !this.sessionContext) {\n return;\n }\n this.busy.set(true);\n try {\n await this.flowService.savePreferences(this.formContext());\n await this.flowService.markSteps(this.steps(), this.sessionContext, 'skipped');\n this.flowService.clearResumeState();\n await this.enterWorkspace();\n } finally {\n this.busy.set(false);\n }\n }\n\n protected async remindLater(): Promise<void> {\n if (this.busy()) {\n return;\n }\n this.busy.set(true);\n try {\n await this.flowService.savePreferences(this.formContext());\n await this.flowService.setRemindLater();\n await this.enterWorkspace();\n } finally {\n this.busy.set(false);\n }\n }\n\n protected async enterWorkspace(): Promise<void> {\n const urlTree = await this.homePageService.resolveAuthorizedHomeUrlTree();\n await this.router.navigateByUrl(urlTree);\n }\n\n protected async reviewSettings(): Promise<void> {\n this.finishOutcome.set(null);\n this.stepIndex.set(0);\n }\n\n protected stepArtCaptionKey(step: AXPOnboardingStep | null): string {\n if (!step) {\n return '@auth:welcome-onboarding.page.art.default-caption';\n }\n return `@auth:welcome-onboarding.page.art.${step.id}`;\n }\n\n //#endregion\n\n //#region ----- Private logic -----\n\n private bindSystemColorSchemeListener(): void {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {\n return;\n }\n\n const media = window.matchMedia('(prefers-color-scheme: dark)');\n this.systemPrefersDark.set(media.matches);\n\n const onChange = (event: MediaQueryListEvent) => {\n this.systemPrefersDark.set(event.matches);\n };\n\n media.addEventListener('change', onChange);\n this.destroyRef.onDestroy(() => media.removeEventListener('change', onChange));\n }\n\n private async bootstrap(): Promise<void> {\n this.loading.set(true);\n try {\n let pending = await this.flowService.evaluatePending(this.forcePlan);\n if (!pending && this.flowService.hasActiveResumeState()) {\n pending = await this.flowService.evaluatePending(true);\n }\n if (!pending) {\n await this.enterWorkspace();\n return;\n }\n\n this.sessionContext = pending.context;\n this.steps.set(pending.steps);\n const preferences = await this.flowService.loadPreferenceContext();\n this.formContext.set(preferences);\n\n const progress = await this.progressService.getProgress();\n let startIndex = 0;\n if (this.flowService.hasActiveResumeState()) {\n startIndex = this.flowService.resolveResumeStepIndex(pending.context, pending.steps);\n } else if (this.forcePlan) {\n startIndex = 0;\n } else {\n startIndex = this.flowService.resolveFirstIncompleteStepIndex(\n pending.steps,\n pending.context,\n progress,\n );\n }\n\n this.stepIndex.set(startIndex);\n const resumeStep = pending.steps[startIndex];\n if (resumeStep) {\n this.flowService.setResumeState(pending.context, resumeStep.id);\n }\n } finally {\n this.loading.set(false);\n }\n }\n\n private async complete(status: 'completed'): Promise<void> {\n if (this.busy() || !this.sessionContext) {\n return;\n }\n this.busy.set(true);\n try {\n await this.flowService.savePreferences(this.formContext());\n\n const step = this.currentStep();\n if (step) {\n await this.flowService.markStep(step, this.sessionContext, 'completed');\n }\n\n this.flowService.clearResumeState();\n this.finishOutcome.set(status);\n } finally {\n this.busy.set(false);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","<div\n class=\"axp-welcome-onboarding\"\n [class.ax-light]=\"!previewResolvedDark()\"\n [class.ax-dark]=\"previewResolvedDark()\"\n [ngStyle]=\"previewHostStyle()\"\n>\n <div class=\"axp-welcome-onboarding__backdrop-stack\" aria-hidden=\"true\">\n <div\n class=\"axp-welcome-onboarding__backdrop\"\n [class.axp-welcome-onboarding__backdrop--active]=\"activeBackdropLayer() === 'a'\"\n [ngStyle]=\"backdropLayerA()\"\n ></div>\n <div\n class=\"axp-welcome-onboarding__backdrop\"\n [class.axp-welcome-onboarding__backdrop--active]=\"activeBackdropLayer() === 'b'\"\n [ngStyle]=\"backdropLayerB()\"\n ></div>\n </div>\n\n <div class=\"axp-welcome-onboarding__content\" #confettiHost>\n <!-- ----- Full-page loading state ----- -->\n @if (loading()) {\n <div class=\"axp-welcome-onboarding__loading\">\n <ax-loading></ax-loading>\n </div>\n }\n <!-- ----- Main onboarding shell ----- -->\n @else {\n <div\n class=\"axp-welcome-onboarding__shell\"\n [class.axp-welcome-onboarding__shell--appearance]=\"showAppearancePreview()\"\n [class.axp-welcome-onboarding__shell--typography]=\"showTypographyPreview()\"\n [ngStyle]=\"previewHostStyle()\"\n >\n <header class=\"axp-welcome-onboarding__header\">\n <div class=\"axp-welcome-onboarding__brand\">\n <axp-logo\n logoKey=\"platform\"\n appearance=\"onLight\"\n format=\"full\"\n [size]=\"220\"\n [attr.alt]=\"platformTitle()\"\n ></axp-logo>\n </div>\n <div class=\"axp-welcome-onboarding__step-counter\">\n <!-- ----- Step counter in the header ----- -->\n @if (!finishOutcome() && currentStep(); as step) {\n <span>\n {{\n '@auth:welcome-onboarding.page.step-counter'\n | translate: { params: { current: stepIndex() + 1, total: steps().length } }\n | async\n }}\n · {{ step.title | translate | async }}\n </span>\n }\n <!-- ----- Ready message after completion ----- -->\n @else if (finishOutcome()) {\n {{ '@auth:welcome-onboarding.page.ready-counter' | translate | async }}\n }\n </div>\n </header>\n\n <main class=\"axp-welcome-onboarding__main\">\n <!-- ----- Completion screen ----- -->\n @if (finishOutcome(); as outcome) {\n <section class=\"axp-welcome-onboarding__done axp-welcome-onboarding__animate\">\n <div\n class=\"axp-welcome-onboarding__orb axp-welcome-onboarding__done-orb\"\n [ngStyle]=\"previewSurfaceStyle()\"\n aria-hidden=\"true\"\n >\n <i class=\"axp-welcome-onboarding__orb-icon\" [class]=\"doneOrbIconClass\"></i>\n </div>\n <h1 class=\"axp-welcome-onboarding__title\">\n {{\n ('@auth:welcome-onboarding.page.done.' + outcome + '.title') | translate | async\n }}\n </h1>\n <p class=\"axp-welcome-onboarding__lead\">\n {{\n ('@auth:welcome-onboarding.page.done.' + outcome + '.description') | translate | async\n }}\n </p>\n <div class=\"axp-welcome-onboarding__done-actions\">\n <ax-button\n look=\"solid\"\n color=\"primary\"\n [text]=\"'@auth:welcome-onboarding.page.actions.enter-workspace' | translate | async\"\n [disabled]=\"busy()\"\n (onClick)=\"enterWorkspace()\"\n ></ax-button>\n <!-- ----- Review settings after skip or defer ----- -->\n @if (outcome !== 'completed') {\n <ax-button\n look=\"outline\"\n color=\"default\"\n [text]=\"'@auth:welcome-onboarding.page.actions.review-settings' | translate | async\"\n [disabled]=\"busy()\"\n (onClick)=\"reviewSettings()\"\n ></ax-button>\n }\n </div>\n </section>\n }\n <!-- ----- Active step: form + art panel ----- -->\n @else {\n <section\n #formScrollHost\n class=\"axp-welcome-onboarding__form axp-welcome-onboarding__animate\"\n [class.axp-welcome-onboarding__form--appearance]=\"showAppearancePreview()\"\n [class.axp-welcome-onboarding__form--typography]=\"showTypographyPreview()\"\n [class.axp-welcome-onboarding__form--menu-horizontal]=\"\n showAppearancePreview() && previewMenuHorizontal()\n \"\n >\n <!-- ----- Step form content when a step is active ----- -->\n @if (currentStep(); as step) {\n <h1 class=\"axp-welcome-onboarding__title\">\n {{ ('@auth:welcome-onboarding.page.steps.' + step.id + '.headline') | translate | async }}\n </h1>\n <p class=\"axp-welcome-onboarding__lead\">\n {{ ('@auth:welcome-onboarding.page.steps.' + step.id + '.lead') | translate | async }}\n </p>\n\n <!-- ----- Profile avatar on profile basics step ----- -->\n @if (showProfileAvatar()) {\n <div class=\"axp-welcome-onboarding__profile-row\">\n <axp-user-avatar\n [size]=\"74\"\n [userId]=\"user?.id!\"\n [showPresence]=\"false\"\n ></axp-user-avatar>\n </div>\n }\n\n @if (stepLayout(); as layout) {\n <axp-layout-renderer\n class=\"axp-welcome-onboarding__fields\"\n [layout]=\"layout\"\n [context]=\"formContext()\"\n (contextChange)=\"onFormContextChange($event)\"\n ></axp-layout-renderer>\n }\n\n <p class=\"axp-welcome-onboarding__notice\">\n {{ ('@auth:welcome-onboarding.page.steps.' + step.id + '.notice') | translate | async }}\n </p>\n }\n </section>\n\n <aside\n class=\"axp-welcome-onboarding__art axp-welcome-onboarding__animate\"\n [class.axp-welcome-onboarding__art--appearance]=\"showAppearancePreview()\"\n [class.axp-welcome-onboarding__art--typography]=\"showTypographyPreview()\"\n [ngStyle]=\"previewHostStyle()\"\n aria-hidden=\"false\"\n >\n <div class=\"axp-welcome-onboarding__art-inner\">\n <div class=\"axp-welcome-onboarding__art-visual\">\n <!-- ----- Theme preview on appearance step ----- -->\n @if (showAppearancePreview()) {\n <div\n class=\"axp-welcome-onboarding__preview\"\n [class.axp-welcome-onboarding__preview--dark]=\"previewResolvedDark()\"\n [ngStyle]=\"previewSurfaceStyle()\"\n >\n <div\n class=\"axp-welcome-onboarding__preview-head\"\n [class.axp-welcome-onboarding__preview-head--colored]=\"previewHeaderColored()\"\n >\n ● ● ● &nbsp;&nbsp; {{ previewOrganizationTitle() }}\n </div>\n <div\n class=\"axp-welcome-onboarding__preview-body\"\n [class.axp-welcome-onboarding__preview-body--horizontal]=\"previewMenuHorizontal()\"\n >\n <!-- ----- Horizontal root menu skeleton ----- -->\n @if (previewMenuHorizontal()) {\n <div class=\"axp-welcome-onboarding__preview-hmenu\">\n <span class=\"axp-welcome-onboarding__preview-hmenu-brand\"></span>\n <span class=\"axp-welcome-onboarding__preview-hmenu-item\"></span>\n <span class=\"axp-welcome-onboarding__preview-hmenu-item\"></span>\n <span class=\"axp-welcome-onboarding__preview-hmenu-item axp-welcome-onboarding__preview-hmenu-item--short\"></span>\n </div>\n }\n <!-- ----- Vertical root menu skeleton ----- -->\n @else {\n <div\n class=\"axp-welcome-onboarding__preview-sidebar\"\n [class.axp-welcome-onboarding__preview-sidebar--compact]=\"previewMenuCompact()\"\n ></div>\n }\n <div class=\"axp-welcome-onboarding__preview-blocks\">\n <strong>{{ previewOrganizationTitle() }}</strong>\n <div class=\"axp-welcome-onboarding__preview-dashboard\">\n <div class=\"axp-welcome-onboarding__preview-widget-row\">\n <div class=\"axp-welcome-onboarding__preview-widget axp-welcome-onboarding__preview-widget--clock\">\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--clock\"></span>\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--line-lg\"></span>\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--line-sm\"></span>\n </div>\n <div class=\"axp-welcome-onboarding__preview-mini-cards\">\n <span class=\"axp-welcome-onboarding__preview-mini-card\">\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--dot\"></span>\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--line-xs\"></span>\n </span>\n <span class=\"axp-welcome-onboarding__preview-mini-card\">\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--dot\"></span>\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--line-xs\"></span>\n </span>\n <span class=\"axp-welcome-onboarding__preview-mini-card axp-welcome-onboarding__preview-mini-card--wide\">\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--line-xs\"></span>\n </span>\n </div>\n </div>\n <div class=\"axp-welcome-onboarding__preview-tasks\">\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--title\"></span>\n @for (row of previewTaskSkeletonRows; track row) {\n <div class=\"axp-welcome-onboarding__preview-task-row\">\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--check\"></span>\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--line\"></span>\n </div>\n }\n </div>\n <div class=\"axp-welcome-onboarding__preview-chart\"></div>\n </div>\n </div>\n </div>\n </div>\n }\n <!-- ----- Live type specimen on typography step ----- -->\n @else if (showTypographyPreview()) {\n <div\n class=\"axp-welcome-onboarding__type-preview\"\n [ngStyle]=\"previewHostStyle()\"\n >\n <span class=\"axp-welcome-onboarding__type-preview-sample\">\n {{ '@auth:welcome-onboarding.page.typography-preview.sample' | translate | async }}\n </span>\n <strong class=\"axp-welcome-onboarding__type-preview-heading\">\n {{ '@auth:welcome-onboarding.page.typography-preview.heading' | translate | async }}\n </strong>\n <p class=\"axp-welcome-onboarding__type-preview-body\">\n {{ '@auth:welcome-onboarding.page.typography-preview.body' | translate | async }}\n </p>\n </div>\n }\n <!-- ----- Decorative orb on other steps ----- -->\n @else {\n <div class=\"axp-welcome-onboarding__orb\" [ngStyle]=\"previewSurfaceStyle()\">\n <i class=\"axp-welcome-onboarding__orb-icon\" [class]=\"orbIconClass()\" aria-hidden=\"true\"></i>\n </div>\n }\n </div>\n\n <div class=\"axp-welcome-onboarding__art-caption\">\n <strong>{{ stepArtCaptionKey(currentStep()) | translate | async }}</strong>\n </div>\n\n <div class=\"axp-welcome-onboarding__dots\" role=\"tablist\">\n @for (step of steps(); track step.id; let i = $index) {\n <button\n type=\"button\"\n class=\"axp-welcome-onboarding__dot\"\n [class.axp-welcome-onboarding__dot--on]=\"stepIndex() === i\"\n [attr.aria-label]=\"step.title | translate | async\"\n [attr.aria-selected]=\"stepIndex() === i\"\n (click)=\"goToStep(i)\"\n ></button>\n }\n </div>\n </div>\n </aside>\n }\n </main>\n\n <!-- ----- Footer actions while steps are active ----- -->\n @if (!finishOutcome()) {\n <footer class=\"axp-welcome-onboarding__footer\">\n <div class=\"axp-welcome-onboarding__footer-start\">\n <ax-button\n look=\"twotone\"\n color=\"default\"\n [text]=\"'@auth:welcome-onboarding.actions.skip-all' | translate | async\"\n [disabled]=\"busy()\"\n (onClick)=\"skipAll()\"\n ></ax-button>\n <ax-button\n look=\"twotone\"\n color=\"default\"\n [text]=\"'@auth:welcome-onboarding.actions.remind-later' | translate | async\"\n [disabled]=\"busy()\"\n (onClick)=\"remindLater()\"\n ></ax-button>\n </div>\n <div class=\"axp-welcome-onboarding__footer-end\">\n <!-- ----- Previous step ----- -->\n @if (!isFirstStep()) {\n <ax-button\n look=\"blank\"\n color=\"default\"\n [text]=\"'@auth:welcome-onboarding.actions.previous' | translate | async\"\n [disabled]=\"busy()\"\n (onClick)=\"previous()\"\n ></ax-button>\n }\n <ax-button\n look=\"solid\"\n color=\"primary\"\n [text]=\"\n (isLastStep()\n ? '@auth:welcome-onboarding.actions.finish'\n : '@auth:welcome-onboarding.actions.next'\n )\n | translate\n | async\n \"\n [disabled]=\"busy()\"\n (onClick)=\"next()\"\n ></ax-button>\n </div>\n </footer>\n }\n </div>\n }\n </div>\n</div>\n"],"names":["i1","i2","i4"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-auth-client-welcome-onboarding-page.component-zGdD8pkX.mjs","sources":["../../../../libs/modules/auth/client/src/lib/pages/account/welcome-onboarding/welcome-onboarding-palette-scope.util.ts","../../../../libs/modules/auth/client/src/lib/pages/account/welcome-onboarding/welcome-onboarding-confetti.util.ts","../../../../libs/modules/auth/client/src/lib/pages/account/welcome-onboarding/welcome-onboarding-typography-preview.util.ts","../../../../libs/modules/auth/client/src/lib/pages/account/welcome-onboarding/welcome-onboarding-page.component.ts","../../../../libs/modules/auth/client/src/lib/pages/account/welcome-onboarding/welcome-onboarding-page.component.html"],"sourcesContent":["//#region ----- Scoped palette CSS -----\n\nconst WELCOME_PALETTE_SCOPE = '.axp-welcome-onboarding';\n\nfunction normalizeHexColor(value: string): string | undefined {\n const raw = value.trim();\n const withoutHash = raw.startsWith('#') ? raw.slice(1) : raw;\n if (/^[0-9a-fA-F]{3}$/.test(withoutHash)) {\n return withoutHash\n .split('')\n .map((char) => char + char)\n .join('')\n .toLowerCase();\n }\n if (/^[0-9a-fA-F]{6}$/.test(withoutHash)) {\n return withoutHash.toLowerCase();\n }\n return undefined;\n}\n\nfunction hexToRgb(hex: string): [number, number, number] {\n return [\n Number.parseInt(hex.slice(0, 2), 16),\n Number.parseInt(hex.slice(2, 4), 16),\n Number.parseInt(hex.slice(4, 6), 16),\n ];\n}\n\nfunction rgbChannels([r, g, b]: [number, number, number]): string {\n return `${r}, ${g}, ${b}`;\n}\n\nfunction mixTowardWhite(hex: string, amount: number): [number, number, number] {\n const [r, g, b] = hexToRgb(hex);\n return [\n Math.round(r + (255 - r) * amount),\n Math.round(g + (255 - g) * amount),\n Math.round(b + (255 - b) * amount),\n ];\n}\n\nfunction mixTowardBlack(hex: string, amount: number): [number, number, number] {\n const [r, g, b] = hexToRgb(hex);\n const keep = 1 - amount;\n return [Math.round(r * keep), Math.round(g * keep), Math.round(b * keep)];\n}\n\nfunction relativeLuminance(hex: string): number {\n const [r, g, b] = hexToRgb(hex).map((channel) => {\n const scaled = channel / 255;\n return scaled <= 0.03928 ? scaled / 12.92 : Math.pow((scaled + 0.055) / 1.055, 2.4);\n });\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n}\n\nfunction rgbToHex([r, g, b]: [number, number, number]): string {\n const toByte = (channel: number) =>\n Math.max(0, Math.min(255, Math.round(channel)))\n .toString(16)\n .padStart(2, '0');\n return `${toByte(r)}${toByte(g)}${toByte(b)}`;\n}\n\nfunction contrastForegroundHex(backgroundHex: string): string {\n return relativeLuminance(backgroundHex) > 0.55 ? '171717' : 'ffffff';\n}\n\n/**\n * Maps palette primary hex to ax-sys primary tokens so ax-button and theme choosers\n * inside the welcome host follow the preview palette (not the global app theme).\n */\nexport function buildWelcomePaletteSysColorVars(primaryHex: string): Record<string, string> {\n const hex = normalizeHexColor(primaryHex);\n if (!hex) {\n return {};\n }\n\n const base = hexToRgb(hex);\n const lighter = mixTowardWhite(hex, 0.78);\n const lightest = mixTowardWhite(hex, 0.9);\n const darker = mixTowardBlack(hex, 0.14);\n const border = mixTowardBlack(hex, 0.1);\n const onPrimary = hexToRgb(contrastForegroundHex(hex));\n const onLighter = hexToRgb(contrastForegroundHex(rgbToHex(lighter)));\n\n const sys = {\n '--ax-sys-color-primary-500': rgbChannels(base),\n '--ax-sys-color-primary-600': rgbChannels(darker),\n '--ax-sys-color-primary-50': rgbChannels(lightest),\n '--ax-sys-color-primary-100': rgbChannels(lighter),\n '--ax-sys-color-primary-lighter-surface': rgbChannels(lighter),\n '--ax-sys-color-primary-surface': rgbChannels(base),\n '--ax-sys-color-on-primary-surface': rgbChannels(onPrimary),\n '--ax-sys-color-on-primary-lighter-surface': rgbChannels(onLighter),\n '--ax-sys-color-border-primary-surface': rgbChannels(border),\n '--ax-sys-color-border-primary-lighter-surface': rgbChannels(mixTowardWhite(hex, 0.45)),\n };\n\n /* ax-primary / primary-lighter-surface read --color-* aliases (often bound on :root). */\n const aliases = {\n '--color-primary': 'rgba(var(--ax-sys-color-primary-surface))',\n '--color-on-primary': 'rgba(var(--ax-sys-color-on-primary-surface))',\n '--color-border-primary': 'rgba(var(--ax-sys-color-border-primary-surface))',\n '--color-primary-lighter': 'rgba(var(--ax-sys-color-primary-lighter-surface))',\n '--color-on-primary-lighter': 'rgba(var(--ax-sys-color-on-primary-lighter-surface))',\n '--color-border-primary-lighter': 'rgba(var(--ax-sys-color-border-primary-lighter-surface))',\n };\n\n return { ...sys, ...aliases };\n}\n\n/**\n * Rewrites palette asset selectors so tokens apply under the welcome page host only.\n */\nexport function scopeWelcomePaletteCss(css: string): string {\n return css.replace(/:root/g, WELCOME_PALETTE_SCOPE);\n}\n\nexport function welcomePaletteCssUrl(paletteName: string): string {\n const safeName = paletteName.trim().length > 0 ? paletteName.trim() : 'default';\n return `/assets/themes/palettes/css/${safeName}.css`;\n}\n\n//#endregion\n","//#region ----- Welcome confetti (canvas, no external package) -----\n\ntype ConfettiPiece = {\n x: number;\n y: number;\n w: number;\n h: number;\n vx: number;\n vy: number;\n rotation: number;\n spin: number;\n color: string;\n opacity: number;\n};\n\nconst CONFETTI_COLORS = [\n '#7c3aed',\n '#2563eb',\n '#0d9488',\n '#eab308',\n '#f97316',\n '#ec4899',\n '#22c55e',\n];\n\nconst DURATION_MS = 4200;\n\nfunction prefersReducedMotion(): boolean {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {\n return false;\n }\n return window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n}\n\n/** Runs a one-shot top-to-bottom confetti burst inside `host`. Returns a cleanup function. */\nexport function runWelcomeOnboardingConfetti(host: HTMLElement): () => void {\n if (prefersReducedMotion()) {\n return () => undefined;\n }\n\n const canvas = document.createElement('canvas');\n canvas.className = 'axp-welcome-onboarding__confetti-canvas';\n canvas.setAttribute('aria-hidden', 'true');\n host.appendChild(canvas);\n\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n canvas.remove();\n return () => undefined;\n }\n\n let width = 0;\n let height = 0;\n let rafId = 0;\n let running = true;\n const startedAt = performance.now();\n\n const resize = (): void => {\n const rect = host.getBoundingClientRect();\n width = Math.max(1, Math.floor(rect.width));\n height = Math.max(1, Math.floor(rect.height));\n canvas.width = width;\n canvas.height = height;\n canvas.style.width = `${width}px`;\n canvas.style.height = `${height}px`;\n };\n\n resize();\n const onResize = (): void => resize();\n window.addEventListener('resize', onResize);\n\n const pieces: ConfettiPiece[] = [];\n const count = Math.min(160, Math.max(80, Math.floor(width / 6)));\n for (let i = 0; i < count; i += 1) {\n pieces.push({\n x: Math.random() * width,\n y: -20 - Math.random() * height * 0.35,\n w: 6 + Math.random() * 6,\n h: 10 + Math.random() * 8,\n vx: (Math.random() - 0.5) * 2.4,\n vy: 2.2 + Math.random() * 3.8,\n rotation: Math.random() * Math.PI * 2,\n spin: (Math.random() - 0.5) * 0.18,\n color: CONFETTI_COLORS[i % CONFETTI_COLORS.length] ?? '#7c3aed',\n opacity: 0.85 + Math.random() * 0.15,\n });\n }\n\n const tick = (now: number): void => {\n if (!running) {\n return;\n }\n\n const elapsed = now - startedAt;\n ctx.clearRect(0, 0, width, height);\n\n for (const piece of pieces) {\n piece.x += piece.vx;\n piece.y += piece.vy;\n piece.vy += 0.06;\n piece.vx *= 0.995;\n piece.rotation += piece.spin;\n\n const fade =\n elapsed > DURATION_MS - 900 ? Math.max(0, (DURATION_MS - elapsed) / 900) : piece.opacity;\n\n ctx.save();\n ctx.globalAlpha = fade * piece.opacity;\n ctx.translate(piece.x, piece.y);\n ctx.rotate(piece.rotation);\n ctx.fillStyle = piece.color;\n ctx.fillRect(-piece.w / 2, -piece.h / 2, piece.w, piece.h);\n ctx.restore();\n }\n\n if (elapsed >= DURATION_MS) {\n running = false;\n cleanup();\n return;\n }\n\n rafId = requestAnimationFrame(tick);\n };\n\n const cleanup = (): void => {\n running = false;\n if (rafId) {\n cancelAnimationFrame(rafId);\n }\n window.removeEventListener('resize', onResize);\n canvas.remove();\n };\n\n rafId = requestAnimationFrame(tick);\n return cleanup;\n}\n\n//#endregion\n","import { getRegionalFontStylesheet } from '@acorex-platform/framework-client/themes/shared';\n\n//#region ----- Constants -----\n\nconst FONT_SIZE_KEYWORDS = new Set(['small', 'medium', 'large', 'x-large']);\nconst DEFAULT_FONT_FAMILY = 'system-ui';\nconst DEFAULT_FONT_SIZE = 'medium';\nconst FONT_FALLBACK = 'Tahoma, system-ui, sans-serif';\n\n//#endregion\n\n//#region ----- Helpers -----\n\nexport function resolveWelcomePreviewFontFamily(value: unknown): string {\n return typeof value === 'string' && value.trim().length > 0 ? value.trim() : DEFAULT_FONT_FAMILY;\n}\n\nexport function resolveWelcomePreviewFontSize(value: unknown): string {\n return typeof value === 'string' && FONT_SIZE_KEYWORDS.has(value) ? value : DEFAULT_FONT_SIZE;\n}\n\n/** Same CSS family contract as theme.service (`resolveFontCssFamily`). */\nfunction resolveWelcomeFontCssFamily(fontId: string): string {\n if (fontId === 'system-ui') {\n return `system-ui, ${FONT_FALLBACK}`;\n }\n if (fontId === 'tahoma') {\n return 'Tahoma, system-ui, sans-serif';\n }\n return `\"${fontId}\", ${FONT_FALLBACK}`;\n}\n\nfunction resolveWelcomeFontVariationSettings(fontId: string): string | undefined {\n if (fontId === 'iranyekanx') {\n return '\"dots\" 1';\n }\n return undefined;\n}\n\nexport function buildWelcomeTypographyStyle(\n fontId: string,\n fontSize: string,\n): Record<string, string> {\n const variation = resolveWelcomeFontVariationSettings(fontId);\n const style: Record<string, string> = {\n fontFamily: resolveWelcomeFontCssFamily(fontId),\n fontSize,\n };\n if (variation) {\n style['fontVariationSettings'] = variation;\n }\n return style;\n}\n\nexport function ensureWelcomeFontStylesLoaded(fontId: string): void {\n if (typeof document === 'undefined') {\n return;\n }\n\n const href = getRegionalFontStylesheet(fontId);\n if (!href) {\n return;\n }\n\n const selector = `link[data-axp-regional-font=\"${href}\"]`;\n if (document.head.querySelector(selector)) {\n return;\n }\n\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.href = href;\n link.setAttribute('data-axp-regional-font', href);\n document.head.appendChild(link);\n}\n\nexport function applyWelcomeTypographyToHtml(fontId: string, fontSize: string): void {\n if (typeof document === 'undefined') {\n return;\n }\n\n const html = document.documentElement;\n html.style.fontFamily = resolveWelcomeFontCssFamily(fontId);\n html.style.fontVariationSettings = resolveWelcomeFontVariationSettings(fontId) ?? '';\n html.style.fontSize = fontSize;\n}\n\n//#endregion\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXTranslationModule, AXTranslationService, resolveMultiLanguageString } from '@acorex/core/translation';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPHomePageService, AXPPlatformBrandingService } from '@acorex-platform/framework-client/common';\nimport { AXPLogoComponent } from '@acorex-platform/framework-client/core';\nimport { AXPLayoutRendererComponent } from '@acorex-platform/framework-client/layout/builder';\nimport { AXPUserAvatarComponent } from '@acorex-platform/framework-client/layout/components';\nimport type { AXPWidgetNode } from '@acorex-platform/framework-shared/core';\nimport {\n AXP_THEME_PALETTE_PROVIDER,\n AXPLayoutThemeService,\n AXPMenuOrientation,\n AXPMenuVerticalMode,\n AXPThemeLayoutSetting,\n AXPThemeMode,\n type AXPThemePalette,\n} from '@acorex-platform/framework-client/themes/shared';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n OnInit,\n ViewEncapsulation,\n computed,\n effect,\n inject,\n signal,\n ElementRef,\n viewChild,\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport type { AXPOnboardingContext, AXPOnboardingStep } from '../../../onboarding/onboarding.types';\nimport { AXPOnboardingProgressService } from '../../../onboarding/onboarding-progress.service';\nimport { AXPWelcomeOnboardingFlowService } from '../../../onboarding/welcome-onboarding-flow.service';\nimport {\n buildWelcomePaletteSysColorVars,\n scopeWelcomePaletteCss,\n welcomePaletteCssUrl,\n} from './welcome-onboarding-palette-scope.util';\nimport { runWelcomeOnboardingConfetti } from './welcome-onboarding-confetti.util';\nimport {\n applyWelcomeTypographyToHtml,\n buildWelcomeTypographyStyle,\n ensureWelcomeFontStylesLoaded,\n resolveWelcomePreviewFontFamily,\n resolveWelcomePreviewFontSize,\n} from './welcome-onboarding-typography-preview.util';\n\n//#region ----- Types -----\n\ntype WelcomeFinishOutcome = 'completed' | 'skipped' | 'deferred' | null;\n\n//#endregion\n\n//#region ----- Welcome onboarding page -----\n\n@Component({\n selector: 'axp-auth-welcome-onboarding-page',\n templateUrl: './welcome-onboarding-page.component.html',\n styleUrls: ['./welcome-onboarding-page.component.css'],\n imports: [\n CommonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXTranslationModule,\n AXPLogoComponent,\n AXPUserAvatarComponent,\n AXPLayoutRendererComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXPAuthWelcomeOnboardingPageComponent implements OnInit {\n //#region ----- Services & Dependencies -----\n\n private readonly flowService = inject(AXPWelcomeOnboardingFlowService);\n private readonly progressService = inject(AXPOnboardingProgressService);\n private readonly sessionService = inject(AXPSessionService);\n private readonly homePageService = inject(AXPHomePageService);\n private readonly platformBranding = inject(AXPPlatformBrandingService);\n private readonly route = inject(ActivatedRoute);\n private readonly router = inject(Router);\n private readonly paletteProvider = inject(AXP_THEME_PALETTE_PROVIDER);\n private readonly themeService = inject(AXPLayoutThemeService);\n private readonly translationService = inject(AXTranslationService);\n private readonly destroyRef = inject(DestroyRef);\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected readonly palettes = signal<AXPThemePalette[]>([]);\n protected readonly systemPrefersDark = signal(false);\n protected readonly loading = signal(true);\n protected readonly platformTitle = signal('ACoreX');\n protected readonly steps = signal<AXPOnboardingStep[]>([]);\n protected readonly stepIndex = signal(0);\n protected readonly formContext = signal<Record<string, unknown>>({});\n protected readonly finishOutcome = signal<WelcomeFinishOutcome>(null);\n protected readonly busy = signal(false);\n protected readonly backdropLayerA = signal<Record<string, string>>({});\n protected readonly backdropLayerB = signal<Record<string, string>>({});\n protected readonly activeBackdropLayer = signal<'a' | 'b'>('a');\n protected readonly previewTaskSkeletonRows = [0, 1, 2];\n\n private readonly formScrollHost = viewChild<ElementRef<HTMLElement>>('formScrollHost');\n private readonly confettiHost = viewChild<ElementRef<HTMLElement>>('confettiHost');\n\n private sessionContext: AXPOnboardingContext | null = null;\n private forcePlan = false;\n private backdropCrossfadeKey = '';\n private paletteStyleEl: HTMLStyleElement | null = null;\n private paletteLoadToken = 0;\n private confettiRanForOutcome: WelcomeFinishOutcome = null;\n private stopConfetti: (() => void) | null = null;\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n protected readonly currentStep = computed(() => {\n const list = this.steps();\n const index = this.stepIndex();\n return list[index] ?? null;\n });\n\n protected readonly isFirstStep = computed(() => this.stepIndex() === 0);\n\n protected readonly isLastStep = computed(() => {\n const list = this.steps();\n return list.length > 0 && this.stepIndex() === list.length - 1;\n });\n\n protected readonly stepLayout = computed((): AXPWidgetNode | undefined => {\n const step = this.currentStep();\n if (!step || this.finishOutcome()) {\n return undefined;\n }\n return this.flowService.buildStepLayout(step);\n });\n\n protected readonly showAppearancePreview = computed(\n () => this.currentStep()?.id === 'welcome-appearance',\n );\n\n protected readonly showTypographyPreview = computed(\n () => this.currentStep()?.id === 'welcome-typography',\n );\n\n protected readonly showProfileAvatar = computed(() => this.currentStep()?.id === 'profile-basics');\n\n protected readonly previewOrganizationTitle = computed((): string => {\n const tenant = this.sessionService.tenant;\n const locale = this.translationService.getActiveLang();\n const fromTitle = tenant?.title\n ? resolveMultiLanguageString(tenant.title, locale).trim()\n : '';\n if (fromTitle.length > 0) {\n return fromTitle;\n }\n const name = tenant?.name?.trim();\n if (name) {\n return name;\n }\n return this.platformTitle();\n });\n\n protected readonly orbIconClass = computed((): string => {\n switch (this.currentStep()?.id) {\n case 'welcome-intro':\n return 'fa-solid fa-earth-americas';\n case 'welcome-appearance':\n return 'fa-solid fa-palette';\n case 'welcome-navigation':\n return 'fa-solid fa-table-columns';\n case 'welcome-typography':\n return 'fa-solid fa-font';\n case 'profile-basics':\n return 'fa-solid fa-user';\n case 'whs-orientation':\n return 'fa-solid fa-shield-check';\n default:\n return 'fa-solid fa-sparkles';\n }\n });\n\n protected readonly doneOrbIconClass = 'fa-solid fa-check';\n\n protected readonly previewPaletteName = computed(() => {\n const palette = this.formContext()[AXPThemeLayoutSetting.Palette];\n return typeof palette === 'string' && palette.length > 0 ? palette : 'default';\n });\n\n protected readonly previewResolvedDark = computed(() => {\n const mode = this.formContext()[AXPThemeLayoutSetting.Mode];\n if (mode === AXPThemeMode.Dark) {\n return true;\n }\n if (mode === AXPThemeMode.Light) {\n return false;\n }\n return this.systemPrefersDark();\n });\n\n protected readonly previewSurfaceStyle = computed(() => {\n const name = this.previewPaletteName();\n const list = this.palettes();\n const match =\n list.find((item) => item.name === name) ??\n list.find((item) => item.name === 'default') ??\n list[0];\n const colors = match?.colors;\n const isDark = this.previewResolvedDark();\n\n const primary = colors?.primary ?? '#237f6a';\n const secondary = colors?.secondary ?? '#4b9e8f';\n const accent = colors?.accents?.[0] ?? secondary ?? '#7fc6b5';\n const lightSurface = colors?.light ?? '#f2f5f7';\n const darkSurface = colors?.dark ?? '#1a1f1e';\n const surface = isDark ? darkSurface : lightSurface;\n\n return {\n ...buildWelcomePaletteSysColorVars(primary),\n '--axp-welcome-preview-primary': primary,\n '--axp-welcome-preview-secondary': secondary,\n '--axp-welcome-preview-surface': surface,\n '--axp-welcome-preview-accent': accent,\n '--axp-welcome-preview-panel': isDark\n ? `color-mix(in srgb, ${surface} 88%, white 6%)`\n : '#ffffff',\n '--axp-welcome-preview-card': isDark\n ? `color-mix(in srgb, ${surface} 72%, white 12%)`\n : '#ffffff',\n '--axp-welcome-preview-text': isDark ? '#e3eee9' : `color-mix(in srgb, ${primary} 70%, black)`,\n '--axp-welcome-preview-muted': isDark ? '#b5c7bf' : '#64736f',\n '--axp-welcome-preview-border': isDark\n ? `color-mix(in srgb, ${surface} 55%, white 14%)`\n : '#fdfdfd',\n '--axp-welcome-page-glow-start': isDark\n ? `color-mix(in srgb, ${accent} 38%, ${surface} 62%)`\n : `color-mix(in srgb, ${accent} 52%, white 48%)`,\n '--axp-welcome-page-glow-end': isDark\n ? `color-mix(in srgb, ${secondary} 42%, ${surface} 58%)`\n : `color-mix(in srgb, ${secondary} 38%, white 62%)`,\n '--axp-welcome-page-base': isDark\n ? `color-mix(in srgb, ${surface} 94%, black 6%)`\n : `color-mix(in srgb, ${lightSurface} 86%, ${accent} 14%)`,\n };\n });\n\n protected readonly previewFontFamily = computed(() =>\n resolveWelcomePreviewFontFamily(this.formContext()[AXPThemeLayoutSetting.Font]),\n );\n\n protected readonly previewFontSize = computed(() =>\n resolveWelcomePreviewFontSize(this.formContext()[AXPThemeLayoutSetting.FontSize]),\n );\n\n protected readonly previewTypographyStyle = computed(() =>\n buildWelcomeTypographyStyle(this.previewFontFamily(), this.previewFontSize()),\n );\n\n protected readonly previewHostStyle = computed(() => ({\n ...this.previewSurfaceStyle(),\n ...this.previewTypographyStyle(),\n }));\n\n //#region ----- Confetti (completion) -----\n\n private readonly completionConfettiEffect = effect(() => {\n const outcome = this.finishOutcome();\n if (!outcome || outcome !== 'completed') {\n return;\n }\n if (this.confettiRanForOutcome === outcome) {\n return;\n }\n\n queueMicrotask(() => {\n const host = this.confettiHost()?.nativeElement;\n if (!host || this.confettiRanForOutcome === 'completed') {\n return;\n }\n this.confettiRanForOutcome = outcome;\n this.stopConfetti?.();\n this.stopConfetti = runWelcomeOnboardingConfetti(host);\n });\n });\n\n //#endregion\n\n //#region ----- Live typography (font + size) -----\n\n private readonly typographyPreviewEffect = effect(() => {\n if (this.loading()) {\n return;\n }\n\n const family = this.previewFontFamily();\n const size = this.previewFontSize();\n ensureWelcomeFontStylesLoaded(family);\n applyWelcomeTypographyToHtml(family, size);\n });\n\n //#endregion\n\n //#region ----- Scoped palette (buttons + surfaces) -----\n\n private readonly scopedPaletteEffect = effect(() => {\n const name = this.previewPaletteName();\n const token = ++this.paletteLoadToken;\n void this.loadScopedPaletteCss(name, token);\n });\n\n //#endregion\n\n //#region ----- Backdrop crossfade -----\n\n private readonly backdropCrossfadeEffect = effect(() => {\n const style = this.previewSurfaceStyle();\n const key = JSON.stringify(style);\n if (key === this.backdropCrossfadeKey) {\n return;\n }\n\n if (!this.backdropCrossfadeKey) {\n this.backdropCrossfadeKey = key;\n this.backdropLayerA.set(style);\n this.backdropLayerB.set(style);\n this.activeBackdropLayer.set('a');\n return;\n }\n\n this.backdropCrossfadeKey = key;\n if (this.activeBackdropLayer() === 'a') {\n this.backdropLayerB.set(style);\n this.activeBackdropLayer.set('b');\n return;\n }\n\n this.backdropLayerA.set(style);\n this.activeBackdropLayer.set('a');\n });\n\n //#endregion\n\n protected readonly previewMenuHorizontal = computed(() => {\n const value = this.formContext()[AXPThemeLayoutSetting.MenuOrientation];\n return value === AXPMenuOrientation.Horizontal;\n });\n\n protected readonly previewMenuCompact = computed(() => {\n const value = this.formContext()[AXPThemeLayoutSetting.MenuVerticalMode];\n return value === AXPMenuVerticalMode.Compact;\n });\n\n protected readonly previewHeaderColored = computed(() => {\n const value = this.formContext()[AXPThemeLayoutSetting.HeaderAppearance];\n return value !== 'simple';\n });\n\n protected get user() {\n return this.sessionService.user;\n }\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n async ngOnInit(): Promise<void> {\n const title = await this.platformBranding.resolvePlatformTitle().catch(() => '');\n this.platformTitle.set(title || 'ACoreX');\n\n this.forcePlan =\n this.route.snapshot.queryParamMap.get('force') === '1' ||\n this.route.snapshot.queryParamMap.get('force') === 'true';\n\n const provider = await this.paletteProvider;\n this.palettes.set(await provider.getList());\n\n this.bindSystemColorSchemeListener();\n\n this.destroyRef.onDestroy(() => {\n this.paletteStyleEl?.remove();\n this.paletteStyleEl = null;\n this.stopConfetti?.();\n this.stopConfetti = null;\n void this.themeService.loadSettings();\n\n const step = this.currentStep();\n if (step && this.sessionContext && !this.finishOutcome()) {\n this.flowService.setResumeState(this.sessionContext, step.id);\n }\n });\n\n await this.bootstrap();\n }\n\n //#endregion\n\n //#region ----- Palette CSS loading -----\n\n private async loadScopedPaletteCss(paletteName: string, token: number): Promise<void> {\n const candidates = [paletteName, 'default'].filter(\n (name, index, list) => name.trim().length > 0 && list.indexOf(name) === index,\n );\n\n let cssText: string | null = null;\n for (const name of candidates) {\n try {\n const response = await fetch(welcomePaletteCssUrl(name));\n if (response.ok) {\n cssText = await response.text();\n break;\n }\n } catch {\n /* try next candidate */\n }\n }\n\n if (token !== this.paletteLoadToken || !cssText) {\n return;\n }\n\n if (!this.paletteStyleEl) {\n this.paletteStyleEl = document.createElement('style');\n this.paletteStyleEl.setAttribute('data-welcome-onboarding-palette', '');\n document.head.appendChild(this.paletteStyleEl);\n }\n\n this.paletteStyleEl.setAttribute('data-welcome-onboarding-palette', paletteName);\n this.paletteStyleEl.textContent = scopeWelcomePaletteCss(cssText);\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected onFormContextChange(next: Record<string, unknown>): void {\n const host = this.formScrollHost()?.nativeElement;\n const scrollTop = host?.scrollTop ?? 0;\n this.formContext.set(next);\n if (!host) {\n return;\n }\n const restoreScroll = (): void => {\n host.scrollTop = scrollTop;\n };\n queueMicrotask(restoreScroll);\n requestAnimationFrame(restoreScroll);\n }\n\n protected async goToStep(index: number): Promise<void> {\n const list = this.steps();\n if (index < 0 || index >= list.length) {\n return;\n }\n this.stepIndex.set(index);\n const step = list[index];\n if (step && this.sessionContext) {\n this.flowService.setResumeState(this.sessionContext, step.id);\n }\n }\n\n protected async previous(): Promise<void> {\n if (this.isFirstStep()) {\n return;\n }\n this.stepIndex.update((i) => i - 1);\n }\n\n protected async next(): Promise<void> {\n const step = this.currentStep();\n if (!step || !this.sessionContext || this.busy()) {\n return;\n }\n\n if (this.isLastStep()) {\n await this.complete('completed');\n return;\n }\n\n this.busy.set(true);\n try {\n await this.flowService.savePreferences(this.formContext());\n await this.flowService.markStep(step, this.sessionContext, 'completed');\n\n const nextIndex = this.stepIndex() + 1;\n this.stepIndex.set(nextIndex);\n\n const nextStep = this.steps()[nextIndex];\n if (nextStep) {\n this.flowService.setResumeState(this.sessionContext, nextStep.id);\n }\n } finally {\n this.busy.set(false);\n }\n }\n\n protected async skipAll(): Promise<void> {\n if (this.busy() || !this.sessionContext) {\n return;\n }\n this.busy.set(true);\n try {\n await this.flowService.savePreferences(this.formContext());\n await this.flowService.markSteps(this.steps(), this.sessionContext, 'skipped');\n this.flowService.clearResumeState();\n await this.enterWorkspace();\n } finally {\n this.busy.set(false);\n }\n }\n\n protected async remindLater(): Promise<void> {\n if (this.busy()) {\n return;\n }\n this.busy.set(true);\n try {\n await this.flowService.savePreferences(this.formContext());\n await this.flowService.setRemindLater();\n await this.enterWorkspace();\n } finally {\n this.busy.set(false);\n }\n }\n\n protected async enterWorkspace(): Promise<void> {\n const urlTree = await this.homePageService.resolveAuthorizedHomeUrlTree();\n await this.router.navigateByUrl(urlTree);\n }\n\n protected async reviewSettings(): Promise<void> {\n this.finishOutcome.set(null);\n this.stepIndex.set(0);\n }\n\n protected stepArtCaptionKey(step: AXPOnboardingStep | null): string {\n if (!step) {\n return '@auth:welcome-onboarding.page.art.default-caption';\n }\n return `@auth:welcome-onboarding.page.art.${step.id}`;\n }\n\n //#endregion\n\n //#region ----- Private logic -----\n\n private bindSystemColorSchemeListener(): void {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {\n return;\n }\n\n const media = window.matchMedia('(prefers-color-scheme: dark)');\n this.systemPrefersDark.set(media.matches);\n\n const onChange = (event: MediaQueryListEvent) => {\n this.systemPrefersDark.set(event.matches);\n };\n\n media.addEventListener('change', onChange);\n this.destroyRef.onDestroy(() => media.removeEventListener('change', onChange));\n }\n\n private async bootstrap(): Promise<void> {\n this.loading.set(true);\n try {\n let pending = await this.flowService.evaluatePending(this.forcePlan);\n if (!pending && this.flowService.hasActiveResumeState()) {\n pending = await this.flowService.evaluatePending(true);\n }\n if (!pending) {\n await this.enterWorkspace();\n return;\n }\n\n this.sessionContext = pending.context;\n this.steps.set(pending.steps);\n const preferences = await this.flowService.loadPreferenceContext();\n this.formContext.set(preferences);\n\n const progress = await this.progressService.getProgress();\n let startIndex = 0;\n if (this.flowService.hasActiveResumeState()) {\n startIndex = this.flowService.resolveResumeStepIndex(pending.context, pending.steps);\n } else if (this.forcePlan) {\n startIndex = 0;\n } else {\n startIndex = this.flowService.resolveFirstIncompleteStepIndex(\n pending.steps,\n pending.context,\n progress,\n );\n }\n\n this.stepIndex.set(startIndex);\n const resumeStep = pending.steps[startIndex];\n if (resumeStep) {\n this.flowService.setResumeState(pending.context, resumeStep.id);\n }\n } finally {\n this.loading.set(false);\n }\n }\n\n private async complete(status: 'completed'): Promise<void> {\n if (this.busy() || !this.sessionContext) {\n return;\n }\n this.busy.set(true);\n try {\n await this.flowService.savePreferences(this.formContext());\n\n const step = this.currentStep();\n if (step) {\n await this.flowService.markStep(step, this.sessionContext, 'completed');\n }\n\n this.flowService.clearResumeState();\n this.finishOutcome.set(status);\n } finally {\n this.busy.set(false);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","<div\n class=\"axp-welcome-onboarding\"\n [class.ax-light]=\"!previewResolvedDark()\"\n [class.ax-dark]=\"previewResolvedDark()\"\n [ngStyle]=\"previewHostStyle()\"\n>\n <div class=\"axp-welcome-onboarding__backdrop-stack\" aria-hidden=\"true\">\n <div\n class=\"axp-welcome-onboarding__backdrop\"\n [class.axp-welcome-onboarding__backdrop--active]=\"activeBackdropLayer() === 'a'\"\n [ngStyle]=\"backdropLayerA()\"\n ></div>\n <div\n class=\"axp-welcome-onboarding__backdrop\"\n [class.axp-welcome-onboarding__backdrop--active]=\"activeBackdropLayer() === 'b'\"\n [ngStyle]=\"backdropLayerB()\"\n ></div>\n </div>\n\n <div class=\"axp-welcome-onboarding__content\" #confettiHost>\n <!-- ----- Full-page loading state ----- -->\n @if (loading()) {\n <div class=\"axp-welcome-onboarding__loading\">\n <ax-loading></ax-loading>\n </div>\n }\n <!-- ----- Main onboarding shell ----- -->\n @else {\n <div\n class=\"axp-welcome-onboarding__shell\"\n [class.axp-welcome-onboarding__shell--appearance]=\"showAppearancePreview()\"\n [class.axp-welcome-onboarding__shell--typography]=\"showTypographyPreview()\"\n [ngStyle]=\"previewHostStyle()\"\n >\n <header class=\"axp-welcome-onboarding__header\">\n <div class=\"axp-welcome-onboarding__brand\">\n <axp-logo\n logoKey=\"platform\"\n appearance=\"onLight\"\n format=\"full\"\n [size]=\"220\"\n [attr.alt]=\"platformTitle()\"\n ></axp-logo>\n </div>\n <div class=\"axp-welcome-onboarding__step-counter\">\n <!-- ----- Step counter in the header ----- -->\n @if (!finishOutcome() && currentStep(); as step) {\n <span>\n {{\n '@auth:welcome-onboarding.page.step-counter'\n | translate: { params: { current: stepIndex() + 1, total: steps().length } }\n | async\n }}\n · {{ step.title | translate | async }}\n </span>\n }\n <!-- ----- Ready message after completion ----- -->\n @else if (finishOutcome()) {\n {{ '@auth:welcome-onboarding.page.ready-counter' | translate | async }}\n }\n </div>\n </header>\n\n <main class=\"axp-welcome-onboarding__main\">\n <!-- ----- Completion screen ----- -->\n @if (finishOutcome(); as outcome) {\n <section class=\"axp-welcome-onboarding__done axp-welcome-onboarding__animate\">\n <div\n class=\"axp-welcome-onboarding__orb axp-welcome-onboarding__done-orb\"\n [ngStyle]=\"previewSurfaceStyle()\"\n aria-hidden=\"true\"\n >\n <i class=\"axp-welcome-onboarding__orb-icon\" [class]=\"doneOrbIconClass\"></i>\n </div>\n <h1 class=\"axp-welcome-onboarding__title\">\n {{\n ('@auth:welcome-onboarding.page.done.' + outcome + '.title') | translate | async\n }}\n </h1>\n <p class=\"axp-welcome-onboarding__lead\">\n {{\n ('@auth:welcome-onboarding.page.done.' + outcome + '.description') | translate | async\n }}\n </p>\n <div class=\"axp-welcome-onboarding__done-actions\">\n <ax-button\n look=\"solid\"\n color=\"primary\"\n [text]=\"'@auth:welcome-onboarding.page.actions.enter-workspace' | translate | async\"\n [disabled]=\"busy()\"\n (onClick)=\"enterWorkspace()\"\n ></ax-button>\n <!-- ----- Review settings after skip or defer ----- -->\n @if (outcome !== 'completed') {\n <ax-button\n look=\"outline\"\n color=\"default\"\n [text]=\"'@auth:welcome-onboarding.page.actions.review-settings' | translate | async\"\n [disabled]=\"busy()\"\n (onClick)=\"reviewSettings()\"\n ></ax-button>\n }\n </div>\n </section>\n }\n <!-- ----- Active step: form + art panel ----- -->\n @else {\n <section\n #formScrollHost\n class=\"axp-welcome-onboarding__form axp-welcome-onboarding__animate\"\n [class.axp-welcome-onboarding__form--appearance]=\"showAppearancePreview()\"\n [class.axp-welcome-onboarding__form--typography]=\"showTypographyPreview()\"\n [class.axp-welcome-onboarding__form--menu-horizontal]=\"\n showAppearancePreview() && previewMenuHorizontal()\n \"\n >\n <!-- ----- Step form content when a step is active ----- -->\n @if (currentStep(); as step) {\n <h1 class=\"axp-welcome-onboarding__title\">\n {{ ('@auth:welcome-onboarding.page.steps.' + step.id + '.headline') | translate | async }}\n </h1>\n <p class=\"axp-welcome-onboarding__lead\">\n {{ ('@auth:welcome-onboarding.page.steps.' + step.id + '.lead') | translate | async }}\n </p>\n\n <!-- ----- Profile avatar on profile basics step ----- -->\n @if (showProfileAvatar()) {\n <div class=\"axp-welcome-onboarding__profile-row\">\n <axp-user-avatar\n [size]=\"74\"\n [userId]=\"user?.id!\"\n [showPresence]=\"false\"\n ></axp-user-avatar>\n </div>\n }\n\n @if (stepLayout(); as layout) {\n <axp-layout-renderer\n class=\"axp-welcome-onboarding__fields\"\n [layout]=\"layout\"\n [context]=\"formContext()\"\n (contextChange)=\"onFormContextChange($event)\"\n ></axp-layout-renderer>\n }\n\n <p class=\"axp-welcome-onboarding__notice\">\n {{ ('@auth:welcome-onboarding.page.steps.' + step.id + '.notice') | translate | async }}\n </p>\n }\n </section>\n\n <aside\n class=\"axp-welcome-onboarding__art axp-welcome-onboarding__animate\"\n [class.axp-welcome-onboarding__art--appearance]=\"showAppearancePreview()\"\n [class.axp-welcome-onboarding__art--typography]=\"showTypographyPreview()\"\n [ngStyle]=\"previewHostStyle()\"\n aria-hidden=\"false\"\n >\n <div class=\"axp-welcome-onboarding__art-inner\">\n <div class=\"axp-welcome-onboarding__art-visual\">\n <!-- ----- Theme preview on appearance step ----- -->\n @if (showAppearancePreview()) {\n <div\n class=\"axp-welcome-onboarding__preview\"\n [class.axp-welcome-onboarding__preview--dark]=\"previewResolvedDark()\"\n [ngStyle]=\"previewSurfaceStyle()\"\n >\n <div\n class=\"axp-welcome-onboarding__preview-head\"\n [class.axp-welcome-onboarding__preview-head--colored]=\"previewHeaderColored()\"\n >\n ● ● ● &nbsp;&nbsp; {{ previewOrganizationTitle() }}\n </div>\n <div\n class=\"axp-welcome-onboarding__preview-body\"\n [class.axp-welcome-onboarding__preview-body--horizontal]=\"previewMenuHorizontal()\"\n >\n <!-- ----- Horizontal root menu skeleton ----- -->\n @if (previewMenuHorizontal()) {\n <div class=\"axp-welcome-onboarding__preview-hmenu\">\n <span class=\"axp-welcome-onboarding__preview-hmenu-brand\"></span>\n <span class=\"axp-welcome-onboarding__preview-hmenu-item\"></span>\n <span class=\"axp-welcome-onboarding__preview-hmenu-item\"></span>\n <span class=\"axp-welcome-onboarding__preview-hmenu-item axp-welcome-onboarding__preview-hmenu-item--short\"></span>\n </div>\n }\n <!-- ----- Vertical root menu skeleton ----- -->\n @else {\n <div\n class=\"axp-welcome-onboarding__preview-sidebar\"\n [class.axp-welcome-onboarding__preview-sidebar--compact]=\"previewMenuCompact()\"\n ></div>\n }\n <div class=\"axp-welcome-onboarding__preview-blocks\">\n <strong>{{ previewOrganizationTitle() }}</strong>\n <div class=\"axp-welcome-onboarding__preview-dashboard\">\n <div class=\"axp-welcome-onboarding__preview-widget-row\">\n <div class=\"axp-welcome-onboarding__preview-widget axp-welcome-onboarding__preview-widget--clock\">\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--clock\"></span>\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--line-lg\"></span>\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--line-sm\"></span>\n </div>\n <div class=\"axp-welcome-onboarding__preview-mini-cards\">\n <span class=\"axp-welcome-onboarding__preview-mini-card\">\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--dot\"></span>\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--line-xs\"></span>\n </span>\n <span class=\"axp-welcome-onboarding__preview-mini-card\">\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--dot\"></span>\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--line-xs\"></span>\n </span>\n <span class=\"axp-welcome-onboarding__preview-mini-card axp-welcome-onboarding__preview-mini-card--wide\">\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--line-xs\"></span>\n </span>\n </div>\n </div>\n <div class=\"axp-welcome-onboarding__preview-tasks\">\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--title\"></span>\n @for (row of previewTaskSkeletonRows; track row) {\n <div class=\"axp-welcome-onboarding__preview-task-row\">\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--check\"></span>\n <span class=\"axp-welcome-onboarding__preview-skel axp-welcome-onboarding__preview-skel--line\"></span>\n </div>\n }\n </div>\n <div class=\"axp-welcome-onboarding__preview-chart\"></div>\n </div>\n </div>\n </div>\n </div>\n }\n <!-- ----- Live type specimen on typography step ----- -->\n @else if (showTypographyPreview()) {\n <div\n class=\"axp-welcome-onboarding__type-preview\"\n [ngStyle]=\"previewHostStyle()\"\n >\n <span class=\"axp-welcome-onboarding__type-preview-sample\">\n {{ '@auth:welcome-onboarding.page.typography-preview.sample' | translate | async }}\n </span>\n <strong class=\"axp-welcome-onboarding__type-preview-heading\">\n {{ '@auth:welcome-onboarding.page.typography-preview.heading' | translate | async }}\n </strong>\n <p class=\"axp-welcome-onboarding__type-preview-body\">\n {{ '@auth:welcome-onboarding.page.typography-preview.body' | translate | async }}\n </p>\n </div>\n }\n <!-- ----- Decorative orb on other steps ----- -->\n @else {\n <div class=\"axp-welcome-onboarding__orb\" [ngStyle]=\"previewSurfaceStyle()\">\n <i class=\"axp-welcome-onboarding__orb-icon\" [class]=\"orbIconClass()\" aria-hidden=\"true\"></i>\n </div>\n }\n </div>\n\n <div class=\"axp-welcome-onboarding__art-caption\">\n <strong>{{ stepArtCaptionKey(currentStep()) | translate | async }}</strong>\n </div>\n\n <div class=\"axp-welcome-onboarding__dots\" role=\"tablist\">\n @for (step of steps(); track step.id; let i = $index) {\n <button\n type=\"button\"\n class=\"axp-welcome-onboarding__dot\"\n [class.axp-welcome-onboarding__dot--on]=\"stepIndex() === i\"\n [attr.aria-label]=\"step.title | translate | async\"\n [attr.aria-selected]=\"stepIndex() === i\"\n (click)=\"goToStep(i)\"\n ></button>\n }\n </div>\n </div>\n </aside>\n }\n </main>\n\n <!-- ----- Footer actions while steps are active ----- -->\n @if (!finishOutcome()) {\n <footer class=\"axp-welcome-onboarding__footer\">\n <div class=\"axp-welcome-onboarding__footer-start\">\n <ax-button\n look=\"twotone\"\n color=\"default\"\n [text]=\"'@auth:welcome-onboarding.actions.skip-all' | translate | async\"\n [disabled]=\"busy()\"\n (onClick)=\"skipAll()\"\n ></ax-button>\n <ax-button\n look=\"twotone\"\n color=\"default\"\n [text]=\"'@auth:welcome-onboarding.actions.remind-later' | translate | async\"\n [disabled]=\"busy()\"\n (onClick)=\"remindLater()\"\n ></ax-button>\n </div>\n <div class=\"axp-welcome-onboarding__footer-end\">\n <!-- ----- Previous step ----- -->\n @if (!isFirstStep()) {\n <ax-button\n look=\"blank\"\n color=\"default\"\n [text]=\"'@auth:welcome-onboarding.actions.previous' | translate | async\"\n [disabled]=\"busy()\"\n (onClick)=\"previous()\"\n ></ax-button>\n }\n <ax-button\n look=\"solid\"\n color=\"primary\"\n [text]=\"\n (isLastStep()\n ? '@auth:welcome-onboarding.actions.finish'\n : '@auth:welcome-onboarding.actions.next'\n )\n | translate\n | async\n \"\n [disabled]=\"busy()\"\n (onClick)=\"next()\"\n ></ax-button>\n </div>\n </footer>\n }\n </div>\n }\n </div>\n</div>\n"],"names":["i1","i2","i4"],"mappings":"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"}
@@ -4,7 +4,7 @@ import { AXTranslationService } from '@acorex/core/translation';
4
4
  import * as i0 from '@angular/core';
5
5
  import { inject, Injectable } from '@angular/core';
6
6
  import { Router } from '@angular/router';
7
- import { u as AXPWelcomeOnboardingFlowService } from './acorex-platform-module-auth-client-acorex-platform-module-auth-client-C1oSPf12.mjs';
7
+ import { u as AXPWelcomeOnboardingFlowService } from './acorex-platform-module-auth-client-acorex-platform-module-auth-client-BpCPkKC9.mjs';
8
8
 
9
9
  //#endregion
10
10
  //#region ----- Welcome onboarding command -----
@@ -56,4 +56,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
56
56
  }] });
57
57
 
58
58
  export { AXPWelcomeOnboardingCommand };
59
- //# sourceMappingURL=acorex-platform-module-auth-client-welcome-onboarding.command-Ck1A26BI.mjs.map
59
+ //# sourceMappingURL=acorex-platform-module-auth-client-welcome-onboarding.command-B5NBzcTY.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-auth-client-welcome-onboarding.command-Ck1A26BI.mjs","sources":["../../../../libs/modules/auth/client/src/lib/commands/welcome-onboarding.command.ts"],"sourcesContent":["import { AXPHomePageService } from '@acorex-platform/framework-client/common';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { inject, Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AXPWelcomeOnboardingFlowService } from '../onboarding/welcome-onboarding-flow.service';\n\n//#region ----- Types -----\n\ntype WelcomeOnboardingCommandOptions = {\n force?: boolean;\n};\n\ntype WelcomeDialogOutcome = {\n outcome: 'finished' | 'skipped' | 'snoozed' | 'cancelled' | 'all-set' | 'navigated';\n};\n\n//#endregion\n\n//#region ----- Welcome onboarding command -----\n\n/** Navigates to the full-page welcome onboarding flow (replaces the legacy dialog). */\n@Injectable({ providedIn: 'root' })\nexport class AXPWelcomeOnboardingCommand\n implements AXPCommand<WelcomeOnboardingCommandOptions | undefined, WelcomeDialogOutcome>\n{\n //#region ----- Services & Dependencies -----\n\n private readonly router = inject(Router);\n private readonly flowService = inject(AXPWelcomeOnboardingFlowService);\n private readonly homePageService = inject(AXPHomePageService);\n private readonly toastService = inject(AXToastService);\n private readonly translateService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ----- Command -----\n\n async execute(\n options?: WelcomeOnboardingCommandOptions,\n ): AXPCommandExecuteResultPromise<WelcomeDialogOutcome> {\n if (!this.flowService.resolveContext()) {\n return {\n success: false,\n message: {\n text: await this.translateService.translateAsync(\n '@auth:welcome-onboarding.messages.not-ready',\n ),\n },\n };\n }\n\n const force = options?.force === true;\n const pending = await this.flowService.evaluatePending(force);\n\n if (!pending) {\n if (force) {\n const title = await this.translateService.translateAsync(\n '@auth:welcome-onboarding.messages.all-set.title',\n );\n const content = await this.translateService.translateAsync(\n '@auth:welcome-onboarding.messages.all-set.description',\n );\n this.toastService.show({ color: 'success', title, content });\n return { success: true, kind: 'object', data: { outcome: 'all-set' } };\n }\n\n const urlTree = await this.homePageService.resolveAuthorizedHomeUrlTree();\n await this.router.navigateByUrl(urlTree);\n return { success: true, kind: 'object', data: { outcome: 'navigated' } };\n }\n\n await this.router.navigate(['/auth/account/welcome-onboarding'], {\n queryParams: force ? { force: '1' } : {},\n });\n\n return { success: true, kind: 'object', data: { outcome: 'navigated' } };\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":";;;;;;;;AAkBA;AAEA;AAEA;MAEa,2BAA2B,CAAA;AADxC,IAAA,WAAA,GAAA;;AAMmB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,+BAA+B,CAAC;AACrD,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC5C,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC;AACrC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AAgDjE,IAAA;;;IA1CC,MAAM,OAAO,CACX,OAAyC,EAAA;QAEzC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,EAAE;YACtC,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAC9C,6CAA6C,CAC9C;AACF,iBAAA;aACF;QACH;AAEA,QAAA,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,KAAK,IAAI;QACrC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC;QAE7D,IAAI,CAAC,OAAO,EAAE;YACZ,IAAI,KAAK,EAAE;gBACT,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CACtD,iDAAiD,CAClD;gBACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CACxD,uDAAuD,CACxD;AACD,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC5D,gBAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;YACxE;YAEA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,4BAA4B,EAAE;YACzE,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC;AACxC,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE;QAC1E;QAEA,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,kCAAkC,CAAC,EAAE;AAC/D,YAAA,WAAW,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE;AACzC,SAAA,CAAC;AAEF,QAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE;IAC1E;8GAtDW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,cADd,MAAM,EAAA,CAAA,CAAA;;2FACnB,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;"}
1
+ {"version":3,"file":"acorex-platform-module-auth-client-welcome-onboarding.command-B5NBzcTY.mjs","sources":["../../../../libs/modules/auth/client/src/lib/commands/welcome-onboarding.command.ts"],"sourcesContent":["import { AXPHomePageService } from '@acorex-platform/framework-client/common';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { inject, Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AXPWelcomeOnboardingFlowService } from '../onboarding/welcome-onboarding-flow.service';\n\n//#region ----- Types -----\n\ntype WelcomeOnboardingCommandOptions = {\n force?: boolean;\n};\n\ntype WelcomeDialogOutcome = {\n outcome: 'finished' | 'skipped' | 'snoozed' | 'cancelled' | 'all-set' | 'navigated';\n};\n\n//#endregion\n\n//#region ----- Welcome onboarding command -----\n\n/** Navigates to the full-page welcome onboarding flow (replaces the legacy dialog). */\n@Injectable({ providedIn: 'root' })\nexport class AXPWelcomeOnboardingCommand\n implements AXPCommand<WelcomeOnboardingCommandOptions | undefined, WelcomeDialogOutcome>\n{\n //#region ----- Services & Dependencies -----\n\n private readonly router = inject(Router);\n private readonly flowService = inject(AXPWelcomeOnboardingFlowService);\n private readonly homePageService = inject(AXPHomePageService);\n private readonly toastService = inject(AXToastService);\n private readonly translateService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ----- Command -----\n\n async execute(\n options?: WelcomeOnboardingCommandOptions,\n ): AXPCommandExecuteResultPromise<WelcomeDialogOutcome> {\n if (!this.flowService.resolveContext()) {\n return {\n success: false,\n message: {\n text: await this.translateService.translateAsync(\n '@auth:welcome-onboarding.messages.not-ready',\n ),\n },\n };\n }\n\n const force = options?.force === true;\n const pending = await this.flowService.evaluatePending(force);\n\n if (!pending) {\n if (force) {\n const title = await this.translateService.translateAsync(\n '@auth:welcome-onboarding.messages.all-set.title',\n );\n const content = await this.translateService.translateAsync(\n '@auth:welcome-onboarding.messages.all-set.description',\n );\n this.toastService.show({ color: 'success', title, content });\n return { success: true, kind: 'object', data: { outcome: 'all-set' } };\n }\n\n const urlTree = await this.homePageService.resolveAuthorizedHomeUrlTree();\n await this.router.navigateByUrl(urlTree);\n return { success: true, kind: 'object', data: { outcome: 'navigated' } };\n }\n\n await this.router.navigate(['/auth/account/welcome-onboarding'], {\n queryParams: force ? { force: '1' } : {},\n });\n\n return { success: true, kind: 'object', data: { outcome: 'navigated' } };\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":";;;;;;;;AAkBA;AAEA;AAEA;MAEa,2BAA2B,CAAA;AADxC,IAAA,WAAA,GAAA;;AAMmB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,+BAA+B,CAAC;AACrD,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC5C,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC;AACrC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AAgDjE,IAAA;;;IA1CC,MAAM,OAAO,CACX,OAAyC,EAAA;QAEzC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,EAAE;YACtC,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAC9C,6CAA6C,CAC9C;AACF,iBAAA;aACF;QACH;AAEA,QAAA,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,KAAK,IAAI;QACrC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC;QAE7D,IAAI,CAAC,OAAO,EAAE;YACZ,IAAI,KAAK,EAAE;gBACT,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CACtD,iDAAiD,CAClD;gBACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CACxD,uDAAuD,CACxD;AACD,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC5D,gBAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;YACxE;YAEA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,4BAA4B,EAAE;YACzE,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC;AACxC,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE;QAC1E;QAEA,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,kCAAkC,CAAC,EAAE;AAC/D,YAAA,WAAW,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE;AACzC,SAAA,CAAC;AAEF,QAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE;IAC1E;8GAtDW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,cADd,MAAM,EAAA,CAAA,CAAA;;2FACnB,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;"}
@@ -1,2 +1,2 @@
1
- export { I as AUTH_LOGIN_EXTERNAL_PROVIDERS_SLOT, J as AUTH_USER_ACTIVITY_CLUSTER_GAP_DAYS, K as AUTH_USER_ACTIVITY_DEFAULT_WEEKS, L as AUTH_USER_ACTIVITY_WEEK_PRESETS, M as AXMAuthErrorHandler, N as AXMAuthModule, w as AXMAuthPlatformSettingsService, H as AXMAuthenticationTypes, O as AXMDefaultAuthConfigs, Q as AXM_AUTH_CONFIG_TOKEN, y as AXM_LOGIN_GUARD_TOKEN, m as AXPAuthPasswordChangeTrackingService, j as AXPIdleLockService, G as AXPLoginExternalProvidersComponent, t as AXPLoginHistoryService, k as AXPUserAvatarSyncService, R as ONBOARDING_STEPS_HOOK, S as ONBOARDING_WELCOME_SETTING_KEY, P as PROFILE_PAGE_GROUPS_HOOK, b as PROFILE_PAGE_HEADER_META_HOOK, a as PROFILE_PAGE_SECTIONS_HOOK, U as aggregateDailySessionCounts, V as aggregateHourlySessionCounts, i as buildUserActivityDataSourceItem, W as buildUserActivityHours, X as buildUserActivityWeeks, Y as canActivateLogin, Z as computeUserActivityStats, _ as configAuthModule, $ as countToActivityLevel, a0 as extractUserActivityEndDate, a1 as extractUserActivityStartDate, a2 as extractUserActivityUserId, F as formatCompactActivityCount, a3 as isUserProfileGroupComponent, a4 as isUserProfileSectionsGroupRequested, a5 as parseAuthCredentialType, a6 as resolveDayDateRange, g as resolveDefaultUserActivityDateRange, r as resolveDefaultUserProfileSectionAction, h as resolveSmartUserActivityDateRange, a7 as resolveUserActivityHeatmapLayout, c as resolveUserProfileSectionContent, v as visibleUserProfileSectionActions } from './acorex-platform-module-auth-client-acorex-platform-module-auth-client-C1oSPf12.mjs';
1
+ export { H as AUTH_LOGIN_EXTERNAL_PROVIDERS_SLOT, I as AUTH_USER_ACTIVITY_CLUSTER_GAP_DAYS, J as AUTH_USER_ACTIVITY_DEFAULT_WEEKS, K as AUTH_USER_ACTIVITY_WEEK_PRESETS, L as AXMAuthErrorHandler, M as AXMAuthModule, x as AXMAuthPlatformSettingsService, G as AXMAuthenticationTypes, N as AXMDefaultAuthConfigs, O as AXM_AUTH_CONFIG_TOKEN, w as AXM_LOGIN_GUARD_TOKEN, Q as AXPAuthMasterLayoutComponent, m as AXPAuthPasswordChangeTrackingService, j as AXPIdleLockService, F as AXPLoginExternalProvidersComponent, t as AXPLoginHistoryService, k as AXPUserAvatarSyncService, R as ONBOARDING_STEPS_HOOK, S as ONBOARDING_WELCOME_SETTING_KEY, P as PROFILE_PAGE_GROUPS_HOOK, b as PROFILE_PAGE_HEADER_META_HOOK, a as PROFILE_PAGE_SECTIONS_HOOK, U as PROFILE_SLOT_MENU_ITEMS_HOOK, V as aggregateDailySessionCounts, W as aggregateHourlySessionCounts, i as buildUserActivityDataSourceItem, X as buildUserActivityHours, Y as buildUserActivityWeeks, Z as canActivateLogin, _ as computeUserActivityStats, $ as configAuthModule, a0 as countToActivityLevel, a1 as extractUserActivityEndDate, a2 as extractUserActivityStartDate, a3 as extractUserActivityUserId, E as formatCompactActivityCount, a4 as hasProfileSlotMenuBreakAfter, a5 as hasProfileSlotMenuBreakBefore, a6 as isUserProfileGroupComponent, a7 as isUserProfileSectionsGroupRequested, a8 as parseAuthCredentialType, a9 as resolveDayDateRange, g as resolveDefaultUserActivityDateRange, r as resolveDefaultUserProfileSectionAction, h as resolveSmartUserActivityDateRange, aa as resolveUserActivityHeatmapLayout, c as resolveUserProfileSectionContent, v as visibleUserProfileSectionActions } from './acorex-platform-module-auth-client-acorex-platform-module-auth-client-BpCPkKC9.mjs';
2
2
  //# sourceMappingURL=acorex-platform-module-auth-client.mjs.map
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@acorex-platform/module-auth-client",
3
- "version": "0.0.51",
3
+ "version": "0.0.54",
4
4
  "sideEffects": false,
5
5
  "peerDependencies": {
6
- "@acorex-platform/module-security-management-client": "0.0.51",
6
+ "@acorex-platform/module-security-management-client": "0.0.54",
7
7
  "@angular/common": "^21.0.0 || ^22.0.0",
8
8
  "@angular/core": "^21.0.0 || ^22.0.0"
9
9
  },
@@ -1,3 +1,4 @@
1
+ import * as _acorex_platform_framework_shared_core from '@acorex-platform/framework-shared/core';
1
2
  import { AXPMultiLanguageString, AXPActionMenuItem } from '@acorex-platform/framework-shared/core';
2
3
  import * as i0 from '@angular/core';
3
4
  import { InjectionToken } from '@angular/core';
@@ -424,6 +425,32 @@ declare class AXPAuthPasswordChangeTrackingService {
424
425
  static ɵprov: i0.ɵɵInjectableDeclaration<AXPAuthPasswordChangeTrackingService>;
425
426
  }
426
427
 
428
+ declare class AXPAuthMasterLayoutComponent {
429
+ private readonly authPlatformSettings;
430
+ private readonly platformBranding;
431
+ protected readonly platformTitle: i0.WritableSignal<string>;
432
+ constructor();
433
+ /** Plain string or MLS map — rendered via translate pipe. */
434
+ protected readonly slogan: _acorex_platform_framework_shared_core.AXPMultiLanguageString;
435
+ protected readonly description: _acorex_platform_framework_shared_core.AXPMultiLanguageString;
436
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPAuthMasterLayoutComponent, never>;
437
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXPAuthMasterLayoutComponent, "ng-component", never, {}, {}, never, never, true, never>;
438
+ }
439
+
440
+ declare const PROFILE_SLOT_MENU_ITEMS_HOOK = "profile-slot.menu-items";
441
+ type AXPProfileSlotMenuBreakOptions = {
442
+ before?: boolean;
443
+ after?: boolean;
444
+ };
445
+ type AXPProfileSlotMenuItem = Omit<AXPActionMenuItem, 'break'> & {
446
+ break?: AXPProfileSlotMenuBreakOptions;
447
+ };
448
+ type AXPProfileSlotMenuItemsPayload = {
449
+ items: AXPProfileSlotMenuItem[];
450
+ };
451
+ declare function hasProfileSlotMenuBreakBefore(breakOptions?: AXPProfileSlotMenuBreakOptions): boolean;
452
+ declare function hasProfileSlotMenuBreakAfter(breakOptions?: AXPProfileSlotMenuBreakOptions): boolean;
453
+
427
454
  /** Hook key for modules/apps to contribute welcome wizard steps. */
428
455
  declare const ONBOARDING_STEPS_HOOK = "onboarding.steps";
429
456
  /** User-scoped settings key for welcome onboarding progress blob. */
@@ -481,5 +508,5 @@ interface AXPOnboardingContext {
481
508
  applicationId: string;
482
509
  }
483
510
 
484
- export { AUTH_LOGIN_EXTERNAL_PROVIDERS_SLOT, AUTH_USER_ACTIVITY_CLUSTER_GAP_DAYS, AUTH_USER_ACTIVITY_DEFAULT_WEEKS, AUTH_USER_ACTIVITY_WEEK_PRESETS, AXMAuthErrorHandler, AXMAuthModule, AXMAuthPlatformSettingsService, AXMAuthenticationTypes, AXMDefaultAuthConfigs, AXM_AUTH_CONFIG_TOKEN, AXM_LOGIN_GUARD_TOKEN, AXPAuthPasswordChangeTrackingService, AXPIdleLockService, AXPLoginExternalProvidersComponent, AXPLoginHistoryService, AXPUserAvatarSyncService, ONBOARDING_STEPS_HOOK, ONBOARDING_WELCOME_SETTING_KEY, PROFILE_PAGE_GROUPS_HOOK, PROFILE_PAGE_HEADER_META_HOOK, PROFILE_PAGE_SECTIONS_HOOK, aggregateDailySessionCounts, aggregateHourlySessionCounts, buildUserActivityDataSourceItem, buildUserActivityHours, buildUserActivityWeeks, canActivateLogin, computeUserActivityStats, configAuthModule, countToActivityLevel, extractUserActivityEndDate, extractUserActivityStartDate, extractUserActivityUserId, formatCompactActivityCount, isUserProfileGroupComponent, isUserProfileSectionsGroupRequested, parseAuthCredentialType, resolveDayDateRange, resolveDefaultUserActivityDateRange, resolveDefaultUserProfileSectionAction, resolveSmartUserActivityDateRange, resolveUserActivityHeatmapLayout, resolveUserProfileSectionContent, visibleUserProfileSectionActions };
485
- export type { AXMAuthClientConfig, AXMAuthConfigs, AXPLoginHistoryEntry, AXPOnboardingContext, AXPOnboardingProgressState, AXPOnboardingStep, AXPOnboardingStepAction, AXPOnboardingStepProgress, AXPOnboardingStepScope, AXPOnboardingStepsPayload, AXPUserActivityDataSourceItem, AXPUserActivityDay, AXPUserActivityHeatmapLayout, AXPUserActivityHour, AXPUserActivityLevel, AXPUserActivityLoadParams, AXPUserActivityStats, AXPUserActivityWeek, AXPUserProfileGroup, AXPUserProfileGroupComponentContent, AXPUserProfileGroupContent, AXPUserProfileGroupSectionsContent, AXPUserProfileGroupsPayload, AXPUserProfileHeaderMetaItem, AXPUserProfileHeaderMetaPayload, AXPUserProfileSection, AXPUserProfileSectionAction, AXPUserProfileSectionCardContent, AXPUserProfileSectionComponentContent, AXPUserProfileSectionContent, AXPUserProfileSectionInsight, AXPUserProfileSectionLayout, AXPUserProfileSectionsPayload };
511
+ export { AUTH_LOGIN_EXTERNAL_PROVIDERS_SLOT, AUTH_USER_ACTIVITY_CLUSTER_GAP_DAYS, AUTH_USER_ACTIVITY_DEFAULT_WEEKS, AUTH_USER_ACTIVITY_WEEK_PRESETS, AXMAuthErrorHandler, AXMAuthModule, AXMAuthPlatformSettingsService, AXMAuthenticationTypes, AXMDefaultAuthConfigs, AXM_AUTH_CONFIG_TOKEN, AXM_LOGIN_GUARD_TOKEN, AXPAuthMasterLayoutComponent, AXPAuthPasswordChangeTrackingService, AXPIdleLockService, AXPLoginExternalProvidersComponent, AXPLoginHistoryService, AXPUserAvatarSyncService, ONBOARDING_STEPS_HOOK, ONBOARDING_WELCOME_SETTING_KEY, PROFILE_PAGE_GROUPS_HOOK, PROFILE_PAGE_HEADER_META_HOOK, PROFILE_PAGE_SECTIONS_HOOK, PROFILE_SLOT_MENU_ITEMS_HOOK, aggregateDailySessionCounts, aggregateHourlySessionCounts, buildUserActivityDataSourceItem, buildUserActivityHours, buildUserActivityWeeks, canActivateLogin, computeUserActivityStats, configAuthModule, countToActivityLevel, extractUserActivityEndDate, extractUserActivityStartDate, extractUserActivityUserId, formatCompactActivityCount, hasProfileSlotMenuBreakAfter, hasProfileSlotMenuBreakBefore, isUserProfileGroupComponent, isUserProfileSectionsGroupRequested, parseAuthCredentialType, resolveDayDateRange, resolveDefaultUserActivityDateRange, resolveDefaultUserProfileSectionAction, resolveSmartUserActivityDateRange, resolveUserActivityHeatmapLayout, resolveUserProfileSectionContent, visibleUserProfileSectionActions };
512
+ export type { AXMAuthClientConfig, AXMAuthConfigs, AXPLoginHistoryEntry, AXPOnboardingContext, AXPOnboardingProgressState, AXPOnboardingStep, AXPOnboardingStepAction, AXPOnboardingStepProgress, AXPOnboardingStepScope, AXPOnboardingStepsPayload, AXPProfileSlotMenuBreakOptions, AXPProfileSlotMenuItem, AXPProfileSlotMenuItemsPayload, AXPUserActivityDataSourceItem, AXPUserActivityDay, AXPUserActivityHeatmapLayout, AXPUserActivityHour, AXPUserActivityLevel, AXPUserActivityLoadParams, AXPUserActivityStats, AXPUserActivityWeek, AXPUserProfileGroup, AXPUserProfileGroupComponentContent, AXPUserProfileGroupContent, AXPUserProfileGroupSectionsContent, AXPUserProfileGroupsPayload, AXPUserProfileHeaderMetaItem, AXPUserProfileHeaderMetaPayload, AXPUserProfileSection, AXPUserProfileSectionAction, AXPUserProfileSectionCardContent, AXPUserProfileSectionComponentContent, AXPUserProfileSectionContent, AXPUserProfileSectionInsight, AXPUserProfileSectionLayout, AXPUserProfileSectionsPayload };