valtech-components 2.0.801 → 2.0.803

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.
@@ -52,7 +52,7 @@ import 'prismjs/components/prism-json';
52
52
  * Current version of valtech-components.
53
53
  * This is automatically updated during the publish process.
54
54
  */
55
- const VERSION = '2.0.801';
55
+ const VERSION = '2.0.803';
56
56
 
57
57
  /**
58
58
  * Servicio para gestionar presets de componentes.
@@ -31782,6 +31782,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
31782
31782
  * Guard que verifica si el usuario está autenticado.
31783
31783
  * Redirige a loginRoute si no está autenticado.
31784
31784
  *
31785
+ * Preserva la URL solicitada en el query param `returnUrl` para que la
31786
+ * página de login pueda devolver al usuario a su destino tras autenticarse.
31787
+ *
31785
31788
  * @example
31786
31789
  * ```typescript
31787
31790
  * import { authGuard } from 'valtech-components';
@@ -31795,14 +31798,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
31795
31798
  * ];
31796
31799
  * ```
31797
31800
  */
31798
- const authGuard = () => {
31801
+ const authGuard = (_route, state) => {
31799
31802
  const authService = inject(AuthService);
31800
31803
  const router = inject(Router);
31801
31804
  const config = inject(VALTECH_AUTH_CONFIG);
31802
31805
  if (authService.isAuthenticated()) {
31803
31806
  return true;
31804
31807
  }
31805
- return router.createUrlTree([config.loginRoute]);
31808
+ return router.createUrlTree([config.loginRoute], {
31809
+ queryParams: { returnUrl: state.url },
31810
+ });
31806
31811
  };
31807
31812
  /**
31808
31813
  * Guard que verifica si el usuario NO está autenticado.
@@ -31959,7 +31964,7 @@ function roleGuard(roles) {
31959
31964
  const router = inject(Router);
31960
31965
  const config = inject(VALTECH_AUTH_CONFIG);
31961
31966
  const roleArray = Array.isArray(roles) ? roles : [roles];
31962
- const hasRole = roleArray.some((role) => authService.hasRole(role));
31967
+ const hasRole = roleArray.some(role => authService.hasRole(role));
31963
31968
  if (hasRole) {
31964
31969
  return true;
31965
31970
  }
@@ -32803,14 +32808,20 @@ class ToastService {
32803
32808
  }
32804
32809
  /**
32805
32810
  * Presents a toast notification with the given options.
32811
+ *
32812
+ * Estándar Valtech: todos los toasts son `color: 'dark'` y `position: 'top'`.
32813
+ * Estos son los defaults cuando el caller no los especifica — no hace falta
32814
+ * pasarlos en cada llamada. El diferenciador semántico (éxito/error) va en
32815
+ * el mensaje, no en el color.
32816
+ *
32806
32817
  * @param request Toast options (message, duration, position, color, etc.)
32807
32818
  */
32808
32819
  async presentToast(request) {
32809
32820
  const toast = await this.toastController.create({
32810
32821
  message: request.message,
32811
32822
  duration: request.duration,
32812
- position: request.position,
32813
- color: request.color,
32823
+ position: request.position ?? 'top',
32824
+ color: request.color ?? 'dark',
32814
32825
  });
32815
32826
  await toast.present();
32816
32827
  }
@@ -33049,11 +33060,7 @@ class LoginComponent {
33049
33060
  // ==========================================
33050
33061
  this.mfaVerifyFormProps = computed(() => {
33051
33062
  const method = this._mfaMethod();
33052
- const sectionName = method === 'TOTP'
33053
- ? this.t('mfaTOTP')
33054
- : method === 'EMAIL'
33055
- ? this.t('mfaEmail')
33056
- : this.t('mfaSMS');
33063
+ const sectionName = method === 'TOTP' ? this.t('mfaTOTP') : method === 'EMAIL' ? this.t('mfaEmail') : this.t('mfaSMS');
33057
33064
  return this.i18nHelper.resolveForm({
33058
33065
  nameKey: 'mfaTitle',
33059
33066
  i18nNamespace: '_auth',
@@ -33216,7 +33223,7 @@ class LoginComponent {
33216
33223
  }
33217
33224
  this.handleLoginSuccess();
33218
33225
  },
33219
- error: (err) => {
33226
+ error: err => {
33220
33227
  this._loginFormState.set(ComponentStates.ENABLED);
33221
33228
  const errorCode = err?.code;
33222
33229
  if (errorCode === 'AUTHV2_EMAIL_NOT_VERIFIED') {
@@ -33238,7 +33245,7 @@ class LoginComponent {
33238
33245
  }
33239
33246
  this.handleLoginSuccess(provider);
33240
33247
  },
33241
- error: (err) => {
33248
+ error: err => {
33242
33249
  this.isOAuthLoading = false;
33243
33250
  const errorCode = err?.code;
33244
33251
  if (errorCode === 'POPUP_CLOSED') {
@@ -33272,7 +33279,7 @@ class LoginComponent {
33272
33279
  this.closeRegisterModal();
33273
33280
  this.openVerifyModal(email);
33274
33281
  },
33275
- error: (err) => {
33282
+ error: err => {
33276
33283
  this._registerFormState.set(ComponentStates.ENABLED);
33277
33284
  this.handleError(err, 'signup');
33278
33285
  },
@@ -33309,7 +33316,7 @@ class LoginComponent {
33309
33316
  this.closeVerifyModal();
33310
33317
  this.handleLoginSuccess();
33311
33318
  },
33312
- error: (err) => {
33319
+ error: err => {
33313
33320
  this._verifyFormState.set(ComponentStates.ENABLED);
33314
33321
  this.handleError(err, 'verify');
33315
33322
  },
@@ -33328,7 +33335,7 @@ class LoginComponent {
33328
33335
  this.showToast(this.t('codeSent'));
33329
33336
  this.startResendCooldown();
33330
33337
  },
33331
- error: (err) => {
33338
+ error: err => {
33332
33339
  this.handleError(err, 'verify');
33333
33340
  },
33334
33341
  });
@@ -33355,7 +33362,7 @@ class LoginComponent {
33355
33362
  this.closeMFAVerifyModal();
33356
33363
  this.handleLoginSuccess(undefined, true);
33357
33364
  },
33358
- error: (err) => {
33365
+ error: err => {
33359
33366
  this._mfaVerifyFormState.set(ComponentStates.ENABLED);
33360
33367
  this.handleError(err, 'mfa');
33361
33368
  },
@@ -33384,7 +33391,7 @@ class LoginComponent {
33384
33391
  this.openResetPasswordModal(email);
33385
33392
  this.showToast(this.t('codeSent'));
33386
33393
  },
33387
- error: (err) => {
33394
+ error: err => {
33388
33395
  this._forgotPasswordFormState.set(ComponentStates.ENABLED);
33389
33396
  this.handleError(err, 'forgot');
33390
33397
  },
@@ -33422,7 +33429,7 @@ class LoginComponent {
33422
33429
  this.showToast(this.t('passwordUpdated'));
33423
33430
  this.closeResetPasswordModal();
33424
33431
  },
33425
- error: (err) => {
33432
+ error: err => {
33426
33433
  this._resetPasswordFormState.set(ComponentStates.ENABLED);
33427
33434
  this.handleError(err, 'reset');
33428
33435
  },
@@ -33441,7 +33448,7 @@ class LoginComponent {
33441
33448
  this.showToast(this.t('codeSent'));
33442
33449
  this.startResetResendCooldown();
33443
33450
  },
33444
- error: (err) => {
33451
+ error: err => {
33445
33452
  this.handleError(err, 'reset');
33446
33453
  },
33447
33454
  });
@@ -33473,8 +33480,6 @@ class LoginComponent {
33473
33480
  this.toastService.show({
33474
33481
  message,
33475
33482
  duration: 3500,
33476
- position: 'top',
33477
- color: 'dark',
33478
33483
  });
33479
33484
  }
33480
33485
  getErrorMessage(err) {
@@ -35833,6 +35838,81 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
35833
35838
  type: Output
35834
35839
  }] } });
35835
35840
 
35841
+ /**
35842
+ * PageRefreshService — bus del pull-to-refresh estándar del factory.
35843
+ *
35844
+ * **Por qué existe:** `val-page-wrapper` posee un único `<ion-content>` y todas
35845
+ * las páginas se renderizan dentro vía `<router-outlet>`. Un `<ion-refresher>`
35846
+ * tiene que vivir dentro de ese `ion-content`, así que el refresher NO puede
35847
+ * declararse en el template de cada página — vive una sola vez en
35848
+ * `val-page-wrapper`. Este servicio es el puente: la página activa registra
35849
+ * *qué hacer* al refrescar; el page-wrapper dispara el gesto y cierra el spinner.
35850
+ *
35851
+ * **Uso en una página** (ver `frontend/CLAUDE.md` — es el patrón estándar):
35852
+ *
35853
+ * ```ts
35854
+ * export class MiPage implements ViewWillEnter, ViewWillLeave {
35855
+ * private pageRefresh = inject(PageRefreshService);
35856
+ *
35857
+ * ionViewWillEnter(): void {
35858
+ * this.pageRefresh.register(() => this.reload());
35859
+ * }
35860
+ * ionViewWillLeave(): void {
35861
+ * this.pageRefresh.unregister();
35862
+ * }
35863
+ *
35864
+ * private async reload(): Promise<void> {
35865
+ * // re-fetch / re-suscribir streams / etc.
35866
+ * }
35867
+ * }
35868
+ * ```
35869
+ *
35870
+ * Páginas que no llaman `register()` simplemente no muestran refresher —
35871
+ * opt-in, sin impacto.
35872
+ */
35873
+ class PageRefreshService {
35874
+ constructor() {
35875
+ this.handler = null;
35876
+ /**
35877
+ * `true` cuando hay una página con handler registrado. `val-page-wrapper`
35878
+ * renderiza el `<val-refresher>` sólo cuando esto es `true`.
35879
+ */
35880
+ this.hasHandler = signal(false);
35881
+ }
35882
+ /**
35883
+ * Registra el handler de refresh de la página activa. Llamar en
35884
+ * `ionViewWillEnter`. Si ya había uno, lo reemplaza (sólo hay una página
35885
+ * activa a la vez en el router-outlet de Ionic).
35886
+ */
35887
+ register(handler) {
35888
+ this.handler = handler;
35889
+ this.hasHandler.set(true);
35890
+ }
35891
+ /**
35892
+ * Quita el handler. Llamar en `ionViewWillLeave` para que el refresher
35893
+ * desaparezca al salir de la vista.
35894
+ */
35895
+ unregister() {
35896
+ this.handler = null;
35897
+ this.hasHandler.set(false);
35898
+ }
35899
+ /**
35900
+ * Ejecuta el handler registrado y espera a que termine. Lo invoca
35901
+ * `val-page-wrapper` al detectar el gesto de pull. No-op si no hay handler.
35902
+ */
35903
+ async run() {
35904
+ if (!this.handler)
35905
+ return;
35906
+ await this.handler();
35907
+ }
35908
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PageRefreshService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
35909
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PageRefreshService, providedIn: 'root' }); }
35910
+ }
35911
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PageRefreshService, decorators: [{
35912
+ type: Injectable,
35913
+ args: [{ providedIn: 'root' }]
35914
+ }] });
35915
+
35836
35916
  /**
35837
35917
  * val-page-wrapper
35838
35918
  *
@@ -35859,6 +35939,8 @@ class PageWrapperComponent {
35859
35939
  this.theme = inject(ThemeService);
35860
35940
  this.nav = inject(NavigationService);
35861
35941
  this.router = inject(Router);
35942
+ /** Bus del pull-to-refresh — la página activa registra su handler aquí. */
35943
+ this.pageRefresh = inject(PageRefreshService);
35862
35944
  /**
35863
35945
  * Page wrapper configuration.
35864
35946
  * Signal-based input for full reactivity with computed().
@@ -35919,6 +36001,18 @@ class PageWrapperComponent {
35919
36001
  return resolveColor(bg);
35920
36002
  });
35921
36003
  }
36004
+ /**
36005
+ * Handler del gesto pull-to-refresh. Delega en el handler que registró la
36006
+ * página activa (`PageRefreshService.run`) y cierra el spinner al terminar.
36007
+ */
36008
+ async onPageRefresh(event) {
36009
+ try {
36010
+ await this.pageRefresh.run();
36011
+ }
36012
+ finally {
36013
+ event.complete();
36014
+ }
36015
+ }
35922
36016
  ngOnInit() {
35923
36017
  if (this.props()?.scrollToTopOnNavigate !== false) {
35924
36018
  this.routerSubscription = this.router.events
@@ -35973,6 +36067,11 @@ class PageWrapperComponent {
35973
36067
  '--background': background(),
35974
36068
  }"
35975
36069
  >
36070
+ <!-- Pull-to-refresh estándar del factory. Se renderiza sólo cuando la
36071
+ página activa registró un handler vía PageRefreshService. -->
36072
+ @if (pageRefresh.hasHandler()) {
36073
+ <val-refresher (refresh)="onPageRefresh($event)" />
36074
+ }
35976
36075
  <val-container [props]="{ size: contentMaxWidth() }">
35977
36076
  <main>
35978
36077
  <router-outlet></router-outlet>
@@ -35983,11 +36082,19 @@ class PageWrapperComponent {
35983
36082
  }
35984
36083
  </ion-content>
35985
36084
  </div>
35986
- `, isInline: true, styles: ["main{min-height:60vh;padding-bottom:calc(var(--val-bottom-nav-height, 0px) + env(safe-area-inset-bottom,0px) + 16px)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: HeaderComponent, selector: "val-header", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: CompanyFooterComponent, selector: "val-company-footer", inputs: ["props"] }, { kind: "component", type: ContainerComponent, selector: "val-container", inputs: ["props"] }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }] }); }
36085
+ `, isInline: true, styles: ["main{min-height:60vh;padding-bottom:calc(var(--val-bottom-nav-height, 0px) + env(safe-area-inset-bottom,0px) + 16px)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: HeaderComponent, selector: "val-header", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: CompanyFooterComponent, selector: "val-company-footer", inputs: ["props"] }, { kind: "component", type: ContainerComponent, selector: "val-container", inputs: ["props"] }, { kind: "component", type: RefresherComponent, selector: "val-refresher", inputs: ["props"], outputs: ["refresh", "pullProgressChange", "stateChange"] }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }] }); }
35987
36086
  }
35988
36087
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PageWrapperComponent, decorators: [{
35989
36088
  type: Component,
35990
- args: [{ selector: 'val-page-wrapper', standalone: true, imports: [CommonModule, HeaderComponent, CompanyFooterComponent, ContainerComponent, RouterOutlet, IonContent], template: `
36089
+ args: [{ selector: 'val-page-wrapper', standalone: true, imports: [
36090
+ CommonModule,
36091
+ HeaderComponent,
36092
+ CompanyFooterComponent,
36093
+ ContainerComponent,
36094
+ RefresherComponent,
36095
+ RouterOutlet,
36096
+ IonContent,
36097
+ ], template: `
35991
36098
  <div class="ion-page">
35992
36099
  <val-header [props]="headerProps()" (onClick)="onHeaderClickHandler($event)" />
35993
36100
  <ion-content
@@ -35997,6 +36104,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
35997
36104
  '--background': background(),
35998
36105
  }"
35999
36106
  >
36107
+ <!-- Pull-to-refresh estándar del factory. Se renderiza sólo cuando la
36108
+ página activa registró un handler vía PageRefreshService. -->
36109
+ @if (pageRefresh.hasHandler()) {
36110
+ <val-refresher (refresh)="onPageRefresh($event)" />
36111
+ }
36000
36112
  <val-container [props]="{ size: contentMaxWidth() }">
36001
36113
  <main>
36002
36114
  <router-outlet></router-outlet>
@@ -41734,11 +41846,7 @@ class ContentReactionComponent {
41734
41846
  });
41735
41847
  // Valores por defecto
41736
41848
  this.defaultEmojis = ['😞', '😐', '😊'];
41737
- this.defaultLabels = [
41738
- 'No me ayudó',
41739
- 'Regular',
41740
- 'Muy útil',
41741
- ];
41849
+ this.defaultLabels = ['No me ayudó', 'Regular', 'Muy útil'];
41742
41850
  this.reactionValues = ['negative', 'neutral', 'positive'];
41743
41851
  // Computed properties
41744
41852
  this.resolvedProps = computed(() => ({
@@ -41770,7 +41878,7 @@ class ContentReactionComponent {
41770
41878
  return;
41771
41879
  // Si hay initialValue, usarlo directamente sin consultar
41772
41880
  if (this.props.initialValue) {
41773
- this.state.update((s) => ({
41881
+ this.state.update(s => ({
41774
41882
  ...s,
41775
41883
  selectedValue: this.props.initialValue,
41776
41884
  hadPreviousReaction: true,
@@ -41783,11 +41891,11 @@ class ContentReactionComponent {
41783
41891
  if (this.props.skipInitialCheck) {
41784
41892
  return;
41785
41893
  }
41786
- this.state.update((s) => ({ ...s, isLoading: true, error: null }));
41894
+ this.state.update(s => ({ ...s, isLoading: true, error: null }));
41787
41895
  try {
41788
41896
  const check = await this.feedbackService.checkFeedback(this.props.entityRef.entityType, this.props.entityRef.entityId);
41789
41897
  if (check.hasFeedback && check.reactionValue) {
41790
- this.state.update((s) => ({
41898
+ this.state.update(s => ({
41791
41899
  ...s,
41792
41900
  selectedValue: check.reactionValue,
41793
41901
  hadPreviousReaction: true,
@@ -41796,19 +41904,19 @@ class ContentReactionComponent {
41796
41904
  }));
41797
41905
  }
41798
41906
  else {
41799
- this.state.update((s) => ({ ...s, isLoading: false }));
41907
+ this.state.update(s => ({ ...s, isLoading: false }));
41800
41908
  }
41801
41909
  }
41802
41910
  catch (error) {
41803
41911
  console.error('Error loading previous reaction:', error);
41804
- this.state.update((s) => ({ ...s, isLoading: false }));
41912
+ this.state.update(s => ({ ...s, isLoading: false }));
41805
41913
  }
41806
41914
  }
41807
41915
  selectReaction(value) {
41808
41916
  if (this.resolvedProps().disabled || this.resolvedProps().readonly)
41809
41917
  return;
41810
41918
  const previousValue = this.state().selectedValue;
41811
- this.state.update((s) => ({
41919
+ this.state.update(s => ({
41812
41920
  ...s,
41813
41921
  selectedValue: value,
41814
41922
  isSubmitted: false,
@@ -41821,7 +41929,7 @@ class ContentReactionComponent {
41821
41929
  const props = this.resolvedProps();
41822
41930
  if (!currentState.selectedValue || props.disabled)
41823
41931
  return;
41824
- this.state.update((s) => ({ ...s, isLoading: true, error: null }));
41932
+ this.state.update(s => ({ ...s, isLoading: true, error: null }));
41825
41933
  try {
41826
41934
  // Determinar si usar endpoint anónimo o autenticado
41827
41935
  const isAuthenticated = this.auth?.isAuthenticated() ?? false;
@@ -41834,7 +41942,7 @@ class ContentReactionComponent {
41834
41942
  // Usar endpoint autenticado
41835
41943
  await this.feedbackService.createReaction(props.entityRef, currentState.selectedValue, currentState.comment || undefined);
41836
41944
  }
41837
- this.state.update((s) => ({
41945
+ this.state.update(s => ({
41838
41946
  ...s,
41839
41947
  isLoading: false,
41840
41948
  isSubmitted: true,
@@ -41850,14 +41958,12 @@ class ContentReactionComponent {
41850
41958
  this.toast.show({
41851
41959
  message: props.thankYouMessage,
41852
41960
  duration: 2000,
41853
- position: 'bottom',
41854
- color: 'dark',
41855
41961
  });
41856
41962
  }
41857
41963
  }
41858
41964
  catch (error) {
41859
41965
  console.error('Error submitting reaction:', error);
41860
- this.state.update((s) => ({
41966
+ this.state.update(s => ({
41861
41967
  ...s,
41862
41968
  isLoading: false,
41863
41969
  error: this.t('errorSubmitting'),
@@ -41865,14 +41971,12 @@ class ContentReactionComponent {
41865
41971
  this.toast.show({
41866
41972
  message: this.t('errorSubmitting'),
41867
41973
  duration: 3000,
41868
- position: 'bottom',
41869
- color: 'danger',
41870
41974
  });
41871
41975
  }
41872
41976
  }
41873
41977
  updateComment(event) {
41874
41978
  const value = event.detail.value || '';
41875
- this.state.update((s) => ({ ...s, comment: value }));
41979
+ this.state.update(s => ({ ...s, comment: value }));
41876
41980
  }
41877
41981
  getEmoji(index) {
41878
41982
  return this.resolvedProps().emojis[index];
@@ -44671,5 +44775,5 @@ function buildFooterLinks(links, t, resolver) {
44671
44775
  * Generated bundle index. Do not edit.
44672
44776
  */
44673
44777
 
44674
- export { ACTION_CARD_DEFAULTS, AD_SIZE_MAP, API_TABLE_COLUMN_LABELS, ARTICLE_SPACING, AVATAR_UPLOAD_DEFAULTS, AccordionComponent, ActionCardComponent, ActionHeaderComponent, ActionType, AdSlotComponent, AdsLoaderService, AdsService, AlertBoxComponent, AnalyticsErrorHandler, AnalyticsRouterTracker, AnalyticsService, AppConfigService, ArticleBuilder, ArticleComponent, AuthBackgroundComponent, AuthService, AuthStateService, AuthStorageService, AuthSyncService, AvatarComponent, AvatarUploadComponent, BOTTOM_NAV_DEFAULTS, BannerComponent, BaseDefault, BlogPostBuilder, BottomNavComponent, BoxComponent, BreadcrumbComponent, ButtonComponent, ButtonGroupComponent, CALLOUT_LABELS, CHEV_KEYS, COMMON_COUNTRY_CODES, COMMON_CURRENCIES, CURRENCY_INFO, CardComponent, CardSection, CardType, CardsCarouselComponent, CheckInputComponent, CheckboxRadioInputComponent, ChipGroupComponent, ClearDefault, ClearDefaultBlock, ClearDefaultFull, ClearDefaultRound, ClearDefaultRoundBlock, ClearDefaultRoundFull, CodeDisplayComponent, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, ContainerComponent, ContentLoaderComponent, ContentReactionComponent, ContentTransformer, CookieBannerComponent, CountdownComponent, CurrencyInputComponent, DEFAULT_ADS_CONFIG, DEFAULT_APP_CONFIG_SERVICE_CONFIG, DEFAULT_AUTH_CONFIG, DEFAULT_BACK_HEADER, DEFAULT_CANCEL_BUTTON, DEFAULT_CONFIRM_BUTTON, DEFAULT_COUNTDOWN_LABELS, DEFAULT_COUNTDOWN_LABELS_EN, DEFAULT_EMPTY_STATE, DEFAULT_EMULATOR_CONFIG, DEFAULT_FEEDBACK_CONFIG, DEFAULT_FEEDBACK_TYPE_OPTIONS, DEFAULT_HOME_HEADER, DEFAULT_INFINITE_LIST_METADATA, DEFAULT_MODAL_CANCEL_BUTTON, DEFAULT_MODAL_CONFIRM_BUTTON, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLATFORMS, DEFAULT_REFRESHER_METADATA, DEFAULT_SKELETON_CONFIG, DataTableComponent, DateInputComponent, DateRangeInputComponent, DetailSkeletonComponent, DeviceService, DisplayComponent, DividerComponent, DocsApiTableComponent, DocsBreadcrumbComponent, DocsBuilder, DocsCalloutComponent, DocsCodeExampleComponent, DocsLayoutComponent, DocsNavLinksComponent, DocsNavigationService, DocsPageComponent, DocsSearchComponent, DocsSectionComponent, DocsShellComponent, DocsSidebarComponent, DocsTocComponent, DownloadService, EmailInputComponent, ExpandableTextComponent, FEATURES_LIST_DEFAULTS, FabComponent, FeaturesListComponent, FeedbackFormComponent, FeedbackService, FileInputComponent, FirebaseService, FirestoreCollectionFactory, FirestoreService, FooterComponent, FooterLinksComponent, FormComponent, FormFooterComponent, FormSkeletonComponent, FunHeaderComponent, GlassComponent, GlowCardComponent, GlowComponent, GridSkeletonComponent, HANDOFF_ROUTE_PARAM, HANDOFF_TOKEN_PARAM, HandoffService, HeaderComponent, HintComponent, HorizontalScrollComponent, HourInputComponent, HrefComponent, I18nService, IMAGE_DEFAULTS, INITIAL_AUTH_STATE, INITIAL_MFA_STATE, Icon, IconComponent, IconService, ImageComponent, ImageCropComponent, ImageService, InAppBrowserService, InfiniteListComponent, InfoComponent, InputI18nHelper, InputType, ItemListComponent, LANG_STORAGE_KEY$1 as LANG_STORAGE_KEY, LEGAL_CONTENT_CONFIG, LOGIN_DEFAULTS, LanguageSelectorComponent, LayeredCardComponent, LegalContentService, LegalLinkService, LinkComponent, LinkProcessorService, LinkedProvidersComponent, LinksAccordionComponent, LinksCakeComponent, ListSkeletonComponent, LoadingDirective, LocalStorageService, LocaleService, LoginComponent, MODAL_SIZES, MOTIF_KEYS, MOTION, MaintenancePageComponent, MarkdownArticleParserService, MenuComponent, MessagingService, MetaService, ModalService, MultiSelectSearchComponent, NavigationService, NewsBuilder, NoContentComponent, NotesBoxComponent, NotificationActionService, NotificationsService, NumberFromToComponent, NumberInputComponent, NumberStepperComponent, OAUTH_PROVIDERS_INFO, OAuthCallbackComponent, OAuthService, OrgSwitchService, OutlineDefault, OutlineDefaultBlock, OutlineDefaultFull, OutlineDefaultRound, OutlineDefaultRoundBlock, OutlineDefaultRoundFull, PATTERN_MOTIFS, PATTERN_PALETTES, PLATFORM_CONFIGS, PageContentComponent, PageLinksComponent, PageTemplateComponent, PageWrapperComponent, PaginationComponent, PaginationService, PasswordInputComponent, PatternComponent, PhoneInputComponent, PillComponent, PinInputComponent, PlainCodeBoxComponent, PopoverSelectorComponent, PreferencesService, PresetService, PriceTagComponent, PrimarySolidBlockButton, PrimarySolidBlockHrefButton, PrimarySolidBlockIconButton, PrimarySolidBlockIconHrefButton, PrimarySolidDefaultRoundButton, PrimarySolidDefaultRoundHrefButton, PrimarySolidDefaultRoundIconButton, PrimarySolidDefaultRoundIconHrefButton, PrimarySolidFullButton, PrimarySolidFullHrefButton, PrimarySolidFullIconButton, PrimarySolidFullIconHrefButton, PrimarySolidLargeRoundButton, PrimarySolidLargeRoundHrefButton, PrimarySolidLargeRoundIconButton, PrimarySolidLargeRoundIconHrefButton, PrimarySolidSmallRoundButton, PrimarySolidSmallRoundHrefButton, PrimarySolidSmallRoundIconButton, PrimarySolidSmallRoundIconHrefButton, ProcessLinksPipe, ProfileSkeletonComponent, ProgressBarComponent, ProgressRingComponent, ProgressStatusComponent, PrompterComponent, QR_PRESETS, QrCodeComponent, QrGeneratorService, QueryBuilder, QuoteBoxComponent, RadioInputComponent, RangeInputComponent, RatingComponent, RefresherComponent, RightsFooterComponent, RotatingTextComponent, SHAPE_KEYS, SKELETON_LAYOUT_DEFAULT_ROWS, SKELETON_PRESETS, SOLID_KEYS, SearchSelectorComponent, SearchbarComponent, SecondarySolidBlockButton, SecondarySolidBlockHrefButton, SecondarySolidBlockIconButton, SecondarySolidBlockIconHrefButton, SecondarySolidDefaultRoundButton, SecondarySolidDefaultRoundHrefButton, SecondarySolidDefaultRoundIconButton, SecondarySolidDefaultRoundIconHrefButton, SecondarySolidFullButton, SecondarySolidFullHrefButton, SecondarySolidFullIconButton, SecondarySolidFullIconHrefButton, SecondarySolidLargeRoundButton, SecondarySolidLargeRoundHrefButton, SecondarySolidLargeRoundIconButton, SecondarySolidLargeRoundIconHrefButton, SecondarySolidSmallRoundButton, SecondarySolidSmallRoundHrefButton, SecondarySolidSmallRoundIconButton, SecondarySolidSmallRoundIconHrefButton, SegmentControlComponent, SelectSearchComponent, SessionService, ShareButtonsComponent, SimpleComponent, SkeletonComponent, SkeletonLayoutComponent, SkeletonService, SolidBlockButton, SolidDefault, SolidDefaultBlock, SolidDefaultButton, SolidDefaultFull, SolidDefaultRound, SolidDefaultRoundBlock, SolidDefaultRoundButton, SolidDefaultRoundFull, SolidFullButton, SolidLargeButton, SolidLargeRoundButton, SolidSmallButton, SolidSmallRoundButton, StatsCardComponent, StepperComponent, StorageService, SwipeCarouselComponent, TRI_KEYS, TabbedContentComponent, TableSkeletonComponent, TabsComponent, Terminal404Component, TestimonialCardComponent, TestimonialCarouselComponent, TextComponent, TextInputComponent, TextareaInputComponent, ThemeOption, ThemeService, TimelineComponent, TitleBlockComponent, TitleComponent, ToastService, ToggleInputComponent, TokenService, ToolbarActionType, ToolbarComponent, TranslatePipe, TypedCollection, UpdateBannerComponent, UserAvatarComponent, UsernameInputComponent, VALTECH_ADS_CONFIG, VALTECH_APP_CONFIG, VALTECH_AUTH_CONFIG, VALTECH_COMPANY_LINKS, VALTECH_DEFAULT_CONTENT, VALTECH_FEEDBACK_CONFIG, VALTECH_FIREBASE_CONFIG, VALTECH_FOOTER_I18N, VALTECH_FOOTER_LOGO, VALTECH_LANGUAGE_SELECTOR, VALTECH_LEGAL_CONFIG, VALTECH_SOCIAL_LINKS, VERSION, WizardComponent, WizardFooterComponent, applyDefaultValueToControl, authGuard, authInterceptor, blogPost, buildFooterLinks, buildPath, collections, createFirebaseConfig, createGlowCardProps, createInitialPaginationState, createNumberFromToField, createTitleProps, docs, extractPathParams, generatePatternTiles, generateRandomTile, getAppInfo, getAppVersion, getCollectionPath, getDocumentId, getTimeOfDayKey, goToTop, guestGuard, hasEmulators, isAtEnd, isCollectionPath, isDocumentPath, isEmulatorMode, isValidPath, joinPath, maxLength, mulberry32, news, parseMarkdownArticle, permissionGuard, permissionGuardFromRoute, provideLegalContent, provideValtechAds, provideValtechAppConfig, provideValtechAuth, provideValtechAuthInterceptor, provideValtechFeedback, provideValtechFirebase, provideValtechI18n, provideValtechLegal, provideValtechPresets, provideValtechSkeleton, query, renderPatternSvgInner, replaceSpecialChars, resolveColor, resolveInputDefaultValue, roleGuard, storagePaths, superAdminGuard, toArticle };
44778
+ export { ACTION_CARD_DEFAULTS, AD_SIZE_MAP, API_TABLE_COLUMN_LABELS, ARTICLE_SPACING, AVATAR_UPLOAD_DEFAULTS, AccordionComponent, ActionCardComponent, ActionHeaderComponent, ActionType, AdSlotComponent, AdsLoaderService, AdsService, AlertBoxComponent, AnalyticsErrorHandler, AnalyticsRouterTracker, AnalyticsService, AppConfigService, ArticleBuilder, ArticleComponent, AuthBackgroundComponent, AuthService, AuthStateService, AuthStorageService, AuthSyncService, AvatarComponent, AvatarUploadComponent, BOTTOM_NAV_DEFAULTS, BannerComponent, BaseDefault, BlogPostBuilder, BottomNavComponent, BoxComponent, BreadcrumbComponent, ButtonComponent, ButtonGroupComponent, CALLOUT_LABELS, CHEV_KEYS, COMMON_COUNTRY_CODES, COMMON_CURRENCIES, CURRENCY_INFO, CardComponent, CardSection, CardType, CardsCarouselComponent, CheckInputComponent, CheckboxRadioInputComponent, ChipGroupComponent, ClearDefault, ClearDefaultBlock, ClearDefaultFull, ClearDefaultRound, ClearDefaultRoundBlock, ClearDefaultRoundFull, CodeDisplayComponent, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, ContainerComponent, ContentLoaderComponent, ContentReactionComponent, ContentTransformer, CookieBannerComponent, CountdownComponent, CurrencyInputComponent, DEFAULT_ADS_CONFIG, DEFAULT_APP_CONFIG_SERVICE_CONFIG, DEFAULT_AUTH_CONFIG, DEFAULT_BACK_HEADER, DEFAULT_CANCEL_BUTTON, DEFAULT_CONFIRM_BUTTON, DEFAULT_COUNTDOWN_LABELS, DEFAULT_COUNTDOWN_LABELS_EN, DEFAULT_EMPTY_STATE, DEFAULT_EMULATOR_CONFIG, DEFAULT_FEEDBACK_CONFIG, DEFAULT_FEEDBACK_TYPE_OPTIONS, DEFAULT_HOME_HEADER, DEFAULT_INFINITE_LIST_METADATA, DEFAULT_MODAL_CANCEL_BUTTON, DEFAULT_MODAL_CONFIRM_BUTTON, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLATFORMS, DEFAULT_REFRESHER_METADATA, DEFAULT_SKELETON_CONFIG, DataTableComponent, DateInputComponent, DateRangeInputComponent, DetailSkeletonComponent, DeviceService, DisplayComponent, DividerComponent, DocsApiTableComponent, DocsBreadcrumbComponent, DocsBuilder, DocsCalloutComponent, DocsCodeExampleComponent, DocsLayoutComponent, DocsNavLinksComponent, DocsNavigationService, DocsPageComponent, DocsSearchComponent, DocsSectionComponent, DocsShellComponent, DocsSidebarComponent, DocsTocComponent, DownloadService, EmailInputComponent, ExpandableTextComponent, FEATURES_LIST_DEFAULTS, FabComponent, FeaturesListComponent, FeedbackFormComponent, FeedbackService, FileInputComponent, FirebaseService, FirestoreCollectionFactory, FirestoreService, FooterComponent, FooterLinksComponent, FormComponent, FormFooterComponent, FormSkeletonComponent, FunHeaderComponent, GlassComponent, GlowCardComponent, GlowComponent, GridSkeletonComponent, HANDOFF_ROUTE_PARAM, HANDOFF_TOKEN_PARAM, HandoffService, HeaderComponent, HintComponent, HorizontalScrollComponent, HourInputComponent, HrefComponent, I18nService, IMAGE_DEFAULTS, INITIAL_AUTH_STATE, INITIAL_MFA_STATE, Icon, IconComponent, IconService, ImageComponent, ImageCropComponent, ImageService, InAppBrowserService, InfiniteListComponent, InfoComponent, InputI18nHelper, InputType, ItemListComponent, LANG_STORAGE_KEY$1 as LANG_STORAGE_KEY, LEGAL_CONTENT_CONFIG, LOGIN_DEFAULTS, LanguageSelectorComponent, LayeredCardComponent, LegalContentService, LegalLinkService, LinkComponent, LinkProcessorService, LinkedProvidersComponent, LinksAccordionComponent, LinksCakeComponent, ListSkeletonComponent, LoadingDirective, LocalStorageService, LocaleService, LoginComponent, MODAL_SIZES, MOTIF_KEYS, MOTION, MaintenancePageComponent, MarkdownArticleParserService, MenuComponent, MessagingService, MetaService, ModalService, MultiSelectSearchComponent, NavigationService, NewsBuilder, NoContentComponent, NotesBoxComponent, NotificationActionService, NotificationsService, NumberFromToComponent, NumberInputComponent, NumberStepperComponent, OAUTH_PROVIDERS_INFO, OAuthCallbackComponent, OAuthService, OrgSwitchService, OutlineDefault, OutlineDefaultBlock, OutlineDefaultFull, OutlineDefaultRound, OutlineDefaultRoundBlock, OutlineDefaultRoundFull, PATTERN_MOTIFS, PATTERN_PALETTES, PLATFORM_CONFIGS, PageContentComponent, PageLinksComponent, PageRefreshService, PageTemplateComponent, PageWrapperComponent, PaginationComponent, PaginationService, PasswordInputComponent, PatternComponent, PhoneInputComponent, PillComponent, PinInputComponent, PlainCodeBoxComponent, PopoverSelectorComponent, PreferencesService, PresetService, PriceTagComponent, PrimarySolidBlockButton, PrimarySolidBlockHrefButton, PrimarySolidBlockIconButton, PrimarySolidBlockIconHrefButton, PrimarySolidDefaultRoundButton, PrimarySolidDefaultRoundHrefButton, PrimarySolidDefaultRoundIconButton, PrimarySolidDefaultRoundIconHrefButton, PrimarySolidFullButton, PrimarySolidFullHrefButton, PrimarySolidFullIconButton, PrimarySolidFullIconHrefButton, PrimarySolidLargeRoundButton, PrimarySolidLargeRoundHrefButton, PrimarySolidLargeRoundIconButton, PrimarySolidLargeRoundIconHrefButton, PrimarySolidSmallRoundButton, PrimarySolidSmallRoundHrefButton, PrimarySolidSmallRoundIconButton, PrimarySolidSmallRoundIconHrefButton, ProcessLinksPipe, ProfileSkeletonComponent, ProgressBarComponent, ProgressRingComponent, ProgressStatusComponent, PrompterComponent, QR_PRESETS, QrCodeComponent, QrGeneratorService, QueryBuilder, QuoteBoxComponent, RadioInputComponent, RangeInputComponent, RatingComponent, RefresherComponent, RightsFooterComponent, RotatingTextComponent, SHAPE_KEYS, SKELETON_LAYOUT_DEFAULT_ROWS, SKELETON_PRESETS, SOLID_KEYS, SearchSelectorComponent, SearchbarComponent, SecondarySolidBlockButton, SecondarySolidBlockHrefButton, SecondarySolidBlockIconButton, SecondarySolidBlockIconHrefButton, SecondarySolidDefaultRoundButton, SecondarySolidDefaultRoundHrefButton, SecondarySolidDefaultRoundIconButton, SecondarySolidDefaultRoundIconHrefButton, SecondarySolidFullButton, SecondarySolidFullHrefButton, SecondarySolidFullIconButton, SecondarySolidFullIconHrefButton, SecondarySolidLargeRoundButton, SecondarySolidLargeRoundHrefButton, SecondarySolidLargeRoundIconButton, SecondarySolidLargeRoundIconHrefButton, SecondarySolidSmallRoundButton, SecondarySolidSmallRoundHrefButton, SecondarySolidSmallRoundIconButton, SecondarySolidSmallRoundIconHrefButton, SegmentControlComponent, SelectSearchComponent, SessionService, ShareButtonsComponent, SimpleComponent, SkeletonComponent, SkeletonLayoutComponent, SkeletonService, SolidBlockButton, SolidDefault, SolidDefaultBlock, SolidDefaultButton, SolidDefaultFull, SolidDefaultRound, SolidDefaultRoundBlock, SolidDefaultRoundButton, SolidDefaultRoundFull, SolidFullButton, SolidLargeButton, SolidLargeRoundButton, SolidSmallButton, SolidSmallRoundButton, StatsCardComponent, StepperComponent, StorageService, SwipeCarouselComponent, TRI_KEYS, TabbedContentComponent, TableSkeletonComponent, TabsComponent, Terminal404Component, TestimonialCardComponent, TestimonialCarouselComponent, TextComponent, TextInputComponent, TextareaInputComponent, ThemeOption, ThemeService, TimelineComponent, TitleBlockComponent, TitleComponent, ToastService, ToggleInputComponent, TokenService, ToolbarActionType, ToolbarComponent, TranslatePipe, TypedCollection, UpdateBannerComponent, UserAvatarComponent, UsernameInputComponent, VALTECH_ADS_CONFIG, VALTECH_APP_CONFIG, VALTECH_AUTH_CONFIG, VALTECH_COMPANY_LINKS, VALTECH_DEFAULT_CONTENT, VALTECH_FEEDBACK_CONFIG, VALTECH_FIREBASE_CONFIG, VALTECH_FOOTER_I18N, VALTECH_FOOTER_LOGO, VALTECH_LANGUAGE_SELECTOR, VALTECH_LEGAL_CONFIG, VALTECH_SOCIAL_LINKS, VERSION, WizardComponent, WizardFooterComponent, applyDefaultValueToControl, authGuard, authInterceptor, blogPost, buildFooterLinks, buildPath, collections, createFirebaseConfig, createGlowCardProps, createInitialPaginationState, createNumberFromToField, createTitleProps, docs, extractPathParams, generatePatternTiles, generateRandomTile, getAppInfo, getAppVersion, getCollectionPath, getDocumentId, getTimeOfDayKey, goToTop, guestGuard, hasEmulators, isAtEnd, isCollectionPath, isDocumentPath, isEmulatorMode, isValidPath, joinPath, maxLength, mulberry32, news, parseMarkdownArticle, permissionGuard, permissionGuardFromRoute, provideLegalContent, provideValtechAds, provideValtechAppConfig, provideValtechAuth, provideValtechAuthInterceptor, provideValtechFeedback, provideValtechFirebase, provideValtechI18n, provideValtechLegal, provideValtechPresets, provideValtechSkeleton, query, renderPatternSvgInner, replaceSpecialChars, resolveColor, resolveInputDefaultValue, roleGuard, storagePaths, superAdminGuard, toArticle };
44675
44779
  //# sourceMappingURL=valtech-components.mjs.map