valtech-components 4.0.117 → 4.0.118

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.
@@ -56,7 +56,7 @@ import { BrowserMultiFormatReader } from '@zxing/browser';
56
56
  * Current version of valtech-components.
57
57
  * This is automatically updated during the publish process.
58
58
  */
59
- const VERSION = '4.0.117';
59
+ const VERSION = '4.0.118';
60
60
 
61
61
  // Control de estado de refresco (singleton a nivel de módulo)
62
62
  let isRefreshing = false;
@@ -58567,11 +58567,16 @@ function makeQuoteOrCallout(block, labels) {
58567
58567
  };
58568
58568
  }
58569
58569
  function makeNote(kind, text, labels) {
58570
+ // NOTE es el callout neutro (caja de contenido sin etiqueta de severidad): se
58571
+ // renderiza SIN prefijo. Los demás tipos (TIP/INFO/WARNING/CAUTION/IMPORTANT)
58572
+ // sí muestran su label porque comunica categoría/severidad. El notes-box no
58573
+ // renderiza header cuando prefix es vacío (`@if (props.prefix)`).
58574
+ const prefix = kind === 'NOTE' ? '' : `${labels[kind]}:`;
58570
58575
  return {
58571
58576
  type: 'note',
58572
58577
  props: {
58573
58578
  text,
58574
- prefix: `${labels[kind]}:`,
58579
+ prefix,
58575
58580
  color: CALLOUT_COLORS[kind],
58576
58581
  textColor: 'dark',
58577
58582
  size: 'medium',
@@ -60100,6 +60105,185 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
60100
60105
  // ValtechConfig and LangProvider have been removed in v3.0.0
60101
60106
  // Use LocaleService for language management instead
60102
60107
 
60108
+ const CANVAS_WIDTH = 560;
60109
+ const HEADER_H = 160;
60110
+ const QR_ZONE_H = 380;
60111
+ const FOOTER_H = 240;
60112
+ const CANVAS_HEIGHT = HEADER_H + QR_ZONE_H + FOOTER_H;
60113
+ const QR_SIZE = 280;
60114
+ const DEFAULT_BRAND_COLOR = '#9b1fde';
60115
+ const DEFAULT_BRAND_COLOR_TO = '#c93075';
60116
+ const FONT_STACK = 'Khula, Arial, sans-serif';
60117
+ class TicketCardImageService {
60118
+ async generate(config) {
60119
+ const width = config.width ?? CANVAS_WIDTH;
60120
+ let canvas;
60121
+ let ctx;
60122
+ if (typeof OffscreenCanvas !== 'undefined') {
60123
+ canvas = new OffscreenCanvas(width, CANVAS_HEIGHT);
60124
+ ctx = canvas.getContext('2d');
60125
+ }
60126
+ else {
60127
+ canvas = document.createElement('canvas');
60128
+ canvas.width = width;
60129
+ canvas.height = CANVAS_HEIGHT;
60130
+ ctx = canvas.getContext('2d');
60131
+ }
60132
+ await this.drawHeader(ctx, config, width);
60133
+ await this.drawQrZone(ctx, config, width);
60134
+ this.drawFooter(ctx, config, width);
60135
+ if (canvas instanceof OffscreenCanvas) {
60136
+ return canvas.convertToBlob({ type: 'image/png' });
60137
+ }
60138
+ return new Promise((resolve, reject) => {
60139
+ canvas.toBlob(blob => {
60140
+ if (blob) {
60141
+ resolve(blob);
60142
+ }
60143
+ else {
60144
+ reject(new Error('Canvas toBlob returned null'));
60145
+ }
60146
+ }, 'image/png');
60147
+ });
60148
+ }
60149
+ async share(config, shareTitle) {
60150
+ if (!navigator.share || !navigator.canShare) {
60151
+ return false;
60152
+ }
60153
+ let blob;
60154
+ try {
60155
+ blob = await this.generate(config);
60156
+ }
60157
+ catch {
60158
+ return false;
60159
+ }
60160
+ const filename = 'entrada.png';
60161
+ const file = new File([blob], filename, { type: 'image/png' });
60162
+ if (!navigator.canShare({ files: [file] })) {
60163
+ return false;
60164
+ }
60165
+ try {
60166
+ await navigator.share({
60167
+ title: shareTitle ?? config.brandName ?? 'Entrada',
60168
+ files: [file],
60169
+ });
60170
+ return true;
60171
+ }
60172
+ catch (err) {
60173
+ if (err instanceof DOMException && err.name === 'AbortError') {
60174
+ return false;
60175
+ }
60176
+ return false;
60177
+ }
60178
+ }
60179
+ async drawHeader(ctx, config, width) {
60180
+ const colorFrom = config.brandColor ?? DEFAULT_BRAND_COLOR;
60181
+ const colorTo = config.brandColorTo ?? (config.brandColor ? config.brandColor : DEFAULT_BRAND_COLOR_TO);
60182
+ const grad = ctx.createLinearGradient(0, 0, width, HEADER_H);
60183
+ grad.addColorStop(0, colorFrom);
60184
+ grad.addColorStop(1, colorTo);
60185
+ ctx.fillStyle = grad;
60186
+ ctx.fillRect(0, 0, width, HEADER_H);
60187
+ const logoH = 44;
60188
+ const logoPad = 28;
60189
+ let textY = HEADER_H / 2;
60190
+ if (config.logoUrl) {
60191
+ try {
60192
+ const logoImg = await this.loadImage(config.logoUrl);
60193
+ const ratio = logoImg.width / logoImg.height;
60194
+ const logoW = logoH * ratio;
60195
+ const logoX = logoPad;
60196
+ const logoY = (HEADER_H - logoH) / 2;
60197
+ ctx.drawImage(logoImg, logoX, logoY, logoW, logoH);
60198
+ if (config.brandName) {
60199
+ textY = logoY + logoH + 14;
60200
+ }
60201
+ }
60202
+ catch {
60203
+ // logo failed — render brand name centered as fallback
60204
+ }
60205
+ }
60206
+ if (config.brandName) {
60207
+ ctx.fillStyle = '#ffffff';
60208
+ ctx.font = `bold 1.125rem ${FONT_STACK}`;
60209
+ ctx.textAlign = 'center';
60210
+ ctx.textBaseline = 'middle';
60211
+ ctx.fillText(config.brandName, width / 2, textY, width - logoPad * 2);
60212
+ }
60213
+ }
60214
+ async drawQrZone(ctx, config, width) {
60215
+ const zoneTop = HEADER_H;
60216
+ ctx.fillStyle = '#ffffff';
60217
+ ctx.fillRect(0, zoneTop, width, QR_ZONE_H);
60218
+ const qrX = (width - QR_SIZE) / 2;
60219
+ const qrY = zoneTop + (QR_ZONE_H - QR_SIZE - 28) / 2;
60220
+ try {
60221
+ const qrImg = await this.loadImage(config.qrDataUrl);
60222
+ ctx.drawImage(qrImg, qrX, qrY, QR_SIZE, QR_SIZE);
60223
+ }
60224
+ catch {
60225
+ ctx.strokeStyle = '#e0e0e0';
60226
+ ctx.strokeRect(qrX, qrY, QR_SIZE, QR_SIZE);
60227
+ }
60228
+ ctx.fillStyle = '#92949c';
60229
+ ctx.font = `0.75rem ${FONT_STACK}`;
60230
+ ctx.textAlign = 'center';
60231
+ ctx.textBaseline = 'top';
60232
+ ctx.fillText('Escanea para verificar', width / 2, qrY + QR_SIZE + 10);
60233
+ }
60234
+ drawFooter(ctx, config, width) {
60235
+ const footerTop = HEADER_H + QR_ZONE_H;
60236
+ ctx.fillStyle = '#ffffff';
60237
+ ctx.fillRect(0, footerTop, width, FOOTER_H);
60238
+ const colorFrom = config.brandColor ?? DEFAULT_BRAND_COLOR;
60239
+ ctx.fillStyle = colorFrom;
60240
+ ctx.fillRect(0, footerTop, width, 3);
60241
+ let contentY = footerTop + 40;
60242
+ if (config.folio !== undefined && config.folio !== null && config.folio !== '') {
60243
+ const label = config.folioLabel ?? 'Entrada';
60244
+ const folioText = `${label} #${config.folio}`;
60245
+ ctx.fillStyle = '#1a0b2e';
60246
+ ctx.font = `bold 2.5rem ${FONT_STACK}`;
60247
+ ctx.textAlign = 'center';
60248
+ ctx.textBaseline = 'top';
60249
+ ctx.fillText(folioText, width / 2, contentY, width - 40);
60250
+ contentY += 56;
60251
+ }
60252
+ if (config.buyerName) {
60253
+ ctx.fillStyle = '#6b6675';
60254
+ ctx.font = `1.125rem ${FONT_STACK}`;
60255
+ ctx.textAlign = 'center';
60256
+ ctx.textBaseline = 'top';
60257
+ ctx.fillText(config.buyerName, width / 2, contentY, width - 40);
60258
+ }
60259
+ ctx.fillStyle = '#c0c0c0';
60260
+ ctx.font = `0.625rem ${FONT_STACK}`;
60261
+ ctx.textAlign = 'right';
60262
+ ctx.textBaseline = 'bottom';
60263
+ ctx.fillText('Valtech', width - 16, footerTop + FOOTER_H - 12);
60264
+ }
60265
+ loadImage(src) {
60266
+ if (typeof createImageBitmap !== 'undefined' && src.startsWith('data:')) {
60267
+ return fetch(src)
60268
+ .then(r => r.blob())
60269
+ .then(b => createImageBitmap(b));
60270
+ }
60271
+ return new Promise((resolve, reject) => {
60272
+ const img = new Image();
60273
+ img.crossOrigin = 'anonymous';
60274
+ img.onload = () => resolve(img);
60275
+ img.onerror = () => reject(new Error(`Failed to load image: ${src}`));
60276
+ img.src = src;
60277
+ });
60278
+ }
60279
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TicketCardImageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
60280
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TicketCardImageService, providedIn: 'root' }); }
60281
+ }
60282
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TicketCardImageService, decorators: [{
60283
+ type: Injectable,
60284
+ args: [{ providedIn: 'root' }]
60285
+ }] });
60286
+
60103
60287
  class MetaService {
60104
60288
  constructor() {
60105
60289
  this.meta = inject(Meta);
@@ -68875,11 +69059,14 @@ class TicketCardComponent {
68875
69059
  /** Props object-first del componente. */
68876
69060
  this.props = input.required();
68877
69061
  this.qrService = inject(QrGeneratorService);
69062
+ this.ticketCardImageService = inject(TicketCardImageService);
68878
69063
  this.i18n = inject(I18nService);
68879
69064
  /** QR generado (null mientras carga o si falló). */
68880
69065
  this.qr = signal(null);
68881
69066
  /** Falló la generación del QR → fallback al token corto. */
68882
69067
  this.failed = signal(false);
69068
+ /** True mientras se genera y comparte la tarjeta branded. */
69069
+ this.sharing = signal(false);
68883
69070
  this.status = computed(() => this.props().status ?? 'neutral');
68884
69071
  this.tokenShort = computed(() => {
68885
69072
  const tk = this.props().qrToken ?? '';
@@ -68904,6 +69091,7 @@ class TicketCardComponent {
68904
69091
  }
68905
69092
  return '';
68906
69093
  });
69094
+ addIcons({ shareOutline });
68907
69095
  this.i18n.registerDefaults('TicketCard', TICKET_CARD_I18N);
68908
69096
  // Regenera el QR cuando cambia el token o el tamaño.
68909
69097
  effect(() => {
@@ -68943,16 +69131,38 @@ class TicketCardComponent {
68943
69131
  t(key) {
68944
69132
  return this.i18n.t(key, 'TicketCard');
68945
69133
  }
69134
+ async shareCard() {
69135
+ const q = this.qr();
69136
+ if (!q)
69137
+ return;
69138
+ const p = this.props();
69139
+ this.sharing.set(true);
69140
+ try {
69141
+ await this.ticketCardImageService.share({
69142
+ qrDataUrl: q.dataUrl,
69143
+ logoUrl: p.shareLogoUrl,
69144
+ brandColor: p.shareBrandColor,
69145
+ brandColorTo: p.shareBrandColorTo,
69146
+ brandName: p.shareBrandName,
69147
+ folio: p.folio,
69148
+ folioLabel: p.shareFolioLabel,
69149
+ buyerName: p.buyerName,
69150
+ }, p.title || p.shareBrandName);
69151
+ }
69152
+ finally {
69153
+ this.sharing.set(false);
69154
+ }
69155
+ }
68946
69156
  qrProps(q) {
68947
69157
  const p = this.props();
68948
69158
  return {
68949
69159
  qr: q,
68950
69160
  displaySize: p.qrSize ?? 200,
68951
69161
  showDownload: p.showDownload ?? false,
68952
- showShare: p.showShare ?? false,
69162
+ showShare: false,
68953
69163
  showBorder: false,
68954
69164
  alt: this.folioText() || 'QR',
68955
- downloadLabel: this.t('download'),
69165
+ downloadLabel: p.downloadLabel ?? this.t('download'),
68956
69166
  shareLabel: this.t('share'),
68957
69167
  shareTitle: p.title || this.folioText() || 'QR',
68958
69168
  };
@@ -68987,12 +69197,19 @@ class TicketCardComponent {
68987
69197
  <span class="ticket-card__badge" [attr.data-status]="status()">{{ s }}</span>
68988
69198
  }
68989
69199
  </div>
69200
+
69201
+ @if (props().showShare && qr()) {
69202
+ <ion-button fill="clear" size="small" [disabled]="sharing()" (click)="shareCard()">
69203
+ <ion-icon name="share-outline" slot="start" />
69204
+ {{ props().shareLabel || t('share') }}
69205
+ </ion-button>
69206
+ }
68990
69207
  </div>
68991
- `, 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)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { 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"] }] }); }
69208
+ `, 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)}\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"] }] }); }
68992
69209
  }
68993
69210
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TicketCardComponent, decorators: [{
68994
69211
  type: Component,
68995
- args: [{ selector: 'val-ticket-card', standalone: true, imports: [CommonModule, IonSpinner, QrCodeComponent], template: `
69212
+ args: [{ selector: 'val-ticket-card', standalone: true, imports: [CommonModule, IonButton, IonIcon, IonSpinner, QrCodeComponent], template: `
68996
69213
  <div class="ticket-card">
68997
69214
  @if (props().title) {
68998
69215
  <div class="ticket-card__title">{{ props().title }}</div>
@@ -69021,6 +69238,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
69021
69238
  <span class="ticket-card__badge" [attr.data-status]="status()">{{ s }}</span>
69022
69239
  }
69023
69240
  </div>
69241
+
69242
+ @if (props().showShare && qr()) {
69243
+ <ion-button fill="clear" size="small" [disabled]="sharing()" (click)="shareCard()">
69244
+ <ion-icon name="share-outline" slot="start" />
69245
+ {{ props().shareLabel || t('share') }}
69246
+ </ion-button>
69247
+ }
69024
69248
  </div>
69025
69249
  `, 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)}\n"] }]
69026
69250
  }], ctorParameters: () => [] });
@@ -69421,5 +69645,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
69421
69645
  * Generated bundle index. Do not edit.
69422
69646
  */
69423
69647
 
69424
- export { ACTION_CARD_DEFAULTS, AD_SIZE_MAP, API_TABLE_COLUMN_LABELS, APP_VERSION_PLATFORM_PLUGIN, APP_VERSION_REMOTE_PLUGIN, ARTICLE_CARD_DEFAULTS, ARTICLE_SPACING, ARTICLE_STRIP_DEFAULTS, AUTH_CTA_DEFAULTS, AVATAR_UPLOAD_DEFAULTS, AboutViewComponent, AccordionComponent, AccountViewComponent, ActionCardComponent, ActionHeaderComponent, ActionType, AdSlotComponent, AdsLoaderService, AdsService, AlertBoxComponent, AnalyticsErrorHandler, AnalyticsRouterTracker, AnalyticsService, AnimatedTerminalComponent, ApiKeyCreateModalComponent, ApiKeyService, ApiKeysModalComponent, ApiKeysViewComponent, AppConfigService, AppVersionService, ArticleBuilder, ArticleCardComponent, ArticleComponent, ArticleStripComponent, AttachmentUploaderComponent, AuthBackgroundComponent, AuthCtaComponent, AuthService, AuthStateService, AuthStorageService, AuthSyncService, AvatarComponent, AvatarUploadComponent, BOTTOM_NAV_DEFAULTS, BannerComponent, BlogPostBuilder, BottomNavComponent, BoxComponent, BreadcrumbComponent, ButtonComponent, ButtonGroupComponent, CALLOUT_LABELS, CHEV_KEYS, CIRCLE_KEYS, COMMON_COUNTRY_CODES, COMMON_CURRENCIES, CORNER_KEYS, CTA_CARD_DEFAULTS, CURRENCY_INFO, CardComponent, CardSection, CardType, CardsCarouselComponent, ChangeEmailModalComponent, ChangePasswordModalComponent, CheckInputComponent, CheckboxRadioInputComponent, ChipGroupComponent, CodeDisplayComponent, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, ContainerComponent, ContentLoaderComponent, ContentReactionComponent, ContentService, ContentTransformer, CookieBannerComponent, CountdownComponent, CreateOrgModalComponent, CtaCardComponent, CurrencyInputComponent, DEFAULT_ADS_CONFIG, DEFAULT_APP_CONFIG_SERVICE_CONFIG, DEFAULT_APP_VERSION_SERVICE_CONFIG, DEFAULT_AUTH_CONFIG, DEFAULT_BACK_HEADER, DEFAULT_BUTTON_PRESETS, DEFAULT_CANCEL_BUTTON, DEFAULT_CHECK_INTERVAL_MS, DEFAULT_CONFIRM_BUTTON, DEFAULT_COUNTDOWN_LABELS, DEFAULT_COUNTDOWN_LABELS_EN, DEFAULT_DEBUG_CONSOLE_CONFIG, DEFAULT_DONATION_CONFIG, DEFAULT_EMPTY_STATE, DEFAULT_EMULATOR_CONFIG, DEFAULT_FEEDBACK_CONFIG, DEFAULT_FEEDBACK_TYPE_OPTIONS, DEFAULT_HOME_HEADER, DEFAULT_INFINITE_LIST_METADATA, DEFAULT_LOGIN_LOGO, DEFAULT_MODAL_CANCEL_BUTTON, DEFAULT_MODAL_CONFIRM_BUTTON, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLATFORMS, DEFAULT_PRESETS, DEFAULT_REFRESHER_METADATA, DEFAULT_SKELETON_CONFIG, DEFAULT_SPLASH_SCREEN_CONFIG, DataTableComponent, DateInputComponent, DatePickerComponent, DateRangeInputComponent, DebugConsoleComponent, DeleteAccountModalComponent, DetailSkeletonComponent, DeviceService, DisplayComponent, DividerComponent, DocsApiTableComponent, DocsBreadcrumbComponent, DocsBuilder, DocsCalloutComponent, DocsCodeExampleComponent, DocsLayoutComponent, DocsNavLinksComponent, DocsNavigationService, DocsPageComponent, DocsSearchComponent, DocsSectionComponent, DocsShellComponent, DocsSidebarComponent, DocsTocComponent, DonationService, DownloadService, EditOrgModalComponent, EmptyStateComponent, EntityCardComponent, 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, HasPermissionDirective, HeaderComponent, HintComponent, HorizontalScrollComponent, HrefComponent, I18nService, IMAGE_DEFAULTS, INITIAL_AUTH_STATE, INITIAL_MFA_STATE, INVITATION_CARD_DEFAULTS, IONIC_COLORS$5 as IONIC_COLORS, Icon, IconComponent, IconService, ImageComponent, ImageCropComponent, ImageService, InAppBrowserService, InfiniteListComponent, InfoComponent, InputI18nHelper, InputType, InvitationCardComponent, InviteMemberModalComponent, ItemListComponent, LANG_STORAGE_KEY$1 as LANG_STORAGE_KEY, LEGAL_CONTENT_CONFIG, LOGIN_DEFAULTS, LandingSplitComponent, LandingStepsComponent, LanguageSelectorComponent, LayeredCardComponent, LegalContentService, LegalLinkService, LinkComponent, LinkProcessorService, LinkedProvidersComponent, LinksAccordionComponent, LinksCakeComponent, ListSkeletonComponent, LoadingDirective, LocalStorageService, LocaleService, LoginAttemptModalComponent, LoginComponent, MEDIA_OBJECT_DEFAULTS, MEMBER_CARD_DEFAULTS, METRIC_CARD_DEFAULTS, MODAL_SIZES, MOTIF_KEYS, MOTION, MaintenancePageComponent, MarkdownArticleParserService, MediaObjectComponent, MemberCardComponent, MemberDetailModalComponent, MemberImportModalComponent, MenuComponent, MessagingService, MetaService, MetricCardComponent, MfaModalComponent, ModalService, ModalShellComponent, MultiSelectSearchComponent, NUM_KEYS, NavigationService, NetworkBannerComponent, NetworkStatusService, NewsBuilder, NoContentComponent, NotesBoxComponent, NotificationActionService, NotificationPreferencesViewComponent, NotificationsService, NotificationsViewComponent, NumberFromToComponent, NumberStepperComponent, OAUTH_PROVIDERS_INFO, OAuthCallbackComponent, OAuthService, OptionCardsComponent, OrgInfoSheetComponent, OrgService, OrgSwitchService, OrganizationViewComponent, PATTERN_MOTIFS, PATTERN_PALETTES, PATTERN_STYLE_CONFIGS, PLATFORM_CONFIGS, PageContentComponent, PageLinksComponent, PageRefreshService, PageTemplateComponent, PageWavesComponent, PageWrapperComponent, PaginationComponent, PaginationService, PasswordInputComponent, PatternComponent, PermissionCatalogService, PermissionSelectorComponent, PermissionsModalComponent, PermissionsViewComponent, PhoneInputComponent, PillComponent, PinInputComponent, PlainCodeBoxComponent, PopoverSelectorComponent, PreferencesService, PreferencesViewComponent, PresetService, PriceTagComponent, ProcessLinksPipe, ProfileSkeletonComponent, ProfileViewComponent, ProgressBarComponent, ProgressRingComponent, ProgressStatusComponent, PrompterComponent, QR_PRESETS, QrCodeComponent, QrGeneratorService, QrScannerComponent, QueryBuilder, QuoteBoxComponent, REQUEST_STATUSES, RadioInputComponent, RangeInputComponent, RatingComponent, RefresherComponent, RequestFirestoreService, RequestFormBuilderService, RequestFormComponent, 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, TicketCardComponent, TimelineComponent, TitleBlockComponent, TitleComponent, ToastService, ToggleInputComponent, TokenService, ToolbarActionType, ToolbarComponent, TransferOwnershipModalComponent, TranslatePipe, TypedCollection, UPDATE_BANNER_DEFAULT_CONTENT, UPDATE_BANNER_I18N_NAMESPACE, UpdateBannerComponent, UserAvatarComponent, UsernameInputComponent, VALTECH_ADS_CONFIG, VALTECH_APP_CONFIG, VALTECH_APP_VERSION, VALTECH_AUTH_CONFIG, VALTECH_COMPANY_LINKS, VALTECH_CONTENT_CONFIG, VALTECH_DEBUG_CONSOLE, VALTECH_DEFAULT_CONTENT, VALTECH_DONATION_CONFIG, VALTECH_FEEDBACK_CONFIG, VALTECH_FIREBASE_CONFIG, VALTECH_FOOTER_I18N, VALTECH_FOOTER_LOGO, VALTECH_LANGUAGE_SELECTOR, VALTECH_LEGAL_CONFIG, VALTECH_NETWORK_ERROR_KEY, VALTECH_SETTINGS_MENU_LINKS, VALTECH_SITE_PATHS, VALTECH_SOCIAL_LINKS, VALTECH_SPLASH_SCREEN, VALTECH_WEB_BASE_URLS, VALTECH_WHATSAPP_CONFIG, VERSION, ValtechErrorService, VerifyViewComponent, WhatsappFabComponent, WhatsappService, WizardComponent, WizardFooterComponent, 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, generatePatternTiles, generateRandomTile, getAppInfo, getAppVersion, getCollectionPath, getDocumentId, getTimeOfDayKey, goToTop, guestGuard, hasEmulators, iconButton, interpretError, isAtEnd, isCollectionPath, isDocumentPath, isEmulatorMode, isIonicColor, isValidPath, joinPath, maxLength, mulberry32, news, parseMarkdownArticle, permissionGuard, permissionGuardFromRoute, provideLegalContent, provideSplashScreen, provideValtechAboutRoutes, provideValtechAccountRoutes, provideValtechAds, provideValtechApiKeysRoutes, provideValtechAppConfig, provideValtechAppVersion, provideValtechAppVersionHttp, provideValtechAuth, provideValtechAuthInterceptor, provideValtechContent, provideValtechDebugConsole, provideValtechDonations, provideValtechErrorHandling, provideValtechFeedback, provideValtechFirebase, provideValtechI18n, provideValtechLegal, provideValtechNotificationPreferencesRoutes, provideValtechNotificationsRoutes, provideValtechOrganizationRoutes, provideValtechPermissionsRoutes, provideValtechPreferencesRoutes, provideValtechPresets, provideValtechProfileRoutes, provideValtechSecurityRoutes, provideValtechSettingsRoutes, provideValtechSite, provideValtechSkeleton, provideValtechWhatsapp, query, renderPatternSvgInner, replaceSpecialChars, requestSubmitMode, resolveColor, resolveInputDefaultValue, resolveIonicColor, resolveWebBaseUrl, roleGuard, selectableRequestTypes, storagePaths, superAdminGuard, toArticle };
69648
+ export { ACTION_CARD_DEFAULTS, AD_SIZE_MAP, API_TABLE_COLUMN_LABELS, APP_VERSION_PLATFORM_PLUGIN, APP_VERSION_REMOTE_PLUGIN, ARTICLE_CARD_DEFAULTS, ARTICLE_SPACING, ARTICLE_STRIP_DEFAULTS, AUTH_CTA_DEFAULTS, AVATAR_UPLOAD_DEFAULTS, AboutViewComponent, AccordionComponent, AccountViewComponent, ActionCardComponent, ActionHeaderComponent, ActionType, AdSlotComponent, AdsLoaderService, AdsService, AlertBoxComponent, AnalyticsErrorHandler, AnalyticsRouterTracker, AnalyticsService, AnimatedTerminalComponent, ApiKeyCreateModalComponent, ApiKeyService, ApiKeysModalComponent, ApiKeysViewComponent, AppConfigService, AppVersionService, ArticleBuilder, ArticleCardComponent, ArticleComponent, ArticleStripComponent, AttachmentUploaderComponent, AuthBackgroundComponent, AuthCtaComponent, AuthService, AuthStateService, AuthStorageService, AuthSyncService, AvatarComponent, AvatarUploadComponent, BOTTOM_NAV_DEFAULTS, BannerComponent, BlogPostBuilder, BottomNavComponent, BoxComponent, BreadcrumbComponent, ButtonComponent, ButtonGroupComponent, CALLOUT_LABELS, CHEV_KEYS, CIRCLE_KEYS, COMMON_COUNTRY_CODES, COMMON_CURRENCIES, CORNER_KEYS, CTA_CARD_DEFAULTS, CURRENCY_INFO, CardComponent, CardSection, CardType, CardsCarouselComponent, ChangeEmailModalComponent, ChangePasswordModalComponent, CheckInputComponent, CheckboxRadioInputComponent, ChipGroupComponent, CodeDisplayComponent, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, ContainerComponent, ContentLoaderComponent, ContentReactionComponent, ContentService, ContentTransformer, CookieBannerComponent, CountdownComponent, CreateOrgModalComponent, CtaCardComponent, CurrencyInputComponent, DEFAULT_ADS_CONFIG, DEFAULT_APP_CONFIG_SERVICE_CONFIG, DEFAULT_APP_VERSION_SERVICE_CONFIG, DEFAULT_AUTH_CONFIG, DEFAULT_BACK_HEADER, DEFAULT_BUTTON_PRESETS, DEFAULT_CANCEL_BUTTON, DEFAULT_CHECK_INTERVAL_MS, DEFAULT_CONFIRM_BUTTON, DEFAULT_COUNTDOWN_LABELS, DEFAULT_COUNTDOWN_LABELS_EN, DEFAULT_DEBUG_CONSOLE_CONFIG, DEFAULT_DONATION_CONFIG, DEFAULT_EMPTY_STATE, DEFAULT_EMULATOR_CONFIG, DEFAULT_FEEDBACK_CONFIG, DEFAULT_FEEDBACK_TYPE_OPTIONS, DEFAULT_HOME_HEADER, DEFAULT_INFINITE_LIST_METADATA, DEFAULT_LOGIN_LOGO, DEFAULT_MODAL_CANCEL_BUTTON, DEFAULT_MODAL_CONFIRM_BUTTON, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLATFORMS, DEFAULT_PRESETS, DEFAULT_REFRESHER_METADATA, DEFAULT_SKELETON_CONFIG, DEFAULT_SPLASH_SCREEN_CONFIG, DataTableComponent, DateInputComponent, DatePickerComponent, DateRangeInputComponent, DebugConsoleComponent, DeleteAccountModalComponent, DetailSkeletonComponent, DeviceService, DisplayComponent, DividerComponent, DocsApiTableComponent, DocsBreadcrumbComponent, DocsBuilder, DocsCalloutComponent, DocsCodeExampleComponent, DocsLayoutComponent, DocsNavLinksComponent, DocsNavigationService, DocsPageComponent, DocsSearchComponent, DocsSectionComponent, DocsShellComponent, DocsSidebarComponent, DocsTocComponent, DonationService, DownloadService, EditOrgModalComponent, EmptyStateComponent, EntityCardComponent, 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, HasPermissionDirective, HeaderComponent, HintComponent, HorizontalScrollComponent, HrefComponent, I18nService, IMAGE_DEFAULTS, INITIAL_AUTH_STATE, INITIAL_MFA_STATE, INVITATION_CARD_DEFAULTS, IONIC_COLORS$5 as IONIC_COLORS, Icon, IconComponent, IconService, ImageComponent, ImageCropComponent, ImageService, InAppBrowserService, InfiniteListComponent, InfoComponent, InputI18nHelper, InputType, InvitationCardComponent, InviteMemberModalComponent, ItemListComponent, LANG_STORAGE_KEY$1 as LANG_STORAGE_KEY, LEGAL_CONTENT_CONFIG, LOGIN_DEFAULTS, LandingSplitComponent, LandingStepsComponent, LanguageSelectorComponent, LayeredCardComponent, LegalContentService, LegalLinkService, LinkComponent, LinkProcessorService, LinkedProvidersComponent, LinksAccordionComponent, LinksCakeComponent, ListSkeletonComponent, LoadingDirective, LocalStorageService, LocaleService, LoginAttemptModalComponent, LoginComponent, MEDIA_OBJECT_DEFAULTS, MEMBER_CARD_DEFAULTS, METRIC_CARD_DEFAULTS, MODAL_SIZES, MOTIF_KEYS, MOTION, MaintenancePageComponent, MarkdownArticleParserService, MediaObjectComponent, MemberCardComponent, MemberDetailModalComponent, MemberImportModalComponent, MenuComponent, MessagingService, MetaService, MetricCardComponent, MfaModalComponent, ModalService, ModalShellComponent, MultiSelectSearchComponent, NUM_KEYS, NavigationService, NetworkBannerComponent, NetworkStatusService, NewsBuilder, NoContentComponent, NotesBoxComponent, NotificationActionService, NotificationPreferencesViewComponent, NotificationsService, NotificationsViewComponent, NumberFromToComponent, NumberStepperComponent, OAUTH_PROVIDERS_INFO, OAuthCallbackComponent, OAuthService, OptionCardsComponent, OrgInfoSheetComponent, OrgService, OrgSwitchService, OrganizationViewComponent, PATTERN_MOTIFS, PATTERN_PALETTES, PATTERN_STYLE_CONFIGS, PLATFORM_CONFIGS, PageContentComponent, PageLinksComponent, PageRefreshService, PageTemplateComponent, PageWavesComponent, PageWrapperComponent, PaginationComponent, PaginationService, PasswordInputComponent, PatternComponent, PermissionCatalogService, PermissionSelectorComponent, PermissionsModalComponent, PermissionsViewComponent, PhoneInputComponent, PillComponent, PinInputComponent, PlainCodeBoxComponent, PopoverSelectorComponent, PreferencesService, PreferencesViewComponent, PresetService, PriceTagComponent, ProcessLinksPipe, ProfileSkeletonComponent, ProfileViewComponent, ProgressBarComponent, ProgressRingComponent, ProgressStatusComponent, PrompterComponent, QR_PRESETS, QrCodeComponent, QrGeneratorService, QrScannerComponent, QueryBuilder, QuoteBoxComponent, REQUEST_STATUSES, RadioInputComponent, RangeInputComponent, RatingComponent, RefresherComponent, RequestFirestoreService, RequestFormBuilderService, RequestFormComponent, 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, TicketCardComponent, TicketCardImageService, TimelineComponent, TitleBlockComponent, TitleComponent, ToastService, ToggleInputComponent, TokenService, ToolbarActionType, ToolbarComponent, TransferOwnershipModalComponent, TranslatePipe, TypedCollection, UPDATE_BANNER_DEFAULT_CONTENT, UPDATE_BANNER_I18N_NAMESPACE, UpdateBannerComponent, UserAvatarComponent, UsernameInputComponent, VALTECH_ADS_CONFIG, VALTECH_APP_CONFIG, VALTECH_APP_VERSION, VALTECH_AUTH_CONFIG, VALTECH_COMPANY_LINKS, VALTECH_CONTENT_CONFIG, VALTECH_DEBUG_CONSOLE, VALTECH_DEFAULT_CONTENT, VALTECH_DONATION_CONFIG, VALTECH_FEEDBACK_CONFIG, VALTECH_FIREBASE_CONFIG, VALTECH_FOOTER_I18N, VALTECH_FOOTER_LOGO, VALTECH_LANGUAGE_SELECTOR, VALTECH_LEGAL_CONFIG, VALTECH_NETWORK_ERROR_KEY, VALTECH_SETTINGS_MENU_LINKS, VALTECH_SITE_PATHS, VALTECH_SOCIAL_LINKS, VALTECH_SPLASH_SCREEN, VALTECH_WEB_BASE_URLS, VALTECH_WHATSAPP_CONFIG, VERSION, ValtechErrorService, VerifyViewComponent, WhatsappFabComponent, WhatsappService, WizardComponent, WizardFooterComponent, 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, generatePatternTiles, generateRandomTile, getAppInfo, getAppVersion, getCollectionPath, getDocumentId, getTimeOfDayKey, goToTop, guestGuard, hasEmulators, iconButton, interpretError, isAtEnd, isCollectionPath, isDocumentPath, isEmulatorMode, isIonicColor, isValidPath, joinPath, maxLength, mulberry32, news, parseMarkdownArticle, permissionGuard, permissionGuardFromRoute, provideLegalContent, provideSplashScreen, provideValtechAboutRoutes, provideValtechAccountRoutes, provideValtechAds, provideValtechApiKeysRoutes, provideValtechAppConfig, provideValtechAppVersion, provideValtechAppVersionHttp, provideValtechAuth, provideValtechAuthInterceptor, provideValtechContent, provideValtechDebugConsole, provideValtechDonations, provideValtechErrorHandling, provideValtechFeedback, provideValtechFirebase, provideValtechI18n, provideValtechLegal, provideValtechNotificationPreferencesRoutes, provideValtechNotificationsRoutes, provideValtechOrganizationRoutes, provideValtechPermissionsRoutes, provideValtechPreferencesRoutes, provideValtechPresets, provideValtechProfileRoutes, provideValtechSecurityRoutes, provideValtechSettingsRoutes, provideValtechSite, provideValtechSkeleton, provideValtechWhatsapp, query, renderPatternSvgInner, replaceSpecialChars, requestSubmitMode, resolveColor, resolveInputDefaultValue, resolveIonicColor, resolveWebBaseUrl, roleGuard, selectableRequestTypes, storagePaths, superAdminGuard, toArticle };
69425
69649
  //# sourceMappingURL=valtech-components.mjs.map