@memberjunction/ng-explorer-core 5.48.0 → 5.49.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/generated/lazy-feature-config.d.ts +1 -1
- package/dist/generated/lazy-feature-config.d.ts.map +1 -1
- package/dist/generated/lazy-feature-config.js +6 -2
- package/dist/generated/lazy-feature-config.js.map +1 -1
- package/dist/lib/omnibar/omnibar-palette.component.d.ts.map +1 -1
- package/dist/lib/omnibar/omnibar-palette.component.js +11 -2
- package/dist/lib/omnibar/omnibar-palette.component.js.map +1 -1
- package/dist/lib/profile/profile-dialog.component.d.ts +17 -0
- package/dist/lib/profile/profile-dialog.component.d.ts.map +1 -1
- package/dist/lib/profile/profile-dialog.component.js +141 -5
- package/dist/lib/profile/profile-dialog.component.js.map +1 -1
- package/dist/lib/shell/shell.component.d.ts +14 -8
- package/dist/lib/shell/shell.component.d.ts.map +1 -1
- package/dist/lib/shell/shell.component.js +264 -210
- package/dist/lib/shell/shell.component.js.map +1 -1
- package/dist/lib/single-list-detail/single-list-detail.component.d.ts.map +1 -1
- package/dist/lib/single-list-detail/single-list-detail.component.js +10 -7
- package/dist/lib/single-list-detail/single-list-detail.component.js.map +1 -1
- package/package.json +52 -50
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile-dialog.component.js","sourceRoot":"","sources":["../../../src/lib/profile/profile-dialog.component.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ChangeDetectorRef,\n inject\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UserRoleInfo } from '@memberjunction/core';\nimport { UUIDsEqual } from '@memberjunction/global';\nimport {\n MJUserNotificationPreferenceEntity,\n UserInfoEngine\n} from '@memberjunction/core-entities';\nimport { MJAuthBase } from '@memberjunction/ng-auth-services';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nimport { ThemeService, SharedService, ThemeDefinition } from '@memberjunction/ng-shared';\nimport { ExplorerSettingsModule } from '@memberjunction/ng-explorer-settings';\nimport { IsOmnibarAvailable, IsOmnibarEnabledForUser, OMNIBAR_USER_SETTING_KEY } from '../omnibar/omnibar-user-setting';\nimport { GetOmnibarShortcutLabel } from '../omnibar/omnibar-shortcut';\nimport { Subscription } from 'rxjs';\n\ninterface NotificationChannel {\n key: 'InApp' | 'Email' | 'SMS';\n label: string;\n icon: string;\n enabled: boolean;\n saving: boolean;\n}\n\ntype ProfilePanel = 'none' | 'photo' | 'theme';\n\n/**\n * \"Identity Card\" profile dialog with slide-in detail panels for editing\n * profile photo and switching theme. Replaces the legacy multi-tab Settings\n * dialog entirely. Brand-aligned with the About dialog.\n */\n@Component({\n selector: 'mj-profile-dialog',\n standalone: true,\n imports: [CommonModule, ExplorerSettingsModule],\n template: `\n<div class=\"mj-profile\" [class.mj-profile--panel-open]=\"ActivePanel !== 'none'\" role=\"document\">\n <button class=\"mj-profile__close\" type=\"button\" aria-label=\"Close\" (click)=\"OnCloseClick()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n\n <!-- ===== MAIN VIEW ===== -->\n <div class=\"mj-profile__main\">\n <div class=\"mj-profile__hero\">\n <h3 class=\"mj-profile__hero-title\">My Profile</h3>\n </div>\n\n <div class=\"mj-profile__avatar-zone\">\n @if (AvatarUrl) {\n <img class=\"mj-profile__avatar mj-profile__avatar--img\"\n [src]=\"AvatarUrl\" alt=\"\" (error)=\"OnAvatarLoadError()\" />\n } @else if (AvatarIconClass) {\n <div class=\"mj-profile__avatar mj-profile__avatar--icon\">\n <i [class]=\"AvatarIconClass\"></i>\n </div>\n } @else {\n <div class=\"mj-profile__avatar\">{{ UserInitials }}</div>\n }\n <button class=\"mj-profile__avatar-edit\" type=\"button\" title=\"Change photo\"\n (click)=\"OpenPanel('photo')\">\n <i class=\"fa-solid fa-camera\"></i>\n </button>\n </div>\n\n <div class=\"mj-profile__identity\">\n <h2 class=\"mj-profile__name\">{{ UserName }}</h2>\n <p class=\"mj-profile__email\">{{ UserEmail }}</p>\n @if (RoleChips.length > 0) {\n <div class=\"mj-profile__chips\">\n @for (chip of RoleChips; track chip.label) {\n <span class=\"mj-profile__chip\" [class]=\"'mj-profile__chip--' + chip.tone\">\n @if (chip.icon) { <i [class]=\"chip.icon\"></i> }\n {{ chip.label }}\n </span>\n }\n </div>\n }\n </div>\n\n <div class=\"mj-profile__field-list\">\n <div class=\"mj-profile__field\">\n <div class=\"mj-profile__field-icon\"><i class=\"fa-solid fa-id-badge\"></i></div>\n <div class=\"mj-profile__field-body\">\n <div class=\"mj-profile__field-label\">Account</div>\n <div class=\"mj-profile__field-value\">\n {{ AccountType }} · {{ AccountStatus }}\n @if (MemberSince) {\n <span class=\"mj-profile__field-muted\"> · {{ MemberSince }}</span>\n }\n </div>\n </div>\n </div>\n\n <button class=\"mj-profile__field mj-profile__field--button\" type=\"button\" (click)=\"OpenPanel('theme')\">\n <div class=\"mj-profile__field-icon\"><i class=\"fa-solid fa-palette\"></i></div>\n <div class=\"mj-profile__field-body\">\n <div class=\"mj-profile__field-label\">Theme</div>\n <div class=\"mj-profile__field-value\">{{ ThemeLabel }}</div>\n </div>\n <i class=\"fa-solid fa-chevron-right mj-profile__field-chev\"></i>\n </button>\n </div>\n\n @if (OmnibarAvailable) {\n <div class=\"mj-profile__section\">\n <div class=\"mj-profile__section-head\">\n <h4>Command Palette</h4>\n </div>\n <div class=\"mj-profile__channels\">\n <button type=\"button\"\n class=\"mj-profile__channel\"\n data-testid=\"omnibar-toggle\"\n [class.mj-profile__channel--on]=\"OmnibarEnabled\"\n [disabled]=\"SavingOmnibar\"\n (click)=\"ToggleOmnibar()\">\n <div class=\"mj-profile__channel-icon\"><i class=\"fa-solid fa-magnifying-glass\"></i></div>\n <div class=\"mj-profile__channel-label\">\n Unified command palette\n <div class=\"mj-profile__channel-hint\">{{ OmnibarShortcutLabel }} — search, records, agents & commands in one bar</div>\n </div>\n <div class=\"mj-profile__channel-state\">\n @if (SavingOmnibar) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n } @else {\n <span class=\"mj-profile__switch\" [class.mj-profile__switch--on]=\"OmnibarEnabled\">\n <span class=\"mj-profile__switch-knob\"></span>\n </span>\n }\n </div>\n </button>\n </div>\n </div>\n }\n\n <div class=\"mj-profile__section\">\n <div class=\"mj-profile__section-head\">\n <h4>Notifications</h4>\n @if (UnreadCount > 0) {\n <span class=\"mj-profile__unread\">{{ UnreadCount }} unread</span>\n }\n </div>\n @if (LoadingNotifications) {\n <div class=\"mj-profile__channels-loading\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Loading…\n </div>\n } @else {\n <div class=\"mj-profile__channels\">\n @for (ch of Channels; track ch.key) {\n <button type=\"button\"\n class=\"mj-profile__channel\"\n [class.mj-profile__channel--on]=\"ch.enabled\"\n [disabled]=\"ch.saving\"\n (click)=\"ToggleChannel(ch)\">\n <div class=\"mj-profile__channel-icon\"><i [class]=\"ch.icon\"></i></div>\n <div class=\"mj-profile__channel-label\">{{ ch.label }}</div>\n <div class=\"mj-profile__channel-state\">\n @if (ch.saving) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n } @else {\n <span class=\"mj-profile__switch\" [class.mj-profile__switch--on]=\"ch.enabled\">\n <span class=\"mj-profile__switch-knob\"></span>\n </span>\n }\n </div>\n </button>\n }\n </div>\n }\n </div>\n\n <div class=\"mj-profile__footer\">\n <button class=\"mj-profile__btn mj-profile__btn--danger\" type=\"button\" (click)=\"OnSignOut()\">\n <i class=\"fa-solid fa-arrow-right-from-bracket\"></i>\n Sign out\n </button>\n <span class=\"mj-profile__spacer\"></span>\n <button class=\"mj-profile__btn mj-profile__btn--primary\" type=\"button\" (click)=\"OnCloseClick()\">\n Done\n </button>\n </div>\n </div>\n\n <!-- ===== SLIDE-IN PANEL ===== -->\n <div class=\"mj-profile__panel\" [class.mj-profile__panel--open]=\"ActivePanel !== 'none'\">\n <div class=\"mj-profile__panel-header\">\n <button class=\"mj-profile__panel-back\" type=\"button\" aria-label=\"Back\" (click)=\"ClosePanel()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </button>\n <h3 class=\"mj-profile__panel-title\">{{ PanelTitle }}</h3>\n </div>\n <div class=\"mj-profile__panel-body\">\n @if (ActivePanel === 'photo') {\n <mj-user-profile-settings></mj-user-profile-settings>\n } @else if (ActivePanel === 'theme') {\n <div class=\"mj-profile__themes\">\n @for (theme of ThemeOptions; track theme.id) {\n <button type=\"button\"\n class=\"mj-profile__theme\"\n [class.mj-profile__theme--active]=\"theme.id === ThemePreference\"\n [class.mj-profile__theme--saving]=\"SavingTheme === theme.id\"\n [disabled]=\"!!SavingTheme\"\n (click)=\"SelectTheme(theme.id)\">\n <div class=\"mj-profile__theme-swatch\" [class]=\"'mj-profile__theme-swatch--' + theme.swatch\">\n <i [class]=\"theme.icon\"></i>\n </div>\n <div class=\"mj-profile__theme-info\">\n <div class=\"mj-profile__theme-name\">{{ theme.name }}</div>\n @if (theme.description) {\n <div class=\"mj-profile__theme-desc\">{{ theme.description }}</div>\n }\n </div>\n @if (SavingTheme === theme.id) {\n <i class=\"fa-solid fa-spinner fa-spin mj-profile__theme-check\"></i>\n } @else if (theme.id === ThemePreference) {\n <i class=\"fa-solid fa-check mj-profile__theme-check\"></i>\n }\n </button>\n }\n </div>\n }\n </div>\n </div>\n</div>\n `,\n styles: [`\n:host {\n display: block;\n width: 100%;\n height: 100%;\n}\n.mj-profile {\n display: block;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n height: 100%;\n min-height: 0;\n position: relative;\n font-family: inherit;\n overflow: hidden;\n}\n.mj-profile__close {\n position: absolute;\n top: 12px; right: 12px;\n width: 36px; height: 36px;\n border: none; border-radius: 8px;\n background: rgba(255, 255, 255, 0.18);\n backdrop-filter: blur(8px);\n color: #fff;\n cursor: pointer;\n font-size: 16px;\n display: flex; align-items: center; justify-content: center;\n transition: background 0.15s, opacity 0.2s;\n z-index: 4;\n}\n.mj-profile__close:hover { background: rgba(255, 255, 255, 0.3); }\n.mj-profile--panel-open .mj-profile__close { opacity: 0; pointer-events: none; }\n\n/* ============ MAIN VIEW ============ */\n.mj-profile__main {\n display: flex;\n flex-direction: column;\n height: 100%;\n transition: transform 0.32s cubic-bezier(0.4, 0, 0.2, 1);\n}\n.mj-profile--panel-open .mj-profile__main {\n transform: translateX(-12%);\n pointer-events: none;\n}\n\n.mj-profile__hero {\n background: linear-gradient(135deg, #264FAF 0%, #0076b6 100%);\n color: #fff;\n padding: 22px 24px 56px;\n position: relative;\n overflow: hidden;\n flex-shrink: 0;\n}\n.mj-profile__hero::before {\n content: '';\n position: absolute;\n inset: -50%;\n background: radial-gradient(circle, rgba(255, 255, 255, 0.10) 0%, transparent 60%);\n animation: mj-profile-rotate 24s linear infinite;\n pointer-events: none;\n}\n@media (prefers-reduced-motion: reduce) {\n .mj-profile__hero::before { animation: none; }\n}\n@keyframes mj-profile-rotate { to { transform: rotate(360deg); } }\n\n.mj-profile__hero-title {\n margin: 0;\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 1.2px;\n opacity: 0.85;\n position: relative;\n z-index: 1;\n}\n\n.mj-profile__avatar-zone {\n position: relative;\n width: 96px;\n height: 96px;\n margin: -48px auto 12px;\n z-index: 2;\n}\n.mj-profile__avatar {\n width: 96px;\n height: 96px;\n border-radius: 50%;\n background: linear-gradient(135deg, #264FAF 0%, #0076b6 100%);\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 32px;\n font-weight: 700;\n border: 4px solid var(--mj-bg-surface);\n box-shadow: 0 6px 20px rgba(0, 0, 0, 0.18);\n object-fit: cover;\n overflow: hidden;\n}\nimg.mj-profile__avatar { background: var(--mj-bg-surface-card); }\n.mj-profile__avatar--icon i { font-size: 36px; }\n\n.mj-profile__avatar-edit {\n position: absolute;\n bottom: 2px; right: 2px;\n width: 30px; height: 30px;\n border-radius: 50%;\n background: var(--mj-bg-surface);\n color: var(--mj-brand-primary);\n border: 2px solid var(--mj-bg-surface);\n cursor: pointer;\n display: flex; align-items: center; justify-content: center;\n font-size: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.18);\n transition: transform 0.15s;\n}\n.mj-profile__avatar-edit:hover { transform: scale(1.1); }\n\n.mj-profile__identity {\n text-align: center;\n padding: 0 24px 16px;\n flex-shrink: 0;\n}\n.mj-profile__name {\n margin: 0 0 4px;\n font-size: 22px;\n font-weight: 700;\n letter-spacing: -0.4px;\n color: var(--mj-text-primary);\n}\n.mj-profile__email {\n margin: 0 0 12px;\n color: var(--mj-text-muted);\n font-size: 13px;\n word-break: break-all;\n}\n.mj-profile__chips {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n justify-content: center;\n}\n.mj-profile__chip {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 9px;\n border-radius: 100px;\n font-size: 11px;\n font-weight: 600;\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n color: var(--mj-brand-primary);\n}\n.mj-profile__chip--admin {\n background: color-mix(in srgb, #f59e0b 14%, transparent);\n color: #b45309;\n}\n.mj-profile__chip--dev {\n background: color-mix(in srgb, #10b981 14%, transparent);\n color: #047857;\n}\n\n.mj-profile__field-list {\n padding: 0 24px;\n flex-shrink: 0;\n}\n.mj-profile__field {\n display: flex;\n align-items: center;\n padding: 12px 0;\n gap: 14px;\n border-top: 1px solid var(--mj-border-subtle);\n width: 100%;\n text-align: left;\n background: transparent;\n border-left: none;\n border-right: none;\n border-bottom: none;\n font-family: inherit;\n color: inherit;\n}\n.mj-profile__field:first-child { border-top: none; }\n.mj-profile__field--button {\n cursor: pointer;\n transition: background 0.12s;\n margin: 0 -8px;\n padding-left: 8px;\n padding-right: 8px;\n border-radius: 8px;\n border-top: none;\n}\n.mj-profile__field--button + .mj-profile__field--button { margin-top: 0; }\n.mj-profile__field--button:hover { background: var(--mj-bg-surface-hover); }\n.mj-profile__field--button:hover .mj-profile__field-chev { color: var(--mj-brand-primary); }\n.mj-profile__field-icon {\n width: 32px; height: 32px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 8px;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n flex-shrink: 0;\n}\n.mj-profile__field-body { flex: 1; min-width: 0; }\n.mj-profile__field-label {\n font-size: 10.5px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n font-weight: 600;\n letter-spacing: 0.5px;\n}\n.mj-profile__field-value {\n font-size: 13px;\n color: var(--mj-text-primary);\n margin-top: 2px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.mj-profile__field-muted { color: var(--mj-text-muted); }\n.mj-profile__field-chev {\n color: var(--mj-text-muted);\n font-size: 11px;\n transition: color 0.15s;\n}\n\n.mj-profile__section {\n padding: 16px 24px 8px;\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n}\n.mj-profile__section-head {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 10px;\n}\n.mj-profile__section-head h4 {\n margin: 0;\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.6px;\n}\n.mj-profile__unread {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n padding: 2px 8px;\n border-radius: 100px;\n}\n.mj-profile__channels-loading {\n color: var(--mj-text-muted);\n font-size: 12.5px;\n padding: 12px;\n text-align: center;\n}\n.mj-profile__channels {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.mj-profile__channel {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-subtle);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.15s;\n font-family: inherit;\n text-align: left;\n width: 100%;\n}\n.mj-profile__channel:hover:not(:disabled) {\n border-color: var(--mj-border-default);\n background: var(--mj-bg-surface-hover);\n}\n.mj-profile__channel:disabled { cursor: wait; opacity: 0.7; }\n.mj-profile__channel-icon {\n width: 32px; height: 32px;\n border-radius: 8px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n display: flex; align-items: center; justify-content: center;\n font-size: 13px;\n flex-shrink: 0;\n transition: all 0.15s;\n}\n.mj-profile__channel--on .mj-profile__channel-icon {\n background: color-mix(in srgb, var(--mj-brand-primary) 14%, transparent);\n color: var(--mj-brand-primary);\n}\n.mj-profile__channel-label {\n flex: 1;\n font-size: 13.5px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n.mj-profile__channel-hint {\n font-size: 11.5px;\n font-weight: 400;\n color: var(--mj-text-muted);\n margin-top: 2px;\n}\n.mj-profile__channel-state {\n flex-shrink: 0;\n color: var(--mj-text-muted);\n font-size: 13px;\n min-width: 36px;\n display: flex; justify-content: flex-end; align-items: center;\n}\n\n.mj-profile__switch {\n width: 36px;\n height: 20px;\n background: var(--mj-border-strong);\n border-radius: 100px;\n position: relative;\n transition: background 0.2s;\n display: inline-block;\n}\n.mj-profile__switch-knob {\n position: absolute;\n top: 2px; left: 2px;\n width: 16px; height: 16px;\n background: white;\n border-radius: 50%;\n transition: transform 0.2s;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n}\n.mj-profile__switch--on { background: var(--mj-brand-primary); }\n.mj-profile__switch--on .mj-profile__switch-knob { transform: translateX(16px); }\n\n.mj-profile__footer {\n border-top: 1px solid var(--mj-border-subtle);\n padding: 14px 20px;\n display: flex;\n gap: 8px;\n align-items: center;\n flex-shrink: 0;\n}\n.mj-profile__spacer { flex: 1; }\n.mj-profile__btn {\n padding: 9px 16px;\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n font-family: inherit;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n transition: all 0.15s;\n}\n.mj-profile__btn:hover { background: var(--mj-bg-surface-hover); border-color: var(--mj-border-strong); }\n.mj-profile__btn--primary {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n}\n.mj-profile__btn--primary:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 88%, black);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 88%, black);\n}\n.mj-profile__btn--danger {\n color: var(--mj-status-error);\n border-color: color-mix(in srgb, var(--mj-status-error) 30%, var(--mj-border-default));\n}\n.mj-profile__btn--danger:hover {\n background: color-mix(in srgb, var(--mj-status-error) 8%, transparent);\n border-color: var(--mj-status-error);\n}\n\n/* ============ SLIDE-IN PANEL ============ */\n.mj-profile__panel {\n position: absolute;\n inset: 0;\n background: var(--mj-bg-surface);\n transform: translateX(100%);\n transition: transform 0.32s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n flex-direction: column;\n z-index: 3;\n}\n.mj-profile__panel--open {\n transform: translateX(0);\n box-shadow: -8px 0 24px rgba(0, 0, 0, 0.06);\n}\n.mj-profile__panel-header {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 14px 18px;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface-card);\n flex-shrink: 0;\n}\n.mj-profile__panel-back {\n width: 34px; height: 34px;\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n cursor: pointer;\n display: flex; align-items: center; justify-content: center;\n font-size: 13px;\n transition: all 0.15s;\n font-family: inherit;\n}\n.mj-profile__panel-back:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n.mj-profile__panel-title {\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n letter-spacing: -0.2px;\n}\n.mj-profile__panel-body {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n padding: 16px 20px 20px;\n}\n\n/* Theme picker */\n.mj-profile__themes {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.mj-profile__theme {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 12px 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-subtle);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.15s;\n text-align: left;\n width: 100%;\n font-family: inherit;\n}\n.mj-profile__theme:hover:not(:disabled) {\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-hover);\n}\n.mj-profile__theme:disabled { cursor: wait; opacity: 0.7; }\n.mj-profile__theme--active {\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface-card));\n}\n.mj-profile__theme-swatch {\n width: 40px; height: 40px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 16px;\n flex-shrink: 0;\n border: 1px solid var(--mj-border-default);\n}\n.mj-profile__theme-swatch--light {\n background: linear-gradient(135deg, #ffffff 0%, #f1f5f9 100%);\n color: #f59e0b;\n}\n.mj-profile__theme-swatch--dark {\n background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%);\n color: #94a3b8;\n border-color: #334155;\n}\n.mj-profile__theme-swatch--system {\n background: linear-gradient(135deg, #ffffff 0%, #ffffff 49%, #1e293b 51%, #0f172a 100%);\n color: var(--mj-text-secondary);\n}\n.mj-profile__theme-info { flex: 1; min-width: 0; }\n.mj-profile__theme-name {\n font-size: 13.5px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n.mj-profile__theme-desc {\n font-size: 11.5px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.mj-profile__theme-check {\n color: var(--mj-brand-primary);\n font-size: 14px;\n flex-shrink: 0;\n}\n\n@media (max-width: 480px) {\n .mj-profile__hero { padding: 20px 18px 48px; }\n .mj-profile__avatar-zone { width: 88px; height: 88px; margin-top: -44px; }\n .mj-profile__avatar { width: 88px; height: 88px; font-size: 28px; }\n .mj-profile__name { font-size: 19px; }\n .mj-profile__field-list,\n .mj-profile__section { padding-left: 18px; padding-right: 18px; }\n .mj-profile__footer { padding: 12px 16px; }\n .mj-profile--panel-open .mj-profile__main { transform: translateX(-20%); }\n .mj-profile__panel-body { padding: 14px 16px 16px; }\n}\n `]\n})\nexport class ProfileDialogComponent extends BaseAngularComponent implements OnInit, OnDestroy {\n @Output() CloseRequested = new EventEmitter<void>();\n\n @Input() AvatarUrl: string | null = null;\n @Input() AvatarIconClass: string | null = null;\n\n public UserName = '';\n public UserEmail = '';\n public UserInitials = '?';\n public AccountType = '';\n public AccountStatus = '';\n public MemberSince = '';\n public ThemeLabel = '';\n public RoleChips: Array<{ label: string; tone: string; icon: string | null }> = [];\n\n public LoadingNotifications = true;\n public Channels: NotificationChannel[] = [\n { key: 'InApp', label: 'In-app', icon: 'fa-solid fa-bell', enabled: false, saving: false },\n { key: 'Email', label: 'Email', icon: 'fa-solid fa-envelope', enabled: false, saving: false },\n { key: 'SMS', label: 'SMS', icon: 'fa-solid fa-mobile', enabled: false, saving: false }\n ];\n public UnreadCount = 0;\n\n // Omnibar per-user opt-in (shown only when the instance makes it available)\n public OmnibarAvailable = false;\n public OmnibarEnabled = false;\n public SavingOmnibar = false;\n\n /** Platform-correct summon-shortcut label ('⌘K' on Mac, 'Ctrl+K' elsewhere). */\n public get OmnibarShortcutLabel(): string {\n return GetOmnibarShortcutLabel();\n }\n\n // Slide-in panel state\n public ActivePanel: ProfilePanel = 'none';\n public ThemeOptions: Array<{ id: string; name: string; description: string; icon: string; swatch: 'light' | 'dark' | 'system' }> = [];\n public ThemePreference = '';\n public SavingTheme: string | null = null;\n\n public get PanelTitle(): string {\n switch (this.ActivePanel) {\n case 'photo': return 'Profile photo';\n case 'theme': return 'Theme';\n default: return '';\n }\n }\n\n private authBase = inject(MJAuthBase);\n private themeService = inject(ThemeService);\n private sharedService = inject(SharedService);\n private cdr = inject(ChangeDetectorRef);\n\n private themeSub?: Subscription;\n\n public ngOnInit(): void {\n this.populateIdentity();\n this.populateThemeOptions();\n this.loadNotifications();\n this.OmnibarAvailable = IsOmnibarAvailable();\n this.OmnibarEnabled = IsOmnibarEnabledForUser();\n this.themeSub = this.themeService.Preference$.subscribe(pref => {\n this.ThemePreference = pref;\n this.ThemeLabel = this.computeThemeLabel();\n this.cdr.markForCheck();\n });\n }\n\n public ngOnDestroy(): void {\n this.themeSub?.unsubscribe();\n }\n\n public OnCloseClick(): void {\n if (this.ActivePanel !== 'none') {\n this.ClosePanel();\n return;\n }\n this.CloseRequested.emit();\n }\n\n public OnAvatarLoadError(): void {\n this.AvatarUrl = null;\n this.cdr.markForCheck();\n }\n\n public OpenPanel(panel: ProfilePanel): void {\n this.ActivePanel = panel;\n }\n\n public ClosePanel(): void {\n this.ActivePanel = 'none';\n }\n\n public async OnSignOut(): Promise<void> {\n try {\n localStorage.removeItem('auth');\n localStorage.removeItem('claims');\n await this.authBase.logout();\n } catch (err) {\n const msg = err instanceof Error ? err.message : 'Unknown error';\n this.sharedService.CreateSimpleNotification(`Sign out failed: ${msg}`, 'error', 3000);\n }\n }\n\n public async SelectTheme(themeId: string): Promise<void> {\n if (this.SavingTheme) return;\n if (themeId === this.ThemePreference) return;\n this.SavingTheme = themeId;\n this.cdr.markForCheck();\n try {\n await this.themeService.SetTheme(themeId);\n } catch (err) {\n const msg = err instanceof Error ? err.message : 'Unknown error';\n this.sharedService.CreateSimpleNotification(`Theme change failed: ${msg}`, 'error', 3000);\n } finally {\n this.SavingTheme = null;\n this.cdr.markForCheck();\n }\n }\n\n /**\n * Per-user omnibar opt-in/out. Persists via UserInfoEngine (MJ: User\n * Settings) so the choice follows the user across browsers/devices. The\n * shell reads the same setting on every change-detection pass, so the\n * header affordance and Ctrl+K behavior flip live — no reload needed.\n */\n public async ToggleOmnibar(): Promise<void> {\n if (this.SavingOmnibar) return;\n const next = !this.OmnibarEnabled;\n this.SavingOmnibar = true;\n this.cdr.markForCheck();\n try {\n const saved = await UserInfoEngine.Instance.SetSetting(OMNIBAR_USER_SETTING_KEY, String(next));\n if (saved) {\n this.OmnibarEnabled = next;\n } else {\n this.sharedService.CreateSimpleNotification('Could not save the command palette preference', 'error', 3000);\n }\n } finally {\n this.SavingOmnibar = false;\n this.cdr.markForCheck();\n }\n }\n\n public async ToggleChannel(channel: NotificationChannel): Promise<void> {\n if (channel.saving) return;\n const newState = !channel.enabled;\n channel.saving = true;\n this.cdr.markForCheck();\n\n const provider = this.ProviderToUse;\n const currentUser = provider?.CurrentUser;\n if (!provider || !currentUser) {\n channel.saving = false;\n return;\n }\n\n try {\n const transGroup = await provider.CreateTransactionGroup();\n const types = UserInfoEngine.Instance.NotificationTypes;\n const preferences = UserInfoEngine.Instance.NotificationPreferences;\n\n for (const type of types) {\n if (type.AllowUserPreference === false) continue;\n\n let pref = preferences.find(p => UUIDsEqual(p.NotificationTypeID, type.ID));\n if (!pref) {\n pref = await provider.GetEntityObject<MJUserNotificationPreferenceEntity>(\n 'MJ: User Notification Preferences'\n );\n pref.UserID = currentUser.ID;\n pref.NotificationTypeID = type.ID;\n pref.InAppEnabled = type.DefaultInApp ?? true;\n pref.EmailEnabled = type.DefaultEmail ?? false;\n pref.SMSEnabled = type.DefaultSMS ?? false;\n }\n\n if (channel.key === 'InApp') pref.InAppEnabled = newState;\n else if (channel.key === 'Email') pref.EmailEnabled = newState;\n else pref.SMSEnabled = newState;\n\n pref.Enabled = pref.InAppEnabled || pref.EmailEnabled || pref.SMSEnabled;\n pref.TransactionGroup = transGroup;\n pref.Save();\n }\n\n const success = await transGroup.Submit();\n if (success) {\n channel.enabled = newState;\n this.sharedService.CreateSimpleNotification(\n `${channel.label} notifications ${newState ? 'enabled' : 'disabled'}`,\n 'success',\n 2000\n );\n } else {\n throw new Error('Save failed');\n }\n } catch (err) {\n const msg = err instanceof Error ? err.message : 'Unknown error';\n this.sharedService.CreateSimpleNotification(`Update failed: ${msg}`, 'error', 3000);\n await this.loadNotifications();\n } finally {\n channel.saving = false;\n this.cdr.markForCheck();\n }\n }\n\n // ---------- private helpers ----------\n\n private populateIdentity(): void {\n const provider = this.ProviderToUse;\n const user = provider?.CurrentUser;\n if (user) {\n const name = user.Name || `${user.FirstName ?? ''} ${user.LastName ?? ''}`.trim();\n this.UserName = name || 'User';\n this.UserEmail = user.Email || '';\n this.UserInitials = this.computeInitials(this.UserName);\n this.AccountType = user.Type || 'User';\n this.AccountStatus = user.IsActive ? 'Active' : 'Inactive';\n this.MemberSince = this.formatMemberSince(user.__mj_CreatedAt);\n this.RoleChips = this.computeRoleChips(user.UserRoles);\n }\n this.ThemePreference = this.themeService.Preference;\n this.ThemeLabel = this.computeThemeLabel();\n }\n\n private populateThemeOptions(): void {\n const themes: ThemeDefinition[] = this.themeService.AvailableThemes ?? [];\n this.ThemeOptions = themes.map(t => ({\n id: t.Id,\n name: t.Name,\n description: t.Description ?? (t.BaseTheme === 'dark' ? 'Dark interface' : 'Light interface'),\n icon: t.BaseTheme === 'dark' ? 'fa-solid fa-moon' : 'fa-solid fa-sun',\n swatch: t.BaseTheme as 'light' | 'dark'\n }));\n this.ThemeOptions.push({\n id: 'system',\n name: 'System',\n description: 'Follow your operating system',\n icon: 'fa-solid fa-desktop',\n swatch: 'system'\n });\n }\n\n private async loadNotifications(): Promise<void> {\n this.LoadingNotifications = true;\n try {\n this.UnreadCount = UserInfoEngine.Instance.UnreadNotificationCount ?? 0;\n const preferences = UserInfoEngine.Instance.NotificationPreferences;\n const types = UserInfoEngine.Instance.NotificationTypes;\n\n let inApp: boolean, email: boolean, sms: boolean;\n if (preferences.length === 0 && types.length > 0) {\n inApp = types.some(t => t.DefaultInApp ?? true);\n email = types.some(t => t.DefaultEmail ?? false);\n sms = types.some(t => t.DefaultSMS ?? false);\n } else {\n inApp = preferences.some(p => p.InAppEnabled);\n email = preferences.some(p => p.EmailEnabled);\n sms = preferences.some(p => p.SMSEnabled);\n }\n\n this.Channels[0].enabled = inApp;\n this.Channels[1].enabled = email;\n this.Channels[2].enabled = sms;\n } catch {\n // non-fatal; leave defaults\n } finally {\n this.LoadingNotifications = false;\n this.cdr.markForCheck();\n }\n }\n\n private computeInitials(name: string): string {\n const parts = name.trim().split(/\\s+/).filter(Boolean);\n if (parts.length === 0) return '?';\n if (parts.length === 1) return parts[0].slice(0, 2).toUpperCase();\n return (parts[0][0] + parts[parts.length - 1][0]).toUpperCase();\n }\n\n private computeRoleChips(roles: UserRoleInfo[] | undefined): Array<{ label: string; tone: string; icon: string | null }> {\n if (!roles || roles.length === 0) return [];\n return roles\n .map(r => r.Role)\n .filter((n): n is string => !!n)\n .map(roleName => {\n const lower = roleName.toLowerCase();\n if (lower.includes('admin')) return { label: roleName, tone: 'admin', icon: 'fa-solid fa-shield' };\n if (lower.includes('developer') || lower.includes('integration')) return { label: roleName, tone: 'dev', icon: 'fa-solid fa-code' };\n return { label: roleName, tone: '', icon: null };\n });\n }\n\n private formatMemberSince(date: Date | string | null | undefined): string {\n if (!date) return '';\n const d = date instanceof Date ? date : new Date(date);\n if (isNaN(d.getTime())) return '';\n return d.toLocaleDateString(undefined, { month: 'short', year: 'numeric' });\n }\n\n private computeThemeLabel(): string {\n const applied = this.themeService.AppliedTheme;\n const preference = this.themeService.Preference;\n const def = this.themeService.GetThemeDefinition(applied);\n const themeName = def?.Name ?? applied;\n return preference === 'system' ? `${themeName} · System` : themeName;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"profile-dialog.component.js","sourceRoot":"","sources":["../../../src/lib/profile/profile-dialog.component.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ChangeDetectorRef,\n inject\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RunView, UserRoleInfo } from '@memberjunction/core';\nimport { UUIDsEqual } from '@memberjunction/global';\nimport {\n MJThemeEntity,\n MJUserNotificationPreferenceEntity,\n UserInfoEngine\n} from '@memberjunction/core-entities';\nimport { MJAuthBase } from '@memberjunction/ng-auth-services';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nimport { ThemeService, SharedService, ThemeDefinition } from '@memberjunction/ng-shared';\nimport type { ThemeSeeds } from '@memberjunction/theme-engine';\nimport { ExplorerSettingsModule } from '@memberjunction/ng-explorer-settings';\nimport { IsOmnibarAvailable, IsOmnibarEnabledForUser, OMNIBAR_USER_SETTING_KEY } from '../omnibar/omnibar-user-setting';\nimport { GetOmnibarShortcutLabel } from '../omnibar/omnibar-shortcut';\nimport { Subscription } from 'rxjs';\n\ninterface NotificationChannel {\n key: 'InApp' | 'Email' | 'SMS';\n label: string;\n icon: string;\n enabled: boolean;\n saving: boolean;\n}\n\ninterface StarredThemeItem {\n id: string;\n name: string;\n seeds: string;\n swatches: string[];\n overrides: string | null;\n customCss: string | null;\n}\n\ntype ProfilePanel = 'none' | 'photo' | 'theme';\n\n/**\n * \"Identity Card\" profile dialog with slide-in detail panels for editing\n * profile photo and switching theme. Replaces the legacy multi-tab Settings\n * dialog entirely. Brand-aligned with the About dialog.\n */\n@Component({\n selector: 'mj-profile-dialog',\n standalone: true,\n imports: [CommonModule, ExplorerSettingsModule],\n template: `\n<div class=\"mj-profile\" [class.mj-profile--panel-open]=\"ActivePanel !== 'none'\" role=\"document\">\n <button class=\"mj-profile__close\" type=\"button\" aria-label=\"Close\" (click)=\"OnCloseClick()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n\n <!-- ===== MAIN VIEW ===== -->\n <div class=\"mj-profile__main\">\n <div class=\"mj-profile__hero\">\n <h3 class=\"mj-profile__hero-title\">My Profile</h3>\n </div>\n\n <div class=\"mj-profile__avatar-zone\">\n @if (AvatarUrl) {\n <img class=\"mj-profile__avatar mj-profile__avatar--img\"\n [src]=\"AvatarUrl\" alt=\"\" (error)=\"OnAvatarLoadError()\" />\n } @else if (AvatarIconClass) {\n <div class=\"mj-profile__avatar mj-profile__avatar--icon\">\n <i [class]=\"AvatarIconClass\"></i>\n </div>\n } @else {\n <div class=\"mj-profile__avatar\">{{ UserInitials }}</div>\n }\n <button class=\"mj-profile__avatar-edit\" type=\"button\" title=\"Change photo\"\n (click)=\"OpenPanel('photo')\">\n <i class=\"fa-solid fa-camera\"></i>\n </button>\n </div>\n\n <div class=\"mj-profile__identity\">\n <h2 class=\"mj-profile__name\">{{ UserName }}</h2>\n <p class=\"mj-profile__email\">{{ UserEmail }}</p>\n @if (RoleChips.length > 0) {\n <div class=\"mj-profile__chips\">\n @for (chip of RoleChips; track chip.label) {\n <span class=\"mj-profile__chip\" [class]=\"'mj-profile__chip--' + chip.tone\">\n @if (chip.icon) { <i [class]=\"chip.icon\"></i> }\n {{ chip.label }}\n </span>\n }\n </div>\n }\n </div>\n\n <div class=\"mj-profile__field-list\">\n <div class=\"mj-profile__field\">\n <div class=\"mj-profile__field-icon\"><i class=\"fa-solid fa-id-badge\"></i></div>\n <div class=\"mj-profile__field-body\">\n <div class=\"mj-profile__field-label\">Account</div>\n <div class=\"mj-profile__field-value\">\n {{ AccountType }} · {{ AccountStatus }}\n @if (MemberSince) {\n <span class=\"mj-profile__field-muted\"> · {{ MemberSince }}</span>\n }\n </div>\n </div>\n </div>\n\n <button class=\"mj-profile__field mj-profile__field--button\" type=\"button\" (click)=\"OpenPanel('theme')\">\n <div class=\"mj-profile__field-icon\"><i class=\"fa-solid fa-palette\"></i></div>\n <div class=\"mj-profile__field-body\">\n <div class=\"mj-profile__field-label\">Theme</div>\n <div class=\"mj-profile__field-value\">{{ ThemeLabel }}</div>\n </div>\n <i class=\"fa-solid fa-chevron-right mj-profile__field-chev\"></i>\n </button>\n </div>\n\n @if (OmnibarAvailable) {\n <div class=\"mj-profile__section\">\n <div class=\"mj-profile__section-head\">\n <h4>Command Palette</h4>\n </div>\n <div class=\"mj-profile__channels\">\n <button type=\"button\"\n class=\"mj-profile__channel\"\n data-testid=\"omnibar-toggle\"\n [class.mj-profile__channel--on]=\"OmnibarEnabled\"\n [disabled]=\"SavingOmnibar\"\n (click)=\"ToggleOmnibar()\">\n <div class=\"mj-profile__channel-icon\"><i class=\"fa-solid fa-magnifying-glass\"></i></div>\n <div class=\"mj-profile__channel-label\">\n Unified command palette\n <div class=\"mj-profile__channel-hint\">{{ OmnibarShortcutLabel }} — search, records, agents & commands in one bar</div>\n </div>\n <div class=\"mj-profile__channel-state\">\n @if (SavingOmnibar) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n } @else {\n <span class=\"mj-profile__switch\" [class.mj-profile__switch--on]=\"OmnibarEnabled\">\n <span class=\"mj-profile__switch-knob\"></span>\n </span>\n }\n </div>\n </button>\n </div>\n </div>\n }\n\n <div class=\"mj-profile__section\">\n <div class=\"mj-profile__section-head\">\n <h4>Notifications</h4>\n @if (UnreadCount > 0) {\n <span class=\"mj-profile__unread\">{{ UnreadCount }} unread</span>\n }\n </div>\n @if (LoadingNotifications) {\n <div class=\"mj-profile__channels-loading\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Loading…\n </div>\n } @else {\n <div class=\"mj-profile__channels\">\n @for (ch of Channels; track ch.key) {\n <button type=\"button\"\n class=\"mj-profile__channel\"\n [class.mj-profile__channel--on]=\"ch.enabled\"\n [disabled]=\"ch.saving\"\n (click)=\"ToggleChannel(ch)\">\n <div class=\"mj-profile__channel-icon\"><i [class]=\"ch.icon\"></i></div>\n <div class=\"mj-profile__channel-label\">{{ ch.label }}</div>\n <div class=\"mj-profile__channel-state\">\n @if (ch.saving) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n } @else {\n <span class=\"mj-profile__switch\" [class.mj-profile__switch--on]=\"ch.enabled\">\n <span class=\"mj-profile__switch-knob\"></span>\n </span>\n }\n </div>\n </button>\n }\n </div>\n }\n </div>\n\n <div class=\"mj-profile__footer\">\n <button class=\"mj-profile__btn mj-profile__btn--danger\" type=\"button\" (click)=\"OnSignOut()\">\n <i class=\"fa-solid fa-arrow-right-from-bracket\"></i>\n Sign out\n </button>\n <span class=\"mj-profile__spacer\"></span>\n <button class=\"mj-profile__btn mj-profile__btn--primary\" type=\"button\" (click)=\"OnCloseClick()\">\n Done\n </button>\n </div>\n </div>\n\n <!-- ===== SLIDE-IN PANEL ===== -->\n <div class=\"mj-profile__panel\" [class.mj-profile__panel--open]=\"ActivePanel !== 'none'\">\n <div class=\"mj-profile__panel-header\">\n <button class=\"mj-profile__panel-back\" type=\"button\" aria-label=\"Back\" (click)=\"ClosePanel()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </button>\n <h3 class=\"mj-profile__panel-title\">{{ PanelTitle }}</h3>\n </div>\n <div class=\"mj-profile__panel-body\">\n @if (ActivePanel === 'photo') {\n <mj-user-profile-settings></mj-user-profile-settings>\n } @else if (ActivePanel === 'theme') {\n <div class=\"mj-profile__themes\">\n @for (theme of ThemeOptions; track theme.id) {\n <button type=\"button\"\n class=\"mj-profile__theme\"\n [class.mj-profile__theme--active]=\"theme.id === ThemePreference\"\n [class.mj-profile__theme--saving]=\"SavingTheme === theme.id\"\n [disabled]=\"!!SavingTheme\"\n (click)=\"SelectTheme(theme.id)\">\n <div class=\"mj-profile__theme-swatch\" [class]=\"'mj-profile__theme-swatch--' + theme.swatch\">\n <i [class]=\"theme.icon\"></i>\n </div>\n <div class=\"mj-profile__theme-info\">\n <div class=\"mj-profile__theme-name\">{{ theme.name }}</div>\n @if (theme.description) {\n <div class=\"mj-profile__theme-desc\">{{ theme.description }}</div>\n }\n </div>\n @if (SavingTheme === theme.id) {\n <i class=\"fa-solid fa-spinner fa-spin mj-profile__theme-check\"></i>\n } @else if (theme.id === ThemePreference) {\n <i class=\"fa-solid fa-check mj-profile__theme-check\"></i>\n }\n </button>\n }\n @if (StarredThemes.length) {\n <div class=\"mj-profile__theme-sep\">Brand themes</div>\n @for (t of StarredThemes; track t.id) {\n <button type=\"button\"\n class=\"mj-profile__theme\"\n [class.mj-profile__theme--active]=\"IsAppliedBrand(t.id)\"\n (click)=\"ApplyStarredTheme(t)\">\n <div class=\"mj-profile__theme-swatch mj-profile__brand-swatch\">\n @for (c of t.swatches; track $index) { <i [style.background]=\"c\"></i> }\n </div>\n <div class=\"mj-profile__theme-info\">\n <div class=\"mj-profile__theme-name\">{{ t.name }}</div>\n </div>\n @if (IsAppliedBrand(t.id)) {\n <i class=\"fa-solid fa-check mj-profile__theme-check\"></i>\n }\n </button>\n }\n }\n </div>\n }\n </div>\n </div>\n</div>\n `,\n styles: [`\n:host {\n display: block;\n width: 100%;\n height: 100%;\n}\n.mj-profile {\n display: block;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n height: 100%;\n min-height: 0;\n position: relative;\n font-family: inherit;\n overflow: hidden;\n}\n.mj-profile__close {\n position: absolute;\n top: 12px; right: 12px;\n width: 36px; height: 36px;\n border: none; border-radius: 8px;\n background: rgba(255, 255, 255, 0.18);\n backdrop-filter: blur(8px);\n color: #fff;\n cursor: pointer;\n font-size: 16px;\n display: flex; align-items: center; justify-content: center;\n transition: background 0.15s, opacity 0.2s;\n z-index: 4;\n}\n.mj-profile__close:hover { background: rgba(255, 255, 255, 0.3); }\n.mj-profile--panel-open .mj-profile__close { opacity: 0; pointer-events: none; }\n\n/* ============ MAIN VIEW ============ */\n.mj-profile__main {\n display: flex;\n flex-direction: column;\n height: 100%;\n transition: transform 0.32s cubic-bezier(0.4, 0, 0.2, 1);\n}\n.mj-profile--panel-open .mj-profile__main {\n transform: translateX(-12%);\n pointer-events: none;\n}\n\n.mj-profile__hero {\n background: linear-gradient(135deg, #264FAF 0%, #0076b6 100%);\n color: #fff;\n padding: 22px 24px 56px;\n position: relative;\n overflow: hidden;\n flex-shrink: 0;\n}\n.mj-profile__hero::before {\n content: '';\n position: absolute;\n inset: -50%;\n background: radial-gradient(circle, rgba(255, 255, 255, 0.10) 0%, transparent 60%);\n animation: mj-profile-rotate 24s linear infinite;\n pointer-events: none;\n}\n@media (prefers-reduced-motion: reduce) {\n .mj-profile__hero::before { animation: none; }\n}\n@keyframes mj-profile-rotate { to { transform: rotate(360deg); } }\n\n.mj-profile__hero-title {\n margin: 0;\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 1.2px;\n opacity: 0.85;\n position: relative;\n z-index: 1;\n}\n\n.mj-profile__avatar-zone {\n position: relative;\n width: 96px;\n height: 96px;\n margin: -48px auto 12px;\n z-index: 2;\n}\n.mj-profile__avatar {\n width: 96px;\n height: 96px;\n border-radius: 50%;\n background: linear-gradient(135deg, #264FAF 0%, #0076b6 100%);\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 32px;\n font-weight: 700;\n border: 4px solid var(--mj-bg-surface);\n box-shadow: 0 6px 20px rgba(0, 0, 0, 0.18);\n object-fit: cover;\n overflow: hidden;\n}\nimg.mj-profile__avatar { background: var(--mj-bg-surface-card); }\n.mj-profile__avatar--icon i { font-size: 36px; }\n\n.mj-profile__avatar-edit {\n position: absolute;\n bottom: 2px; right: 2px;\n width: 30px; height: 30px;\n border-radius: 50%;\n background: var(--mj-bg-surface);\n color: var(--mj-brand-primary);\n border: 2px solid var(--mj-bg-surface);\n cursor: pointer;\n display: flex; align-items: center; justify-content: center;\n font-size: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.18);\n transition: transform 0.15s;\n}\n.mj-profile__avatar-edit:hover { transform: scale(1.1); }\n\n.mj-profile__identity {\n text-align: center;\n padding: 0 24px 16px;\n flex-shrink: 0;\n}\n.mj-profile__name {\n margin: 0 0 4px;\n font-size: 22px;\n font-weight: 700;\n letter-spacing: -0.4px;\n color: var(--mj-text-primary);\n}\n.mj-profile__email {\n margin: 0 0 12px;\n color: var(--mj-text-muted);\n font-size: 13px;\n word-break: break-all;\n}\n.mj-profile__chips {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n justify-content: center;\n}\n.mj-profile__chip {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 9px;\n border-radius: 100px;\n font-size: 11px;\n font-weight: 600;\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n color: var(--mj-brand-primary);\n}\n.mj-profile__chip--admin {\n background: color-mix(in srgb, #f59e0b 14%, transparent);\n color: #b45309;\n}\n.mj-profile__chip--dev {\n background: color-mix(in srgb, #10b981 14%, transparent);\n color: #047857;\n}\n\n.mj-profile__field-list {\n padding: 0 24px;\n flex-shrink: 0;\n}\n.mj-profile__field {\n display: flex;\n align-items: center;\n padding: 12px 0;\n gap: 14px;\n border-top: 1px solid var(--mj-border-subtle);\n width: 100%;\n text-align: left;\n background: transparent;\n border-left: none;\n border-right: none;\n border-bottom: none;\n font-family: inherit;\n color: inherit;\n}\n.mj-profile__field:first-child { border-top: none; }\n.mj-profile__field--button {\n cursor: pointer;\n transition: background 0.12s;\n margin: 0 -8px;\n padding-left: 8px;\n padding-right: 8px;\n border-radius: 8px;\n border-top: none;\n}\n.mj-profile__field--button + .mj-profile__field--button { margin-top: 0; }\n.mj-profile__field--button:hover { background: var(--mj-bg-surface-hover); }\n.mj-profile__field--button:hover .mj-profile__field-chev { color: var(--mj-brand-primary); }\n.mj-profile__field-icon {\n width: 32px; height: 32px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 8px;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n flex-shrink: 0;\n}\n.mj-profile__field-body { flex: 1; min-width: 0; }\n.mj-profile__field-label {\n font-size: 10.5px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n font-weight: 600;\n letter-spacing: 0.5px;\n}\n.mj-profile__field-value {\n font-size: 13px;\n color: var(--mj-text-primary);\n margin-top: 2px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.mj-profile__field-muted { color: var(--mj-text-muted); }\n.mj-profile__field-chev {\n color: var(--mj-text-muted);\n font-size: 11px;\n transition: color 0.15s;\n}\n\n.mj-profile__section {\n padding: 16px 24px 8px;\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n}\n.mj-profile__section-head {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 10px;\n}\n.mj-profile__section-head h4 {\n margin: 0;\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.6px;\n}\n.mj-profile__unread {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n padding: 2px 8px;\n border-radius: 100px;\n}\n.mj-profile__channels-loading {\n color: var(--mj-text-muted);\n font-size: 12.5px;\n padding: 12px;\n text-align: center;\n}\n.mj-profile__channels {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.mj-profile__channel {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-subtle);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.15s;\n font-family: inherit;\n text-align: left;\n width: 100%;\n}\n.mj-profile__channel:hover:not(:disabled) {\n border-color: var(--mj-border-default);\n background: var(--mj-bg-surface-hover);\n}\n.mj-profile__channel:disabled { cursor: wait; opacity: 0.7; }\n.mj-profile__channel-icon {\n width: 32px; height: 32px;\n border-radius: 8px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n display: flex; align-items: center; justify-content: center;\n font-size: 13px;\n flex-shrink: 0;\n transition: all 0.15s;\n}\n.mj-profile__channel--on .mj-profile__channel-icon {\n background: color-mix(in srgb, var(--mj-brand-primary) 14%, transparent);\n color: var(--mj-brand-primary);\n}\n.mj-profile__channel-label {\n flex: 1;\n font-size: 13.5px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n.mj-profile__channel-hint {\n font-size: 11.5px;\n font-weight: 400;\n color: var(--mj-text-muted);\n margin-top: 2px;\n}\n.mj-profile__channel-state {\n flex-shrink: 0;\n color: var(--mj-text-muted);\n font-size: 13px;\n min-width: 36px;\n display: flex; justify-content: flex-end; align-items: center;\n}\n\n.mj-profile__switch {\n width: 36px;\n height: 20px;\n background: var(--mj-border-strong);\n border-radius: 100px;\n position: relative;\n transition: background 0.2s;\n display: inline-block;\n}\n.mj-profile__switch-knob {\n position: absolute;\n top: 2px; left: 2px;\n width: 16px; height: 16px;\n background: white;\n border-radius: 50%;\n transition: transform 0.2s;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n}\n.mj-profile__switch--on { background: var(--mj-brand-primary); }\n.mj-profile__switch--on .mj-profile__switch-knob { transform: translateX(16px); }\n\n.mj-profile__footer {\n border-top: 1px solid var(--mj-border-subtle);\n padding: 14px 20px;\n display: flex;\n gap: 8px;\n align-items: center;\n flex-shrink: 0;\n}\n.mj-profile__spacer { flex: 1; }\n.mj-profile__btn {\n padding: 9px 16px;\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n font-family: inherit;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n transition: all 0.15s;\n}\n.mj-profile__btn:hover { background: var(--mj-bg-surface-hover); border-color: var(--mj-border-strong); }\n.mj-profile__btn--primary {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n}\n.mj-profile__btn--primary:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 88%, black);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 88%, black);\n}\n.mj-profile__btn--danger {\n color: var(--mj-status-error);\n border-color: color-mix(in srgb, var(--mj-status-error) 30%, var(--mj-border-default));\n}\n.mj-profile__btn--danger:hover {\n background: color-mix(in srgb, var(--mj-status-error) 8%, transparent);\n border-color: var(--mj-status-error);\n}\n\n/* ============ SLIDE-IN PANEL ============ */\n.mj-profile__panel {\n position: absolute;\n inset: 0;\n background: var(--mj-bg-surface);\n transform: translateX(100%);\n transition: transform 0.32s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n flex-direction: column;\n z-index: 3;\n}\n.mj-profile__panel--open {\n transform: translateX(0);\n box-shadow: -8px 0 24px rgba(0, 0, 0, 0.06);\n}\n.mj-profile__panel-header {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 14px 18px;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface-card);\n flex-shrink: 0;\n}\n.mj-profile__panel-back {\n width: 34px; height: 34px;\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n cursor: pointer;\n display: flex; align-items: center; justify-content: center;\n font-size: 13px;\n transition: all 0.15s;\n font-family: inherit;\n}\n.mj-profile__panel-back:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n.mj-profile__panel-title {\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n letter-spacing: -0.2px;\n}\n.mj-profile__panel-body {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n padding: 16px 20px 20px;\n}\n\n/* Theme picker */\n.mj-profile__themes {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.mj-profile__theme {\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 12px 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-subtle);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.15s;\n text-align: left;\n width: 100%;\n font-family: inherit;\n}\n.mj-profile__theme:hover:not(:disabled) {\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-hover);\n}\n.mj-profile__theme:disabled { cursor: wait; opacity: 0.7; }\n.mj-profile__theme--active {\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface-card));\n}\n.mj-profile__theme-swatch {\n width: 40px; height: 40px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 16px;\n flex-shrink: 0;\n border: 1px solid var(--mj-border-default);\n}\n.mj-profile__theme-swatch--light {\n background: linear-gradient(135deg, #ffffff 0%, #f1f5f9 100%);\n color: #f59e0b;\n}\n.mj-profile__theme-swatch--dark {\n background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%);\n color: #94a3b8;\n border-color: #334155;\n}\n.mj-profile__theme-swatch--system {\n background: linear-gradient(135deg, #ffffff 0%, #ffffff 49%, #1e293b 51%, #0f172a 100%);\n color: var(--mj-text-secondary);\n}\n.mj-profile__theme-info { flex: 1; min-width: 0; }\n.mj-profile__theme-name {\n font-size: 13.5px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n.mj-profile__theme-desc {\n font-size: 11.5px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.mj-profile__theme-check {\n color: var(--mj-brand-primary);\n font-size: 14px;\n flex-shrink: 0;\n}\n\n/* Starred brand themes shown inline in the theme list */\n.mj-profile__theme-sep {\n font-size: 11px; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase;\n color: var(--mj-text-muted); padding: 6px 4px 2px; margin-top: 6px;\n}\n.mj-profile__brand-swatch {\n display: flex; align-items: center; justify-content: center; overflow: hidden; padding: 0;\n}\n.mj-profile__brand-swatch i {\n width: 33%; height: 100%; display: block;\n}\n\n@media (max-width: 480px) {\n .mj-profile__hero { padding: 20px 18px 48px; }\n .mj-profile__avatar-zone { width: 88px; height: 88px; margin-top: -44px; }\n .mj-profile__avatar { width: 88px; height: 88px; font-size: 28px; }\n .mj-profile__name { font-size: 19px; }\n .mj-profile__field-list,\n .mj-profile__section { padding-left: 18px; padding-right: 18px; }\n .mj-profile__footer { padding: 12px 16px; }\n .mj-profile--panel-open .mj-profile__main { transform: translateX(-20%); }\n .mj-profile__panel-body { padding: 14px 16px 16px; }\n}\n `]\n})\nexport class ProfileDialogComponent extends BaseAngularComponent implements OnInit, OnDestroy {\n @Output() CloseRequested = new EventEmitter<void>();\n\n @Input() AvatarUrl: string | null = null;\n @Input() AvatarIconClass: string | null = null;\n\n public UserName = '';\n public UserEmail = '';\n public UserInitials = '?';\n public AccountType = '';\n public AccountStatus = '';\n public MemberSince = '';\n public ThemeLabel = '';\n public RoleChips: Array<{ label: string; tone: string; icon: string | null }> = [];\n\n public LoadingNotifications = true;\n public Channels: NotificationChannel[] = [\n { key: 'InApp', label: 'In-app', icon: 'fa-solid fa-bell', enabled: false, saving: false },\n { key: 'Email', label: 'Email', icon: 'fa-solid fa-envelope', enabled: false, saving: false },\n { key: 'SMS', label: 'SMS', icon: 'fa-solid fa-mobile', enabled: false, saving: false }\n ];\n public UnreadCount = 0;\n\n // Omnibar per-user opt-in (shown only when the instance makes it available)\n public OmnibarAvailable = false;\n public OmnibarEnabled = false;\n public SavingOmnibar = false;\n\n /** Platform-correct summon-shortcut label ('⌘K' on Mac, 'Ctrl+K' elsewhere). */\n public get OmnibarShortcutLabel(): string {\n return GetOmnibarShortcutLabel();\n }\n\n // Slide-in panel state\n public ActivePanel: ProfilePanel = 'none';\n public ThemeOptions: Array<{ id: string; name: string; description: string; icon: string; swatch: 'light' | 'dark' | 'system' }> = [];\n public ThemePreference = '';\n public SavingTheme: string | null = null;\n\n // Starred brand themes shown inline in the theme list\n public StarredThemes: StarredThemeItem[] = [];\n public get AppliedBrandId(): string | null {\n return this.themeService.BrandOverlayId;\n }\n\n /** Whether a theme id is the applied brand overlay (case-insensitive GUID compare). */\n public IsAppliedBrand(id: string): boolean {\n const active = this.themeService.BrandOverlayId;\n return !!active && UUIDsEqual(id, active);\n }\n\n public get PanelTitle(): string {\n switch (this.ActivePanel) {\n case 'photo': return 'Profile photo';\n case 'theme': return 'Theme';\n default: return '';\n }\n }\n\n private authBase = inject(MJAuthBase);\n private themeService = inject(ThemeService);\n private sharedService = inject(SharedService);\n private cdr = inject(ChangeDetectorRef);\n\n private themeSub?: Subscription;\n\n public ngOnInit(): void {\n this.populateIdentity();\n this.populateThemeOptions();\n this.loadNotifications();\n this.OmnibarAvailable = IsOmnibarAvailable();\n this.OmnibarEnabled = IsOmnibarEnabledForUser();\n this.themeSub = this.themeService.Preference$.subscribe(pref => {\n this.ThemePreference = pref;\n this.ThemeLabel = this.computeThemeLabel();\n this.cdr.markForCheck();\n });\n }\n\n public ngOnDestroy(): void {\n this.themeSub?.unsubscribe();\n }\n\n public OnCloseClick(): void {\n if (this.ActivePanel !== 'none') {\n this.ClosePanel();\n return;\n }\n this.CloseRequested.emit();\n }\n\n public OnAvatarLoadError(): void {\n this.AvatarUrl = null;\n this.cdr.markForCheck();\n }\n\n public OpenPanel(panel: ProfilePanel): void {\n this.ActivePanel = panel;\n if (panel === 'theme') {\n this.loadStarredThemes();\n }\n }\n\n public ClosePanel(): void {\n this.ActivePanel = 'none';\n }\n\n public async OnSignOut(): Promise<void> {\n try {\n localStorage.removeItem('auth');\n localStorage.removeItem('claims');\n await this.authBase.logout();\n } catch (err) {\n const msg = err instanceof Error ? err.message : 'Unknown error';\n this.sharedService.CreateSimpleNotification(`Sign out failed: ${msg}`, 'error', 3000);\n }\n }\n\n public async SelectTheme(themeId: string): Promise<void> {\n if (this.SavingTheme) return;\n if (themeId === this.ThemePreference) return;\n this.SavingTheme = themeId;\n this.cdr.markForCheck();\n try {\n await this.themeService.SetTheme(themeId);\n } catch (err) {\n const msg = err instanceof Error ? err.message : 'Unknown error';\n this.sharedService.CreateSimpleNotification(`Theme change failed: ${msg}`, 'error', 3000);\n } finally {\n this.SavingTheme = null;\n this.cdr.markForCheck();\n }\n }\n\n // ========================================\n // Starred brand themes\n // ========================================\n\n /** Load the user's starred brand themes to show inline in the theme list. */\n private async loadStarredThemes(): Promise<void> {\n this.StarredThemes = [];\n try {\n const ids = this.themeService.GetStarredThemeIds();\n if (ids.length) {\n const idList = ids.map((id) => `'${id.replace(/'/g, \"''\")}'`).join(', ');\n const rv = new RunView();\n const result = await rv.RunView<MJThemeEntity>({\n EntityName: 'MJ: Themes',\n ExtraFilter: `ID IN (${idList}) AND Status = 'Active'`,\n OrderBy: 'Name',\n ResultType: 'entity_object',\n });\n if (result.Success) {\n this.StarredThemes = result.Results.map((t) => ({\n id: t.ID,\n name: t.Name,\n seeds: t.Seeds,\n swatches: this.swatchesFor(t.Seeds),\n overrides: t.Overrides,\n customCss: t.CustomCSS,\n }));\n }\n }\n } catch {\n /* non-fatal: the list just stays light/dark/system */\n }\n this.cdr.markForCheck();\n }\n\n /** Apply a starred brand theme to the running app and persist it as the user's choice. */\n public async ApplyStarredTheme(t: StarredThemeItem): Promise<void> {\n try {\n this.themeService.RegisterBrandTheme({ id: t.id, name: t.name, seeds: t.seeds, overrides: t.overrides, customCss: t.customCss });\n await this.themeService.ApplyBrandOverlay(t.id);\n await this.themeService.SetSelectedBrandTheme(t.id);\n } catch (err) {\n const msg = err instanceof Error ? err.message : 'Unknown error';\n this.sharedService.CreateSimpleNotification(`Could not apply theme: ${msg}`, 'error', 3000);\n } finally {\n this.cdr.markForCheck();\n }\n }\n\n private swatchesFor(seedsJson: string): string[] {\n try {\n const s = JSON.parse(seedsJson) as ThemeSeeds;\n return [s.primary, s.accent ?? s.primary, s.tertiary ?? s.accent ?? s.primary];\n } catch {\n return ['#0076b6', '#38a9d9', '#8b5cf6'];\n }\n }\n\n /**\n * Per-user omnibar opt-in/out. Persists via UserInfoEngine (MJ: User\n * Settings) so the choice follows the user across browsers/devices. The\n * shell reads the same setting on every change-detection pass, so the\n * header affordance and Ctrl+K behavior flip live — no reload needed.\n */\n public async ToggleOmnibar(): Promise<void> {\n if (this.SavingOmnibar) return;\n const next = !this.OmnibarEnabled;\n this.SavingOmnibar = true;\n this.cdr.markForCheck();\n try {\n const saved = await UserInfoEngine.Instance.SetSetting(OMNIBAR_USER_SETTING_KEY, String(next));\n if (saved) {\n this.OmnibarEnabled = next;\n } else {\n this.sharedService.CreateSimpleNotification('Could not save the command palette preference', 'error', 3000);\n }\n } finally {\n this.SavingOmnibar = false;\n this.cdr.markForCheck();\n }\n }\n\n public async ToggleChannel(channel: NotificationChannel): Promise<void> {\n if (channel.saving) return;\n const newState = !channel.enabled;\n channel.saving = true;\n this.cdr.markForCheck();\n\n const provider = this.ProviderToUse;\n const currentUser = provider?.CurrentUser;\n if (!provider || !currentUser) {\n channel.saving = false;\n return;\n }\n\n try {\n const transGroup = await provider.CreateTransactionGroup();\n const types = UserInfoEngine.Instance.NotificationTypes;\n const preferences = UserInfoEngine.Instance.NotificationPreferences;\n\n for (const type of types) {\n if (type.AllowUserPreference === false) continue;\n\n let pref = preferences.find(p => UUIDsEqual(p.NotificationTypeID, type.ID));\n if (!pref) {\n pref = await provider.GetEntityObject<MJUserNotificationPreferenceEntity>(\n 'MJ: User Notification Preferences'\n );\n pref.UserID = currentUser.ID;\n pref.NotificationTypeID = type.ID;\n pref.InAppEnabled = type.DefaultInApp ?? true;\n pref.EmailEnabled = type.DefaultEmail ?? false;\n pref.SMSEnabled = type.DefaultSMS ?? false;\n }\n\n if (channel.key === 'InApp') pref.InAppEnabled = newState;\n else if (channel.key === 'Email') pref.EmailEnabled = newState;\n else pref.SMSEnabled = newState;\n\n pref.Enabled = pref.InAppEnabled || pref.EmailEnabled || pref.SMSEnabled;\n pref.TransactionGroup = transGroup;\n pref.Save();\n }\n\n const success = await transGroup.Submit();\n if (success) {\n channel.enabled = newState;\n this.sharedService.CreateSimpleNotification(\n `${channel.label} notifications ${newState ? 'enabled' : 'disabled'}`,\n 'success',\n 2000\n );\n } else {\n throw new Error('Save failed');\n }\n } catch (err) {\n const msg = err instanceof Error ? err.message : 'Unknown error';\n this.sharedService.CreateSimpleNotification(`Update failed: ${msg}`, 'error', 3000);\n await this.loadNotifications();\n } finally {\n channel.saving = false;\n this.cdr.markForCheck();\n }\n }\n\n // ---------- private helpers ----------\n\n private populateIdentity(): void {\n const provider = this.ProviderToUse;\n const user = provider?.CurrentUser;\n if (user) {\n const name = user.Name || `${user.FirstName ?? ''} ${user.LastName ?? ''}`.trim();\n this.UserName = name || 'User';\n this.UserEmail = user.Email || '';\n this.UserInitials = this.computeInitials(this.UserName);\n this.AccountType = user.Type || 'User';\n this.AccountStatus = user.IsActive ? 'Active' : 'Inactive';\n this.MemberSince = this.formatMemberSince(user.__mj_CreatedAt);\n this.RoleChips = this.computeRoleChips(user.UserRoles);\n }\n this.ThemePreference = this.themeService.Preference;\n this.ThemeLabel = this.computeThemeLabel();\n }\n\n private populateThemeOptions(): void {\n const themes: ThemeDefinition[] = this.themeService.AvailableThemes ?? [];\n this.ThemeOptions = themes.map(t => ({\n id: t.Id,\n name: t.Name,\n description: t.Description ?? (t.BaseTheme === 'dark' ? 'Dark interface' : 'Light interface'),\n icon: t.BaseTheme === 'dark' ? 'fa-solid fa-moon' : 'fa-solid fa-sun',\n swatch: t.BaseTheme as 'light' | 'dark'\n }));\n this.ThemeOptions.push({\n id: 'system',\n name: 'System',\n description: 'Follow your operating system',\n icon: 'fa-solid fa-desktop',\n swatch: 'system'\n });\n }\n\n private async loadNotifications(): Promise<void> {\n this.LoadingNotifications = true;\n try {\n this.UnreadCount = UserInfoEngine.Instance.UnreadNotificationCount ?? 0;\n const preferences = UserInfoEngine.Instance.NotificationPreferences;\n const types = UserInfoEngine.Instance.NotificationTypes;\n\n let inApp: boolean, email: boolean, sms: boolean;\n if (preferences.length === 0 && types.length > 0) {\n inApp = types.some(t => t.DefaultInApp ?? true);\n email = types.some(t => t.DefaultEmail ?? false);\n sms = types.some(t => t.DefaultSMS ?? false);\n } else {\n inApp = preferences.some(p => p.InAppEnabled);\n email = preferences.some(p => p.EmailEnabled);\n sms = preferences.some(p => p.SMSEnabled);\n }\n\n this.Channels[0].enabled = inApp;\n this.Channels[1].enabled = email;\n this.Channels[2].enabled = sms;\n } catch {\n // non-fatal; leave defaults\n } finally {\n this.LoadingNotifications = false;\n this.cdr.markForCheck();\n }\n }\n\n private computeInitials(name: string): string {\n const parts = name.trim().split(/\\s+/).filter(Boolean);\n if (parts.length === 0) return '?';\n if (parts.length === 1) return parts[0].slice(0, 2).toUpperCase();\n return (parts[0][0] + parts[parts.length - 1][0]).toUpperCase();\n }\n\n private computeRoleChips(roles: UserRoleInfo[] | undefined): Array<{ label: string; tone: string; icon: string | null }> {\n if (!roles || roles.length === 0) return [];\n return roles\n .map(r => r.Role)\n .filter((n): n is string => !!n)\n .map(roleName => {\n const lower = roleName.toLowerCase();\n if (lower.includes('admin')) return { label: roleName, tone: 'admin', icon: 'fa-solid fa-shield' };\n if (lower.includes('developer') || lower.includes('integration')) return { label: roleName, tone: 'dev', icon: 'fa-solid fa-code' };\n return { label: roleName, tone: '', icon: null };\n });\n }\n\n private formatMemberSince(date: Date | string | null | undefined): string {\n if (!date) return '';\n const d = date instanceof Date ? date : new Date(date);\n if (isNaN(d.getTime())) return '';\n return d.toLocaleDateString(undefined, { month: 'short', year: 'numeric' });\n }\n\n private computeThemeLabel(): string {\n const applied = this.themeService.AppliedTheme;\n const preference = this.themeService.Preference;\n const def = this.themeService.GetThemeDefinition(applied);\n const themeName = def?.Name ?? applied;\n return preference === 'system' ? `${themeName} · System` : themeName;\n }\n}\n"]}
|
|
@@ -19,14 +19,6 @@ import { FileOpenService } from '@memberjunction/ng-file-storage';
|
|
|
19
19
|
import { FeedbackDialogService, FeedbackService } from '@memberjunction/ng-feedback';
|
|
20
20
|
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
|
|
21
21
|
import * as i0 from "@angular/core";
|
|
22
|
-
/**
|
|
23
|
-
* Main shell component for the new Explorer UX.
|
|
24
|
-
*
|
|
25
|
-
* Provides:
|
|
26
|
-
* - App-centric header with app switcher and nav items
|
|
27
|
-
* - Golden Layout-based tab container
|
|
28
|
-
* - Unified workspace state management
|
|
29
|
-
*/
|
|
30
22
|
export declare class ShellComponent extends BaseAngularComponent implements OnInit, OnDestroy, AfterViewInit {
|
|
31
23
|
private appManager;
|
|
32
24
|
private workspaceManager;
|
|
@@ -105,7 +97,21 @@ export declare class ShellComponent extends BaseAngularComponent implements OnIn
|
|
|
105
97
|
selectedEntity: EntityInfo | null;
|
|
106
98
|
searchInput: ElementRef<HTMLInputElement>;
|
|
107
99
|
LegacySearchOpen: boolean;
|
|
100
|
+
private _chromeFlags;
|
|
101
|
+
/**
|
|
102
|
+
* Resolve the instance-config chrome flags once and cache them. Computed live
|
|
103
|
+
* from the fail-open defaults until InstanceConfigEngine has loaded, then frozen
|
|
104
|
+
* on the first post-load read — so the pre-load defaults are never cached over
|
|
105
|
+
* the real values, and every steady-state read is a plain field access.
|
|
106
|
+
*/
|
|
107
|
+
private get chromeFlags();
|
|
108
108
|
get ShowSearchBar(): boolean;
|
|
109
|
+
/** Instance Config gate for the notification bell + unread badge (desktop and mobile). */
|
|
110
|
+
get ShowNotifications(): boolean;
|
|
111
|
+
/** Instance Config gate for the app switcher (also the add/configure-apps entry point). */
|
|
112
|
+
get ShowAppSwitcher(): boolean;
|
|
113
|
+
/** Instance Config gate for the app navigation strip (desktop and the mobile drawer). */
|
|
114
|
+
get ShowAppNav(): boolean;
|
|
109
115
|
get ShowSearchPreview(): boolean;
|
|
110
116
|
/**
|
|
111
117
|
* Two-layer gate for the unified Ctrl+K command palette (omnibar):
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell.component.d.ts","sourceRoot":"","sources":["../../../src/lib/shell/shell.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAa,UAAU,EAAgB,MAAM,eAAe,CAAC;AACtJ,OAAO,EAAE,cAAc,EAAE,MAAM,EAAiB,MAAM,iBAAiB,CAAC;AAGxE,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,eAAe,EACf,UAAU,EAIV,OAAO,EACR,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAY,UAAU,EAAqD,MAAM,sBAAsB,CAAC;AAE/G,OAAO,EAAc,iBAAiB,EAAgC,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC5M,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAE9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,8BAA8B,EAAE,MAAM,+CAA+C,CAAC;AAC/F,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAIzE,OAAO,EAAE,wBAAwB,EAAyB,qBAAqB,EAAE,MAAM,kDAAkD,CAAC;AAC1I,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAgB,eAAe,EAAE,YAAY,EAA0D,MAAM,cAAc,CAAC;AAEnI,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAGrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;;
|
|
1
|
+
{"version":3,"file":"shell.component.d.ts","sourceRoot":"","sources":["../../../src/lib/shell/shell.component.ts"],"names":[],"mappings":"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"}
|