@memberjunction/ng-explorer-core 5.31.0 → 5.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/generated/lazy-feature-config.d.ts +1 -1
- package/dist/generated/lazy-feature-config.d.ts.map +1 -1
- package/dist/generated/lazy-feature-config.js +13 -2
- package/dist/generated/lazy-feature-config.js.map +1 -1
- package/dist/lib/about/about-dialog.component.d.ts +82 -0
- package/dist/lib/about/about-dialog.component.d.ts.map +1 -0
- package/dist/lib/about/about-dialog.component.js +689 -0
- package/dist/lib/about/about-dialog.component.js.map +1 -0
- package/dist/lib/profile/profile-dialog.component.d.ts +72 -0
- package/dist/lib/profile/profile-dialog.component.d.ts.map +1 -0
- package/dist/lib/profile/profile-dialog.component.js +722 -0
- package/dist/lib/profile/profile-dialog.component.js.map +1 -0
- package/dist/lib/services/lazy-module-registry.d.ts +20 -0
- package/dist/lib/services/lazy-module-registry.d.ts.map +1 -1
- package/dist/lib/services/lazy-module-registry.js +43 -0
- package/dist/lib/services/lazy-module-registry.js.map +1 -1
- package/dist/lib/shell/services/about-dialog.service.d.ts +23 -0
- package/dist/lib/shell/services/about-dialog.service.d.ts.map +1 -0
- package/dist/lib/shell/services/about-dialog.service.js +45 -0
- package/dist/lib/shell/services/about-dialog.service.js.map +1 -0
- package/dist/lib/shell/services/profile-dialog.service.d.ts +22 -0
- package/dist/lib/shell/services/profile-dialog.service.d.ts.map +1 -0
- package/dist/lib/shell/services/profile-dialog.service.js +49 -0
- package/dist/lib/shell/services/profile-dialog.service.js.map +1 -0
- package/dist/lib/shell/shell.component.d.ts +7 -11
- package/dist/lib/shell/shell.component.d.ts.map +1 -1
- package/dist/lib/shell/shell.component.js +69 -54
- package/dist/lib/shell/shell.component.js.map +1 -1
- package/dist/lib/user-menu/base-user-menu.d.ts +4 -13
- package/dist/lib/user-menu/base-user-menu.d.ts.map +1 -1
- package/dist/lib/user-menu/base-user-menu.js +26 -75
- package/dist/lib/user-menu/base-user-menu.js.map +1 -1
- package/dist/public-api.d.ts +4 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +6 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +42 -42
- package/dist/lib/shell/services/settings-dialog.service.d.ts +0 -28
- package/dist/lib/shell/services/settings-dialog.service.d.ts.map +0 -1
- package/dist/lib/shell/services/settings-dialog.service.js +0 -61
- package/dist/lib/shell/services/settings-dialog.service.js.map +0 -1
|
@@ -0,0 +1,689 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ChangeDetectorRef, inject } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { InstanceConfigEngine } from '@memberjunction/core-entities';
|
|
4
|
+
import { GraphQLDataProvider, PACKAGE_VERSION } from '@memberjunction/graphql-dataprovider';
|
|
5
|
+
import { MJAuthBase } from '@memberjunction/ng-auth-services';
|
|
6
|
+
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
|
|
7
|
+
import { ThemeService } from '@memberjunction/ng-shared';
|
|
8
|
+
import { ServerConnectivityService } from '../services/server-connectivity.service';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
function AboutDialogComponent_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
11
|
+
i0.ɵɵdomElementStart(0, "div", 14);
|
|
12
|
+
i0.ɵɵtext(1, " Connected to ");
|
|
13
|
+
i0.ɵɵdomElementStart(2, "span", 50);
|
|
14
|
+
i0.ɵɵtext(3);
|
|
15
|
+
i0.ɵɵdomElementEnd()();
|
|
16
|
+
} if (rf & 2) {
|
|
17
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
18
|
+
i0.ɵɵadvance(3);
|
|
19
|
+
i0.ɵɵtextInterpolate(ctx_r1.ConnectionLabel);
|
|
20
|
+
} }
|
|
21
|
+
function AboutDialogComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
22
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
23
|
+
i0.ɵɵdomElementStart(0, "img", 51);
|
|
24
|
+
i0.ɵɵdomListener("error", function AboutDialogComponent_Conditional_18_Template_img_error_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnAvatarLoadError()); });
|
|
25
|
+
i0.ɵɵdomElementEnd();
|
|
26
|
+
} if (rf & 2) {
|
|
27
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
28
|
+
i0.ɵɵdomProperty("src", ctx_r1.AvatarUrl, i0.ɵɵsanitizeUrl);
|
|
29
|
+
} }
|
|
30
|
+
function AboutDialogComponent_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
31
|
+
i0.ɵɵdomElementStart(0, "div", 17);
|
|
32
|
+
i0.ɵɵdomElement(1, "i");
|
|
33
|
+
i0.ɵɵdomElementEnd();
|
|
34
|
+
} if (rf & 2) {
|
|
35
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
36
|
+
i0.ɵɵadvance();
|
|
37
|
+
i0.ɵɵclassMap(ctx_r1.AvatarIconClass);
|
|
38
|
+
} }
|
|
39
|
+
function AboutDialogComponent_Conditional_20_Template(rf, ctx) { if (rf & 1) {
|
|
40
|
+
i0.ɵɵdomElementStart(0, "div", 18);
|
|
41
|
+
i0.ɵɵtext(1);
|
|
42
|
+
i0.ɵɵdomElementEnd();
|
|
43
|
+
} if (rf & 2) {
|
|
44
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
45
|
+
i0.ɵɵadvance();
|
|
46
|
+
i0.ɵɵtextInterpolate(ctx_r1.UserInitials);
|
|
47
|
+
} }
|
|
48
|
+
function AboutDialogComponent_Conditional_129_Template(rf, ctx) { if (rf & 1) {
|
|
49
|
+
i0.ɵɵdomElementStart(0, "div", 49);
|
|
50
|
+
i0.ɵɵtext(1);
|
|
51
|
+
i0.ɵɵdomElementEnd();
|
|
52
|
+
} if (rf & 2) {
|
|
53
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
54
|
+
i0.ɵɵadvance();
|
|
55
|
+
i0.ɵɵtextInterpolate(ctx_r1.ToastMessage);
|
|
56
|
+
} }
|
|
57
|
+
/**
|
|
58
|
+
* About dialog for MemberJunction. Shows brand identity, version, lightweight
|
|
59
|
+
* usage stats, the current user, and a collapsible diagnostics panel.
|
|
60
|
+
*
|
|
61
|
+
* Self-contained standalone component. Opened via {@link AboutDialogService}.
|
|
62
|
+
*
|
|
63
|
+
* Easter eggs:
|
|
64
|
+
* - Click the version pill 7× → toast + logo spin
|
|
65
|
+
* - Click the logo → quick wiggle
|
|
66
|
+
* - Konami code (↑↑↓↓←→←→ B A) → barrel roll
|
|
67
|
+
*/
|
|
68
|
+
export class AboutDialogComponent extends BaseAngularComponent {
|
|
69
|
+
CloseRequested = new EventEmitter();
|
|
70
|
+
/** Optional avatar image URL — passed in from the shell where it's already resolved. */
|
|
71
|
+
AvatarUrl = null;
|
|
72
|
+
/** Optional Font Awesome icon class fallback when no image is available. */
|
|
73
|
+
AvatarIconClass = null;
|
|
74
|
+
/** Static framework version, generated at build time. */
|
|
75
|
+
Version = PACKAGE_VERSION;
|
|
76
|
+
EntityCount = 0;
|
|
77
|
+
ApplicationCount = 0;
|
|
78
|
+
QueryCount = 0;
|
|
79
|
+
UserName = 'Unknown User';
|
|
80
|
+
UserEmail = '';
|
|
81
|
+
UserInitials = '?';
|
|
82
|
+
UserRolesText = 'None';
|
|
83
|
+
ApiUrl = '';
|
|
84
|
+
ApiUrlShort = '';
|
|
85
|
+
AuthProvider = 'Unknown';
|
|
86
|
+
Environment = 'production';
|
|
87
|
+
ThemeLabel = '';
|
|
88
|
+
BrowserLabel = '';
|
|
89
|
+
IsConnected = true;
|
|
90
|
+
DiagnosticsOpen = false;
|
|
91
|
+
/** Friendly "Connected to X" label — display name from InstanceConfig or just the API hostname. */
|
|
92
|
+
ConnectionLabel = '';
|
|
93
|
+
ToastMessage = '';
|
|
94
|
+
CopyConfirmed = false;
|
|
95
|
+
authBase = inject(MJAuthBase);
|
|
96
|
+
themeService = inject(ThemeService);
|
|
97
|
+
connectivity = inject(ServerConnectivityService);
|
|
98
|
+
cdr = inject(ChangeDetectorRef);
|
|
99
|
+
connSub;
|
|
100
|
+
themeSub;
|
|
101
|
+
versionClickCount = 0;
|
|
102
|
+
versionClickResetTimer = null;
|
|
103
|
+
toastTimer = null;
|
|
104
|
+
konamiIndex = 0;
|
|
105
|
+
konamiSequence = ['ArrowUp', 'ArrowUp', 'ArrowDown', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'ArrowLeft', 'ArrowRight', 'b', 'a'];
|
|
106
|
+
konamiHandler = (event) => {
|
|
107
|
+
const key = event.key.length === 1 ? event.key.toLowerCase() : event.key;
|
|
108
|
+
if (key === this.konamiSequence[this.konamiIndex]) {
|
|
109
|
+
this.konamiIndex++;
|
|
110
|
+
if (this.konamiIndex === this.konamiSequence.length) {
|
|
111
|
+
this.konamiIndex = 0;
|
|
112
|
+
this.showToast('🚀 You found it. Now you must tell no one.', 3500);
|
|
113
|
+
this.barrelRoll();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
this.konamiIndex = 0;
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
get UserMeta() {
|
|
121
|
+
if (this.UserEmail && this.UserRolesText && this.UserRolesText !== 'None') {
|
|
122
|
+
return `${this.UserEmail} · ${this.UserRolesText}`;
|
|
123
|
+
}
|
|
124
|
+
return this.UserEmail || this.UserRolesText;
|
|
125
|
+
}
|
|
126
|
+
ngOnInit() {
|
|
127
|
+
this.populate();
|
|
128
|
+
this.connSub = this.connectivity.IsConnected$.subscribe(connected => {
|
|
129
|
+
this.IsConnected = connected;
|
|
130
|
+
this.cdr.markForCheck();
|
|
131
|
+
});
|
|
132
|
+
this.themeSub = this.themeService.AppliedTheme$.subscribe(() => {
|
|
133
|
+
this.ThemeLabel = this.computeThemeLabel();
|
|
134
|
+
this.cdr.markForCheck();
|
|
135
|
+
});
|
|
136
|
+
document.addEventListener('keydown', this.konamiHandler);
|
|
137
|
+
}
|
|
138
|
+
ngOnDestroy() {
|
|
139
|
+
this.connSub?.unsubscribe();
|
|
140
|
+
this.themeSub?.unsubscribe();
|
|
141
|
+
document.removeEventListener('keydown', this.konamiHandler);
|
|
142
|
+
if (this.versionClickResetTimer)
|
|
143
|
+
clearTimeout(this.versionClickResetTimer);
|
|
144
|
+
if (this.toastTimer)
|
|
145
|
+
clearTimeout(this.toastTimer);
|
|
146
|
+
}
|
|
147
|
+
populate() {
|
|
148
|
+
const provider = this.ProviderToUse;
|
|
149
|
+
this.EntityCount = provider?.Entities?.length ?? 0;
|
|
150
|
+
this.ApplicationCount = provider?.Applications?.length ?? 0;
|
|
151
|
+
this.QueryCount = provider?.Queries?.length ?? 0;
|
|
152
|
+
const user = provider?.CurrentUser;
|
|
153
|
+
if (user) {
|
|
154
|
+
this.UserName = user.Name || `${user.FirstName ?? ''} ${user.LastName ?? ''}`.trim() || 'User';
|
|
155
|
+
this.UserEmail = user.Email || '';
|
|
156
|
+
this.UserInitials = this.computeInitials(this.UserName);
|
|
157
|
+
const roles = (user.UserRoles ?? [])
|
|
158
|
+
.map((r) => r.Role)
|
|
159
|
+
.filter((n) => !!n);
|
|
160
|
+
this.UserRolesText = roles.length > 0 ? roles.join(', ') : 'None';
|
|
161
|
+
}
|
|
162
|
+
if (provider instanceof GraphQLDataProvider) {
|
|
163
|
+
this.ApiUrl = provider.ConfigData?.URL ?? '';
|
|
164
|
+
this.ApiUrlShort = this.shortenUrl(this.ApiUrl);
|
|
165
|
+
}
|
|
166
|
+
this.AuthProvider = this.computeAuthLabel(this.authBase?.type);
|
|
167
|
+
this.Environment = this.detectEnvironment();
|
|
168
|
+
this.ThemeLabel = this.computeThemeLabel();
|
|
169
|
+
this.BrowserLabel = this.computeBrowserLabel();
|
|
170
|
+
this.IsConnected = this.connectivity.IsConnected;
|
|
171
|
+
this.ConnectionLabel = this.computeConnectionLabel();
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Build the "Connected to X" label. Prefers `Instance.DisplayName` from
|
|
175
|
+
* InstanceConfigEngine if set, otherwise falls back to the API hostname.
|
|
176
|
+
*/
|
|
177
|
+
computeConnectionLabel() {
|
|
178
|
+
let displayName;
|
|
179
|
+
try {
|
|
180
|
+
displayName = InstanceConfigEngine.Instance.Get('Instance.DisplayName');
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
displayName = undefined;
|
|
184
|
+
}
|
|
185
|
+
const host = this.ApiUrlShort?.split('/')[0] ?? '';
|
|
186
|
+
if (displayName && host)
|
|
187
|
+
return `${displayName} · ${host}`;
|
|
188
|
+
return displayName || host;
|
|
189
|
+
}
|
|
190
|
+
ToggleDiagnostics() {
|
|
191
|
+
this.DiagnosticsOpen = !this.DiagnosticsOpen;
|
|
192
|
+
}
|
|
193
|
+
OnCloseClick() {
|
|
194
|
+
this.CloseRequested.emit();
|
|
195
|
+
}
|
|
196
|
+
OnLogoClick() {
|
|
197
|
+
this.wiggleLogo();
|
|
198
|
+
}
|
|
199
|
+
OnAvatarLoadError() {
|
|
200
|
+
// Image failed to load — fall back to initials
|
|
201
|
+
this.AvatarUrl = null;
|
|
202
|
+
this.cdr.markForCheck();
|
|
203
|
+
}
|
|
204
|
+
OnVersionClick() {
|
|
205
|
+
this.versionClickCount++;
|
|
206
|
+
if (this.versionClickResetTimer)
|
|
207
|
+
clearTimeout(this.versionClickResetTimer);
|
|
208
|
+
this.versionClickResetTimer = setTimeout(() => (this.versionClickCount = 0), 2000);
|
|
209
|
+
if (this.versionClickCount === 3)
|
|
210
|
+
this.showToast('Keep going...');
|
|
211
|
+
else if (this.versionClickCount === 5)
|
|
212
|
+
this.showToast("You're committed now.");
|
|
213
|
+
else if (this.versionClickCount === 7) {
|
|
214
|
+
this.versionClickCount = 0;
|
|
215
|
+
this.showToast('🎉 Developer mode? In THIS economy?');
|
|
216
|
+
this.spinLogo();
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
async CopyDiagnostics() {
|
|
220
|
+
const block = [
|
|
221
|
+
`MemberJunction v${this.Version}`,
|
|
222
|
+
`Environment: ${this.Environment}`,
|
|
223
|
+
`API: ${this.ApiUrl || '(unknown)'}`,
|
|
224
|
+
`Auth: ${this.AuthProvider}`,
|
|
225
|
+
`User: ${this.UserEmail || this.UserName} (${this.UserRolesText})`,
|
|
226
|
+
`Theme: ${this.ThemeLabel}`,
|
|
227
|
+
`Browser: ${this.BrowserLabel}`,
|
|
228
|
+
`Entities loaded: ${this.EntityCount}`,
|
|
229
|
+
`Applications: ${this.ApplicationCount}`,
|
|
230
|
+
`Queries: ${this.QueryCount}`
|
|
231
|
+
].join('\n');
|
|
232
|
+
try {
|
|
233
|
+
await navigator.clipboard.writeText(block);
|
|
234
|
+
this.CopyConfirmed = true;
|
|
235
|
+
this.showToast('Diagnostics copied to clipboard');
|
|
236
|
+
setTimeout(() => {
|
|
237
|
+
this.CopyConfirmed = false;
|
|
238
|
+
this.cdr.markForCheck();
|
|
239
|
+
}, 1800);
|
|
240
|
+
}
|
|
241
|
+
catch {
|
|
242
|
+
this.showToast('Copy failed — clipboard unavailable');
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
// ---------- helpers ----------
|
|
246
|
+
computeInitials(name) {
|
|
247
|
+
const parts = name.trim().split(/\s+/).filter(Boolean);
|
|
248
|
+
if (parts.length === 0)
|
|
249
|
+
return '?';
|
|
250
|
+
if (parts.length === 1)
|
|
251
|
+
return parts[0].slice(0, 2).toUpperCase();
|
|
252
|
+
return (parts[0][0] + parts[parts.length - 1][0]).toUpperCase();
|
|
253
|
+
}
|
|
254
|
+
shortenUrl(url) {
|
|
255
|
+
if (!url)
|
|
256
|
+
return '(not configured)';
|
|
257
|
+
try {
|
|
258
|
+
const u = new URL(url);
|
|
259
|
+
return u.host + (u.pathname && u.pathname !== '/' ? u.pathname : '');
|
|
260
|
+
}
|
|
261
|
+
catch {
|
|
262
|
+
return url;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
computeAuthLabel(type) {
|
|
266
|
+
switch ((type ?? '').toLowerCase()) {
|
|
267
|
+
case 'msal': return 'Microsoft Entra (MSAL)';
|
|
268
|
+
case 'auth0': return 'Auth0';
|
|
269
|
+
case 'okta': return 'Okta';
|
|
270
|
+
case 'cognito': return 'Amazon Cognito';
|
|
271
|
+
case '': return 'Unknown';
|
|
272
|
+
default: return type ?? 'Unknown';
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
detectEnvironment() {
|
|
276
|
+
const host = typeof window !== 'undefined' ? window.location.hostname : '';
|
|
277
|
+
if (host === 'localhost' || host === '127.0.0.1' || host.endsWith('.local'))
|
|
278
|
+
return 'development';
|
|
279
|
+
if (host.startsWith('dev.') || host.includes('-dev.') || host.includes('.dev.'))
|
|
280
|
+
return 'development';
|
|
281
|
+
if (host.startsWith('staging.') || host.includes('-staging.') || host.includes('.staging.'))
|
|
282
|
+
return 'staging';
|
|
283
|
+
return 'production';
|
|
284
|
+
}
|
|
285
|
+
computeThemeLabel() {
|
|
286
|
+
const applied = this.themeService.AppliedTheme;
|
|
287
|
+
const preference = this.themeService.Preference;
|
|
288
|
+
const def = this.themeService.GetThemeDefinition(applied);
|
|
289
|
+
const themeName = def?.Name ?? applied;
|
|
290
|
+
return preference === 'system' ? `${themeName} · System` : themeName;
|
|
291
|
+
}
|
|
292
|
+
computeBrowserLabel() {
|
|
293
|
+
const ua = typeof navigator !== 'undefined' ? navigator.userAgent : '';
|
|
294
|
+
let browser = 'Unknown';
|
|
295
|
+
if (/Edg\//.test(ua))
|
|
296
|
+
browser = 'Edge';
|
|
297
|
+
else if (/OPR\//.test(ua))
|
|
298
|
+
browser = 'Opera';
|
|
299
|
+
else if (/Chrome\//.test(ua) && !/Chromium/.test(ua))
|
|
300
|
+
browser = 'Chrome';
|
|
301
|
+
else if (/Firefox\//.test(ua))
|
|
302
|
+
browser = 'Firefox';
|
|
303
|
+
else if (/Safari\//.test(ua))
|
|
304
|
+
browser = 'Safari';
|
|
305
|
+
let os = 'Unknown';
|
|
306
|
+
if (/iPhone|iPad|iPod/.test(ua))
|
|
307
|
+
os = 'iOS';
|
|
308
|
+
else if (/Android/.test(ua))
|
|
309
|
+
os = 'Android';
|
|
310
|
+
else if (/Mac OS X|Macintosh/.test(ua))
|
|
311
|
+
os = 'macOS';
|
|
312
|
+
else if (/Windows/.test(ua))
|
|
313
|
+
os = 'Windows';
|
|
314
|
+
else if (/Linux/.test(ua))
|
|
315
|
+
os = 'Linux';
|
|
316
|
+
return `${browser} / ${os}`;
|
|
317
|
+
}
|
|
318
|
+
showToast(message, durationMs = 2400) {
|
|
319
|
+
this.ToastMessage = message;
|
|
320
|
+
if (this.toastTimer)
|
|
321
|
+
clearTimeout(this.toastTimer);
|
|
322
|
+
this.toastTimer = setTimeout(() => {
|
|
323
|
+
this.ToastMessage = '';
|
|
324
|
+
this.cdr.markForCheck();
|
|
325
|
+
}, durationMs);
|
|
326
|
+
}
|
|
327
|
+
wiggleLogo() {
|
|
328
|
+
const svg = document.querySelector('.mj-about__logo');
|
|
329
|
+
svg?.animate([
|
|
330
|
+
{ transform: 'rotate(0)' },
|
|
331
|
+
{ transform: 'rotate(-6deg)' },
|
|
332
|
+
{ transform: 'rotate(6deg)' },
|
|
333
|
+
{ transform: 'rotate(0)' }
|
|
334
|
+
], { duration: 400, easing: 'ease-in-out' });
|
|
335
|
+
}
|
|
336
|
+
spinLogo() {
|
|
337
|
+
const svg = document.querySelector('.mj-about__logo');
|
|
338
|
+
svg?.animate([
|
|
339
|
+
{ transform: 'rotate(0) scale(1)', offset: 0 },
|
|
340
|
+
{ transform: 'rotate(720deg) scale(1.1)', offset: 0.85 },
|
|
341
|
+
{ transform: 'rotate(720deg) scale(1)', offset: 1 }
|
|
342
|
+
], { duration: 2800, easing: 'cubic-bezier(0.22, 1, 0.36, 1)' });
|
|
343
|
+
}
|
|
344
|
+
barrelRoll() {
|
|
345
|
+
const dialog = document.querySelector('.mj-about');
|
|
346
|
+
dialog?.animate([{ transform: 'rotate(0)' }, { transform: 'rotate(360deg)' }], { duration: 900, easing: 'cubic-bezier(0.65, 0, 0.35, 1)' });
|
|
347
|
+
}
|
|
348
|
+
static ɵfac = /*@__PURE__*/ (() => { let ɵAboutDialogComponent_BaseFactory; return function AboutDialogComponent_Factory(__ngFactoryType__) { return (ɵAboutDialogComponent_BaseFactory || (ɵAboutDialogComponent_BaseFactory = i0.ɵɵgetInheritedFactory(AboutDialogComponent)))(__ngFactoryType__ || AboutDialogComponent); }; })();
|
|
349
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AboutDialogComponent, selectors: [["mj-about-dialog"]], inputs: { AvatarUrl: "AvatarUrl", AvatarIconClass: "AvatarIconClass" }, outputs: { CloseRequested: "CloseRequested" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 130, vars: 36, consts: [["aboutLogo", ""], ["role", "document", 1, "mj-about"], ["type", "button", "aria-label", "Close", 1, "mj-about__close", 3, "click"], [1, "fa-solid", "fa-xmark"], [1, "mj-about__hero"], [1, "mj-about__logo-wrap", 3, "click"], ["xmlns", "http://www.w3.org/2000/svg", "viewBox", "0 0 448.28 57.11", "aria-label", "MemberJunction", 1, "mj-about__logo"], ["fill", "#fff", "d", "M428.73,44.89v-16.92c.7-1.34,1.66-2.37,2.88-3.09,1.22-.72,2.59-1.08,4.12-1.08,2.2,0,3.92.65,5.17,1.94,1.25,1.3,1.87,3.07,1.87,5.33v13.81h2.01v-14.36c0-1.71-.36-3.21-1.08-4.51-.72-1.3-1.72-2.3-3.02-3.02-1.3-.72-2.8-1.08-4.51-1.08-3.14,0-5.63,1.21-7.46,3.61v-3.16h-2.01v22.51h2.01ZM407.08,42.12c-1.39-.87-2.49-2.04-3.29-3.52-.81-1.48-1.21-3.13-1.21-4.96s.4-3.48,1.21-4.96c.81-1.48,1.91-2.65,3.29-3.52,1.39-.87,2.94-1.31,4.64-1.31s3.25.44,4.64,1.31c1.39.87,2.49,2.04,3.29,3.52.81,1.48,1.21,3.13,1.21,4.96s-.41,3.48-1.21,4.96c-.81,1.48-1.91,2.65-3.29,3.52-1.39.87-2.94,1.3-4.64,1.3s-3.26-.43-4.64-1.3M417.42,43.79c1.69-1.04,3.04-2.45,4.03-4.23.99-1.78,1.49-3.76,1.49-5.92s-.5-4.18-1.49-5.95c-.99-1.77-2.33-3.17-4.03-4.21-1.69-1.04-3.59-1.56-5.69-1.56s-3.97.52-5.67,1.56c-1.71,1.04-3.06,2.44-4.05,4.21-.99,1.77-1.49,3.75-1.49,5.95s.5,4.14,1.49,5.92c.99,1.79,2.34,3.19,4.05,4.23,1.71,1.04,3.6,1.56,5.67,1.56s4-.52,5.69-1.56M397.14,16.8c.32-.34.48-.75.48-1.24s-.16-.9-.48-1.24c-.32-.34-.74-.5-1.26-.5-.49,0-.9.17-1.24.5-.34.34-.5.75-.5,1.24s.17.9.5,1.24c.34.34.75.5,1.24.5.52,0,.94-.17,1.26-.5M396.89,22.38h-2.01v22.51h2.01v-22.51ZM390.57,45.21c.61-.09,1.2-.25,1.78-.46v-1.97c-.52.21-1.02.37-1.51.48-.49.11-1.08.16-1.79.16-1.31,0-2.25-.28-2.81-.84s-.85-1.49-.85-2.77v-15.6h6.95v-1.83h-6.95v-6.31l-2.01.64v5.67h-4.94v1.83h4.94v16.29c0,1.52.46,2.71,1.37,3.57.91.85,2.23,1.28,3.94,1.28.64,0,1.26-.05,1.87-.14M373.12,44.43c1.54-.61,2.89-1.45,4.05-2.51l-1.37-1.65c-.98.95-2.1,1.71-3.36,2.29s-2.57.87-3.91.87c-1.71,0-3.25-.43-4.64-1.3-1.39-.87-2.49-2.04-3.29-3.52-.81-1.48-1.21-3.13-1.21-4.96s.4-3.48,1.21-4.96c.81-1.48,1.9-2.65,3.29-3.52,1.39-.87,2.93-1.31,4.64-1.31,1.34,0,2.64.28,3.91.85,1.27.56,2.39,1.33,3.36,2.31l1.37-1.65c-1.16-1.07-2.51-1.91-4.05-2.52-1.54-.61-3.07-.91-4.6-.91-2.07,0-3.96.52-5.67,1.56s-3.06,2.44-4.05,4.21c-.99,1.77-1.49,3.75-1.49,5.95s.49,4.18,1.49,5.95c.99,1.77,2.34,3.17,4.05,4.21s3.6,1.56,5.67,1.56c1.52,0,3.06-.31,4.6-.92M337.65,44.89v-16.92c.7-1.34,1.66-2.37,2.88-3.09,1.22-.72,2.59-1.08,4.12-1.08,2.2,0,3.92.65,5.17,1.94,1.25,1.3,1.88,3.07,1.88,5.33v13.81h2.01v-14.36c0-1.71-.36-3.21-1.07-4.51-.72-1.3-1.73-2.3-3.02-3.02s-2.8-1.08-4.5-1.08c-3.14,0-5.63,1.21-7.46,3.61v-3.16h-2.01v22.51h2.01ZM328.7,41.78v3.11h2.01v-22.51h-2.01v16.92c-.7,1.31-1.66,2.33-2.88,3.06-1.22.73-2.59,1.1-4.12,1.1-2.2,0-3.92-.65-5.17-1.97-1.25-1.31-1.87-3.08-1.87-5.31v-13.81h-2.01v14.36c0,1.71.37,3.21,1.1,4.51.73,1.3,1.74,2.3,3.04,3.02,1.3.72,2.78,1.08,4.46,1.08,3.2,0,5.69-1.19,7.46-3.57M303.64,43.88c1.74-1.01,3.08-2.43,4.02-4.28.95-1.84,1.42-4.05,1.42-6.61V12.87h-2.1v20.13c0,3.2-.85,5.74-2.56,7.62-1.71,1.88-4.01,2.81-6.91,2.81-2.17,0-4.02-.56-5.58-1.69-1.56-1.13-2.77-2.75-3.66-4.85l-1.92.87c1.01,2.5,2.46,4.4,4.37,5.7,1.9,1.3,4.15,1.94,6.75,1.94,2.38,0,4.44-.5,6.18-1.51M279.77,44.89v-15.37c.61-.97,1.41-1.73,2.4-2.26.99-.53,2.07-.8,3.22-.8.64,0,1.27.06,1.88.18.61.12,1.16.3,1.65.55v-6.45c-.55-.37-1.48-.56-2.79-.59-1.31,0-2.5.25-3.57.75-1.07.5-2,1.24-2.79,2.22v-2.42h-7.41v24.2h7.41ZM253.44,28.07c.47-.56,1.04-1,1.72-1.3.67-.3,1.42-.46,2.24-.46s1.52.16,2.2.48c.67.32,1.26.76,1.76,1.33.5.56.88,1.24,1.12,2.04h-10.11c.24-.82.6-1.52,1.07-2.08M263.5,44.47c1.6-.58,3.17-1.51,4.69-2.79l-4.9-4.35c-.58.58-1.28,1.03-2.1,1.35-.82.32-1.74.48-2.75.48-.91,0-1.77-.16-2.56-.48-.79-.32-1.47-.77-2.03-1.35-.56-.58-1.02-1.25-1.35-2.01h17.25v-1.83c0-2.56-.53-4.83-1.58-6.82-1.05-1.98-2.49-3.54-4.32-4.69-1.83-1.14-3.94-1.72-6.31-1.72s-4.48.55-6.4,1.67c-1.92,1.11-3.44,2.62-4.55,4.5-1.11,1.89-1.67,4.01-1.67,6.36s.58,4.47,1.74,6.36c1.16,1.89,2.74,3.39,4.73,4.51,2,1.11,4.23,1.67,6.7,1.67,2.01,0,3.82-.29,5.42-.87M227.12,38.44c-.88-.34-1.65-.79-2.29-1.37v-8.46c.67-.64,1.43-1.12,2.29-1.44s1.8-.48,2.84-.48c1.19,0,2.26.27,3.23.8.96.53,1.72,1.26,2.29,2.2.56.93.84,1.97.84,3.13s-.28,2.2-.84,3.13c-.56.93-1.32,1.66-2.27,2.2-.95.54-2.03.8-3.25.8-1.01,0-1.95-.17-2.84-.5M224.74,44.89v-1.37c.92.55,1.91.97,2.97,1.26,1.07.29,2.16.43,3.29.43,2.35,0,4.48-.55,6.38-1.65,1.91-1.1,3.41-2.58,4.53-4.46,1.11-1.88,1.67-3.97,1.67-6.29s-.55-4.42-1.65-6.29c-1.1-1.88-2.58-3.37-4.44-4.49-1.86-1.11-3.95-1.67-6.27-1.67s-4.51.67-6.41,2.01v-10.66l-7.41,1.14v32.02h7.32ZM183.69,44.89v-16.56c.46-.58,1.01-1.01,1.67-1.3.66-.29,1.4-.43,2.22-.43,1.19,0,2.14.4,2.86,1.19.72.79,1.07,1.86,1.07,3.2v13.91h7.41v-14.91c0-.28,0-.54-.02-.8-.01-.26-.04-.51-.07-.76.49-.61,1.07-1.07,1.74-1.37.67-.31,1.42-.46,2.24-.46,1.19,0,2.14.4,2.86,1.19s1.08,1.86,1.08,3.2v13.91h7.41v-14.91c0-1.92-.41-3.61-1.21-5.08-.81-1.46-1.91-2.61-3.31-3.43-1.4-.82-3.02-1.23-4.85-1.23-1.59,0-3.05.29-4.39.87-1.34.58-2.5,1.4-3.48,2.47-.83-1.07-1.85-1.89-3.07-2.47-1.22-.58-2.59-.87-4.12-.87-2.32,0-4.33.67-6.04,2.01v-1.56h-7.41v24.2h7.41ZM157.36,28.07c.47-.56,1.04-1,1.72-1.3.67-.3,1.42-.46,2.24-.46s1.52.16,2.2.48c.67.32,1.26.76,1.76,1.33.5.56.88,1.24,1.12,2.04h-10.11c.24-.82.6-1.52,1.08-2.08M167.42,44.47c1.6-.58,3.16-1.51,4.69-2.79l-4.9-4.35c-.58.58-1.28,1.03-2.1,1.35-.83.32-1.74.48-2.75.48-.91,0-1.77-.16-2.56-.48-.79-.32-1.47-.77-2.03-1.35-.56-.58-1.02-1.25-1.35-2.01h17.25v-1.83c0-2.56-.53-4.83-1.58-6.82-1.05-1.98-2.49-3.54-4.32-4.69-1.83-1.14-3.93-1.72-6.31-1.72s-4.48.55-6.41,1.67c-1.92,1.11-3.44,2.62-4.55,4.5-1.11,1.89-1.67,4.01-1.67,6.36s.58,4.47,1.74,6.36c1.16,1.89,2.74,3.39,4.74,4.51,2,1.11,4.23,1.67,6.7,1.67,2.01,0,3.82-.29,5.42-.87M118.71,44.89v-21.91l10.52,19.62,10.52-19.53v21.82h7.41V12.87h-9.93l-7.91,15.1-7.91-15.1h-9.93v32.02h7.23Z"], ["fill", "#fff", "d", "M88.82,12.69v27.95s9.76,5.58,9.76,5.58c.01-.24.02-34.61.02-34.61,0-3.72-1.57-6.76-4.3-8.35-2.73-1.59-6.15-1.44-9.38.39l-33.88,19.27L17.17,3.66c-3.23-1.84-6.65-1.98-9.38-.39-2.73,1.59-4.3,4.63-4.3,8.35,0,0,0,34.39.02,34.64l9.75-5.58V12.69l27.89,15.87L4.21,49.57c.71,1.84,1.93,3.32,3.57,4.28,1.26.73,2.67,1.1,4.13,1.1,1.71,0,3.51-.5,5.25-1.49L88.82,12.69Z"], ["fill", "#fff", "d", "M64.22,30.43l-9.86,5.64,30.56,17.39c1.74.99,3.54,1.49,5.26,1.49,1.46,0,2.87-.37,4.13-1.1,1.65-.96,2.87-2.46,3.59-4.31l-33.67-19.11Z"], [1, "mj-about__version-row"], ["role", "button", "tabindex", "0", 1, "mj-about__version-pill", 3, "click"], [1, "mj-about__version-dot"], [1, "mj-about__body"], [1, "mj-about__connection-line"], [1, "mj-about__user-card"], ["alt", "", 1, "mj-about__user-avatar", "mj-about__user-avatar--img", 3, "src"], [1, "mj-about__user-avatar", "mj-about__user-avatar--icon"], [1, "mj-about__user-avatar"], [1, "mj-about__user-info"], [1, "mj-about__user-name"], [1, "mj-about__user-meta"], [1, "mj-about__conn-pill"], [1, "fa-solid", "fa-circle"], ["type", "button", 1, "mj-about__diag-toggle", 3, "click"], [1, "mj-about__diag-toggle-left"], [1, "fa-solid", "fa-stethoscope"], [1, "fa-solid", "fa-chevron-down", "mj-about__diag-chev"], [1, "mj-about__diag-panel"], [1, "mj-about__diag-section"], [1, "fa-solid", "fa-cube"], [1, "mj-about__diag-row"], [1, "k"], [1, "v"], [1, "fa-solid", "fa-plug"], [1, "v", 3, "title"], [1, "fa-solid", "fa-database"], [1, "fa-solid", "fa-user"], ["type", "button", 1, "mj-about__copy-btn", 3, "click"], [1, "fa-solid"], [1, "mj-about__footer"], ["href", "https://docs.memberjunction.org", "target", "_blank", "rel", "noopener", 1, "mj-about__footer-link"], [1, "fa-solid", "fa-book"], ["href", "https://github.com/MemberJunction/MJ", "target", "_blank", "rel", "noopener", 1, "mj-about__footer-link"], [1, "fa-brands", "fa-github"], ["href", "https://memberjunction.com", "target", "_blank", "rel", "noopener", 1, "mj-about__footer-link"], [1, "fa-solid", "fa-globe"], [1, "mj-about__credit"], [1, "mj-about__heart"], [1, "mj-about__toast"], [1, "mj-about__connection-name"], ["alt", "", 1, "mj-about__user-avatar", "mj-about__user-avatar--img", 3, "error", "src"]], template: function AboutDialogComponent_Template(rf, ctx) { if (rf & 1) {
|
|
350
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
351
|
+
i0.ɵɵdomElementStart(0, "div", 1)(1, "button", 2);
|
|
352
|
+
i0.ɵɵdomListener("click", function AboutDialogComponent_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.OnCloseClick()); });
|
|
353
|
+
i0.ɵɵdomElement(2, "i", 3);
|
|
354
|
+
i0.ɵɵdomElementEnd();
|
|
355
|
+
i0.ɵɵdomElementStart(3, "div", 4)(4, "div", 5);
|
|
356
|
+
i0.ɵɵdomListener("click", function AboutDialogComponent_Template_div_click_4_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.OnLogoClick()); });
|
|
357
|
+
i0.ɵɵnamespaceSVG();
|
|
358
|
+
i0.ɵɵdomElementStart(5, "svg", 6, 0);
|
|
359
|
+
i0.ɵɵdomElement(7, "path", 7)(8, "path", 8)(9, "path", 9);
|
|
360
|
+
i0.ɵɵdomElementEnd()();
|
|
361
|
+
i0.ɵɵnamespaceHTML();
|
|
362
|
+
i0.ɵɵdomElementStart(10, "div", 10)(11, "span", 11);
|
|
363
|
+
i0.ɵɵdomListener("click", function AboutDialogComponent_Template_span_click_11_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.OnVersionClick()); });
|
|
364
|
+
i0.ɵɵdomElement(12, "span", 12);
|
|
365
|
+
i0.ɵɵdomElementStart(13, "span");
|
|
366
|
+
i0.ɵɵtext(14);
|
|
367
|
+
i0.ɵɵdomElementEnd()()()();
|
|
368
|
+
i0.ɵɵdomElementStart(15, "div", 13);
|
|
369
|
+
i0.ɵɵconditionalCreate(16, AboutDialogComponent_Conditional_16_Template, 4, 1, "div", 14);
|
|
370
|
+
i0.ɵɵdomElementStart(17, "div", 15);
|
|
371
|
+
i0.ɵɵconditionalCreate(18, AboutDialogComponent_Conditional_18_Template, 1, 1, "img", 16)(19, AboutDialogComponent_Conditional_19_Template, 2, 2, "div", 17)(20, AboutDialogComponent_Conditional_20_Template, 2, 1, "div", 18);
|
|
372
|
+
i0.ɵɵdomElementStart(21, "div", 19)(22, "div", 20);
|
|
373
|
+
i0.ɵɵtext(23);
|
|
374
|
+
i0.ɵɵdomElementEnd();
|
|
375
|
+
i0.ɵɵdomElementStart(24, "div", 21);
|
|
376
|
+
i0.ɵɵtext(25);
|
|
377
|
+
i0.ɵɵdomElementEnd()();
|
|
378
|
+
i0.ɵɵdomElementStart(26, "div", 22);
|
|
379
|
+
i0.ɵɵdomElement(27, "i", 23);
|
|
380
|
+
i0.ɵɵtext(28);
|
|
381
|
+
i0.ɵɵdomElementEnd()();
|
|
382
|
+
i0.ɵɵdomElementStart(29, "button", 24);
|
|
383
|
+
i0.ɵɵdomListener("click", function AboutDialogComponent_Template_button_click_29_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.ToggleDiagnostics()); });
|
|
384
|
+
i0.ɵɵdomElementStart(30, "span", 25);
|
|
385
|
+
i0.ɵɵdomElement(31, "i", 26);
|
|
386
|
+
i0.ɵɵtext(32);
|
|
387
|
+
i0.ɵɵdomElementEnd();
|
|
388
|
+
i0.ɵɵdomElement(33, "i", 27);
|
|
389
|
+
i0.ɵɵdomElementEnd();
|
|
390
|
+
i0.ɵɵdomElementStart(34, "div", 28)(35, "div", 29)(36, "h5");
|
|
391
|
+
i0.ɵɵdomElement(37, "i", 30);
|
|
392
|
+
i0.ɵɵtext(38, " Build");
|
|
393
|
+
i0.ɵɵdomElementEnd();
|
|
394
|
+
i0.ɵɵdomElementStart(39, "div", 31)(40, "span", 32);
|
|
395
|
+
i0.ɵɵtext(41, "Version");
|
|
396
|
+
i0.ɵɵdomElementEnd();
|
|
397
|
+
i0.ɵɵdomElementStart(42, "span", 33);
|
|
398
|
+
i0.ɵɵtext(43);
|
|
399
|
+
i0.ɵɵdomElementEnd()();
|
|
400
|
+
i0.ɵɵdomElementStart(44, "div", 31)(45, "span", 32);
|
|
401
|
+
i0.ɵɵtext(46, "Environment");
|
|
402
|
+
i0.ɵɵdomElementEnd();
|
|
403
|
+
i0.ɵɵdomElementStart(47, "span", 33);
|
|
404
|
+
i0.ɵɵtext(48);
|
|
405
|
+
i0.ɵɵdomElementEnd()()();
|
|
406
|
+
i0.ɵɵdomElementStart(49, "div", 29)(50, "h5");
|
|
407
|
+
i0.ɵɵdomElement(51, "i", 34);
|
|
408
|
+
i0.ɵɵtext(52, " Connection");
|
|
409
|
+
i0.ɵɵdomElementEnd();
|
|
410
|
+
i0.ɵɵdomElementStart(53, "div", 31)(54, "span", 32);
|
|
411
|
+
i0.ɵɵtext(55, "API endpoint");
|
|
412
|
+
i0.ɵɵdomElementEnd();
|
|
413
|
+
i0.ɵɵdomElementStart(56, "span", 35);
|
|
414
|
+
i0.ɵɵtext(57);
|
|
415
|
+
i0.ɵɵdomElementEnd()();
|
|
416
|
+
i0.ɵɵdomElementStart(58, "div", 31)(59, "span", 32);
|
|
417
|
+
i0.ɵɵtext(60, "Auth provider");
|
|
418
|
+
i0.ɵɵdomElementEnd();
|
|
419
|
+
i0.ɵɵdomElementStart(61, "span", 33);
|
|
420
|
+
i0.ɵɵtext(62);
|
|
421
|
+
i0.ɵɵdomElementEnd()();
|
|
422
|
+
i0.ɵɵdomElementStart(63, "div", 31)(64, "span", 32);
|
|
423
|
+
i0.ɵɵtext(65, "Status");
|
|
424
|
+
i0.ɵɵdomElementEnd();
|
|
425
|
+
i0.ɵɵdomElementStart(66, "span", 33);
|
|
426
|
+
i0.ɵɵtext(67);
|
|
427
|
+
i0.ɵɵdomElementEnd()()();
|
|
428
|
+
i0.ɵɵdomElementStart(68, "div", 29)(69, "h5");
|
|
429
|
+
i0.ɵɵdomElement(70, "i", 36);
|
|
430
|
+
i0.ɵɵtext(71, " Loaded");
|
|
431
|
+
i0.ɵɵdomElementEnd();
|
|
432
|
+
i0.ɵɵdomElementStart(72, "div", 31)(73, "span", 32);
|
|
433
|
+
i0.ɵɵtext(74, "Entities");
|
|
434
|
+
i0.ɵɵdomElementEnd();
|
|
435
|
+
i0.ɵɵdomElementStart(75, "span", 33);
|
|
436
|
+
i0.ɵɵtext(76);
|
|
437
|
+
i0.ɵɵdomElementEnd()();
|
|
438
|
+
i0.ɵɵdomElementStart(77, "div", 31)(78, "span", 32);
|
|
439
|
+
i0.ɵɵtext(79, "Applications");
|
|
440
|
+
i0.ɵɵdomElementEnd();
|
|
441
|
+
i0.ɵɵdomElementStart(80, "span", 33);
|
|
442
|
+
i0.ɵɵtext(81);
|
|
443
|
+
i0.ɵɵdomElementEnd()();
|
|
444
|
+
i0.ɵɵdomElementStart(82, "div", 31)(83, "span", 32);
|
|
445
|
+
i0.ɵɵtext(84, "Queries");
|
|
446
|
+
i0.ɵɵdomElementEnd();
|
|
447
|
+
i0.ɵɵdomElementStart(85, "span", 33);
|
|
448
|
+
i0.ɵɵtext(86);
|
|
449
|
+
i0.ɵɵdomElementEnd()()();
|
|
450
|
+
i0.ɵɵdomElementStart(87, "div", 29)(88, "h5");
|
|
451
|
+
i0.ɵɵdomElement(89, "i", 37);
|
|
452
|
+
i0.ɵɵtext(90, " Session");
|
|
453
|
+
i0.ɵɵdomElementEnd();
|
|
454
|
+
i0.ɵɵdomElementStart(91, "div", 31)(92, "span", 32);
|
|
455
|
+
i0.ɵɵtext(93, "User");
|
|
456
|
+
i0.ɵɵdomElementEnd();
|
|
457
|
+
i0.ɵɵdomElementStart(94, "span", 33);
|
|
458
|
+
i0.ɵɵtext(95);
|
|
459
|
+
i0.ɵɵdomElementEnd()();
|
|
460
|
+
i0.ɵɵdomElementStart(96, "div", 31)(97, "span", 32);
|
|
461
|
+
i0.ɵɵtext(98, "Roles");
|
|
462
|
+
i0.ɵɵdomElementEnd();
|
|
463
|
+
i0.ɵɵdomElementStart(99, "span", 33);
|
|
464
|
+
i0.ɵɵtext(100);
|
|
465
|
+
i0.ɵɵdomElementEnd()();
|
|
466
|
+
i0.ɵɵdomElementStart(101, "div", 31)(102, "span", 32);
|
|
467
|
+
i0.ɵɵtext(103, "Theme");
|
|
468
|
+
i0.ɵɵdomElementEnd();
|
|
469
|
+
i0.ɵɵdomElementStart(104, "span", 33);
|
|
470
|
+
i0.ɵɵtext(105);
|
|
471
|
+
i0.ɵɵdomElementEnd()();
|
|
472
|
+
i0.ɵɵdomElementStart(106, "div", 31)(107, "span", 32);
|
|
473
|
+
i0.ɵɵtext(108, "Browser");
|
|
474
|
+
i0.ɵɵdomElementEnd();
|
|
475
|
+
i0.ɵɵdomElementStart(109, "span", 33);
|
|
476
|
+
i0.ɵɵtext(110);
|
|
477
|
+
i0.ɵɵdomElementEnd()()();
|
|
478
|
+
i0.ɵɵdomElementStart(111, "button", 38);
|
|
479
|
+
i0.ɵɵdomListener("click", function AboutDialogComponent_Template_button_click_111_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.CopyDiagnostics()); });
|
|
480
|
+
i0.ɵɵdomElement(112, "i", 39);
|
|
481
|
+
i0.ɵɵtext(113);
|
|
482
|
+
i0.ɵɵdomElementEnd()()();
|
|
483
|
+
i0.ɵɵdomElementStart(114, "div", 40)(115, "a", 41);
|
|
484
|
+
i0.ɵɵdomElement(116, "i", 42);
|
|
485
|
+
i0.ɵɵtext(117, " Documentation ");
|
|
486
|
+
i0.ɵɵdomElementEnd();
|
|
487
|
+
i0.ɵɵdomElementStart(118, "a", 43);
|
|
488
|
+
i0.ɵɵdomElement(119, "i", 44);
|
|
489
|
+
i0.ɵɵtext(120, " GitHub ");
|
|
490
|
+
i0.ɵɵdomElementEnd();
|
|
491
|
+
i0.ɵɵdomElementStart(121, "a", 45);
|
|
492
|
+
i0.ɵɵdomElement(122, "i", 46);
|
|
493
|
+
i0.ɵɵtext(123, " Website ");
|
|
494
|
+
i0.ɵɵdomElementEnd()();
|
|
495
|
+
i0.ɵɵdomElementStart(124, "div", 47);
|
|
496
|
+
i0.ɵɵtext(125, " Built with ");
|
|
497
|
+
i0.ɵɵdomElementStart(126, "span", 48);
|
|
498
|
+
i0.ɵɵtext(127, "\u2665");
|
|
499
|
+
i0.ɵɵdomElementEnd();
|
|
500
|
+
i0.ɵɵtext(128, " by the MemberJunction community ");
|
|
501
|
+
i0.ɵɵdomElementEnd();
|
|
502
|
+
i0.ɵɵconditionalCreate(129, AboutDialogComponent_Conditional_129_Template, 2, 1, "div", 49);
|
|
503
|
+
i0.ɵɵdomElementEnd();
|
|
504
|
+
} if (rf & 2) {
|
|
505
|
+
i0.ɵɵadvance(14);
|
|
506
|
+
i0.ɵɵtextInterpolate1("Version ", ctx.Version);
|
|
507
|
+
i0.ɵɵadvance(2);
|
|
508
|
+
i0.ɵɵconditional(ctx.ConnectionLabel ? 16 : -1);
|
|
509
|
+
i0.ɵɵadvance(2);
|
|
510
|
+
i0.ɵɵconditional(ctx.AvatarUrl ? 18 : ctx.AvatarIconClass ? 19 : 20);
|
|
511
|
+
i0.ɵɵadvance(5);
|
|
512
|
+
i0.ɵɵtextInterpolate(ctx.UserName);
|
|
513
|
+
i0.ɵɵadvance(2);
|
|
514
|
+
i0.ɵɵtextInterpolate(ctx.UserMeta);
|
|
515
|
+
i0.ɵɵadvance();
|
|
516
|
+
i0.ɵɵclassProp("mj-about__conn-pill--offline", !ctx.IsConnected);
|
|
517
|
+
i0.ɵɵadvance(2);
|
|
518
|
+
i0.ɵɵtextInterpolate1(" ", ctx.IsConnected ? "Connected" : "Offline", " ");
|
|
519
|
+
i0.ɵɵadvance();
|
|
520
|
+
i0.ɵɵclassProp("mj-about__diag-toggle--open", ctx.DiagnosticsOpen);
|
|
521
|
+
i0.ɵɵadvance(3);
|
|
522
|
+
i0.ɵɵtextInterpolate1(" ", ctx.DiagnosticsOpen ? "Hide diagnostics" : "Show diagnostics", " ");
|
|
523
|
+
i0.ɵɵadvance(2);
|
|
524
|
+
i0.ɵɵclassProp("mj-about__diag-panel--open", ctx.DiagnosticsOpen);
|
|
525
|
+
i0.ɵɵadvance(9);
|
|
526
|
+
i0.ɵɵtextInterpolate(ctx.Version);
|
|
527
|
+
i0.ɵɵadvance(5);
|
|
528
|
+
i0.ɵɵtextInterpolate(ctx.Environment);
|
|
529
|
+
i0.ɵɵadvance(8);
|
|
530
|
+
i0.ɵɵdomProperty("title", ctx.ApiUrl);
|
|
531
|
+
i0.ɵɵadvance();
|
|
532
|
+
i0.ɵɵtextInterpolate(ctx.ApiUrlShort);
|
|
533
|
+
i0.ɵɵadvance(5);
|
|
534
|
+
i0.ɵɵtextInterpolate(ctx.AuthProvider);
|
|
535
|
+
i0.ɵɵadvance(4);
|
|
536
|
+
i0.ɵɵclassProp("mj-about__success", ctx.IsConnected)("mj-about__error", !ctx.IsConnected);
|
|
537
|
+
i0.ɵɵadvance();
|
|
538
|
+
i0.ɵɵtextInterpolate(ctx.IsConnected ? "Connected" : "Offline");
|
|
539
|
+
i0.ɵɵadvance(9);
|
|
540
|
+
i0.ɵɵtextInterpolate(ctx.EntityCount);
|
|
541
|
+
i0.ɵɵadvance(5);
|
|
542
|
+
i0.ɵɵtextInterpolate(ctx.ApplicationCount);
|
|
543
|
+
i0.ɵɵadvance(5);
|
|
544
|
+
i0.ɵɵtextInterpolate(ctx.QueryCount);
|
|
545
|
+
i0.ɵɵadvance(9);
|
|
546
|
+
i0.ɵɵtextInterpolate(ctx.UserEmail);
|
|
547
|
+
i0.ɵɵadvance(5);
|
|
548
|
+
i0.ɵɵtextInterpolate(ctx.UserRolesText);
|
|
549
|
+
i0.ɵɵadvance(5);
|
|
550
|
+
i0.ɵɵtextInterpolate(ctx.ThemeLabel);
|
|
551
|
+
i0.ɵɵadvance(5);
|
|
552
|
+
i0.ɵɵtextInterpolate(ctx.BrowserLabel);
|
|
553
|
+
i0.ɵɵadvance(2);
|
|
554
|
+
i0.ɵɵclassProp("fa-clipboard", !ctx.CopyConfirmed)("fa-check", ctx.CopyConfirmed);
|
|
555
|
+
i0.ɵɵadvance();
|
|
556
|
+
i0.ɵɵtextInterpolate1(" ", ctx.CopyConfirmed ? "Copied!" : "Copy diagnostics", " ");
|
|
557
|
+
i0.ɵɵadvance(16);
|
|
558
|
+
i0.ɵɵconditional(ctx.ToastMessage ? 129 : -1);
|
|
559
|
+
} }, dependencies: [CommonModule], styles: ["[_nghost-%COMP%] {\n display: block;\n width: 100%;\n height: 100%;\n}\n.mj-about[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\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}\n.mj-about__close[_ngcontent-%COMP%] {\n position: absolute;\n top: 12px;\n right: 12px;\n width: 36px;\n height: 36px;\n border: none;\n 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;\n align-items: center;\n justify-content: center;\n transition: background 0.15s;\n z-index: 2;\n}\n.mj-about__close[_ngcontent-%COMP%]:hover { background: rgba(255, 255, 255, 0.3); }\n\n.mj-about__hero[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #264FAF 0%, #0076b6 100%);\n color: #fff;\n padding: 36px 24px 28px;\n position: relative;\n overflow: hidden;\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 14px;\n}\n.mj-about__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-about-rotate 24s linear infinite;\n pointer-events: none;\n}\n@media (prefers-reduced-motion: reduce) {\n .mj-about__hero[_ngcontent-%COMP%]::before { animation: none; }\n}\n@keyframes _ngcontent-%COMP%_mj-about-rotate { to { transform: rotate(360deg); } }\n\n.mj-about__logo-wrap[_ngcontent-%COMP%] {\n position: relative;\n z-index: 1;\n cursor: pointer;\n display: block;\n text-align: center;\n}\n.mj-about__logo[_ngcontent-%COMP%] {\n width: 280px;\n max-width: 80%;\n height: auto;\n display: inline-block;\n filter: drop-shadow(0 2px 8px rgba(0, 0, 0, 0.15));\n transition: transform 0.3s ease-out;\n}\n.mj-about__logo-wrap[_ngcontent-%COMP%]:hover .mj-about__logo[_ngcontent-%COMP%] { transform: scale(1.03); }\n\n.mj-about__version-row[_ngcontent-%COMP%] {\n position: relative;\n z-index: 1;\n text-align: center;\n}\n.mj-about__version-pill[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 7px;\n background: rgba(255, 255, 255, 0.18);\n backdrop-filter: blur(8px);\n border: 1px solid rgba(255, 255, 255, 0.28);\n border-radius: 100px;\n padding: 5px 14px;\n font-size: 12px;\n font-weight: 600;\n cursor: pointer;\n user-select: none;\n color: #fff;\n transition: background 0.15s;\n letter-spacing: 0.2px;\n}\n.mj-about__version-pill[_ngcontent-%COMP%]:hover { background: rgba(255, 255, 255, 0.28); }\n.mj-about__version-dot[_ngcontent-%COMP%] {\n width: 7px;\n height: 7px;\n border-radius: 50%;\n background: #4ade80;\n box-shadow: 0 0 6px #4ade80;\n}\n\n.mj-about__body[_ngcontent-%COMP%] {\n padding: 22px 24px 16px;\n overflow-y: auto;\n flex: 1;\n min-height: 0;\n}\n\n.mj-about__connection-line[_ngcontent-%COMP%] {\n text-align: center;\n font-size: 11.5px;\n color: var(--mj-text-muted);\n margin-bottom: 14px;\n letter-spacing: 0.2px;\n}\n.mj-about__connection-name[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-weight: 600;\n}\n\n.mj-about__user-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 14px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n margin-bottom: 16px;\n}\n.mj-about__user-avatar[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\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-weight: 700;\n font-size: 15px;\n flex-shrink: 0;\n object-fit: cover;\n overflow: hidden;\n}\nimg.mj-about__user-avatar[_ngcontent-%COMP%] { background: var(--mj-bg-surface-card); }\n.mj-about__user-avatar--icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 18px; }\n.mj-about__user-info[_ngcontent-%COMP%] { flex: 1; min-width: 0; }\n.mj-about__user-name[_ngcontent-%COMP%] {\n font-size: 13.5px;\n font-weight: 600;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.mj-about__user-meta[_ngcontent-%COMP%] {\n font-size: 11.5px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.mj-about__conn-pill[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n font-size: 11px;\n color: var(--mj-status-success);\n font-weight: 600;\n background: color-mix(in srgb, var(--mj-status-success) 12%, transparent);\n padding: 3px 8px;\n border-radius: 100px;\n flex-shrink: 0;\n}\n.mj-about__conn-pill[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 6px; }\n.mj-about__conn-pill--offline[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n background: color-mix(in srgb, var(--mj-status-error) 12%, transparent);\n}\n\n.mj-about__diag-toggle[_ngcontent-%COMP%] {\n width: 100%;\n background: transparent;\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n padding: 12px 14px;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n transition: background 0.15s, border-color 0.15s, color 0.15s;\n font-family: inherit;\n}\n.mj-about__diag-toggle[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-primary);\n}\n.mj-about__diag-toggle-left[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n}\n.mj-about__diag-chev[_ngcontent-%COMP%] {\n transition: transform 0.25s;\n color: var(--mj-text-muted);\n}\n.mj-about__diag-toggle--open[_ngcontent-%COMP%] .mj-about__diag-chev[_ngcontent-%COMP%] { transform: rotate(180deg); }\n\n.mj-about__diag-panel[_ngcontent-%COMP%] {\n max-height: 0;\n overflow: hidden;\n transition: max-height 0.35s ease-out, margin-top 0.25s;\n}\n.mj-about__diag-panel--open[_ngcontent-%COMP%] {\n max-height: 800px;\n margin-top: 12px;\n}\n.mj-about__diag-section[_ngcontent-%COMP%] + .mj-about__diag-section[_ngcontent-%COMP%] { margin-top: 12px; }\n.mj-about__diag-section[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-subtle);\n border-radius: 10px;\n padding: 12px 14px;\n}\n.mj-about__diag-section[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n margin: 0 0 8px;\n font-size: 10.5px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.6px;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n.mj-about__diag-section[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n.mj-about__diag-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n font-size: 12.5px;\n padding: 4px 0;\n min-width: 0;\n}\n.mj-about__diag-row[_ngcontent-%COMP%] .k[_ngcontent-%COMP%] { color: var(--mj-text-secondary); flex-shrink: 0; }\n.mj-about__diag-row[_ngcontent-%COMP%] .v[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n font-family: 'SF Mono', Menlo, Consolas, monospace;\n font-size: 11.5px;\n font-weight: 500;\n text-align: right;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n min-width: 0;\n}\n.mj-about__success[_ngcontent-%COMP%] { color: var(--mj-status-success) !important; }\n.mj-about__error[_ngcontent-%COMP%] { color: var(--mj-status-error) !important; }\n\n.mj-about__copy-btn[_ngcontent-%COMP%] {\n width: 100%;\n margin-top: 12px;\n padding: 10px;\n border: 1px dashed var(--mj-border-strong);\n background: transparent;\n border-radius: 8px;\n font-size: 12.5px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n transition: border-color 0.15s, color 0.15s, background 0.15s;\n font-family: inherit;\n}\n.mj-about__copy-btn[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 4%, transparent);\n}\n\n.mj-about__footer[_ngcontent-%COMP%] {\n border-top: 1px solid var(--mj-border-subtle);\n padding: 14px 20px;\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n justify-content: center;\n flex-shrink: 0;\n}\n.mj-about__footer-link[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 7px 12px;\n border-radius: 7px;\n font-size: 12px;\n color: var(--mj-text-secondary);\n text-decoration: none;\n transition: background 0.15s, color 0.15s;\n cursor: pointer;\n}\n.mj-about__footer-link[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-brand-primary);\n}\n\n.mj-about__credit[_ngcontent-%COMP%] {\n text-align: center;\n font-size: 10.5px;\n color: var(--mj-text-muted);\n padding: 0 20px 14px;\n flex-shrink: 0;\n}\n.mj-about__heart[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n display: inline-block;\n animation: _ngcontent-%COMP%_mj-about-heart 2s ease-in-out infinite;\n}\n@media (prefers-reduced-motion: reduce) {\n .mj-about__heart[_ngcontent-%COMP%] { animation: none; }\n}\n@keyframes _ngcontent-%COMP%_mj-about-heart {\n 50% { transform: scale(1.18); }\n}\n\n.mj-about__toast[_ngcontent-%COMP%] {\n position: absolute;\n top: 16px;\n left: 50%;\n transform: translateX(-50%);\n background: var(--mj-text-primary);\n color: var(--mj-bg-surface);\n padding: 10px 18px;\n border-radius: 10px;\n font-size: 13px;\n font-weight: 500;\n box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);\n z-index: 5;\n pointer-events: none;\n animation: _ngcontent-%COMP%_mj-about-toast-in 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);\n max-width: calc(100% - 32px);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n@keyframes _ngcontent-%COMP%_mj-about-toast-in {\n from { transform: translateX(-50%) translateY(-30px); opacity: 0; }\n to { transform: translateX(-50%) translateY(0); opacity: 1; }\n}\n\n@media (max-width: 480px) {\n .mj-about__hero[_ngcontent-%COMP%] { padding: 30px 18px 22px; gap: 12px; }\n .mj-about__logo[_ngcontent-%COMP%] { width: 220px; }\n .mj-about__body[_ngcontent-%COMP%] { padding: 18px 16px 14px; }\n .mj-about__footer[_ngcontent-%COMP%] { padding: 12px 14px; }\n}"] });
|
|
560
|
+
}
|
|
561
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AboutDialogComponent, [{
|
|
562
|
+
type: Component,
|
|
563
|
+
args: [{ selector: 'mj-about-dialog', standalone: true, imports: [CommonModule], template: `
|
|
564
|
+
<div class="mj-about" role="document">
|
|
565
|
+
<button class="mj-about__close" type="button" aria-label="Close" (click)="OnCloseClick()">
|
|
566
|
+
<i class="fa-solid fa-xmark"></i>
|
|
567
|
+
</button>
|
|
568
|
+
|
|
569
|
+
<div class="mj-about__hero">
|
|
570
|
+
<div class="mj-about__logo-wrap" (click)="OnLogoClick()">
|
|
571
|
+
<svg class="mj-about__logo" #aboutLogo
|
|
572
|
+
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448.28 57.11"
|
|
573
|
+
aria-label="MemberJunction">
|
|
574
|
+
<path fill="#fff"
|
|
575
|
+
d="M428.73,44.89v-16.92c.7-1.34,1.66-2.37,2.88-3.09,1.22-.72,2.59-1.08,4.12-1.08,2.2,0,3.92.65,5.17,1.94,1.25,1.3,1.87,3.07,1.87,5.33v13.81h2.01v-14.36c0-1.71-.36-3.21-1.08-4.51-.72-1.3-1.72-2.3-3.02-3.02-1.3-.72-2.8-1.08-4.51-1.08-3.14,0-5.63,1.21-7.46,3.61v-3.16h-2.01v22.51h2.01ZM407.08,42.12c-1.39-.87-2.49-2.04-3.29-3.52-.81-1.48-1.21-3.13-1.21-4.96s.4-3.48,1.21-4.96c.81-1.48,1.91-2.65,3.29-3.52,1.39-.87,2.94-1.31,4.64-1.31s3.25.44,4.64,1.31c1.39.87,2.49,2.04,3.29,3.52.81,1.48,1.21,3.13,1.21,4.96s-.41,3.48-1.21,4.96c-.81,1.48-1.91,2.65-3.29,3.52-1.39.87-2.94,1.3-4.64,1.3s-3.26-.43-4.64-1.3M417.42,43.79c1.69-1.04,3.04-2.45,4.03-4.23.99-1.78,1.49-3.76,1.49-5.92s-.5-4.18-1.49-5.95c-.99-1.77-2.33-3.17-4.03-4.21-1.69-1.04-3.59-1.56-5.69-1.56s-3.97.52-5.67,1.56c-1.71,1.04-3.06,2.44-4.05,4.21-.99,1.77-1.49,3.75-1.49,5.95s.5,4.14,1.49,5.92c.99,1.79,2.34,3.19,4.05,4.23,1.71,1.04,3.6,1.56,5.67,1.56s4-.52,5.69-1.56M397.14,16.8c.32-.34.48-.75.48-1.24s-.16-.9-.48-1.24c-.32-.34-.74-.5-1.26-.5-.49,0-.9.17-1.24.5-.34.34-.5.75-.5,1.24s.17.9.5,1.24c.34.34.75.5,1.24.5.52,0,.94-.17,1.26-.5M396.89,22.38h-2.01v22.51h2.01v-22.51ZM390.57,45.21c.61-.09,1.2-.25,1.78-.46v-1.97c-.52.21-1.02.37-1.51.48-.49.11-1.08.16-1.79.16-1.31,0-2.25-.28-2.81-.84s-.85-1.49-.85-2.77v-15.6h6.95v-1.83h-6.95v-6.31l-2.01.64v5.67h-4.94v1.83h4.94v16.29c0,1.52.46,2.71,1.37,3.57.91.85,2.23,1.28,3.94,1.28.64,0,1.26-.05,1.87-.14M373.12,44.43c1.54-.61,2.89-1.45,4.05-2.51l-1.37-1.65c-.98.95-2.1,1.71-3.36,2.29s-2.57.87-3.91.87c-1.71,0-3.25-.43-4.64-1.3-1.39-.87-2.49-2.04-3.29-3.52-.81-1.48-1.21-3.13-1.21-4.96s.4-3.48,1.21-4.96c.81-1.48,1.9-2.65,3.29-3.52,1.39-.87,2.93-1.31,4.64-1.31,1.34,0,2.64.28,3.91.85,1.27.56,2.39,1.33,3.36,2.31l1.37-1.65c-1.16-1.07-2.51-1.91-4.05-2.52-1.54-.61-3.07-.91-4.6-.91-2.07,0-3.96.52-5.67,1.56s-3.06,2.44-4.05,4.21c-.99,1.77-1.49,3.75-1.49,5.95s.49,4.18,1.49,5.95c.99,1.77,2.34,3.17,4.05,4.21s3.6,1.56,5.67,1.56c1.52,0,3.06-.31,4.6-.92M337.65,44.89v-16.92c.7-1.34,1.66-2.37,2.88-3.09,1.22-.72,2.59-1.08,4.12-1.08,2.2,0,3.92.65,5.17,1.94,1.25,1.3,1.88,3.07,1.88,5.33v13.81h2.01v-14.36c0-1.71-.36-3.21-1.07-4.51-.72-1.3-1.73-2.3-3.02-3.02s-2.8-1.08-4.5-1.08c-3.14,0-5.63,1.21-7.46,3.61v-3.16h-2.01v22.51h2.01ZM328.7,41.78v3.11h2.01v-22.51h-2.01v16.92c-.7,1.31-1.66,2.33-2.88,3.06-1.22.73-2.59,1.1-4.12,1.1-2.2,0-3.92-.65-5.17-1.97-1.25-1.31-1.87-3.08-1.87-5.31v-13.81h-2.01v14.36c0,1.71.37,3.21,1.1,4.51.73,1.3,1.74,2.3,3.04,3.02,1.3.72,2.78,1.08,4.46,1.08,3.2,0,5.69-1.19,7.46-3.57M303.64,43.88c1.74-1.01,3.08-2.43,4.02-4.28.95-1.84,1.42-4.05,1.42-6.61V12.87h-2.1v20.13c0,3.2-.85,5.74-2.56,7.62-1.71,1.88-4.01,2.81-6.91,2.81-2.17,0-4.02-.56-5.58-1.69-1.56-1.13-2.77-2.75-3.66-4.85l-1.92.87c1.01,2.5,2.46,4.4,4.37,5.7,1.9,1.3,4.15,1.94,6.75,1.94,2.38,0,4.44-.5,6.18-1.51M279.77,44.89v-15.37c.61-.97,1.41-1.73,2.4-2.26.99-.53,2.07-.8,3.22-.8.64,0,1.27.06,1.88.18.61.12,1.16.3,1.65.55v-6.45c-.55-.37-1.48-.56-2.79-.59-1.31,0-2.5.25-3.57.75-1.07.5-2,1.24-2.79,2.22v-2.42h-7.41v24.2h7.41ZM253.44,28.07c.47-.56,1.04-1,1.72-1.3.67-.3,1.42-.46,2.24-.46s1.52.16,2.2.48c.67.32,1.26.76,1.76,1.33.5.56.88,1.24,1.12,2.04h-10.11c.24-.82.6-1.52,1.07-2.08M263.5,44.47c1.6-.58,3.17-1.51,4.69-2.79l-4.9-4.35c-.58.58-1.28,1.03-2.1,1.35-.82.32-1.74.48-2.75.48-.91,0-1.77-.16-2.56-.48-.79-.32-1.47-.77-2.03-1.35-.56-.58-1.02-1.25-1.35-2.01h17.25v-1.83c0-2.56-.53-4.83-1.58-6.82-1.05-1.98-2.49-3.54-4.32-4.69-1.83-1.14-3.94-1.72-6.31-1.72s-4.48.55-6.4,1.67c-1.92,1.11-3.44,2.62-4.55,4.5-1.11,1.89-1.67,4.01-1.67,6.36s.58,4.47,1.74,6.36c1.16,1.89,2.74,3.39,4.73,4.51,2,1.11,4.23,1.67,6.7,1.67,2.01,0,3.82-.29,5.42-.87M227.12,38.44c-.88-.34-1.65-.79-2.29-1.37v-8.46c.67-.64,1.43-1.12,2.29-1.44s1.8-.48,2.84-.48c1.19,0,2.26.27,3.23.8.96.53,1.72,1.26,2.29,2.2.56.93.84,1.97.84,3.13s-.28,2.2-.84,3.13c-.56.93-1.32,1.66-2.27,2.2-.95.54-2.03.8-3.25.8-1.01,0-1.95-.17-2.84-.5M224.74,44.89v-1.37c.92.55,1.91.97,2.97,1.26,1.07.29,2.16.43,3.29.43,2.35,0,4.48-.55,6.38-1.65,1.91-1.1,3.41-2.58,4.53-4.46,1.11-1.88,1.67-3.97,1.67-6.29s-.55-4.42-1.65-6.29c-1.1-1.88-2.58-3.37-4.44-4.49-1.86-1.11-3.95-1.67-6.27-1.67s-4.51.67-6.41,2.01v-10.66l-7.41,1.14v32.02h7.32ZM183.69,44.89v-16.56c.46-.58,1.01-1.01,1.67-1.3.66-.29,1.4-.43,2.22-.43,1.19,0,2.14.4,2.86,1.19.72.79,1.07,1.86,1.07,3.2v13.91h7.41v-14.91c0-.28,0-.54-.02-.8-.01-.26-.04-.51-.07-.76.49-.61,1.07-1.07,1.74-1.37.67-.31,1.42-.46,2.24-.46,1.19,0,2.14.4,2.86,1.19s1.08,1.86,1.08,3.2v13.91h7.41v-14.91c0-1.92-.41-3.61-1.21-5.08-.81-1.46-1.91-2.61-3.31-3.43-1.4-.82-3.02-1.23-4.85-1.23-1.59,0-3.05.29-4.39.87-1.34.58-2.5,1.4-3.48,2.47-.83-1.07-1.85-1.89-3.07-2.47-1.22-.58-2.59-.87-4.12-.87-2.32,0-4.33.67-6.04,2.01v-1.56h-7.41v24.2h7.41ZM157.36,28.07c.47-.56,1.04-1,1.72-1.3.67-.3,1.42-.46,2.24-.46s1.52.16,2.2.48c.67.32,1.26.76,1.76,1.33.5.56.88,1.24,1.12,2.04h-10.11c.24-.82.6-1.52,1.08-2.08M167.42,44.47c1.6-.58,3.16-1.51,4.69-2.79l-4.9-4.35c-.58.58-1.28,1.03-2.1,1.35-.83.32-1.74.48-2.75.48-.91,0-1.77-.16-2.56-.48-.79-.32-1.47-.77-2.03-1.35-.56-.58-1.02-1.25-1.35-2.01h17.25v-1.83c0-2.56-.53-4.83-1.58-6.82-1.05-1.98-2.49-3.54-4.32-4.69-1.83-1.14-3.93-1.72-6.31-1.72s-4.48.55-6.41,1.67c-1.92,1.11-3.44,2.62-4.55,4.5-1.11,1.89-1.67,4.01-1.67,6.36s.58,4.47,1.74,6.36c1.16,1.89,2.74,3.39,4.74,4.51,2,1.11,4.23,1.67,6.7,1.67,2.01,0,3.82-.29,5.42-.87M118.71,44.89v-21.91l10.52,19.62,10.52-19.53v21.82h7.41V12.87h-9.93l-7.91,15.1-7.91-15.1h-9.93v32.02h7.23Z" />
|
|
576
|
+
<path fill="#fff"
|
|
577
|
+
d="M88.82,12.69v27.95s9.76,5.58,9.76,5.58c.01-.24.02-34.61.02-34.61,0-3.72-1.57-6.76-4.3-8.35-2.73-1.59-6.15-1.44-9.38.39l-33.88,19.27L17.17,3.66c-3.23-1.84-6.65-1.98-9.38-.39-2.73,1.59-4.3,4.63-4.3,8.35,0,0,0,34.39.02,34.64l9.75-5.58V12.69l27.89,15.87L4.21,49.57c.71,1.84,1.93,3.32,3.57,4.28,1.26.73,2.67,1.1,4.13,1.1,1.71,0,3.51-.5,5.25-1.49L88.82,12.69Z" />
|
|
578
|
+
<path fill="#fff"
|
|
579
|
+
d="M64.22,30.43l-9.86,5.64,30.56,17.39c1.74.99,3.54,1.49,5.26,1.49,1.46,0,2.87-.37,4.13-1.1,1.65-.96,2.87-2.46,3.59-4.31l-33.67-19.11Z" />
|
|
580
|
+
</svg>
|
|
581
|
+
</div>
|
|
582
|
+
|
|
583
|
+
<div class="mj-about__version-row">
|
|
584
|
+
<span class="mj-about__version-pill" (click)="OnVersionClick()" role="button" tabindex="0">
|
|
585
|
+
<span class="mj-about__version-dot"></span>
|
|
586
|
+
<span>Version {{ Version }}</span>
|
|
587
|
+
</span>
|
|
588
|
+
</div>
|
|
589
|
+
</div>
|
|
590
|
+
|
|
591
|
+
<div class="mj-about__body">
|
|
592
|
+
@if (ConnectionLabel) {
|
|
593
|
+
<div class="mj-about__connection-line">
|
|
594
|
+
Connected to <span class="mj-about__connection-name">{{ ConnectionLabel }}</span>
|
|
595
|
+
</div>
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
<div class="mj-about__user-card">
|
|
599
|
+
@if (AvatarUrl) {
|
|
600
|
+
<img class="mj-about__user-avatar mj-about__user-avatar--img"
|
|
601
|
+
[src]="AvatarUrl" alt="" (error)="OnAvatarLoadError()" />
|
|
602
|
+
} @else if (AvatarIconClass) {
|
|
603
|
+
<div class="mj-about__user-avatar mj-about__user-avatar--icon">
|
|
604
|
+
<i [class]="AvatarIconClass"></i>
|
|
605
|
+
</div>
|
|
606
|
+
} @else {
|
|
607
|
+
<div class="mj-about__user-avatar">{{ UserInitials }}</div>
|
|
608
|
+
}
|
|
609
|
+
<div class="mj-about__user-info">
|
|
610
|
+
<div class="mj-about__user-name">{{ UserName }}</div>
|
|
611
|
+
<div class="mj-about__user-meta">{{ UserMeta }}</div>
|
|
612
|
+
</div>
|
|
613
|
+
<div class="mj-about__conn-pill" [class.mj-about__conn-pill--offline]="!IsConnected">
|
|
614
|
+
<i class="fa-solid fa-circle"></i>
|
|
615
|
+
{{ IsConnected ? 'Connected' : 'Offline' }}
|
|
616
|
+
</div>
|
|
617
|
+
</div>
|
|
618
|
+
|
|
619
|
+
<button class="mj-about__diag-toggle" type="button" [class.mj-about__diag-toggle--open]="DiagnosticsOpen"
|
|
620
|
+
(click)="ToggleDiagnostics()">
|
|
621
|
+
<span class="mj-about__diag-toggle-left">
|
|
622
|
+
<i class="fa-solid fa-stethoscope"></i>
|
|
623
|
+
{{ DiagnosticsOpen ? 'Hide diagnostics' : 'Show diagnostics' }}
|
|
624
|
+
</span>
|
|
625
|
+
<i class="fa-solid fa-chevron-down mj-about__diag-chev"></i>
|
|
626
|
+
</button>
|
|
627
|
+
|
|
628
|
+
<div class="mj-about__diag-panel" [class.mj-about__diag-panel--open]="DiagnosticsOpen">
|
|
629
|
+
<div class="mj-about__diag-section">
|
|
630
|
+
<h5><i class="fa-solid fa-cube"></i> Build</h5>
|
|
631
|
+
<div class="mj-about__diag-row"><span class="k">Version</span><span class="v">{{ Version }}</span></div>
|
|
632
|
+
<div class="mj-about__diag-row"><span class="k">Environment</span><span class="v">{{ Environment }}</span></div>
|
|
633
|
+
</div>
|
|
634
|
+
<div class="mj-about__diag-section">
|
|
635
|
+
<h5><i class="fa-solid fa-plug"></i> Connection</h5>
|
|
636
|
+
<div class="mj-about__diag-row"><span class="k">API endpoint</span><span class="v" [title]="ApiUrl">{{ ApiUrlShort }}</span></div>
|
|
637
|
+
<div class="mj-about__diag-row"><span class="k">Auth provider</span><span class="v">{{ AuthProvider }}</span></div>
|
|
638
|
+
<div class="mj-about__diag-row"><span class="k">Status</span><span class="v" [class.mj-about__success]="IsConnected" [class.mj-about__error]="!IsConnected">{{ IsConnected ? 'Connected' : 'Offline' }}</span></div>
|
|
639
|
+
</div>
|
|
640
|
+
<div class="mj-about__diag-section">
|
|
641
|
+
<h5><i class="fa-solid fa-database"></i> Loaded</h5>
|
|
642
|
+
<div class="mj-about__diag-row"><span class="k">Entities</span><span class="v">{{ EntityCount }}</span></div>
|
|
643
|
+
<div class="mj-about__diag-row"><span class="k">Applications</span><span class="v">{{ ApplicationCount }}</span></div>
|
|
644
|
+
<div class="mj-about__diag-row"><span class="k">Queries</span><span class="v">{{ QueryCount }}</span></div>
|
|
645
|
+
</div>
|
|
646
|
+
<div class="mj-about__diag-section">
|
|
647
|
+
<h5><i class="fa-solid fa-user"></i> Session</h5>
|
|
648
|
+
<div class="mj-about__diag-row"><span class="k">User</span><span class="v">{{ UserEmail }}</span></div>
|
|
649
|
+
<div class="mj-about__diag-row"><span class="k">Roles</span><span class="v">{{ UserRolesText }}</span></div>
|
|
650
|
+
<div class="mj-about__diag-row"><span class="k">Theme</span><span class="v">{{ ThemeLabel }}</span></div>
|
|
651
|
+
<div class="mj-about__diag-row"><span class="k">Browser</span><span class="v">{{ BrowserLabel }}</span></div>
|
|
652
|
+
</div>
|
|
653
|
+
<button class="mj-about__copy-btn" type="button" (click)="CopyDiagnostics()">
|
|
654
|
+
<i class="fa-solid" [class.fa-clipboard]="!CopyConfirmed" [class.fa-check]="CopyConfirmed"></i>
|
|
655
|
+
{{ CopyConfirmed ? 'Copied!' : 'Copy diagnostics' }}
|
|
656
|
+
</button>
|
|
657
|
+
</div>
|
|
658
|
+
</div>
|
|
659
|
+
|
|
660
|
+
<div class="mj-about__footer">
|
|
661
|
+
<a class="mj-about__footer-link" href="https://docs.memberjunction.org" target="_blank" rel="noopener">
|
|
662
|
+
<i class="fa-solid fa-book"></i> Documentation
|
|
663
|
+
</a>
|
|
664
|
+
<a class="mj-about__footer-link" href="https://github.com/MemberJunction/MJ" target="_blank" rel="noopener">
|
|
665
|
+
<i class="fa-brands fa-github"></i> GitHub
|
|
666
|
+
</a>
|
|
667
|
+
<a class="mj-about__footer-link" href="https://memberjunction.com" target="_blank" rel="noopener">
|
|
668
|
+
<i class="fa-solid fa-globe"></i> Website
|
|
669
|
+
</a>
|
|
670
|
+
</div>
|
|
671
|
+
|
|
672
|
+
<div class="mj-about__credit">
|
|
673
|
+
Built with <span class="mj-about__heart">♥</span> by the MemberJunction community
|
|
674
|
+
</div>
|
|
675
|
+
|
|
676
|
+
@if (ToastMessage) {
|
|
677
|
+
<div class="mj-about__toast">{{ ToastMessage }}</div>
|
|
678
|
+
}
|
|
679
|
+
</div>
|
|
680
|
+
`, styles: ["\n:host {\n display: block;\n width: 100%;\n height: 100%;\n}\n.mj-about {\n display: flex;\n flex-direction: column;\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}\n.mj-about__close {\n position: absolute;\n top: 12px;\n right: 12px;\n width: 36px;\n height: 36px;\n border: none;\n 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;\n align-items: center;\n justify-content: center;\n transition: background 0.15s;\n z-index: 2;\n}\n.mj-about__close:hover { background: rgba(255, 255, 255, 0.3); }\n\n.mj-about__hero {\n background: linear-gradient(135deg, #264FAF 0%, #0076b6 100%);\n color: #fff;\n padding: 36px 24px 28px;\n position: relative;\n overflow: hidden;\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 14px;\n}\n.mj-about__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-about-rotate 24s linear infinite;\n pointer-events: none;\n}\n@media (prefers-reduced-motion: reduce) {\n .mj-about__hero::before { animation: none; }\n}\n@keyframes mj-about-rotate { to { transform: rotate(360deg); } }\n\n.mj-about__logo-wrap {\n position: relative;\n z-index: 1;\n cursor: pointer;\n display: block;\n text-align: center;\n}\n.mj-about__logo {\n width: 280px;\n max-width: 80%;\n height: auto;\n display: inline-block;\n filter: drop-shadow(0 2px 8px rgba(0, 0, 0, 0.15));\n transition: transform 0.3s ease-out;\n}\n.mj-about__logo-wrap:hover .mj-about__logo { transform: scale(1.03); }\n\n.mj-about__version-row {\n position: relative;\n z-index: 1;\n text-align: center;\n}\n.mj-about__version-pill {\n display: inline-flex;\n align-items: center;\n gap: 7px;\n background: rgba(255, 255, 255, 0.18);\n backdrop-filter: blur(8px);\n border: 1px solid rgba(255, 255, 255, 0.28);\n border-radius: 100px;\n padding: 5px 14px;\n font-size: 12px;\n font-weight: 600;\n cursor: pointer;\n user-select: none;\n color: #fff;\n transition: background 0.15s;\n letter-spacing: 0.2px;\n}\n.mj-about__version-pill:hover { background: rgba(255, 255, 255, 0.28); }\n.mj-about__version-dot {\n width: 7px;\n height: 7px;\n border-radius: 50%;\n background: #4ade80;\n box-shadow: 0 0 6px #4ade80;\n}\n\n.mj-about__body {\n padding: 22px 24px 16px;\n overflow-y: auto;\n flex: 1;\n min-height: 0;\n}\n\n.mj-about__connection-line {\n text-align: center;\n font-size: 11.5px;\n color: var(--mj-text-muted);\n margin-bottom: 14px;\n letter-spacing: 0.2px;\n}\n.mj-about__connection-name {\n color: var(--mj-text-secondary);\n font-weight: 600;\n}\n\n.mj-about__user-card {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 14px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n margin-bottom: 16px;\n}\n.mj-about__user-avatar {\n width: 40px;\n height: 40px;\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-weight: 700;\n font-size: 15px;\n flex-shrink: 0;\n object-fit: cover;\n overflow: hidden;\n}\nimg.mj-about__user-avatar { background: var(--mj-bg-surface-card); }\n.mj-about__user-avatar--icon i { font-size: 18px; }\n.mj-about__user-info { flex: 1; min-width: 0; }\n.mj-about__user-name {\n font-size: 13.5px;\n font-weight: 600;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.mj-about__user-meta {\n font-size: 11.5px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.mj-about__conn-pill {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n font-size: 11px;\n color: var(--mj-status-success);\n font-weight: 600;\n background: color-mix(in srgb, var(--mj-status-success) 12%, transparent);\n padding: 3px 8px;\n border-radius: 100px;\n flex-shrink: 0;\n}\n.mj-about__conn-pill i { font-size: 6px; }\n.mj-about__conn-pill--offline {\n color: var(--mj-status-error);\n background: color-mix(in srgb, var(--mj-status-error) 12%, transparent);\n}\n\n.mj-about__diag-toggle {\n width: 100%;\n background: transparent;\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n padding: 12px 14px;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n transition: background 0.15s, border-color 0.15s, color 0.15s;\n font-family: inherit;\n}\n.mj-about__diag-toggle:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-primary);\n}\n.mj-about__diag-toggle-left {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n}\n.mj-about__diag-chev {\n transition: transform 0.25s;\n color: var(--mj-text-muted);\n}\n.mj-about__diag-toggle--open .mj-about__diag-chev { transform: rotate(180deg); }\n\n.mj-about__diag-panel {\n max-height: 0;\n overflow: hidden;\n transition: max-height 0.35s ease-out, margin-top 0.25s;\n}\n.mj-about__diag-panel--open {\n max-height: 800px;\n margin-top: 12px;\n}\n.mj-about__diag-section + .mj-about__diag-section { margin-top: 12px; }\n.mj-about__diag-section {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-subtle);\n border-radius: 10px;\n padding: 12px 14px;\n}\n.mj-about__diag-section h5 {\n margin: 0 0 8px;\n font-size: 10.5px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.6px;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n.mj-about__diag-section h5 i { color: var(--mj-brand-primary); }\n.mj-about__diag-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n font-size: 12.5px;\n padding: 4px 0;\n min-width: 0;\n}\n.mj-about__diag-row .k { color: var(--mj-text-secondary); flex-shrink: 0; }\n.mj-about__diag-row .v {\n color: var(--mj-text-primary);\n font-family: 'SF Mono', Menlo, Consolas, monospace;\n font-size: 11.5px;\n font-weight: 500;\n text-align: right;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n min-width: 0;\n}\n.mj-about__success { color: var(--mj-status-success) !important; }\n.mj-about__error { color: var(--mj-status-error) !important; }\n\n.mj-about__copy-btn {\n width: 100%;\n margin-top: 12px;\n padding: 10px;\n border: 1px dashed var(--mj-border-strong);\n background: transparent;\n border-radius: 8px;\n font-size: 12.5px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n transition: border-color 0.15s, color 0.15s, background 0.15s;\n font-family: inherit;\n}\n.mj-about__copy-btn:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 4%, transparent);\n}\n\n.mj-about__footer {\n border-top: 1px solid var(--mj-border-subtle);\n padding: 14px 20px;\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n justify-content: center;\n flex-shrink: 0;\n}\n.mj-about__footer-link {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 7px 12px;\n border-radius: 7px;\n font-size: 12px;\n color: var(--mj-text-secondary);\n text-decoration: none;\n transition: background 0.15s, color 0.15s;\n cursor: pointer;\n}\n.mj-about__footer-link:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-brand-primary);\n}\n\n.mj-about__credit {\n text-align: center;\n font-size: 10.5px;\n color: var(--mj-text-muted);\n padding: 0 20px 14px;\n flex-shrink: 0;\n}\n.mj-about__heart {\n color: var(--mj-status-error);\n display: inline-block;\n animation: mj-about-heart 2s ease-in-out infinite;\n}\n@media (prefers-reduced-motion: reduce) {\n .mj-about__heart { animation: none; }\n}\n@keyframes mj-about-heart {\n 50% { transform: scale(1.18); }\n}\n\n.mj-about__toast {\n position: absolute;\n top: 16px;\n left: 50%;\n transform: translateX(-50%);\n background: var(--mj-text-primary);\n color: var(--mj-bg-surface);\n padding: 10px 18px;\n border-radius: 10px;\n font-size: 13px;\n font-weight: 500;\n box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);\n z-index: 5;\n pointer-events: none;\n animation: mj-about-toast-in 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);\n max-width: calc(100% - 32px);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n@keyframes mj-about-toast-in {\n from { transform: translateX(-50%) translateY(-30px); opacity: 0; }\n to { transform: translateX(-50%) translateY(0); opacity: 1; }\n}\n\n@media (max-width: 480px) {\n .mj-about__hero { padding: 30px 18px 22px; gap: 12px; }\n .mj-about__logo { width: 220px; }\n .mj-about__body { padding: 18px 16px 14px; }\n .mj-about__footer { padding: 12px 14px; }\n}\n "] }]
|
|
681
|
+
}], null, { CloseRequested: [{
|
|
682
|
+
type: Output
|
|
683
|
+
}], AvatarUrl: [{
|
|
684
|
+
type: Input
|
|
685
|
+
}], AvatarIconClass: [{
|
|
686
|
+
type: Input
|
|
687
|
+
}] }); })();
|
|
688
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AboutDialogComponent, { className: "AboutDialogComponent", filePath: "src/lib/about/about-dialog.component.ts", lineNumber: 530 }); })();
|
|
689
|
+
//# sourceMappingURL=about-dialog.component.js.map
|