valtech-components 4.0.256 → 4.0.259

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.256';
60
+ const VERSION = '4.0.259';
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
  }
@@ -71918,6 +72061,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
71918
72061
  */
71919
72062
  const TICKET_CARD_I18N = {
71920
72063
  es: {
72064
+ cardLabel: 'Cartón de bingo',
71921
72065
  folio: 'Folio',
71922
72066
  statusSold: 'Vendida',
71923
72067
  statusCheckedIn: 'Canjeada',
@@ -71927,6 +72071,7 @@ const TICKET_CARD_I18N = {
71927
72071
  copiedUrl: 'Link copiado',
71928
72072
  },
71929
72073
  en: {
72074
+ cardLabel: 'Bingo card',
71930
72075
  folio: 'Folio',
71931
72076
  statusSold: 'Sold',
71932
72077
  statusCheckedIn: 'Checked in',
@@ -72110,7 +72255,7 @@ class TicketCardComponent {
72110
72255
  const url = URL.createObjectURL(blob);
72111
72256
  const a = document.createElement('a');
72112
72257
  a.href = url;
72113
- a.download = `entrada-${p.folio ?? 'bingo'}.png`;
72258
+ a.download = `carton-${p.folio ?? 'bingo'}.png`;
72114
72259
  document.body.appendChild(a);
72115
72260
  a.click();
72116
72261
  document.body.removeChild(a);
@@ -72133,103 +72278,127 @@ class TicketCardComponent {
72133
72278
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TicketCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
72134
72279
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TicketCardComponent, isStandalone: true, selector: "val-ticket-card", inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
72135
72280
  <div class="ticket-card">
72136
- @if (props().title) {
72137
- <div class="ticket-card__title">{{ props().title }}</div>
72138
- }
72139
-
72140
- <div class="ticket-card__qr">
72141
- @if (qr(); as q) {
72142
- <val-qr-code [props]="qrProps(q)" />
72143
- } @else if (failed()) {
72144
- <div class="ticket-card__qr-fallback">{{ tokenShort() }}</div>
72145
- } @else {
72146
- <div class="ticket-card__qr-loading">
72147
- <ion-spinner name="crescent" aria-label="Generando QR" />
72148
- </div>
72281
+ <div class="ticket-card__header">
72282
+ <div class="ticket-card__eyebrow">{{ t('cardLabel') }}</div>
72283
+ @if (props().title) {
72284
+ <div class="ticket-card__title">{{ props().title }}</div>
72149
72285
  }
72150
72286
  </div>
72151
72287
 
72152
- <div class="ticket-card__meta">
72153
- @if (folioText(); as f) {
72154
- <div class="ticket-card__folio">{{ f }}</div>
72155
- }
72156
- @if (props().buyerName) {
72157
- <div class="ticket-card__buyer">{{ props().buyerName }}</div>
72158
- }
72159
- @if (statusLabel(); as s) {
72160
- <span class="ticket-card__badge" [attr.data-status]="status()">{{ s }}</span>
72161
- }
72162
- </div>
72163
-
72164
- @if ((props().showDownload || props().showShare) && qr()) {
72165
- <div class="ticket-card__actions">
72166
- @if (props().showDownload) {
72167
- <ion-button fill="outline" expand="block" [disabled]="downloading()" (click)="downloadCard()">
72168
- <ion-icon name="download-outline" slot="start" />
72169
- {{ props().downloadLabel || t('download') }}
72170
- </ion-button>
72288
+ <div class="ticket-card__body">
72289
+ <div class="ticket-card__qr">
72290
+ @if (qr(); as q) {
72291
+ <val-qr-code [props]="qrProps(q)" />
72292
+ } @else if (failed()) {
72293
+ <div class="ticket-card__qr-fallback">{{ tokenShort() }}</div>
72294
+ } @else {
72295
+ <div class="ticket-card__qr-loading">
72296
+ <ion-spinner name="crescent" aria-label="Generando QR" />
72297
+ </div>
72171
72298
  }
72172
- @if (props().showShare) {
72173
- <ion-button fill="outline" expand="block" [disabled]="sharing()" (click)="shareCard()">
72174
- <ion-icon name="share-outline" slot="start" />
72175
- {{ props().shareLabel || t('share') }}
72176
- </ion-button>
72299
+ </div>
72300
+
72301
+ <div class="ticket-card__perf" aria-hidden="true">
72302
+ <span class="ticket-card__notch ticket-card__notch--left"></span>
72303
+ <span class="ticket-card__notch ticket-card__notch--right"></span>
72304
+ </div>
72305
+
72306
+ <div class="ticket-card__stub">
72307
+ <div class="ticket-card__meta">
72308
+ @if (folioText(); as f) {
72309
+ <div class="ticket-card__folio">{{ f }}</div>
72310
+ }
72311
+ @if (props().buyerName) {
72312
+ <div class="ticket-card__buyer">{{ props().buyerName }}</div>
72313
+ }
72314
+ @if (statusLabel(); as s) {
72315
+ <span class="ticket-card__badge" [attr.data-status]="status()">{{ s }}</span>
72316
+ }
72317
+ </div>
72318
+
72319
+ @if ((props().showDownload || props().showShare) && qr()) {
72320
+ <div class="ticket-card__actions">
72321
+ @if (props().showDownload) {
72322
+ <ion-button fill="outline" expand="block" [disabled]="downloading()" (click)="downloadCard()">
72323
+ <ion-icon name="download-outline" slot="start" />
72324
+ {{ props().downloadLabel || t('download') }}
72325
+ </ion-button>
72326
+ }
72327
+ @if (props().showShare) {
72328
+ <ion-button fill="outline" expand="block" [disabled]="sharing()" (click)="shareCard()">
72329
+ <ion-icon name="share-outline" slot="start" />
72330
+ {{ props().shareLabel || t('share') }}
72331
+ </ion-button>
72332
+ }
72333
+ </div>
72177
72334
  }
72178
72335
  </div>
72179
- }
72336
+ </div>
72180
72337
  </div>
72181
- `, isInline: true, styles: ["@charset \"UTF-8\";:host{display:block}.ticket-card{display:flex;flex-direction:column;align-items:center;gap:12px;padding:20px;border:1px solid var(--ion-color-light-shade, #e0e0e0);border-radius:16px;background:var(--ion-card-background, #ffffff);max-width:320px;margin:0 auto}.ticket-card__title{font-size:1rem;font-weight:700;color:var(--ion-color-dark);text-align:center}.ticket-card__qr{display:flex;align-items:center;justify-content:center;min-height:200px}.ticket-card__qr-loading{display:flex;align-items:center;justify-content:center;width:200px;height:200px}.ticket-card__qr-fallback{font-family:monospace;font-size:.75rem;color:var(--ion-color-medium);word-break:break-all;text-align:center;padding:16px}.ticket-card__meta{display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center}.ticket-card__folio{font-size:1rem;font-weight:700;color:var(--ion-color-dark)}.ticket-card__buyer{font-size:.875rem;color:var(--ion-color-medium)}.ticket-card__badge{margin-top:4px;font-size:.75rem;font-weight:600;padding:3px 12px;border-radius:999px;background:var(--ion-color-medium);color:var(--ion-color-medium-contrast, #fff);white-space:nowrap}.ticket-card__badge[data-status=sold]{background:var(--ion-color-success, #2dd36f);color:var(--ion-color-success-contrast, #fff)}.ticket-card__badge[data-status=checkedIn]{background:var(--ion-color-medium);color:var(--ion-color-medium-contrast, #fff)}.ticket-card__actions{width:100%;display:flex;flex-direction:column;gap:8px}.ticket-card__actions ion-button{--border-radius: 10px;margin:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: QrCodeComponent, selector: "val-qr-code", inputs: ["props"], outputs: ["actionComplete", "imageLoad", "imageError"] }] }); }
72338
+ `, isInline: true, styles: [":host{display:block}.ticket-card{--ticket-accent: var(--ion-color-primary, #ff00b2);--ticket-accent-2: #7026df;display:flex;flex-direction:column;width:min(100%,380px);margin:0 auto;overflow:hidden;border:1px solid var(--ion-color-light-shade, #d8d8dd);border-radius:22px;background:var(--ion-card-background, #ffffff);box-shadow:0 18px 50px #1f192d1f}.ticket-card__header{padding:22px 22px 20px;text-align:center;color:#fff;background:linear-gradient(135deg,var(--ticket-accent) 0%,var(--ticket-accent-2) 100%)}.ticket-card__eyebrow{margin-bottom:6px;font-size:.6875rem;font-weight:800;letter-spacing:.14em;line-height:1.2;text-transform:uppercase;opacity:.78}.ticket-card__title{font-size:1.25rem;font-weight:800;line-height:1.18}.ticket-card__body{position:relative;display:flex;flex-direction:column;align-items:stretch;background:radial-gradient(circle at 50% 0,rgba(255,0,178,.08),transparent 36%),var(--ion-card-background, #ffffff)}.ticket-card__qr{display:flex;align-items:center;justify-content:center;min-height:232px;padding:22px 22px 18px}.ticket-card__qr val-qr-code{display:block;padding:10px;border:1px solid rgba(31,25,45,.08);border-radius:18px;background:#fff;box-shadow:0 10px 30px #1f192d14}.ticket-card__qr-loading{display:flex;align-items:center;justify-content:center;width:220px;height:220px;border-radius:18px;background:#fff}.ticket-card__qr-fallback{padding:18px;border-radius:14px;background:#6b667514;color:var(--ion-color-medium, #6b6675);font-family:monospace;font-size:.75rem;line-height:1.5;text-align:center;word-break:break-all}.ticket-card__perf{position:relative;margin:0 22px;border-top:2px dashed rgba(107,102,117,.28)}.ticket-card__notch{position:absolute;top:-14px;width:26px;height:26px;border-radius:50%;background:var(--ion-background-color, #f8f8f8);box-shadow:inset 0 0 0 1px #1f192d14}.ticket-card__notch--left{left:-36px}.ticket-card__notch--right{right:-36px}.ticket-card__stub{display:flex;flex-direction:column;gap:18px;padding:18px 22px 22px}.ticket-card__meta{display:flex;flex-direction:column;align-items:center;gap:6px;min-width:0;text-align:center}.ticket-card__folio{color:var(--ion-color-dark, #2f2b38);font-size:1.45rem;font-weight:850;line-height:1.15}.ticket-card__buyer{max-width:100%;overflow:hidden;color:var(--ion-color-medium, #6b6675);font-size:.9375rem;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}.ticket-card__badge{display:inline-flex;align-items:center;min-height:30px;margin-top:2px;padding:5px 14px;border-radius:999px;background:var(--ion-color-medium, #6b6675);color:var(--ion-color-medium-contrast, #ffffff);font-size:.8125rem;font-weight:800;line-height:1;white-space:nowrap}.ticket-card__badge[data-status=sold]{background:var(--ion-color-success, #16a34a);color:var(--ion-color-success-contrast, #ffffff)}.ticket-card__badge[data-status=checkedIn]{background:var(--ion-color-medium, #6b6675);color:var(--ion-color-medium-contrast, #ffffff)}.ticket-card__actions{display:grid;gap:10px;width:100%}.ticket-card__actions ion-button{min-height:48px;margin:0;font-weight:800;--border-radius: 14px;--border-width: 1.5px}@media (max-width: 420px){.ticket-card{width:100%;border-radius:20px}.ticket-card__qr{min-height:216px;padding-inline:16px}.ticket-card__stub{padding-inline:16px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: QrCodeComponent, selector: "val-qr-code", inputs: ["props"], outputs: ["actionComplete", "imageLoad", "imageError"] }] }); }
72182
72339
  }
72183
72340
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TicketCardComponent, decorators: [{
72184
72341
  type: Component,
72185
72342
  args: [{ selector: 'val-ticket-card', standalone: true, imports: [CommonModule, IonButton, IonIcon, IonSpinner, QrCodeComponent], template: `
72186
72343
  <div class="ticket-card">
72187
- @if (props().title) {
72188
- <div class="ticket-card__title">{{ props().title }}</div>
72189
- }
72190
-
72191
- <div class="ticket-card__qr">
72192
- @if (qr(); as q) {
72193
- <val-qr-code [props]="qrProps(q)" />
72194
- } @else if (failed()) {
72195
- <div class="ticket-card__qr-fallback">{{ tokenShort() }}</div>
72196
- } @else {
72197
- <div class="ticket-card__qr-loading">
72198
- <ion-spinner name="crescent" aria-label="Generando QR" />
72199
- </div>
72344
+ <div class="ticket-card__header">
72345
+ <div class="ticket-card__eyebrow">{{ t('cardLabel') }}</div>
72346
+ @if (props().title) {
72347
+ <div class="ticket-card__title">{{ props().title }}</div>
72200
72348
  }
72201
72349
  </div>
72202
72350
 
72203
- <div class="ticket-card__meta">
72204
- @if (folioText(); as f) {
72205
- <div class="ticket-card__folio">{{ f }}</div>
72206
- }
72207
- @if (props().buyerName) {
72208
- <div class="ticket-card__buyer">{{ props().buyerName }}</div>
72209
- }
72210
- @if (statusLabel(); as s) {
72211
- <span class="ticket-card__badge" [attr.data-status]="status()">{{ s }}</span>
72212
- }
72213
- </div>
72214
-
72215
- @if ((props().showDownload || props().showShare) && qr()) {
72216
- <div class="ticket-card__actions">
72217
- @if (props().showDownload) {
72218
- <ion-button fill="outline" expand="block" [disabled]="downloading()" (click)="downloadCard()">
72219
- <ion-icon name="download-outline" slot="start" />
72220
- {{ props().downloadLabel || t('download') }}
72221
- </ion-button>
72351
+ <div class="ticket-card__body">
72352
+ <div class="ticket-card__qr">
72353
+ @if (qr(); as q) {
72354
+ <val-qr-code [props]="qrProps(q)" />
72355
+ } @else if (failed()) {
72356
+ <div class="ticket-card__qr-fallback">{{ tokenShort() }}</div>
72357
+ } @else {
72358
+ <div class="ticket-card__qr-loading">
72359
+ <ion-spinner name="crescent" aria-label="Generando QR" />
72360
+ </div>
72222
72361
  }
72223
- @if (props().showShare) {
72224
- <ion-button fill="outline" expand="block" [disabled]="sharing()" (click)="shareCard()">
72225
- <ion-icon name="share-outline" slot="start" />
72226
- {{ props().shareLabel || t('share') }}
72227
- </ion-button>
72362
+ </div>
72363
+
72364
+ <div class="ticket-card__perf" aria-hidden="true">
72365
+ <span class="ticket-card__notch ticket-card__notch--left"></span>
72366
+ <span class="ticket-card__notch ticket-card__notch--right"></span>
72367
+ </div>
72368
+
72369
+ <div class="ticket-card__stub">
72370
+ <div class="ticket-card__meta">
72371
+ @if (folioText(); as f) {
72372
+ <div class="ticket-card__folio">{{ f }}</div>
72373
+ }
72374
+ @if (props().buyerName) {
72375
+ <div class="ticket-card__buyer">{{ props().buyerName }}</div>
72376
+ }
72377
+ @if (statusLabel(); as s) {
72378
+ <span class="ticket-card__badge" [attr.data-status]="status()">{{ s }}</span>
72379
+ }
72380
+ </div>
72381
+
72382
+ @if ((props().showDownload || props().showShare) && qr()) {
72383
+ <div class="ticket-card__actions">
72384
+ @if (props().showDownload) {
72385
+ <ion-button fill="outline" expand="block" [disabled]="downloading()" (click)="downloadCard()">
72386
+ <ion-icon name="download-outline" slot="start" />
72387
+ {{ props().downloadLabel || t('download') }}
72388
+ </ion-button>
72389
+ }
72390
+ @if (props().showShare) {
72391
+ <ion-button fill="outline" expand="block" [disabled]="sharing()" (click)="shareCard()">
72392
+ <ion-icon name="share-outline" slot="start" />
72393
+ {{ props().shareLabel || t('share') }}
72394
+ </ion-button>
72395
+ }
72396
+ </div>
72228
72397
  }
72229
72398
  </div>
72230
- }
72399
+ </div>
72231
72400
  </div>
72232
- `, styles: ["@charset \"UTF-8\";:host{display:block}.ticket-card{display:flex;flex-direction:column;align-items:center;gap:12px;padding:20px;border:1px solid var(--ion-color-light-shade, #e0e0e0);border-radius:16px;background:var(--ion-card-background, #ffffff);max-width:320px;margin:0 auto}.ticket-card__title{font-size:1rem;font-weight:700;color:var(--ion-color-dark);text-align:center}.ticket-card__qr{display:flex;align-items:center;justify-content:center;min-height:200px}.ticket-card__qr-loading{display:flex;align-items:center;justify-content:center;width:200px;height:200px}.ticket-card__qr-fallback{font-family:monospace;font-size:.75rem;color:var(--ion-color-medium);word-break:break-all;text-align:center;padding:16px}.ticket-card__meta{display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center}.ticket-card__folio{font-size:1rem;font-weight:700;color:var(--ion-color-dark)}.ticket-card__buyer{font-size:.875rem;color:var(--ion-color-medium)}.ticket-card__badge{margin-top:4px;font-size:.75rem;font-weight:600;padding:3px 12px;border-radius:999px;background:var(--ion-color-medium);color:var(--ion-color-medium-contrast, #fff);white-space:nowrap}.ticket-card__badge[data-status=sold]{background:var(--ion-color-success, #2dd36f);color:var(--ion-color-success-contrast, #fff)}.ticket-card__badge[data-status=checkedIn]{background:var(--ion-color-medium);color:var(--ion-color-medium-contrast, #fff)}.ticket-card__actions{width:100%;display:flex;flex-direction:column;gap:8px}.ticket-card__actions ion-button{--border-radius: 10px;margin:0}\n"] }]
72401
+ `, styles: [":host{display:block}.ticket-card{--ticket-accent: var(--ion-color-primary, #ff00b2);--ticket-accent-2: #7026df;display:flex;flex-direction:column;width:min(100%,380px);margin:0 auto;overflow:hidden;border:1px solid var(--ion-color-light-shade, #d8d8dd);border-radius:22px;background:var(--ion-card-background, #ffffff);box-shadow:0 18px 50px #1f192d1f}.ticket-card__header{padding:22px 22px 20px;text-align:center;color:#fff;background:linear-gradient(135deg,var(--ticket-accent) 0%,var(--ticket-accent-2) 100%)}.ticket-card__eyebrow{margin-bottom:6px;font-size:.6875rem;font-weight:800;letter-spacing:.14em;line-height:1.2;text-transform:uppercase;opacity:.78}.ticket-card__title{font-size:1.25rem;font-weight:800;line-height:1.18}.ticket-card__body{position:relative;display:flex;flex-direction:column;align-items:stretch;background:radial-gradient(circle at 50% 0,rgba(255,0,178,.08),transparent 36%),var(--ion-card-background, #ffffff)}.ticket-card__qr{display:flex;align-items:center;justify-content:center;min-height:232px;padding:22px 22px 18px}.ticket-card__qr val-qr-code{display:block;padding:10px;border:1px solid rgba(31,25,45,.08);border-radius:18px;background:#fff;box-shadow:0 10px 30px #1f192d14}.ticket-card__qr-loading{display:flex;align-items:center;justify-content:center;width:220px;height:220px;border-radius:18px;background:#fff}.ticket-card__qr-fallback{padding:18px;border-radius:14px;background:#6b667514;color:var(--ion-color-medium, #6b6675);font-family:monospace;font-size:.75rem;line-height:1.5;text-align:center;word-break:break-all}.ticket-card__perf{position:relative;margin:0 22px;border-top:2px dashed rgba(107,102,117,.28)}.ticket-card__notch{position:absolute;top:-14px;width:26px;height:26px;border-radius:50%;background:var(--ion-background-color, #f8f8f8);box-shadow:inset 0 0 0 1px #1f192d14}.ticket-card__notch--left{left:-36px}.ticket-card__notch--right{right:-36px}.ticket-card__stub{display:flex;flex-direction:column;gap:18px;padding:18px 22px 22px}.ticket-card__meta{display:flex;flex-direction:column;align-items:center;gap:6px;min-width:0;text-align:center}.ticket-card__folio{color:var(--ion-color-dark, #2f2b38);font-size:1.45rem;font-weight:850;line-height:1.15}.ticket-card__buyer{max-width:100%;overflow:hidden;color:var(--ion-color-medium, #6b6675);font-size:.9375rem;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}.ticket-card__badge{display:inline-flex;align-items:center;min-height:30px;margin-top:2px;padding:5px 14px;border-radius:999px;background:var(--ion-color-medium, #6b6675);color:var(--ion-color-medium-contrast, #ffffff);font-size:.8125rem;font-weight:800;line-height:1;white-space:nowrap}.ticket-card__badge[data-status=sold]{background:var(--ion-color-success, #16a34a);color:var(--ion-color-success-contrast, #ffffff)}.ticket-card__badge[data-status=checkedIn]{background:var(--ion-color-medium, #6b6675);color:var(--ion-color-medium-contrast, #ffffff)}.ticket-card__actions{display:grid;gap:10px;width:100%}.ticket-card__actions ion-button{min-height:48px;margin:0;font-weight:800;--border-radius: 14px;--border-width: 1.5px}@media (max-width: 420px){.ticket-card{width:100%;border-radius:20px}.ticket-card__qr{min-height:216px;padding-inline:16px}.ticket-card__stub{padding-inline:16px}}\n"] }]
72233
72402
  }], ctorParameters: () => [] });
72234
72403
 
72235
72404
  /**
@@ -74776,5 +74945,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
74776
74945
  * Generated bundle index. Do not edit.
74777
74946
  */
74778
74947
 
74779
- 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 };
74948
+ 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, 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 };
74780
74949
  //# sourceMappingURL=valtech-components.mjs.map