@memberjunction/ng-explorer-core 5.47.0 → 5.48.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.
Files changed (69) hide show
  1. package/dist/generated/lazy-feature-config.js +126 -126
  2. package/dist/generated/lazy-feature-config.js.map +1 -1
  3. package/dist/lib/omnibar/index.d.ts +15 -0
  4. package/dist/lib/omnibar/index.d.ts.map +1 -0
  5. package/dist/lib/omnibar/index.js +24 -0
  6. package/dist/lib/omnibar/index.js.map +1 -0
  7. package/dist/lib/omnibar/omnibar-palette.component.d.ts +130 -0
  8. package/dist/lib/omnibar/omnibar-palette.component.d.ts.map +1 -0
  9. package/dist/lib/omnibar/omnibar-palette.component.js +829 -0
  10. package/dist/lib/omnibar/omnibar-palette.component.js.map +1 -0
  11. package/dist/lib/omnibar/omnibar-provider.d.ts +94 -0
  12. package/dist/lib/omnibar/omnibar-provider.d.ts.map +1 -0
  13. package/dist/lib/omnibar/omnibar-provider.js +84 -0
  14. package/dist/lib/omnibar/omnibar-provider.js.map +1 -0
  15. package/dist/lib/omnibar/omnibar-shortcut.d.ts +12 -0
  16. package/dist/lib/omnibar/omnibar-shortcut.d.ts.map +1 -0
  17. package/dist/lib/omnibar/omnibar-shortcut.js +16 -0
  18. package/dist/lib/omnibar/omnibar-shortcut.js.map +1 -0
  19. package/dist/lib/omnibar/omnibar-user-setting.d.ts +38 -0
  20. package/dist/lib/omnibar/omnibar-user-setting.d.ts.map +1 -0
  21. package/dist/lib/omnibar/omnibar-user-setting.js +53 -0
  22. package/dist/lib/omnibar/omnibar-user-setting.js.map +1 -0
  23. package/dist/lib/omnibar/providers/omnibar-agent.provider.d.ts +24 -0
  24. package/dist/lib/omnibar/providers/omnibar-agent.provider.d.ts.map +1 -0
  25. package/dist/lib/omnibar/providers/omnibar-agent.provider.js +69 -0
  26. package/dist/lib/omnibar/providers/omnibar-agent.provider.js.map +1 -0
  27. package/dist/lib/omnibar/providers/omnibar-command.provider.d.ts +29 -0
  28. package/dist/lib/omnibar/providers/omnibar-command.provider.d.ts.map +1 -0
  29. package/dist/lib/omnibar/providers/omnibar-command.provider.js +130 -0
  30. package/dist/lib/omnibar/providers/omnibar-command.provider.js.map +1 -0
  31. package/dist/lib/omnibar/providers/omnibar-record.provider.d.ts +35 -0
  32. package/dist/lib/omnibar/providers/omnibar-record.provider.d.ts.map +1 -0
  33. package/dist/lib/omnibar/providers/omnibar-record.provider.js +176 -0
  34. package/dist/lib/omnibar/providers/omnibar-record.provider.js.map +1 -0
  35. package/dist/lib/omnibar/providers/omnibar-search.provider.d.ts +21 -0
  36. package/dist/lib/omnibar/providers/omnibar-search.provider.d.ts.map +1 -0
  37. package/dist/lib/omnibar/providers/omnibar-search.provider.js +94 -0
  38. package/dist/lib/omnibar/providers/omnibar-search.provider.js.map +1 -0
  39. package/dist/lib/profile/profile-dialog.component.d.ts +12 -0
  40. package/dist/lib/profile/profile-dialog.component.d.ts.map +1 -1
  41. package/dist/lib/profile/profile-dialog.component.js +189 -78
  42. package/dist/lib/profile/profile-dialog.component.js.map +1 -1
  43. package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts +16 -0
  44. package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts.map +1 -1
  45. package/dist/lib/resource-wrappers/chat-conversations-resource.component.js +66 -6
  46. package/dist/lib/resource-wrappers/chat-conversations-resource.component.js.map +1 -1
  47. package/dist/lib/resource-wrappers/view-resource.component.d.ts.map +1 -1
  48. package/dist/lib/resource-wrappers/view-resource.component.js +6 -2
  49. package/dist/lib/resource-wrappers/view-resource.component.js.map +1 -1
  50. package/dist/lib/shell/components/tabs/tab-container.component.d.ts +7 -0
  51. package/dist/lib/shell/components/tabs/tab-container.component.d.ts.map +1 -1
  52. package/dist/lib/shell/components/tabs/tab-container.component.js +26 -4
  53. package/dist/lib/shell/components/tabs/tab-container.component.js.map +1 -1
  54. package/dist/lib/shell/shell.component.d.ts +62 -2
  55. package/dist/lib/shell/shell.component.d.ts.map +1 -1
  56. package/dist/lib/shell/shell.component.js +341 -162
  57. package/dist/lib/shell/shell.component.js.map +1 -1
  58. package/dist/lib/shell/shell.module.d.ts +8 -7
  59. package/dist/lib/shell/shell.module.d.ts.map +1 -1
  60. package/dist/lib/shell/shell.module.js +5 -2
  61. package/dist/lib/shell/shell.module.js.map +1 -1
  62. package/dist/lib/single-list-detail/single-list-detail.component.d.ts.map +1 -1
  63. package/dist/lib/single-list-detail/single-list-detail.component.js +29 -20
  64. package/dist/lib/single-list-detail/single-list-detail.component.js.map +1 -1
  65. package/dist/public-api.d.ts +1 -0
  66. package/dist/public-api.d.ts.map +1 -1
  67. package/dist/public-api.js +2 -0
  68. package/dist/public-api.js.map +1 -1
  69. package/package.json +49 -49
@@ -6,6 +6,8 @@ import { MJAuthBase } from '@memberjunction/ng-auth-services';
6
6
  import { BaseAngularComponent } from '@memberjunction/ng-base-types';
7
7
  import { ThemeService, SharedService } from '@memberjunction/ng-shared';
8
8
  import { ExplorerSettingsModule } from '@memberjunction/ng-explorer-settings';
9
+ import { IsOmnibarAvailable, IsOmnibarEnabledForUser, OMNIBAR_USER_SETTING_KEY } from '../omnibar/omnibar-user-setting';
10
+ import { GetOmnibarShortcutLabel } from '../omnibar/omnibar-shortcut';
9
11
  import * as i0 from "@angular/core";
10
12
  import * as i1 from "@memberjunction/ng-explorer-settings";
11
13
  const _forTrack0 = ($index, $item) => $item.label;
@@ -75,7 +77,46 @@ function ProfileDialogComponent_Conditional_28_Template(rf, ctx) { if (rf & 1) {
75
77
  i0.ɵɵadvance();
76
78
  i0.ɵɵtextInterpolate1(" \u00B7 ", ctx_r1.MemberSince);
77
79
  } }
78
- function ProfileDialogComponent_Conditional_42_Template(rf, ctx) { if (rf & 1) {
80
+ function ProfileDialogComponent_Conditional_38_Conditional_13_Template(rf, ctx) { if (rf & 1) {
81
+ i0.ɵɵelement(0, "i", 54);
82
+ } }
83
+ function ProfileDialogComponent_Conditional_38_Conditional_14_Template(rf, ctx) { if (rf & 1) {
84
+ i0.ɵɵelementStart(0, "span", 56);
85
+ i0.ɵɵelement(1, "span", 57);
86
+ i0.ɵɵelementEnd();
87
+ } if (rf & 2) {
88
+ const ctx_r1 = i0.ɵɵnextContext(2);
89
+ i0.ɵɵclassProp("mj-profile__switch--on", ctx_r1.OmnibarEnabled);
90
+ } }
91
+ function ProfileDialogComponent_Conditional_38_Template(rf, ctx) { if (rf & 1) {
92
+ const _r4 = i0.ɵɵgetCurrentView();
93
+ i0.ɵɵelementStart(0, "div", 27)(1, "div", 28)(2, "h4");
94
+ i0.ɵɵtext(3, "Command Palette");
95
+ i0.ɵɵelementEnd()();
96
+ i0.ɵɵelementStart(4, "div", 31)(5, "button", 48);
97
+ i0.ɵɵlistener("click", function ProfileDialogComponent_Conditional_38_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ToggleOmnibar()); });
98
+ i0.ɵɵelementStart(6, "div", 49);
99
+ i0.ɵɵelement(7, "i", 50);
100
+ i0.ɵɵelementEnd();
101
+ i0.ɵɵelementStart(8, "div", 51);
102
+ i0.ɵɵtext(9, " Unified command palette ");
103
+ i0.ɵɵelementStart(10, "div", 52);
104
+ i0.ɵɵtext(11);
105
+ i0.ɵɵelementEnd()();
106
+ i0.ɵɵelementStart(12, "div", 53);
107
+ i0.ɵɵconditionalCreate(13, ProfileDialogComponent_Conditional_38_Conditional_13_Template, 1, 0, "i", 54)(14, ProfileDialogComponent_Conditional_38_Conditional_14_Template, 2, 2, "span", 55);
108
+ i0.ɵɵelementEnd()()()();
109
+ } if (rf & 2) {
110
+ const ctx_r1 = i0.ɵɵnextContext();
111
+ i0.ɵɵadvance(5);
112
+ i0.ɵɵclassProp("mj-profile__channel--on", ctx_r1.OmnibarEnabled);
113
+ i0.ɵɵproperty("disabled", ctx_r1.SavingOmnibar);
114
+ i0.ɵɵadvance(6);
115
+ i0.ɵɵtextInterpolate1("", ctx_r1.OmnibarShortcutLabel, " \u2014 search, records, agents & commands in one bar");
116
+ i0.ɵɵadvance(2);
117
+ i0.ɵɵconditional(ctx_r1.SavingOmnibar ? 13 : 14);
118
+ } }
119
+ function ProfileDialogComponent_Conditional_43_Template(rf, ctx) { if (rf & 1) {
79
120
  i0.ɵɵelementStart(0, "span", 29);
80
121
  i0.ɵɵtext(1);
81
122
  i0.ɵɵelementEnd();
@@ -84,107 +125,107 @@ function ProfileDialogComponent_Conditional_42_Template(rf, ctx) { if (rf & 1) {
84
125
  i0.ɵɵadvance();
85
126
  i0.ɵɵtextInterpolate1("", ctx_r1.UnreadCount, " unread");
86
127
  } }
87
- function ProfileDialogComponent_Conditional_43_Template(rf, ctx) { if (rf & 1) {
128
+ function ProfileDialogComponent_Conditional_44_Template(rf, ctx) { if (rf & 1) {
88
129
  i0.ɵɵelementStart(0, "div", 30);
89
- i0.ɵɵelement(1, "i", 48);
130
+ i0.ɵɵelement(1, "i", 54);
90
131
  i0.ɵɵtext(2, " Loading\u2026 ");
91
132
  i0.ɵɵelementEnd();
92
133
  } }
93
- function ProfileDialogComponent_Conditional_44_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
94
- i0.ɵɵelement(0, "i", 48);
134
+ function ProfileDialogComponent_Conditional_45_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
135
+ i0.ɵɵelement(0, "i", 54);
95
136
  } }
96
- function ProfileDialogComponent_Conditional_44_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
97
- i0.ɵɵelementStart(0, "span", 55);
98
- i0.ɵɵelement(1, "span", 56);
137
+ function ProfileDialogComponent_Conditional_45_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
138
+ i0.ɵɵelementStart(0, "span", 56);
139
+ i0.ɵɵelement(1, "span", 57);
99
140
  i0.ɵɵelementEnd();
100
141
  } if (rf & 2) {
101
- const ch_r5 = i0.ɵɵnextContext().$implicit;
102
- i0.ɵɵclassProp("mj-profile__switch--on", ch_r5.enabled);
142
+ const ch_r6 = i0.ɵɵnextContext().$implicit;
143
+ i0.ɵɵclassProp("mj-profile__switch--on", ch_r6.enabled);
103
144
  } }
104
- function ProfileDialogComponent_Conditional_44_For_2_Template(rf, ctx) { if (rf & 1) {
105
- const _r4 = i0.ɵɵgetCurrentView();
106
- i0.ɵɵelementStart(0, "button", 50);
107
- i0.ɵɵlistener("click", function ProfileDialogComponent_Conditional_44_For_2_Template_button_click_0_listener() { const ch_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ToggleChannel(ch_r5)); });
108
- i0.ɵɵelementStart(1, "div", 51);
145
+ function ProfileDialogComponent_Conditional_45_For_2_Template(rf, ctx) { if (rf & 1) {
146
+ const _r5 = i0.ɵɵgetCurrentView();
147
+ i0.ɵɵelementStart(0, "button", 59);
148
+ i0.ɵɵlistener("click", function ProfileDialogComponent_Conditional_45_For_2_Template_button_click_0_listener() { const ch_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ToggleChannel(ch_r6)); });
149
+ i0.ɵɵelementStart(1, "div", 49);
109
150
  i0.ɵɵelement(2, "i");
110
151
  i0.ɵɵelementEnd();
111
- i0.ɵɵelementStart(3, "div", 52);
152
+ i0.ɵɵelementStart(3, "div", 51);
112
153
  i0.ɵɵtext(4);
113
154
  i0.ɵɵelementEnd();
114
155
  i0.ɵɵelementStart(5, "div", 53);
115
- i0.ɵɵconditionalCreate(6, ProfileDialogComponent_Conditional_44_For_2_Conditional_6_Template, 1, 0, "i", 48)(7, ProfileDialogComponent_Conditional_44_For_2_Conditional_7_Template, 2, 2, "span", 54);
156
+ i0.ɵɵconditionalCreate(6, ProfileDialogComponent_Conditional_45_For_2_Conditional_6_Template, 1, 0, "i", 54)(7, ProfileDialogComponent_Conditional_45_For_2_Conditional_7_Template, 2, 2, "span", 55);
116
157
  i0.ɵɵelementEnd()();
117
158
  } if (rf & 2) {
118
- const ch_r5 = ctx.$implicit;
119
- i0.ɵɵclassProp("mj-profile__channel--on", ch_r5.enabled);
120
- i0.ɵɵproperty("disabled", ch_r5.saving);
159
+ const ch_r6 = ctx.$implicit;
160
+ i0.ɵɵclassProp("mj-profile__channel--on", ch_r6.enabled);
161
+ i0.ɵɵproperty("disabled", ch_r6.saving);
121
162
  i0.ɵɵadvance(2);
122
- i0.ɵɵclassMap(ch_r5.icon);
163
+ i0.ɵɵclassMap(ch_r6.icon);
123
164
  i0.ɵɵadvance(2);
124
- i0.ɵɵtextInterpolate(ch_r5.label);
165
+ i0.ɵɵtextInterpolate(ch_r6.label);
125
166
  i0.ɵɵadvance(2);
126
- i0.ɵɵconditional(ch_r5.saving ? 6 : 7);
167
+ i0.ɵɵconditional(ch_r6.saving ? 6 : 7);
127
168
  } }
128
- function ProfileDialogComponent_Conditional_44_Template(rf, ctx) { if (rf & 1) {
169
+ function ProfileDialogComponent_Conditional_45_Template(rf, ctx) { if (rf & 1) {
129
170
  i0.ɵɵelementStart(0, "div", 31);
130
- i0.ɵɵrepeaterCreate(1, ProfileDialogComponent_Conditional_44_For_2_Template, 8, 7, "button", 49, _forTrack1);
171
+ i0.ɵɵrepeaterCreate(1, ProfileDialogComponent_Conditional_45_For_2_Template, 8, 7, "button", 58, _forTrack1);
131
172
  i0.ɵɵelementEnd();
132
173
  } if (rf & 2) {
133
174
  const ctx_r1 = i0.ɵɵnextContext();
134
175
  i0.ɵɵadvance();
135
176
  i0.ɵɵrepeater(ctx_r1.Channels);
136
177
  } }
137
- function ProfileDialogComponent_Conditional_59_Template(rf, ctx) { if (rf & 1) {
178
+ function ProfileDialogComponent_Conditional_60_Template(rf, ctx) { if (rf & 1) {
138
179
  i0.ɵɵelement(0, "mj-user-profile-settings");
139
180
  } }
140
- function ProfileDialogComponent_Conditional_60_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
141
- i0.ɵɵelementStart(0, "div", 62);
181
+ function ProfileDialogComponent_Conditional_61_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
182
+ i0.ɵɵelementStart(0, "div", 65);
142
183
  i0.ɵɵtext(1);
143
184
  i0.ɵɵelementEnd();
144
185
  } if (rf & 2) {
145
- const theme_r7 = i0.ɵɵnextContext().$implicit;
186
+ const theme_r8 = i0.ɵɵnextContext().$implicit;
146
187
  i0.ɵɵadvance();
147
- i0.ɵɵtextInterpolate(theme_r7.description);
188
+ i0.ɵɵtextInterpolate(theme_r8.description);
148
189
  } }
149
- function ProfileDialogComponent_Conditional_60_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
150
- i0.ɵɵelement(0, "i", 63);
190
+ function ProfileDialogComponent_Conditional_61_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
191
+ i0.ɵɵelement(0, "i", 66);
151
192
  } }
152
- function ProfileDialogComponent_Conditional_60_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
153
- i0.ɵɵelement(0, "i", 64);
193
+ function ProfileDialogComponent_Conditional_61_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
194
+ i0.ɵɵelement(0, "i", 67);
154
195
  } }
155
- function ProfileDialogComponent_Conditional_60_For_2_Template(rf, ctx) { if (rf & 1) {
156
- const _r6 = i0.ɵɵgetCurrentView();
157
- i0.ɵɵelementStart(0, "button", 58);
158
- i0.ɵɵlistener("click", function ProfileDialogComponent_Conditional_60_For_2_Template_button_click_0_listener() { const theme_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SelectTheme(theme_r7.id)); });
159
- i0.ɵɵelementStart(1, "div", 59);
196
+ function ProfileDialogComponent_Conditional_61_For_2_Template(rf, ctx) { if (rf & 1) {
197
+ const _r7 = i0.ɵɵgetCurrentView();
198
+ i0.ɵɵelementStart(0, "button", 61);
199
+ i0.ɵɵlistener("click", function ProfileDialogComponent_Conditional_61_For_2_Template_button_click_0_listener() { const theme_r8 = i0.ɵɵrestoreView(_r7).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SelectTheme(theme_r8.id)); });
200
+ i0.ɵɵelementStart(1, "div", 62);
160
201
  i0.ɵɵelement(2, "i");
161
202
  i0.ɵɵelementEnd();
162
- i0.ɵɵelementStart(3, "div", 60)(4, "div", 61);
203
+ i0.ɵɵelementStart(3, "div", 63)(4, "div", 64);
163
204
  i0.ɵɵtext(5);
164
205
  i0.ɵɵelementEnd();
165
- i0.ɵɵconditionalCreate(6, ProfileDialogComponent_Conditional_60_For_2_Conditional_6_Template, 2, 1, "div", 62);
206
+ i0.ɵɵconditionalCreate(6, ProfileDialogComponent_Conditional_61_For_2_Conditional_6_Template, 2, 1, "div", 65);
166
207
  i0.ɵɵelementEnd();
167
- i0.ɵɵconditionalCreate(7, ProfileDialogComponent_Conditional_60_For_2_Conditional_7_Template, 1, 0, "i", 63)(8, ProfileDialogComponent_Conditional_60_For_2_Conditional_8_Template, 1, 0, "i", 64);
208
+ i0.ɵɵconditionalCreate(7, ProfileDialogComponent_Conditional_61_For_2_Conditional_7_Template, 1, 0, "i", 66)(8, ProfileDialogComponent_Conditional_61_For_2_Conditional_8_Template, 1, 0, "i", 67);
168
209
  i0.ɵɵelementEnd();
169
210
  } if (rf & 2) {
170
- const theme_r7 = ctx.$implicit;
211
+ const theme_r8 = ctx.$implicit;
171
212
  const ctx_r1 = i0.ɵɵnextContext(2);
172
- i0.ɵɵclassProp("mj-profile__theme--active", theme_r7.id === ctx_r1.ThemePreference)("mj-profile__theme--saving", ctx_r1.SavingTheme === theme_r7.id);
213
+ i0.ɵɵclassProp("mj-profile__theme--active", theme_r8.id === ctx_r1.ThemePreference)("mj-profile__theme--saving", ctx_r1.SavingTheme === theme_r8.id);
173
214
  i0.ɵɵproperty("disabled", !!ctx_r1.SavingTheme);
174
215
  i0.ɵɵadvance();
175
- i0.ɵɵclassMap("mj-profile__theme-swatch--" + theme_r7.swatch);
216
+ i0.ɵɵclassMap("mj-profile__theme-swatch--" + theme_r8.swatch);
176
217
  i0.ɵɵadvance();
177
- i0.ɵɵclassMap(theme_r7.icon);
218
+ i0.ɵɵclassMap(theme_r8.icon);
178
219
  i0.ɵɵadvance(3);
179
- i0.ɵɵtextInterpolate(theme_r7.name);
220
+ i0.ɵɵtextInterpolate(theme_r8.name);
180
221
  i0.ɵɵadvance();
181
- i0.ɵɵconditional(theme_r7.description ? 6 : -1);
222
+ i0.ɵɵconditional(theme_r8.description ? 6 : -1);
182
223
  i0.ɵɵadvance();
183
- i0.ɵɵconditional(ctx_r1.SavingTheme === theme_r7.id ? 7 : theme_r7.id === ctx_r1.ThemePreference ? 8 : -1);
224
+ i0.ɵɵconditional(ctx_r1.SavingTheme === theme_r8.id ? 7 : theme_r8.id === ctx_r1.ThemePreference ? 8 : -1);
184
225
  } }
185
- function ProfileDialogComponent_Conditional_60_Template(rf, ctx) { if (rf & 1) {
226
+ function ProfileDialogComponent_Conditional_61_Template(rf, ctx) { if (rf & 1) {
186
227
  i0.ɵɵelementStart(0, "div", 43);
187
- i0.ɵɵrepeaterCreate(1, ProfileDialogComponent_Conditional_60_For_2_Template, 9, 12, "button", 57, _forTrack2);
228
+ i0.ɵɵrepeaterCreate(1, ProfileDialogComponent_Conditional_61_For_2_Template, 9, 12, "button", 60, _forTrack2);
188
229
  i0.ɵɵelementEnd();
189
230
  } if (rf & 2) {
190
231
  const ctx_r1 = i0.ɵɵnextContext();
@@ -215,6 +256,14 @@ export class ProfileDialogComponent extends BaseAngularComponent {
215
256
  { key: 'SMS', label: 'SMS', icon: 'fa-solid fa-mobile', enabled: false, saving: false }
216
257
  ];
217
258
  UnreadCount = 0;
259
+ // Omnibar per-user opt-in (shown only when the instance makes it available)
260
+ OmnibarAvailable = false;
261
+ OmnibarEnabled = false;
262
+ SavingOmnibar = false;
263
+ /** Platform-correct summon-shortcut label ('⌘K' on Mac, 'Ctrl+K' elsewhere). */
264
+ get OmnibarShortcutLabel() {
265
+ return GetOmnibarShortcutLabel();
266
+ }
218
267
  // Slide-in panel state
219
268
  ActivePanel = 'none';
220
269
  ThemeOptions = [];
@@ -236,6 +285,8 @@ export class ProfileDialogComponent extends BaseAngularComponent {
236
285
  this.populateIdentity();
237
286
  this.populateThemeOptions();
238
287
  this.loadNotifications();
288
+ this.OmnibarAvailable = IsOmnibarAvailable();
289
+ this.OmnibarEnabled = IsOmnibarEnabledForUser();
239
290
  this.themeSub = this.themeService.Preference$.subscribe(pref => {
240
291
  this.ThemePreference = pref;
241
292
  this.ThemeLabel = this.computeThemeLabel();
@@ -292,6 +343,32 @@ export class ProfileDialogComponent extends BaseAngularComponent {
292
343
  this.cdr.markForCheck();
293
344
  }
294
345
  }
346
+ /**
347
+ * Per-user omnibar opt-in/out. Persists via UserInfoEngine (MJ: User
348
+ * Settings) so the choice follows the user across browsers/devices. The
349
+ * shell reads the same setting on every change-detection pass, so the
350
+ * header affordance and Ctrl+K behavior flip live — no reload needed.
351
+ */
352
+ async ToggleOmnibar() {
353
+ if (this.SavingOmnibar)
354
+ return;
355
+ const next = !this.OmnibarEnabled;
356
+ this.SavingOmnibar = true;
357
+ this.cdr.markForCheck();
358
+ try {
359
+ const saved = await UserInfoEngine.Instance.SetSetting(OMNIBAR_USER_SETTING_KEY, String(next));
360
+ if (saved) {
361
+ this.OmnibarEnabled = next;
362
+ }
363
+ else {
364
+ this.sharedService.CreateSimpleNotification('Could not save the command palette preference', 'error', 3000);
365
+ }
366
+ }
367
+ finally {
368
+ this.SavingOmnibar = false;
369
+ this.cdr.markForCheck();
370
+ }
371
+ }
295
372
  async ToggleChannel(channel) {
296
373
  if (channel.saving)
297
374
  return;
@@ -451,7 +528,7 @@ export class ProfileDialogComponent extends BaseAngularComponent {
451
528
  return preference === 'system' ? `${themeName} · System` : themeName;
452
529
  }
453
530
  static ɵfac = /*@__PURE__*/ (() => { let ɵProfileDialogComponent_BaseFactory; return function ProfileDialogComponent_Factory(__ngFactoryType__) { return (ɵProfileDialogComponent_BaseFactory || (ɵProfileDialogComponent_BaseFactory = i0.ɵɵgetInheritedFactory(ProfileDialogComponent)))(__ngFactoryType__ || ProfileDialogComponent); }; })();
454
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ProfileDialogComponent, selectors: [["mj-profile-dialog"]], inputs: { AvatarUrl: "AvatarUrl", AvatarIconClass: "AvatarIconClass" }, outputs: { CloseRequested: "CloseRequested" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 61, vars: 16, consts: [["role", "document", 1, "mj-profile"], ["type", "button", "aria-label", "Close", 1, "mj-profile__close", 3, "click"], [1, "fa-solid", "fa-xmark"], [1, "mj-profile__main"], [1, "mj-profile__hero"], [1, "mj-profile__hero-title"], [1, "mj-profile__avatar-zone"], ["alt", "", 1, "mj-profile__avatar", "mj-profile__avatar--img", 3, "src"], [1, "mj-profile__avatar", "mj-profile__avatar--icon"], [1, "mj-profile__avatar"], ["type", "button", "title", "Change photo", 1, "mj-profile__avatar-edit", 3, "click"], [1, "fa-solid", "fa-camera"], [1, "mj-profile__identity"], [1, "mj-profile__name"], [1, "mj-profile__email"], [1, "mj-profile__chips"], [1, "mj-profile__field-list"], [1, "mj-profile__field"], [1, "mj-profile__field-icon"], [1, "fa-solid", "fa-id-badge"], [1, "mj-profile__field-body"], [1, "mj-profile__field-label"], [1, "mj-profile__field-value"], [1, "mj-profile__field-muted"], ["type", "button", 1, "mj-profile__field", "mj-profile__field--button", 3, "click"], [1, "fa-solid", "fa-palette"], [1, "fa-solid", "fa-chevron-right", "mj-profile__field-chev"], [1, "mj-profile__section"], [1, "mj-profile__section-head"], [1, "mj-profile__unread"], [1, "mj-profile__channels-loading"], [1, "mj-profile__channels"], [1, "mj-profile__footer"], ["type", "button", 1, "mj-profile__btn", "mj-profile__btn--danger", 3, "click"], [1, "fa-solid", "fa-arrow-right-from-bracket"], [1, "mj-profile__spacer"], ["type", "button", 1, "mj-profile__btn", "mj-profile__btn--primary", 3, "click"], [1, "mj-profile__panel"], [1, "mj-profile__panel-header"], ["type", "button", "aria-label", "Back", 1, "mj-profile__panel-back", 3, "click"], [1, "fa-solid", "fa-arrow-left"], [1, "mj-profile__panel-title"], [1, "mj-profile__panel-body"], [1, "mj-profile__themes"], ["alt", "", 1, "mj-profile__avatar", "mj-profile__avatar--img", 3, "error", "src"], [1, "mj-profile__chip", 3, "class"], [1, "mj-profile__chip"], [3, "class"], [1, "fa-solid", "fa-spinner", "fa-spin"], ["type", "button", 1, "mj-profile__channel", 3, "mj-profile__channel--on", "disabled"], ["type", "button", 1, "mj-profile__channel", 3, "click", "disabled"], [1, "mj-profile__channel-icon"], [1, "mj-profile__channel-label"], [1, "mj-profile__channel-state"], [1, "mj-profile__switch", 3, "mj-profile__switch--on"], [1, "mj-profile__switch"], [1, "mj-profile__switch-knob"], ["type", "button", 1, "mj-profile__theme", 3, "mj-profile__theme--active", "mj-profile__theme--saving", "disabled"], ["type", "button", 1, "mj-profile__theme", 3, "click", "disabled"], [1, "mj-profile__theme-swatch"], [1, "mj-profile__theme-info"], [1, "mj-profile__theme-name"], [1, "mj-profile__theme-desc"], [1, "fa-solid", "fa-spinner", "fa-spin", "mj-profile__theme-check"], [1, "fa-solid", "fa-check", "mj-profile__theme-check"]], template: function ProfileDialogComponent_Template(rf, ctx) { if (rf & 1) {
531
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ProfileDialogComponent, selectors: [["mj-profile-dialog"]], inputs: { AvatarUrl: "AvatarUrl", AvatarIconClass: "AvatarIconClass" }, outputs: { CloseRequested: "CloseRequested" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 62, vars: 17, consts: [["role", "document", 1, "mj-profile"], ["type", "button", "aria-label", "Close", 1, "mj-profile__close", 3, "click"], [1, "fa-solid", "fa-xmark"], [1, "mj-profile__main"], [1, "mj-profile__hero"], [1, "mj-profile__hero-title"], [1, "mj-profile__avatar-zone"], ["alt", "", 1, "mj-profile__avatar", "mj-profile__avatar--img", 3, "src"], [1, "mj-profile__avatar", "mj-profile__avatar--icon"], [1, "mj-profile__avatar"], ["type", "button", "title", "Change photo", 1, "mj-profile__avatar-edit", 3, "click"], [1, "fa-solid", "fa-camera"], [1, "mj-profile__identity"], [1, "mj-profile__name"], [1, "mj-profile__email"], [1, "mj-profile__chips"], [1, "mj-profile__field-list"], [1, "mj-profile__field"], [1, "mj-profile__field-icon"], [1, "fa-solid", "fa-id-badge"], [1, "mj-profile__field-body"], [1, "mj-profile__field-label"], [1, "mj-profile__field-value"], [1, "mj-profile__field-muted"], ["type", "button", 1, "mj-profile__field", "mj-profile__field--button", 3, "click"], [1, "fa-solid", "fa-palette"], [1, "fa-solid", "fa-chevron-right", "mj-profile__field-chev"], [1, "mj-profile__section"], [1, "mj-profile__section-head"], [1, "mj-profile__unread"], [1, "mj-profile__channels-loading"], [1, "mj-profile__channels"], [1, "mj-profile__footer"], ["type", "button", 1, "mj-profile__btn", "mj-profile__btn--danger", 3, "click"], [1, "fa-solid", "fa-arrow-right-from-bracket"], [1, "mj-profile__spacer"], ["type", "button", 1, "mj-profile__btn", "mj-profile__btn--primary", 3, "click"], [1, "mj-profile__panel"], [1, "mj-profile__panel-header"], ["type", "button", "aria-label", "Back", 1, "mj-profile__panel-back", 3, "click"], [1, "fa-solid", "fa-arrow-left"], [1, "mj-profile__panel-title"], [1, "mj-profile__panel-body"], [1, "mj-profile__themes"], ["alt", "", 1, "mj-profile__avatar", "mj-profile__avatar--img", 3, "error", "src"], [1, "mj-profile__chip", 3, "class"], [1, "mj-profile__chip"], [3, "class"], ["type", "button", "data-testid", "omnibar-toggle", 1, "mj-profile__channel", 3, "click", "disabled"], [1, "mj-profile__channel-icon"], [1, "fa-solid", "fa-magnifying-glass"], [1, "mj-profile__channel-label"], [1, "mj-profile__channel-hint"], [1, "mj-profile__channel-state"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "mj-profile__switch", 3, "mj-profile__switch--on"], [1, "mj-profile__switch"], [1, "mj-profile__switch-knob"], ["type", "button", 1, "mj-profile__channel", 3, "mj-profile__channel--on", "disabled"], ["type", "button", 1, "mj-profile__channel", 3, "click", "disabled"], ["type", "button", 1, "mj-profile__theme", 3, "mj-profile__theme--active", "mj-profile__theme--saving", "disabled"], ["type", "button", 1, "mj-profile__theme", 3, "click", "disabled"], [1, "mj-profile__theme-swatch"], [1, "mj-profile__theme-info"], [1, "mj-profile__theme-name"], [1, "mj-profile__theme-desc"], [1, "fa-solid", "fa-spinner", "fa-spin", "mj-profile__theme-check"], [1, "fa-solid", "fa-check", "mj-profile__theme-check"]], template: function ProfileDialogComponent_Template(rf, ctx) { if (rf & 1) {
455
532
  i0.ɵɵelementStart(0, "div", 0)(1, "button", 1);
456
533
  i0.ɵɵlistener("click", function ProfileDialogComponent_Template_button_click_1_listener() { return ctx.OnCloseClick(); });
457
534
  i0.ɵɵelement(2, "i", 2);
@@ -496,32 +573,33 @@ export class ProfileDialogComponent extends BaseAngularComponent {
496
573
  i0.ɵɵelementEnd()();
497
574
  i0.ɵɵelement(37, "i", 26);
498
575
  i0.ɵɵelementEnd()();
499
- i0.ɵɵelementStart(38, "div", 27)(39, "div", 28)(40, "h4");
500
- i0.ɵɵtext(41, "Notifications");
576
+ i0.ɵɵconditionalCreate(38, ProfileDialogComponent_Conditional_38_Template, 15, 5, "div", 27);
577
+ i0.ɵɵelementStart(39, "div", 27)(40, "div", 28)(41, "h4");
578
+ i0.ɵɵtext(42, "Notifications");
501
579
  i0.ɵɵelementEnd();
502
- i0.ɵɵconditionalCreate(42, ProfileDialogComponent_Conditional_42_Template, 2, 1, "span", 29);
580
+ i0.ɵɵconditionalCreate(43, ProfileDialogComponent_Conditional_43_Template, 2, 1, "span", 29);
503
581
  i0.ɵɵelementEnd();
504
- i0.ɵɵconditionalCreate(43, ProfileDialogComponent_Conditional_43_Template, 3, 0, "div", 30)(44, ProfileDialogComponent_Conditional_44_Template, 3, 0, "div", 31);
582
+ i0.ɵɵconditionalCreate(44, ProfileDialogComponent_Conditional_44_Template, 3, 0, "div", 30)(45, ProfileDialogComponent_Conditional_45_Template, 3, 0, "div", 31);
505
583
  i0.ɵɵelementEnd();
506
- i0.ɵɵelementStart(45, "div", 32)(46, "button", 33);
507
- i0.ɵɵlistener("click", function ProfileDialogComponent_Template_button_click_46_listener() { return ctx.OnSignOut(); });
508
- i0.ɵɵelement(47, "i", 34);
509
- i0.ɵɵtext(48, " Sign out ");
584
+ i0.ɵɵelementStart(46, "div", 32)(47, "button", 33);
585
+ i0.ɵɵlistener("click", function ProfileDialogComponent_Template_button_click_47_listener() { return ctx.OnSignOut(); });
586
+ i0.ɵɵelement(48, "i", 34);
587
+ i0.ɵɵtext(49, " Sign out ");
510
588
  i0.ɵɵelementEnd();
511
- i0.ɵɵelement(49, "span", 35);
512
- i0.ɵɵelementStart(50, "button", 36);
513
- i0.ɵɵlistener("click", function ProfileDialogComponent_Template_button_click_50_listener() { return ctx.OnCloseClick(); });
514
- i0.ɵɵtext(51, " Done ");
589
+ i0.ɵɵelement(50, "span", 35);
590
+ i0.ɵɵelementStart(51, "button", 36);
591
+ i0.ɵɵlistener("click", function ProfileDialogComponent_Template_button_click_51_listener() { return ctx.OnCloseClick(); });
592
+ i0.ɵɵtext(52, " Done ");
515
593
  i0.ɵɵelementEnd()()();
516
- i0.ɵɵelementStart(52, "div", 37)(53, "div", 38)(54, "button", 39);
517
- i0.ɵɵlistener("click", function ProfileDialogComponent_Template_button_click_54_listener() { return ctx.ClosePanel(); });
518
- i0.ɵɵelement(55, "i", 40);
594
+ i0.ɵɵelementStart(53, "div", 37)(54, "div", 38)(55, "button", 39);
595
+ i0.ɵɵlistener("click", function ProfileDialogComponent_Template_button_click_55_listener() { return ctx.ClosePanel(); });
596
+ i0.ɵɵelement(56, "i", 40);
519
597
  i0.ɵɵelementEnd();
520
- i0.ɵɵelementStart(56, "h3", 41);
521
- i0.ɵɵtext(57);
598
+ i0.ɵɵelementStart(57, "h3", 41);
599
+ i0.ɵɵtext(58);
522
600
  i0.ɵɵelementEnd()();
523
- i0.ɵɵelementStart(58, "div", 42);
524
- i0.ɵɵconditionalCreate(59, ProfileDialogComponent_Conditional_59_Template, 1, 0, "mj-user-profile-settings")(60, ProfileDialogComponent_Conditional_60_Template, 3, 0, "div", 43);
601
+ i0.ɵɵelementStart(59, "div", 42);
602
+ i0.ɵɵconditionalCreate(60, ProfileDialogComponent_Conditional_60_Template, 1, 0, "mj-user-profile-settings")(61, ProfileDialogComponent_Conditional_61_Template, 3, 0, "div", 43);
525
603
  i0.ɵɵelementEnd()()();
526
604
  } if (rf & 2) {
527
605
  i0.ɵɵclassProp("mj-profile--panel-open", ctx.ActivePanel !== "none");
@@ -539,17 +617,19 @@ export class ProfileDialogComponent extends BaseAngularComponent {
539
617
  i0.ɵɵconditional(ctx.MemberSince ? 28 : -1);
540
618
  i0.ɵɵadvance(8);
541
619
  i0.ɵɵtextInterpolate(ctx.ThemeLabel);
542
- i0.ɵɵadvance(6);
543
- i0.ɵɵconditional(ctx.UnreadCount > 0 ? 42 : -1);
620
+ i0.ɵɵadvance(2);
621
+ i0.ɵɵconditional(ctx.OmnibarAvailable ? 38 : -1);
622
+ i0.ɵɵadvance(5);
623
+ i0.ɵɵconditional(ctx.UnreadCount > 0 ? 43 : -1);
544
624
  i0.ɵɵadvance();
545
- i0.ɵɵconditional(ctx.LoadingNotifications ? 43 : 44);
625
+ i0.ɵɵconditional(ctx.LoadingNotifications ? 44 : 45);
546
626
  i0.ɵɵadvance(9);
547
627
  i0.ɵɵclassProp("mj-profile__panel--open", ctx.ActivePanel !== "none");
548
628
  i0.ɵɵadvance(5);
549
629
  i0.ɵɵtextInterpolate(ctx.PanelTitle);
550
630
  i0.ɵɵadvance(2);
551
- i0.ɵɵconditional(ctx.ActivePanel === "photo" ? 59 : ctx.ActivePanel === "theme" ? 60 : -1);
552
- } }, dependencies: [CommonModule, ExplorerSettingsModule, i1.UserProfileSettingsComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n width: 100%;\n height: 100%;\n}\n.mj-profile[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%]:hover { background: rgba(255, 255, 255, 0.3); }\n.mj-profile--panel-open[_ngcontent-%COMP%] .mj-profile__close[_ngcontent-%COMP%] { opacity: 0; pointer-events: none; }\n\n\n\n.mj-profile__main[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] .mj-profile__main[_ngcontent-%COMP%] {\n transform: translateX(-12%);\n pointer-events: none;\n}\n\n.mj-profile__hero[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%]::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: _ngcontent-%COMP%_mj-profile-rotate 24s linear infinite;\n pointer-events: none;\n}\n@media (prefers-reduced-motion: reduce) {\n .mj-profile__hero[_ngcontent-%COMP%]::before { animation: none; }\n}\n@keyframes _ngcontent-%COMP%_mj-profile-rotate { to { transform: rotate(360deg); } }\n\n.mj-profile__hero-title[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\n position: relative;\n width: 96px;\n height: 96px;\n margin: -48px auto 12px;\n z-index: 2;\n}\n.mj-profile__avatar[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] { background: var(--mj-bg-surface-card); }\n.mj-profile__avatar--icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 36px; }\n\n.mj-profile__avatar-edit[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%]:hover { transform: scale(1.1); }\n\n.mj-profile__identity[_ngcontent-%COMP%] {\n text-align: center;\n padding: 0 24px 16px;\n flex-shrink: 0;\n}\n.mj-profile__name[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n justify-content: center;\n}\n.mj-profile__chip[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\n background: color-mix(in srgb, #f59e0b 14%, transparent);\n color: #b45309;\n}\n.mj-profile__chip--dev[_ngcontent-%COMP%] {\n background: color-mix(in srgb, #10b981 14%, transparent);\n color: #047857;\n}\n\n.mj-profile__field-list[_ngcontent-%COMP%] {\n padding: 0 24px;\n flex-shrink: 0;\n}\n.mj-profile__field[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%]:first-child { border-top: none; }\n.mj-profile__field--button[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] + .mj-profile__field--button[_ngcontent-%COMP%] { margin-top: 0; }\n.mj-profile__field--button[_ngcontent-%COMP%]:hover { background: var(--mj-bg-surface-hover); }\n.mj-profile__field--button[_ngcontent-%COMP%]:hover .mj-profile__field-chev[_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n.mj-profile__field-icon[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] { flex: 1; min-width: 0; }\n.mj-profile__field-label[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] { color: var(--mj-text-muted); }\n.mj-profile__field-chev[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 11px;\n transition: color 0.15s;\n}\n\n.mj-profile__section[_ngcontent-%COMP%] {\n padding: 16px 24px 8px;\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n}\n.mj-profile__section-head[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 10px;\n}\n.mj-profile__section-head[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 12.5px;\n padding: 12px;\n text-align: center;\n}\n.mj-profile__channels[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.mj-profile__channel[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%]:hover:not(:disabled) {\n border-color: var(--mj-border-default);\n background: var(--mj-bg-surface-hover);\n}\n.mj-profile__channel[_ngcontent-%COMP%]:disabled { cursor: wait; opacity: 0.7; }\n.mj-profile__channel-icon[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] .mj-profile__channel-icon[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 14%, transparent);\n color: var(--mj-brand-primary);\n}\n.mj-profile__channel-label[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 13.5px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n.mj-profile__channel-state[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] { background: var(--mj-brand-primary); }\n.mj-profile__switch--on[_ngcontent-%COMP%] .mj-profile__switch-knob[_ngcontent-%COMP%] { transform: translateX(16px); }\n\n.mj-profile__footer[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] { flex: 1; }\n.mj-profile__btn[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%]:hover { background: var(--mj-bg-surface-hover); border-color: var(--mj-border-strong); }\n.mj-profile__btn--primary[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%]: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[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-error) 8%, transparent);\n border-color: var(--mj-status-error);\n}\n\n\n\n.mj-profile__panel[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\n transform: translateX(0);\n box-shadow: -8px 0 24px rgba(0, 0, 0, 0.06);\n}\n.mj-profile__panel-header[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%]: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[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n padding: 16px 20px 20px;\n}\n\n\n\n.mj-profile__themes[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.mj-profile__theme[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%]:hover:not(:disabled) {\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-hover);\n}\n.mj-profile__theme[_ngcontent-%COMP%]:disabled { cursor: wait; opacity: 0.7; }\n.mj-profile__theme--active[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #ffffff 0%, #f1f5f9 100%);\n color: #f59e0b;\n}\n.mj-profile__theme-swatch--dark[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%);\n color: #94a3b8;\n border-color: #334155;\n}\n.mj-profile__theme-swatch--system[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] { flex: 1; min-width: 0; }\n.mj-profile__theme-name[_ngcontent-%COMP%] {\n font-size: 13.5px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n.mj-profile__theme-desc[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] { padding: 20px 18px 48px; }\n .mj-profile__avatar-zone[_ngcontent-%COMP%] { width: 88px; height: 88px; margin-top: -44px; }\n .mj-profile__avatar[_ngcontent-%COMP%] { width: 88px; height: 88px; font-size: 28px; }\n .mj-profile__name[_ngcontent-%COMP%] { font-size: 19px; }\n .mj-profile__field-list[_ngcontent-%COMP%], \n .mj-profile__section[_ngcontent-%COMP%] { padding-left: 18px; padding-right: 18px; }\n .mj-profile__footer[_ngcontent-%COMP%] { padding: 12px 16px; }\n .mj-profile--panel-open[_ngcontent-%COMP%] .mj-profile__main[_ngcontent-%COMP%] { transform: translateX(-20%); }\n .mj-profile__panel-body[_ngcontent-%COMP%] { padding: 14px 16px 16px; }\n}"] });
631
+ i0.ɵɵconditional(ctx.ActivePanel === "photo" ? 60 : ctx.ActivePanel === "theme" ? 61 : -1);
632
+ } }, dependencies: [CommonModule, ExplorerSettingsModule, i1.UserProfileSettingsComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n width: 100%;\n height: 100%;\n}\n.mj-profile[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%]:hover { background: rgba(255, 255, 255, 0.3); }\n.mj-profile--panel-open[_ngcontent-%COMP%] .mj-profile__close[_ngcontent-%COMP%] { opacity: 0; pointer-events: none; }\n\n\n\n.mj-profile__main[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] .mj-profile__main[_ngcontent-%COMP%] {\n transform: translateX(-12%);\n pointer-events: none;\n}\n\n.mj-profile__hero[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%]::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: _ngcontent-%COMP%_mj-profile-rotate 24s linear infinite;\n pointer-events: none;\n}\n@media (prefers-reduced-motion: reduce) {\n .mj-profile__hero[_ngcontent-%COMP%]::before { animation: none; }\n}\n@keyframes _ngcontent-%COMP%_mj-profile-rotate { to { transform: rotate(360deg); } }\n\n.mj-profile__hero-title[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\n position: relative;\n width: 96px;\n height: 96px;\n margin: -48px auto 12px;\n z-index: 2;\n}\n.mj-profile__avatar[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] { background: var(--mj-bg-surface-card); }\n.mj-profile__avatar--icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 36px; }\n\n.mj-profile__avatar-edit[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%]:hover { transform: scale(1.1); }\n\n.mj-profile__identity[_ngcontent-%COMP%] {\n text-align: center;\n padding: 0 24px 16px;\n flex-shrink: 0;\n}\n.mj-profile__name[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n justify-content: center;\n}\n.mj-profile__chip[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\n background: color-mix(in srgb, #f59e0b 14%, transparent);\n color: #b45309;\n}\n.mj-profile__chip--dev[_ngcontent-%COMP%] {\n background: color-mix(in srgb, #10b981 14%, transparent);\n color: #047857;\n}\n\n.mj-profile__field-list[_ngcontent-%COMP%] {\n padding: 0 24px;\n flex-shrink: 0;\n}\n.mj-profile__field[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%]:first-child { border-top: none; }\n.mj-profile__field--button[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] + .mj-profile__field--button[_ngcontent-%COMP%] { margin-top: 0; }\n.mj-profile__field--button[_ngcontent-%COMP%]:hover { background: var(--mj-bg-surface-hover); }\n.mj-profile__field--button[_ngcontent-%COMP%]:hover .mj-profile__field-chev[_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n.mj-profile__field-icon[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] { flex: 1; min-width: 0; }\n.mj-profile__field-label[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] { color: var(--mj-text-muted); }\n.mj-profile__field-chev[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 11px;\n transition: color 0.15s;\n}\n\n.mj-profile__section[_ngcontent-%COMP%] {\n padding: 16px 24px 8px;\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n}\n.mj-profile__section-head[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 10px;\n}\n.mj-profile__section-head[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 12.5px;\n padding: 12px;\n text-align: center;\n}\n.mj-profile__channels[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.mj-profile__channel[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%]:hover:not(:disabled) {\n border-color: var(--mj-border-default);\n background: var(--mj-bg-surface-hover);\n}\n.mj-profile__channel[_ngcontent-%COMP%]:disabled { cursor: wait; opacity: 0.7; }\n.mj-profile__channel-icon[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] .mj-profile__channel-icon[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 14%, transparent);\n color: var(--mj-brand-primary);\n}\n.mj-profile__channel-label[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 13.5px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n.mj-profile__channel-hint[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] { background: var(--mj-brand-primary); }\n.mj-profile__switch--on[_ngcontent-%COMP%] .mj-profile__switch-knob[_ngcontent-%COMP%] { transform: translateX(16px); }\n\n.mj-profile__footer[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] { flex: 1; }\n.mj-profile__btn[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%]:hover { background: var(--mj-bg-surface-hover); border-color: var(--mj-border-strong); }\n.mj-profile__btn--primary[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%]: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[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-error) 8%, transparent);\n border-color: var(--mj-status-error);\n}\n\n\n\n.mj-profile__panel[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\n transform: translateX(0);\n box-shadow: -8px 0 24px rgba(0, 0, 0, 0.06);\n}\n.mj-profile__panel-header[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%]: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[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n padding: 16px 20px 20px;\n}\n\n\n\n.mj-profile__themes[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.mj-profile__theme[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%]:hover:not(:disabled) {\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-hover);\n}\n.mj-profile__theme[_ngcontent-%COMP%]:disabled { cursor: wait; opacity: 0.7; }\n.mj-profile__theme--active[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #ffffff 0%, #f1f5f9 100%);\n color: #f59e0b;\n}\n.mj-profile__theme-swatch--dark[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%);\n color: #94a3b8;\n border-color: #334155;\n}\n.mj-profile__theme-swatch--system[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] { flex: 1; min-width: 0; }\n.mj-profile__theme-name[_ngcontent-%COMP%] {\n font-size: 13.5px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n.mj-profile__theme-desc[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] {\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[_ngcontent-%COMP%] { padding: 20px 18px 48px; }\n .mj-profile__avatar-zone[_ngcontent-%COMP%] { width: 88px; height: 88px; margin-top: -44px; }\n .mj-profile__avatar[_ngcontent-%COMP%] { width: 88px; height: 88px; font-size: 28px; }\n .mj-profile__name[_ngcontent-%COMP%] { font-size: 19px; }\n .mj-profile__field-list[_ngcontent-%COMP%], \n .mj-profile__section[_ngcontent-%COMP%] { padding-left: 18px; padding-right: 18px; }\n .mj-profile__footer[_ngcontent-%COMP%] { padding: 12px 16px; }\n .mj-profile--panel-open[_ngcontent-%COMP%] .mj-profile__main[_ngcontent-%COMP%] { transform: translateX(-20%); }\n .mj-profile__panel-body[_ngcontent-%COMP%] { padding: 14px 16px 16px; }\n}"] });
553
633
  }
554
634
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ProfileDialogComponent, [{
555
635
  type: Component,
@@ -621,6 +701,37 @@ export class ProfileDialogComponent extends BaseAngularComponent {
621
701
  </button>
622
702
  </div>
623
703
 
704
+ @if (OmnibarAvailable) {
705
+ <div class="mj-profile__section">
706
+ <div class="mj-profile__section-head">
707
+ <h4>Command Palette</h4>
708
+ </div>
709
+ <div class="mj-profile__channels">
710
+ <button type="button"
711
+ class="mj-profile__channel"
712
+ data-testid="omnibar-toggle"
713
+ [class.mj-profile__channel--on]="OmnibarEnabled"
714
+ [disabled]="SavingOmnibar"
715
+ (click)="ToggleOmnibar()">
716
+ <div class="mj-profile__channel-icon"><i class="fa-solid fa-magnifying-glass"></i></div>
717
+ <div class="mj-profile__channel-label">
718
+ Unified command palette
719
+ <div class="mj-profile__channel-hint">{{ OmnibarShortcutLabel }} — search, records, agents &amp; commands in one bar</div>
720
+ </div>
721
+ <div class="mj-profile__channel-state">
722
+ @if (SavingOmnibar) {
723
+ <i class="fa-solid fa-spinner fa-spin"></i>
724
+ } @else {
725
+ <span class="mj-profile__switch" [class.mj-profile__switch--on]="OmnibarEnabled">
726
+ <span class="mj-profile__switch-knob"></span>
727
+ </span>
728
+ }
729
+ </div>
730
+ </button>
731
+ </div>
732
+ </div>
733
+ }
734
+
624
735
  <div class="mj-profile__section">
625
736
  <div class="mj-profile__section-head">
626
737
  <h4>Notifications</h4>
@@ -710,7 +821,7 @@ export class ProfileDialogComponent extends BaseAngularComponent {
710
821
  </div>
711
822
  </div>
712
823
  </div>
713
- `, 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-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 "] }]
824
+ `, 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 "] }]
714
825
  }], null, { CloseRequested: [{
715
826
  type: Output
716
827
  }], AvatarUrl: [{
@@ -718,5 +829,5 @@ export class ProfileDialogComponent extends BaseAngularComponent {
718
829
  }], AvatarIconClass: [{
719
830
  type: Input
720
831
  }] }); })();
721
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ProfileDialogComponent, { className: "ProfileDialogComponent", filePath: "src/lib/profile/profile-dialog.component.ts", lineNumber: 720 }); })();
832
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ProfileDialogComponent, { className: "ProfileDialogComponent", filePath: "src/lib/profile/profile-dialog.component.ts", lineNumber: 759 }); })();
722
833
  //# sourceMappingURL=profile-dialog.component.js.map