valtech-components 4.0.32 → 4.0.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/esm2022/lib/components/organisms/edit-org-modal/edit-org-modal.component.mjs +41 -4
  2. package/esm2022/lib/components/organisms/edit-org-modal/edit-org-modal.i18n.mjs +5 -1
  3. package/esm2022/lib/components/organisms/organization-view/organization-view.component.mjs +8 -5
  4. package/esm2022/lib/components/organisms/switch-org-modal/switch-org-modal.component.mjs +18 -9
  5. package/esm2022/lib/components/organisms/whatsapp-fab/whatsapp-fab.component.mjs +63 -0
  6. package/esm2022/lib/services/org/types.mjs +1 -1
  7. package/esm2022/lib/services/whatsapp/config.mjs +6 -0
  8. package/esm2022/lib/services/whatsapp/index.mjs +4 -0
  9. package/esm2022/lib/services/whatsapp/types.mjs +2 -0
  10. package/esm2022/lib/services/whatsapp/whatsapp.service.mjs +28 -0
  11. package/esm2022/lib/version.mjs +2 -2
  12. package/esm2022/public-api.mjs +4 -1
  13. package/fesm2022/valtech-components.mjs +160 -17
  14. package/fesm2022/valtech-components.mjs.map +1 -1
  15. package/lib/components/atoms/rights-footer/rights-footer.component.d.ts +2 -2
  16. package/lib/components/atoms/text/text.component.d.ts +1 -1
  17. package/lib/components/atoms/user-avatar/user-avatar.component.d.ts +1 -1
  18. package/lib/components/molecules/cta-card/cta-card.component.d.ts +1 -1
  19. package/lib/components/molecules/features-list/features-list.component.d.ts +1 -1
  20. package/lib/components/molecules/metric-card/metric-card.component.d.ts +1 -1
  21. package/lib/components/organisms/article/article.component.d.ts +6 -6
  22. package/lib/components/organisms/auth-cta/auth-cta.component.d.ts +1 -1
  23. package/lib/components/organisms/edit-org-modal/edit-org-modal.component.d.ts +2 -0
  24. package/lib/components/organisms/notification-preferences-view/notification-preferences-view.component.d.ts +1 -1
  25. package/lib/components/organisms/organization-view/organization-view.component.d.ts +2 -0
  26. package/lib/components/organisms/switch-org-modal/switch-org-modal.component.d.ts +5 -0
  27. package/lib/components/organisms/whatsapp-fab/whatsapp-fab.component.d.ts +8 -0
  28. package/lib/services/org/types.d.ts +2 -0
  29. package/lib/services/whatsapp/config.d.ts +4 -0
  30. package/lib/services/whatsapp/index.d.ts +3 -0
  31. package/lib/services/whatsapp/types.d.ts +5 -0
  32. package/lib/services/whatsapp/whatsapp.service.d.ts +9 -0
  33. package/lib/version.d.ts +1 -1
  34. package/package.json +1 -1
  35. package/public-api.d.ts +2 -0
@@ -56,7 +56,7 @@ import { BrowserMultiFormatReader } from '@zxing/browser';
56
56
  * Current version of valtech-components.
57
57
  * This is automatically updated during the publish process.
58
58
  */
59
- const VERSION = '4.0.32';
59
+ const VERSION = '4.0.34';
60
60
 
61
61
  // Control de estado de refresco (singleton a nivel de módulo)
62
62
  let isRefreshing = false;
@@ -47559,6 +47559,11 @@ addIcons({ businessOutline, checkmarkCircleOutline });
47559
47559
  * `Settings.SwitchOrg`.
47560
47560
  */
47561
47561
  class SwitchOrgModalComponent {
47562
+ onLogoError(orgId) {
47563
+ const next = new Set(this.failedLogos());
47564
+ next.add(orgId);
47565
+ this.failedLogos.set(next);
47566
+ }
47562
47567
  constructor() {
47563
47568
  this.i18n = inject(I18nService);
47564
47569
  this.auth = inject(AuthService);
@@ -47572,6 +47577,10 @@ class SwitchOrgModalComponent {
47572
47577
  this.query = signal('');
47573
47578
  this.switchingId = signal(null);
47574
47579
  this.user = computed(() => this.auth.user());
47580
+ /** Avatar de usuario que falló al cargar → cae a iniciales. */
47581
+ this.userAvatarFailed = signal(false);
47582
+ /** IDs de orgs cuyo logo falló al cargar → caen al ícono business-outline. */
47583
+ this.failedLogos = signal(new Set());
47575
47584
  this.userInitials = computed(() => {
47576
47585
  const name = this.user()?.name ?? this.user()?.email ?? '?';
47577
47586
  return name.slice(0, 2).toUpperCase();
@@ -47662,8 +47671,8 @@ class SwitchOrgModalComponent {
47662
47671
 
47663
47672
  <div class="user-strip">
47664
47673
  <div class="user-strip__avatar">
47665
- @if (user()?.avatarUrl) {
47666
- <img [src]="user()!.avatarUrl!" [alt]="user()?.name ?? ''" />
47674
+ @if (user()?.avatarUrl && !userAvatarFailed()) {
47675
+ <img [src]="user()!.avatarUrl!" [alt]="user()?.name ?? ''" (error)="userAvatarFailed.set(true)" />
47667
47676
  } @else {
47668
47677
  <span>{{ userInitials() }}</span>
47669
47678
  }
@@ -47710,8 +47719,8 @@ class SwitchOrgModalComponent {
47710
47719
  (click)="onSelect(org)"
47711
47720
  >
47712
47721
  <div class="org-row__icon">
47713
- @if (org.logoUrl) {
47714
- <img [src]="org.logoUrl" [alt]="org.name" />
47722
+ @if (org.logoUrl && !failedLogos().has(org.id)) {
47723
+ <img [src]="org.logoUrl" [alt]="org.name" (error)="onLogoError(org.id)" />
47715
47724
  } @else {
47716
47725
  <ion-icon name="business-outline" />
47717
47726
  }
@@ -47774,8 +47783,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
47774
47783
 
47775
47784
  <div class="user-strip">
47776
47785
  <div class="user-strip__avatar">
47777
- @if (user()?.avatarUrl) {
47778
- <img [src]="user()!.avatarUrl!" [alt]="user()?.name ?? ''" />
47786
+ @if (user()?.avatarUrl && !userAvatarFailed()) {
47787
+ <img [src]="user()!.avatarUrl!" [alt]="user()?.name ?? ''" (error)="userAvatarFailed.set(true)" />
47779
47788
  } @else {
47780
47789
  <span>{{ userInitials() }}</span>
47781
47790
  }
@@ -47822,8 +47831,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
47822
47831
  (click)="onSelect(org)"
47823
47832
  >
47824
47833
  <div class="org-row__icon">
47825
- @if (org.logoUrl) {
47826
- <img [src]="org.logoUrl" [alt]="org.name" />
47834
+ @if (org.logoUrl && !failedLogos().has(org.id)) {
47835
+ <img [src]="org.logoUrl" [alt]="org.name" (error)="onLogoError(org.id)" />
47827
47836
  } @else {
47828
47837
  <ion-icon name="business-outline" />
47829
47838
  }
@@ -48768,6 +48777,8 @@ const EDIT_ORG_MODAL_I18N = {
48768
48777
  saveSuccess: 'Organización actualizada.',
48769
48778
  saveError: 'No se pudo guardar. Intenta de nuevo.',
48770
48779
  fillRequired: 'Completa todos los campos requeridos.',
48780
+ removeLogo: 'Quitar logo',
48781
+ removeLogoSuccess: 'Logo eliminado.',
48771
48782
  },
48772
48783
  en: {
48773
48784
  title: 'Edit organization',
@@ -48783,6 +48794,8 @@ const EDIT_ORG_MODAL_I18N = {
48783
48794
  saveSuccess: 'Organization updated.',
48784
48795
  saveError: 'Could not save. Please try again.',
48785
48796
  fillRequired: 'Please fill in all required fields.',
48797
+ removeLogo: 'Remove logo',
48798
+ removeLogoSuccess: 'Logo removed.',
48786
48799
  },
48787
48800
  };
48788
48801
 
@@ -48816,6 +48829,7 @@ class EditOrgModalComponent {
48816
48829
  this.i18nNamespace = DEFAULT_NAMESPACE$c;
48817
48830
  this.saving = signal(false);
48818
48831
  this.logoUrl = signal(null);
48832
+ this.removingLogo = signal(false);
48819
48833
  this.orgInitials = computed(() => {
48820
48834
  const name = this.org?.name ?? '';
48821
48835
  return name.slice(0, 2).toUpperCase() || '?';
@@ -48952,6 +48966,28 @@ class EditOrgModalComponent {
48952
48966
  });
48953
48967
  }
48954
48968
  }
48969
+ async onRemoveLogo() {
48970
+ const orgId = this.org?.id ?? this.activeOrgId;
48971
+ if (!orgId || this.removingLogo())
48972
+ return;
48973
+ this.removingLogo.set(true);
48974
+ try {
48975
+ const updated = await firstValueFrom(this.orgService.updateOrg(orgId, { clearLogo: true }));
48976
+ this.logoUrl.set(null);
48977
+ this.toast.show({ message: this.t('removeLogoSuccess'), color: 'dark', duration: 3000 });
48978
+ this.onSuccess?.(updated);
48979
+ }
48980
+ catch (err) {
48981
+ this.errors.handle(err, {
48982
+ context: 'editOrgModal.removeLogo',
48983
+ fallbackKey: 'saveError',
48984
+ i18nNamespace: this.i18nNamespace,
48985
+ });
48986
+ }
48987
+ finally {
48988
+ this.removingLogo.set(false);
48989
+ }
48990
+ }
48955
48991
  dismiss() {
48956
48992
  this._modalRef?.dismiss(null, 'cancel');
48957
48993
  }
@@ -48959,7 +48995,7 @@ class EditOrgModalComponent {
48959
48995
  return this.i18n.t(key, this.i18nNamespace);
48960
48996
  }
48961
48997
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EditOrgModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
48962
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: EditOrgModalComponent, isStandalone: true, selector: "val-edit-org-modal", inputs: { _modalRef: "_modalRef", org: "org", onSuccess: "onSuccess", i18nNamespace: "i18nNamespace" }, ngImport: i0, template: `
48998
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: EditOrgModalComponent, isStandalone: true, selector: "val-edit-org-modal", inputs: { _modalRef: "_modalRef", org: "org", onSuccess: "onSuccess", i18nNamespace: "i18nNamespace" }, ngImport: i0, template: `
48963
48999
  <ion-header>
48964
49000
  <ion-toolbar>
48965
49001
  <ion-buttons slot="end">
@@ -48979,6 +49015,13 @@ class EditOrgModalComponent {
48979
49015
  (uploaded)="onLogoUploaded($event)"
48980
49016
  />
48981
49017
  </div>
49018
+ @if (logoUrl()) {
49019
+ <div class="logo-remove">
49020
+ <ion-button fill="clear" size="small" color="dark" [disabled]="removingLogo()" (click)="onRemoveLogo()">
49021
+ {{ t('removeLogo') }}
49022
+ </ion-button>
49023
+ </div>
49024
+ }
48982
49025
  <val-display [props]="{ content: t('title'), size: 'small', color: 'dark' }" />
48983
49026
  <val-title
48984
49027
  [props]="{
@@ -48995,7 +49038,7 @@ class EditOrgModalComponent {
48995
49038
  </ion-button>
48996
49039
  </div>
48997
49040
  </ion-content>
48998
- `, isInline: true, styles: [".modal-close-bottom{margin-top:16px}.logo-upload-wrapper{display:flex;justify-content:center;padding:8px 0 16px}\n"], dependencies: [{ kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: FormComponent, selector: "val-form", inputs: ["props"], outputs: ["onSubmit", "onInvalid", "onSelectChange"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: AvatarUploadComponent, selector: "val-avatar-upload", inputs: ["props", "customPath", "customThumbPath", "skipBackendSync"], outputs: ["uploaded", "error", "uploadStart"] }] }); }
49041
+ `, isInline: true, styles: [".modal-close-bottom{margin-top:16px}.logo-upload-wrapper{display:flex;justify-content:center;padding:8px 0 4px}.logo-remove{display:flex;justify-content:center;margin-bottom:12px}\n"], dependencies: [{ kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: FormComponent, selector: "val-form", inputs: ["props"], outputs: ["onSubmit", "onInvalid", "onSelectChange"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: AvatarUploadComponent, selector: "val-avatar-upload", inputs: ["props", "customPath", "customThumbPath", "skipBackendSync"], outputs: ["uploaded", "error", "uploadStart"] }] }); }
48999
49042
  }
49000
49043
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EditOrgModalComponent, decorators: [{
49001
49044
  type: Component,
@@ -49029,6 +49072,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
49029
49072
  (uploaded)="onLogoUploaded($event)"
49030
49073
  />
49031
49074
  </div>
49075
+ @if (logoUrl()) {
49076
+ <div class="logo-remove">
49077
+ <ion-button fill="clear" size="small" color="dark" [disabled]="removingLogo()" (click)="onRemoveLogo()">
49078
+ {{ t('removeLogo') }}
49079
+ </ion-button>
49080
+ </div>
49081
+ }
49032
49082
  <val-display [props]="{ content: t('title'), size: 'small', color: 'dark' }" />
49033
49083
  <val-title
49034
49084
  [props]="{
@@ -49045,7 +49095,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
49045
49095
  </ion-button>
49046
49096
  </div>
49047
49097
  </ion-content>
49048
- `, styles: [".modal-close-bottom{margin-top:16px}.logo-upload-wrapper{display:flex;justify-content:center;padding:8px 0 16px}\n"] }]
49098
+ `, styles: [".modal-close-bottom{margin-top:16px}.logo-upload-wrapper{display:flex;justify-content:center;padding:8px 0 4px}.logo-remove{display:flex;justify-content:center;margin-bottom:12px}\n"] }]
49049
49099
  }], ctorParameters: () => [], propDecorators: { _modalRef: [{
49050
49100
  type: Input
49051
49101
  }], org: [{
@@ -51952,6 +52002,8 @@ class OrganizationViewComponent {
51952
52002
  };
51953
52003
  });
51954
52004
  this.org = signal(null);
52005
+ /** Logo de org que falló al cargar → oculta el bloque (cae a la card sin logo). */
52006
+ this.logoFailed = signal(false);
51955
52007
  this.loading = signal(false);
51956
52008
  this.leaving = signal(false);
51957
52009
  this.permissionsOpen = signal(false);
@@ -52323,6 +52375,7 @@ class OrganizationViewComponent {
52323
52375
  return new Promise(resolve => {
52324
52376
  this.orgService.getOrg(orgId).subscribe({
52325
52377
  next: org => {
52378
+ this.logoFailed.set(false);
52326
52379
  this.org.set(org);
52327
52380
  this.loading.set(false);
52328
52381
  resolve();
@@ -52495,9 +52548,9 @@ class OrganizationViewComponent {
52495
52548
  } @else {
52496
52549
  @if (org(); as o) {
52497
52550
  <div class="org-info-card">
52498
- @if (o.logoUrl) {
52551
+ @if (o.logoUrl && !logoFailed()) {
52499
52552
  <div class="org-info-logo">
52500
- <img class="org-logo-img" [src]="o.logoUrl" [alt]="o.name" />
52553
+ <img class="org-logo-img" [src]="o.logoUrl" [alt]="o.name" (error)="logoFailed.set(true)" />
52501
52554
  </div>
52502
52555
  }
52503
52556
  <div class="org-info-field">
@@ -52803,9 +52856,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
52803
52856
  } @else {
52804
52857
  @if (org(); as o) {
52805
52858
  <div class="org-info-card">
52806
- @if (o.logoUrl) {
52859
+ @if (o.logoUrl && !logoFailed()) {
52807
52860
  <div class="org-info-logo">
52808
- <img class="org-logo-img" [src]="o.logoUrl" [alt]="o.name" />
52861
+ <img class="org-logo-img" [src]="o.logoUrl" [alt]="o.name" (error)="logoFailed.set(true)" />
52809
52862
  </div>
52810
52863
  }
52811
52864
  <div class="org-info-field">
@@ -62993,6 +63046,96 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
62993
63046
  * `markdown-article-parser` existente.
62994
63047
  */
62995
63048
 
63049
+ const VALTECH_WHATSAPP_CONFIG = new InjectionToken('ValtechWhatsappConfig');
63050
+ function provideValtechWhatsapp(config) {
63051
+ return makeEnvironmentProviders([{ provide: VALTECH_WHATSAPP_CONFIG, useValue: config }]);
63052
+ }
63053
+
63054
+ class WhatsappService {
63055
+ constructor() {
63056
+ this.config = inject(VALTECH_WHATSAPP_CONFIG, { optional: true });
63057
+ }
63058
+ get isEnabled() {
63059
+ return !!this.config;
63060
+ }
63061
+ buildUrl(customMessage) {
63062
+ if (!this.config)
63063
+ return null;
63064
+ const base = `https://wa.me/${this.config.phone}`;
63065
+ const message = customMessage ?? this.config.defaultMessage;
63066
+ return message ? `${base}?text=${encodeURIComponent(message)}` : base;
63067
+ }
63068
+ get label() {
63069
+ return this.config?.label ?? 'Chat por WhatsApp';
63070
+ }
63071
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WhatsappService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
63072
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WhatsappService, providedIn: 'root' }); }
63073
+ }
63074
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WhatsappService, decorators: [{
63075
+ type: Injectable,
63076
+ args: [{ providedIn: 'root' }]
63077
+ }] });
63078
+
63079
+ class WhatsappFabComponent {
63080
+ constructor() {
63081
+ this.wa = inject(WhatsappService);
63082
+ this.url = this.wa.buildUrl();
63083
+ this.label = this.wa.label;
63084
+ }
63085
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WhatsappFabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
63086
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: WhatsappFabComponent, isStandalone: true, selector: "val-whatsapp-fab", ngImport: i0, template: `
63087
+ @if (url) {
63088
+ <a
63089
+ class="wa-fab"
63090
+ [href]="url"
63091
+ target="_blank"
63092
+ rel="noopener noreferrer"
63093
+ [attr.aria-label]="label"
63094
+ >
63095
+ <svg
63096
+ xmlns="http://www.w3.org/2000/svg"
63097
+ viewBox="0 0 24 24"
63098
+ width="28"
63099
+ height="28"
63100
+ fill="currentColor"
63101
+ aria-hidden="true"
63102
+ >
63103
+ <path
63104
+ d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z"
63105
+ />
63106
+ </svg>
63107
+ </a>
63108
+ }
63109
+ `, isInline: true, styles: [":host{position:fixed;bottom:24px;right:24px;z-index:9999;display:block}.wa-fab{display:flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:50%;background-color:#25d366;color:#fff;text-decoration:none;box-shadow:0 4px 12px #00000040;transition:transform .2s ease,box-shadow .2s ease}.wa-fab:hover{transform:scale(1.08);box-shadow:0 6px 20px #00000052}.wa-fab:active{transform:scale(.94)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
63110
+ }
63111
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WhatsappFabComponent, decorators: [{
63112
+ type: Component,
63113
+ args: [{ selector: 'val-whatsapp-fab', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
63114
+ @if (url) {
63115
+ <a
63116
+ class="wa-fab"
63117
+ [href]="url"
63118
+ target="_blank"
63119
+ rel="noopener noreferrer"
63120
+ [attr.aria-label]="label"
63121
+ >
63122
+ <svg
63123
+ xmlns="http://www.w3.org/2000/svg"
63124
+ viewBox="0 0 24 24"
63125
+ width="28"
63126
+ height="28"
63127
+ fill="currentColor"
63128
+ aria-hidden="true"
63129
+ >
63130
+ <path
63131
+ d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z"
63132
+ />
63133
+ </svg>
63134
+ </a>
63135
+ }
63136
+ `, styles: [":host{position:fixed;bottom:24px;right:24px;z-index:9999;display:block}.wa-fab{display:flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:50%;background-color:#25d366;color:#fff;text-decoration:none;box-shadow:0 4px 12px #00000040;transition:transform .2s ease,box-shadow .2s ease}.wa-fab:hover{transform:scale(1.08);box-shadow:0 6px 20px #00000052}.wa-fab:active{transform:scale(.94)}\n"] }]
63137
+ }] });
63138
+
62996
63139
  /**
62997
63140
  * Token de inyección para la configuración de Donation/Support.
62998
63141
  */
@@ -67494,5 +67637,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
67494
67637
  * Generated bundle index. Do not edit.
67495
67638
  */
67496
67639
 
67497
- export { ACTION_CARD_DEFAULTS, AD_SIZE_MAP, API_TABLE_COLUMN_LABELS, APP_VERSION_PLATFORM_PLUGIN, APP_VERSION_REMOTE_PLUGIN, ARTICLE_CARD_DEFAULTS, ARTICLE_SPACING, ARTICLE_STRIP_DEFAULTS, AUTH_CTA_DEFAULTS, AVATAR_UPLOAD_DEFAULTS, AboutViewComponent, AccordionComponent, AccountViewComponent, ActionCardComponent, ActionHeaderComponent, ActionType, AdSlotComponent, AdsLoaderService, AdsService, AlertBoxComponent, AnalyticsErrorHandler, AnalyticsRouterTracker, AnalyticsService, AnimatedTerminalComponent, ApiKeyCreateModalComponent, ApiKeyService, ApiKeysModalComponent, ApiKeysViewComponent, AppConfigService, AppVersionService, ArticleBuilder, ArticleCardComponent, ArticleComponent, ArticleStripComponent, AttachmentUploaderComponent, AuthBackgroundComponent, AuthCtaComponent, AuthService, AuthStateService, AuthStorageService, AuthSyncService, AvatarComponent, AvatarUploadComponent, BOTTOM_NAV_DEFAULTS, BannerComponent, BlogPostBuilder, BottomNavComponent, BoxComponent, BreadcrumbComponent, ButtonComponent, ButtonGroupComponent, CALLOUT_LABELS, CHEV_KEYS, CIRCLE_KEYS, COMMON_COUNTRY_CODES, COMMON_CURRENCIES, CORNER_KEYS, CTA_CARD_DEFAULTS, CURRENCY_INFO, CardComponent, CardSection, CardType, CardsCarouselComponent, ChangeEmailModalComponent, ChangePasswordModalComponent, CheckInputComponent, CheckboxRadioInputComponent, ChipGroupComponent, CodeDisplayComponent, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, ContainerComponent, ContentLoaderComponent, ContentReactionComponent, ContentService, ContentTransformer, CookieBannerComponent, CountdownComponent, CreateOrgModalComponent, CtaCardComponent, CurrencyInputComponent, DEFAULT_ADS_CONFIG, DEFAULT_APP_CONFIG_SERVICE_CONFIG, DEFAULT_APP_VERSION_SERVICE_CONFIG, DEFAULT_AUTH_CONFIG, DEFAULT_BACK_HEADER, DEFAULT_BUTTON_PRESETS, DEFAULT_CANCEL_BUTTON, DEFAULT_CHECK_INTERVAL_MS, DEFAULT_CONFIRM_BUTTON, DEFAULT_COUNTDOWN_LABELS, DEFAULT_COUNTDOWN_LABELS_EN, DEFAULT_DEBUG_CONSOLE_CONFIG, DEFAULT_DONATION_CONFIG, DEFAULT_EMPTY_STATE, DEFAULT_EMULATOR_CONFIG, DEFAULT_FEEDBACK_CONFIG, DEFAULT_FEEDBACK_TYPE_OPTIONS, DEFAULT_HOME_HEADER, DEFAULT_INFINITE_LIST_METADATA, DEFAULT_LOGIN_LOGO, DEFAULT_MODAL_CANCEL_BUTTON, DEFAULT_MODAL_CONFIRM_BUTTON, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLATFORMS, DEFAULT_PRESETS, DEFAULT_REFRESHER_METADATA, DEFAULT_SKELETON_CONFIG, DEFAULT_SPLASH_SCREEN_CONFIG, DataTableComponent, DateInputComponent, DatePickerComponent, DateRangeInputComponent, DebugConsoleComponent, DeleteAccountModalComponent, DetailSkeletonComponent, DeviceService, DisplayComponent, DividerComponent, DocsApiTableComponent, DocsBreadcrumbComponent, DocsBuilder, DocsCalloutComponent, DocsCodeExampleComponent, DocsLayoutComponent, DocsNavLinksComponent, DocsNavigationService, DocsPageComponent, DocsSearchComponent, DocsSectionComponent, DocsShellComponent, DocsSidebarComponent, DocsTocComponent, DonationService, DownloadService, EditOrgModalComponent, EmptyStateComponent, ExpandableTextComponent, FEATURES_LIST_DEFAULTS, FUN_MODAL_DEFAULTS, FabComponent, FaqComponent, FeaturesListComponent, FeedbackFormComponent, FeedbackService, FieldListComponent, FileInputComponent, FirebaseService, FirestoreCollectionFactory, FirestoreService, FontSizeOption, FontSizeService, FooterComponent, FooterLinksComponent, FormComponent, FormSkeletonComponent, FunHeaderComponent, FunModalComponent, GlassComponent, GlowCardComponent, GlowComponent, GridSkeletonComponent, HANDOFF_ROUTE_PARAM, HANDOFF_TOKEN_PARAM, HandoffService, HasPermissionDirective, HeaderComponent, HintComponent, HorizontalScrollComponent, HrefComponent, I18nService, IMAGE_DEFAULTS, INITIAL_AUTH_STATE, INITIAL_MFA_STATE, INVITATION_CARD_DEFAULTS, IONIC_COLORS$5 as IONIC_COLORS, Icon, IconComponent, IconService, ImageComponent, ImageCropComponent, ImageService, InAppBrowserService, InfiniteListComponent, InfoComponent, InputI18nHelper, InputType, InvitationCardComponent, InviteMemberModalComponent, ItemListComponent, LANG_STORAGE_KEY$1 as LANG_STORAGE_KEY, LEGAL_CONTENT_CONFIG, LOGIN_DEFAULTS, LandingSplitComponent, LandingStepsComponent, LanguageSelectorComponent, LayeredCardComponent, LegalContentService, LegalLinkService, LinkComponent, LinkProcessorService, LinkedProvidersComponent, LinksAccordionComponent, LinksCakeComponent, ListSkeletonComponent, LoadingDirective, LocalStorageService, LocaleService, LoginAttemptModalComponent, LoginComponent, MEDIA_OBJECT_DEFAULTS, MEMBER_CARD_DEFAULTS, METRIC_CARD_DEFAULTS, MODAL_SIZES, MOTIF_KEYS, MOTION, MaintenancePageComponent, MarkdownArticleParserService, MediaObjectComponent, MemberCardComponent, MemberDetailModalComponent, MemberImportModalComponent, MenuComponent, MessagingService, MetaService, MetricCardComponent, MfaModalComponent, ModalService, ModalShellComponent, MultiSelectSearchComponent, NUM_KEYS, NavigationService, NetworkBannerComponent, NetworkStatusService, NewsBuilder, NoContentComponent, NotesBoxComponent, NotificationActionService, NotificationPreferencesViewComponent, NotificationsService, NotificationsViewComponent, NumberFromToComponent, NumberStepperComponent, OAUTH_PROVIDERS_INFO, OAuthCallbackComponent, OAuthService, OrgInfoSheetComponent, OrgService, OrgSwitchService, OrganizationViewComponent, PATTERN_MOTIFS, PATTERN_PALETTES, PATTERN_STYLE_CONFIGS, PLATFORM_CONFIGS, PageContentComponent, PageLinksComponent, PageRefreshService, PageTemplateComponent, PageWavesComponent, PageWrapperComponent, PaginationComponent, PaginationService, PasswordInputComponent, PatternComponent, PermissionCatalogService, PermissionSelectorComponent, PermissionsModalComponent, PermissionsViewComponent, PhoneInputComponent, PillComponent, PinInputComponent, PlainCodeBoxComponent, PopoverSelectorComponent, PreferencesService, PreferencesViewComponent, PresetService, PriceTagComponent, ProcessLinksPipe, ProfileSkeletonComponent, ProfileViewComponent, ProgressBarComponent, ProgressRingComponent, ProgressStatusComponent, PrompterComponent, QR_PRESETS, QrCodeComponent, QrGeneratorService, QrScannerComponent, QueryBuilder, QuoteBoxComponent, REQUEST_STATUSES, RadioInputComponent, RangeInputComponent, RatingComponent, RefresherComponent, RequestFirestoreService, RequestFormBuilderService, RequestService, RightsFooterComponent, RotatingTextComponent, SEARCH_HEADER_DEFAULTS, SETTINGS_SECTIONS_CATALOG, SHAPE_KEYS, SHARE_PROFILE_MODAL_DEFAULTS, SKELETON_LAYOUT_DEFAULT_ROWS, SKELETON_PRESETS, SOLID_KEYS, STATS_BAR_DEFAULTS, STROKE_KEYS, SearchHeaderComponent, SearchSelectorComponent, SearchbarComponent, SecurityViewComponent, SegmentControlComponent, SelectSearchComponent, SessionListModalComponent, SessionService, SettingsHubComponent, ShareButtonsComponent, ShareProfileModalComponent, SimpleComponent, SkeletonComponent, SkeletonLayoutComponent, SkeletonService, SplashScreenService, StatsBarComponent, StatsCardComponent, StepperComponent, StorageService, SwipeCarouselComponent, SwitchOrgModalComponent, TRI_KEYS, TabbedContentComponent, TableSkeletonComponent, TabsComponent, Terminal404Component, TestimonialCardComponent, TestimonialCarouselComponent, TextComponent, TextInputComponent, TextareaInputComponent, ThemeOption, ThemeService, TicketCardComponent, TimelineComponent, TitleBlockComponent, TitleComponent, ToastService, ToggleInputComponent, TokenService, ToolbarActionType, ToolbarComponent, TransferOwnershipModalComponent, TranslatePipe, TypedCollection, UPDATE_BANNER_DEFAULT_CONTENT, UPDATE_BANNER_I18N_NAMESPACE, UpdateBannerComponent, UserAvatarComponent, UsernameInputComponent, VALTECH_ADS_CONFIG, VALTECH_APP_CONFIG, VALTECH_APP_VERSION, VALTECH_AUTH_CONFIG, VALTECH_COMPANY_LINKS, VALTECH_CONTENT_CONFIG, VALTECH_DEBUG_CONSOLE, VALTECH_DEFAULT_CONTENT, VALTECH_DONATION_CONFIG, VALTECH_FEEDBACK_CONFIG, VALTECH_FIREBASE_CONFIG, VALTECH_FOOTER_I18N, VALTECH_FOOTER_LOGO, VALTECH_LANGUAGE_SELECTOR, VALTECH_LEGAL_CONFIG, VALTECH_NETWORK_ERROR_KEY, VALTECH_SETTINGS_MENU_LINKS, VALTECH_SITE_PATHS, VALTECH_SOCIAL_LINKS, VALTECH_SPLASH_SCREEN, VALTECH_WEB_BASE_URLS, VERSION, ValtechErrorService, WizardComponent, WizardFooterComponent, applyDefaultValueToControl, authGuard, authInterceptor, authPasswordValidator, beautifyLegalArticle, blogPost, buildCompanyFooterProps, buildFooterLinks, buildLegalLinkResolver, buildPath, buildSettingsCards, button, collections, connectPageRefresh, createErrorStateProps, createFirebaseConfig, createGlowCardProps, createInitialPaginationState, createNumberFromToField, createPageState, createPermissionLabeler, createRefreshableStream, createTitleProps, docs, errorLoggingInterceptor, extractPathParams, generatePatternTiles, generateRandomTile, getAppInfo, getAppVersion, getCollectionPath, getDocumentId, getTimeOfDayKey, goToTop, guestGuard, hasEmulators, iconButton, interpretError, isAtEnd, isCollectionPath, isDocumentPath, isEmulatorMode, isIonicColor, isValidPath, joinPath, maxLength, mulberry32, news, parseMarkdownArticle, permissionGuard, permissionGuardFromRoute, provideLegalContent, provideSplashScreen, provideValtechAboutRoutes, provideValtechAccountRoutes, provideValtechAds, provideValtechApiKeysRoutes, provideValtechAppConfig, provideValtechAppVersion, provideValtechAppVersionHttp, provideValtechAuth, provideValtechAuthInterceptor, provideValtechContent, provideValtechDebugConsole, provideValtechDonations, provideValtechErrorHandling, provideValtechFeedback, provideValtechFirebase, provideValtechI18n, provideValtechLegal, provideValtechNotificationPreferencesRoutes, provideValtechNotificationsRoutes, provideValtechOrganizationRoutes, provideValtechPermissionsRoutes, provideValtechPreferencesRoutes, provideValtechPresets, provideValtechProfileRoutes, provideValtechSecurityRoutes, provideValtechSettingsRoutes, provideValtechSite, provideValtechSkeleton, query, renderPatternSvgInner, replaceSpecialChars, resolveColor, resolveInputDefaultValue, resolveIonicColor, resolveWebBaseUrl, roleGuard, storagePaths, superAdminGuard, toArticle };
67640
+ export { ACTION_CARD_DEFAULTS, AD_SIZE_MAP, API_TABLE_COLUMN_LABELS, APP_VERSION_PLATFORM_PLUGIN, APP_VERSION_REMOTE_PLUGIN, ARTICLE_CARD_DEFAULTS, ARTICLE_SPACING, ARTICLE_STRIP_DEFAULTS, AUTH_CTA_DEFAULTS, AVATAR_UPLOAD_DEFAULTS, AboutViewComponent, AccordionComponent, AccountViewComponent, ActionCardComponent, ActionHeaderComponent, ActionType, AdSlotComponent, AdsLoaderService, AdsService, AlertBoxComponent, AnalyticsErrorHandler, AnalyticsRouterTracker, AnalyticsService, AnimatedTerminalComponent, ApiKeyCreateModalComponent, ApiKeyService, ApiKeysModalComponent, ApiKeysViewComponent, AppConfigService, AppVersionService, ArticleBuilder, ArticleCardComponent, ArticleComponent, ArticleStripComponent, AttachmentUploaderComponent, AuthBackgroundComponent, AuthCtaComponent, AuthService, AuthStateService, AuthStorageService, AuthSyncService, AvatarComponent, AvatarUploadComponent, BOTTOM_NAV_DEFAULTS, BannerComponent, BlogPostBuilder, BottomNavComponent, BoxComponent, BreadcrumbComponent, ButtonComponent, ButtonGroupComponent, CALLOUT_LABELS, CHEV_KEYS, CIRCLE_KEYS, COMMON_COUNTRY_CODES, COMMON_CURRENCIES, CORNER_KEYS, CTA_CARD_DEFAULTS, CURRENCY_INFO, CardComponent, CardSection, CardType, CardsCarouselComponent, ChangeEmailModalComponent, ChangePasswordModalComponent, CheckInputComponent, CheckboxRadioInputComponent, ChipGroupComponent, CodeDisplayComponent, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, ContainerComponent, ContentLoaderComponent, ContentReactionComponent, ContentService, ContentTransformer, CookieBannerComponent, CountdownComponent, CreateOrgModalComponent, CtaCardComponent, CurrencyInputComponent, DEFAULT_ADS_CONFIG, DEFAULT_APP_CONFIG_SERVICE_CONFIG, DEFAULT_APP_VERSION_SERVICE_CONFIG, DEFAULT_AUTH_CONFIG, DEFAULT_BACK_HEADER, DEFAULT_BUTTON_PRESETS, DEFAULT_CANCEL_BUTTON, DEFAULT_CHECK_INTERVAL_MS, DEFAULT_CONFIRM_BUTTON, DEFAULT_COUNTDOWN_LABELS, DEFAULT_COUNTDOWN_LABELS_EN, DEFAULT_DEBUG_CONSOLE_CONFIG, DEFAULT_DONATION_CONFIG, DEFAULT_EMPTY_STATE, DEFAULT_EMULATOR_CONFIG, DEFAULT_FEEDBACK_CONFIG, DEFAULT_FEEDBACK_TYPE_OPTIONS, DEFAULT_HOME_HEADER, DEFAULT_INFINITE_LIST_METADATA, DEFAULT_LOGIN_LOGO, DEFAULT_MODAL_CANCEL_BUTTON, DEFAULT_MODAL_CONFIRM_BUTTON, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLATFORMS, DEFAULT_PRESETS, DEFAULT_REFRESHER_METADATA, DEFAULT_SKELETON_CONFIG, DEFAULT_SPLASH_SCREEN_CONFIG, DataTableComponent, DateInputComponent, DatePickerComponent, DateRangeInputComponent, DebugConsoleComponent, DeleteAccountModalComponent, DetailSkeletonComponent, DeviceService, DisplayComponent, DividerComponent, DocsApiTableComponent, DocsBreadcrumbComponent, DocsBuilder, DocsCalloutComponent, DocsCodeExampleComponent, DocsLayoutComponent, DocsNavLinksComponent, DocsNavigationService, DocsPageComponent, DocsSearchComponent, DocsSectionComponent, DocsShellComponent, DocsSidebarComponent, DocsTocComponent, DonationService, DownloadService, EditOrgModalComponent, EmptyStateComponent, ExpandableTextComponent, FEATURES_LIST_DEFAULTS, FUN_MODAL_DEFAULTS, FabComponent, FaqComponent, FeaturesListComponent, FeedbackFormComponent, FeedbackService, FieldListComponent, FileInputComponent, FirebaseService, FirestoreCollectionFactory, FirestoreService, FontSizeOption, FontSizeService, FooterComponent, FooterLinksComponent, FormComponent, FormSkeletonComponent, FunHeaderComponent, FunModalComponent, GlassComponent, GlowCardComponent, GlowComponent, GridSkeletonComponent, HANDOFF_ROUTE_PARAM, HANDOFF_TOKEN_PARAM, HandoffService, HasPermissionDirective, HeaderComponent, HintComponent, HorizontalScrollComponent, HrefComponent, I18nService, IMAGE_DEFAULTS, INITIAL_AUTH_STATE, INITIAL_MFA_STATE, INVITATION_CARD_DEFAULTS, IONIC_COLORS$5 as IONIC_COLORS, Icon, IconComponent, IconService, ImageComponent, ImageCropComponent, ImageService, InAppBrowserService, InfiniteListComponent, InfoComponent, InputI18nHelper, InputType, InvitationCardComponent, InviteMemberModalComponent, ItemListComponent, LANG_STORAGE_KEY$1 as LANG_STORAGE_KEY, LEGAL_CONTENT_CONFIG, LOGIN_DEFAULTS, LandingSplitComponent, LandingStepsComponent, LanguageSelectorComponent, LayeredCardComponent, LegalContentService, LegalLinkService, LinkComponent, LinkProcessorService, LinkedProvidersComponent, LinksAccordionComponent, LinksCakeComponent, ListSkeletonComponent, LoadingDirective, LocalStorageService, LocaleService, LoginAttemptModalComponent, LoginComponent, MEDIA_OBJECT_DEFAULTS, MEMBER_CARD_DEFAULTS, METRIC_CARD_DEFAULTS, MODAL_SIZES, MOTIF_KEYS, MOTION, MaintenancePageComponent, MarkdownArticleParserService, MediaObjectComponent, MemberCardComponent, MemberDetailModalComponent, MemberImportModalComponent, MenuComponent, MessagingService, MetaService, MetricCardComponent, MfaModalComponent, ModalService, ModalShellComponent, MultiSelectSearchComponent, NUM_KEYS, NavigationService, NetworkBannerComponent, NetworkStatusService, NewsBuilder, NoContentComponent, NotesBoxComponent, NotificationActionService, NotificationPreferencesViewComponent, NotificationsService, NotificationsViewComponent, NumberFromToComponent, NumberStepperComponent, OAUTH_PROVIDERS_INFO, OAuthCallbackComponent, OAuthService, OrgInfoSheetComponent, OrgService, OrgSwitchService, OrganizationViewComponent, PATTERN_MOTIFS, PATTERN_PALETTES, PATTERN_STYLE_CONFIGS, PLATFORM_CONFIGS, PageContentComponent, PageLinksComponent, PageRefreshService, PageTemplateComponent, PageWavesComponent, PageWrapperComponent, PaginationComponent, PaginationService, PasswordInputComponent, PatternComponent, PermissionCatalogService, PermissionSelectorComponent, PermissionsModalComponent, PermissionsViewComponent, PhoneInputComponent, PillComponent, PinInputComponent, PlainCodeBoxComponent, PopoverSelectorComponent, PreferencesService, PreferencesViewComponent, PresetService, PriceTagComponent, ProcessLinksPipe, ProfileSkeletonComponent, ProfileViewComponent, ProgressBarComponent, ProgressRingComponent, ProgressStatusComponent, PrompterComponent, QR_PRESETS, QrCodeComponent, QrGeneratorService, QrScannerComponent, QueryBuilder, QuoteBoxComponent, REQUEST_STATUSES, RadioInputComponent, RangeInputComponent, RatingComponent, RefresherComponent, RequestFirestoreService, RequestFormBuilderService, RequestService, RightsFooterComponent, RotatingTextComponent, SEARCH_HEADER_DEFAULTS, SETTINGS_SECTIONS_CATALOG, SHAPE_KEYS, SHARE_PROFILE_MODAL_DEFAULTS, SKELETON_LAYOUT_DEFAULT_ROWS, SKELETON_PRESETS, SOLID_KEYS, STATS_BAR_DEFAULTS, STROKE_KEYS, SearchHeaderComponent, SearchSelectorComponent, SearchbarComponent, SecurityViewComponent, SegmentControlComponent, SelectSearchComponent, SessionListModalComponent, SessionService, SettingsHubComponent, ShareButtonsComponent, ShareProfileModalComponent, SimpleComponent, SkeletonComponent, SkeletonLayoutComponent, SkeletonService, SplashScreenService, StatsBarComponent, StatsCardComponent, StepperComponent, StorageService, SwipeCarouselComponent, SwitchOrgModalComponent, TRI_KEYS, TabbedContentComponent, TableSkeletonComponent, TabsComponent, Terminal404Component, TestimonialCardComponent, TestimonialCarouselComponent, TextComponent, TextInputComponent, TextareaInputComponent, ThemeOption, ThemeService, TicketCardComponent, TimelineComponent, TitleBlockComponent, TitleComponent, ToastService, ToggleInputComponent, TokenService, ToolbarActionType, ToolbarComponent, TransferOwnershipModalComponent, TranslatePipe, TypedCollection, UPDATE_BANNER_DEFAULT_CONTENT, UPDATE_BANNER_I18N_NAMESPACE, UpdateBannerComponent, UserAvatarComponent, UsernameInputComponent, VALTECH_ADS_CONFIG, VALTECH_APP_CONFIG, VALTECH_APP_VERSION, VALTECH_AUTH_CONFIG, VALTECH_COMPANY_LINKS, VALTECH_CONTENT_CONFIG, VALTECH_DEBUG_CONSOLE, VALTECH_DEFAULT_CONTENT, VALTECH_DONATION_CONFIG, VALTECH_FEEDBACK_CONFIG, VALTECH_FIREBASE_CONFIG, VALTECH_FOOTER_I18N, VALTECH_FOOTER_LOGO, VALTECH_LANGUAGE_SELECTOR, VALTECH_LEGAL_CONFIG, VALTECH_NETWORK_ERROR_KEY, VALTECH_SETTINGS_MENU_LINKS, VALTECH_SITE_PATHS, VALTECH_SOCIAL_LINKS, VALTECH_SPLASH_SCREEN, VALTECH_WEB_BASE_URLS, VALTECH_WHATSAPP_CONFIG, VERSION, ValtechErrorService, WhatsappFabComponent, WhatsappService, WizardComponent, WizardFooterComponent, applyDefaultValueToControl, authGuard, authInterceptor, authPasswordValidator, beautifyLegalArticle, blogPost, buildCompanyFooterProps, buildFooterLinks, buildLegalLinkResolver, buildPath, buildSettingsCards, button, collections, connectPageRefresh, createErrorStateProps, createFirebaseConfig, createGlowCardProps, createInitialPaginationState, createNumberFromToField, createPageState, createPermissionLabeler, createRefreshableStream, createTitleProps, docs, errorLoggingInterceptor, extractPathParams, generatePatternTiles, generateRandomTile, getAppInfo, getAppVersion, getCollectionPath, getDocumentId, getTimeOfDayKey, goToTop, guestGuard, hasEmulators, iconButton, interpretError, isAtEnd, isCollectionPath, isDocumentPath, isEmulatorMode, isIonicColor, isValidPath, joinPath, maxLength, mulberry32, news, parseMarkdownArticle, permissionGuard, permissionGuardFromRoute, provideLegalContent, provideSplashScreen, provideValtechAboutRoutes, provideValtechAccountRoutes, provideValtechAds, provideValtechApiKeysRoutes, provideValtechAppConfig, provideValtechAppVersion, provideValtechAppVersionHttp, provideValtechAuth, provideValtechAuthInterceptor, provideValtechContent, provideValtechDebugConsole, provideValtechDonations, provideValtechErrorHandling, provideValtechFeedback, provideValtechFirebase, provideValtechI18n, provideValtechLegal, provideValtechNotificationPreferencesRoutes, provideValtechNotificationsRoutes, provideValtechOrganizationRoutes, provideValtechPermissionsRoutes, provideValtechPreferencesRoutes, provideValtechPresets, provideValtechProfileRoutes, provideValtechSecurityRoutes, provideValtechSettingsRoutes, provideValtechSite, provideValtechSkeleton, provideValtechWhatsapp, query, renderPatternSvgInner, replaceSpecialChars, resolveColor, resolveInputDefaultValue, resolveIonicColor, resolveWebBaseUrl, roleGuard, storagePaths, superAdminGuard, toArticle };
67498
67641
  //# sourceMappingURL=valtech-components.mjs.map