@magmonium/one 0.4.43 → 0.4.44

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.
@@ -29221,12 +29221,232 @@ const remoteOutletRoute = (name) => ({
29221
29221
  children: [],
29222
29222
  data: { remoteOutlet: true }
29223
29223
  });
29224
+ var AppLogoComponent = class AppLogoComponent {
29225
+ glyph = input(...ngDevMode ? [void 0, { debugName: "glyph" }] : /* istanbul ignore next */ []);
29226
+ appColor = input(...ngDevMode ? [void 0, { debugName: "appColor" }] : /* istanbul ignore next */ []);
29227
+ name = input(...ngDevMode ? [void 0, { debugName: "name" }] : /* istanbul ignore next */ []);
29228
+ link = input(...ngDevMode ? [void 0, { debugName: "link" }] : /* istanbul ignore next */ []);
29229
+ variant = input("tile", ...ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []);
29230
+ tone = input("app", ...ngDevMode ? [{ debugName: "tone" }] : /* istanbul ignore next */ []);
29231
+ size = input(...ngDevMode ? [void 0, { debugName: "size" }] : /* istanbul ignore next */ []);
29232
+ #state = inject(AppLogoState);
29233
+ #own = inject(APP_LOGO_SOURCE);
29234
+ lookup = computed(() => {
29235
+ const link = this.link()?.trim();
29236
+ if (link) return this.#state.logos()[link];
29237
+ return this.glyph() !== void 0 || this.appColor() !== void 0 || this.name() !== void 0 ? void 0 : this.#own();
29238
+ }, ...ngDevMode ? [{ debugName: "lookup" }] : /* istanbul ignore next */ []);
29239
+ color = computed(() => {
29240
+ const value = this.appColor() !== void 0 ? this.appColor() : this.lookup()?.color;
29241
+ return value ? normalizeAppColor(value) ?? null : null;
29242
+ }, ...ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []);
29243
+ label = computed(() => (this.name() !== void 0 ? this.name() : this.lookup()?.name) || this.link()?.trim() || "", ...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
29244
+ shadow = computed(() => {
29245
+ const color = this.color();
29246
+ return color ? appLogoShadowColor(color) : null;
29247
+ }, ...ngDevMode ? [{ debugName: "shadow" }] : /* istanbul ignore next */ []);
29248
+ mask = computed(() => {
29249
+ if (this.glyph() !== void 0) {
29250
+ const glyph = this.glyph();
29251
+ return glyph ? logoGlyphMaskUrl(glyph) : void 0;
29252
+ }
29253
+ const found = this.lookup();
29254
+ if (found?.glyph) return logoGlyphMaskUrl(found.glyph);
29255
+ return found?.src ? `url("${encodeURI(found.src)}")` : void 0;
29256
+ }, ...ngDevMode ? [{ debugName: "mask" }] : /* istanbul ignore next */ []);
29257
+ letter = computed(() => this.label().trim().charAt(0).toUpperCase(), ...ngDevMode ? [{ debugName: "letter" }] : /* istanbul ignore next */ []);
29258
+ static ɵfac = i0.ɵɵngDeclareFactory({
29259
+ minVersion: "12.0.0",
29260
+ version: "22.2.1",
29261
+ ngImport: i0,
29262
+ type: AppLogoComponent,
29263
+ deps: [],
29264
+ target: i0.ɵɵFactoryTarget.Component
29265
+ });
29266
+ static ɵcmp = i0.ɵɵngDeclareComponent({
29267
+ minVersion: "17.0.0",
29268
+ version: "22.2.1",
29269
+ type: AppLogoComponent,
29270
+ isStandalone: true,
29271
+ selector: "m-app-logo",
29272
+ inputs: {
29273
+ glyph: {
29274
+ classPropertyName: "glyph",
29275
+ publicName: "glyph",
29276
+ isSignal: true,
29277
+ isRequired: false,
29278
+ transformFunction: null
29279
+ },
29280
+ appColor: {
29281
+ classPropertyName: "appColor",
29282
+ publicName: "appColor",
29283
+ isSignal: true,
29284
+ isRequired: false,
29285
+ transformFunction: null
29286
+ },
29287
+ name: {
29288
+ classPropertyName: "name",
29289
+ publicName: "name",
29290
+ isSignal: true,
29291
+ isRequired: false,
29292
+ transformFunction: null
29293
+ },
29294
+ link: {
29295
+ classPropertyName: "link",
29296
+ publicName: "link",
29297
+ isSignal: true,
29298
+ isRequired: false,
29299
+ transformFunction: null
29300
+ },
29301
+ variant: {
29302
+ classPropertyName: "variant",
29303
+ publicName: "variant",
29304
+ isSignal: true,
29305
+ isRequired: false,
29306
+ transformFunction: null
29307
+ },
29308
+ tone: {
29309
+ classPropertyName: "tone",
29310
+ publicName: "tone",
29311
+ isSignal: true,
29312
+ isRequired: false,
29313
+ transformFunction: null
29314
+ },
29315
+ size: {
29316
+ classPropertyName: "size",
29317
+ publicName: "size",
29318
+ isSignal: true,
29319
+ isRequired: false,
29320
+ transformFunction: null
29321
+ }
29322
+ },
29323
+ host: {
29324
+ attributes: { "role": "img" },
29325
+ properties: {
29326
+ "class.m-app-logo--glow": "variant() === 'glow'",
29327
+ "class.m-app-logo--light": "tone() === 'light'",
29328
+ "attr.aria-label": "label() || null",
29329
+ "style.width": "size() || null",
29330
+ "style.height": "size() || null",
29331
+ "style.--m-app-logo-color": "color()",
29332
+ "style.--m-app-logo-shadow": "shadow()"
29333
+ },
29334
+ classAttribute: "m-app-logo"
29335
+ },
29336
+ ngImport: i0,
29337
+ template: `
29338
+ <span class="m-app-logo__mark">
29339
+ @if (mask(); as url) {
29340
+ <span class="m-app-logo__glyph" [style.mask-image]="url"></span>
29341
+ } @else {
29342
+ <span class="m-app-logo__letter">{{ letter() }}</span>
29343
+ }
29344
+ </span>
29345
+ `,
29346
+ isInline: true,
29347
+ styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%;aspect-ratio:1;container-type:size;border-radius:22%;overflow:hidden;background:var(--m-app-logo-color, var(--m-text-quaternary))}.m-app-logo__mark{display:flex;align-items:center;justify-content:center;width:100%;height:100%;filter:drop-shadow(0 4cqmin 3cqmin var(--m-app-logo-shadow, rgba(0, 0, 0, .25)))}.m-app-logo__glyph{width:60%;height:60%;background:#fff;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}.m-app-logo__letter{color:#fff;font-size:50cqmin;font-weight:700;line-height:1}:host(.m-app-logo--glow){border-radius:0;overflow:visible;background:none}:host(.m-app-logo--glow) .m-app-logo__mark{filter:drop-shadow(0 0 8cqmin color-mix(in srgb,var(--m-app-logo-color, var(--m-mm)) 55%,transparent)) drop-shadow(0 6cqmin 18cqmin color-mix(in srgb,var(--m-app-logo-color, var(--m-mm)) 35%,transparent))}:host(.m-app-logo--glow) .m-app-logo__glyph{width:100%;height:100%;background:var(--m-app-logo-color, var(--m-mm))}:host(.m-app-logo--glow) .m-app-logo__letter{color:var(--m-app-logo-color, var(--m-mm));font-size:80cqmin}:host(.m-app-logo--glow.m-app-logo--light) .m-app-logo__glyph{background:#fff}:host(.m-app-logo--glow.m-app-logo--light) .m-app-logo__letter{color:#fff}\n"],
29348
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
29349
+ });
29350
+ };
29351
+ i0.ɵɵngDeclareClassMetadata({
29352
+ minVersion: "12.0.0",
29353
+ version: "22.2.1",
29354
+ ngImport: i0,
29355
+ type: AppLogoComponent,
29356
+ decorators: [{
29357
+ type: Component,
29358
+ args: [{
29359
+ selector: "m-app-logo",
29360
+ template: `
29361
+ <span class="m-app-logo__mark">
29362
+ @if (mask(); as url) {
29363
+ <span class="m-app-logo__glyph" [style.mask-image]="url"></span>
29364
+ } @else {
29365
+ <span class="m-app-logo__letter">{{ letter() }}</span>
29366
+ }
29367
+ </span>
29368
+ `,
29369
+ changeDetection: ChangeDetectionStrategy.OnPush,
29370
+ host: {
29371
+ class: "m-app-logo",
29372
+ "[class.m-app-logo--glow]": "variant() === 'glow'",
29373
+ "[class.m-app-logo--light]": "tone() === 'light'",
29374
+ role: "img",
29375
+ "[attr.aria-label]": "label() || null",
29376
+ "[style.width]": "size() || null",
29377
+ "[style.height]": "size() || null",
29378
+ "[style.--m-app-logo-color]": "color()",
29379
+ "[style.--m-app-logo-shadow]": "shadow()"
29380
+ },
29381
+ styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%;aspect-ratio:1;container-type:size;border-radius:22%;overflow:hidden;background:var(--m-app-logo-color, var(--m-text-quaternary))}.m-app-logo__mark{display:flex;align-items:center;justify-content:center;width:100%;height:100%;filter:drop-shadow(0 4cqmin 3cqmin var(--m-app-logo-shadow, rgba(0, 0, 0, .25)))}.m-app-logo__glyph{width:60%;height:60%;background:#fff;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}.m-app-logo__letter{color:#fff;font-size:50cqmin;font-weight:700;line-height:1}:host(.m-app-logo--glow){border-radius:0;overflow:visible;background:none}:host(.m-app-logo--glow) .m-app-logo__mark{filter:drop-shadow(0 0 8cqmin color-mix(in srgb,var(--m-app-logo-color, var(--m-mm)) 55%,transparent)) drop-shadow(0 6cqmin 18cqmin color-mix(in srgb,var(--m-app-logo-color, var(--m-mm)) 35%,transparent))}:host(.m-app-logo--glow) .m-app-logo__glyph{width:100%;height:100%;background:var(--m-app-logo-color, var(--m-mm))}:host(.m-app-logo--glow) .m-app-logo__letter{color:var(--m-app-logo-color, var(--m-mm));font-size:80cqmin}:host(.m-app-logo--glow.m-app-logo--light) .m-app-logo__glyph{background:#fff}:host(.m-app-logo--glow.m-app-logo--light) .m-app-logo__letter{color:#fff}\n"]
29382
+ }]
29383
+ }],
29384
+ propDecorators: {
29385
+ glyph: [{
29386
+ type: i0.Input,
29387
+ args: [{
29388
+ isSignal: true,
29389
+ alias: "glyph",
29390
+ required: false
29391
+ }]
29392
+ }],
29393
+ appColor: [{
29394
+ type: i0.Input,
29395
+ args: [{
29396
+ isSignal: true,
29397
+ alias: "appColor",
29398
+ required: false
29399
+ }]
29400
+ }],
29401
+ name: [{
29402
+ type: i0.Input,
29403
+ args: [{
29404
+ isSignal: true,
29405
+ alias: "name",
29406
+ required: false
29407
+ }]
29408
+ }],
29409
+ link: [{
29410
+ type: i0.Input,
29411
+ args: [{
29412
+ isSignal: true,
29413
+ alias: "link",
29414
+ required: false
29415
+ }]
29416
+ }],
29417
+ variant: [{
29418
+ type: i0.Input,
29419
+ args: [{
29420
+ isSignal: true,
29421
+ alias: "variant",
29422
+ required: false
29423
+ }]
29424
+ }],
29425
+ tone: [{
29426
+ type: i0.Input,
29427
+ args: [{
29428
+ isSignal: true,
29429
+ alias: "tone",
29430
+ required: false
29431
+ }]
29432
+ }],
29433
+ size: [{
29434
+ type: i0.Input,
29435
+ args: [{
29436
+ isSignal: true,
29437
+ alias: "size",
29438
+ required: false
29439
+ }]
29440
+ }]
29441
+ }
29442
+ });
29224
29443
  const REMOTE_PAGE_RELOAD = new InjectionToken("REMOTE_PAGE_RELOAD", {
29225
29444
  providedIn: "root",
29226
29445
  factory: () => () => window.location.reload()
29227
29446
  });
29228
29447
  const tierReloadKey = (link) => `m-remote-tier-reload:${window.location.pathname}|${link ?? ""}|${link && wcTierOf(link) || "status"}`;
29229
29448
  const isBootRedirect = (pending, sent, path) => pending && (sent === void 0 || !samePath(path, sent));
29449
+ const REMOTE_BOOT_TIMEOUT_MS = 1e4;
29230
29450
  var RemoteComponent = class RemoteComponent {
29231
29451
  config = input(...ngDevMode ? [void 0, { debugName: "config" }] : /* istanbul ignore next */ []);
29232
29452
  link = input(...ngDevMode ? [void 0, { debugName: "link" }] : /* istanbul ignore next */ []);
@@ -29247,6 +29467,8 @@ var RemoteComponent = class RemoteComponent {
29247
29467
  return typeof mount === "string" ? parseMountPattern(mount) : mount;
29248
29468
  }, ...ngDevMode ? [{ debugName: "pattern" }] : /* istanbul ignore next */ []);
29249
29469
  beta = input(false, ...ngDevMode ? [{ debugName: "beta" }] : /* istanbul ignore next */ []);
29470
+ glyph = input(...ngDevMode ? [void 0, { debugName: "glyph" }] : /* istanbul ignore next */ []);
29471
+ appColor = input(...ngDevMode ? [void 0, { debugName: "appColor" }] : /* istanbul ignore next */ []);
29250
29472
  loaded = output();
29251
29473
  failed = output();
29252
29474
  loader = inject(RemoteLoaderService);
@@ -29272,6 +29494,13 @@ var RemoteComponent = class RemoteComponent {
29272
29494
  pinnedLink;
29273
29495
  state = signal("idle", ...ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []);
29274
29496
  failure = signal({}, ...ngDevMode ? [{ debugName: "failure" }] : /* istanbul ignore next */ []);
29497
+ booting = signal(false, ...ngDevMode ? [{ debugName: "booting" }] : /* istanbul ignore next */ []);
29498
+ bootTimer;
29499
+ endBoot = () => {
29500
+ clearTimeout(this.bootTimer);
29501
+ this.bootTimer = void 0;
29502
+ this.booting.set(false);
29503
+ };
29275
29504
  hostQuery = this.router ? toSignal(this.router.events.pipe(filter((e) => e instanceof NavigationEnd), map(() => this.currentQuery())), { initialValue: this.currentQuery() }) : signal("");
29276
29505
  hostSegments = this.router ? toSignal(this.router.events.pipe(filter((e) => e instanceof NavigationEnd), map(() => this.primarySegments())), { initialValue: this.primarySegments() }) : signal([]);
29277
29506
  mountMatch = linkedSignal({
@@ -29293,13 +29522,29 @@ var RemoteComponent = class RemoteComponent {
29293
29522
  return navUrl === void 0 ? void 0 : `${navUrl}${this.hostQuery()}`;
29294
29523
  }, ...ngDevMode ? [{ debugName: "remotePath" }] : /* istanbul ignore next */ []);
29295
29524
  ownTail = computed(() => this.mountMatch()?.navUrl ?? this.tail(), ...ngDevMode ? [{ debugName: "ownTail" }] : /* istanbul ignore next */ []);
29296
- appColor = computed(() => {
29525
+ mountColor = computed(() => {
29526
+ const chosen = normalizeAppColor(this.appColor() ?? "");
29527
+ if (chosen) return chosen;
29297
29528
  const link = this.appLink();
29298
29529
  const color = link ? this.appLogoState.logos()[link]?.color : void 0;
29299
29530
  return color ? normalizeAppColor(color) : void 0;
29300
- }, ...ngDevMode ? [{ debugName: "appColor" }] : /* istanbul ignore next */ []);
29531
+ }, ...ngDevMode ? [{ debugName: "mountColor" }] : /* istanbul ignore next */ []);
29532
+ chosenGlyph = computed(() => {
29533
+ const glyph = this.glyph()?.trim();
29534
+ return glyph ? rebuildLogoGlyph(glyph).svg || void 0 : void 0;
29535
+ }, ...ngDevMode ? [{ debugName: "chosenGlyph" }] : /* istanbul ignore next */ []);
29536
+ splash = computed(() => {
29537
+ const link = this.appLink() ?? "";
29538
+ const own = link ? this.appLogoState.logos()[link] : void 0;
29539
+ const logo = own && own.glyph !== void 0 ? own : this.appLogoState.source();
29540
+ return {
29541
+ glyph: this.chosenGlyph() ?? logo?.glyph ?? null,
29542
+ color: this.mountColor() ?? null,
29543
+ name: own?.name?.trim() || link
29544
+ };
29545
+ }, ...ngDevMode ? [{ debugName: "splash" }] : /* istanbul ignore next */ []);
29301
29546
  constructor() {
29302
- effect(() => paintAppColor(this.elementRef.nativeElement, this.appColor()));
29547
+ effect(() => paintAppColor(this.elementRef.nativeElement, this.mountColor()));
29303
29548
  effect(() => {
29304
29549
  this.loginStore?.isLoggedIn();
29305
29550
  const config = this.config();
@@ -29365,6 +29610,7 @@ var RemoteComponent = class RemoteComponent {
29365
29610
  });
29366
29611
  }
29367
29612
  ngOnDestroy() {
29613
+ clearTimeout(this.bootTimer);
29368
29614
  if (this.pinnedLink) setWcTier(this.pinnedLink, void 0);
29369
29615
  this.dismountElement();
29370
29616
  this.url()?.clear(this.queryKeys);
@@ -29411,6 +29657,7 @@ var RemoteComponent = class RemoteComponent {
29411
29657
  };
29412
29658
  onReport = (event) => {
29413
29659
  const detail = event.detail;
29660
+ this.endBoot();
29414
29661
  const raw = detail?.path;
29415
29662
  if (raw === void 0) return;
29416
29663
  const path = raw.replace(/^\//, "");
@@ -29485,6 +29732,8 @@ var RemoteComponent = class RemoteComponent {
29485
29732
  } catch {}
29486
29733
  result.element.addEventListener(WC_ROUTE_CHANGED_EVENT, this.onReport);
29487
29734
  host.appendChild(result.element);
29735
+ this.booting.set(true);
29736
+ this.bootTimer = setTimeout(this.endBoot, REMOTE_BOOT_TIMEOUT_MS);
29488
29737
  this.state.set("loaded");
29489
29738
  const loadedConfig = result.config ?? config;
29490
29739
  if (loadedConfig) this.loaded.emit(loadedConfig);
@@ -29502,6 +29751,7 @@ var RemoteComponent = class RemoteComponent {
29502
29751
  };
29503
29752
  dismountElement = () => {
29504
29753
  const host = this.elementRef.nativeElement;
29754
+ this.endBoot();
29505
29755
  this.loadedElement?.removeEventListener(WC_ROUTE_CHANGED_EVENT, this.onReport);
29506
29756
  if (this.loadedElement?.parentNode === host) host.removeChild(this.loadedElement);
29507
29757
  this.loadedElement = void 0;
@@ -29625,33 +29875,79 @@ var RemoteComponent = class RemoteComponent {
29625
29875
  isSignal: true,
29626
29876
  isRequired: false,
29627
29877
  transformFunction: null
29878
+ },
29879
+ glyph: {
29880
+ classPropertyName: "glyph",
29881
+ publicName: "glyph",
29882
+ isSignal: true,
29883
+ isRequired: false,
29884
+ transformFunction: null
29885
+ },
29886
+ appColor: {
29887
+ classPropertyName: "appColor",
29888
+ publicName: "appColor",
29889
+ isSignal: true,
29890
+ isRequired: false,
29891
+ transformFunction: null
29628
29892
  }
29629
29893
  },
29630
29894
  outputs: {
29631
29895
  loaded: "loaded",
29632
29896
  failed: "failed"
29633
29897
  },
29634
- host: { classAttribute: "m-remote" },
29898
+ host: {
29899
+ properties: { "class.m-remote--booting": "booting()" },
29900
+ classAttribute: "m-remote"
29901
+ },
29635
29902
  ngImport: i0,
29636
29903
  template: `
29637
- @if (state() === 'loading') {
29638
- <div class="m-remote__loading"><div class="m-remote__spinner"></div></div>
29904
+ @if (state() === 'loading' || booting()) {
29905
+ <div class="m-remote__splash">
29906
+ <span class="m-remote__splash-mark">
29907
+ <m-app-logo
29908
+ variant="glow"
29909
+ tone="light"
29910
+ [glyph]="splash().glyph"
29911
+ [appColor]="splash().color"
29912
+ [name]="splash().name"
29913
+ />
29914
+ </span>
29915
+ </div>
29639
29916
  } @else if (state() === 'self-beta') {
29640
29917
  <div class="m-remote__self-beta">
29641
- <span class="m-remote__reason">{{ 'remote-self-beta' | translate }}</span>
29642
- <m-button label="open-beta" icon="chevrons-right" variant="primary" (clicked)="openBeta()" />
29918
+ <span class="m-remote__reason">{{
29919
+ 'remote-self-beta' | translate
29920
+ }}</span>
29921
+ <m-button
29922
+ label="open-beta"
29923
+ icon="chevrons-right"
29924
+ variant="primary"
29925
+ (clicked)="openBeta()"
29926
+ />
29643
29927
  </div>
29644
29928
  } @else if (state() === 'failed') {
29645
29929
  <div class="m-remote__broken">
29646
29930
  <m-icon name="link-broken" color="currentColor" />
29647
29931
  <span class="m-remote__reason">
29648
29932
  @switch (failure().reason) {
29649
- @case ('invalid-link') { {{ 'remote-invalid-link' | translate }} }
29650
- @case ('config-not-found') { {{ 'remote-config-not-found' | translate }} }
29651
- @case ('script-failed') { {{ 'remote-script-failed' | translate }} }
29652
- @case ('element-timeout') { {{ 'remote-element-timeout' | translate }} }
29653
- @case ('offline') { {{ 'remote-offline' | translate }} }
29654
- @case ('tier-conflict') { {{ 'remote-tier-conflict' | translate }} }
29933
+ @case ('invalid-link') {
29934
+ {{ 'remote-invalid-link' | translate }}
29935
+ }
29936
+ @case ('config-not-found') {
29937
+ {{ 'remote-config-not-found' | translate }}
29938
+ }
29939
+ @case ('script-failed') {
29940
+ {{ 'remote-script-failed' | translate }}
29941
+ }
29942
+ @case ('element-timeout') {
29943
+ {{ 'remote-element-timeout' | translate }}
29944
+ }
29945
+ @case ('offline') {
29946
+ {{ 'remote-offline' | translate }}
29947
+ }
29948
+ @case ('tier-conflict') {
29949
+ {{ 'remote-tier-conflict' | translate }}
29950
+ }
29655
29951
  }
29656
29952
  </span>
29657
29953
  <span class="m-remote__detail">{{ appLink() }}</span>
@@ -29662,7 +29958,7 @@ var RemoteComponent = class RemoteComponent {
29662
29958
  }
29663
29959
  `,
29664
29960
  isInline: true,
29665
- styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.m-remote{display:block;width:100%;min-height:100%;flex:1;isolation:isolate}.m-remote__loading,.m-remote__broken,.m-remote__self-beta{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:24px}.m-remote__spinner{width:20px;height:20px;border:2px solid var(--m-backdrop-border);border-top-color:var(--m-mm);border-radius:50%;animation:m-remote-spin .8s linear infinite}.m-remote__broken,.m-remote__self-beta{color:var(--m-text-secondary)}.m-remote__detail{font-size:.85em}@keyframes m-remote-spin{to{transform:rotate(360deg)}}\n"],
29961
+ styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.m-remote{display:block;width:100%;min-height:100%;flex:1;isolation:isolate}.m-remote__broken,.m-remote__self-beta{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:24px}.m-remote__broken,.m-remote__self-beta{color:var(--m-text-secondary)}.m-remote--booting{position:relative;min-height:100vh}.m-remote--booting>.m-remote__splash{position:absolute;inset:0;z-index:1}.m-remote--booting>:not(.m-remote__splash){visibility:hidden}.m-remote__splash{display:flex;align-items:center;justify-content:center;width:100%;height:100%;min-height:100vh;background:var(--m-background)}.m-remote__splash-mark{display:flex;width:96px;height:96px;animation:m-remote-breathe 1.6s ease-in-out infinite}@media(prefers-reduced-motion:reduce){.m-remote__splash-mark{animation:none}}.m-remote__detail{font-size:.85em}@keyframes m-remote-breathe{0%,to{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(.93)}}\n"],
29666
29962
  dependencies: [
29667
29963
  {
29668
29964
  kind: "component",
@@ -29714,6 +30010,20 @@ var RemoteComponent = class RemoteComponent {
29714
30010
  ],
29715
30011
  outputs: ["configChange", "clicked"]
29716
30012
  },
30013
+ {
30014
+ kind: "component",
30015
+ type: AppLogoComponent,
30016
+ selector: "m-app-logo",
30017
+ inputs: [
30018
+ "glyph",
30019
+ "appColor",
30020
+ "name",
30021
+ "link",
30022
+ "variant",
30023
+ "tone",
30024
+ "size"
30025
+ ]
30026
+ },
29717
30027
  {
29718
30028
  kind: "pipe",
29719
30029
  type: TranslatePipe,
@@ -29736,28 +30046,61 @@ i0.ɵɵngDeclareClassMetadata({
29736
30046
  imports: [
29737
30047
  TranslatePipe,
29738
30048
  IconComponent,
29739
- ButtonComponent
30049
+ ButtonComponent,
30050
+ AppLogoComponent
29740
30051
  ],
29741
- host: { class: "m-remote" },
30052
+ host: {
30053
+ class: "m-remote",
30054
+ "[class.m-remote--booting]": "booting()"
30055
+ },
29742
30056
  template: `
29743
- @if (state() === 'loading') {
29744
- <div class="m-remote__loading"><div class="m-remote__spinner"></div></div>
30057
+ @if (state() === 'loading' || booting()) {
30058
+ <div class="m-remote__splash">
30059
+ <span class="m-remote__splash-mark">
30060
+ <m-app-logo
30061
+ variant="glow"
30062
+ tone="light"
30063
+ [glyph]="splash().glyph"
30064
+ [appColor]="splash().color"
30065
+ [name]="splash().name"
30066
+ />
30067
+ </span>
30068
+ </div>
29745
30069
  } @else if (state() === 'self-beta') {
29746
30070
  <div class="m-remote__self-beta">
29747
- <span class="m-remote__reason">{{ 'remote-self-beta' | translate }}</span>
29748
- <m-button label="open-beta" icon="chevrons-right" variant="primary" (clicked)="openBeta()" />
30071
+ <span class="m-remote__reason">{{
30072
+ 'remote-self-beta' | translate
30073
+ }}</span>
30074
+ <m-button
30075
+ label="open-beta"
30076
+ icon="chevrons-right"
30077
+ variant="primary"
30078
+ (clicked)="openBeta()"
30079
+ />
29749
30080
  </div>
29750
30081
  } @else if (state() === 'failed') {
29751
30082
  <div class="m-remote__broken">
29752
30083
  <m-icon name="link-broken" color="currentColor" />
29753
30084
  <span class="m-remote__reason">
29754
30085
  @switch (failure().reason) {
29755
- @case ('invalid-link') { {{ 'remote-invalid-link' | translate }} }
29756
- @case ('config-not-found') { {{ 'remote-config-not-found' | translate }} }
29757
- @case ('script-failed') { {{ 'remote-script-failed' | translate }} }
29758
- @case ('element-timeout') { {{ 'remote-element-timeout' | translate }} }
29759
- @case ('offline') { {{ 'remote-offline' | translate }} }
29760
- @case ('tier-conflict') { {{ 'remote-tier-conflict' | translate }} }
30086
+ @case ('invalid-link') {
30087
+ {{ 'remote-invalid-link' | translate }}
30088
+ }
30089
+ @case ('config-not-found') {
30090
+ {{ 'remote-config-not-found' | translate }}
30091
+ }
30092
+ @case ('script-failed') {
30093
+ {{ 'remote-script-failed' | translate }}
30094
+ }
30095
+ @case ('element-timeout') {
30096
+ {{ 'remote-element-timeout' | translate }}
30097
+ }
30098
+ @case ('offline') {
30099
+ {{ 'remote-offline' | translate }}
30100
+ }
30101
+ @case ('tier-conflict') {
30102
+ {{ 'remote-tier-conflict' | translate }}
30103
+ }
29761
30104
  }
29762
30105
  </span>
29763
30106
  <span class="m-remote__detail">{{ appLink() }}</span>
@@ -29769,7 +30112,7 @@ i0.ɵɵngDeclareClassMetadata({
29769
30112
  `,
29770
30113
  changeDetection: ChangeDetectionStrategy.OnPush,
29771
30114
  encapsulation: ViewEncapsulation.None,
29772
- styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.m-remote{display:block;width:100%;min-height:100%;flex:1;isolation:isolate}.m-remote__loading,.m-remote__broken,.m-remote__self-beta{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:24px}.m-remote__spinner{width:20px;height:20px;border:2px solid var(--m-backdrop-border);border-top-color:var(--m-mm);border-radius:50%;animation:m-remote-spin .8s linear infinite}.m-remote__broken,.m-remote__self-beta{color:var(--m-text-secondary)}.m-remote__detail{font-size:.85em}@keyframes m-remote-spin{to{transform:rotate(360deg)}}\n"]
30115
+ styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.m-remote{display:block;width:100%;min-height:100%;flex:1;isolation:isolate}.m-remote__broken,.m-remote__self-beta{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:24px}.m-remote__broken,.m-remote__self-beta{color:var(--m-text-secondary)}.m-remote--booting{position:relative;min-height:100vh}.m-remote--booting>.m-remote__splash{position:absolute;inset:0;z-index:1}.m-remote--booting>:not(.m-remote__splash){visibility:hidden}.m-remote__splash{display:flex;align-items:center;justify-content:center;width:100%;height:100%;min-height:100vh;background:var(--m-background)}.m-remote__splash-mark{display:flex;width:96px;height:96px;animation:m-remote-breathe 1.6s ease-in-out infinite}@media(prefers-reduced-motion:reduce){.m-remote__splash-mark{animation:none}}.m-remote__detail{font-size:.85em}@keyframes m-remote-breathe{0%,to{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(.93)}}\n"]
29773
30116
  }]
29774
30117
  }],
29775
30118
  ctorParameters: () => [],
@@ -29894,6 +30237,22 @@ i0.ɵɵngDeclareClassMetadata({
29894
30237
  required: false
29895
30238
  }]
29896
30239
  }],
30240
+ glyph: [{
30241
+ type: i0.Input,
30242
+ args: [{
30243
+ isSignal: true,
30244
+ alias: "glyph",
30245
+ required: false
30246
+ }]
30247
+ }],
30248
+ appColor: [{
30249
+ type: i0.Input,
30250
+ args: [{
30251
+ isSignal: true,
30252
+ alias: "appColor",
30253
+ required: false
30254
+ }]
30255
+ }],
29897
30256
  loaded: [{
29898
30257
  type: i0.Output,
29899
30258
  args: ["loaded"]
@@ -37977,140 +38336,6 @@ i0.ɵɵngDeclareClassMetadata({
37977
38336
  args: ["inner", { isSignal: true }]
37978
38337
  }] }
37979
38338
  });
37980
- var AppLogoComponent = class AppLogoComponent {
37981
- glyph = input(...ngDevMode ? [void 0, { debugName: "glyph" }] : /* istanbul ignore next */ []);
37982
- appColor = input(...ngDevMode ? [void 0, { debugName: "appColor" }] : /* istanbul ignore next */ []);
37983
- name = input(...ngDevMode ? [void 0, { debugName: "name" }] : /* istanbul ignore next */ []);
37984
- color = computed(() => {
37985
- const value = this.appColor();
37986
- return value ? normalizeAppColor(value) ?? null : null;
37987
- }, ...ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []);
37988
- shadow = computed(() => {
37989
- const color = this.color();
37990
- return color ? appLogoShadowColor(color) : null;
37991
- }, ...ngDevMode ? [{ debugName: "shadow" }] : /* istanbul ignore next */ []);
37992
- mask = computed(() => {
37993
- const glyph = this.glyph();
37994
- return glyph ? logoGlyphMaskUrl(glyph) : void 0;
37995
- }, ...ngDevMode ? [{ debugName: "mask" }] : /* istanbul ignore next */ []);
37996
- letter = computed(() => (this.name()?.trim().charAt(0) ?? "").toUpperCase(), ...ngDevMode ? [{ debugName: "letter" }] : /* istanbul ignore next */ []);
37997
- static ɵfac = i0.ɵɵngDeclareFactory({
37998
- minVersion: "12.0.0",
37999
- version: "22.2.1",
38000
- ngImport: i0,
38001
- type: AppLogoComponent,
38002
- deps: [],
38003
- target: i0.ɵɵFactoryTarget.Component
38004
- });
38005
- static ɵcmp = i0.ɵɵngDeclareComponent({
38006
- minVersion: "17.0.0",
38007
- version: "22.2.1",
38008
- type: AppLogoComponent,
38009
- isStandalone: true,
38010
- selector: "m-app-logo",
38011
- inputs: {
38012
- glyph: {
38013
- classPropertyName: "glyph",
38014
- publicName: "glyph",
38015
- isSignal: true,
38016
- isRequired: false,
38017
- transformFunction: null
38018
- },
38019
- appColor: {
38020
- classPropertyName: "appColor",
38021
- publicName: "appColor",
38022
- isSignal: true,
38023
- isRequired: false,
38024
- transformFunction: null
38025
- },
38026
- name: {
38027
- classPropertyName: "name",
38028
- publicName: "name",
38029
- isSignal: true,
38030
- isRequired: false,
38031
- transformFunction: null
38032
- }
38033
- },
38034
- host: {
38035
- attributes: { "role": "img" },
38036
- properties: {
38037
- "attr.aria-label": "name() || null",
38038
- "style.--m-app-logo-color": "color()",
38039
- "style.--m-app-logo-shadow": "shadow()"
38040
- },
38041
- classAttribute: "m-app-logo"
38042
- },
38043
- ngImport: i0,
38044
- template: `
38045
- <span class="m-app-logo__mark">
38046
- @if (mask(); as url) {
38047
- <span class="m-app-logo__glyph" [style.mask-image]="url"></span>
38048
- } @else {
38049
- <span class="m-app-logo__letter">{{ letter() }}</span>
38050
- }
38051
- </span>
38052
- `,
38053
- isInline: true,
38054
- styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%;aspect-ratio:1;container-type:size;border-radius:22%;overflow:hidden;background:var(--m-app-logo-color, var(--m-text-quaternary))}.m-app-logo__mark{display:flex;align-items:center;justify-content:center;width:100%;height:100%;filter:drop-shadow(0 4cqmin 3cqmin var(--m-app-logo-shadow, rgba(0, 0, 0, .25)))}.m-app-logo__glyph{width:60%;height:60%;background:#fff;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}.m-app-logo__letter{color:#fff;font-size:50cqmin;font-weight:700;line-height:1}\n"],
38055
- changeDetection: i0.ChangeDetectionStrategy.OnPush
38056
- });
38057
- };
38058
- i0.ɵɵngDeclareClassMetadata({
38059
- minVersion: "12.0.0",
38060
- version: "22.2.1",
38061
- ngImport: i0,
38062
- type: AppLogoComponent,
38063
- decorators: [{
38064
- type: Component,
38065
- args: [{
38066
- selector: "m-app-logo",
38067
- template: `
38068
- <span class="m-app-logo__mark">
38069
- @if (mask(); as url) {
38070
- <span class="m-app-logo__glyph" [style.mask-image]="url"></span>
38071
- } @else {
38072
- <span class="m-app-logo__letter">{{ letter() }}</span>
38073
- }
38074
- </span>
38075
- `,
38076
- changeDetection: ChangeDetectionStrategy.OnPush,
38077
- host: {
38078
- class: "m-app-logo",
38079
- role: "img",
38080
- "[attr.aria-label]": "name() || null",
38081
- "[style.--m-app-logo-color]": "color()",
38082
- "[style.--m-app-logo-shadow]": "shadow()"
38083
- },
38084
- styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%;aspect-ratio:1;container-type:size;border-radius:22%;overflow:hidden;background:var(--m-app-logo-color, var(--m-text-quaternary))}.m-app-logo__mark{display:flex;align-items:center;justify-content:center;width:100%;height:100%;filter:drop-shadow(0 4cqmin 3cqmin var(--m-app-logo-shadow, rgba(0, 0, 0, .25)))}.m-app-logo__glyph{width:60%;height:60%;background:#fff;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}.m-app-logo__letter{color:#fff;font-size:50cqmin;font-weight:700;line-height:1}\n"]
38085
- }]
38086
- }],
38087
- propDecorators: {
38088
- glyph: [{
38089
- type: i0.Input,
38090
- args: [{
38091
- isSignal: true,
38092
- alias: "glyph",
38093
- required: false
38094
- }]
38095
- }],
38096
- appColor: [{
38097
- type: i0.Input,
38098
- args: [{
38099
- isSignal: true,
38100
- alias: "appColor",
38101
- required: false
38102
- }]
38103
- }],
38104
- name: [{
38105
- type: i0.Input,
38106
- args: [{
38107
- isSignal: true,
38108
- alias: "name",
38109
- required: false
38110
- }]
38111
- }]
38112
- }
38113
- });
38114
38339
  var AppCardComponent = class AppCardComponent {
38115
38340
  app = input.required(...ngDevMode ? [{ debugName: "app" }] : /* istanbul ignore next */ []);
38116
38341
  variant = input("card", ...ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []);
@@ -38230,7 +38455,11 @@ var AppCardComponent = class AppCardComponent {
38230
38455
  inputs: [
38231
38456
  "glyph",
38232
38457
  "appColor",
38233
- "name"
38458
+ "name",
38459
+ "link",
38460
+ "variant",
38461
+ "tone",
38462
+ "size"
38234
38463
  ]
38235
38464
  },
38236
38465
  {
@@ -38524,7 +38753,11 @@ var LogoGlyphInputComponent = class LogoGlyphInputComponent {
38524
38753
  inputs: [
38525
38754
  "glyph",
38526
38755
  "appColor",
38527
- "name"
38756
+ "name",
38757
+ "link",
38758
+ "variant",
38759
+ "tone",
38760
+ "size"
38528
38761
  ]
38529
38762
  },
38530
38763
  {
@@ -41172,7 +41405,7 @@ var NavHeaderComponent = class NavHeaderComponent {
41172
41405
  },
41173
41406
  ngImport: i0,
41174
41407
  template: "<m-section>\n @if (_isSearch() && _searchOpen()) {\n <!-- Searching: the field takes the row the trail was on, so the nav is\n hidden while there is something to type into. -->\n <m-section-search\n class=\"nav-header__search\"\n [(isOpen)]=\"_searchOpen\"\n [value]=\"_searchStore.query()\"\n [searchLabel]=\"_searchLabel()\"\n (searchChange)=\"_searchStore.updateQuery($event)\"\n />\n } @else if (_trail() || _isSearch()) {\n <!-- The nav's row, and the bar's toggle stands in it rather than in a row\n stacked on top of it. Both slots are written a single `@if` deep: a\n Section matches its projected slots by tag, and a node nested deeper\n falls through to the body instead. -->\n <m-section-back [back]=\"_hasParent()\" (navigate)=\"_navStore.back()\">\n @if (_trail(); as trail) {\n <m-nav-trail [config]=\"trail\" />\n }\n @if (_isSearch()) {\n <m-button\n class=\"nav-header__search-toggle\"\n [config]=\"_searchToggle\"\n (clicked)=\"_openSearch()\"\n />\n }\n </m-section-back>\n }\n\n @if (_user(); as user) {\n <m-user class=\"nav-header__user\" [id]=\"user.id\" [user]=\"user\" mRef=\"root_user\">\n <span class=\"nav-header__username\">&#64;{{ user.username }}</span>\n </m-user>\n } @else if (_header(); as h) {\n @if (h.label) {\n @if (h.appLogo; as logo) {\n <!-- A mounted app's header draws its AppLogo in the icon's place. -->\n <m-section-header class=\"nav-header__title\" [label]=\"h.label\">\n <m-app-logo class=\"nav-header__app-logo\" [glyph]=\"logo.glyph\" [appColor]=\"logo.color\" [name]=\"logo.name\" />\n </m-section-header>\n } @else {\n <m-section-header class=\"nav-header__title\" [icon]=\"h.icon\" [label]=\"h.label\" />\n }\n }\n }\n</m-section>\n",
41175
- styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.nav-header__user{display:block;padding:1rem}.nav-header__username{font-size:.6875rem;font-weight:600;color:var(--m-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}m-section-search.nav-header__search{--_nav-row-height: var(--section-header-min-height, calc(var(--section-header-py, .5rem) * 2 + 1.25rem));min-height:var(--_nav-row-height);padding-block:0;--m-input-clear-height: calc(var(--_nav-row-height) - .5rem);--m-input-clear-min-height: calc(var(--_nav-row-height) - .5rem)}.nav-header__app-logo{flex-shrink:0;align-self:flex-start;width:var(--m-section-header-icon-box, 1.5125rem);height:var(--m-section-header-icon-box, 1.5125rem)}\n"],
41408
+ styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.nav-header__user{display:block;padding:1rem}.nav-header__username{font-size:.6875rem;font-weight:600;color:var(--m-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}m-section-search.nav-header__search{--_nav-row-height: var(--section-header-min-height, calc(var(--section-header-py, .5rem) * 2 + 1.25rem));min-height:var(--_nav-row-height);padding-block:0;--m-input-clear-height: calc(var(--_nav-row-height) - .5rem);--m-input-clear-min-height: calc(var(--_nav-row-height) - .5rem)}.nav-header__title .nav-header__app-logo{flex-shrink:0;align-self:flex-start;width:var(--m-section-header-icon-box, 1.5125rem);height:var(--m-section-header-icon-box, 1.5125rem)}\n"],
41176
41409
  dependencies: [
41177
41410
  {
41178
41411
  kind: "component",
@@ -41337,7 +41570,11 @@ var NavHeaderComponent = class NavHeaderComponent {
41337
41570
  inputs: [
41338
41571
  "glyph",
41339
41572
  "appColor",
41340
- "name"
41573
+ "name",
41574
+ "link",
41575
+ "variant",
41576
+ "tone",
41577
+ "size"
41341
41578
  ]
41342
41579
  }
41343
41580
  ],
@@ -41373,7 +41610,7 @@ i0.ɵɵngDeclareClassMetadata({
41373
41610
  "[style.--m-section-min-height]": "\"0\""
41374
41611
  },
41375
41612
  template: "<m-section>\n @if (_isSearch() && _searchOpen()) {\n <!-- Searching: the field takes the row the trail was on, so the nav is\n hidden while there is something to type into. -->\n <m-section-search\n class=\"nav-header__search\"\n [(isOpen)]=\"_searchOpen\"\n [value]=\"_searchStore.query()\"\n [searchLabel]=\"_searchLabel()\"\n (searchChange)=\"_searchStore.updateQuery($event)\"\n />\n } @else if (_trail() || _isSearch()) {\n <!-- The nav's row, and the bar's toggle stands in it rather than in a row\n stacked on top of it. Both slots are written a single `@if` deep: a\n Section matches its projected slots by tag, and a node nested deeper\n falls through to the body instead. -->\n <m-section-back [back]=\"_hasParent()\" (navigate)=\"_navStore.back()\">\n @if (_trail(); as trail) {\n <m-nav-trail [config]=\"trail\" />\n }\n @if (_isSearch()) {\n <m-button\n class=\"nav-header__search-toggle\"\n [config]=\"_searchToggle\"\n (clicked)=\"_openSearch()\"\n />\n }\n </m-section-back>\n }\n\n @if (_user(); as user) {\n <m-user class=\"nav-header__user\" [id]=\"user.id\" [user]=\"user\" mRef=\"root_user\">\n <span class=\"nav-header__username\">&#64;{{ user.username }}</span>\n </m-user>\n } @else if (_header(); as h) {\n @if (h.label) {\n @if (h.appLogo; as logo) {\n <!-- A mounted app's header draws its AppLogo in the icon's place. -->\n <m-section-header class=\"nav-header__title\" [label]=\"h.label\">\n <m-app-logo class=\"nav-header__app-logo\" [glyph]=\"logo.glyph\" [appColor]=\"logo.color\" [name]=\"logo.name\" />\n </m-section-header>\n } @else {\n <m-section-header class=\"nav-header__title\" [icon]=\"h.icon\" [label]=\"h.label\" />\n }\n }\n }\n</m-section>\n",
41376
- styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.nav-header__user{display:block;padding:1rem}.nav-header__username{font-size:.6875rem;font-weight:600;color:var(--m-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}m-section-search.nav-header__search{--_nav-row-height: var(--section-header-min-height, calc(var(--section-header-py, .5rem) * 2 + 1.25rem));min-height:var(--_nav-row-height);padding-block:0;--m-input-clear-height: calc(var(--_nav-row-height) - .5rem);--m-input-clear-min-height: calc(var(--_nav-row-height) - .5rem)}.nav-header__app-logo{flex-shrink:0;align-self:flex-start;width:var(--m-section-header-icon-box, 1.5125rem);height:var(--m-section-header-icon-box, 1.5125rem)}\n"]
41613
+ styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.nav-header__user{display:block;padding:1rem}.nav-header__username{font-size:.6875rem;font-weight:600;color:var(--m-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}m-section-search.nav-header__search{--_nav-row-height: var(--section-header-min-height, calc(var(--section-header-py, .5rem) * 2 + 1.25rem));min-height:var(--_nav-row-height);padding-block:0;--m-input-clear-height: calc(var(--_nav-row-height) - .5rem);--m-input-clear-min-height: calc(var(--_nav-row-height) - .5rem)}.nav-header__title .nav-header__app-logo{flex-shrink:0;align-self:flex-start;width:var(--m-section-header-icon-box, 1.5125rem);height:var(--m-section-header-icon-box, 1.5125rem)}\n"]
41377
41614
  }]
41378
41615
  }],
41379
41616
  ctorParameters: () => []
@@ -41572,7 +41809,11 @@ var NavMenuComponent = class NavMenuComponent {
41572
41809
  inputs: [
41573
41810
  "glyph",
41574
41811
  "appColor",
41575
- "name"
41812
+ "name",
41813
+ "link",
41814
+ "variant",
41815
+ "tone",
41816
+ "size"
41576
41817
  ]
41577
41818
  },
41578
41819
  {
@@ -42509,7 +42750,11 @@ var NavComponent = class NavComponent {
42509
42750
  inputs: [
42510
42751
  "glyph",
42511
42752
  "appColor",
42512
- "name"
42753
+ "name",
42754
+ "link",
42755
+ "variant",
42756
+ "tone",
42757
+ "size"
42513
42758
  ]
42514
42759
  }
42515
42760
  ],
@@ -46591,6 +46836,60 @@ function bootstrapMagApp(routesOrOptions, maybeOptions) {
46591
46836
  `;
46592
46837
  });
46593
46838
  }
46839
+ const SPLASH_ID = "m-splash";
46840
+ const escapeHtml = (value) => value.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
46841
+ const splashHtml = ({ appColor, glyph, link }) => {
46842
+ const color = normalizeAppColor(appColor) ?? "#0f172a";
46843
+ const mark = glyph?.trim() ? `<div class="${SPLASH_ID}__glyph"></div>` : `<div class="${SPLASH_ID}__letter">${escapeHtml(link.trim().charAt(0).toUpperCase())}</div>`;
46844
+ const mask = glyph?.trim() ? `
46845
+ #${SPLASH_ID} .${SPLASH_ID}__glyph {
46846
+ width: 100%;
46847
+ height: 100%;
46848
+ background: #fff;
46849
+ -webkit-mask: ${logoGlyphMaskUrl(glyph.trim())} center / contain no-repeat;
46850
+ mask: ${logoGlyphMaskUrl(glyph.trim())} center / contain no-repeat;
46851
+ }` : "";
46852
+ return ` <div id="${SPLASH_ID}">
46853
+ <div class="${SPLASH_ID}__mark" aria-hidden="true">${mark}</div>
46854
+ <style>
46855
+ #${SPLASH_ID} {
46856
+ position: fixed;
46857
+ inset: 0;
46858
+ display: flex;
46859
+ align-items: center;
46860
+ justify-content: center;
46861
+ background: ${color};
46862
+ z-index: 99999;
46863
+ transition: opacity 0.35s ease, visibility 0.35s ease;
46864
+ }
46865
+ #${SPLASH_ID}.hidden {
46866
+ opacity: 0;
46867
+ visibility: hidden;
46868
+ pointer-events: none;
46869
+ }
46870
+ #${SPLASH_ID} .${SPLASH_ID}__mark {
46871
+ display: flex;
46872
+ align-items: center;
46873
+ justify-content: center;
46874
+ width: 72px;
46875
+ height: 72px;
46876
+ animation: m-splash-breathe 1.6s ease-in-out infinite;
46877
+ }${mask}
46878
+ #${SPLASH_ID} .${SPLASH_ID}__letter {
46879
+ color: #fff;
46880
+ font: 700 56px/1 system-ui, sans-serif;
46881
+ }
46882
+ @keyframes m-splash-breathe {
46883
+ 0%, 100% { opacity: 1; transform: scale(1); }
46884
+ 50% { opacity: 0.55; transform: scale(0.93); }
46885
+ }
46886
+ @media (prefers-reduced-motion: reduce) {
46887
+ #${SPLASH_ID} .${SPLASH_ID}__mark { animation: none; }
46888
+ }
46889
+ </style>
46890
+ </div>
46891
+ `;
46892
+ };
46594
46893
  var Domain;
46595
46894
  (function(Domain) {
46596
46895
  Domain["AUTH"] = "auth";
@@ -49963,7 +50262,11 @@ var AppTileComponent = class AppTileComponent {
49963
50262
  inputs: [
49964
50263
  "glyph",
49965
50264
  "appColor",
49966
- "name"
50265
+ "name",
50266
+ "link",
50267
+ "variant",
50268
+ "tone",
50269
+ "size"
49967
50270
  ]
49968
50271
  },
49969
50272
  {
@@ -50718,6 +51021,6 @@ i0.ɵɵngDeclareClassMetadata({
50718
51021
  }]
50719
51022
  }
50720
51023
  });
50721
- export { ACCESS_DOMAINS, APP_CONTEXT_REF, APP_LINK, APP_LOGO_ICON, APP_LOGO_SOURCE, APP_THEME_COLOR, ASSET_BASE_URL, AUDIENCE_ICONS, AUDIENCE_LEVELS, AccordionBodyDirective, AccordionComponent, AccordionGroupComponent, ActionComponent, AnimatedGraphsComponent, AppAvailability, AppCardComponent, AppIdentityService, AppLogoComponent, AppLogoState, AppRelationType, AppTileComponent, AssetStore, AssetUrlPipe, Assets, AudiencePickerBoxComponent, AudiencePickerComponent, AuthActivityPageComponent, AuthApiService, AuthStore, AutosizeDirective, BadgeComponent, BandingComponent, BaseArrayInputComponent, BaseRootWebComponent, BaseWebComponent, BrowserLocaleService, ButtonComponent, ButtonGroupComponent, CALLING_APP_HEADER, COMPONENT_INPUT_REGISTRY, CardComponent, CardWrapperComponent, CarouselComponent, ChartComponent, ChatBubbleComponent, CheckboxGroupComponent, CheckboxInputComponent, ClearableInputComponent, ClipboardService, ColComponent, ColorPickerInputComponent, CommentItemComponent, CommentsApiService, CommentsComponent, CommentsStore, CompactNumberPipe, ComponentInputComponent, ComponentStepperComponent, ConfigComponent, ConfirmComponent, ContextMenuComponent, CustomIconClass, CustomIconEditComponent, DEFAULT_AUDIENCE, DEFAULT_DENIAL, DEFAULT_DOC_ALIGN, DEFAULT_DOC_DENSITY, DEFAULT_DOC_VARIANT, DEFAULT_FILTER_RANGE_MODE, DEFAULT_FILTER_VARIANT, DEFAULT_NAV_PARAM, DEFAULT_NAV_SEGMENT, DEFAULT_SIZE, DOCK_MIN_PAGE_REMAINDER, DOCS_FOLDER, DOC_ACTION_ICONS, DOC_ALIGNS, DOC_DENSITIES, DOC_EDIT_ACTIONS, DOC_TOOLBAR_GROUPS, DOC_VARIANTS, DashboardCardComponent, DateInputComponent, DatePickerComponent, DeviceService, DocComponent, DocEditorComponent, DomService, Domain, DotGridComponent, DragListDirective, DragListItemDirective, DraggableDirective, DropdownInputComponent, FILTER_GROUP_CONTEXT, FILTER_RANGE_MODES, FILTER_VARIANTS, FLEX_VARIANTS, FOLDER_PICK_LISTENER, FORM_ASSET_FOLDER, FileService, FileUploadDirective, FileUploadInputComponent, FlexComponent, FlexItemComponent, FormGroupComponent, FrameComponent, FreezeService, GRID_BREAKPOINTS, GetNavService, HeaderComponent, HighlightDirective, HttpService, HttpSharingClient, ICON_SOURCE, IS_DESIGN_MODE, IS_SIDE_PANEL, IconComponent, ImgComponent, InputType, InstrumentScoreComponent, InterceptorObservables, JumbotronComponent, KeyValueComponent, LAYOUT_ASSET_FOLDER, LOADING_ACTIONS_REF, LOGIN_COMPONENT, LOGIN_STORE, LOGO_GLYPH_MAX_BYTES, LanguageComponent, ListComponent, LogoComponent, LogoGlyphInputComponent, MAG_SOCKET_EVENT, MHeroColorDirective, MHeroComponent, MODAL_REF, MODAL_STORE_REF, MOUNT_STATIC_SEGMENT, MOUNT_TOKEN, MRefDirective, MStepComponent, MURL_PARAM, MURL_SEP, ManifestEnrichmentService, MarginDirective, MenuComponent, ModalDirective, ModalRef, ModalStore, MoneyPipe, MultiRangeInputComponent, MultiselectInputComponent, MurlUrlSerializer, NAV_DEFAULT_MURL, NAV_ID_SEP, NAV_MAIN_BUTTONS, NAV_SEGMENT_RE, NAV_STORE_REF, NAV_WC_COMPONENTS, NAV_WIDGET_MAP, NavComponent, NavDetailsComponent, NavHeaderComponent, NavMenuComponent, NavStore, NavTrailComponent, NothingComponent, NotificationElementComponent, NotificationGroupComponent, NotificationPopupComponent, NotificationService, NotificationStore, NotificationType, NotificationWidgetComponent, ONE_ASSET_BASE_URL, OPTIONS_SOURCE, OVERLAY_WIDGETS, OneApp, OptionsSourceDirective, OverlayBodyComponent, OverlayRef, OverlayService, PLATFORM_BUTTON_NAV_IDS, PLATFORM_EXTENSIBLE_NAV_IDS, PLATFORM_NAV_MAP, PLATFORM_ROOT_CHILDREN, PLUGIN_FALLBACK_LANG, PLUGIN_OUTPUT_EVENT, PLUGIN_SCREENS, PaddingDirective, PaginationComponent, PanelComponent, PercentagePipe, PlaygroundComponent, PluginComponent, PluginInputComponent, PluginOutputComponent, PositionDirective, PwaInstallComponent, RECENT_SEARCH_LIMIT, REMOTE_PAGE_RELOAD, ROOT_NAV, RadioGroupComponent, RadioInputComponent, RangeInputComponent, RatingInputComponent, ReactiveElementComponent, RemoteComponent, RemoteLoaderService, ResizeElementComponent, RouteContainer, RowComponent, SEARCH_ANSWER_KEY, SEARCH_LABEL_KEY, SEARCH_QUERY, SEARCH_RESULTS_EVENT, SECTION_ACCORDION_GROUP, SECTION_FORM_CONTEXT, SECTION_TABLE_VARIANTS, SHARED_ICONS, SHARING_CLIENT, SIZE_CONTEXT, SPACING_INWARD, ScoreComponent, ScrollComponent, ScrollService, SearchPanelComponent, SearchStore, SearchUserPanelComponent, SectionAccordionDirective, SectionAccordionGroupDirective, SectionBackComponent, SectionBadgesComponent, SectionButtonGroupComponent, SectionCardComponent, SectionCarouselComponent, SectionComponent, SectionFilterComponent, SectionFilterGroupComponent, SectionFilterMenuComponent, SectionFilterPanelComponent, SectionFilterRangePanelComponent, SectionFooterComponent, SectionFormComponent, SectionFormItemComponent, SectionHeaderComponent, SectionHeroComponent, SectionPaginationComponent, SectionSearchComponent, SectionStepperComponent, SectionTableCellComponent, SectionTableComponent, SectionTableRowComponent, SectionTableSortPipe, SectionTabsComponent, SectionToggleComponent, SectionToggleItemDirective, SelectableCardInputComponent, SelectorDirective, SettingsSearchBarComponent, SettingsSearchService, ShapeComponent, SharedStoreRegistry, SidePanelDirective, Size, SocketStore, SortComponent, StatComponent, StepComponent, StepperComponent, StepsComponent, StorageService, StrokeLinecap, StrokeLinejoin, SummaryComponent, SvgGeneratorComponent, SvgGeneratorService, SvgService, TOTAL_COLUMNS, TRANSLATION_SOURCE, TableComponent, TechnicalMeterComponent, TextInputComponent, TextOutputComponent, TextareaInputComponent, ThemeComponent, ThemeDataService, ThemeService, ThemeStore, TimeAgoPipe, TimelineComponent, ToggleButtonComponent, ToggleInputComponent, ToggleRadioInputComponent, ToolTipDirective, TooltipComponent, TranslatePipe, TranslateService, TreeGridComponent, URL_SEP, USER_STORE_REF, USER_TAB_MAP, UniverseComponent, UserApiService, UserAvatarComponent, UserComponent, UserNavComponent, UserSettingsComponent, UserStore, WC_BUNDLE, WC_NAVIGATE_EVENT, WC_ROUTE_CHANGED_EVENT, WC_SEARCH_GROUPS, WIN_USER_TAB_HOOK, WIN_USER_TAB_KEY, WatermarkComponent, WcRouterStore, WrapperInputComponent, activeElementWithin, allowedCodes, anchorNavId, appColorBrand, appLogoShadowColor, appThemeColorFactory, applyColorsToElement, applyDocEdit, assetOptions, baseUnderHost, bootstrapMagApp, bootstrapPwaInstall, browserLocale, buildWcBaseUrl, calculateLuminance, calculateRanks, cellText, checkDoc, checkFilterCondition, childNavId, claimDenial, classListSignal, coerceSize, cornerEdge, cornerSide, createLoadingState, createMap, createPlatformNavMap, createPluginElement, definePluginScreens, definedWcBundleOf, definedWcTierOf, deriveAvatarGradient, deriveContrastColor, deriveOppositeColor, derivePropertyName, docActionKey, docAssetCandidates, docProblemKey, docRemotePath, emailValidation, evaluate, evaluateBool, exposeScreens, exposedScreensOf, fieldBoolean, fieldNumber, fieldString, filterHoldsList, filterHoldsOneBound, filterHoldsOptions, filterHoldsRange, filterList, filterNumber, filterNumberList, filterOne, filterPanelOf, filterPanelWidth, filterRange, filterTreeGridRows, filterValueList, filterValues, flattenTreeGridRows, formatBadgeCount, fullName, generateClipPath, generateTransform, getClassList, getProperty, getScrollParent, getTierFromPreviewPath, getTreeGridRow, getUniqueId, getValue, hasErrorComputed, hexToRgb, hslToRgb, initMagmoniumApp, initialNotificationState, initialState, initials, injectAuthenticate, injectDefaultDenial, injectInstallApp, injectParentSize, injectScrollSticky, isBootRedirect, isButtonName, isCancelledComputed, isExtensiblePlatformNavId, isJson, isLightAppColor, isLoadingComputed, isLocalhost, isNavInstanceConfig, isNavMenuConfig, isNavRowsConfig, isNavVisibilityConfig, isPlatformNavId, isPlatformPanelNavId, isSize, isTierPreview, isUrlLocalhost, isValidNavId, isValidNavSegment, isWebComponent, linkToId, linkToNav, loadingActions, logoGlyphMaskUrl, mInterceptor, manualValidation, matchFieldValidation, matchMount, maxLengthValidation, maxValidation, mergePlatformNav, mergeUnique, mergeUniqueBy, mergeUniqueWith, minAgeValidation, minLengthValidation, minValidation, miniMarkToHtml, mountFor, mountPatternProblem, mountPatternText, mountSegmentOf, mountTokenOf, navIdChain, navIdFor, navIdSegment, navIdToRoutePath, navIdToSegments, navParamOf, navTailMatcher, navToId, navVisibilityGuard, nextSectionTableSort, normalizeAppColor, normalizeAssetOptions, offsetOfLine, outletPathOf, outletSegmentsOf, paintAppColor, parentNavId, parseAddress, parseColor, parseMountPattern, parsePatternNames, patternValidation, patternsValidation, permissionRefusal, pickCount, pickSupportedLanguage, picksMembers, platformNavWidgets, pluginTag, presetDefaultOption, privateGuard, processImageToSvg, provideAppContext, provideMagAppConfig, provideMagWcConfig, provideMagWcRoutes, provideModalComponents, provideMurlUrlSerializer, provideNavWidgets, provideOverlayWidgets, providePlatformNavWidgets, providePluginRuntime, provideSearch, provideSizeContext, provideUserTabs, publicGuard, readFieldPatterns, rebuildLogoGlyph, recordDefinedWcTier, remoteOutletRoute, renderAddress, renderDocument, requiredValidation, resolveConfigAsset, resolveIconSize, resolvePallet, resolvePatternRules, resolveSize, resolveSpacing, rgbToHex, rgbToHsl, rowHasChildren, samePatterns, sectionTableColumnId, sectionTableColumnWidths, sectionTableFrozenCount, segmentsToNavId, setProperty, setTreeGridChildren, setWcLocalPort, setWcTier, settingsWidgets, shouldShowBadge, sortSectionTableRows, splitNavId, splitOnMatch, splitPath, stringToColor, tailRouteOf, toAttrBool, toAttrNumber, toCssLength, toHostNavId, toLength, toLocalNavId, toggleGroup, toggleTreeGridRow, toggleUid, unfetchedPlatformNav, ungroupedDocActions, urlValidation, wcLocalBaseOf, wcTierOf, withLevel };
51024
+ export { ACCESS_DOMAINS, APP_CONTEXT_REF, APP_LINK, APP_LOGO_ICON, APP_LOGO_SOURCE, APP_THEME_COLOR, ASSET_BASE_URL, AUDIENCE_ICONS, AUDIENCE_LEVELS, AccordionBodyDirective, AccordionComponent, AccordionGroupComponent, ActionComponent, AnimatedGraphsComponent, AppAvailability, AppCardComponent, AppIdentityService, AppLogoComponent, AppLogoState, AppRelationType, AppTileComponent, AssetStore, AssetUrlPipe, Assets, AudiencePickerBoxComponent, AudiencePickerComponent, AuthActivityPageComponent, AuthApiService, AuthStore, AutosizeDirective, BadgeComponent, BandingComponent, BaseArrayInputComponent, BaseRootWebComponent, BaseWebComponent, BrowserLocaleService, ButtonComponent, ButtonGroupComponent, CALLING_APP_HEADER, COMPONENT_INPUT_REGISTRY, CardComponent, CardWrapperComponent, CarouselComponent, ChartComponent, ChatBubbleComponent, CheckboxGroupComponent, CheckboxInputComponent, ClearableInputComponent, ClipboardService, ColComponent, ColorPickerInputComponent, CommentItemComponent, CommentsApiService, CommentsComponent, CommentsStore, CompactNumberPipe, ComponentInputComponent, ComponentStepperComponent, ConfigComponent, ConfirmComponent, ContextMenuComponent, CustomIconClass, CustomIconEditComponent, DEFAULT_AUDIENCE, DEFAULT_DENIAL, DEFAULT_DOC_ALIGN, DEFAULT_DOC_DENSITY, DEFAULT_DOC_VARIANT, DEFAULT_FILTER_RANGE_MODE, DEFAULT_FILTER_VARIANT, DEFAULT_NAV_PARAM, DEFAULT_NAV_SEGMENT, DEFAULT_SIZE, DOCK_MIN_PAGE_REMAINDER, DOCS_FOLDER, DOC_ACTION_ICONS, DOC_ALIGNS, DOC_DENSITIES, DOC_EDIT_ACTIONS, DOC_TOOLBAR_GROUPS, DOC_VARIANTS, DashboardCardComponent, DateInputComponent, DatePickerComponent, DeviceService, DocComponent, DocEditorComponent, DomService, Domain, DotGridComponent, DragListDirective, DragListItemDirective, DraggableDirective, DropdownInputComponent, FILTER_GROUP_CONTEXT, FILTER_RANGE_MODES, FILTER_VARIANTS, FLEX_VARIANTS, FOLDER_PICK_LISTENER, FORM_ASSET_FOLDER, FileService, FileUploadDirective, FileUploadInputComponent, FlexComponent, FlexItemComponent, FormGroupComponent, FrameComponent, FreezeService, GRID_BREAKPOINTS, GetNavService, HeaderComponent, HighlightDirective, HttpService, HttpSharingClient, ICON_SOURCE, IS_DESIGN_MODE, IS_SIDE_PANEL, IconComponent, ImgComponent, InputType, InstrumentScoreComponent, InterceptorObservables, JumbotronComponent, KeyValueComponent, LAYOUT_ASSET_FOLDER, LOADING_ACTIONS_REF, LOGIN_COMPONENT, LOGIN_STORE, LOGO_GLYPH_MAX_BYTES, LanguageComponent, ListComponent, LogoComponent, LogoGlyphInputComponent, MAG_SOCKET_EVENT, MHeroColorDirective, MHeroComponent, MODAL_REF, MODAL_STORE_REF, MOUNT_STATIC_SEGMENT, MOUNT_TOKEN, MRefDirective, MStepComponent, MURL_PARAM, MURL_SEP, ManifestEnrichmentService, MarginDirective, MenuComponent, ModalDirective, ModalRef, ModalStore, MoneyPipe, MultiRangeInputComponent, MultiselectInputComponent, MurlUrlSerializer, NAV_DEFAULT_MURL, NAV_ID_SEP, NAV_MAIN_BUTTONS, NAV_SEGMENT_RE, NAV_STORE_REF, NAV_WC_COMPONENTS, NAV_WIDGET_MAP, NavComponent, NavDetailsComponent, NavHeaderComponent, NavMenuComponent, NavStore, NavTrailComponent, NothingComponent, NotificationElementComponent, NotificationGroupComponent, NotificationPopupComponent, NotificationService, NotificationStore, NotificationType, NotificationWidgetComponent, ONE_ASSET_BASE_URL, OPTIONS_SOURCE, OVERLAY_WIDGETS, OneApp, OptionsSourceDirective, OverlayBodyComponent, OverlayRef, OverlayService, PLATFORM_BUTTON_NAV_IDS, PLATFORM_EXTENSIBLE_NAV_IDS, PLATFORM_NAV_MAP, PLATFORM_ROOT_CHILDREN, PLUGIN_FALLBACK_LANG, PLUGIN_OUTPUT_EVENT, PLUGIN_SCREENS, PaddingDirective, PaginationComponent, PanelComponent, PercentagePipe, PlaygroundComponent, PluginComponent, PluginInputComponent, PluginOutputComponent, PositionDirective, PwaInstallComponent, RECENT_SEARCH_LIMIT, REMOTE_BOOT_TIMEOUT_MS, REMOTE_PAGE_RELOAD, ROOT_NAV, RadioGroupComponent, RadioInputComponent, RangeInputComponent, RatingInputComponent, ReactiveElementComponent, RemoteComponent, RemoteLoaderService, ResizeElementComponent, RouteContainer, RowComponent, SEARCH_ANSWER_KEY, SEARCH_LABEL_KEY, SEARCH_QUERY, SEARCH_RESULTS_EVENT, SECTION_ACCORDION_GROUP, SECTION_FORM_CONTEXT, SECTION_TABLE_VARIANTS, SHARED_ICONS, SHARING_CLIENT, SIZE_CONTEXT, SPACING_INWARD, SPLASH_ID, ScoreComponent, ScrollComponent, ScrollService, SearchPanelComponent, SearchStore, SearchUserPanelComponent, SectionAccordionDirective, SectionAccordionGroupDirective, SectionBackComponent, SectionBadgesComponent, SectionButtonGroupComponent, SectionCardComponent, SectionCarouselComponent, SectionComponent, SectionFilterComponent, SectionFilterGroupComponent, SectionFilterMenuComponent, SectionFilterPanelComponent, SectionFilterRangePanelComponent, SectionFooterComponent, SectionFormComponent, SectionFormItemComponent, SectionHeaderComponent, SectionHeroComponent, SectionPaginationComponent, SectionSearchComponent, SectionStepperComponent, SectionTableCellComponent, SectionTableComponent, SectionTableRowComponent, SectionTableSortPipe, SectionTabsComponent, SectionToggleComponent, SectionToggleItemDirective, SelectableCardInputComponent, SelectorDirective, SettingsSearchBarComponent, SettingsSearchService, ShapeComponent, SharedStoreRegistry, SidePanelDirective, Size, SocketStore, SortComponent, StatComponent, StepComponent, StepperComponent, StepsComponent, StorageService, StrokeLinecap, StrokeLinejoin, SummaryComponent, SvgGeneratorComponent, SvgGeneratorService, SvgService, TOTAL_COLUMNS, TRANSLATION_SOURCE, TableComponent, TechnicalMeterComponent, TextInputComponent, TextOutputComponent, TextareaInputComponent, ThemeComponent, ThemeDataService, ThemeService, ThemeStore, TimeAgoPipe, TimelineComponent, ToggleButtonComponent, ToggleInputComponent, ToggleRadioInputComponent, ToolTipDirective, TooltipComponent, TranslatePipe, TranslateService, TreeGridComponent, URL_SEP, USER_STORE_REF, USER_TAB_MAP, UniverseComponent, UserApiService, UserAvatarComponent, UserComponent, UserNavComponent, UserSettingsComponent, UserStore, WC_BUNDLE, WC_NAVIGATE_EVENT, WC_ROUTE_CHANGED_EVENT, WC_SEARCH_GROUPS, WIN_USER_TAB_HOOK, WIN_USER_TAB_KEY, WatermarkComponent, WcRouterStore, WrapperInputComponent, activeElementWithin, allowedCodes, anchorNavId, appColorBrand, appLogoShadowColor, appThemeColorFactory, applyColorsToElement, applyDocEdit, assetOptions, baseUnderHost, bootstrapMagApp, bootstrapPwaInstall, browserLocale, buildWcBaseUrl, calculateLuminance, calculateRanks, cellText, checkDoc, checkFilterCondition, childNavId, claimDenial, classListSignal, coerceSize, cornerEdge, cornerSide, createLoadingState, createMap, createPlatformNavMap, createPluginElement, definePluginScreens, definedWcBundleOf, definedWcTierOf, deriveAvatarGradient, deriveContrastColor, deriveOppositeColor, derivePropertyName, docActionKey, docAssetCandidates, docProblemKey, docRemotePath, emailValidation, evaluate, evaluateBool, exposeScreens, exposedScreensOf, fieldBoolean, fieldNumber, fieldString, filterHoldsList, filterHoldsOneBound, filterHoldsOptions, filterHoldsRange, filterList, filterNumber, filterNumberList, filterOne, filterPanelOf, filterPanelWidth, filterRange, filterTreeGridRows, filterValueList, filterValues, flattenTreeGridRows, formatBadgeCount, fullName, generateClipPath, generateTransform, getClassList, getProperty, getScrollParent, getTierFromPreviewPath, getTreeGridRow, getUniqueId, getValue, hasErrorComputed, hexToRgb, hslToRgb, initMagmoniumApp, initialNotificationState, initialState, initials, injectAuthenticate, injectDefaultDenial, injectInstallApp, injectParentSize, injectScrollSticky, isBootRedirect, isButtonName, isCancelledComputed, isExtensiblePlatformNavId, isJson, isLightAppColor, isLoadingComputed, isLocalhost, isNavInstanceConfig, isNavMenuConfig, isNavRowsConfig, isNavVisibilityConfig, isPlatformNavId, isPlatformPanelNavId, isSize, isTierPreview, isUrlLocalhost, isValidNavId, isValidNavSegment, isWebComponent, linkToId, linkToNav, loadingActions, logoGlyphMaskUrl, mInterceptor, manualValidation, matchFieldValidation, matchMount, maxLengthValidation, maxValidation, mergePlatformNav, mergeUnique, mergeUniqueBy, mergeUniqueWith, minAgeValidation, minLengthValidation, minValidation, miniMarkToHtml, mountFor, mountPatternProblem, mountPatternText, mountSegmentOf, mountTokenOf, navIdChain, navIdFor, navIdSegment, navIdToRoutePath, navIdToSegments, navParamOf, navTailMatcher, navToId, navVisibilityGuard, nextSectionTableSort, normalizeAppColor, normalizeAssetOptions, offsetOfLine, outletPathOf, outletSegmentsOf, paintAppColor, parentNavId, parseAddress, parseColor, parseMountPattern, parsePatternNames, patternValidation, patternsValidation, permissionRefusal, pickCount, pickSupportedLanguage, picksMembers, platformNavWidgets, pluginTag, presetDefaultOption, privateGuard, processImageToSvg, provideAppContext, provideMagAppConfig, provideMagWcConfig, provideMagWcRoutes, provideModalComponents, provideMurlUrlSerializer, provideNavWidgets, provideOverlayWidgets, providePlatformNavWidgets, providePluginRuntime, provideSearch, provideSizeContext, provideUserTabs, publicGuard, readFieldPatterns, rebuildLogoGlyph, recordDefinedWcTier, remoteOutletRoute, renderAddress, renderDocument, requiredValidation, resolveConfigAsset, resolveIconSize, resolvePallet, resolvePatternRules, resolveSize, resolveSpacing, rgbToHex, rgbToHsl, rowHasChildren, samePatterns, sectionTableColumnId, sectionTableColumnWidths, sectionTableFrozenCount, segmentsToNavId, setProperty, setTreeGridChildren, setWcLocalPort, setWcTier, settingsWidgets, shouldShowBadge, sortSectionTableRows, splashHtml, splitNavId, splitOnMatch, splitPath, stringToColor, tailRouteOf, toAttrBool, toAttrNumber, toCssLength, toHostNavId, toLength, toLocalNavId, toggleGroup, toggleTreeGridRow, toggleUid, unfetchedPlatformNav, ungroupedDocActions, urlValidation, wcLocalBaseOf, wcTierOf, withLevel };
50722
51025
 
50723
51026
  //# sourceMappingURL=magmonium-one.mjs.map