@acorex-platform/module-auth-client 0.0.28 → 0.0.32

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 (55) hide show
  1. package/fesm2022/{acorex-platform-module-auth-client-acorex-platform-module-auth-client-CYmUn-lw.mjs → acorex-platform-module-auth-client-acorex-platform-module-auth-client-CPmffSrQ.mjs} +185 -52
  2. package/fesm2022/acorex-platform-module-auth-client-acorex-platform-module-auth-client-CPmffSrQ.mjs.map +1 -0
  3. package/fesm2022/{acorex-platform-module-auth-client-app-chooser.component-BVbu-f8h.mjs → acorex-platform-module-auth-client-app-chooser.component-BfOgjNxw.mjs} +3 -3
  4. package/fesm2022/{acorex-platform-module-auth-client-app-chooser.component-BVbu-f8h.mjs.map → acorex-platform-module-auth-client-app-chooser.component-BfOgjNxw.mjs.map} +1 -1
  5. package/fesm2022/{acorex-platform-module-auth-client-change-password.command-DIM_d7RO.mjs → acorex-platform-module-auth-client-change-password.command-BcBbN5hX.mjs} +2 -2
  6. package/fesm2022/{acorex-platform-module-auth-client-change-password.command-DIM_d7RO.mjs.map → acorex-platform-module-auth-client-change-password.command-BcBbN5hX.mjs.map} +1 -1
  7. package/fesm2022/{acorex-platform-module-auth-client-change-photo.command-CYGqrJV0.mjs → acorex-platform-module-auth-client-change-photo.command-DfHUPj7p.mjs} +2 -2
  8. package/fesm2022/{acorex-platform-module-auth-client-change-photo.command-CYGqrJV0.mjs.map → acorex-platform-module-auth-client-change-photo.command-DfHUPj7p.mjs.map} +1 -1
  9. package/fesm2022/{acorex-platform-module-auth-client-get-user-activity.query-BTpibxe9.mjs → acorex-platform-module-auth-client-get-user-activity.query-D9fyLuBy.mjs} +16 -6
  10. package/fesm2022/acorex-platform-module-auth-client-get-user-activity.query-D9fyLuBy.mjs.map +1 -0
  11. package/fesm2022/{acorex-platform-module-auth-client-lock-screen.command-Br9O4b5c.mjs → acorex-platform-module-auth-client-lock-screen.command-DUZ255VK.mjs} +2 -2
  12. package/fesm2022/{acorex-platform-module-auth-client-lock-screen.command-Br9O4b5c.mjs.map → acorex-platform-module-auth-client-lock-screen.command-DUZ255VK.mjs.map} +1 -1
  13. package/fesm2022/{acorex-platform-module-auth-client-login.module-DJVL3bAF.mjs → acorex-platform-module-auth-client-login.module-uRv9Gwea.mjs} +7 -7
  14. package/fesm2022/acorex-platform-module-auth-client-login.module-uRv9Gwea.mjs.map +1 -0
  15. package/fesm2022/{acorex-platform-module-auth-client-master.layout-DZUYm22p.mjs → acorex-platform-module-auth-client-master.layout-Cu8mQN9B.mjs} +2 -2
  16. package/fesm2022/{acorex-platform-module-auth-client-master.layout-DZUYm22p.mjs.map → acorex-platform-module-auth-client-master.layout-Cu8mQN9B.mjs.map} +1 -1
  17. package/fesm2022/{acorex-platform-module-auth-client-open-sessions.command-LZKM9fgo.mjs → acorex-platform-module-auth-client-open-sessions.command-BlPxfa3v.mjs} +2 -2
  18. package/fesm2022/{acorex-platform-module-auth-client-open-sessions.command-LZKM9fgo.mjs.map → acorex-platform-module-auth-client-open-sessions.command-BlPxfa3v.mjs.map} +1 -1
  19. package/fesm2022/{acorex-platform-module-auth-client-password.component-CNKRWfuG.mjs → acorex-platform-module-auth-client-password.component-5-0kaY5J.mjs} +2 -2
  20. package/fesm2022/{acorex-platform-module-auth-client-password.component-CNKRWfuG.mjs.map → acorex-platform-module-auth-client-password.component-5-0kaY5J.mjs.map} +1 -1
  21. package/fesm2022/acorex-platform-module-auth-client-profile-activity-chart.component-kBmoYwRh.mjs +229 -0
  22. package/fesm2022/acorex-platform-module-auth-client-profile-activity-chart.component-kBmoYwRh.mjs.map +1 -0
  23. package/fesm2022/{acorex-platform-module-auth-client-profile-page-component.provider-6lNx6bKI.mjs → acorex-platform-module-auth-client-profile-page-component.provider-Bz1mdVCM.mjs} +3 -3
  24. package/fesm2022/{acorex-platform-module-auth-client-profile-page-component.provider-6lNx6bKI.mjs.map → acorex-platform-module-auth-client-profile-page-component.provider-Bz1mdVCM.mjs.map} +1 -1
  25. package/fesm2022/{acorex-platform-module-auth-client-profile-page.component-CdxseoJX.mjs → acorex-platform-module-auth-client-profile-page.component-w2SYmCyc.mjs} +7 -3
  26. package/fesm2022/acorex-platform-module-auth-client-profile-page.component-w2SYmCyc.mjs.map +1 -0
  27. package/fesm2022/{acorex-platform-module-auth-client-register-password.component-D-tBrCJv.mjs → acorex-platform-module-auth-client-register-password.component-BtDgEnmo.mjs} +2 -2
  28. package/fesm2022/{acorex-platform-module-auth-client-register-password.component-D-tBrCJv.mjs.map → acorex-platform-module-auth-client-register-password.component-BtDgEnmo.mjs.map} +1 -1
  29. package/fesm2022/{acorex-platform-module-auth-client-register.module-BrXqva0B.mjs → acorex-platform-module-auth-client-register.module-DCWoPb0u.mjs} +7 -7
  30. package/fesm2022/acorex-platform-module-auth-client-register.module-DCWoPb0u.mjs.map +1 -0
  31. package/fesm2022/{acorex-platform-module-auth-client-remove-pin-code.command-uK04-h15.mjs → acorex-platform-module-auth-client-remove-pin-code.command-DJeSHCLL.mjs} +2 -2
  32. package/fesm2022/{acorex-platform-module-auth-client-remove-pin-code.command-uK04-h15.mjs.map → acorex-platform-module-auth-client-remove-pin-code.command-DJeSHCLL.mjs.map} +1 -1
  33. package/fesm2022/{acorex-platform-module-auth-client-session-lock-overlay.component-BhsTAmVe.mjs → acorex-platform-module-auth-client-session-lock-overlay.component-3HJEmCYI.mjs} +2 -2
  34. package/fesm2022/{acorex-platform-module-auth-client-session-lock-overlay.component-BhsTAmVe.mjs.map → acorex-platform-module-auth-client-session-lock-overlay.component-3HJEmCYI.mjs.map} +1 -1
  35. package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.command-BJT7F-xz.mjs → acorex-platform-module-auth-client-set-pin-code.command-C2kCGuQW.mjs} +3 -3
  36. package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.command-BJT7F-xz.mjs.map → acorex-platform-module-auth-client-set-pin-code.command-C2kCGuQW.mjs.map} +1 -1
  37. package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.component-Cq4skm_3.mjs → acorex-platform-module-auth-client-set-pin-code.component-Dpdgw4KT.mjs} +2 -2
  38. package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.component-Cq4skm_3.mjs.map → acorex-platform-module-auth-client-set-pin-code.component-Dpdgw4KT.mjs.map} +1 -1
  39. package/fesm2022/{acorex-platform-module-auth-client-tenant-chooser.component-CHmg7D5H.mjs → acorex-platform-module-auth-client-tenant-chooser.component-1Kv-LGZc.mjs} +2 -2
  40. package/fesm2022/{acorex-platform-module-auth-client-tenant-chooser.component-CHmg7D5H.mjs.map → acorex-platform-module-auth-client-tenant-chooser.component-1Kv-LGZc.mjs.map} +1 -1
  41. package/fesm2022/{acorex-platform-module-auth-client-two-factor.module-_jYo6xXr.mjs → acorex-platform-module-auth-client-two-factor.module-BnH72Bob.mjs} +5 -5
  42. package/fesm2022/acorex-platform-module-auth-client-two-factor.module-BnH72Bob.mjs.map +1 -0
  43. package/fesm2022/{acorex-platform-module-auth-client-view-login-history.command-ovj5rdHL.mjs → acorex-platform-module-auth-client-view-login-history.command-C_T4l61M.mjs} +2 -5
  44. package/fesm2022/{acorex-platform-module-auth-client-view-login-history.command-ovj5rdHL.mjs.map → acorex-platform-module-auth-client-view-login-history.command-C_T4l61M.mjs.map} +1 -1
  45. package/fesm2022/acorex-platform-module-auth-client.mjs +1 -1
  46. package/package.json +2 -2
  47. package/types/acorex-platform-module-auth-client.d.ts +37 -7
  48. package/fesm2022/acorex-platform-module-auth-client-acorex-platform-module-auth-client-CYmUn-lw.mjs.map +0 -1
  49. package/fesm2022/acorex-platform-module-auth-client-get-user-activity.query-BTpibxe9.mjs.map +0 -1
  50. package/fesm2022/acorex-platform-module-auth-client-login.module-DJVL3bAF.mjs.map +0 -1
  51. package/fesm2022/acorex-platform-module-auth-client-profile-activity-chart.component-CtSrYARX.mjs +0 -150
  52. package/fesm2022/acorex-platform-module-auth-client-profile-activity-chart.component-CtSrYARX.mjs.map +0 -1
  53. package/fesm2022/acorex-platform-module-auth-client-profile-page.component-CdxseoJX.mjs.map +0 -1
  54. package/fesm2022/acorex-platform-module-auth-client-register.module-BrXqva0B.mjs.map +0 -1
  55. package/fesm2022/acorex-platform-module-auth-client-two-factor.module-_jYo6xXr.mjs.map +0 -1
@@ -3,10 +3,10 @@ import { AXPFileStorageService, AXPHomePageService, AXPPlatformSettingsLoadState
3
3
  import { AXPSessionService, AXPUnauthorizedError, AXPUnauthenticatedError, AXPAuthStrategyRegistryService, traceAuthGuard, AXPAuthGuard, AXPSessionStatus } from '@acorex-platform/framework-client/auth';
4
4
  import { AXPUserAvatarService, AXPUserAvatarComponent, AXP_PAGE_COMPONENT_PROVIDER } from '@acorex-platform/framework-client/layout/components';
5
5
  import { AXPFileStorageStatus, coerceUnknownToTrimmedString, AXPPlatformScope, AXPKeyboardShortcutPriority, verifyPassword } from '@acorex-platform/framework-shared/core';
6
- import { RootConfig } from '@acorex-platform/module-security-management-client/contracts';
6
+ import { RootConfig, AXPSecurityManagementFeatureKeys } from '@acorex-platform/module-security-management-client/contracts';
7
7
  import { AXPEntityService, AXP_ENTITY_STORAGE_MIDDLEWARE } from '@acorex-platform/framework-client/layout/entity';
8
8
  import * as i0 from '@angular/core';
9
- import { inject, Injectable, isDevMode, InjectionToken, NgModule, input, output, viewChild, viewChildren, signal, computed, effect, ChangeDetectionStrategy, Component, DestroyRef, ViewEncapsulation, ViewChild, Injector, afterNextRender, ApplicationRef } from '@angular/core';
9
+ import { inject, Injectable, isDevMode, InjectionToken, NgModule, input, output, viewChild, viewChildren, signal, computed, effect, ChangeDetectionStrategy, Component, Input, DestroyRef, ViewEncapsulation, ViewChild, Injector, afterNextRender, ApplicationRef } from '@angular/core';
10
10
  import { AXPLayoutThemeService, AXPMenuVerticalMode } from '@acorex-platform/framework-client/themes/shared';
11
11
  import { HttpErrorResponse } from '@angular/common/http';
12
12
  import * as i1$6 from '@angular/router';
@@ -267,12 +267,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
267
267
  //#region ---- User activity helpers ----
268
268
  //#region ---- Constants ----
269
269
  const AUTH_USER_ACTIVITY_DEFAULT_WEEKS = 53;
270
+ /** Ignore an older sign-in cluster when the gap to the next newer day exceeds this. */
271
+ const AUTH_USER_ACTIVITY_CLUSTER_GAP_DAYS = 14;
272
+ /** Week / month / quarter / year heatmap windows, smallest first. */
273
+ const AUTH_USER_ACTIVITY_WEEK_PRESETS = [1, 2, 5, 13, 53];
270
274
  const LEVEL_THRESHOLDS = [0, 3, 8, 15, 30];
275
+ const MS_PER_DAY = 24 * 60 * 60 * 1000;
271
276
  //#endregion
272
277
  //#region ---- Date range ----
278
+ function startOfLocalDay(date) {
279
+ const value = new Date(date);
280
+ value.setHours(0, 0, 0, 0);
281
+ return value;
282
+ }
283
+ function calendarDaysBetween(newer, older) {
284
+ return Math.round((startOfLocalDay(newer).getTime() - startOfLocalDay(older).getTime()) / MS_PER_DAY);
285
+ }
273
286
  function resolveDefaultUserActivityDateRange(weeksToShow = AUTH_USER_ACTIVITY_DEFAULT_WEEKS, referenceDate = new Date()) {
274
- const today = new Date(referenceDate);
275
- today.setHours(0, 0, 0, 0);
287
+ const today = startOfLocalDay(referenceDate);
276
288
  const endSunday = new Date(today);
277
289
  endSunday.setDate(today.getDate() + (6 - today.getDay()));
278
290
  const startDate = new Date(endSunday);
@@ -280,6 +292,80 @@ function resolveDefaultUserActivityDateRange(weeksToShow = AUTH_USER_ACTIVITY_DE
280
292
  startDate.setHours(0, 0, 0, 0);
281
293
  return { startDate, endDate: endSunday };
282
294
  }
295
+ function collectUserSignInDays(sessions, userId, lookbackStart, lookbackEnd) {
296
+ const days = new Map();
297
+ const rangeStart = startOfLocalDay(lookbackStart);
298
+ const rangeEnd = startOfLocalDay(lookbackEnd);
299
+ for (const session of sessions) {
300
+ if (session.userId !== userId || session.lastLoginDate == null) {
301
+ continue;
302
+ }
303
+ const day = startOfLocalDay(new Date(session.lastLoginDate));
304
+ if (Number.isNaN(day.getTime()) || day < rangeStart || day > rangeEnd) {
305
+ continue;
306
+ }
307
+ days.set(day.getTime(), day);
308
+ }
309
+ return [...days.values()].sort((left, right) => right.getTime() - left.getTime());
310
+ }
311
+ function resolveRecentSignInCluster(activityDaysNewestFirst, gapDays) {
312
+ if (activityDaysNewestFirst.length === 0) {
313
+ return [];
314
+ }
315
+ const cluster = [activityDaysNewestFirst[0]];
316
+ for (let index = 1; index < activityDaysNewestFirst.length; index += 1) {
317
+ const newer = activityDaysNewestFirst[index - 1];
318
+ const older = activityDaysNewestFirst[index];
319
+ if (calendarDaysBetween(newer, older) > gapDays) {
320
+ break;
321
+ }
322
+ cluster.push(older);
323
+ }
324
+ return cluster;
325
+ }
326
+ function pickWeeksToCoverCluster(oldestDay, referenceDate) {
327
+ const oldest = startOfLocalDay(oldestDay);
328
+ for (const weeks of AUTH_USER_ACTIVITY_WEEK_PRESETS) {
329
+ const { startDate } = resolveDefaultUserActivityDateRange(weeks, referenceDate);
330
+ if (startDate <= oldest) {
331
+ return weeks;
332
+ }
333
+ }
334
+ return AUTH_USER_ACTIVITY_DEFAULT_WEEKS;
335
+ }
336
+ /**
337
+ * Auto heatmap window from recent sign-in days.
338
+ * Walks backward from the latest sign-in and drops an older cluster when the gap
339
+ * exceeds {@link AUTH_USER_ACTIVITY_CLUSTER_GAP_DAYS}. Empty users get one week.
340
+ */
341
+ function resolveSmartUserActivityDateRange(sessions, userId, referenceDate = new Date()) {
342
+ const lookback = resolveDefaultUserActivityDateRange(AUTH_USER_ACTIVITY_DEFAULT_WEEKS, referenceDate);
343
+ const activityDays = collectUserSignInDays(sessions, userId, lookback.startDate, lookback.endDate);
344
+ const cluster = resolveRecentSignInCluster(activityDays, AUTH_USER_ACTIVITY_CLUSTER_GAP_DAYS);
345
+ if (cluster.length === 0) {
346
+ return resolveDefaultUserActivityDateRange(1, referenceDate);
347
+ }
348
+ if (cluster.length === 1) {
349
+ return resolveDayDateRange(cluster[0]);
350
+ }
351
+ const oldest = cluster[cluster.length - 1];
352
+ return resolveDefaultUserActivityDateRange(pickWeeksToCoverCluster(oldest, referenceDate), referenceDate);
353
+ }
354
+ function resolveDayDateRange(day) {
355
+ const startDate = startOfLocalDay(day);
356
+ return { startDate, endDate: new Date(startDate) };
357
+ }
358
+ function resolveUserActivityHeatmapLayout(startDate, endDate) {
359
+ const { rangeStart, rangeEnd } = normalizeDateRange(startDate, endDate);
360
+ const spanDays = calendarDaysBetween(rangeEnd, rangeStart) + 1;
361
+ if (spanDays <= 1) {
362
+ return 'hours';
363
+ }
364
+ if (spanDays <= 35) {
365
+ return 'days';
366
+ }
367
+ return 'calendar';
368
+ }
283
369
  //#endregion
284
370
  //#region ---- Session aggregation ----
285
371
  function normalizeDateRange(startDate, endDate) {
@@ -320,6 +406,33 @@ function aggregateDailySessionCounts(sessions, params) {
320
406
  }
321
407
  return counts;
322
408
  }
409
+ /** Counts sign-in events per local hour from device session rows. */
410
+ function aggregateHourlySessionCounts(sessions, params) {
411
+ const { rangeStart, rangeEnd } = normalizeDateRange(params.startDate, params.endDate);
412
+ const counts = Array.from({ length: 24 }, () => 0);
413
+ for (const session of sessions) {
414
+ if (session.userId !== params.userId || session.lastLoginDate == null) {
415
+ continue;
416
+ }
417
+ const login = new Date(session.lastLoginDate);
418
+ if (Number.isNaN(login.getTime())) {
419
+ continue;
420
+ }
421
+ const day = startOfLocalDay(login);
422
+ if (day < rangeStart || day > rangeEnd) {
423
+ continue;
424
+ }
425
+ counts[login.getHours()] += 1;
426
+ }
427
+ return counts;
428
+ }
429
+ function buildUserActivityHours(hourlyCounts) {
430
+ return hourlyCounts.map((count, hour) => ({
431
+ hour,
432
+ count,
433
+ level: countToActivityLevel(count),
434
+ }));
435
+ }
323
436
  //#endregion
324
437
  //#region ---- Week grid ----
325
438
  function countToActivityLevel(count) {
@@ -395,12 +508,16 @@ function computeUserActivityStats(weeks) {
395
508
  function buildUserActivityDataSourceItem(params, sessions) {
396
509
  const dailyCounts = aggregateDailySessionCounts(sessions, params);
397
510
  const weeks = buildUserActivityWeeks(params, dailyCounts);
511
+ const layout = resolveUserActivityHeatmapLayout(params.startDate, params.endDate);
512
+ const hours = layout === 'hours' ? buildUserActivityHours(aggregateHourlySessionCounts(sessions, params)) : [];
398
513
  return {
399
514
  id: `${params.userId}:${toIsoDate(params.startDate)}:${toIsoDate(params.endDate)}`,
400
515
  userId: params.userId,
401
516
  startDate: toIsoDate(params.startDate),
402
517
  endDate: toIsoDate(params.endDate),
518
+ layout,
403
519
  weeks,
520
+ hours,
404
521
  stats: computeUserActivityStats(weeks),
405
522
  };
406
523
  }
@@ -877,17 +994,17 @@ const routes = [
877
994
  },
878
995
  {
879
996
  path: '',
880
- loadComponent: () => import('./acorex-platform-module-auth-client-master.layout-DZUYm22p.mjs').then((c) => c.AXPAuthMasterLayoutComponent),
881
- loadChildren: () => import('./acorex-platform-module-auth-client-login.module-DJVL3bAF.mjs').then((c) => c.AXPSignInModule),
997
+ loadComponent: () => import('./acorex-platform-module-auth-client-master.layout-Cu8mQN9B.mjs').then((c) => c.AXPAuthMasterLayoutComponent),
998
+ loadChildren: () => import('./acorex-platform-module-auth-client-login.module-uRv9Gwea.mjs').then((c) => c.AXPSignInModule),
882
999
  },
883
1000
  {
884
1001
  path: '',
885
- loadComponent: () => import('./acorex-platform-module-auth-client-master.layout-DZUYm22p.mjs').then((c) => c.AXPAuthMasterLayoutComponent),
886
- loadChildren: () => import('./acorex-platform-module-auth-client-two-factor.module-_jYo6xXr.mjs').then((c) => c.AXPTwoFactorModule),
1002
+ loadComponent: () => import('./acorex-platform-module-auth-client-master.layout-Cu8mQN9B.mjs').then((c) => c.AXPAuthMasterLayoutComponent),
1003
+ loadChildren: () => import('./acorex-platform-module-auth-client-two-factor.module-BnH72Bob.mjs').then((c) => c.AXPTwoFactorModule),
887
1004
  },
888
1005
  {
889
1006
  path: '',
890
- loadComponent: () => import('./acorex-platform-module-auth-client-master.layout-DZUYm22p.mjs').then((c) => c.AXPAuthMasterLayoutComponent),
1007
+ loadComponent: () => import('./acorex-platform-module-auth-client-master.layout-Cu8mQN9B.mjs').then((c) => c.AXPAuthMasterLayoutComponent),
891
1008
  loadChildren: () => import('./acorex-platform-module-auth-client-routes-IX2qmeqU.mjs').then((c) => c),
892
1009
  },
893
1010
  {
@@ -901,8 +1018,8 @@ const routes = [
901
1018
  },
902
1019
  {
903
1020
  path: '',
904
- loadComponent: () => import('./acorex-platform-module-auth-client-master.layout-DZUYm22p.mjs').then((c) => c.AXPAuthMasterLayoutComponent),
905
- loadChildren: () => import('./acorex-platform-module-auth-client-register.module-BrXqva0B.mjs').then((c) => c.AXPRegisterModule),
1021
+ loadComponent: () => import('./acorex-platform-module-auth-client-master.layout-Cu8mQN9B.mjs').then((c) => c.AXPAuthMasterLayoutComponent),
1022
+ loadChildren: () => import('./acorex-platform-module-auth-client-register.module-DCWoPb0u.mjs').then((c) => c.AXPRegisterModule),
906
1023
  },
907
1024
  ],
908
1025
  },
@@ -1104,6 +1221,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
1104
1221
  class AXMAppChooserSlotComponent {
1105
1222
  constructor() {
1106
1223
  this.sessionService = inject(AXPSessionService);
1224
+ this.themeStore = inject(AXPLayoutThemeService);
1107
1225
  this.applications$ = this.sessionService.applications$;
1108
1226
  this.appPopover = viewChild('appPopover', /* @ts-ignore */
1109
1227
  ...(ngDevMode ? [{ debugName: "appPopover" }] : /* istanbul ignore next */ []));
@@ -1112,11 +1230,11 @@ class AXMAppChooserSlotComponent {
1112
1230
  this.appPopover()?.close();
1113
1231
  }
1114
1232
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMAppChooserSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1115
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMAppChooserSlotComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "appPopover", first: true, predicate: ["appPopover"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (applications$ | async; as applications) {\n @if (applications.length > 1) {\n <ax-button color=\"primary\" #appChooser>\n <ax-icon class=\"fa-regular fa-grid-2\"> </ax-icon>\n </ax-button>\n <ax-popover [target]=\"appChooser\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\" #appPopover>\n <div class=\"bg-lightest border overflow-hidden rounded-md shadow-md w-full min-w-64 p-1\">\n <axp-app-chooser-list [simple]=\"true\" (applicationChosen)=\"closePopover()\"></axp-app-chooser-list>\n </div>\n </ax-popover>\n }\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i2$1.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "visualContextScope", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "closeOnScroll", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: AXPAppChooserListComponent, selector: "axp-app-chooser-list", inputs: ["simple"], outputs: ["applicationChosen", "loadingChange"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
1233
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMAppChooserSlotComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "appPopover", first: true, predicate: ["appPopover"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (applications$ | async; as applications) {\n @if (applications.length > 1) {\n <ax-button [color]=\"themeStore.headerButtonColor()\" [look]=\"themeStore.headerButtonLook()\" #appChooser>\n <ax-icon class=\"fa-regular fa-grid-2\"> </ax-icon>\n </ax-button>\n <ax-popover [target]=\"appChooser\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\" #appPopover>\n <div class=\"bg-lightest border overflow-hidden rounded-md shadow-md w-full min-w-64 p-1\">\n <axp-app-chooser-list [simple]=\"true\" (applicationChosen)=\"closePopover()\"></axp-app-chooser-list>\n </div>\n </ax-popover>\n }\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i2$1.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "visualContextScope", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "closeOnScroll", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: AXPAppChooserListComponent, selector: "axp-app-chooser-list", inputs: ["simple"], outputs: ["applicationChosen", "loadingChange"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
1116
1234
  }
1117
1235
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMAppChooserSlotComponent, decorators: [{
1118
1236
  type: Component,
1119
- args: [{ changeDetection: ChangeDetectionStrategy.Eager, imports: [CommonModule, AXButtonModule, AXPopoverModule, AXDecoratorModule, AXPAppChooserListComponent], template: "@if (applications$ | async; as applications) {\n @if (applications.length > 1) {\n <ax-button color=\"primary\" #appChooser>\n <ax-icon class=\"fa-regular fa-grid-2\"> </ax-icon>\n </ax-button>\n <ax-popover [target]=\"appChooser\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\" #appPopover>\n <div class=\"bg-lightest border overflow-hidden rounded-md shadow-md w-full min-w-64 p-1\">\n <axp-app-chooser-list [simple]=\"true\" (applicationChosen)=\"closePopover()\"></axp-app-chooser-list>\n </div>\n </ax-popover>\n }\n}\n" }]
1237
+ args: [{ changeDetection: ChangeDetectionStrategy.Eager, imports: [CommonModule, AXButtonModule, AXPopoverModule, AXDecoratorModule, AXPAppChooserListComponent], template: "@if (applications$ | async; as applications) {\n @if (applications.length > 1) {\n <ax-button [color]=\"themeStore.headerButtonColor()\" [look]=\"themeStore.headerButtonLook()\" #appChooser>\n <ax-icon class=\"fa-regular fa-grid-2\"> </ax-icon>\n </ax-button>\n <ax-popover [target]=\"appChooser\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\" #appPopover>\n <div class=\"bg-lightest border overflow-hidden rounded-md shadow-md w-full min-w-64 p-1\">\n <axp-app-chooser-list [simple]=\"true\" (applicationChosen)=\"closePopover()\"></axp-app-chooser-list>\n </div>\n </ax-popover>\n }\n}\n" }]
1120
1238
  }], propDecorators: { appPopover: [{ type: i0.ViewChild, args: ['appPopover', { isSignal: true }] }] } });
1121
1239
 
1122
1240
  class AXPTenantChooserListComponent {
@@ -1318,6 +1436,7 @@ class AXPTenantChooserDropdownComponent {
1318
1436
  constructor() {
1319
1437
  //#region ----- Services & Dependencies -----
1320
1438
  this.sessionService = inject(AXPSessionService);
1439
+ this.router = inject(Router);
1321
1440
  //#endregion
1322
1441
  //#region ----- State Signals -----
1323
1442
  this.tenants$ = this.sessionService.tenants$;
@@ -1326,6 +1445,13 @@ class AXPTenantChooserDropdownComponent {
1326
1445
  ...(ngDevMode ? [{ debugName: "tenantsLoading" }] : /* istanbul ignore next */ []));
1327
1446
  this.tenantPopover = viewChild('tenantPopover', /* @ts-ignore */
1328
1447
  ...(ngDevMode ? [{ debugName: "tenantPopover" }] : /* istanbul ignore next */ []));
1448
+ //#endregion
1449
+ //#region ----- Inputs -----
1450
+ /**
1451
+ * When true, renders a plain inline tenant text (no popover).
1452
+ * When multiple tenants are available, the text is clickable.
1453
+ */
1454
+ this.inline = false;
1329
1455
  }
1330
1456
  //#endregion
1331
1457
  //#region ----- Lifecycle -----
@@ -1339,8 +1465,12 @@ class AXPTenantChooserDropdownComponent {
1339
1465
  closePopover() {
1340
1466
  this.tenantPopover()?.close();
1341
1467
  }
1468
+ openTenantChooser() {
1469
+ // Route registered in `AXPAccountModule` as `/auth/account/tenant-chooser`.
1470
+ void this.router.navigate(['/auth/account/tenant-chooser']);
1471
+ }
1342
1472
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTenantChooserDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1343
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPTenantChooserDropdownComponent, isStandalone: true, selector: "axp-tenant-chooser-dropdown", viewQueries: [{ propertyName: "tenantPopover", first: true, predicate: ["tenantPopover"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (tenantsLoading()) {\n <ax-skeleton [animated]=\"true\" class=\"h-5 w-32 max-w-full\"></ax-skeleton>\n} @else if (tenants$ | async; as tenants) {\n @if (tenants.length > 1) {\n <ax-button\n [text]=\"((tenant$ | async)?.title | translate | async) ?? ''\"\n class=\"ax-sm\"\n look=\"blank\"\n #tenantChooser\n >\n <ax-suffix>\n <ax-icon class=\"fa-solid fa-caret-down\"></ax-icon>\n </ax-suffix>\n </ax-button>\n <ax-popover\n [target]=\"tenantChooser\"\n [openOn]=\"'toggle'\"\n [closeOn]=\"'clickOut'\"\n [adaptivityEnabled]=\"true\"\n #tenantPopover\n >\n <div\n class=\"bg-lightest border overflow-hidden rounded-md shadow-md w-full min-w-64 p-1\"\n >\n <axp-tenant-chooser-list\n [simple]=\"true\"\n (tenantChosen)=\"closePopover()\"\n ></axp-tenant-chooser-list>\n </div>\n </ax-popover>\n } @else {\n <ax-button\n [text]=\"((tenant$ | async)?.title | translate | async) ?? ''\"\n class=\"ax-sm\"\n look=\"blank\"\n ></ax-button>\n }\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i2$1.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "visualContextScope", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "closeOnScroll", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXSkeletonModule }, { kind: "component", type: i1$2.AXSkeletonComponent, selector: "ax-skeleton", inputs: ["animated"] }, { kind: "component", type: AXPTenantChooserListComponent, selector: "axp-tenant-chooser-list", inputs: ["simple"], outputs: ["tenantChosen", "loadingChange"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i5$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
1473
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPTenantChooserDropdownComponent, isStandalone: true, selector: "axp-tenant-chooser-dropdown", inputs: { inline: "inline" }, viewQueries: [{ propertyName: "tenantPopover", first: true, predicate: ["tenantPopover"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (tenantsLoading()) {\n <ax-skeleton [animated]=\"true\" class=\"h-5 w-32 max-w-full\"></ax-skeleton>\n} @else if (tenants$ | async; as tenants) {\n @if (inline) {\n @if (tenants.length > 1) {\n <!-- ----- Inline dropdown for multi-tenant ----- -->\n <span\n class=\"text-xs font-medium px-3 cursor-pointer inline-flex items-center gap-1\"\n #inlineTenantTrigger\n >\n {{ ((tenant$ | async)?.title | translate | async) ?? '' }}\n <i class=\"fa-solid fa-caret-down text-2xs opacity-60\"></i>\n </span>\n <ax-popover\n [target]=\"inlineTenantTrigger\"\n [openOn]=\"'toggle'\"\n [closeOn]=\"'clickOut'\"\n [adaptivityEnabled]=\"true\"\n #tenantPopover\n >\n <div\n class=\"bg-lightest border overflow-hidden rounded-md shadow-md w-full min-w-64 p-1\"\n >\n <axp-tenant-chooser-list\n [simple]=\"true\"\n (tenantChosen)=\"closePopover()\"\n ></axp-tenant-chooser-list>\n </div>\n </ax-popover>\n } @else {\n <!-- ----- Plain text for single tenant ----- -->\n <span class=\"text-xs font-medium px-3\">\n {{ ((tenant$ | async)?.title | translate | async) ?? '' }}\n </span>\n }\n } @else {\n @if (tenants.length > 1) {\n <ax-button\n [text]=\"((tenant$ | async)?.title | translate | async) ?? ''\"\n class=\"ax-sm\"\n look=\"blank\"\n #tenantChooser\n >\n <ax-suffix>\n <ax-icon class=\"fa-solid fa-caret-down\"></ax-icon>\n </ax-suffix>\n </ax-button>\n <ax-popover\n [target]=\"tenantChooser\"\n [openOn]=\"'toggle'\"\n [closeOn]=\"'clickOut'\"\n [adaptivityEnabled]=\"true\"\n #tenantPopover\n >\n <div\n class=\"bg-lightest border overflow-hidden rounded-md shadow-md w-full min-w-64 p-1\"\n >\n <axp-tenant-chooser-list\n [simple]=\"true\"\n (tenantChosen)=\"closePopover()\"\n ></axp-tenant-chooser-list>\n </div>\n </ax-popover>\n } @else {\n <ax-button\n [text]=\"((tenant$ | async)?.title | translate | async) ?? ''\"\n class=\"ax-sm\"\n look=\"blank\"\n ></ax-button>\n }\n }\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i2$1.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "visualContextScope", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "closeOnScroll", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXSkeletonModule }, { kind: "component", type: i1$2.AXSkeletonComponent, selector: "ax-skeleton", inputs: ["animated"] }, { kind: "component", type: AXPTenantChooserListComponent, selector: "axp-tenant-chooser-list", inputs: ["simple"], outputs: ["tenantChosen", "loadingChange"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i5$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
1344
1474
  }
1345
1475
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTenantChooserDropdownComponent, decorators: [{
1346
1476
  type: Component,
@@ -1352,8 +1482,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
1352
1482
  AXDecoratorModule,
1353
1483
  AXSkeletonModule,
1354
1484
  AXPTenantChooserListComponent,
1355
- ], template: "@if (tenantsLoading()) {\n <ax-skeleton [animated]=\"true\" class=\"h-5 w-32 max-w-full\"></ax-skeleton>\n} @else if (tenants$ | async; as tenants) {\n @if (tenants.length > 1) {\n <ax-button\n [text]=\"((tenant$ | async)?.title | translate | async) ?? ''\"\n class=\"ax-sm\"\n look=\"blank\"\n #tenantChooser\n >\n <ax-suffix>\n <ax-icon class=\"fa-solid fa-caret-down\"></ax-icon>\n </ax-suffix>\n </ax-button>\n <ax-popover\n [target]=\"tenantChooser\"\n [openOn]=\"'toggle'\"\n [closeOn]=\"'clickOut'\"\n [adaptivityEnabled]=\"true\"\n #tenantPopover\n >\n <div\n class=\"bg-lightest border overflow-hidden rounded-md shadow-md w-full min-w-64 p-1\"\n >\n <axp-tenant-chooser-list\n [simple]=\"true\"\n (tenantChosen)=\"closePopover()\"\n ></axp-tenant-chooser-list>\n </div>\n </ax-popover>\n } @else {\n <ax-button\n [text]=\"((tenant$ | async)?.title | translate | async) ?? ''\"\n class=\"ax-sm\"\n look=\"blank\"\n ></ax-button>\n }\n}\n" }]
1356
- }], propDecorators: { tenantPopover: [{ type: i0.ViewChild, args: ['tenantPopover', { isSignal: true }] }] } });
1485
+ ], template: "@if (tenantsLoading()) {\n <ax-skeleton [animated]=\"true\" class=\"h-5 w-32 max-w-full\"></ax-skeleton>\n} @else if (tenants$ | async; as tenants) {\n @if (inline) {\n @if (tenants.length > 1) {\n <!-- ----- Inline dropdown for multi-tenant ----- -->\n <span\n class=\"text-xs font-medium px-3 cursor-pointer inline-flex items-center gap-1\"\n #inlineTenantTrigger\n >\n {{ ((tenant$ | async)?.title | translate | async) ?? '' }}\n <i class=\"fa-solid fa-caret-down text-2xs opacity-60\"></i>\n </span>\n <ax-popover\n [target]=\"inlineTenantTrigger\"\n [openOn]=\"'toggle'\"\n [closeOn]=\"'clickOut'\"\n [adaptivityEnabled]=\"true\"\n #tenantPopover\n >\n <div\n class=\"bg-lightest border overflow-hidden rounded-md shadow-md w-full min-w-64 p-1\"\n >\n <axp-tenant-chooser-list\n [simple]=\"true\"\n (tenantChosen)=\"closePopover()\"\n ></axp-tenant-chooser-list>\n </div>\n </ax-popover>\n } @else {\n <!-- ----- Plain text for single tenant ----- -->\n <span class=\"text-xs font-medium px-3\">\n {{ ((tenant$ | async)?.title | translate | async) ?? '' }}\n </span>\n }\n } @else {\n @if (tenants.length > 1) {\n <ax-button\n [text]=\"((tenant$ | async)?.title | translate | async) ?? ''\"\n class=\"ax-sm\"\n look=\"blank\"\n #tenantChooser\n >\n <ax-suffix>\n <ax-icon class=\"fa-solid fa-caret-down\"></ax-icon>\n </ax-suffix>\n </ax-button>\n <ax-popover\n [target]=\"tenantChooser\"\n [openOn]=\"'toggle'\"\n [closeOn]=\"'clickOut'\"\n [adaptivityEnabled]=\"true\"\n #tenantPopover\n >\n <div\n class=\"bg-lightest border overflow-hidden rounded-md shadow-md w-full min-w-64 p-1\"\n >\n <axp-tenant-chooser-list\n [simple]=\"true\"\n (tenantChosen)=\"closePopover()\"\n ></axp-tenant-chooser-list>\n </div>\n </ax-popover>\n } @else {\n <ax-button\n [text]=\"((tenant$ | async)?.title | translate | async) ?? ''\"\n class=\"ax-sm\"\n look=\"blank\"\n ></ax-button>\n }\n }\n}\n" }]
1486
+ }], propDecorators: { tenantPopover: [{ type: i0.ViewChild, args: ['tenantPopover', { isSignal: true }] }], inline: [{
1487
+ type: Input
1488
+ }] } });
1357
1489
 
1358
1490
  //#region ---- Profile slot menu hook ----
1359
1491
  const PROFILE_SLOT_MENU_ITEMS_HOOK = 'profile-slot.menu-items';
@@ -1486,7 +1618,7 @@ class AXMAuthProfileSlotComponent {
1486
1618
  // AXKBDItemComponent,
1487
1619
  AXLoadingModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPUserAvatarComponent, selector: "axp-user-avatar", inputs: ["size", "userId", "showPresence", "displayName", "displayAvatar"] }, { kind: "component", type:
1488
1620
  //
1489
- AXPTenantChooserDropdownComponent, selector: "axp-tenant-chooser-dropdown" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i5$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1621
+ AXPTenantChooserDropdownComponent, selector: "axp-tenant-chooser-dropdown", inputs: ["inline"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i5$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1490
1622
  }
1491
1623
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMAuthProfileSlotComponent, decorators: [{
1492
1624
  type: Component,
@@ -1521,6 +1653,10 @@ class AXMUserProfileCardSlotComponent {
1521
1653
  return this.themeStore.effectiveMenuVerticalMode() === AXPMenuVerticalMode.Compact;
1522
1654
  }, /* @ts-ignore */
1523
1655
  ...(ngDevMode ? [{ debugName: "isCompactMode" }] : /* istanbul ignore next */ []));
1656
+ this.isMenuDark = computed(() => this.themeStore.menuDarkEnabled() ||
1657
+ (this.themeStore.menuAppearance() === 'brand-light' &&
1658
+ this.themeStore.isDarkMode()), /* @ts-ignore */
1659
+ ...(ngDevMode ? [{ debugName: "isMenuDark" }] : /* istanbul ignore next */ []));
1524
1660
  this.hasPicture = signal(true, /* @ts-ignore */
1525
1661
  ...(ngDevMode ? [{ debugName: "hasPicture" }] : /* istanbul ignore next */ []));
1526
1662
  this.avatarText = signal('', /* @ts-ignore */
@@ -1532,8 +1668,8 @@ class AXMUserProfileCardSlotComponent {
1532
1668
  this.getAvatarText = () => {
1533
1669
  this.user$.pipe(first()).subscribe((user) => {
1534
1670
  const names = user?.title.split(' ');
1535
- if (names?.length && names?.length > 1) {
1536
- this.avatarText.set(`${names[0][0].toUpperCase()}${names[names.length - 1][0].toUpperCase()}`);
1671
+ if (names?.length && names[0]?.[0]) {
1672
+ this.avatarText.set(names[0][0].toUpperCase());
1537
1673
  }
1538
1674
  else
1539
1675
  return this.avatarText.set('AC');
@@ -1578,11 +1714,11 @@ class AXMUserProfileCardSlotComponent {
1578
1714
  }
1579
1715
  }
1580
1716
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMUserProfileCardSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1581
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMUserProfileCardSlotComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "profilePopover", first: true, predicate: ["profilePopover"], descendants: true }], ngImport: i0, template: "@if((isAuthenticated$ | async)) {\n<div class=\"p-3 flex items-center gap-1 border-b border-border-lighter\" [class.justify-center]=\"isCompactMode()\">\n <div #avatar>\n <axp-user-avatar\n [size]=\"48\"\n [userId]=\"$safeNavigationMigration((user$ | async)?.id)!\"\n [showPresence]=\"false\"\n ></axp-user-avatar>\n </div>\n @if (!isCompactMode()) {\n <div class=\"flex flex-col\">\n <ax-title class=\"text-sm font-medium px-3\">{{ (user$ | async)?.title }}</ax-title>\n <axp-tenant-chooser-dropdown />\n </div>\n }\n</div>\n}\n", dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type:
1717
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMUserProfileCardSlotComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "profilePopover", first: true, predicate: ["profilePopover"], descendants: true }], ngImport: i0, template: "@if((isAuthenticated$ | async)) {\n<div\n class=\"p-3 flex items-center gap-1 border-b\"\n [class.border-white/7]=\"isMenuDark()\"\n [class.border-black/7]=\"!isMenuDark()\"\n [class.justify-center]=\"isCompactMode()\"\n>\n <div #avatar>\n <axp-user-avatar\n [size]=\"48\"\n [userId]=\"$safeNavigationMigration((user$ | async)?.id)!\"\n [showPresence]=\"false\"\n ></axp-user-avatar>\n </div>\n @if (!isCompactMode()) {\n <div class=\"flex flex-col\">\n <ax-title class=\"text-sm font-medium px-3\">{{ (user$ | async)?.title }}</ax-title>\n <axp-tenant-chooser-dropdown [inline]=\"true\" />\n </div>\n }\n</div>\n}\n", dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type:
1582
1718
  //
1583
1719
  AXImageModule }, { kind: "ngmodule", type: AXAvatarModule }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type:
1584
1720
  //
1585
- AXPTenantChooserDropdownComponent, selector: "axp-tenant-chooser-dropdown" }, { kind: "component", type: AXPUserAvatarComponent, selector: "axp-user-avatar", inputs: ["size", "userId", "showPresence", "displayName", "displayAvatar"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
1721
+ AXPTenantChooserDropdownComponent, selector: "axp-tenant-chooser-dropdown", inputs: ["inline"] }, { kind: "component", type: AXPUserAvatarComponent, selector: "axp-user-avatar", inputs: ["size", "userId", "showPresence", "displayName", "displayAvatar"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
1586
1722
  }
1587
1723
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMUserProfileCardSlotComponent, decorators: [{
1588
1724
  type: Component,
@@ -1600,7 +1736,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
1600
1736
  AXPTenantChooserDropdownComponent,
1601
1737
  AsyncPipe,
1602
1738
  AXPUserAvatarComponent,
1603
- ], template: "@if((isAuthenticated$ | async)) {\n<div class=\"p-3 flex items-center gap-1 border-b border-border-lighter\" [class.justify-center]=\"isCompactMode()\">\n <div #avatar>\n <axp-user-avatar\n [size]=\"48\"\n [userId]=\"$safeNavigationMigration((user$ | async)?.id)!\"\n [showPresence]=\"false\"\n ></axp-user-avatar>\n </div>\n @if (!isCompactMode()) {\n <div class=\"flex flex-col\">\n <ax-title class=\"text-sm font-medium px-3\">{{ (user$ | async)?.title }}</ax-title>\n <axp-tenant-chooser-dropdown />\n </div>\n }\n</div>\n}\n" }]
1739
+ ], template: "@if((isAuthenticated$ | async)) {\n<div\n class=\"p-3 flex items-center gap-1 border-b\"\n [class.border-white/7]=\"isMenuDark()\"\n [class.border-black/7]=\"!isMenuDark()\"\n [class.justify-center]=\"isCompactMode()\"\n>\n <div #avatar>\n <axp-user-avatar\n [size]=\"48\"\n [userId]=\"$safeNavigationMigration((user$ | async)?.id)!\"\n [showPresence]=\"false\"\n ></axp-user-avatar>\n </div>\n @if (!isCompactMode()) {\n <div class=\"flex flex-col\">\n <ax-title class=\"text-sm font-medium px-3\">{{ (user$ | async)?.title }}</ax-title>\n <axp-tenant-chooser-dropdown [inline]=\"true\" />\n </div>\n }\n</div>\n}\n" }]
1604
1740
  }], ctorParameters: () => [], propDecorators: { profilePopover: [{
1605
1741
  type: ViewChild,
1606
1742
  args: ['profilePopover']
@@ -1778,12 +1914,12 @@ function routesFacory() {
1778
1914
  routes = [
1779
1915
  {
1780
1916
  path: 'tenant-chooser',
1781
- loadComponent: () => import('./acorex-platform-module-auth-client-tenant-chooser.component-CHmg7D5H.mjs').then((c) => c.AXPAuthTenantChooserComponent),
1917
+ loadComponent: () => import('./acorex-platform-module-auth-client-tenant-chooser.component-1Kv-LGZc.mjs').then((c) => c.AXPAuthTenantChooserComponent),
1782
1918
  canActivate: [AXPAuthGuard, canActivateTenantChooser],
1783
1919
  },
1784
1920
  {
1785
1921
  path: 'app-chooser',
1786
- loadComponent: () => import('./acorex-platform-module-auth-client-app-chooser.component-BVbu-f8h.mjs').then((c) => c.AXPAuthAppChooserComponent),
1922
+ loadComponent: () => import('./acorex-platform-module-auth-client-app-chooser.component-BfOgjNxw.mjs').then((c) => c.AXPAuthAppChooserComponent),
1787
1923
  canActivate: [AXPAuthGuard, canActivateAppChooser],
1788
1924
  },
1789
1925
  ];
@@ -1791,7 +1927,7 @@ function routesFacory() {
1791
1927
  }
1792
1928
  class AXPAccountModule {
1793
1929
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPAccountModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1794
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXPAccountModule, imports: [RouterModule, i1$4.AXPComponentSlotModule] }); }
1930
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXPAccountModule, imports: [i1$4.AXPComponentSlotModule] }); }
1795
1931
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPAccountModule, providers: [
1796
1932
  {
1797
1933
  provide: ROUTES,
@@ -1802,9 +1938,7 @@ class AXPAccountModule {
1802
1938
  provide: AXMUserDeviceSessionsService,
1803
1939
  useClass: AXMUserDeviceSessionsServiceImp,
1804
1940
  },
1805
- ], imports: [RouterModule,
1806
- //
1807
- AXPComponentSlotModule.forChild({
1941
+ ], imports: [AXPComponentSlotModule.forChild({
1808
1942
  'root-side-menu-header': [
1809
1943
  {
1810
1944
  priority: 1,
@@ -1831,8 +1965,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
1831
1965
  args: [{
1832
1966
  declarations: [],
1833
1967
  imports: [
1834
- RouterModule,
1835
- //
1836
1968
  AXPComponentSlotModule.forChild({
1837
1969
  'root-side-menu-header': [
1838
1970
  {
@@ -2175,7 +2307,7 @@ class AXPIdleLockService {
2175
2307
  this.overlayOpening = true;
2176
2308
  this.locked.set(true);
2177
2309
  try {
2178
- const { AXMSessionLockOverlayComponent: overlayComponent } = await import('./acorex-platform-module-auth-client-session-lock-overlay.component-BhsTAmVe.mjs');
2310
+ const { AXMSessionLockOverlayComponent: overlayComponent } = await import('./acorex-platform-module-auth-client-session-lock-overlay.component-3HJEmCYI.mjs');
2179
2311
  const panelClasses = ['axm-session-lock-overlay-shell'];
2180
2312
  if (this.platform.isDark()) {
2181
2313
  panelClasses.push('ax-dark');
@@ -2489,6 +2621,7 @@ const CoreProfileSectionsHookProvider = {
2489
2621
  id: 'delete-account',
2490
2622
  groupId: 'account',
2491
2623
  priority: 100,
2624
+ feature: AXPSecurityManagementFeatureKeys.DeleteAccount,
2492
2625
  content: {
2493
2626
  mode: 'component',
2494
2627
  componentKey: PROFILE_DELETE_ACCOUNT_DANGER_ZONE_COMPONENT_KEY,
@@ -2998,7 +3131,7 @@ const userAvatarCacheRefreshMiddleware = {
2998
3131
  //#endregion
2999
3132
 
3000
3133
  function profileRoutesFactory() {
3001
- const loadProfilePage = () => import('./acorex-platform-module-auth-client-profile-page.component-CdxseoJX.mjs').then((c) => c.AXMUserProfilePageComponent);
3134
+ const loadProfilePage = () => import('./acorex-platform-module-auth-client-profile-page.component-w2SYmCyc.mjs').then((c) => c.AXMUserProfilePageComponent);
3002
3135
  return [
3003
3136
  {
3004
3137
  path: ':app/profile',
@@ -3114,11 +3247,11 @@ class AXMAuthModule {
3114
3247
  AXMAuthErrorHandler,
3115
3248
  provideLazyProvider(AXP_MENU_PROVIDER, () => import('./acorex-platform-module-auth-client-menu.provider-Bz-kRip4.mjs').then(m => m.AXMSecurityManagementModuleMenuProvider)),
3116
3249
  provideLazyProvider(AXP_SETTING_DEFINITION_PROVIDER, () => import('./acorex-platform-module-auth-client-settings.provider-Yaoz8yp3.mjs').then(m => m.AXMSettingProvider)),
3117
- provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-platform-module-auth-client-profile-page-component.provider-6lNx6bKI.mjs').then((module) => module.AXMProfilePageComponentProvider)),
3250
+ provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-platform-module-auth-client-profile-page-component.provider-Bz1mdVCM.mjs').then((module) => module.AXMProfilePageComponentProvider)),
3118
3251
  provideQuerySetups([
3119
3252
  {
3120
3253
  key: 'Auth:GetUserActivity',
3121
- loader: () => import('./acorex-platform-module-auth-client-get-user-activity.query-BTpibxe9.mjs').then((c) => c.AXMGetUserActivityQuery),
3254
+ loader: () => import('./acorex-platform-module-auth-client-get-user-activity.query-D9fyLuBy.mjs').then((c) => c.AXMGetUserActivityQuery),
3122
3255
  },
3123
3256
  ]),
3124
3257
  {
@@ -3142,15 +3275,15 @@ class AXMAuthModule {
3142
3275
  },
3143
3276
  {
3144
3277
  key: AXMAuthCommandKeys.Session.OpenSessions,
3145
- command: () => import('./acorex-platform-module-auth-client-open-sessions.command-LZKM9fgo.mjs').then((c) => c.AXPOpenSessionsCommand),
3278
+ command: () => import('./acorex-platform-module-auth-client-open-sessions.command-BlPxfa3v.mjs').then((c) => c.AXPOpenSessionsCommand),
3146
3279
  },
3147
3280
  {
3148
3281
  key: AXMAuthCommandKeys.Session.LockScreen,
3149
- command: () => import('./acorex-platform-module-auth-client-lock-screen.command-Br9O4b5c.mjs').then((c) => c.AXPLockScreenCommand),
3282
+ command: () => import('./acorex-platform-module-auth-client-lock-screen.command-DUZ255VK.mjs').then((c) => c.AXPLockScreenCommand),
3150
3283
  },
3151
3284
  {
3152
3285
  key: AXMAuthCommandKeys.Profile.ChangePhoto,
3153
- command: () => import('./acorex-platform-module-auth-client-change-photo.command-CYGqrJV0.mjs').then((c) => c.AXPChangePhotoCommand),
3286
+ command: () => import('./acorex-platform-module-auth-client-change-photo.command-DfHUPj7p.mjs').then((c) => c.AXPChangePhotoCommand),
3154
3287
  },
3155
3288
  {
3156
3289
  key: AXMAuthCommandKeys.Profile.EditAccountInfo,
@@ -3158,19 +3291,19 @@ class AXMAuthModule {
3158
3291
  },
3159
3292
  {
3160
3293
  key: AXMAuthCommandKeys.Security.ChangePassword,
3161
- command: () => import('./acorex-platform-module-auth-client-change-password.command-DIM_d7RO.mjs').then((c) => c.AXPChangePasswordCommand),
3294
+ command: () => import('./acorex-platform-module-auth-client-change-password.command-BcBbN5hX.mjs').then((c) => c.AXPChangePasswordCommand),
3162
3295
  },
3163
3296
  {
3164
3297
  key: AXMAuthCommandKeys.Security.SetPinCode,
3165
- command: () => import('./acorex-platform-module-auth-client-set-pin-code.command-BJT7F-xz.mjs').then((c) => c.AXPSetPinCodeCommand),
3298
+ command: () => import('./acorex-platform-module-auth-client-set-pin-code.command-C2kCGuQW.mjs').then((c) => c.AXPSetPinCodeCommand),
3166
3299
  },
3167
3300
  {
3168
3301
  key: AXMAuthCommandKeys.Security.RemovePinCode,
3169
- command: () => import('./acorex-platform-module-auth-client-remove-pin-code.command-uK04-h15.mjs').then((c) => c.AXPRemovePinCodeCommand),
3302
+ command: () => import('./acorex-platform-module-auth-client-remove-pin-code.command-DJeSHCLL.mjs').then((c) => c.AXPRemovePinCodeCommand),
3170
3303
  },
3171
3304
  {
3172
3305
  key: AXMAuthCommandKeys.Security.ViewLoginHistory,
3173
- command: () => import('./acorex-platform-module-auth-client-view-login-history.command-ovj5rdHL.mjs').then((c) => c.AXPViewLoginHistoryCommand),
3306
+ command: () => import('./acorex-platform-module-auth-client-view-login-history.command-C_T4l61M.mjs').then((c) => c.AXPViewLoginHistoryCommand),
3174
3307
  },
3175
3308
  {
3176
3309
  key: AXMAuthCommandKeys.Security.EditSignature,
@@ -3323,11 +3456,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
3323
3456
  AXMAuthErrorHandler,
3324
3457
  provideLazyProvider(AXP_MENU_PROVIDER, () => import('./acorex-platform-module-auth-client-menu.provider-Bz-kRip4.mjs').then(m => m.AXMSecurityManagementModuleMenuProvider)),
3325
3458
  provideLazyProvider(AXP_SETTING_DEFINITION_PROVIDER, () => import('./acorex-platform-module-auth-client-settings.provider-Yaoz8yp3.mjs').then(m => m.AXMSettingProvider)),
3326
- provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-platform-module-auth-client-profile-page-component.provider-6lNx6bKI.mjs').then((module) => module.AXMProfilePageComponentProvider)),
3459
+ provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-platform-module-auth-client-profile-page-component.provider-Bz1mdVCM.mjs').then((module) => module.AXMProfilePageComponentProvider)),
3327
3460
  provideQuerySetups([
3328
3461
  {
3329
3462
  key: 'Auth:GetUserActivity',
3330
- loader: () => import('./acorex-platform-module-auth-client-get-user-activity.query-BTpibxe9.mjs').then((c) => c.AXMGetUserActivityQuery),
3463
+ loader: () => import('./acorex-platform-module-auth-client-get-user-activity.query-D9fyLuBy.mjs').then((c) => c.AXMGetUserActivityQuery),
3331
3464
  },
3332
3465
  ]),
3333
3466
  {
@@ -3351,15 +3484,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
3351
3484
  },
3352
3485
  {
3353
3486
  key: AXMAuthCommandKeys.Session.OpenSessions,
3354
- command: () => import('./acorex-platform-module-auth-client-open-sessions.command-LZKM9fgo.mjs').then((c) => c.AXPOpenSessionsCommand),
3487
+ command: () => import('./acorex-platform-module-auth-client-open-sessions.command-BlPxfa3v.mjs').then((c) => c.AXPOpenSessionsCommand),
3355
3488
  },
3356
3489
  {
3357
3490
  key: AXMAuthCommandKeys.Session.LockScreen,
3358
- command: () => import('./acorex-platform-module-auth-client-lock-screen.command-Br9O4b5c.mjs').then((c) => c.AXPLockScreenCommand),
3491
+ command: () => import('./acorex-platform-module-auth-client-lock-screen.command-DUZ255VK.mjs').then((c) => c.AXPLockScreenCommand),
3359
3492
  },
3360
3493
  {
3361
3494
  key: AXMAuthCommandKeys.Profile.ChangePhoto,
3362
- command: () => import('./acorex-platform-module-auth-client-change-photo.command-CYGqrJV0.mjs').then((c) => c.AXPChangePhotoCommand),
3495
+ command: () => import('./acorex-platform-module-auth-client-change-photo.command-DfHUPj7p.mjs').then((c) => c.AXPChangePhotoCommand),
3363
3496
  },
3364
3497
  {
3365
3498
  key: AXMAuthCommandKeys.Profile.EditAccountInfo,
@@ -3367,19 +3500,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
3367
3500
  },
3368
3501
  {
3369
3502
  key: AXMAuthCommandKeys.Security.ChangePassword,
3370
- command: () => import('./acorex-platform-module-auth-client-change-password.command-DIM_d7RO.mjs').then((c) => c.AXPChangePasswordCommand),
3503
+ command: () => import('./acorex-platform-module-auth-client-change-password.command-BcBbN5hX.mjs').then((c) => c.AXPChangePasswordCommand),
3371
3504
  },
3372
3505
  {
3373
3506
  key: AXMAuthCommandKeys.Security.SetPinCode,
3374
- command: () => import('./acorex-platform-module-auth-client-set-pin-code.command-BJT7F-xz.mjs').then((c) => c.AXPSetPinCodeCommand),
3507
+ command: () => import('./acorex-platform-module-auth-client-set-pin-code.command-C2kCGuQW.mjs').then((c) => c.AXPSetPinCodeCommand),
3375
3508
  },
3376
3509
  {
3377
3510
  key: AXMAuthCommandKeys.Security.RemovePinCode,
3378
- command: () => import('./acorex-platform-module-auth-client-remove-pin-code.command-uK04-h15.mjs').then((c) => c.AXPRemovePinCodeCommand),
3511
+ command: () => import('./acorex-platform-module-auth-client-remove-pin-code.command-DJeSHCLL.mjs').then((c) => c.AXPRemovePinCodeCommand),
3379
3512
  },
3380
3513
  {
3381
3514
  key: AXMAuthCommandKeys.Security.ViewLoginHistory,
3382
- command: () => import('./acorex-platform-module-auth-client-view-login-history.command-ovj5rdHL.mjs').then((c) => c.AXPViewLoginHistoryCommand),
3515
+ command: () => import('./acorex-platform-module-auth-client-view-login-history.command-C_T4l61M.mjs').then((c) => c.AXPViewLoginHistoryCommand),
3383
3516
  },
3384
3517
  {
3385
3518
  key: AXMAuthCommandKeys.Security.EditSignature,
@@ -3502,5 +3635,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
3502
3635
  * Generated bundle index. Do not edit.
3503
3636
  */
3504
3637
 
3505
- export { AXMUserDeviceSessionsService as A, AXMAuthenticationTypes as B, CHANGE_PASSWORD_SECTION_ID as C, AUTH_LOGIN_EXTERNAL_PROVIDERS_SLOT as D, AUTH_USER_ACTIVITY_DEFAULT_WEEKS as E, AXMAuthErrorHandler as F, AXMAuthModule as G, AXMDefaultAuthConfigs as H, AXM_AUTH_CONFIG_TOKEN as I, aggregateDailySessionCounts as J, buildUserActivityWeeks as K, canActivateLogin as L, computeUserActivityStats as M, configAuthModule as N, countToActivityLevel as O, PROFILE_PAGE_GROUPS_HOOK as P, extractUserActivityEndDate as Q, extractUserActivityStartDate as R, extractUserActivityUserId as S, isUserProfileGroupComponent as T, isUserProfileSectionsGroupRequested as U, parseAuthCredentialType as V, PROFILE_PAGE_SECTIONS_HOOK as a, PROFILE_PAGE_HEADER_META_HOOK as b, resolveUserProfileSectionContent as c, PROFILE_SECTION_INSIGHTS_PATCH_METADATA_KEY as d, PROFILE_ACTIVITY_CHART_COMPONENT_KEY as e, PROFILE_DELETE_ACCOUNT_DANGER_ZONE_COMPONENT_KEY as f, resolveDefaultUserActivityDateRange as g, buildUserActivityDataSourceItem as h, AXPIdleLockService as i, AXPUserAvatarSyncService as j, AXPAuthPasswordComplexityService as k, AXPAuthPasswordChangeTrackingService as l, getPasswordComplexityHintKey as m, getPasswordComplexityValidationMessageKey as n, validatePasswordAgainstComplexity as o, buildPasswordLastChangedInsights as p, AXPLoginHistoryService as q, resolveDefaultUserProfileSectionAction as r, AXMAuthPlatformSettingsService as s, AXM_LOGIN_GUARD_TOKEN as t, AXPTenantChooserListComponent as u, visibleUserProfileSectionActions as v, AXPTenantChooserDropdownComponent as w, AXPAppChooserListComponent as x, formatCompactActivityCount as y, AXPLoginExternalProvidersComponent as z };
3506
- //# sourceMappingURL=acorex-platform-module-auth-client-acorex-platform-module-auth-client-CYmUn-lw.mjs.map
3638
+ export { resolveDayDateRange as $, AXMUserDeviceSessionsService as A, AXPLoginExternalProvidersComponent as B, CHANGE_PASSWORD_SECTION_ID as C, AXMAuthenticationTypes as D, AUTH_LOGIN_EXTERNAL_PROVIDERS_SLOT as E, AUTH_USER_ACTIVITY_CLUSTER_GAP_DAYS as F, AUTH_USER_ACTIVITY_DEFAULT_WEEKS as G, AUTH_USER_ACTIVITY_WEEK_PRESETS as H, AXMAuthErrorHandler as I, AXMAuthModule as J, AXMDefaultAuthConfigs as K, AXM_AUTH_CONFIG_TOKEN as L, aggregateDailySessionCounts as M, aggregateHourlySessionCounts as N, buildUserActivityHours as O, PROFILE_PAGE_GROUPS_HOOK as P, buildUserActivityWeeks as Q, canActivateLogin as R, computeUserActivityStats as S, configAuthModule as T, countToActivityLevel as U, extractUserActivityEndDate as V, extractUserActivityStartDate as W, extractUserActivityUserId as X, isUserProfileGroupComponent as Y, isUserProfileSectionsGroupRequested as Z, parseAuthCredentialType as _, PROFILE_PAGE_SECTIONS_HOOK as a, resolveUserActivityHeatmapLayout as a0, PROFILE_PAGE_HEADER_META_HOOK as b, resolveUserProfileSectionContent as c, PROFILE_SECTION_INSIGHTS_PATCH_METADATA_KEY as d, PROFILE_ACTIVITY_CHART_COMPONENT_KEY as e, PROFILE_DELETE_ACCOUNT_DANGER_ZONE_COMPONENT_KEY as f, resolveDefaultUserActivityDateRange as g, resolveSmartUserActivityDateRange as h, buildUserActivityDataSourceItem as i, AXPIdleLockService as j, AXPUserAvatarSyncService as k, AXPAuthPasswordComplexityService as l, AXPAuthPasswordChangeTrackingService as m, getPasswordComplexityHintKey as n, getPasswordComplexityValidationMessageKey as o, validatePasswordAgainstComplexity as p, buildPasswordLastChangedInsights as q, resolveDefaultUserProfileSectionAction as r, AXPLoginHistoryService as s, AXMAuthPlatformSettingsService as t, AXM_LOGIN_GUARD_TOKEN as u, visibleUserProfileSectionActions as v, AXPTenantChooserListComponent as w, AXPTenantChooserDropdownComponent as x, AXPAppChooserListComponent as y, formatCompactActivityCount as z };
3639
+ //# sourceMappingURL=acorex-platform-module-auth-client-acorex-platform-module-auth-client-CPmffSrQ.mjs.map