@acorex-platform/module-auth-client 0.0.58 → 0.0.60

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/fesm2022/{acorex-platform-module-auth-client-accept-invitation.component-Ct28GG3a.mjs → acorex-platform-module-auth-client-accept-invitation.component-Bq49K_8F.mjs} +3 -3
  2. package/fesm2022/{acorex-platform-module-auth-client-accept-invitation.component-Ct28GG3a.mjs.map → acorex-platform-module-auth-client-accept-invitation.component-Bq49K_8F.mjs.map} +1 -1
  3. package/fesm2022/{acorex-platform-module-auth-client-acorex-platform-module-auth-client-CQEt9bXJ.mjs → acorex-platform-module-auth-client-acorex-platform-module-auth-client-DINrCCAx.mjs} +75 -51
  4. package/fesm2022/acorex-platform-module-auth-client-acorex-platform-module-auth-client-DINrCCAx.mjs.map +1 -0
  5. package/fesm2022/{acorex-platform-module-auth-client-app-chooser.component-SUwPTueG.mjs → acorex-platform-module-auth-client-app-chooser.component-C1fUi_Mp.mjs} +4 -4
  6. package/fesm2022/{acorex-platform-module-auth-client-app-chooser.component-SUwPTueG.mjs.map → acorex-platform-module-auth-client-app-chooser.component-C1fUi_Mp.mjs.map} +1 -1
  7. package/fesm2022/{acorex-platform-module-auth-client-change-password.command-DRwzhNlO.mjs → acorex-platform-module-auth-client-change-password.command-UvBqwF9V.mjs} +48 -23
  8. package/fesm2022/acorex-platform-module-auth-client-change-password.command-UvBqwF9V.mjs.map +1 -0
  9. package/fesm2022/{acorex-platform-module-auth-client-change-photo.command-C1Fm_MdA.mjs → acorex-platform-module-auth-client-change-photo.command-2e7ZjiEf.mjs} +2 -2
  10. package/fesm2022/{acorex-platform-module-auth-client-change-photo.command-C1Fm_MdA.mjs.map → acorex-platform-module-auth-client-change-photo.command-2e7ZjiEf.mjs.map} +1 -1
  11. package/fesm2022/{acorex-platform-module-auth-client-get-user-activity.query-CLdmidQb.mjs → acorex-platform-module-auth-client-get-user-activity.query-BGOYJ4FC.mjs} +2 -2
  12. package/fesm2022/{acorex-platform-module-auth-client-get-user-activity.query-CLdmidQb.mjs.map → acorex-platform-module-auth-client-get-user-activity.query-BGOYJ4FC.mjs.map} +1 -1
  13. package/fesm2022/{acorex-platform-module-auth-client-lock-screen.command-CHbe_N-Z.mjs → acorex-platform-module-auth-client-lock-screen.command-BOKKr6WW.mjs} +2 -2
  14. package/fesm2022/{acorex-platform-module-auth-client-lock-screen.command-CHbe_N-Z.mjs.map → acorex-platform-module-auth-client-lock-screen.command-BOKKr6WW.mjs.map} +1 -1
  15. package/fesm2022/{acorex-platform-module-auth-client-login.module-BM3L_d8i.mjs → acorex-platform-module-auth-client-login.module-gi6wea8m.mjs} +3 -3
  16. package/fesm2022/{acorex-platform-module-auth-client-login.module-BM3L_d8i.mjs.map → acorex-platform-module-auth-client-login.module-gi6wea8m.mjs.map} +1 -1
  17. package/fesm2022/{acorex-platform-module-auth-client-manage-two-factor.command-BOM6_896.mjs → acorex-platform-module-auth-client-manage-two-factor.command-DRsNZWZF.mjs} +2 -2
  18. package/fesm2022/{acorex-platform-module-auth-client-manage-two-factor.command-BOM6_896.mjs.map → acorex-platform-module-auth-client-manage-two-factor.command-DRsNZWZF.mjs.map} +1 -1
  19. package/fesm2022/{acorex-platform-module-auth-client-oauth-callback.component-BgUSFibH.mjs → acorex-platform-module-auth-client-oauth-callback.component-DLrIDQXn.mjs} +3 -3
  20. package/fesm2022/{acorex-platform-module-auth-client-oauth-callback.component-BgUSFibH.mjs.map → acorex-platform-module-auth-client-oauth-callback.component-DLrIDQXn.mjs.map} +1 -1
  21. package/fesm2022/{acorex-platform-module-auth-client-open-sessions.command-Dq9eJ-bY.mjs → acorex-platform-module-auth-client-open-sessions.command-CwWtPiTG.mjs} +5 -5
  22. package/fesm2022/{acorex-platform-module-auth-client-open-sessions.command-Dq9eJ-bY.mjs.map → acorex-platform-module-auth-client-open-sessions.command-CwWtPiTG.mjs.map} +1 -1
  23. package/fesm2022/{acorex-platform-module-auth-client-password.component-SpEVRPaE.mjs → acorex-platform-module-auth-client-password.component-CAZ3tVPG.mjs} +5 -5
  24. package/fesm2022/{acorex-platform-module-auth-client-password.component-SpEVRPaE.mjs.map → acorex-platform-module-auth-client-password.component-CAZ3tVPG.mjs.map} +1 -1
  25. package/fesm2022/{acorex-platform-module-auth-client-password.component-Ci5Wy3rO.mjs → acorex-platform-module-auth-client-password.component-CE2nXYCz.mjs} +3 -3
  26. package/fesm2022/{acorex-platform-module-auth-client-password.component-Ci5Wy3rO.mjs.map → acorex-platform-module-auth-client-password.component-CE2nXYCz.mjs.map} +1 -1
  27. package/fesm2022/{acorex-platform-module-auth-client-platform-settings-unavailable.component-LwuokJiZ.mjs → acorex-platform-module-auth-client-platform-settings-unavailable.component-BJMtsa99.mjs} +4 -4
  28. package/fesm2022/{acorex-platform-module-auth-client-platform-settings-unavailable.component-LwuokJiZ.mjs.map → acorex-platform-module-auth-client-platform-settings-unavailable.component-BJMtsa99.mjs.map} +1 -1
  29. package/fesm2022/{acorex-platform-module-auth-client-profile-activity-chart.component-DcMdz44P.mjs → acorex-platform-module-auth-client-profile-activity-chart.component-BcbVLmZo.mjs} +4 -4
  30. package/fesm2022/{acorex-platform-module-auth-client-profile-activity-chart.component-DcMdz44P.mjs.map → acorex-platform-module-auth-client-profile-activity-chart.component-BcbVLmZo.mjs.map} +1 -1
  31. package/fesm2022/{acorex-platform-module-auth-client-profile-delete-account-danger-zone.component-DTujROAP.mjs → acorex-platform-module-auth-client-profile-delete-account-danger-zone.component-Dx2-o9XL.mjs} +3 -3
  32. package/fesm2022/{acorex-platform-module-auth-client-profile-delete-account-danger-zone.component-DTujROAP.mjs.map → acorex-platform-module-auth-client-profile-delete-account-danger-zone.component-Dx2-o9XL.mjs.map} +1 -1
  33. package/fesm2022/{acorex-platform-module-auth-client-profile-page-component.provider-CelasDrw.mjs → acorex-platform-module-auth-client-profile-page-component.provider-DEVBmVKd.mjs} +4 -4
  34. package/fesm2022/{acorex-platform-module-auth-client-profile-page-component.provider-CelasDrw.mjs.map → acorex-platform-module-auth-client-profile-page-component.provider-DEVBmVKd.mjs.map} +1 -1
  35. package/fesm2022/{acorex-platform-module-auth-client-profile-page.component-iGdfjv6g.mjs → acorex-platform-module-auth-client-profile-page.component-BNYoh2IL.mjs} +7 -7
  36. package/fesm2022/{acorex-platform-module-auth-client-profile-page.component-iGdfjv6g.mjs.map → acorex-platform-module-auth-client-profile-page.component-BNYoh2IL.mjs.map} +1 -1
  37. package/fesm2022/{acorex-platform-module-auth-client-register-password.component-CaztyyPx.mjs → acorex-platform-module-auth-client-register-password.component-DArLfswX.mjs} +4 -4
  38. package/fesm2022/{acorex-platform-module-auth-client-register-password.component-CaztyyPx.mjs.map → acorex-platform-module-auth-client-register-password.component-DArLfswX.mjs.map} +1 -1
  39. package/fesm2022/{acorex-platform-module-auth-client-register.module-R-yxS0EI.mjs → acorex-platform-module-auth-client-register.module-BXMV9tp3.mjs} +4 -4
  40. package/fesm2022/{acorex-platform-module-auth-client-register.module-R-yxS0EI.mjs.map → acorex-platform-module-auth-client-register.module-BXMV9tp3.mjs.map} +1 -1
  41. package/fesm2022/{acorex-platform-module-auth-client-remove-pin-code.command-DHY46WWD.mjs → acorex-platform-module-auth-client-remove-pin-code.command-D9uLV6je.mjs} +2 -2
  42. package/fesm2022/{acorex-platform-module-auth-client-remove-pin-code.command-DHY46WWD.mjs.map → acorex-platform-module-auth-client-remove-pin-code.command-D9uLV6je.mjs.map} +1 -1
  43. package/fesm2022/{acorex-platform-module-auth-client-reset-password.component-BQfKSqpW.mjs → acorex-platform-module-auth-client-reset-password.component-Cz4UePgF.mjs} +3 -3
  44. package/fesm2022/{acorex-platform-module-auth-client-reset-password.component-BQfKSqpW.mjs.map → acorex-platform-module-auth-client-reset-password.component-Cz4UePgF.mjs.map} +1 -1
  45. package/fesm2022/{acorex-platform-module-auth-client-result.component-DuMch6Ge.mjs → acorex-platform-module-auth-client-result.component-BS5uizi6.mjs} +4 -4
  46. package/fesm2022/{acorex-platform-module-auth-client-result.component-DuMch6Ge.mjs.map → acorex-platform-module-auth-client-result.component-BS5uizi6.mjs.map} +1 -1
  47. package/fesm2022/acorex-platform-module-auth-client-routes-Dw8YhBrw.mjs +21 -0
  48. package/fesm2022/acorex-platform-module-auth-client-routes-Dw8YhBrw.mjs.map +1 -0
  49. package/fesm2022/{acorex-platform-module-auth-client-session-limit.component-Dc6TIn-2.mjs → acorex-platform-module-auth-client-session-limit.component-DH58dRba.mjs} +3 -3
  50. package/fesm2022/{acorex-platform-module-auth-client-session-limit.component-Dc6TIn-2.mjs.map → acorex-platform-module-auth-client-session-limit.component-DH58dRba.mjs.map} +1 -1
  51. package/fesm2022/{acorex-platform-module-auth-client-session-lock-overlay.component-DBJjSIOq.mjs → acorex-platform-module-auth-client-session-lock-overlay.component-D_IKdJl8.mjs} +5 -5
  52. package/fesm2022/{acorex-platform-module-auth-client-session-lock-overlay.component-DBJjSIOq.mjs.map → acorex-platform-module-auth-client-session-lock-overlay.component-D_IKdJl8.mjs.map} +1 -1
  53. package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.command-CheMeghC.mjs → acorex-platform-module-auth-client-set-pin-code.command-DRLTGXEF.mjs} +3 -3
  54. package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.command-CheMeghC.mjs.map → acorex-platform-module-auth-client-set-pin-code.command-DRLTGXEF.mjs.map} +1 -1
  55. package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.component-BWl3vLOO.mjs → acorex-platform-module-auth-client-set-pin-code.component-m7SwyaZH.mjs} +5 -5
  56. package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.component-BWl3vLOO.mjs.map → acorex-platform-module-auth-client-set-pin-code.component-m7SwyaZH.mjs.map} +1 -1
  57. package/fesm2022/{acorex-platform-module-auth-client-tenant-chooser.component-BEtlhGUb.mjs → acorex-platform-module-auth-client-tenant-chooser.component-CdqBeKVw.mjs} +4 -4
  58. package/fesm2022/{acorex-platform-module-auth-client-tenant-chooser.component-BEtlhGUb.mjs.map → acorex-platform-module-auth-client-tenant-chooser.component-CdqBeKVw.mjs.map} +1 -1
  59. package/fesm2022/acorex-platform-module-auth-client-tenant-request.component-B-qx-HIi.mjs +256 -0
  60. package/fesm2022/acorex-platform-module-auth-client-tenant-request.component-B-qx-HIi.mjs.map +1 -0
  61. package/fesm2022/{acorex-platform-module-auth-client-two-factor-code.component-4XVRgh6H.mjs → acorex-platform-module-auth-client-two-factor-code.component-B1334bPg.mjs} +4 -4
  62. package/fesm2022/{acorex-platform-module-auth-client-two-factor-code.component-4XVRgh6H.mjs.map → acorex-platform-module-auth-client-two-factor-code.component-B1334bPg.mjs.map} +1 -1
  63. package/fesm2022/{acorex-platform-module-auth-client-two-factor.module-CrLPxje1.mjs → acorex-platform-module-auth-client-two-factor.module-C0mkbR4X.mjs} +2 -2
  64. package/fesm2022/{acorex-platform-module-auth-client-two-factor.module-CrLPxje1.mjs.map → acorex-platform-module-auth-client-two-factor.module-C0mkbR4X.mjs.map} +1 -1
  65. package/fesm2022/{acorex-platform-module-auth-client-view-login-history.command-qrd0bNM9.mjs → acorex-platform-module-auth-client-view-login-history.command-CerhsvHF.mjs} +2 -2
  66. package/fesm2022/{acorex-platform-module-auth-client-view-login-history.command-qrd0bNM9.mjs.map → acorex-platform-module-auth-client-view-login-history.command-CerhsvHF.mjs.map} +1 -1
  67. package/fesm2022/acorex-platform-module-auth-client-waiting-room.component-Wu8iPiTm.mjs +327 -0
  68. package/fesm2022/acorex-platform-module-auth-client-waiting-room.component-Wu8iPiTm.mjs.map +1 -0
  69. package/fesm2022/{acorex-platform-module-auth-client-welcome-onboarding-page.component-3yva-FyV.mjs → acorex-platform-module-auth-client-welcome-onboarding-page.component-BKqHYkv2.mjs} +5 -5
  70. package/fesm2022/{acorex-platform-module-auth-client-welcome-onboarding-page.component-3yva-FyV.mjs.map → acorex-platform-module-auth-client-welcome-onboarding-page.component-BKqHYkv2.mjs.map} +1 -1
  71. package/fesm2022/{acorex-platform-module-auth-client-welcome-onboarding.command-CFpMZAwC.mjs → acorex-platform-module-auth-client-welcome-onboarding.command--Rr0duJS.mjs} +2 -2
  72. package/fesm2022/{acorex-platform-module-auth-client-welcome-onboarding.command-CFpMZAwC.mjs.map → acorex-platform-module-auth-client-welcome-onboarding.command--Rr0duJS.mjs.map} +1 -1
  73. package/fesm2022/acorex-platform-module-auth-client.mjs +1 -1
  74. package/i18n/en-AU/auth.json +70 -5
  75. package/i18n/en-US/auth.json +70 -5
  76. package/i18n/fa-IR/auth.json +70 -5
  77. package/package.json +3 -2
  78. package/fesm2022/acorex-platform-module-auth-client-acorex-platform-module-auth-client-CQEt9bXJ.mjs.map +0 -1
  79. package/fesm2022/acorex-platform-module-auth-client-change-password.command-DRwzhNlO.mjs.map +0 -1
  80. package/fesm2022/acorex-platform-module-auth-client-routes-90eFjxx8.mjs +0 -17
  81. package/fesm2022/acorex-platform-module-auth-client-routes-90eFjxx8.mjs.map +0 -1
  82. package/fesm2022/acorex-platform-module-auth-client-waiting-room.component-IAVIt1fY.mjs +0 -165
  83. package/fesm2022/acorex-platform-module-auth-client-waiting-room.component-IAVIt1fY.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-auth-client-welcome-onboarding-page.component-3yva-FyV.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-BKqHYkv2.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-CQEt9bXJ.mjs';
7
+ import { u as AXPWelcomeOnboardingFlowService } from './acorex-platform-module-auth-client-acorex-platform-module-auth-client-DINrCCAx.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-CFpMZAwC.mjs.map
59
+ //# sourceMappingURL=acorex-platform-module-auth-client-welcome-onboarding.command--Rr0duJS.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-auth-client-welcome-onboarding.command-CFpMZAwC.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--Rr0duJS.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 { 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-CQEt9bXJ.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-DINrCCAx.mjs';
2
2
  //# sourceMappingURL=acorex-platform-module-auth-client.mjs.map
@@ -195,7 +195,8 @@
195
195
  },
196
196
  "insights": {
197
197
  "last-changed": "Last changed",
198
- "never-changed": "Never changed"
198
+ "never-changed": "Never changed",
199
+ "not-set": "Not set"
199
200
  }
200
201
  },
201
202
  "security-pin": {
@@ -372,7 +373,8 @@
372
373
  },
373
374
  "change-password": {
374
375
  "dialog": {
375
- "title": "Change Password"
376
+ "title": "Change Password",
377
+ "set-title": "Set Password"
376
378
  },
377
379
  "fields": {
378
380
  "current-password": {
@@ -391,10 +393,12 @@
391
393
  }
392
394
  },
393
395
  "actions": {
394
- "submit": "Change Password"
396
+ "submit": "Change Password",
397
+ "set-submit": "Set Password"
395
398
  },
396
399
  "messages": {
397
400
  "success": "Your password was changed successfully.",
401
+ "set-success": "Your password was set successfully.",
398
402
  "incorrect-current": "The current password is incorrect.",
399
403
  "mismatch": "New password and confirmation do not match.",
400
404
  "same-as-current": "Choose a password that is different from your current one.",
@@ -803,6 +807,50 @@
803
807
  "description": "Unable to send a password reset email. Please try again later."
804
808
  }
805
809
  },
810
+ "tenant-request": {
811
+ "title": "Let's Start with the Basic Details",
812
+ "hint": "Use a permanent address where you can receive mail.",
813
+ "submit": "Send Request",
814
+ "checking-name": "Checking name availability…",
815
+ "fields": {
816
+ "company-name": "Company Name",
817
+ "company-name-hint": "Please do not use symbols in Company Name.",
818
+ "plan": "Subscription Plan",
819
+ "plan-placeholder": "Select a plan…",
820
+ "email": "Email",
821
+ "confirm-email": "Confirm Email",
822
+ "phone": "Business Phone Number",
823
+ "street1": "Street Address",
824
+ "postal-code": "Post Code"
825
+ },
826
+ "extra": {
827
+ "first-name": "First Name",
828
+ "last-name": "Last Name",
829
+ "mobile-phone": "Mobile Phone Number",
830
+ "suburb": "Suburb",
831
+ "state": "State",
832
+ "country": "Country",
833
+ "country-options": {
834
+ "australia": "Australia",
835
+ "new-zealand": "New Zealand",
836
+ "other": "Other"
837
+ },
838
+ "referral-code": "Referral Code",
839
+ "terms-accepted": "Terms Accepted",
840
+ "terms-label": "By ticking this box you agree to the Purchase Terms, Terms and Conditions and Privacy Statement."
841
+ },
842
+ "success": {
843
+ "title": "Request Submitted",
844
+ "description": "We received your request. You will get an email when it is reviewed."
845
+ },
846
+ "error": {
847
+ "title": "Request Failed",
848
+ "description": "Unable to submit your request. Please try again later.",
849
+ "name-taken": "This organisation name is already taken. Please choose another.",
850
+ "email-mismatch": "Email and confirm email do not match.",
851
+ "terms-required": "Please accept the terms to continue."
852
+ }
853
+ },
806
854
  "reset-password": {
807
855
  "title": "Set New Password",
808
856
  "hint": "Choose a new password for your account.",
@@ -1017,12 +1065,29 @@
1017
1065
  },
1018
1066
  "waiting-room": {
1019
1067
  "title": "Waiting Room",
1020
- "description": "You are signed in, but you are not a member of any organization yet. Review pending invitations below.",
1068
+ "description": "You are signed in, but you are not a member of any organization yet. Request membership below, or review pending invitations.",
1021
1069
  "membership-invite": {
1022
1070
  "title": "New Organization Invitation",
1023
1071
  "description": "You have been invited to join another organization. Accept or decline the invitation below."
1024
1072
  },
1025
1073
  "empty": "You have no pending invitations right now.",
1074
+ "join-request": {
1075
+ "heading": "Request Membership",
1076
+ "help": "Enter the organisation's name or title exactly. Matching is not case-sensitive. It is checked when you send the request.",
1077
+ "unique-name": "Organisation Name",
1078
+ "placeholder": "Type the organisation name",
1079
+ "submit": "Send Request",
1080
+ "pending-heading": "Pending Requests",
1081
+ "cancel": "Cancel Request",
1082
+ "submit-success": "Membership request sent. An administrator will review it.",
1083
+ "submit-failed": "Could not send the membership request.",
1084
+ "errors": {
1085
+ "already-member": "You are already a member of this organisation.",
1086
+ "invite-pending": "You already have a pending invitation for this organisation.",
1087
+ "not-found": "No organisation matches that name.",
1088
+ "not-pending": "This membership request is no longer pending."
1089
+ }
1090
+ },
1026
1091
  "set-password-title": "Set Password",
1027
1092
  "set-password-message": "Choose a password to activate your account (min 6 characters).",
1028
1093
  "accept-success": "Invitation accepted. Choose a tenant to continue.",
@@ -1036,7 +1101,7 @@
1036
1101
  "back": "Back"
1037
1102
  },
1038
1103
  "invitations-heading": "Pending Invitations",
1039
- "expires-at": "Expires"
1104
+ "expires-at": "Expires: {{datetime}}"
1040
1105
  },
1041
1106
  "accept-invitation": {
1042
1107
  "title": "Accept Invitation",