@memberjunction/ng-explorer-core 5.49.0 → 5.50.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 (27) hide show
  1. package/dist/lib/omnibar/omnibar-palette.component.js +98 -96
  2. package/dist/lib/omnibar/omnibar-palette.component.js.map +1 -1
  3. package/dist/lib/resource-wrappers/view-resource.component.d.ts +19 -16
  4. package/dist/lib/resource-wrappers/view-resource.component.d.ts.map +1 -1
  5. package/dist/lib/resource-wrappers/view-resource.component.js +127 -121
  6. package/dist/lib/resource-wrappers/view-resource.component.js.map +1 -1
  7. package/dist/lib/shell/components/header/app-nav.component.d.ts +84 -9
  8. package/dist/lib/shell/components/header/app-nav.component.d.ts.map +1 -1
  9. package/dist/lib/shell/components/header/app-nav.component.js +380 -41
  10. package/dist/lib/shell/components/header/app-nav.component.js.map +1 -1
  11. package/dist/lib/shell/components/header/app-switcher.component.d.ts +159 -29
  12. package/dist/lib/shell/components/header/app-switcher.component.d.ts.map +1 -1
  13. package/dist/lib/shell/components/header/app-switcher.component.js +822 -116
  14. package/dist/lib/shell/components/header/app-switcher.component.js.map +1 -1
  15. package/dist/lib/shell/services/sharing-center-dialog-host.component.d.ts +10 -1
  16. package/dist/lib/shell/services/sharing-center-dialog-host.component.d.ts.map +1 -1
  17. package/dist/lib/shell/services/sharing-center-dialog-host.component.js +30 -4
  18. package/dist/lib/shell/services/sharing-center-dialog-host.component.js.map +1 -1
  19. package/dist/lib/shell/shell.component.d.ts +3 -0
  20. package/dist/lib/shell/shell.component.d.ts.map +1 -1
  21. package/dist/lib/shell/shell.component.js +22 -12
  22. package/dist/lib/shell/shell.component.js.map +1 -1
  23. package/dist/lib/shell/shell.module.d.ts +1 -1
  24. package/dist/lib/shell/shell.module.d.ts.map +1 -1
  25. package/dist/lib/shell/shell.module.js +3 -1
  26. package/dist/lib/shell/shell.module.js.map +1 -1
  27. package/package.json +51 -51
@@ -15,7 +15,7 @@ const _c0 = ["paletteInput"];
15
15
  const _forTrack0 = ($index, $item) => $item.ID;
16
16
  const _forTrack1 = ($index, $item) => $item.Char;
17
17
  const _forTrack2 = ($index, $item) => $item.Suggestion.id;
18
- function OmnibarPaletteComponent_Conditional_0_Conditional_4_Template(rf, ctx) { if (rf & 1) {
18
+ function OmnibarPaletteComponent_Conditional_0_Conditional_5_Template(rf, ctx) { if (rf & 1) {
19
19
  i0.ɵɵelementStart(0, "b");
20
20
  i0.ɵɵtext(1);
21
21
  i0.ɵɵelementEnd();
@@ -24,13 +24,13 @@ function OmnibarPaletteComponent_Conditional_0_Conditional_4_Template(rf, ctx) {
24
24
  i0.ɵɵadvance();
25
25
  i0.ɵɵtextInterpolate(ctx_r1.ActiveTriggerChar);
26
26
  } }
27
- function OmnibarPaletteComponent_Conditional_0_Conditional_5_Template(rf, ctx) { if (rf & 1) {
28
- i0.ɵɵelement(0, "i", 5);
27
+ function OmnibarPaletteComponent_Conditional_0_Conditional_6_Template(rf, ctx) { if (rf & 1) {
28
+ i0.ɵɵelement(0, "i", 6);
29
29
  } }
30
- function OmnibarPaletteComponent_Conditional_0_Conditional_14_For_4_Template(rf, ctx) { if (rf & 1) {
30
+ function OmnibarPaletteComponent_Conditional_0_Conditional_15_For_4_Template(rf, ctx) { if (rf & 1) {
31
31
  const _r4 = i0.ɵɵgetCurrentView();
32
- i0.ɵɵelementStart(0, "button", 20);
33
- i0.ɵɵlistener("click", function OmnibarPaletteComponent_Conditional_0_Conditional_14_For_4_Template_button_click_0_listener() { const scope_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.ToggleScope(scope_r5.ID)); });
32
+ i0.ɵɵelementStart(0, "button", 21);
33
+ i0.ɵɵlistener("click", function OmnibarPaletteComponent_Conditional_0_Conditional_15_For_4_Template_button_click_0_listener() { const scope_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.ToggleScope(scope_r5.ID)); });
34
34
  i0.ɵɵtext(1);
35
35
  i0.ɵɵelementEnd();
36
36
  } if (rf & 2) {
@@ -40,13 +40,13 @@ function OmnibarPaletteComponent_Conditional_0_Conditional_14_For_4_Template(rf,
40
40
  i0.ɵɵadvance();
41
41
  i0.ɵɵtextInterpolate(scope_r5.Name);
42
42
  } }
43
- function OmnibarPaletteComponent_Conditional_0_Conditional_14_Template(rf, ctx) { if (rf & 1) {
43
+ function OmnibarPaletteComponent_Conditional_0_Conditional_15_Template(rf, ctx) { if (rf & 1) {
44
44
  const _r3 = i0.ɵɵgetCurrentView();
45
- i0.ɵɵelementStart(0, "div", 11)(1, "button", 20);
46
- i0.ɵɵlistener("click", function OmnibarPaletteComponent_Conditional_0_Conditional_14_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ClearScopes()); });
45
+ i0.ɵɵelementStart(0, "div", 12)(1, "button", 21);
46
+ i0.ɵɵlistener("click", function OmnibarPaletteComponent_Conditional_0_Conditional_15_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ClearScopes()); });
47
47
  i0.ɵɵtext(2, "All sources");
48
48
  i0.ɵɵelementEnd();
49
- i0.ɵɵrepeaterCreate(3, OmnibarPaletteComponent_Conditional_0_Conditional_14_For_4_Template, 2, 3, "button", 21, _forTrack0);
49
+ i0.ɵɵrepeaterCreate(3, OmnibarPaletteComponent_Conditional_0_Conditional_15_For_4_Template, 2, 3, "button", 22, _forTrack0);
50
50
  i0.ɵɵelementEnd();
51
51
  } if (rf & 2) {
52
52
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -55,16 +55,16 @@ function OmnibarPaletteComponent_Conditional_0_Conditional_14_Template(rf, ctx)
55
55
  i0.ɵɵadvance(2);
56
56
  i0.ɵɵrepeater(ctx_r1.Scopes);
57
57
  } }
58
- function OmnibarPaletteComponent_Conditional_0_Conditional_16_Template(rf, ctx) { if (rf & 1) {
59
- i0.ɵɵelementStart(0, "div", 13);
60
- i0.ɵɵelement(1, "i", 22);
58
+ function OmnibarPaletteComponent_Conditional_0_Conditional_17_Template(rf, ctx) { if (rf & 1) {
59
+ i0.ɵɵelementStart(0, "div", 14);
60
+ i0.ɵɵelement(1, "i", 23);
61
61
  i0.ɵɵtext(2, " Searching\u2026");
62
62
  i0.ɵɵelementEnd();
63
63
  } }
64
- function OmnibarPaletteComponent_Conditional_0_Conditional_17_For_2_Template(rf, ctx) { if (rf & 1) {
64
+ function OmnibarPaletteComponent_Conditional_0_Conditional_18_For_2_Template(rf, ctx) { if (rf & 1) {
65
65
  const _r6 = i0.ɵɵgetCurrentView();
66
- i0.ɵɵelementStart(0, "button", 25);
67
- i0.ɵɵlistener("click", function OmnibarPaletteComponent_Conditional_0_Conditional_17_For_2_Template_button_click_0_listener() { const hint_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.SeedTrigger(hint_r7.Char)); });
66
+ i0.ɵɵelementStart(0, "button", 26);
67
+ i0.ɵɵlistener("click", function OmnibarPaletteComponent_Conditional_0_Conditional_18_For_2_Template_button_click_0_listener() { const hint_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.SeedTrigger(hint_r7.Char)); });
68
68
  i0.ɵɵelementStart(1, "b");
69
69
  i0.ɵɵtext(2);
70
70
  i0.ɵɵelementEnd();
@@ -78,28 +78,28 @@ function OmnibarPaletteComponent_Conditional_0_Conditional_17_For_2_Template(rf,
78
78
  i0.ɵɵadvance(2);
79
79
  i0.ɵɵtextInterpolate(hint_r7.Label);
80
80
  } }
81
- function OmnibarPaletteComponent_Conditional_0_Conditional_17_Conditional_3_For_4_Template(rf, ctx) { if (rf & 1) {
81
+ function OmnibarPaletteComponent_Conditional_0_Conditional_18_Conditional_3_For_4_Template(rf, ctx) { if (rf & 1) {
82
82
  const _r8 = i0.ɵɵgetCurrentView();
83
- i0.ɵɵelementStart(0, "div", 28);
84
- i0.ɵɵlistener("focus", function OmnibarPaletteComponent_Conditional_0_Conditional_17_Conditional_3_For_4_Template_div_focus_0_listener() { const ɵ$index_65_r9 = i0.ɵɵrestoreView(_r8).$index; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.SelectedIndex = ctx_r1.RecentBaseIndex + ɵ$index_65_r9); })("keydown", function OmnibarPaletteComponent_Conditional_0_Conditional_17_Conditional_3_For_4_Template_div_keydown_0_listener($event) { const row_r10 = i0.ɵɵrestoreView(_r8).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OnRowKeydown($event, row_r10.Suggestion)); })("mouseenter", function OmnibarPaletteComponent_Conditional_0_Conditional_17_Conditional_3_For_4_Template_div_mouseenter_0_listener() { const ɵ$index_65_r9 = i0.ɵɵrestoreView(_r8).$index; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.SelectedIndex = ctx_r1.RecentBaseIndex + ɵ$index_65_r9); })("click", function OmnibarPaletteComponent_Conditional_0_Conditional_17_Conditional_3_For_4_Template_div_click_0_listener() { const row_r10 = i0.ɵɵrestoreView(_r8).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.Execute(row_r10.Suggestion)); });
85
- i0.ɵɵelementStart(1, "span", 29);
83
+ i0.ɵɵelementStart(0, "div", 29);
84
+ i0.ɵɵlistener("focus", function OmnibarPaletteComponent_Conditional_0_Conditional_18_Conditional_3_For_4_Template_div_focus_0_listener() { const ɵ$index_67_r9 = i0.ɵɵrestoreView(_r8).$index; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.SelectedIndex = ctx_r1.RecentBaseIndex + ɵ$index_67_r9); })("keydown", function OmnibarPaletteComponent_Conditional_0_Conditional_18_Conditional_3_For_4_Template_div_keydown_0_listener($event) { const row_r10 = i0.ɵɵrestoreView(_r8).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OnRowKeydown($event, row_r10.Suggestion)); })("mouseenter", function OmnibarPaletteComponent_Conditional_0_Conditional_18_Conditional_3_For_4_Template_div_mouseenter_0_listener() { const ɵ$index_67_r9 = i0.ɵɵrestoreView(_r8).$index; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.SelectedIndex = ctx_r1.RecentBaseIndex + ɵ$index_67_r9); })("click", function OmnibarPaletteComponent_Conditional_0_Conditional_18_Conditional_3_For_4_Template_div_click_0_listener() { const row_r10 = i0.ɵɵrestoreView(_r8).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.Execute(row_r10.Suggestion)); });
85
+ i0.ɵɵelementStart(1, "span", 30);
86
86
  i0.ɵɵelement(2, "i");
87
87
  i0.ɵɵelementEnd();
88
- i0.ɵɵelementStart(3, "span", 30)(4, "span", 31);
88
+ i0.ɵɵelementStart(3, "span", 31)(4, "span", 32);
89
89
  i0.ɵɵtext(5);
90
90
  i0.ɵɵelementEnd();
91
- i0.ɵɵelementStart(6, "span", 32);
91
+ i0.ɵɵelementStart(6, "span", 33);
92
92
  i0.ɵɵtext(7);
93
93
  i0.ɵɵelementEnd()();
94
- i0.ɵɵelementStart(8, "span", 33)(9, "span", 34);
94
+ i0.ɵɵelementStart(8, "span", 34)(9, "span", 35);
95
95
  i0.ɵɵtext(10);
96
96
  i0.ɵɵelementEnd()()();
97
97
  } if (rf & 2) {
98
98
  const row_r10 = ctx.$implicit;
99
- const ɵ$index_65_r9 = ctx.$index;
99
+ const ɵ$index_67_r9 = ctx.$index;
100
100
  const ctx_r1 = i0.ɵɵnextContext(4);
101
- i0.ɵɵclassProp("ob-row--sel", ctx_r1.RecentBaseIndex + ɵ$index_65_r9 === ctx_r1.SelectedIndex);
102
- i0.ɵɵattribute("id", "ob-opt-" + (ctx_r1.RecentBaseIndex + ɵ$index_65_r9))("tabindex", ctx_r1.RecentBaseIndex + ɵ$index_65_r9 === ctx_r1.SelectedIndex ? 0 : -1)("aria-selected", ctx_r1.RecentBaseIndex + ɵ$index_65_r9 === ctx_r1.SelectedIndex);
101
+ i0.ɵɵclassProp("ob-row--sel", ctx_r1.RecentBaseIndex + ɵ$index_67_r9 === ctx_r1.SelectedIndex);
102
+ i0.ɵɵattribute("id", "ob-opt-" + (ctx_r1.RecentBaseIndex + ɵ$index_67_r9))("tabindex", ctx_r1.RecentBaseIndex + ɵ$index_67_r9 === ctx_r1.SelectedIndex ? 0 : -1)("aria-selected", ctx_r1.RecentBaseIndex + ɵ$index_67_r9 === ctx_r1.SelectedIndex);
103
103
  i0.ɵɵadvance(2);
104
104
  i0.ɵɵclassMap(row_r10.Suggestion.icon || "fa-solid fa-clock-rotate-left");
105
105
  i0.ɵɵadvance(3);
@@ -109,23 +109,23 @@ function OmnibarPaletteComponent_Conditional_0_Conditional_17_Conditional_3_For_
109
109
  i0.ɵɵadvance(3);
110
110
  i0.ɵɵtextInterpolate(row_r10.Suggestion.type);
111
111
  } }
112
- function OmnibarPaletteComponent_Conditional_0_Conditional_17_Conditional_3_Template(rf, ctx) { if (rf & 1) {
113
- i0.ɵɵelementStart(0, "div", 26);
112
+ function OmnibarPaletteComponent_Conditional_0_Conditional_18_Conditional_3_Template(rf, ctx) { if (rf & 1) {
113
+ i0.ɵɵelementStart(0, "div", 27);
114
114
  i0.ɵɵtext(1, "Recent");
115
115
  i0.ɵɵelementEnd();
116
- i0.ɵɵelementStart(2, "div", 15);
117
- i0.ɵɵrepeaterCreate(3, OmnibarPaletteComponent_Conditional_0_Conditional_17_Conditional_3_For_4_Template, 11, 10, "div", 27, _forTrack2);
116
+ i0.ɵɵelementStart(2, "div", 16);
117
+ i0.ɵɵrepeaterCreate(3, OmnibarPaletteComponent_Conditional_0_Conditional_18_Conditional_3_For_4_Template, 11, 10, "div", 28, _forTrack2);
118
118
  i0.ɵɵelementEnd();
119
119
  } if (rf & 2) {
120
120
  const ctx_r1 = i0.ɵɵnextContext(3);
121
121
  i0.ɵɵadvance(3);
122
122
  i0.ɵɵrepeater(ctx_r1.RecentRows);
123
123
  } }
124
- function OmnibarPaletteComponent_Conditional_0_Conditional_17_Template(rf, ctx) { if (rf & 1) {
125
- i0.ɵɵelementStart(0, "div", 23);
126
- i0.ɵɵrepeaterCreate(1, OmnibarPaletteComponent_Conditional_0_Conditional_17_For_2_Template, 5, 2, "button", 24, _forTrack1);
124
+ function OmnibarPaletteComponent_Conditional_0_Conditional_18_Template(rf, ctx) { if (rf & 1) {
125
+ i0.ɵɵelementStart(0, "div", 24);
126
+ i0.ɵɵrepeaterCreate(1, OmnibarPaletteComponent_Conditional_0_Conditional_18_For_2_Template, 5, 2, "button", 25, _forTrack1);
127
127
  i0.ɵɵelementEnd();
128
- i0.ɵɵconditionalCreate(3, OmnibarPaletteComponent_Conditional_0_Conditional_17_Conditional_3_Template, 5, 0);
128
+ i0.ɵɵconditionalCreate(3, OmnibarPaletteComponent_Conditional_0_Conditional_18_Conditional_3_Template, 5, 0);
129
129
  } if (rf & 2) {
130
130
  const ctx_r1 = i0.ɵɵnextContext(2);
131
131
  i0.ɵɵadvance();
@@ -133,10 +133,10 @@ function OmnibarPaletteComponent_Conditional_0_Conditional_17_Template(rf, ctx)
133
133
  i0.ɵɵadvance(2);
134
134
  i0.ɵɵconditional(ctx_r1.RecentRows.length > 0 ? 3 : -1);
135
135
  } }
136
- function OmnibarPaletteComponent_Conditional_0_Conditional_18_Template(rf, ctx) { if (rf & 1) {
137
- i0.ɵɵelementStart(0, "div", 14);
136
+ function OmnibarPaletteComponent_Conditional_0_Conditional_19_Template(rf, ctx) { if (rf & 1) {
137
+ i0.ɵɵelementStart(0, "div", 15);
138
138
  i0.ɵɵtext(1, "No matches \u2014 press ");
139
- i0.ɵɵelementStart(2, "kbd", 8);
139
+ i0.ɵɵelementStart(2, "kbd", 9);
140
140
  i0.ɵɵtext(3, "\u21B5");
141
141
  i0.ɵɵelementEnd();
142
142
  i0.ɵɵtext(4);
@@ -146,8 +146,8 @@ function OmnibarPaletteComponent_Conditional_0_Conditional_18_Template(rf, ctx)
146
146
  i0.ɵɵadvance(4);
147
147
  i0.ɵɵtextInterpolate1(" to search everything for \u201C", ctx_r1.EffectiveQuery, "\u201D.");
148
148
  } }
149
- function OmnibarPaletteComponent_Conditional_0_Conditional_19_For_2_Conditional_0_Template(rf, ctx) { if (rf & 1) {
150
- i0.ɵɵelementStart(0, "div", 26);
149
+ function OmnibarPaletteComponent_Conditional_0_Conditional_20_For_2_Conditional_0_Template(rf, ctx) { if (rf & 1) {
150
+ i0.ɵɵelementStart(0, "div", 27);
151
151
  i0.ɵɵtext(1);
152
152
  i0.ɵɵelementEnd();
153
153
  } if (rf & 2) {
@@ -155,8 +155,8 @@ function OmnibarPaletteComponent_Conditional_0_Conditional_19_For_2_Conditional_
155
155
  i0.ɵɵadvance();
156
156
  i0.ɵɵtextInterpolate(row_r12.GroupLabel);
157
157
  } }
158
- function OmnibarPaletteComponent_Conditional_0_Conditional_19_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
159
- i0.ɵɵelementStart(0, "span", 32);
158
+ function OmnibarPaletteComponent_Conditional_0_Conditional_20_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
159
+ i0.ɵɵelementStart(0, "span", 33);
160
160
  i0.ɵɵtext(1);
161
161
  i0.ɵɵelementEnd();
162
162
  } if (rf & 2) {
@@ -164,8 +164,8 @@ function OmnibarPaletteComponent_Conditional_0_Conditional_19_For_2_Conditional_
164
164
  i0.ɵɵadvance();
165
165
  i0.ɵɵtextInterpolate(row_r12.Suggestion.description);
166
166
  } }
167
- function OmnibarPaletteComponent_Conditional_0_Conditional_19_For_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
168
- i0.ɵɵelementStart(0, "span", 35);
167
+ function OmnibarPaletteComponent_Conditional_0_Conditional_20_For_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
168
+ i0.ɵɵelementStart(0, "span", 36);
169
169
  i0.ɵɵelement(1, "i");
170
170
  i0.ɵɵelementEnd();
171
171
  } if (rf & 2) {
@@ -173,37 +173,37 @@ function OmnibarPaletteComponent_Conditional_0_Conditional_19_For_2_Conditional_
173
173
  i0.ɵɵadvance();
174
174
  i0.ɵɵstyleProp("width", row_r12.ScorePercent, "%");
175
175
  } }
176
- function OmnibarPaletteComponent_Conditional_0_Conditional_19_For_2_Template(rf, ctx) { if (rf & 1) {
176
+ function OmnibarPaletteComponent_Conditional_0_Conditional_20_For_2_Template(rf, ctx) { if (rf & 1) {
177
177
  const _r11 = i0.ɵɵgetCurrentView();
178
- i0.ɵɵconditionalCreate(0, OmnibarPaletteComponent_Conditional_0_Conditional_19_For_2_Conditional_0_Template, 2, 1, "div", 26);
179
- i0.ɵɵelementStart(1, "div", 28);
180
- i0.ɵɵlistener("focus", function OmnibarPaletteComponent_Conditional_0_Conditional_19_For_2_Template_div_focus_1_listener() { const ɵ$index_96_r13 = i0.ɵɵrestoreView(_r11).$index; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.SelectedIndex = ɵ$index_96_r13); })("keydown", function OmnibarPaletteComponent_Conditional_0_Conditional_19_For_2_Template_div_keydown_1_listener($event) { const row_r12 = i0.ɵɵrestoreView(_r11).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnRowKeydown($event, row_r12.Suggestion)); })("mouseenter", function OmnibarPaletteComponent_Conditional_0_Conditional_19_For_2_Template_div_mouseenter_1_listener() { const ɵ$index_96_r13 = i0.ɵɵrestoreView(_r11).$index; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.SelectedIndex = ɵ$index_96_r13); })("click", function OmnibarPaletteComponent_Conditional_0_Conditional_19_For_2_Template_div_click_1_listener() { const row_r12 = i0.ɵɵrestoreView(_r11).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.Execute(row_r12.Suggestion)); });
181
- i0.ɵɵelementStart(2, "span", 29);
178
+ i0.ɵɵconditionalCreate(0, OmnibarPaletteComponent_Conditional_0_Conditional_20_For_2_Conditional_0_Template, 2, 1, "div", 27);
179
+ i0.ɵɵelementStart(1, "div", 29);
180
+ i0.ɵɵlistener("focus", function OmnibarPaletteComponent_Conditional_0_Conditional_20_For_2_Template_div_focus_1_listener() { const ɵ$index_98_r13 = i0.ɵɵrestoreView(_r11).$index; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.SelectedIndex = ɵ$index_98_r13); })("keydown", function OmnibarPaletteComponent_Conditional_0_Conditional_20_For_2_Template_div_keydown_1_listener($event) { const row_r12 = i0.ɵɵrestoreView(_r11).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnRowKeydown($event, row_r12.Suggestion)); })("mouseenter", function OmnibarPaletteComponent_Conditional_0_Conditional_20_For_2_Template_div_mouseenter_1_listener() { const ɵ$index_98_r13 = i0.ɵɵrestoreView(_r11).$index; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.SelectedIndex = ɵ$index_98_r13); })("click", function OmnibarPaletteComponent_Conditional_0_Conditional_20_For_2_Template_div_click_1_listener() { const row_r12 = i0.ɵɵrestoreView(_r11).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.Execute(row_r12.Suggestion)); });
181
+ i0.ɵɵelementStart(2, "span", 30);
182
182
  i0.ɵɵelement(3, "i");
183
183
  i0.ɵɵelementEnd();
184
- i0.ɵɵelementStart(4, "span", 30)(5, "span", 31);
184
+ i0.ɵɵelementStart(4, "span", 31)(5, "span", 32);
185
185
  i0.ɵɵtext(6);
186
186
  i0.ɵɵelementEnd();
187
- i0.ɵɵconditionalCreate(7, OmnibarPaletteComponent_Conditional_0_Conditional_19_For_2_Conditional_7_Template, 2, 1, "span", 32);
187
+ i0.ɵɵconditionalCreate(7, OmnibarPaletteComponent_Conditional_0_Conditional_20_For_2_Conditional_7_Template, 2, 1, "span", 33);
188
188
  i0.ɵɵelementEnd();
189
- i0.ɵɵelementStart(8, "span", 33);
190
- i0.ɵɵconditionalCreate(9, OmnibarPaletteComponent_Conditional_0_Conditional_19_For_2_Conditional_9_Template, 2, 2, "span", 35);
191
- i0.ɵɵelementStart(10, "span", 34);
189
+ i0.ɵɵelementStart(8, "span", 34);
190
+ i0.ɵɵconditionalCreate(9, OmnibarPaletteComponent_Conditional_0_Conditional_20_For_2_Conditional_9_Template, 2, 2, "span", 36);
191
+ i0.ɵɵelementStart(10, "span", 35);
192
192
  i0.ɵɵtext(11);
193
193
  i0.ɵɵelementEnd();
194
- i0.ɵɵelementStart(12, "span", 36);
194
+ i0.ɵɵelementStart(12, "span", 37);
195
195
  i0.ɵɵtext(13, "open ");
196
- i0.ɵɵelementStart(14, "kbd", 8);
196
+ i0.ɵɵelementStart(14, "kbd", 9);
197
197
  i0.ɵɵtext(15, "\u21B5");
198
198
  i0.ɵɵelementEnd()()()();
199
199
  } if (rf & 2) {
200
200
  const row_r12 = ctx.$implicit;
201
- const ɵ$index_96_r13 = ctx.$index;
201
+ const ɵ$index_98_r13 = ctx.$index;
202
202
  const ctx_r1 = i0.ɵɵnextContext(3);
203
203
  i0.ɵɵconditional(row_r12.GroupLabel ? 0 : -1);
204
204
  i0.ɵɵadvance();
205
- i0.ɵɵclassProp("ob-row--sel", ɵ$index_96_r13 === ctx_r1.SelectedIndex);
206
- i0.ɵɵattribute("id", "ob-opt-" + ɵ$index_96_r13)("tabindex", ɵ$index_96_r13 === ctx_r1.SelectedIndex ? 0 : -1)("aria-selected", ɵ$index_96_r13 === ctx_r1.SelectedIndex);
205
+ i0.ɵɵclassProp("ob-row--sel", ɵ$index_98_r13 === ctx_r1.SelectedIndex);
206
+ i0.ɵɵattribute("id", "ob-opt-" + ɵ$index_98_r13)("tabindex", ɵ$index_98_r13 === ctx_r1.SelectedIndex ? 0 : -1)("aria-selected", ɵ$index_98_r13 === ctx_r1.SelectedIndex);
207
207
  i0.ɵɵadvance(2);
208
208
  i0.ɵɵclassMap(row_r12.Suggestion.icon || "fa-solid fa-circle");
209
209
  i0.ɵɵadvance(3);
@@ -215,9 +215,9 @@ function OmnibarPaletteComponent_Conditional_0_Conditional_19_For_2_Template(rf,
215
215
  i0.ɵɵadvance(2);
216
216
  i0.ɵɵtextInterpolate(row_r12.Suggestion.type);
217
217
  } }
218
- function OmnibarPaletteComponent_Conditional_0_Conditional_19_Template(rf, ctx) { if (rf & 1) {
219
- i0.ɵɵelementStart(0, "div", 15);
220
- i0.ɵɵrepeaterCreate(1, OmnibarPaletteComponent_Conditional_0_Conditional_19_For_2_Template, 16, 12, null, null, _forTrack2);
218
+ function OmnibarPaletteComponent_Conditional_0_Conditional_20_Template(rf, ctx) { if (rf & 1) {
219
+ i0.ɵɵelementStart(0, "div", 16);
220
+ i0.ɵɵrepeaterCreate(1, OmnibarPaletteComponent_Conditional_0_Conditional_20_For_2_Template, 16, 12, null, null, _forTrack2);
221
221
  i0.ɵɵelementEnd();
222
222
  } if (rf & 2) {
223
223
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -231,58 +231,60 @@ function OmnibarPaletteComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
231
231
  i0.ɵɵelementEnd();
232
232
  i0.ɵɵelementStart(1, "div", 2);
233
233
  i0.ɵɵlistener("keydown", function OmnibarPaletteComponent_Conditional_0_Template_div_keydown_1_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnPaletteKeydown($event)); });
234
- i0.ɵɵelementStart(2, "div", 3)(3, "span", 4);
235
- i0.ɵɵconditionalCreate(4, OmnibarPaletteComponent_Conditional_0_Conditional_4_Template, 2, 1, "b")(5, OmnibarPaletteComponent_Conditional_0_Conditional_5_Template, 1, 0, "i", 5);
236
- i0.ɵɵelementEnd();
237
- i0.ɵɵelementStart(6, "input", 6, 0);
238
- i0.ɵɵlistener("ngModelChange", function OmnibarPaletteComponent_Conditional_0_Template_input_ngModelChange_6_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnQueryChange($event)); })("keydown", function OmnibarPaletteComponent_Conditional_0_Template_input_keydown_6_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnInputKeydown($event)); });
234
+ i0.ɵɵelementStart(2, "div", 3)(3, "div", 4)(4, "span", 5);
235
+ i0.ɵɵconditionalCreate(5, OmnibarPaletteComponent_Conditional_0_Conditional_5_Template, 2, 1, "b")(6, OmnibarPaletteComponent_Conditional_0_Conditional_6_Template, 1, 0, "i", 6);
239
236
  i0.ɵɵelementEnd();
240
- i0.ɵɵelementStart(8, "span", 7);
241
- i0.ɵɵtext(9);
237
+ i0.ɵɵelementStart(7, "input", 7, 0);
238
+ i0.ɵɵlistener("ngModelChange", function OmnibarPaletteComponent_Conditional_0_Template_input_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnQueryChange($event)); })("keydown", function OmnibarPaletteComponent_Conditional_0_Template_input_keydown_7_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnInputKeydown($event)); });
242
239
  i0.ɵɵelementEnd();
243
- i0.ɵɵelementStart(10, "kbd", 8);
244
- i0.ɵɵtext(11, "esc");
240
+ i0.ɵɵelementStart(9, "span", 8);
241
+ i0.ɵɵtext(10);
245
242
  i0.ɵɵelementEnd();
246
- i0.ɵɵelementStart(12, "button", 9);
247
- i0.ɵɵlistener("click", function OmnibarPaletteComponent_Conditional_0_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.Close()); });
248
- i0.ɵɵelement(13, "i", 10);
243
+ i0.ɵɵelementStart(11, "kbd", 9);
244
+ i0.ɵɵtext(12, "esc");
245
+ i0.ɵɵelementEnd()();
246
+ i0.ɵɵelementStart(13, "button", 10);
247
+ i0.ɵɵlistener("click", function OmnibarPaletteComponent_Conditional_0_Template_button_click_13_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.Close()); });
248
+ i0.ɵɵelement(14, "i", 11);
249
249
  i0.ɵɵelementEnd()();
250
- i0.ɵɵconditionalCreate(14, OmnibarPaletteComponent_Conditional_0_Conditional_14_Template, 5, 2, "div", 11);
251
- i0.ɵɵelementStart(15, "div", 12);
252
- i0.ɵɵconditionalCreate(16, OmnibarPaletteComponent_Conditional_0_Conditional_16_Template, 3, 0, "div", 13)(17, OmnibarPaletteComponent_Conditional_0_Conditional_17_Template, 4, 1)(18, OmnibarPaletteComponent_Conditional_0_Conditional_18_Template, 5, 1, "div", 14)(19, OmnibarPaletteComponent_Conditional_0_Conditional_19_Template, 3, 0, "div", 15);
250
+ i0.ɵɵconditionalCreate(15, OmnibarPaletteComponent_Conditional_0_Conditional_15_Template, 5, 2, "div", 12);
251
+ i0.ɵɵelementStart(16, "div", 13);
252
+ i0.ɵɵconditionalCreate(17, OmnibarPaletteComponent_Conditional_0_Conditional_17_Template, 3, 0, "div", 14)(18, OmnibarPaletteComponent_Conditional_0_Conditional_18_Template, 4, 1)(19, OmnibarPaletteComponent_Conditional_0_Conditional_19_Template, 5, 1, "div", 15)(20, OmnibarPaletteComponent_Conditional_0_Conditional_20_Template, 3, 0, "div", 16);
253
253
  i0.ɵɵelementEnd();
254
- i0.ɵɵelementStart(20, "div", 16)(21, "span", 17)(22, "kbd", 8);
255
- i0.ɵɵtext(23, "\u2191");
254
+ i0.ɵɵelementStart(21, "div", 17)(22, "span", 18)(23, "kbd", 9);
255
+ i0.ɵɵtext(24, "\u2191");
256
256
  i0.ɵɵelementEnd();
257
- i0.ɵɵelementStart(24, "kbd", 8);
258
- i0.ɵɵtext(25, "\u2193");
257
+ i0.ɵɵelementStart(25, "kbd", 9);
258
+ i0.ɵɵtext(26, "\u2193");
259
259
  i0.ɵɵelementEnd();
260
- i0.ɵɵtext(26, " navigate");
260
+ i0.ɵɵtext(27, " navigate");
261
261
  i0.ɵɵelementEnd();
262
- i0.ɵɵelementStart(27, "span", 17)(28, "kbd", 8);
263
- i0.ɵɵtext(29, "\u21B5");
262
+ i0.ɵɵelementStart(28, "span", 18)(29, "kbd", 9);
263
+ i0.ɵɵtext(30, "\u21B5");
264
264
  i0.ɵɵelementEnd();
265
- i0.ɵɵtext(30, " open");
265
+ i0.ɵɵtext(31, " open");
266
266
  i0.ɵɵelementEnd();
267
- i0.ɵɵelementStart(31, "button", 18);
268
- i0.ɵɵlistener("click", function OmnibarPaletteComponent_Conditional_0_Template_button_click_31_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.RequestSettings()); });
269
- i0.ɵɵelement(32, "i", 19);
270
- i0.ɵɵelementEnd()()();
267
+ i0.ɵɵelementStart(32, "button", 19);
268
+ i0.ɵɵlistener("click", function OmnibarPaletteComponent_Conditional_0_Template_button_click_32_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.RequestSettings()); });
269
+ i0.ɵɵelement(33, "i", 20);
270
+ i0.ɵɵelementStart(34, "span");
271
+ i0.ɵɵtext(35, "Settings");
272
+ i0.ɵɵelementEnd()()()();
271
273
  } if (rf & 2) {
272
274
  const ctx_r1 = i0.ɵɵnextContext();
273
- i0.ɵɵadvance(3);
275
+ i0.ɵɵadvance(4);
274
276
  i0.ɵɵclassProp("ob-lead--trigger", ctx_r1.ActiveTriggerChar.length > 0);
275
277
  i0.ɵɵadvance();
276
- i0.ɵɵconditional(ctx_r1.ActiveTriggerChar.length > 0 ? 4 : 5);
278
+ i0.ɵɵconditional(ctx_r1.ActiveTriggerChar.length > 0 ? 5 : 6);
277
279
  i0.ɵɵadvance(2);
278
280
  i0.ɵɵproperty("placeholder", ctx_r1.ActivePlaceholder)("ngModel", ctx_r1.Query);
279
281
  i0.ɵɵattribute("aria-expanded", ctx_r1.HasOptions)("aria-activedescendant", ctx_r1.ActiveDescendantId);
280
282
  i0.ɵɵadvance(3);
281
283
  i0.ɵɵtextInterpolate(ctx_r1.ActiveModeLabel);
282
284
  i0.ɵɵadvance(5);
283
- i0.ɵɵconditional(ctx_r1.ShowScopes && ctx_r1.Scopes.length > 0 ? 14 : -1);
285
+ i0.ɵɵconditional(ctx_r1.ShowScopes && ctx_r1.Scopes.length > 0 ? 15 : -1);
284
286
  i0.ɵɵadvance(2);
285
- i0.ɵɵconditional(ctx_r1.IsLoading ? 16 : ctx_r1.Rows.length === 0 && ctx_r1.Query.length === 0 ? 17 : ctx_r1.Rows.length === 0 ? 18 : 19);
287
+ i0.ɵɵconditional(ctx_r1.IsLoading ? 17 : ctx_r1.Rows.length === 0 && ctx_r1.Query.length === 0 ? 18 : ctx_r1.Rows.length === 0 ? 19 : 20);
286
288
  } }
287
289
  /** Debounce for the default (network-backed) search mode; trigger modes serve warm caches. */
288
290
  const SEARCH_DEBOUNCE_MS = 300;
@@ -811,15 +813,15 @@ export class OmnibarPaletteComponent {
811
813
  } if (rf & 2) {
812
814
  let _t;
813
815
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.inputRef = _t.first);
814
- } }, outputs: { Opened: "Opened", Closed: "Closed", SettingsRequested: "SettingsRequested" }, standalone: false, decls: 1, vars: 1, consts: [["paletteInput", ""], [1, "omnibar-overlay", 3, "click"], ["role", "dialog", "aria-modal", "true", "aria-label", "Command palette", 1, "omnibar-palette", 3, "keydown"], [1, "ob-input-row"], [1, "ob-lead"], [1, "fa-solid", "fa-magnifying-glass"], ["type", "text", "autocomplete", "off", "spellcheck", "false", "role", "combobox", "aria-controls", "ob-listbox", "aria-autocomplete", "list", 1, "ob-input", 3, "ngModelChange", "keydown", "placeholder", "ngModel"], [1, "ob-mode-badge"], [1, "ob-kbd"], ["type", "button", "aria-label", "Close", "title", "Close", 1, "ob-close", 3, "click"], [1, "fa-solid", "fa-xmark"], [1, "ob-scopes"], [1, "ob-body"], [1, "ob-loading"], [1, "ob-empty"], ["id", "ob-listbox", "role", "listbox", "aria-label", "Suggestions"], [1, "ob-foot"], [1, "ob-k"], ["type", "button", "aria-label", "Command Palette settings", "title", "Command Palette settings", 1, "ob-settings", 3, "click"], [1, "fa-solid", "fa-gear"], ["type", "button", 1, "ob-scope", 3, "click"], ["type", "button", 1, "ob-scope", 3, "ob-scope--on"], [1, "fa-solid", "fa-circle-notch", "fa-spin"], [1, "ob-hintbar"], ["type", "button", 1, "ob-hint-chip"], ["type", "button", 1, "ob-hint-chip", 3, "click"], ["role", "presentation", 1, "ob-group-label"], ["role", "option", 1, "ob-row", 3, "ob-row--sel"], ["role", "option", 1, "ob-row", 3, "focus", "keydown", "mouseenter", "click"], [1, "ob-ric"], [1, "ob-rmain"], [1, "ob-rname"], [1, "ob-rsub"], [1, "ob-raux"], [1, "ob-rtype"], [1, "ob-score"], [1, "ob-go"]], template: function OmnibarPaletteComponent_Template(rf, ctx) { if (rf & 1) {
815
- i0.ɵɵconditionalCreate(0, OmnibarPaletteComponent_Conditional_0_Template, 33, 10);
816
+ } }, outputs: { Opened: "Opened", Closed: "Closed", SettingsRequested: "SettingsRequested" }, standalone: false, decls: 1, vars: 1, consts: [["paletteInput", ""], [1, "omnibar-overlay", 3, "click"], ["role", "dialog", "aria-modal", "true", "aria-label", "Command palette", 1, "omnibar-palette", 3, "keydown"], [1, "ob-input-row"], [1, "ob-field"], [1, "ob-lead"], [1, "fa-solid", "fa-magnifying-glass"], ["type", "text", "autocomplete", "off", "spellcheck", "false", "role", "combobox", "aria-controls", "ob-listbox", "aria-autocomplete", "list", 1, "ob-input", 3, "ngModelChange", "keydown", "placeholder", "ngModel"], [1, "ob-mode-badge"], [1, "ob-kbd"], ["type", "button", "aria-label", "Close", "title", "Close", 1, "ob-close", 3, "click"], [1, "fa-solid", "fa-xmark"], [1, "ob-scopes"], [1, "ob-body"], [1, "ob-loading"], [1, "ob-empty"], ["id", "ob-listbox", "role", "listbox", "aria-label", "Suggestions"], [1, "ob-foot"], [1, "ob-k"], ["type", "button", "aria-label", "Command Palette settings", "title", "Command Palette settings", 1, "ob-settings", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-gear"], ["type", "button", 1, "ob-scope", 3, "click"], ["type", "button", 1, "ob-scope", 3, "ob-scope--on"], [1, "fa-solid", "fa-circle-notch", "fa-spin"], [1, "ob-hintbar"], ["type", "button", 1, "ob-hint-chip"], ["type", "button", 1, "ob-hint-chip", 3, "click"], ["role", "presentation", 1, "ob-group-label"], ["role", "option", 1, "ob-row", 3, "ob-row--sel"], ["role", "option", 1, "ob-row", 3, "focus", "keydown", "mouseenter", "click"], [1, "ob-ric"], [1, "ob-rmain"], [1, "ob-rname"], [1, "ob-rsub"], [1, "ob-raux"], [1, "ob-rtype"], [1, "ob-score"], [1, "ob-go"]], template: function OmnibarPaletteComponent_Template(rf, ctx) { if (rf & 1) {
817
+ i0.ɵɵconditionalCreate(0, OmnibarPaletteComponent_Conditional_0_Template, 36, 10);
816
818
  } if (rf & 2) {
817
819
  i0.ɵɵconditional(ctx.IsOpen ? 0 : -1);
818
- } }, dependencies: [i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgModel], styles: ["\n\n\n.omnibar-overlay[_ngcontent-%COMP%] {\n position: fixed;\n inset: 0;\n background: var(--mj-bg-overlay);\n z-index: 1400;\n}\n\n.omnibar-palette[_ngcontent-%COMP%] {\n position: fixed;\n left: 50%;\n top: 96px;\n transform: translateX(-50%);\n width: min(680px, 92vw);\n \n\n\n\n display: flex;\n flex-direction: column;\n max-height: calc(100vh - 96px - 24px);\n background: var(--mj-bg-surface-elevated);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-xl);\n box-shadow: var(--mj-shadow-lg, 0 20px 60px color-mix(in srgb, var(--mj-text-primary) 22%, transparent));\n z-index: 1401;\n overflow: hidden;\n animation: _ngcontent-%COMP%_ob-pop .13s ease-out;\n}\n\n@keyframes _ngcontent-%COMP%_ob-pop {\n from { opacity: 0; transform: translateX(-50%) scale(.985) translateY(-4px); }\n to { opacity: 1; transform: translateX(-50%) scale(1); }\n}\n\n.ob-input-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 15px 18px;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.ob-lead[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 15px;\n width: 18px;\n text-align: center;\n}\n\n.ob-lead--trigger[_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n.ob-lead[_ngcontent-%COMP%] b[_ngcontent-%COMP%] { font-family: ui-monospace, monospace; }\n\n.ob-input[_ngcontent-%COMP%] {\n flex: 1;\n border: none;\n outline: none;\n background: transparent;\n font-size: 16px;\n color: var(--mj-text-primary);\n font-family: inherit;\n}\n\n.ob-input[_ngcontent-%COMP%]::placeholder { color: var(--mj-text-muted); }\n\n.ob-mode-badge[_ngcontent-%COMP%] {\n font-size: 10.5px;\n font-weight: 700;\n letter-spacing: .4px;\n text-transform: uppercase;\n padding: 3px 9px;\n border-radius: var(--mj-radius-full, 999px);\n background: color-mix(in srgb, var(--mj-brand-primary) 14%, transparent);\n color: var(--mj-brand-primary);\n white-space: nowrap;\n}\n\n.ob-kbd[_ngcontent-%COMP%] {\n font-family: inherit;\n font-size: 10.5px;\n font-weight: 600;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-strong);\n border-bottom-width: 2px;\n border-radius: 5px;\n padding: 1.5px 6px;\n}\n\n.ob-close[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n padding: 0;\n border: none;\n border-radius: var(--mj-radius-full);\n background: transparent;\n color: var(--mj-text-muted);\n font-size: var(--mj-text-sm);\n cursor: pointer;\n transition: var(--mj-transition-colors);\n flex-shrink: 0;\n}\n.ob-close[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n.ob-scopes[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n padding: 9px 18px;\n border-bottom: 1px solid var(--mj-border-subtle);\n flex-wrap: wrap;\n}\n\n.ob-scope[_ngcontent-%COMP%] {\n font-size: 11px;\n padding: 3px 10px;\n border-radius: var(--mj-radius-full, 999px);\n border: 1px solid var(--mj-border-default);\n color: var(--mj-text-secondary);\n cursor: pointer;\n background: transparent;\n}\n\n.ob-scope--on[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.ob-body[_ngcontent-%COMP%] {\n flex: 1 1 auto;\n min-height: 0;\n overflow-y: auto;\n padding: 6px 0;\n}\n\n.ob-loading[_ngcontent-%COMP%], \n.ob-empty[_ngcontent-%COMP%] {\n padding: 18px;\n text-align: center;\n color: var(--mj-text-muted);\n font-size: 13px;\n}\n\n.ob-group-label[_ngcontent-%COMP%] {\n font-size: 10.5px;\n font-weight: 700;\n letter-spacing: .6px;\n text-transform: uppercase;\n color: var(--mj-text-muted);\n padding: 10px 18px 5px;\n}\n\n.ob-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 9px 18px;\n cursor: pointer;\n}\n\n\n\n\n.ob-row[_ngcontent-%COMP%]:focus { outline: none; }\n.ob-row[_ngcontent-%COMP%]:focus-visible { outline: 2px solid var(--mj-border-focus); outline-offset: -2px; }\n\n.ob-row--sel[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 9%, transparent);\n box-shadow: inset 3px 0 0 var(--mj-brand-primary);\n}\n\n.ob-ric[_ngcontent-%COMP%] {\n width: 30px;\n height: 30px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 13px;\n flex-shrink: 0;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.ob-row--sel[_ngcontent-%COMP%] .ob-ric[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 16%, transparent);\n color: var(--mj-brand-primary);\n}\n\n.ob-rmain[_ngcontent-%COMP%] { flex: 1; min-width: 0; display: flex; flex-direction: column; }\n\n.ob-rname[_ngcontent-%COMP%] {\n font-size: 13.5px;\n font-weight: 500;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n color: var(--mj-text-primary);\n}\n\n.ob-rsub[_ngcontent-%COMP%] {\n font-size: 11.5px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n margin-top: 1px;\n}\n\n.ob-raux[_ngcontent-%COMP%] { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }\n\n.ob-rtype[_ngcontent-%COMP%] {\n font-size: 10px;\n font-weight: 600;\n padding: 2px 8px;\n border-radius: var(--mj-radius-full, 999px);\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n text-transform: capitalize;\n}\n\n.ob-score[_ngcontent-%COMP%] {\n width: 52px;\n height: 4px;\n border-radius: 2px;\n background: var(--mj-bg-surface-sunken);\n overflow: hidden;\n}\n\n.ob-score[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { display: block; height: 100%; background: var(--mj-brand-primary); }\n\n.ob-go[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n opacity: 0;\n display: flex;\n gap: 6px;\n align-items: center;\n}\n\n.ob-row--sel[_ngcontent-%COMP%] .ob-go[_ngcontent-%COMP%] { opacity: 1; }\n\n.ob-hintbar[_ngcontent-%COMP%] { display: flex; gap: 8px; padding: 12px 18px; flex-wrap: wrap; }\n\n.ob-hint-chip[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 9px;\n padding: 9px 13px;\n border: 1px dashed var(--mj-border-strong);\n border-radius: 10px;\n cursor: pointer;\n background: transparent;\n}\n\n.ob-hint-chip[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, transparent);\n}\n\n.ob-hint-chip[_ngcontent-%COMP%] b[_ngcontent-%COMP%] { font-family: ui-monospace, monospace; color: var(--mj-brand-primary); font-size: 14px; }\n.ob-hint-chip[_ngcontent-%COMP%] span[_ngcontent-%COMP%] { font-size: 12px; color: var(--mj-text-secondary); }\n\n.ob-foot[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 10px 18px;\n border-top: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface-card);\n font-size: 11.5px;\n color: var(--mj-text-muted);\n}\n\n.ob-k[_ngcontent-%COMP%] { display: flex; align-items: center; gap: 5px; }\n\n\n\n.ob-settings[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n padding: 0;\n margin-left: auto;\n border: none;\n border-radius: var(--mj-radius-full);\n background: transparent;\n color: var(--mj-text-muted);\n font-size: var(--mj-text-xs);\n cursor: pointer;\n transition: var(--mj-transition-colors);\n}\n.ob-settings[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n\n\n\n\n\n@media (max-width: 640px) {\n .omnibar-palette[_ngcontent-%COMP%] {\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n transform: none;\n width: 100%;\n height: 100dvh;\n max-height: none; \n\n border-radius: 0;\n animation: none; \n\n display: flex;\n flex-direction: column;\n }\n\n \n\n .ob-body[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n max-height: none;\n }\n\n \n\n\n\n\n .ob-kbd[_ngcontent-%COMP%], \n .ob-go[_ngcontent-%COMP%], \n .ob-k[_ngcontent-%COMP%] {\n display: none;\n }\n\n \n\n .ob-close[_ngcontent-%COMP%], \n .ob-settings[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n font-size: var(--mj-text-base);\n }\n}"], changeDetection: 0 });
820
+ } }, dependencies: [i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgModel], styles: ["\n\n\n.omnibar-overlay[_ngcontent-%COMP%] {\n position: fixed;\n inset: 0;\n background: var(--mj-bg-overlay);\n z-index: 1400;\n}\n\n\n\n\n.omnibar-palette[_ngcontent-%COMP%] {\n position: fixed;\n left: 50%;\n top: calc(60px + var(--mj-connectivity-banner-height, 0px) + var(--mj-space-6));\n transform: translateX(-50%);\n width: min(680px, 92vw);\n \n\n\n\n display: flex;\n flex-direction: column;\n max-height: calc(100vh - 60px - var(--mj-connectivity-banner-height, 0px) - var(--mj-space-12));\n background: var(--mj-bg-surface-elevated);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-lg);\n box-shadow: var(--mj-shadow-xl);\n z-index: 1401;\n overflow: hidden;\n animation: _ngcontent-%COMP%_ob-pop .13s ease-out;\n}\n\n@keyframes _ngcontent-%COMP%_ob-pop {\n from { opacity: 0; transform: translateX(-50%) scale(.985) translateY(-4px); }\n to { opacity: 1; transform: translateX(-50%) scale(1); }\n}\n\n.ob-input-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2);\n padding: var(--mj-space-4) var(--mj-space-4) var(--mj-space-2);\n}\n\n\n\n.ob-field[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2-5);\n flex: 1;\n min-width: 0;\n height: 46px;\n padding: 0 var(--mj-space-3-5);\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n transition: border-color var(--mj-transition-fast);\n}\n.ob-field[_ngcontent-%COMP%]:focus-within {\n border-color: var(--mj-border-focus);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.ob-lead[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 15px;\n width: 18px;\n text-align: center;\n flex-shrink: 0;\n}\n\n.ob-lead--trigger[_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n.ob-lead[_ngcontent-%COMP%] b[_ngcontent-%COMP%] { font-family: ui-monospace, monospace; }\n\n.ob-input[_ngcontent-%COMP%] {\n flex: 1;\n border: none;\n outline: none;\n background: transparent;\n font-size: 16px;\n color: var(--mj-text-primary);\n font-family: inherit;\n}\n\n.ob-input[_ngcontent-%COMP%]::placeholder { color: var(--mj-text-muted); }\n\n.ob-mode-badge[_ngcontent-%COMP%] {\n font-size: 10.5px;\n font-weight: 700;\n letter-spacing: .4px;\n text-transform: uppercase;\n padding: 3px 9px;\n border-radius: var(--mj-radius-full, 999px);\n background: color-mix(in srgb, var(--mj-brand-primary) 14%, transparent);\n color: var(--mj-brand-primary);\n white-space: nowrap;\n}\n\n.ob-kbd[_ngcontent-%COMP%] {\n font-family: inherit;\n font-size: 10.5px;\n font-weight: 600;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-strong);\n border-bottom-width: 2px;\n border-radius: 5px;\n padding: 1.5px 6px;\n}\n\n.ob-close[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n padding: 0;\n border: none;\n border-radius: var(--mj-radius-md);\n background: transparent;\n color: var(--mj-text-muted);\n font-size: var(--mj-text-base);\n cursor: pointer;\n transition: var(--mj-transition-colors);\n flex-shrink: 0;\n}\n.ob-close[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n.ob-close[_ngcontent-%COMP%]:focus-visible {\n outline: 2px solid var(--mj-border-focus);\n outline-offset: 2px;\n}\n\n.ob-scopes[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n padding: 9px 18px;\n border-bottom: 1px solid var(--mj-border-subtle);\n flex-wrap: wrap;\n}\n\n.ob-scope[_ngcontent-%COMP%] {\n font-size: 11px;\n padding: 3px 10px;\n border-radius: var(--mj-radius-full, 999px);\n border: 1px solid var(--mj-border-default);\n color: var(--mj-text-secondary);\n cursor: pointer;\n background: transparent;\n}\n\n.ob-scope--on[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.ob-body[_ngcontent-%COMP%] {\n flex: 1 1 auto;\n min-height: 0;\n overflow-y: auto;\n padding: 6px 0;\n}\n\n.ob-loading[_ngcontent-%COMP%], \n.ob-empty[_ngcontent-%COMP%] {\n padding: 18px;\n text-align: center;\n color: var(--mj-text-muted);\n font-size: 13px;\n}\n\n.ob-group-label[_ngcontent-%COMP%] {\n font-size: 10.5px;\n font-weight: 700;\n letter-spacing: .6px;\n text-transform: uppercase;\n color: var(--mj-text-muted);\n padding: 10px 18px 5px;\n}\n\n.ob-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 9px 18px;\n cursor: pointer;\n}\n\n\n\n\n.ob-row[_ngcontent-%COMP%]:focus { outline: none; }\n.ob-row[_ngcontent-%COMP%]:focus-visible { outline: 2px solid var(--mj-border-focus); outline-offset: -2px; }\n\n\n\n\n.ob-row--sel[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.ob-ric[_ngcontent-%COMP%] {\n width: 30px;\n height: 30px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 13px;\n flex-shrink: 0;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.ob-row--sel[_ngcontent-%COMP%] .ob-ric[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 16%, transparent);\n color: var(--mj-brand-primary);\n}\n\n.ob-rmain[_ngcontent-%COMP%] { flex: 1; min-width: 0; display: flex; flex-direction: column; }\n\n.ob-rname[_ngcontent-%COMP%] {\n font-size: 13.5px;\n font-weight: 500;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n color: var(--mj-text-primary);\n}\n\n.ob-rsub[_ngcontent-%COMP%] {\n font-size: 11.5px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n margin-top: 1px;\n}\n\n.ob-raux[_ngcontent-%COMP%] { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }\n\n.ob-rtype[_ngcontent-%COMP%] {\n font-size: 10px;\n font-weight: 600;\n padding: 2px 8px;\n border-radius: var(--mj-radius-full, 999px);\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n text-transform: capitalize;\n}\n\n.ob-score[_ngcontent-%COMP%] {\n width: 52px;\n height: 4px;\n border-radius: 2px;\n background: var(--mj-bg-surface-sunken);\n overflow: hidden;\n}\n\n.ob-score[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { display: block; height: 100%; background: var(--mj-brand-primary); }\n\n.ob-go[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n opacity: 0;\n display: flex;\n gap: 6px;\n align-items: center;\n}\n\n.ob-row--sel[_ngcontent-%COMP%] .ob-go[_ngcontent-%COMP%] { opacity: 1; }\n\n.ob-hintbar[_ngcontent-%COMP%] { display: flex; gap: 8px; padding: 12px 18px; flex-wrap: wrap; }\n\n.ob-hint-chip[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 9px;\n padding: 9px 13px;\n border: 1px dashed var(--mj-border-strong);\n border-radius: 10px;\n cursor: pointer;\n background: transparent;\n}\n\n.ob-hint-chip[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, transparent);\n}\n\n.ob-hint-chip[_ngcontent-%COMP%] b[_ngcontent-%COMP%] { font-family: ui-monospace, monospace; color: var(--mj-brand-primary); font-size: 14px; }\n.ob-hint-chip[_ngcontent-%COMP%] span[_ngcontent-%COMP%] { font-size: 12px; color: var(--mj-text-secondary); }\n\n.ob-foot[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 10px 18px;\n border-top: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface-card);\n font-size: 11.5px;\n color: var(--mj-text-muted);\n}\n\n.ob-k[_ngcontent-%COMP%] { display: flex; align-items: center; gap: 5px; }\n\n\n\n\n\n.ob-settings[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2);\n margin-left: auto;\n border: none;\n background: transparent;\n color: var(--mj-text-secondary);\n font-family: inherit;\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-semibold);\n padding: var(--mj-space-1-5) var(--mj-space-2);\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n transition: background var(--mj-transition-fast), color var(--mj-transition-fast);\n}\n.ob-settings[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n.ob-settings[_ngcontent-%COMP%]:focus-visible {\n outline: 2px solid var(--mj-border-focus);\n outline-offset: 2px;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .omnibar-palette[_ngcontent-%COMP%] {\n animation: none;\n }\n}\n\n\n\n\n\n\n@media (max-width: 640px) {\n .omnibar-palette[_ngcontent-%COMP%] {\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n transform: none;\n width: 100%;\n height: 100dvh;\n max-height: none; \n\n border-radius: 0;\n animation: none; \n\n display: flex;\n flex-direction: column;\n }\n\n \n\n .ob-body[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n max-height: none;\n }\n\n \n\n\n\n\n .ob-kbd[_ngcontent-%COMP%], \n .ob-go[_ngcontent-%COMP%], \n .ob-k[_ngcontent-%COMP%] {\n display: none;\n }\n\n \n\n .ob-close[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n font-size: var(--mj-text-base);\n }\n .ob-settings[_ngcontent-%COMP%] {\n min-height: 40px;\n font-size: var(--mj-text-base);\n }\n}"], changeDetection: 0 });
819
821
  }
820
822
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OmnibarPaletteComponent, [{
821
823
  type: Component,
822
- args: [{ standalone: false, selector: 'mj-omnibar-palette', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (IsOpen) {\n <div class=\"omnibar-overlay\" (click)=\"Close()\"></div>\n <div class=\"omnibar-palette\" role=\"dialog\" aria-modal=\"true\" aria-label=\"Command palette\"\n (keydown)=\"OnPaletteKeydown($event)\">\n\n <div class=\"ob-input-row\">\n <span class=\"ob-lead\" [class.ob-lead--trigger]=\"ActiveTriggerChar.length > 0\">\n @if (ActiveTriggerChar.length > 0) {\n <b>{{ ActiveTriggerChar }}</b>\n } @else {\n <i class=\"fa-solid fa-magnifying-glass\"></i>\n }\n </span>\n <input #paletteInput class=\"ob-input\" type=\"text\" autocomplete=\"off\" spellcheck=\"false\"\n role=\"combobox\" aria-controls=\"ob-listbox\" aria-autocomplete=\"list\"\n [attr.aria-expanded]=\"HasOptions\"\n [attr.aria-activedescendant]=\"ActiveDescendantId\"\n [placeholder]=\"ActivePlaceholder\"\n [ngModel]=\"Query\" (ngModelChange)=\"OnQueryChange($event)\"\n (keydown)=\"OnInputKeydown($event)\" />\n <span class=\"ob-mode-badge\">{{ ActiveModeLabel }}</span>\n <kbd class=\"ob-kbd\">esc</kbd>\n <button type=\"button\" class=\"ob-close\" aria-label=\"Close\" title=\"Close\" (click)=\"Close()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n\n @if (ShowScopes && Scopes.length > 0) {\n <div class=\"ob-scopes\">\n <button type=\"button\" class=\"ob-scope\" [class.ob-scope--on]=\"SelectedScopeIDs.length === 0\"\n (click)=\"ClearScopes()\">All sources</button>\n @for (scope of Scopes; track scope.ID) {\n <button type=\"button\" class=\"ob-scope\" [class.ob-scope--on]=\"IsScopeSelected(scope.ID)\"\n (click)=\"ToggleScope(scope.ID)\">{{ scope.Name }}</button>\n }\n </div>\n }\n\n <div class=\"ob-body\">\n @if (IsLoading) {\n <div class=\"ob-loading\"><i class=\"fa-solid fa-circle-notch fa-spin\"></i> Searching\u2026</div>\n } @else if (Rows.length === 0 && Query.length === 0) {\n <div class=\"ob-hintbar\">\n @for (hint of TriggerHints; track hint.Char) {\n <button type=\"button\" class=\"ob-hint-chip\" (click)=\"SeedTrigger(hint.Char)\">\n <b>{{ hint.Char }}</b><span>{{ hint.Label }}</span>\n </button>\n }\n </div>\n @if (RecentRows.length > 0) {\n <div class=\"ob-group-label\" role=\"presentation\">Recent</div>\n <div id=\"ob-listbox\" role=\"listbox\" aria-label=\"Suggestions\">\n @for (row of RecentRows; track row.Suggestion.id; let i = $index) {\n <div class=\"ob-row\" role=\"option\" [attr.id]=\"'ob-opt-' + (RecentBaseIndex + i)\"\n [attr.tabindex]=\"RecentBaseIndex + i === SelectedIndex ? 0 : -1\"\n [attr.aria-selected]=\"RecentBaseIndex + i === SelectedIndex\"\n [class.ob-row--sel]=\"RecentBaseIndex + i === SelectedIndex\"\n (focus)=\"SelectedIndex = RecentBaseIndex + i\"\n (keydown)=\"OnRowKeydown($event, row.Suggestion)\"\n (mouseenter)=\"SelectedIndex = RecentBaseIndex + i\" (click)=\"Execute(row.Suggestion)\">\n <span class=\"ob-ric\"><i [class]=\"row.Suggestion.icon || 'fa-solid fa-clock-rotate-left'\"></i></span>\n <span class=\"ob-rmain\">\n <span class=\"ob-rname\">{{ row.Suggestion.displayName }}</span>\n <span class=\"ob-rsub\">{{ row.Suggestion.description }}</span>\n </span>\n <span class=\"ob-raux\"><span class=\"ob-rtype\">{{ row.Suggestion.type }}</span></span>\n </div>\n }\n </div>\n }\n } @else if (Rows.length === 0) {\n <div class=\"ob-empty\">No matches \u2014 press <kbd class=\"ob-kbd\">\u21B5</kbd> to search everything for \u201C{{ EffectiveQuery }}\u201D.</div>\n } @else {\n <div id=\"ob-listbox\" role=\"listbox\" aria-label=\"Suggestions\">\n @for (row of Rows; track row.Suggestion.id; let i = $index) {\n @if (row.GroupLabel) {\n <div class=\"ob-group-label\" role=\"presentation\">{{ row.GroupLabel }}</div>\n }\n <div class=\"ob-row\" role=\"option\" [attr.id]=\"'ob-opt-' + i\"\n [attr.tabindex]=\"i === SelectedIndex ? 0 : -1\"\n [attr.aria-selected]=\"i === SelectedIndex\"\n [class.ob-row--sel]=\"i === SelectedIndex\"\n (focus)=\"SelectedIndex = i\"\n (keydown)=\"OnRowKeydown($event, row.Suggestion)\"\n (mouseenter)=\"SelectedIndex = i\" (click)=\"Execute(row.Suggestion)\">\n <span class=\"ob-ric\"><i [class]=\"row.Suggestion.icon || 'fa-solid fa-circle'\"></i></span>\n <span class=\"ob-rmain\">\n <span class=\"ob-rname\">{{ row.Suggestion.displayName }}</span>\n @if (row.Suggestion.description) {\n <span class=\"ob-rsub\">{{ row.Suggestion.description }}</span>\n }\n </span>\n <span class=\"ob-raux\">\n @if (row.ScorePercent != null) {\n <span class=\"ob-score\"><i [style.width.%]=\"row.ScorePercent\"></i></span>\n }\n <span class=\"ob-rtype\">{{ row.Suggestion.type }}</span>\n <span class=\"ob-go\">open <kbd class=\"ob-kbd\">\u21B5</kbd></span>\n </span>\n </div>\n }\n </div>\n }\n </div>\n\n <div class=\"ob-foot\">\n <span class=\"ob-k\"><kbd class=\"ob-kbd\">\u2191</kbd><kbd class=\"ob-kbd\">\u2193</kbd> navigate</span>\n <span class=\"ob-k\"><kbd class=\"ob-kbd\">\u21B5</kbd> open</span>\n <button type=\"button\" class=\"ob-settings\" aria-label=\"Command Palette settings\"\n title=\"Command Palette settings\" (click)=\"RequestSettings()\">\n <i class=\"fa-solid fa-gear\"></i>\n </button>\n </div>\n </div>\n}\n", styles: ["/* \u2500\u2500 Unified command palette (design source: plans/composer-adoption/mockups/omnibar-command-palette.html) \u2500\u2500 */\n\n.omnibar-overlay {\n position: fixed;\n inset: 0;\n background: var(--mj-bg-overlay);\n z-index: 1400;\n}\n\n.omnibar-palette {\n position: fixed;\n left: 50%;\n top: 96px;\n transform: translateX(-50%);\n width: min(680px, 92vw);\n /* Grow to content \u2014 every fetched row plus the footer stays visible without\n internal scroll on desktop. The viewport bound below is the only cap, so\n .ob-body only scrolls when the screen genuinely can't fit the panel. */\n display: flex;\n flex-direction: column;\n max-height: calc(100vh - 96px - 24px);\n background: var(--mj-bg-surface-elevated);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-xl);\n box-shadow: var(--mj-shadow-lg, 0 20px 60px color-mix(in srgb, var(--mj-text-primary) 22%, transparent));\n z-index: 1401;\n overflow: hidden;\n animation: ob-pop .13s ease-out;\n}\n\n@keyframes ob-pop {\n from { opacity: 0; transform: translateX(-50%) scale(.985) translateY(-4px); }\n to { opacity: 1; transform: translateX(-50%) scale(1); }\n}\n\n.ob-input-row {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 15px 18px;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.ob-lead {\n color: var(--mj-text-muted);\n font-size: 15px;\n width: 18px;\n text-align: center;\n}\n\n.ob-lead--trigger { color: var(--mj-brand-primary); }\n.ob-lead b { font-family: ui-monospace, monospace; }\n\n.ob-input {\n flex: 1;\n border: none;\n outline: none;\n background: transparent;\n font-size: 16px;\n color: var(--mj-text-primary);\n font-family: inherit;\n}\n\n.ob-input::placeholder { color: var(--mj-text-muted); }\n\n.ob-mode-badge {\n font-size: 10.5px;\n font-weight: 700;\n letter-spacing: .4px;\n text-transform: uppercase;\n padding: 3px 9px;\n border-radius: var(--mj-radius-full, 999px);\n background: color-mix(in srgb, var(--mj-brand-primary) 14%, transparent);\n color: var(--mj-brand-primary);\n white-space: nowrap;\n}\n\n.ob-kbd {\n font-family: inherit;\n font-size: 10.5px;\n font-weight: 600;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-strong);\n border-bottom-width: 2px;\n border-radius: 5px;\n padding: 1.5px 6px;\n}\n\n.ob-close {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n padding: 0;\n border: none;\n border-radius: var(--mj-radius-full);\n background: transparent;\n color: var(--mj-text-muted);\n font-size: var(--mj-text-sm);\n cursor: pointer;\n transition: var(--mj-transition-colors);\n flex-shrink: 0;\n}\n.ob-close:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n.ob-scopes {\n display: flex;\n gap: 6px;\n padding: 9px 18px;\n border-bottom: 1px solid var(--mj-border-subtle);\n flex-wrap: wrap;\n}\n\n.ob-scope {\n font-size: 11px;\n padding: 3px 10px;\n border-radius: var(--mj-radius-full, 999px);\n border: 1px solid var(--mj-border-default);\n color: var(--mj-text-secondary);\n cursor: pointer;\n background: transparent;\n}\n\n.ob-scope--on {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.ob-body {\n flex: 1 1 auto;\n min-height: 0;\n overflow-y: auto;\n padding: 6px 0;\n}\n\n.ob-loading,\n.ob-empty {\n padding: 18px;\n text-align: center;\n color: var(--mj-text-muted);\n font-size: 13px;\n}\n\n.ob-group-label {\n font-size: 10.5px;\n font-weight: 700;\n letter-spacing: .6px;\n text-transform: uppercase;\n color: var(--mj-text-muted);\n padding: 10px 18px 5px;\n}\n\n.ob-row {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 9px 18px;\n cursor: pointer;\n}\n\n/* Rows are focus stops (roving tabindex): the --sel background tracks focus, so\n suppress the default outline but keep a ring for keyboard :focus-visible. */\n.ob-row:focus { outline: none; }\n.ob-row:focus-visible { outline: 2px solid var(--mj-border-focus); outline-offset: -2px; }\n\n.ob-row--sel {\n background: color-mix(in srgb, var(--mj-brand-primary) 9%, transparent);\n box-shadow: inset 3px 0 0 var(--mj-brand-primary);\n}\n\n.ob-ric {\n width: 30px;\n height: 30px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 13px;\n flex-shrink: 0;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.ob-row--sel .ob-ric {\n background: color-mix(in srgb, var(--mj-brand-primary) 16%, transparent);\n color: var(--mj-brand-primary);\n}\n\n.ob-rmain { flex: 1; min-width: 0; display: flex; flex-direction: column; }\n\n.ob-rname {\n font-size: 13.5px;\n font-weight: 500;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n color: var(--mj-text-primary);\n}\n\n.ob-rsub {\n font-size: 11.5px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n margin-top: 1px;\n}\n\n.ob-raux { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }\n\n.ob-rtype {\n font-size: 10px;\n font-weight: 600;\n padding: 2px 8px;\n border-radius: var(--mj-radius-full, 999px);\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n text-transform: capitalize;\n}\n\n.ob-score {\n width: 52px;\n height: 4px;\n border-radius: 2px;\n background: var(--mj-bg-surface-sunken);\n overflow: hidden;\n}\n\n.ob-score i { display: block; height: 100%; background: var(--mj-brand-primary); }\n\n.ob-go {\n font-size: 11px;\n color: var(--mj-text-muted);\n opacity: 0;\n display: flex;\n gap: 6px;\n align-items: center;\n}\n\n.ob-row--sel .ob-go { opacity: 1; }\n\n.ob-hintbar { display: flex; gap: 8px; padding: 12px 18px; flex-wrap: wrap; }\n\n.ob-hint-chip {\n display: flex;\n align-items: center;\n gap: 9px;\n padding: 9px 13px;\n border: 1px dashed var(--mj-border-strong);\n border-radius: 10px;\n cursor: pointer;\n background: transparent;\n}\n\n.ob-hint-chip:hover {\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, transparent);\n}\n\n.ob-hint-chip b { font-family: ui-monospace, monospace; color: var(--mj-brand-primary); font-size: 14px; }\n.ob-hint-chip span { font-size: 12px; color: var(--mj-text-secondary); }\n\n.ob-foot {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 10px 18px;\n border-top: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface-card);\n font-size: 11.5px;\n color: var(--mj-text-muted);\n}\n\n.ob-k { display: flex; align-items: center; gap: 5px; }\n\n/* Footer gear \u2014 the reverse door to My Profile \u2192 Command Palette. */\n.ob-settings {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n padding: 0;\n margin-left: auto;\n border: none;\n border-radius: var(--mj-radius-full);\n background: transparent;\n color: var(--mj-text-muted);\n font-size: var(--mj-text-xs);\n cursor: pointer;\n transition: var(--mj-transition-colors);\n}\n.ob-settings:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n/* ========================================\n MOBILE (matches mj-search-overlay's 640px sheet treatment so the two search\n surfaces sit identically on small viewports)\n ======================================== */\n@media (max-width: 640px) {\n .omnibar-palette {\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n transform: none;\n width: 100%;\n height: 100dvh;\n max-height: none; /* desktop viewport bound would clamp the full-height sheet */\n border-radius: 0;\n animation: none; /* ob-pop animates a translateX(-50%) that no longer applies */\n display: flex;\n flex-direction: column;\n }\n\n /* Full-height sheet: the results area absorbs all remaining space. */\n .ob-body {\n flex: 1;\n min-height: 0;\n max-height: none;\n }\n\n /* Keyboard chrome is meaningless on touch: esc/\u21B5 chips, per-row 'open \u21B5'\n hints, and the footer's nav-hint spans. The footer itself stays because it\n carries the settings gear \u2014 the only in-surface door to the opt-in toggle,\n which mobile users need too. The \u2715 close button also stays. */\n .ob-kbd,\n .ob-go,\n .ob-k {\n display: none;\n }\n\n /* Touch-friendly hit areas for the surviving controls. */\n .ob-close,\n .ob-settings {\n width: 40px;\n height: 40px;\n font-size: var(--mj-text-base);\n }\n}\n"] }]
824
+ args: [{ standalone: false, selector: 'mj-omnibar-palette', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (IsOpen) {\n <div class=\"omnibar-overlay\" (click)=\"Close()\"></div>\n <div class=\"omnibar-palette\" role=\"dialog\" aria-modal=\"true\" aria-label=\"Command palette\"\n (keydown)=\"OnPaletteKeydown($event)\">\n\n <div class=\"ob-input-row\">\n <div class=\"ob-field\">\n <span class=\"ob-lead\" [class.ob-lead--trigger]=\"ActiveTriggerChar.length > 0\">\n @if (ActiveTriggerChar.length > 0) {\n <b>{{ ActiveTriggerChar }}</b>\n } @else {\n <i class=\"fa-solid fa-magnifying-glass\"></i>\n }\n </span>\n <input #paletteInput class=\"ob-input\" type=\"text\" autocomplete=\"off\" spellcheck=\"false\"\n role=\"combobox\" aria-controls=\"ob-listbox\" aria-autocomplete=\"list\"\n [attr.aria-expanded]=\"HasOptions\"\n [attr.aria-activedescendant]=\"ActiveDescendantId\"\n [placeholder]=\"ActivePlaceholder\"\n [ngModel]=\"Query\" (ngModelChange)=\"OnQueryChange($event)\"\n (keydown)=\"OnInputKeydown($event)\" />\n <span class=\"ob-mode-badge\">{{ ActiveModeLabel }}</span>\n <kbd class=\"ob-kbd\">esc</kbd>\n </div>\n <button type=\"button\" class=\"ob-close\" aria-label=\"Close\" title=\"Close\" (click)=\"Close()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n\n @if (ShowScopes && Scopes.length > 0) {\n <div class=\"ob-scopes\">\n <button type=\"button\" class=\"ob-scope\" [class.ob-scope--on]=\"SelectedScopeIDs.length === 0\"\n (click)=\"ClearScopes()\">All sources</button>\n @for (scope of Scopes; track scope.ID) {\n <button type=\"button\" class=\"ob-scope\" [class.ob-scope--on]=\"IsScopeSelected(scope.ID)\"\n (click)=\"ToggleScope(scope.ID)\">{{ scope.Name }}</button>\n }\n </div>\n }\n\n <div class=\"ob-body\">\n @if (IsLoading) {\n <div class=\"ob-loading\"><i class=\"fa-solid fa-circle-notch fa-spin\"></i> Searching\u2026</div>\n } @else if (Rows.length === 0 && Query.length === 0) {\n <div class=\"ob-hintbar\">\n @for (hint of TriggerHints; track hint.Char) {\n <button type=\"button\" class=\"ob-hint-chip\" (click)=\"SeedTrigger(hint.Char)\">\n <b>{{ hint.Char }}</b><span>{{ hint.Label }}</span>\n </button>\n }\n </div>\n @if (RecentRows.length > 0) {\n <div class=\"ob-group-label\" role=\"presentation\">Recent</div>\n <div id=\"ob-listbox\" role=\"listbox\" aria-label=\"Suggestions\">\n @for (row of RecentRows; track row.Suggestion.id; let i = $index) {\n <div class=\"ob-row\" role=\"option\" [attr.id]=\"'ob-opt-' + (RecentBaseIndex + i)\"\n [attr.tabindex]=\"RecentBaseIndex + i === SelectedIndex ? 0 : -1\"\n [attr.aria-selected]=\"RecentBaseIndex + i === SelectedIndex\"\n [class.ob-row--sel]=\"RecentBaseIndex + i === SelectedIndex\"\n (focus)=\"SelectedIndex = RecentBaseIndex + i\"\n (keydown)=\"OnRowKeydown($event, row.Suggestion)\"\n (mouseenter)=\"SelectedIndex = RecentBaseIndex + i\" (click)=\"Execute(row.Suggestion)\">\n <span class=\"ob-ric\"><i [class]=\"row.Suggestion.icon || 'fa-solid fa-clock-rotate-left'\"></i></span>\n <span class=\"ob-rmain\">\n <span class=\"ob-rname\">{{ row.Suggestion.displayName }}</span>\n <span class=\"ob-rsub\">{{ row.Suggestion.description }}</span>\n </span>\n <span class=\"ob-raux\"><span class=\"ob-rtype\">{{ row.Suggestion.type }}</span></span>\n </div>\n }\n </div>\n }\n } @else if (Rows.length === 0) {\n <div class=\"ob-empty\">No matches \u2014 press <kbd class=\"ob-kbd\">\u21B5</kbd> to search everything for \u201C{{ EffectiveQuery }}\u201D.</div>\n } @else {\n <div id=\"ob-listbox\" role=\"listbox\" aria-label=\"Suggestions\">\n @for (row of Rows; track row.Suggestion.id; let i = $index) {\n @if (row.GroupLabel) {\n <div class=\"ob-group-label\" role=\"presentation\">{{ row.GroupLabel }}</div>\n }\n <div class=\"ob-row\" role=\"option\" [attr.id]=\"'ob-opt-' + i\"\n [attr.tabindex]=\"i === SelectedIndex ? 0 : -1\"\n [attr.aria-selected]=\"i === SelectedIndex\"\n [class.ob-row--sel]=\"i === SelectedIndex\"\n (focus)=\"SelectedIndex = i\"\n (keydown)=\"OnRowKeydown($event, row.Suggestion)\"\n (mouseenter)=\"SelectedIndex = i\" (click)=\"Execute(row.Suggestion)\">\n <span class=\"ob-ric\"><i [class]=\"row.Suggestion.icon || 'fa-solid fa-circle'\"></i></span>\n <span class=\"ob-rmain\">\n <span class=\"ob-rname\">{{ row.Suggestion.displayName }}</span>\n @if (row.Suggestion.description) {\n <span class=\"ob-rsub\">{{ row.Suggestion.description }}</span>\n }\n </span>\n <span class=\"ob-raux\">\n @if (row.ScorePercent != null) {\n <span class=\"ob-score\"><i [style.width.%]=\"row.ScorePercent\"></i></span>\n }\n <span class=\"ob-rtype\">{{ row.Suggestion.type }}</span>\n <span class=\"ob-go\">open <kbd class=\"ob-kbd\">\u21B5</kbd></span>\n </span>\n </div>\n }\n </div>\n }\n </div>\n\n <div class=\"ob-foot\">\n <span class=\"ob-k\"><kbd class=\"ob-kbd\">\u2191</kbd><kbd class=\"ob-kbd\">\u2193</kbd> navigate</span>\n <span class=\"ob-k\"><kbd class=\"ob-kbd\">\u21B5</kbd> open</span>\n <button type=\"button\" class=\"ob-settings\" aria-label=\"Command Palette settings\"\n title=\"Command Palette settings\" (click)=\"RequestSettings()\">\n <i class=\"fa-solid fa-gear\" aria-hidden=\"true\"></i>\n <span>Settings</span>\n </button>\n </div>\n </div>\n}\n", styles: ["/* \u2500\u2500 Unified command palette (design source: plans/composer-adoption/mockups/omnibar-command-palette.html) \u2500\u2500 */\n\n.omnibar-overlay {\n position: fixed;\n inset: 0;\n background: var(--mj-bg-overlay);\n z-index: 1400;\n}\n\n/* Shared command-surface spec (omnibar + app launcher): banner-aware top\n offset, radius-lg, shadow-xl, boxed sunken input, whole-screen scrim. */\n.omnibar-palette {\n position: fixed;\n left: 50%;\n top: calc(60px + var(--mj-connectivity-banner-height, 0px) + var(--mj-space-6));\n transform: translateX(-50%);\n width: min(680px, 92vw);\n /* Grow to content \u2014 every fetched row plus the footer stays visible without\n internal scroll on desktop. The viewport bound below is the only cap, so\n .ob-body only scrolls when the screen genuinely can't fit the panel. */\n display: flex;\n flex-direction: column;\n max-height: calc(100vh - 60px - var(--mj-connectivity-banner-height, 0px) - var(--mj-space-12));\n background: var(--mj-bg-surface-elevated);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-lg);\n box-shadow: var(--mj-shadow-xl);\n z-index: 1401;\n overflow: hidden;\n animation: ob-pop .13s ease-out;\n}\n\n@keyframes ob-pop {\n from { opacity: 0; transform: translateX(-50%) scale(.985) translateY(-4px); }\n to { opacity: 1; transform: translateX(-50%) scale(1); }\n}\n\n.ob-input-row {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2);\n padding: var(--mj-space-4) var(--mj-space-4) var(--mj-space-2);\n}\n\n/* Boxed sunken field \u2014 identical treatment to the app launcher's filter. */\n.ob-field {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2-5);\n flex: 1;\n min-width: 0;\n height: 46px;\n padding: 0 var(--mj-space-3-5);\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n transition: border-color var(--mj-transition-fast);\n}\n.ob-field:focus-within {\n border-color: var(--mj-border-focus);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.ob-lead {\n color: var(--mj-text-muted);\n font-size: 15px;\n width: 18px;\n text-align: center;\n flex-shrink: 0;\n}\n\n.ob-lead--trigger { color: var(--mj-brand-primary); }\n.ob-lead b { font-family: ui-monospace, monospace; }\n\n.ob-input {\n flex: 1;\n border: none;\n outline: none;\n background: transparent;\n font-size: 16px;\n color: var(--mj-text-primary);\n font-family: inherit;\n}\n\n.ob-input::placeholder { color: var(--mj-text-muted); }\n\n.ob-mode-badge {\n font-size: 10.5px;\n font-weight: 700;\n letter-spacing: .4px;\n text-transform: uppercase;\n padding: 3px 9px;\n border-radius: var(--mj-radius-full, 999px);\n background: color-mix(in srgb, var(--mj-brand-primary) 14%, transparent);\n color: var(--mj-brand-primary);\n white-space: nowrap;\n}\n\n.ob-kbd {\n font-family: inherit;\n font-size: 10.5px;\n font-weight: 600;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-strong);\n border-bottom-width: 2px;\n border-radius: 5px;\n padding: 1.5px 6px;\n}\n\n.ob-close {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n padding: 0;\n border: none;\n border-radius: var(--mj-radius-md);\n background: transparent;\n color: var(--mj-text-muted);\n font-size: var(--mj-text-base);\n cursor: pointer;\n transition: var(--mj-transition-colors);\n flex-shrink: 0;\n}\n.ob-close:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n.ob-close:focus-visible {\n outline: 2px solid var(--mj-border-focus);\n outline-offset: 2px;\n}\n\n.ob-scopes {\n display: flex;\n gap: 6px;\n padding: 9px 18px;\n border-bottom: 1px solid var(--mj-border-subtle);\n flex-wrap: wrap;\n}\n\n.ob-scope {\n font-size: 11px;\n padding: 3px 10px;\n border-radius: var(--mj-radius-full, 999px);\n border: 1px solid var(--mj-border-default);\n color: var(--mj-text-secondary);\n cursor: pointer;\n background: transparent;\n}\n\n.ob-scope--on {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.ob-body {\n flex: 1 1 auto;\n min-height: 0;\n overflow-y: auto;\n padding: 6px 0;\n}\n\n.ob-loading,\n.ob-empty {\n padding: 18px;\n text-align: center;\n color: var(--mj-text-muted);\n font-size: 13px;\n}\n\n.ob-group-label {\n font-size: 10.5px;\n font-weight: 700;\n letter-spacing: .6px;\n text-transform: uppercase;\n color: var(--mj-text-muted);\n padding: 10px 18px 5px;\n}\n\n.ob-row {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 9px 18px;\n cursor: pointer;\n}\n\n/* Rows are focus stops (roving tabindex): the --sel background tracks focus, so\n suppress the default outline but keep a ring for keyboard :focus-visible. */\n.ob-row:focus { outline: none; }\n.ob-row:focus-visible { outline: 2px solid var(--mj-border-focus); outline-offset: -2px; }\n\n/* Brand-tint selection \u2014 the one active-state language used across the shell\n (nav pills, launcher cards); the old left inset bar was a second dialect. */\n.ob-row--sel {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.ob-ric {\n width: 30px;\n height: 30px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 13px;\n flex-shrink: 0;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.ob-row--sel .ob-ric {\n background: color-mix(in srgb, var(--mj-brand-primary) 16%, transparent);\n color: var(--mj-brand-primary);\n}\n\n.ob-rmain { flex: 1; min-width: 0; display: flex; flex-direction: column; }\n\n.ob-rname {\n font-size: 13.5px;\n font-weight: 500;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n color: var(--mj-text-primary);\n}\n\n.ob-rsub {\n font-size: 11.5px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n margin-top: 1px;\n}\n\n.ob-raux { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }\n\n.ob-rtype {\n font-size: 10px;\n font-weight: 600;\n padding: 2px 8px;\n border-radius: var(--mj-radius-full, 999px);\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n text-transform: capitalize;\n}\n\n.ob-score {\n width: 52px;\n height: 4px;\n border-radius: 2px;\n background: var(--mj-bg-surface-sunken);\n overflow: hidden;\n}\n\n.ob-score i { display: block; height: 100%; background: var(--mj-brand-primary); }\n\n.ob-go {\n font-size: 11px;\n color: var(--mj-text-muted);\n opacity: 0;\n display: flex;\n gap: 6px;\n align-items: center;\n}\n\n.ob-row--sel .ob-go { opacity: 1; }\n\n.ob-hintbar { display: flex; gap: 8px; padding: 12px 18px; flex-wrap: wrap; }\n\n.ob-hint-chip {\n display: flex;\n align-items: center;\n gap: 9px;\n padding: 9px 13px;\n border: 1px dashed var(--mj-border-strong);\n border-radius: 10px;\n cursor: pointer;\n background: transparent;\n}\n\n.ob-hint-chip:hover {\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, transparent);\n}\n\n.ob-hint-chip b { font-family: ui-monospace, monospace; color: var(--mj-brand-primary); font-size: 14px; }\n.ob-hint-chip span { font-size: 12px; color: var(--mj-text-secondary); }\n\n.ob-foot {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 10px 18px;\n border-top: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface-card);\n font-size: 11.5px;\n color: var(--mj-text-muted);\n}\n\n.ob-k { display: flex; align-items: center; gap: 5px; }\n\n/* Footer options button \u2014 the reverse door to My Profile \u2192 Command Palette.\n Shared spec with the launcher's Configure button: quiet labeled gear,\n right-aligned. */\n.ob-settings {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2);\n margin-left: auto;\n border: none;\n background: transparent;\n color: var(--mj-text-secondary);\n font-family: inherit;\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-semibold);\n padding: var(--mj-space-1-5) var(--mj-space-2);\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n transition: background var(--mj-transition-fast), color var(--mj-transition-fast);\n}\n.ob-settings:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n.ob-settings:focus-visible {\n outline: 2px solid var(--mj-border-focus);\n outline-offset: 2px;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .omnibar-palette {\n animation: none;\n }\n}\n\n/* ========================================\n MOBILE (matches mj-search-overlay's 640px sheet treatment so the two search\n surfaces sit identically on small viewports)\n ======================================== */\n@media (max-width: 640px) {\n .omnibar-palette {\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n transform: none;\n width: 100%;\n height: 100dvh;\n max-height: none; /* desktop viewport bound would clamp the full-height sheet */\n border-radius: 0;\n animation: none; /* ob-pop animates a translateX(-50%) that no longer applies */\n display: flex;\n flex-direction: column;\n }\n\n /* Full-height sheet: the results area absorbs all remaining space. */\n .ob-body {\n flex: 1;\n min-height: 0;\n max-height: none;\n }\n\n /* Keyboard chrome is meaningless on touch: esc/\u21B5 chips, per-row 'open \u21B5'\n hints, and the footer's nav-hint spans. The footer itself stays because it\n carries the settings gear \u2014 the only in-surface door to the opt-in toggle,\n which mobile users need too. The \u2715 close button also stays. */\n .ob-kbd,\n .ob-go,\n .ob-k {\n display: none;\n }\n\n /* Touch-friendly hit areas for the surviving controls. */\n .ob-close {\n width: 40px;\n height: 40px;\n font-size: var(--mj-text-base);\n }\n .ob-settings {\n min-height: 40px;\n font-size: var(--mj-text-base);\n }\n}\n"] }]
823
825
  }], null, { inputRef: [{
824
826
  type: ViewChild,
825
827
  args: ['paletteInput']