valtech-components 4.0.257 → 4.0.260

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.
@@ -57,7 +57,7 @@ import fixWebmDuration from 'fix-webm-duration';
57
57
  * Current version of valtech-components.
58
58
  * This is automatically updated during the publish process.
59
59
  */
60
- const VERSION = '4.0.257';
60
+ const VERSION = '4.0.260';
61
61
 
62
62
  // Control de estado de refresco (singleton a nivel de módulo)
63
63
  let isRefreshing = false;
@@ -20713,6 +20713,140 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
20713
20713
  type: Output
20714
20714
  }] } });
20715
20715
 
20716
+ /**
20717
+ * `val-picker-v2`
20718
+ *
20719
+ * Dropdown propio para pickers simples. Evita el trigger de `ion-select`, que en
20720
+ * popovers de settings podía deformar el borde activo del botón.
20721
+ */
20722
+ class PickerV2Component {
20723
+ constructor() {
20724
+ this.props = { options: [] };
20725
+ this.selectionChange = new EventEmitter();
20726
+ this.host = inject(ElementRef);
20727
+ this.open = signal(false);
20728
+ this.selectedOption = computed(() => this.props.options.find(option => option.value === this.props.selectedValue));
20729
+ this.displayText = computed(() => this.selectedOption()?.label || this.props.placeholder || '');
20730
+ }
20731
+ toggle() {
20732
+ if (this.props.disabled)
20733
+ return;
20734
+ this.open.update(open => !open);
20735
+ }
20736
+ select(option) {
20737
+ if (option.disabled)
20738
+ return;
20739
+ this.open.set(false);
20740
+ if (option.value === this.props.selectedValue)
20741
+ return;
20742
+ this.selectionChange.emit(option.value);
20743
+ }
20744
+ onDocumentClick(event) {
20745
+ if (!this.open())
20746
+ return;
20747
+ if (!this.host.nativeElement.contains(event.target)) {
20748
+ this.open.set(false);
20749
+ }
20750
+ }
20751
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PickerV2Component, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
20752
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PickerV2Component, isStandalone: true, selector: "val-picker-v2", inputs: { props: "props" }, outputs: { selectionChange: "selectionChange" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, ngImport: i0, template: `
20753
+ <div class="pkv2">
20754
+ <button
20755
+ type="button"
20756
+ class="pkv2__trigger"
20757
+ [class.is-open]="open()"
20758
+ [disabled]="props.disabled"
20759
+ (click)="toggle()"
20760
+ [attr.aria-haspopup]="'listbox'"
20761
+ [attr.aria-expanded]="open()"
20762
+ [attr.aria-label]="props.ariaLabel || displayText()"
20763
+ >
20764
+ @if (selectedOption()?.prefix; as prefix) {
20765
+ <span class="pkv2__prefix">{{ prefix }}</span>
20766
+ }
20767
+ <span class="pkv2__name">{{ displayText() }}</span>
20768
+ </button>
20769
+
20770
+ @if (open()) {
20771
+ <ul class="pkv2__menu" role="listbox">
20772
+ @for (option of props.options; track option.value) {
20773
+ <li
20774
+ class="pkv2__option"
20775
+ [class.is-active]="option.value === props.selectedValue"
20776
+ [class.is-disabled]="option.disabled"
20777
+ role="option"
20778
+ [attr.aria-selected]="option.value === props.selectedValue"
20779
+ [attr.aria-disabled]="option.disabled"
20780
+ (click)="select(option)"
20781
+ >
20782
+ @if (option.prefix; as prefix) {
20783
+ <span class="pkv2__prefix">{{ prefix }}</span>
20784
+ }
20785
+ <span class="pkv2__name">{{ option.label }}</span>
20786
+ @if (option.value === props.selectedValue) {
20787
+ <span class="pkv2__check" aria-hidden="true">✓</span>
20788
+ }
20789
+ </li>
20790
+ }
20791
+ </ul>
20792
+ }
20793
+ </div>
20794
+ `, isInline: true, styles: [":host{display:inline-block;max-width:100%}.pkv2{position:relative;display:inline-block;max-width:100%}.pkv2__trigger{display:inline-flex;align-items:center;gap:8px;max-width:100%;min-height:40px;padding:8px 14px;margin:0;border:1.5px solid var(--ion-color-dark, #1a1a1a);border-radius:10px;background:var(--ion-card-background, var(--ion-background-color, #ffffff));color:var(--ion-text-color, #1a1a1a);cursor:pointer;font:inherit;font-size:.9375rem;font-weight:600;line-height:1.2;transition:border-color .15s ease,box-shadow .15s ease,opacity .15s ease}.pkv2__trigger.is-open,.pkv2__trigger:focus-visible{border-color:var(--ion-color-primary);outline:none;box-shadow:0 0 0 3px rgba(var(--ion-color-primary-rgb, 112, 38, 223),.15)}.pkv2__trigger:disabled{cursor:default;opacity:.55}.pkv2__prefix{flex:0 0 auto;font-size:1.05em;line-height:1}.pkv2__name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pkv2__menu{position:absolute;top:calc(100% + 6px);left:0;z-index:50;min-width:100%;margin:0;padding:6px;list-style:none;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .12));border-radius:12px;background:var(--ion-card-background, var(--ion-background-color, #ffffff));box-shadow:0 8px 24px #00000029}.pkv2__option{display:flex;align-items:center;gap:10px;min-height:36px;padding:9px 12px;border-radius:8px;color:var(--ion-text-color, #1a1a1a);cursor:pointer;white-space:nowrap;transition:background .12s ease}.pkv2__option:hover{background:var(--ion-color-light, rgba(0, 0, 0, .05))}.pkv2__option.is-active{font-weight:700}.pkv2__option.is-disabled{pointer-events:none;opacity:.55}.pkv2__check{margin-left:auto;color:var(--ion-color-primary);font-weight:700}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
20795
+ }
20796
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PickerV2Component, decorators: [{
20797
+ type: Component,
20798
+ args: [{ selector: 'val-picker-v2', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: `
20799
+ <div class="pkv2">
20800
+ <button
20801
+ type="button"
20802
+ class="pkv2__trigger"
20803
+ [class.is-open]="open()"
20804
+ [disabled]="props.disabled"
20805
+ (click)="toggle()"
20806
+ [attr.aria-haspopup]="'listbox'"
20807
+ [attr.aria-expanded]="open()"
20808
+ [attr.aria-label]="props.ariaLabel || displayText()"
20809
+ >
20810
+ @if (selectedOption()?.prefix; as prefix) {
20811
+ <span class="pkv2__prefix">{{ prefix }}</span>
20812
+ }
20813
+ <span class="pkv2__name">{{ displayText() }}</span>
20814
+ </button>
20815
+
20816
+ @if (open()) {
20817
+ <ul class="pkv2__menu" role="listbox">
20818
+ @for (option of props.options; track option.value) {
20819
+ <li
20820
+ class="pkv2__option"
20821
+ [class.is-active]="option.value === props.selectedValue"
20822
+ [class.is-disabled]="option.disabled"
20823
+ role="option"
20824
+ [attr.aria-selected]="option.value === props.selectedValue"
20825
+ [attr.aria-disabled]="option.disabled"
20826
+ (click)="select(option)"
20827
+ >
20828
+ @if (option.prefix; as prefix) {
20829
+ <span class="pkv2__prefix">{{ prefix }}</span>
20830
+ }
20831
+ <span class="pkv2__name">{{ option.label }}</span>
20832
+ @if (option.value === props.selectedValue) {
20833
+ <span class="pkv2__check" aria-hidden="true">✓</span>
20834
+ }
20835
+ </li>
20836
+ }
20837
+ </ul>
20838
+ }
20839
+ </div>
20840
+ `, styles: [":host{display:inline-block;max-width:100%}.pkv2{position:relative;display:inline-block;max-width:100%}.pkv2__trigger{display:inline-flex;align-items:center;gap:8px;max-width:100%;min-height:40px;padding:8px 14px;margin:0;border:1.5px solid var(--ion-color-dark, #1a1a1a);border-radius:10px;background:var(--ion-card-background, var(--ion-background-color, #ffffff));color:var(--ion-text-color, #1a1a1a);cursor:pointer;font:inherit;font-size:.9375rem;font-weight:600;line-height:1.2;transition:border-color .15s ease,box-shadow .15s ease,opacity .15s ease}.pkv2__trigger.is-open,.pkv2__trigger:focus-visible{border-color:var(--ion-color-primary);outline:none;box-shadow:0 0 0 3px rgba(var(--ion-color-primary-rgb, 112, 38, 223),.15)}.pkv2__trigger:disabled{cursor:default;opacity:.55}.pkv2__prefix{flex:0 0 auto;font-size:1.05em;line-height:1}.pkv2__name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pkv2__menu{position:absolute;top:calc(100% + 6px);left:0;z-index:50;min-width:100%;margin:0;padding:6px;list-style:none;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .12));border-radius:12px;background:var(--ion-card-background, var(--ion-background-color, #ffffff));box-shadow:0 8px 24px #00000029}.pkv2__option{display:flex;align-items:center;gap:10px;min-height:36px;padding:9px 12px;border-radius:8px;color:var(--ion-text-color, #1a1a1a);cursor:pointer;white-space:nowrap;transition:background .12s ease}.pkv2__option:hover{background:var(--ion-color-light, rgba(0, 0, 0, .05))}.pkv2__option.is-active{font-weight:700}.pkv2__option.is-disabled{pointer-events:none;opacity:.55}.pkv2__check{margin-left:auto;color:var(--ion-color-primary);font-weight:700}\n"] }]
20841
+ }], propDecorators: { props: [{
20842
+ type: Input
20843
+ }], selectionChange: [{
20844
+ type: Output
20845
+ }], onDocumentClick: [{
20846
+ type: HostListener,
20847
+ args: ['document:click', ['$event']]
20848
+ }] } });
20849
+
20716
20850
  /**
20717
20851
  * Defaults i18n (es/en) — auto-registrados si el consumer no proveyó el
20718
20852
  * namespace `CommandDisplay`. Cubre el aria-label del botón copiar.
@@ -46965,6 +47099,8 @@ const PREFERENCES_VIEW_I18N = {
46965
47099
  themeAuto: 'Auto',
46966
47100
  languageTitle: 'Idioma',
46967
47101
  languageHint: 'Idioma de la interfaz y de los correos que recibes.',
47102
+ language_es: 'Español',
47103
+ language_en: 'English',
46968
47104
  fontSizeTitle: 'Tamaño de texto',
46969
47105
  fontSizeHint: 'Ajusta el tamaño de la letra en toda la app.',
46970
47106
  fontSizeSmall: 'Pequeño',
@@ -46982,6 +47118,8 @@ const PREFERENCES_VIEW_I18N = {
46982
47118
  themeAuto: 'Auto',
46983
47119
  languageTitle: 'Language',
46984
47120
  languageHint: 'Language of the interface and of the emails you receive.',
47121
+ language_es: 'Español',
47122
+ language_en: 'English',
46985
47123
  fontSizeTitle: 'Text size',
46986
47124
  fontSizeHint: 'Adjust the font size across the entire app.',
46987
47125
  fontSizeSmall: 'Small',
@@ -47043,26 +47181,29 @@ class PreferencesViewComponent {
47043
47181
  this.langHint = computed(() => this.t('languageHint'));
47044
47182
  this.fontSizeTitle = computed(() => this.t('fontSizeTitle'));
47045
47183
  this.fontSizeHint = computed(() => this.t('fontSizeHint'));
47046
- this.langProps = computed(() => ({
47047
- availableLanguages: this.resolvedConfig().supportedLanguages,
47048
- showFlags: false,
47049
- }));
47050
47184
  this.themePickerProps = computed(() => ({
47051
47185
  selectedValue: this.prefs.theme(),
47052
47186
  disabled: this.saving(),
47053
- fill: 'outline',
47054
- interface: 'popover',
47187
+ ariaLabel: this.themeTitle(),
47055
47188
  options: [
47056
47189
  { value: 'light', label: this.t('themeLight') },
47057
47190
  { value: 'dark', label: this.t('themeDark') },
47058
47191
  { value: 'auto', label: this.t('themeAuto') },
47059
47192
  ],
47060
47193
  }));
47194
+ this.languagePickerProps = computed(() => ({
47195
+ selectedValue: this.prefs.language(),
47196
+ disabled: this.saving(),
47197
+ ariaLabel: this.langTitle(),
47198
+ options: this.resolvedConfig().supportedLanguages.map(lang => ({
47199
+ value: lang,
47200
+ label: this.languageName(lang),
47201
+ })),
47202
+ }));
47061
47203
  this.fontSizePickerProps = computed(() => ({
47062
47204
  selectedValue: this.prefs.fontSize(),
47063
47205
  disabled: this.saving(),
47064
- fill: 'outline',
47065
- interface: 'popover',
47206
+ ariaLabel: this.fontSizeTitle(),
47066
47207
  options: [
47067
47208
  { value: 'small', label: this.t('fontSizeSmall') },
47068
47209
  { value: 'medium', label: this.t('fontSizeMedium') },
@@ -47118,6 +47259,9 @@ class PreferencesViewComponent {
47118
47259
  t(key) {
47119
47260
  return this.i18n.t(key, this.ns);
47120
47261
  }
47262
+ languageName(lang) {
47263
+ return this.t(`language_${lang}`);
47264
+ }
47121
47265
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PreferencesViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
47122
47266
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PreferencesViewComponent, isStandalone: true, selector: "val-preferences-view", inputs: { config: "config" }, ngImport: i0, template: `
47123
47267
  <div class="page">
@@ -47152,7 +47296,7 @@ class PreferencesViewComponent {
47152
47296
  content: themeHint(),
47153
47297
  }"
47154
47298
  />
47155
- <val-popover-selector [props]="themePickerProps()" (selectionChange)="onThemeChange($event)" />
47299
+ <val-picker-v2 [props]="themePickerProps()" (selectionChange)="onThemeChange($event)" />
47156
47300
  </div>
47157
47301
  </section>
47158
47302
  }
@@ -47176,7 +47320,7 @@ class PreferencesViewComponent {
47176
47320
  content: langHint(),
47177
47321
  }"
47178
47322
  />
47179
- <val-language-selector-v2 [props]="langProps()" (languageChange)="onLanguageChange($event)" />
47323
+ <val-picker-v2 [props]="languagePickerProps()" (selectionChange)="onLanguageChange($event)" />
47180
47324
  </div>
47181
47325
  </section>
47182
47326
  }
@@ -47200,19 +47344,18 @@ class PreferencesViewComponent {
47200
47344
  content: fontSizeHint(),
47201
47345
  }"
47202
47346
  />
47203
- <val-popover-selector [props]="fontSizePickerProps()" (selectionChange)="onFontSizeChange($event)" />
47347
+ <val-picker-v2 [props]="fontSizePickerProps()" (selectionChange)="onFontSizeChange($event)" />
47204
47348
  </div>
47205
47349
  </section>
47206
47350
  }
47207
47351
  </div>
47208
- `, isInline: true, styles: [".page{padding:16px 0;max-width:720px;margin:0 auto}.settings-section{padding:16px 0}.settings-section+.settings-section{border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08))}.section-body{display:flex;flex-direction:column;gap:10px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: PopoverSelectorComponent, selector: "val-popover-selector", inputs: ["props"], outputs: ["selectionChange"] }, { kind: "component", type: LanguageSelectorV2Component, selector: "val-language-selector-v2", inputs: ["props"], outputs: ["languageChange"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }] }); }
47352
+ `, isInline: true, styles: [".page{padding:16px 0;max-width:720px;margin:0 auto}.settings-section{padding:16px 0}.settings-section+.settings-section{border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08))}.section-body{display:flex;flex-direction:column;gap:10px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: PickerV2Component, selector: "val-picker-v2", inputs: ["props"], outputs: ["selectionChange"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }] }); }
47209
47353
  }
47210
47354
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PreferencesViewComponent, decorators: [{
47211
47355
  type: Component,
47212
47356
  args: [{ selector: 'val-preferences-view', standalone: true, imports: [
47213
47357
  CommonModule,
47214
- PopoverSelectorComponent,
47215
- LanguageSelectorV2Component,
47358
+ PickerV2Component,
47216
47359
  DisplayComponent,
47217
47360
  TitleComponent,
47218
47361
  TextComponent,
@@ -47249,7 +47392,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
47249
47392
  content: themeHint(),
47250
47393
  }"
47251
47394
  />
47252
- <val-popover-selector [props]="themePickerProps()" (selectionChange)="onThemeChange($event)" />
47395
+ <val-picker-v2 [props]="themePickerProps()" (selectionChange)="onThemeChange($event)" />
47253
47396
  </div>
47254
47397
  </section>
47255
47398
  }
@@ -47273,7 +47416,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
47273
47416
  content: langHint(),
47274
47417
  }"
47275
47418
  />
47276
- <val-language-selector-v2 [props]="langProps()" (languageChange)="onLanguageChange($event)" />
47419
+ <val-picker-v2 [props]="languagePickerProps()" (selectionChange)="onLanguageChange($event)" />
47277
47420
  </div>
47278
47421
  </section>
47279
47422
  }
@@ -47297,7 +47440,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
47297
47440
  content: fontSizeHint(),
47298
47441
  }"
47299
47442
  />
47300
- <val-popover-selector [props]="fontSizePickerProps()" (selectionChange)="onFontSizeChange($event)" />
47443
+ <val-picker-v2 [props]="fontSizePickerProps()" (selectionChange)="onFontSizeChange($event)" />
47301
47444
  </div>
47302
47445
  </section>
47303
47446
  }
@@ -60957,6 +61100,257 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
60957
61100
  * `FAQPage` (JSON-LD) y ganar rich results en buscadores.
60958
61101
  */
60959
61102
 
61103
+ class PricingTableComponent {
61104
+ constructor() {
61105
+ this.onSelect = new EventEmitter();
61106
+ }
61107
+ cycle() {
61108
+ return this.props?.billingCycle || 'monthly';
61109
+ }
61110
+ featuredLabel() {
61111
+ return this.props?.featuredLabel || 'Destacado';
61112
+ }
61113
+ currentLabel() {
61114
+ return this.props?.currentLabel || 'Plan actual';
61115
+ }
61116
+ customPriceLabel() {
61117
+ return this.props?.customPriceLabel || 'Precio a medida';
61118
+ }
61119
+ defaultCtaLabel() {
61120
+ return this.props?.defaultCtaLabel || 'Seleccionar plan';
61121
+ }
61122
+ periodLabel() {
61123
+ return this.cycle() === 'annual'
61124
+ ? this.props?.annualPeriodLabel || '/ año'
61125
+ : this.props?.monthlyPeriodLabel || '/ mes';
61126
+ }
61127
+ priceLabel(plan) {
61128
+ const value = this.cycle() === 'annual' ? plan.priceAnnual : plan.priceMonthly;
61129
+ const amount = value ?? 0;
61130
+ const currency = plan.currency || 'CLP';
61131
+ const locale = this.props?.locale || 'es-CL';
61132
+ return new Intl.NumberFormat(locale, {
61133
+ style: 'currency',
61134
+ currency,
61135
+ maximumFractionDigits: 0,
61136
+ }).format(amount);
61137
+ }
61138
+ select(plan) {
61139
+ if (plan.disabled || plan.current)
61140
+ return;
61141
+ this.onSelect.emit(plan.tier);
61142
+ }
61143
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PricingTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
61144
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PricingTableComponent, isStandalone: true, selector: "val-pricing-table", inputs: { props: "props" }, outputs: { onSelect: "onSelect" }, ngImport: i0, template: `
61145
+ <section class="pricing" [attr.data-cycle]="cycle()">
61146
+ @if (!props?.plans?.length) {
61147
+ <p class="pricing__empty">{{ props?.emptyLabel || 'No hay planes disponibles.' }}</p>
61148
+ } @else {
61149
+ <div class="pricing__grid" role="list">
61150
+ @for (plan of props.plans; track plan.tier) {
61151
+ <article
61152
+ class="plan"
61153
+ role="listitem"
61154
+ [class.plan--highlighted]="plan.highlighted"
61155
+ [class.plan--current]="plan.current"
61156
+ [class.plan--disabled]="plan.disabled"
61157
+ >
61158
+ @if (plan.highlighted || plan.badge || plan.current) {
61159
+ <div class="plan__ribbon">
61160
+ {{ plan.current ? currentLabel() : plan.badge || featuredLabel() }}
61161
+ </div>
61162
+ }
61163
+
61164
+ <div class="plan__body">
61165
+ <header class="plan__header">
61166
+ <h3 class="plan__name">{{ plan.name }}</h3>
61167
+ @if (plan.description) {
61168
+ <p class="plan__description">{{ plan.description }}</p>
61169
+ }
61170
+ </header>
61171
+
61172
+ <div class="plan__price" [class.plan__price--custom]="plan.custom">
61173
+ @if (plan.custom) {
61174
+ <span class="plan__custom-price">{{ customPriceLabel() }}</span>
61175
+ } @else {
61176
+ <span class="plan__amount">{{ priceLabel(plan) }}</span>
61177
+ <span class="plan__period">{{ periodLabel() }}</span>
61178
+ }
61179
+ </div>
61180
+
61181
+ <button
61182
+ class="plan__cta"
61183
+ type="button"
61184
+ [disabled]="plan.disabled || plan.current"
61185
+ (click)="select(plan)"
61186
+ >
61187
+ {{ plan.current ? currentLabel() : plan.ctaLabel || defaultCtaLabel() }}
61188
+ </button>
61189
+
61190
+ @if (plan.summary?.length) {
61191
+ <section class="plan__summary">
61192
+ @if (plan.summaryTitle) {
61193
+ <p class="plan__section-title">{{ plan.summaryTitle }}</p>
61194
+ }
61195
+ <ul>
61196
+ @for (item of plan.summary; track item) {
61197
+ <li>{{ item }}</li>
61198
+ }
61199
+ </ul>
61200
+ </section>
61201
+ }
61202
+
61203
+ @if (plan.features?.length) {
61204
+ <section class="plan__features">
61205
+ <p class="plan__section-title">{{ plan.featuresTitle || 'Incluye' }}</p>
61206
+ <ul>
61207
+ @for (feature of plan.features; track feature.label) {
61208
+ <li [class.is-excluded]="feature.included === false">
61209
+ <span class="check" aria-hidden="true">
61210
+ @if (feature.included === false) {
61211
+ <svg viewBox="0 0 24 24" fill="none">
61212
+ <path d="M6 6l12 12M18 6L6 18" />
61213
+ </svg>
61214
+ } @else {
61215
+ <svg viewBox="0 0 24 24" fill="none">
61216
+ <path d="M20 6L9 17l-5-5" />
61217
+ </svg>
61218
+ }
61219
+ </span>
61220
+ <span>{{ feature.label }}</span>
61221
+ </li>
61222
+ }
61223
+ </ul>
61224
+ </section>
61225
+ }
61226
+
61227
+ @if (plan.limits?.length) {
61228
+ <section class="plan__limits">
61229
+ @for (limit of plan.limits; track limit.label) {
61230
+ <div>
61231
+ <span>{{ limit.label }}</span>
61232
+ <strong>{{ limit.value }}</strong>
61233
+ </div>
61234
+ }
61235
+ </section>
61236
+ }
61237
+ </div>
61238
+ </article>
61239
+ }
61240
+ </div>
61241
+ }
61242
+ </section>
61243
+ `, isInline: true, styles: [":host{display:block}.pricing{color:var(--ion-text-color, #2f2940)}.pricing__empty{margin:0;color:var(--ion-color-medium, #6f6a7c)}.pricing__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr));gap:clamp(14px,2vw,22px);align-items:stretch}.plan{position:relative;min-width:0;border:1px solid var(--vds-pricing-border, var(--ion-color-light-shade, #dedbe6));border-radius:var(--vds-pricing-radius, 18px);background:var(--vds-pricing-bg, var(--ion-card-background, #ffffff));box-shadow:var(--vds-pricing-shadow, 0 8px 22px rgba(14, 4, 32, .08));overflow:hidden}.plan--highlighted{border-color:var(--vds-pricing-accent, var(--ion-color-primary, #ff00b2));box-shadow:var(--vds-pricing-featured-shadow, 0 14px 34px rgba(255, 0, 178, .16))}.plan--disabled{opacity:.72}.plan__ribbon{min-height:42px;display:grid;place-items:center;padding:8px 16px;background:var(--vds-pricing-accent, var(--ion-color-primary, #ff00b2));color:var(--vds-pricing-accent-contrast, var(--ion-color-primary-contrast, #ffffff));font-size:.8rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.plan--current .plan__ribbon{background:var(--ion-color-medium, #6f6a7c)}.plan__body{min-height:100%;display:flex;flex-direction:column;gap:22px;padding:clamp(20px,2.4vw,30px)}.plan__header{display:grid;gap:8px}.plan__name{margin:0;color:var(--vds-pricing-title, var(--ion-text-color, #2f2940));font-size:clamp(1.35rem,1.8vw,1.75rem);line-height:1.05;font-weight:850}.plan__description{min-height:44px;margin:0;color:var(--ion-color-medium, #6f6a7c);font-size:.95rem;line-height:1.45}.plan__price{display:flex;align-items:baseline;gap:8px;min-height:48px}.plan__amount{color:var(--vds-pricing-accent, var(--ion-color-primary, #ff00b2));font-size:clamp(2rem,4vw,3.25rem);line-height:1;font-weight:900;overflow-wrap:anywhere}.plan__period,.plan__custom-price{color:var(--ion-color-medium, #6f6a7c);font-size:.95rem;line-height:1.4}.plan__custom-price{color:var(--ion-text-color, #2f2940);font-weight:800}.plan__cta{width:100%;min-height:48px;border:0;border-radius:999px;padding:12px 20px;background:var(--vds-pricing-cta-bg, #2b1236);color:var(--vds-pricing-cta-color, #ffffff);font:inherit;font-weight:800;cursor:pointer;transition:transform .14s ease,opacity .14s ease}.plan--highlighted .plan__cta{background:var(--vds-pricing-accent, var(--ion-color-primary, #ff00b2));color:var(--vds-pricing-accent-contrast, var(--ion-color-primary-contrast, #ffffff))}.plan__cta:disabled{cursor:default;opacity:.62}.plan__cta:not(:disabled):hover{transform:translateY(-1px)}.plan__cta:focus-visible{outline:3px solid color-mix(in srgb,var(--vds-pricing-accent, #ff00b2) 45%,transparent);outline-offset:3px}.plan__summary{min-height:190px;padding:18px;border-top:5px solid var(--vds-pricing-accent-soft, color-mix(in srgb, var(--vds-pricing-accent, #ff00b2) 52%, #ffffff));border-radius:12px;background:var(--vds-pricing-soft-bg, color-mix(in srgb, var(--vds-pricing-accent, #ff00b2) 7%, var(--ion-card-background, #ffffff)))}.plan__section-title{margin:0 0 12px;color:var(--ion-color-medium, #6f6a7c);font-size:.78rem;font-weight:850;letter-spacing:.04em;text-transform:uppercase}.plan__summary ul,.plan__features ul{list-style:none;margin:0;padding:0;display:grid;gap:10px}.plan__summary li{position:relative;padding-left:18px;color:var(--ion-text-color, #2f2940);font-size:.95rem;line-height:1.35}.plan__summary li:before{content:\"\";position:absolute;top:.58em;left:2px;width:5px;height:5px;border-radius:50%;background:var(--vds-pricing-accent, var(--ion-color-primary, #ff00b2))}.plan__features{display:grid;gap:10px}.plan__features li{display:grid;grid-template-columns:20px minmax(0,1fr);gap:10px;align-items:start;color:var(--ion-text-color, #2f2940);font-size:.95rem;line-height:1.35}.plan__features li.is-excluded{color:var(--ion-color-medium, #6f6a7c);text-decoration:line-through}.check{width:20px;height:20px;display:grid;place-items:center;border-radius:50%;background:var(--vds-pricing-accent, var(--ion-color-primary, #ff00b2));color:var(--vds-pricing-accent-contrast, #ffffff)}.is-excluded .check{background:var(--ion-color-medium, #6f6a7c)}.check svg{width:13px;height:13px;stroke:currentColor;stroke-width:2.8;stroke-linecap:round;stroke-linejoin:round}.plan__limits{display:grid;gap:8px;margin-top:auto;padding-top:8px}.plan__limits div{display:flex;justify-content:space-between;gap:12px;color:var(--ion-color-medium, #6f6a7c);font-size:.86rem}.plan__limits strong{color:var(--ion-text-color, #2f2940);text-align:right;overflow-wrap:anywhere}@media (max-width: 700px){.plan__description,.plan__summary{min-height:0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
61244
+ }
61245
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PricingTableComponent, decorators: [{
61246
+ type: Component,
61247
+ args: [{ selector: 'val-pricing-table', standalone: true, imports: [CommonModule], template: `
61248
+ <section class="pricing" [attr.data-cycle]="cycle()">
61249
+ @if (!props?.plans?.length) {
61250
+ <p class="pricing__empty">{{ props?.emptyLabel || 'No hay planes disponibles.' }}</p>
61251
+ } @else {
61252
+ <div class="pricing__grid" role="list">
61253
+ @for (plan of props.plans; track plan.tier) {
61254
+ <article
61255
+ class="plan"
61256
+ role="listitem"
61257
+ [class.plan--highlighted]="plan.highlighted"
61258
+ [class.plan--current]="plan.current"
61259
+ [class.plan--disabled]="plan.disabled"
61260
+ >
61261
+ @if (plan.highlighted || plan.badge || plan.current) {
61262
+ <div class="plan__ribbon">
61263
+ {{ plan.current ? currentLabel() : plan.badge || featuredLabel() }}
61264
+ </div>
61265
+ }
61266
+
61267
+ <div class="plan__body">
61268
+ <header class="plan__header">
61269
+ <h3 class="plan__name">{{ plan.name }}</h3>
61270
+ @if (plan.description) {
61271
+ <p class="plan__description">{{ plan.description }}</p>
61272
+ }
61273
+ </header>
61274
+
61275
+ <div class="plan__price" [class.plan__price--custom]="plan.custom">
61276
+ @if (plan.custom) {
61277
+ <span class="plan__custom-price">{{ customPriceLabel() }}</span>
61278
+ } @else {
61279
+ <span class="plan__amount">{{ priceLabel(plan) }}</span>
61280
+ <span class="plan__period">{{ periodLabel() }}</span>
61281
+ }
61282
+ </div>
61283
+
61284
+ <button
61285
+ class="plan__cta"
61286
+ type="button"
61287
+ [disabled]="plan.disabled || plan.current"
61288
+ (click)="select(plan)"
61289
+ >
61290
+ {{ plan.current ? currentLabel() : plan.ctaLabel || defaultCtaLabel() }}
61291
+ </button>
61292
+
61293
+ @if (plan.summary?.length) {
61294
+ <section class="plan__summary">
61295
+ @if (plan.summaryTitle) {
61296
+ <p class="plan__section-title">{{ plan.summaryTitle }}</p>
61297
+ }
61298
+ <ul>
61299
+ @for (item of plan.summary; track item) {
61300
+ <li>{{ item }}</li>
61301
+ }
61302
+ </ul>
61303
+ </section>
61304
+ }
61305
+
61306
+ @if (plan.features?.length) {
61307
+ <section class="plan__features">
61308
+ <p class="plan__section-title">{{ plan.featuresTitle || 'Incluye' }}</p>
61309
+ <ul>
61310
+ @for (feature of plan.features; track feature.label) {
61311
+ <li [class.is-excluded]="feature.included === false">
61312
+ <span class="check" aria-hidden="true">
61313
+ @if (feature.included === false) {
61314
+ <svg viewBox="0 0 24 24" fill="none">
61315
+ <path d="M6 6l12 12M18 6L6 18" />
61316
+ </svg>
61317
+ } @else {
61318
+ <svg viewBox="0 0 24 24" fill="none">
61319
+ <path d="M20 6L9 17l-5-5" />
61320
+ </svg>
61321
+ }
61322
+ </span>
61323
+ <span>{{ feature.label }}</span>
61324
+ </li>
61325
+ }
61326
+ </ul>
61327
+ </section>
61328
+ }
61329
+
61330
+ @if (plan.limits?.length) {
61331
+ <section class="plan__limits">
61332
+ @for (limit of plan.limits; track limit.label) {
61333
+ <div>
61334
+ <span>{{ limit.label }}</span>
61335
+ <strong>{{ limit.value }}</strong>
61336
+ </div>
61337
+ }
61338
+ </section>
61339
+ }
61340
+ </div>
61341
+ </article>
61342
+ }
61343
+ </div>
61344
+ }
61345
+ </section>
61346
+ `, styles: [":host{display:block}.pricing{color:var(--ion-text-color, #2f2940)}.pricing__empty{margin:0;color:var(--ion-color-medium, #6f6a7c)}.pricing__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr));gap:clamp(14px,2vw,22px);align-items:stretch}.plan{position:relative;min-width:0;border:1px solid var(--vds-pricing-border, var(--ion-color-light-shade, #dedbe6));border-radius:var(--vds-pricing-radius, 18px);background:var(--vds-pricing-bg, var(--ion-card-background, #ffffff));box-shadow:var(--vds-pricing-shadow, 0 8px 22px rgba(14, 4, 32, .08));overflow:hidden}.plan--highlighted{border-color:var(--vds-pricing-accent, var(--ion-color-primary, #ff00b2));box-shadow:var(--vds-pricing-featured-shadow, 0 14px 34px rgba(255, 0, 178, .16))}.plan--disabled{opacity:.72}.plan__ribbon{min-height:42px;display:grid;place-items:center;padding:8px 16px;background:var(--vds-pricing-accent, var(--ion-color-primary, #ff00b2));color:var(--vds-pricing-accent-contrast, var(--ion-color-primary-contrast, #ffffff));font-size:.8rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.plan--current .plan__ribbon{background:var(--ion-color-medium, #6f6a7c)}.plan__body{min-height:100%;display:flex;flex-direction:column;gap:22px;padding:clamp(20px,2.4vw,30px)}.plan__header{display:grid;gap:8px}.plan__name{margin:0;color:var(--vds-pricing-title, var(--ion-text-color, #2f2940));font-size:clamp(1.35rem,1.8vw,1.75rem);line-height:1.05;font-weight:850}.plan__description{min-height:44px;margin:0;color:var(--ion-color-medium, #6f6a7c);font-size:.95rem;line-height:1.45}.plan__price{display:flex;align-items:baseline;gap:8px;min-height:48px}.plan__amount{color:var(--vds-pricing-accent, var(--ion-color-primary, #ff00b2));font-size:clamp(2rem,4vw,3.25rem);line-height:1;font-weight:900;overflow-wrap:anywhere}.plan__period,.plan__custom-price{color:var(--ion-color-medium, #6f6a7c);font-size:.95rem;line-height:1.4}.plan__custom-price{color:var(--ion-text-color, #2f2940);font-weight:800}.plan__cta{width:100%;min-height:48px;border:0;border-radius:999px;padding:12px 20px;background:var(--vds-pricing-cta-bg, #2b1236);color:var(--vds-pricing-cta-color, #ffffff);font:inherit;font-weight:800;cursor:pointer;transition:transform .14s ease,opacity .14s ease}.plan--highlighted .plan__cta{background:var(--vds-pricing-accent, var(--ion-color-primary, #ff00b2));color:var(--vds-pricing-accent-contrast, var(--ion-color-primary-contrast, #ffffff))}.plan__cta:disabled{cursor:default;opacity:.62}.plan__cta:not(:disabled):hover{transform:translateY(-1px)}.plan__cta:focus-visible{outline:3px solid color-mix(in srgb,var(--vds-pricing-accent, #ff00b2) 45%,transparent);outline-offset:3px}.plan__summary{min-height:190px;padding:18px;border-top:5px solid var(--vds-pricing-accent-soft, color-mix(in srgb, var(--vds-pricing-accent, #ff00b2) 52%, #ffffff));border-radius:12px;background:var(--vds-pricing-soft-bg, color-mix(in srgb, var(--vds-pricing-accent, #ff00b2) 7%, var(--ion-card-background, #ffffff)))}.plan__section-title{margin:0 0 12px;color:var(--ion-color-medium, #6f6a7c);font-size:.78rem;font-weight:850;letter-spacing:.04em;text-transform:uppercase}.plan__summary ul,.plan__features ul{list-style:none;margin:0;padding:0;display:grid;gap:10px}.plan__summary li{position:relative;padding-left:18px;color:var(--ion-text-color, #2f2940);font-size:.95rem;line-height:1.35}.plan__summary li:before{content:\"\";position:absolute;top:.58em;left:2px;width:5px;height:5px;border-radius:50%;background:var(--vds-pricing-accent, var(--ion-color-primary, #ff00b2))}.plan__features{display:grid;gap:10px}.plan__features li{display:grid;grid-template-columns:20px minmax(0,1fr);gap:10px;align-items:start;color:var(--ion-text-color, #2f2940);font-size:.95rem;line-height:1.35}.plan__features li.is-excluded{color:var(--ion-color-medium, #6f6a7c);text-decoration:line-through}.check{width:20px;height:20px;display:grid;place-items:center;border-radius:50%;background:var(--vds-pricing-accent, var(--ion-color-primary, #ff00b2));color:var(--vds-pricing-accent-contrast, #ffffff)}.is-excluded .check{background:var(--ion-color-medium, #6f6a7c)}.check svg{width:13px;height:13px;stroke:currentColor;stroke-width:2.8;stroke-linecap:round;stroke-linejoin:round}.plan__limits{display:grid;gap:8px;margin-top:auto;padding-top:8px}.plan__limits div{display:flex;justify-content:space-between;gap:12px;color:var(--ion-color-medium, #6f6a7c);font-size:.86rem}.plan__limits strong{color:var(--ion-text-color, #2f2940);text-align:right;overflow-wrap:anywhere}@media (max-width: 700px){.plan__description,.plan__summary{min-height:0}}\n"] }]
61347
+ }], propDecorators: { props: [{
61348
+ type: Input,
61349
+ args: [{ required: true }]
61350
+ }], onSelect: [{
61351
+ type: Output
61352
+ }] } });
61353
+
60960
61354
  class SimpleComponent {
60961
61355
  constructor() {
60962
61356
  this.onClick = new EventEmitter();
@@ -74802,5 +75196,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
74802
75196
  * Generated bundle index. Do not edit.
74803
75197
  */
74804
75198
 
74805
- 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, ChatComposerComponent, ChatInputComponent, ChatWindowComponent, CheckInputComponent, CheckboxRadioInputComponent, ChipGroupComponent, CodeDisplayComponent, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, ContainerComponent, ContentLoaderComponent, ContentReactionComponent, ContentService, ContentTransformer, ConversationListItemComponent, ConversationService, CookieBannerComponent, CookieSettingsComponent, 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_POST_UPDATE_GRACE_MS, 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, EntityCardComponent, EntityFeedService, ExpandableTextComponent, FEATURES_LIST_DEFAULTS, FUN_MODAL_DEFAULTS, FabComponent, FaqComponent, FeaturesListComponent, FeedbackFormComponent, FeedbackService, FieldListComponent, FileInputComponent, FirebaseService, FirestoreCollectionFactory, FirestoreService, FontSizeOption, FontSizeSelectorComponent, FontSizeService, FooterComponent, FooterLinksComponent, FormComponent, FormFieldComponent, FormSkeletonComponent, FunHeaderComponent, FunModalComponent, GlassComponent, GlowCardComponent, GlowComponent, GridSkeletonComponent, HANDOFF_ROUTE_PARAM, HANDOFF_TOKEN_PARAM, HandoffService, HapticsService, HasPermissionDirective, HeaderActionsService, HeaderComponent, HintComponent, HorizontalScrollComponent, HrefComponent, HtmlViewerModalComponent, 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, KNOWN_ROUTES, LANG_STORAGE_KEY$1 as LANG_STORAGE_KEY, LEGAL_CONTENT_CONFIG, LOGGED_IN_HINT_COOKIE, LOGIN_DEFAULTS, LandingSplitComponent, LandingStepsComponent, LanguageSelectorComponent, LanguageSelectorV2Component, LayeredCardComponent, LegalContentService, LegalLinkService, LinkComponent, LinkProcessorService, LinkedProvidersComponent, LinksAccordionComponent, LinksCakeComponent, ListSkeletonComponent, LoadMoreComponent, LoadingDirective, LocalStorageService, LocaleService, LoginAttemptModalComponent, LoginComponent, MEDIA_OBJECT_DEFAULTS, MEMBER_CARD_DEFAULTS, META_SCHEMA_VERSION, METRIC_CARD_DEFAULTS, MODAL_SIZES, MOTIF_KEYS, MOTION, MaintenancePageComponent, MarkdownArticleParserService, MediaObjectComponent, MediaViewerModalComponent, MemberCardComponent, MemberDetailModalComponent, MemberImportModalComponent, MenuComponent, MessageBubbleComponent, 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, OptionCardsComponent, OrgInfoSheetComponent, OrgService, OrgSwitchService, OrganizationViewComponent, PATTERN_MOTIFS, PATTERN_PALETTES, PATTERN_STYLE_CONFIGS, PLATFORM_CONFIGS, POST_UPDATE_TS_KEY, PageContentComponent, PageLinksComponent, PageRefreshService, PageTemplateComponent, PageWavesComponent, PageWrapperComponent, PaginationComponent, PaginationService, PasswordInputComponent, PatternComponent, PdfService, PermissionCatalogService, PermissionSelectorComponent, PermissionsModalComponent, PermissionsViewComponent, PhoneInputComponent, PillComponent, PinInputComponent, PlainCodeBoxComponent, PopoverSelectorComponent, PreferencesService, PreferencesViewComponent, PresetService, PriceTagComponent, ProcessLinksPipe, ProfileContentComponent, ProfileModalComponent, ProfileSkeletonComponent, ProfileViewComponent, ProgressBarComponent, ProgressRingComponent, ProgressStatusComponent, PrompterComponent, QR_PRESETS, QrCodeComponent, QrGeneratorService, QrScannerComponent, QueryBuilder, QuoteBoxComponent, REQUEST_STATUSES, RadioInputComponent, RangeInputComponent, RatingComponent, ReactionBarComponent, ReactionsService, RefresherComponent, RequestFirestoreService, RequestFormBuilderService, RequestFormComponent, RequestModalComponent, 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, SectionHeaderComponent, SecurityViewComponent, SegmentControlComponent, SelectSearchComponent, SessionListModalComponent, SessionService, SettingsHubComponent, ShareButtonsComponent, ShareProfileModalComponent, SimpleComponent, SkeletonComponent, SkeletonLayoutComponent, SkeletonService, SplashComponent, SplashScreenService, StatsBarComponent, StatsCardComponent, StepperComponent, StorageService, SwipeCarouselComponent, SwitchOrgModalComponent, TRI_KEYS, TabbedContentComponent, TableSkeletonComponent, TabsComponent, Terminal404Component, TestimonialCardComponent, TestimonialCarouselComponent, TextComponent, TextInputComponent, TextareaInputComponent, ThemeOption, ThemeService, ThreadPanelComponent, TicketCardComponent, TicketCardImageService, TimelineComponent, TitleBlockComponent, TitleComponent, ToastService, ToggleInputComponent, TokenService, ToolbarActionType, ToolbarComponent, TransferOwnershipModalComponent, TranslatePipe, TypedCollection, TypingIndicatorComponent, UPDATE_BANNER_DEFAULT_CONTENT, UPDATE_BANNER_I18N_NAMESPACE, UpdateBannerComponent, UsageMetersComponent, UsageService, UserAvatarComponent, UsernameInputComponent, VALTECH_ADS_CONFIG, VALTECH_APP_CONFIG, VALTECH_APP_VERSION, VALTECH_AUTH_CONFIG, VALTECH_CHAT_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_REACTIONS_CONFIG, VALTECH_SETTINGS_MENU_LINKS, VALTECH_SITE_PATHS, VALTECH_SOCIAL_LINKS, VALTECH_SPLASH_SCREEN, VALTECH_WEB_BASE_URLS, VALTECH_WHATSAPP_CONFIG, VERSION, ValtechErrorService, VerifyViewComponent, WhatsappFabComponent, WhatsappService, WizardComponent, WizardFooterComponent, WorkflowService, applyDefaultValueToControl, authGuard, authInterceptor, authPasswordValidator, beautifyLegalArticle, blogPost, buildCompanyFooterProps, buildFooterLinks, buildLegalLinkResolver, buildPath, buildSettingsCards, button, canSubmitRequestType, collections, connectPageRefresh, createErrorStateProps, createFirebaseConfig, createGlowCardProps, createInitialPaginationState, createNumberFromToField, createPageState, createPermissionLabeler, createRefreshableStream, createTitleProps, docs, errorLoggingInterceptor, extractPathParams, formatClockTime, formatDateSeparator, formatRelativeTime, generatePatternTiles, generateRandomTile, getAppInfo, getAppVersion, getCollectionPath, getDocumentId, getTimeOfDayKey, goToTop, groupPermissionsByScope, guestGuard, hasEmulators, iconButton, interpretError, isAtEnd, isCollectionPath, isDocumentPath, isEmulatorMode, isIonicColor, isKnownRoute, isValidPath, joinPath, maxLength, mulberry32, news, parseMarkdownArticle, permissionGuard, permissionGuardFromRoute, provideLegalContent, provideSplashScreen, provideValtechAboutRoutes, provideValtechAccountRoutes, provideValtechAds, provideValtechApiKeysRoutes, provideValtechAppConfig, provideValtechAppVersion, provideValtechAppVersionHttp, provideValtechAuth, provideValtechAuthInterceptor, provideValtechChat, provideValtechContent, provideValtechDebugConsole, provideValtechDonations, provideValtechErrorHandling, provideValtechFeedback, provideValtechFirebase, provideValtechI18n, provideValtechLegal, provideValtechNotificationPreferencesRoutes, provideValtechNotificationsRoutes, provideValtechOrganizationRoutes, provideValtechPermissionsRoutes, provideValtechPreferencesRoutes, provideValtechPresets, provideValtechProfileRoutes, provideValtechReactions, provideValtechSecurityRoutes, provideValtechSettingsRoutes, provideValtechSite, provideValtechSkeleton, provideValtechWhatsapp, query, rbacGuard, renderPatternSvgInner, replaceSpecialChars, requestSubmitMode, resolveColor, resolveInputDefaultValue, resolveIonicColor, resolveWebBaseUrl, roleGuard, selectableRequestTypes, storagePaths, superAdminGuard, toArticle, validateRoutes };
75199
+ 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, ChatComposerComponent, ChatInputComponent, ChatWindowComponent, CheckInputComponent, CheckboxRadioInputComponent, ChipGroupComponent, CodeDisplayComponent, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, ContainerComponent, ContentLoaderComponent, ContentReactionComponent, ContentService, ContentTransformer, ConversationListItemComponent, ConversationService, CookieBannerComponent, CookieSettingsComponent, 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_POST_UPDATE_GRACE_MS, 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, EntityCardComponent, EntityFeedService, ExpandableTextComponent, FEATURES_LIST_DEFAULTS, FUN_MODAL_DEFAULTS, FabComponent, FaqComponent, FeaturesListComponent, FeedbackFormComponent, FeedbackService, FieldListComponent, FileInputComponent, FirebaseService, FirestoreCollectionFactory, FirestoreService, FontSizeOption, FontSizeSelectorComponent, FontSizeService, FooterComponent, FooterLinksComponent, FormComponent, FormFieldComponent, FormSkeletonComponent, FunHeaderComponent, FunModalComponent, GlassComponent, GlowCardComponent, GlowComponent, GridSkeletonComponent, HANDOFF_ROUTE_PARAM, HANDOFF_TOKEN_PARAM, HandoffService, HapticsService, HasPermissionDirective, HeaderActionsService, HeaderComponent, HintComponent, HorizontalScrollComponent, HrefComponent, HtmlViewerModalComponent, 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, KNOWN_ROUTES, LANG_STORAGE_KEY$1 as LANG_STORAGE_KEY, LEGAL_CONTENT_CONFIG, LOGGED_IN_HINT_COOKIE, LOGIN_DEFAULTS, LandingSplitComponent, LandingStepsComponent, LanguageSelectorComponent, LanguageSelectorV2Component, LayeredCardComponent, LegalContentService, LegalLinkService, LinkComponent, LinkProcessorService, LinkedProvidersComponent, LinksAccordionComponent, LinksCakeComponent, ListSkeletonComponent, LoadMoreComponent, LoadingDirective, LocalStorageService, LocaleService, LoginAttemptModalComponent, LoginComponent, MEDIA_OBJECT_DEFAULTS, MEMBER_CARD_DEFAULTS, META_SCHEMA_VERSION, METRIC_CARD_DEFAULTS, MODAL_SIZES, MOTIF_KEYS, MOTION, MaintenancePageComponent, MarkdownArticleParserService, MediaObjectComponent, MediaViewerModalComponent, MemberCardComponent, MemberDetailModalComponent, MemberImportModalComponent, MenuComponent, MessageBubbleComponent, 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, OptionCardsComponent, OrgInfoSheetComponent, OrgService, OrgSwitchService, OrganizationViewComponent, PATTERN_MOTIFS, PATTERN_PALETTES, PATTERN_STYLE_CONFIGS, PLATFORM_CONFIGS, POST_UPDATE_TS_KEY, PageContentComponent, PageLinksComponent, PageRefreshService, PageTemplateComponent, PageWavesComponent, PageWrapperComponent, PaginationComponent, PaginationService, PasswordInputComponent, PatternComponent, PdfService, PermissionCatalogService, PermissionSelectorComponent, PermissionsModalComponent, PermissionsViewComponent, PhoneInputComponent, PickerV2Component, PillComponent, PinInputComponent, PlainCodeBoxComponent, PopoverSelectorComponent, PreferencesService, PreferencesViewComponent, PresetService, PriceTagComponent, PricingTableComponent, ProcessLinksPipe, ProfileContentComponent, ProfileModalComponent, ProfileSkeletonComponent, ProfileViewComponent, ProgressBarComponent, ProgressRingComponent, ProgressStatusComponent, PrompterComponent, QR_PRESETS, QrCodeComponent, QrGeneratorService, QrScannerComponent, QueryBuilder, QuoteBoxComponent, REQUEST_STATUSES, RadioInputComponent, RangeInputComponent, RatingComponent, ReactionBarComponent, ReactionsService, RefresherComponent, RequestFirestoreService, RequestFormBuilderService, RequestFormComponent, RequestModalComponent, 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, SectionHeaderComponent, SecurityViewComponent, SegmentControlComponent, SelectSearchComponent, SessionListModalComponent, SessionService, SettingsHubComponent, ShareButtonsComponent, ShareProfileModalComponent, SimpleComponent, SkeletonComponent, SkeletonLayoutComponent, SkeletonService, SplashComponent, SplashScreenService, StatsBarComponent, StatsCardComponent, StepperComponent, StorageService, SwipeCarouselComponent, SwitchOrgModalComponent, TRI_KEYS, TabbedContentComponent, TableSkeletonComponent, TabsComponent, Terminal404Component, TestimonialCardComponent, TestimonialCarouselComponent, TextComponent, TextInputComponent, TextareaInputComponent, ThemeOption, ThemeService, ThreadPanelComponent, TicketCardComponent, TicketCardImageService, TimelineComponent, TitleBlockComponent, TitleComponent, ToastService, ToggleInputComponent, TokenService, ToolbarActionType, ToolbarComponent, TransferOwnershipModalComponent, TranslatePipe, TypedCollection, TypingIndicatorComponent, UPDATE_BANNER_DEFAULT_CONTENT, UPDATE_BANNER_I18N_NAMESPACE, UpdateBannerComponent, UsageMetersComponent, UsageService, UserAvatarComponent, UsernameInputComponent, VALTECH_ADS_CONFIG, VALTECH_APP_CONFIG, VALTECH_APP_VERSION, VALTECH_AUTH_CONFIG, VALTECH_CHAT_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_REACTIONS_CONFIG, VALTECH_SETTINGS_MENU_LINKS, VALTECH_SITE_PATHS, VALTECH_SOCIAL_LINKS, VALTECH_SPLASH_SCREEN, VALTECH_WEB_BASE_URLS, VALTECH_WHATSAPP_CONFIG, VERSION, ValtechErrorService, VerifyViewComponent, WhatsappFabComponent, WhatsappService, WizardComponent, WizardFooterComponent, WorkflowService, applyDefaultValueToControl, authGuard, authInterceptor, authPasswordValidator, beautifyLegalArticle, blogPost, buildCompanyFooterProps, buildFooterLinks, buildLegalLinkResolver, buildPath, buildSettingsCards, button, canSubmitRequestType, collections, connectPageRefresh, createErrorStateProps, createFirebaseConfig, createGlowCardProps, createInitialPaginationState, createNumberFromToField, createPageState, createPermissionLabeler, createRefreshableStream, createTitleProps, docs, errorLoggingInterceptor, extractPathParams, formatClockTime, formatDateSeparator, formatRelativeTime, generatePatternTiles, generateRandomTile, getAppInfo, getAppVersion, getCollectionPath, getDocumentId, getTimeOfDayKey, goToTop, groupPermissionsByScope, guestGuard, hasEmulators, iconButton, interpretError, isAtEnd, isCollectionPath, isDocumentPath, isEmulatorMode, isIonicColor, isKnownRoute, isValidPath, joinPath, maxLength, mulberry32, news, parseMarkdownArticle, permissionGuard, permissionGuardFromRoute, provideLegalContent, provideSplashScreen, provideValtechAboutRoutes, provideValtechAccountRoutes, provideValtechAds, provideValtechApiKeysRoutes, provideValtechAppConfig, provideValtechAppVersion, provideValtechAppVersionHttp, provideValtechAuth, provideValtechAuthInterceptor, provideValtechChat, provideValtechContent, provideValtechDebugConsole, provideValtechDonations, provideValtechErrorHandling, provideValtechFeedback, provideValtechFirebase, provideValtechI18n, provideValtechLegal, provideValtechNotificationPreferencesRoutes, provideValtechNotificationsRoutes, provideValtechOrganizationRoutes, provideValtechPermissionsRoutes, provideValtechPreferencesRoutes, provideValtechPresets, provideValtechProfileRoutes, provideValtechReactions, provideValtechSecurityRoutes, provideValtechSettingsRoutes, provideValtechSite, provideValtechSkeleton, provideValtechWhatsapp, query, rbacGuard, renderPatternSvgInner, replaceSpecialChars, requestSubmitMode, resolveColor, resolveInputDefaultValue, resolveIonicColor, resolveWebBaseUrl, roleGuard, selectableRequestTypes, storagePaths, superAdminGuard, toArticle, validateRoutes };
74806
75200
  //# sourceMappingURL=valtech-components.mjs.map