valtech-components 2.0.1020 → 2.0.1022

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.
@@ -54,7 +54,7 @@ import 'prismjs/components/prism-json';
54
54
  * Current version of valtech-components.
55
55
  * This is automatically updated during the publish process.
56
56
  */
57
- const VERSION = '2.0.1020';
57
+ const VERSION = '2.0.1022';
58
58
 
59
59
  // Control de estado de refresco (singleton a nivel de módulo)
60
60
  let isRefreshing = false;
@@ -47985,19 +47985,30 @@ class InviteMemberModalComponent {
47985
47985
  this.searchResults.set([]);
47986
47986
  return [];
47987
47987
  }
47988
- const cleanQ = (q.startsWith('@') ? q.slice(1) : q).toLowerCase();
47989
- // Prefijo: el sentinel alto `` cierra el rango (antes `cleanQ + ''`
47990
- // era exact-match solo encontraba el handle idéntico). NOTA: solo busca
47991
- // por `handle`; la búsqueda por nombre requiere un campo normalizado en
47992
- // /profiles (pendiente, ver TODO de búsqueda por nombre).
47993
- const q$ = query$1(collection(this.firestore, 'profiles'), orderBy('handle'), startAt(cleanQ), endAt(cleanQ + '\uf8ff'), limit(8));
47994
- return from(getDocs(q$)).pipe(map$1(snap => ({
47995
- users: snap.docs.map(d => ({
47996
- userId: d.id,
47997
- handle: d.data()['handle'],
47998
- name: d.data()['name'],
47999
- })),
48000
- })));
47988
+ // Búsqueda por prefijo sobre DOS campos: `handle` y `nameLower`. Firestore
47989
+ // no soporta OR entre campos en una query, así que se lanzan dos queries en
47990
+ // paralelo y se mezclan (dedup por id). El sentinel alto  cierra el
47991
+ // rango del prefijo. `nameLower` lo escribe el backend en /profiles
47992
+ // (NormalizeNameForSearch: lowercase + colapso de espacios); normalizamos el
47993
+ // query igual para que el prefijo matchee.
47994
+ const profiles = collection(this.firestore, 'profiles');
47995
+ const handleQ = (q.startsWith('@') ? q.slice(1) : q).toLowerCase();
47996
+ const nameQ = q.trim().toLowerCase().replace(/\s+/g, ' ');
47997
+ const byHandle$ = from(getDocs(query$1(profiles, orderBy('handle'), startAt(handleQ), endAt(handleQ + '\uf8ff'), limit(8))));
47998
+ const byName$ = from(getDocs(query$1(profiles, orderBy('nameLower'), startAt(nameQ), endAt(nameQ + '\uf8ff'), limit(8))));
47999
+ return forkJoin([byHandle$, byName$]).pipe(map$1(([handleSnap, nameSnap]) => {
48000
+ const byId = new Map();
48001
+ for (const d of [...handleSnap.docs, ...nameSnap.docs]) {
48002
+ if (byId.has(d.id))
48003
+ continue;
48004
+ byId.set(d.id, {
48005
+ userId: d.id,
48006
+ handle: d.data()['handle'],
48007
+ name: d.data()['name'],
48008
+ });
48009
+ }
48010
+ return { users: Array.from(byId.values()).slice(0, 8) };
48011
+ }));
48001
48012
  }))
48002
48013
  .subscribe({
48003
48014
  next: res => {
@@ -48388,6 +48399,77 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
48388
48399
  type: Input
48389
48400
  }] } });
48390
48401
 
48402
+ /**
48403
+ * Consume el catálogo de permisos del backend (`GET /org/{orgId}/permissions-catalog`).
48404
+ * El backend es la fuente de verdad de qué permisos existen y de su alcance
48405
+ * (globales de plataforma vs. propios de una app). La respuesta incluye el
48406
+ * `appId` del request para que la vista distinga la app actual.
48407
+ *
48408
+ * Promovido desde `showcase` a la lib bajo el proceso de ADR-021. Usa
48409
+ * `VALTECH_AUTH_CONFIG.apiUrl` (como `OrgService`) en vez del `environment` de la
48410
+ * app — la lib no importa el environment del consumer.
48411
+ */
48412
+ class PermissionCatalogService {
48413
+ constructor(config, http) {
48414
+ this.config = config;
48415
+ this.http = http;
48416
+ }
48417
+ getCatalog(orgId) {
48418
+ return this.http.get(`${this.config.apiUrl}/org/${orgId}/permissions-catalog`);
48419
+ }
48420
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PermissionCatalogService, deps: [{ token: VALTECH_AUTH_CONFIG }, { token: i1$3.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
48421
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PermissionCatalogService, providedIn: 'root' }); }
48422
+ }
48423
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PermissionCatalogService, decorators: [{
48424
+ type: Injectable,
48425
+ args: [{ providedIn: 'root' }]
48426
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
48427
+ type: Inject,
48428
+ args: [VALTECH_AUTH_CONFIG]
48429
+ }] }, { type: i1$3.HttpClient }] });
48430
+ /**
48431
+ * Humaniza un código crudo (`api-keys` → "Api Keys", `reset-password` → "Reset
48432
+ * Password") como último recurso cuando el catálogo no trae label para él.
48433
+ */
48434
+ function humanizePermissionCode(code) {
48435
+ if (!code)
48436
+ return '';
48437
+ return code
48438
+ .split(/[-_]/)
48439
+ .filter(Boolean)
48440
+ .map(w => w.charAt(0).toUpperCase() + w.slice(1))
48441
+ .join(' ');
48442
+ }
48443
+ /**
48444
+ * Construye el resolvedor de labels de permisos a partir del catálogo del backend
48445
+ * (fuente única de verdad de los labels, ADR-024). Los consumers (permissions-view,
48446
+ * organization-view, member-detail-modal) usan esto en vez de duplicar mapas
48447
+ * hardcodeados `resource→key`/`action→key`.
48448
+ *
48449
+ * - Recurso → `permissions[].label[locale]`; acción → `actionLabels[action][locale]`.
48450
+ * - Wildcards (`*:*`, `resource:*`, `*`) usan `allLabel` (el catálogo no modela el
48451
+ * comodín; el consumer pasa su string i18n, p.ej. "Todos los permisos").
48452
+ * - Fallback humanizado si el catálogo no trae label (evita salidas vacías como
48453
+ * ": Gestionar" ante un recurso/acción nuevo aún sin etiqueta en el backend).
48454
+ */
48455
+ function createPermissionLabeler(catalog, locale, opts) {
48456
+ const byResource = new Map();
48457
+ for (const r of catalog.permissions ?? [])
48458
+ byResource.set(r.resource, r);
48459
+ const actionLabels = catalog.actionLabels ?? {};
48460
+ const allLabel = opts?.allLabel ?? humanizePermissionCode('all');
48461
+ const resLabel = (resource) => byResource.get(resource)?.label?.[locale] ?? humanizePermissionCode(resource);
48462
+ const actLabel = (action) => actionLabels[action]?.[locale] ?? humanizePermissionCode(action);
48463
+ return (perm) => {
48464
+ const [resource, action] = perm.split(':');
48465
+ if (resource === '*')
48466
+ return allLabel;
48467
+ const res = resLabel(resource);
48468
+ const act = action === '*' ? allLabel : actLabel(action);
48469
+ return `${res}: ${act}`;
48470
+ };
48471
+ }
48472
+
48391
48473
  /**
48392
48474
  * Defaults i18n (es/en) embebidos en `val-member-detail-modal`. Auto-registrados
48393
48475
  * en el constructor del componente si el consumer no proveyó el namespace
@@ -48420,11 +48502,32 @@ const MEMBER_DETAIL_MODAL_I18N = {
48420
48502
  permRoles: 'Roles',
48421
48503
  permMedia: 'Media',
48422
48504
  permTemplates: 'Plantillas',
48505
+ permRbac: 'Control de acceso',
48506
+ permApps: 'Aplicaciones',
48507
+ permApiKeys: 'API Keys',
48508
+ permEmailLogs: 'Registros de email',
48509
+ permSmsLogs: 'Registros de SMS',
48510
+ permCommsTemplates: 'Plantillas de comunicación',
48511
+ permRequests: 'Solicitudes',
48512
+ permMembers: 'Miembros',
48513
+ permAccounts: 'Cuentas',
48514
+ permSupport: 'Soporte',
48515
+ permBingo: 'Bingo',
48423
48516
  permRead: 'Leer',
48424
48517
  permWrite: 'Escribir',
48425
48518
  permCreate: 'Crear',
48426
48519
  permDelete: 'Eliminar',
48427
48520
  permManage: 'Gestionar',
48521
+ permEdit: 'Editar',
48522
+ permSell: 'Vender',
48523
+ permCheckin: 'Registrar entrada',
48524
+ permSettle: 'Rendir',
48525
+ permExport: 'Exportar',
48526
+ permOperate: 'Operar',
48527
+ permSuspend: 'Suspender',
48528
+ permReactivate: 'Reactivar',
48529
+ permResetPassword: 'Restablecer contraseña',
48530
+ permImport: 'Importar',
48428
48531
  },
48429
48532
  en: {
48430
48533
  close: 'Close',
@@ -48452,11 +48555,32 @@ const MEMBER_DETAIL_MODAL_I18N = {
48452
48555
  permRoles: 'Roles',
48453
48556
  permMedia: 'Media',
48454
48557
  permTemplates: 'Templates',
48558
+ permRbac: 'Access control',
48559
+ permApps: 'Apps',
48560
+ permApiKeys: 'API Keys',
48561
+ permEmailLogs: 'Email logs',
48562
+ permSmsLogs: 'SMS logs',
48563
+ permCommsTemplates: 'Comms templates',
48564
+ permRequests: 'Requests',
48565
+ permMembers: 'Members',
48566
+ permAccounts: 'Accounts',
48567
+ permSupport: 'Support',
48568
+ permBingo: 'Bingo',
48455
48569
  permRead: 'Read',
48456
48570
  permWrite: 'Write',
48457
48571
  permCreate: 'Create',
48458
48572
  permDelete: 'Delete',
48459
48573
  permManage: 'Manage',
48574
+ permEdit: 'Edit',
48575
+ permSell: 'Sell',
48576
+ permCheckin: 'Check-in',
48577
+ permSettle: 'Settle',
48578
+ permExport: 'Export',
48579
+ permOperate: 'Operate',
48580
+ permSuspend: 'Suspend',
48581
+ permReactivate: 'Reactivate',
48582
+ permResetPassword: 'Reset password',
48583
+ permImport: 'Import',
48460
48584
  },
48461
48585
  };
48462
48586
 
@@ -48484,6 +48608,9 @@ class MemberDetailModalComponent {
48484
48608
  this.errors = inject(ValtechErrorService);
48485
48609
  this.i18n = inject(I18nService);
48486
48610
  this.confirmDialog = inject(ConfirmationDialogService);
48611
+ this.catalog = inject(PermissionCatalogService);
48612
+ /** Labeler de permisos con la SSOT del backend (catálogo). Se llena al cargar. */
48613
+ this.permLabeler = signal(null);
48487
48614
  /** Organización a la que pertenece el miembro. */
48488
48615
  this.orgId = '';
48489
48616
  /** Si true, habilita cambio de rol y eliminación. */
@@ -48555,30 +48682,24 @@ class MemberDetailModalComponent {
48555
48682
  if (v && v !== this.currentRole())
48556
48683
  void this.onChangeRole(v);
48557
48684
  });
48685
+ // Catálogo del backend = SSOT de los labels de permisos (ADR-024). Si falla,
48686
+ // `permissionLabel` cae al fallback humanizado (no rompe el modal).
48687
+ if (this.orgId) {
48688
+ this.catalog.getCatalog(this.orgId).subscribe({
48689
+ next: catalog => this.permLabeler.set(createPermissionLabeler(catalog, this.i18n.lang(), { allLabel: this.t('permAll') })),
48690
+ error: () => { },
48691
+ });
48692
+ }
48558
48693
  }
48559
48694
  permissionLabel(perm) {
48560
- if (perm === '*:*')
48561
- return this.t('permAll');
48562
- const [resource, action] = perm.split(':');
48563
- const resKey = {
48564
- users: 'permUsers',
48565
- documents: 'permDocuments',
48566
- roles: 'permRoles',
48567
- media: 'permMedia',
48568
- templates: 'permTemplates',
48569
- '*': 'permAll',
48570
- };
48571
- const actKey = {
48572
- read: 'permRead',
48573
- write: 'permWrite',
48574
- create: 'permCreate',
48575
- delete: 'permDelete',
48576
- manage: 'permManage',
48577
- '*': 'permAll',
48578
- };
48579
- const res = this.t(resKey[resource] ?? resource);
48580
- const act = this.t(actKey[action] ?? action);
48581
- return `${res}: ${act}`;
48695
+ // SSOT = catálogo del backend. Hasta que cargue (o si falló), fallback a un
48696
+ // labeler vacío que humaniza el código crudo (evita salidas vacías como
48697
+ // ": Gestionar"). El `*:*` y wildcards usan el label i18n `permAll`.
48698
+ const labeler = this.permLabeler() ??
48699
+ createPermissionLabeler({ permissions: [], actionLabels: {} }, this.i18n.lang(), {
48700
+ allLabel: this.t('permAll'),
48701
+ });
48702
+ return labeler(perm);
48582
48703
  }
48583
48704
  async onChangeRole(newRoleId) {
48584
48705
  if (this.working())
@@ -49503,35 +49624,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
49503
49624
  args: [VALTECH_AUTH_CONFIG]
49504
49625
  }] }, { type: i1$3.HttpClient }] });
49505
49626
 
49506
- /**
49507
- * Consume el catálogo de permisos del backend (`GET /org/{orgId}/permissions-catalog`).
49508
- * El backend es la fuente de verdad de qué permisos existen y de su alcance
49509
- * (globales de plataforma vs. propios de una app). La respuesta incluye el
49510
- * `appId` del request para que la vista distinga la app actual.
49511
- *
49512
- * Promovido desde `showcase` a la lib bajo el proceso de ADR-021. Usa
49513
- * `VALTECH_AUTH_CONFIG.apiUrl` (como `OrgService`) en vez del `environment` de la
49514
- * app — la lib no importa el environment del consumer.
49515
- */
49516
- class PermissionCatalogService {
49517
- constructor(config, http) {
49518
- this.config = config;
49519
- this.http = http;
49520
- }
49521
- getCatalog(orgId) {
49522
- return this.http.get(`${this.config.apiUrl}/org/${orgId}/permissions-catalog`);
49523
- }
49524
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PermissionCatalogService, deps: [{ token: VALTECH_AUTH_CONFIG }, { token: i1$3.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
49525
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PermissionCatalogService, providedIn: 'root' }); }
49526
- }
49527
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PermissionCatalogService, decorators: [{
49528
- type: Injectable,
49529
- args: [{ providedIn: 'root' }]
49530
- }], ctorParameters: () => [{ type: undefined, decorators: [{
49531
- type: Inject,
49532
- args: [VALTECH_AUTH_CONFIG]
49533
- }] }, { type: i1$3.HttpClient }] });
49534
-
49535
49627
  /**
49536
49628
  * Defaults i18n (es/en) embebidos en `val-api-keys-modal` (ADR-023).
49537
49629
  * Auto-registrados si el consumer no proveyó el namespace `Settings.ApiKeysModal`.
@@ -50729,30 +50821,6 @@ class OrganizationViewComponent {
50729
50821
  .map(w => w.charAt(0).toUpperCase() + w.slice(1))
50730
50822
  .join(' ');
50731
50823
  }
50732
- permissionLabel(perm) {
50733
- if (perm === '*:*')
50734
- return this.tt('permAll');
50735
- const [resource, action] = perm.split(':');
50736
- const resKey = {
50737
- users: 'permUsers',
50738
- documents: 'permDocuments',
50739
- roles: 'permRoles',
50740
- media: 'permMedia',
50741
- templates: 'permTemplates',
50742
- '*': 'permAll',
50743
- };
50744
- const actKey = {
50745
- read: 'permRead',
50746
- write: 'permWrite',
50747
- create: 'permCreate',
50748
- delete: 'permDelete',
50749
- manage: 'permManage',
50750
- '*': 'permAll',
50751
- };
50752
- const res = this.tt(resKey[resource] ?? resource);
50753
- const act = this.tt(actKey[action] ?? action);
50754
- return `${res}: ${act}`;
50755
- }
50756
50824
  onViewMember(member) {
50757
50825
  void this.modalService.open({
50758
50826
  component: MemberDetailModalComponent,
@@ -52347,13 +52415,19 @@ class PermissionsViewComponent {
52347
52415
  for (const r of catalog.permissions)
52348
52416
  byResource.set(r.resource, r);
52349
52417
  const currentAppId = catalog.appId;
52418
+ // Labeler con la SSOT del backend (labels del catálogo) — reemplaza el
52419
+ // mapa hardcodeado `perm*`. Locale del momento de carga (igual que antes:
52420
+ // los labels se hornean en el RoleView; cambio de idioma requiere reload).
52421
+ const labeler = createPermissionLabeler(catalog, this.i18n.lang(), {
52422
+ allLabel: this.tt('permAll'),
52423
+ });
52350
52424
  this.roles.set((rawRoles ?? []).map((r) => this.buildRoleView({
52351
52425
  id: r.id,
52352
52426
  name: r.name,
52353
52427
  description: r.description,
52354
52428
  permissions: r.permissions ?? [],
52355
52429
  isSystem: r.isSystem ?? false,
52356
- }, byResource, currentAppId)));
52430
+ }, byResource, currentAppId, labeler)));
52357
52431
  this.loading.set(false);
52358
52432
  },
52359
52433
  error: err => {
@@ -52362,12 +52436,12 @@ class PermissionsViewComponent {
52362
52436
  },
52363
52437
  });
52364
52438
  }
52365
- buildRoleView(role, byResource, currentAppId) {
52439
+ buildRoleView(role, byResource, currentAppId, labeler) {
52366
52440
  const appPerms = [];
52367
52441
  const orgPerms = [];
52368
52442
  const otherByApp = new Map();
52369
52443
  for (const perm of role.permissions) {
52370
- const [resource, action] = perm.split(':');
52444
+ const [resource] = perm.split(':');
52371
52445
  const entry = byResource.get(resource);
52372
52446
  // Sin entrada en el catálogo (el backend omite los recursos internal para
52373
52447
  // no-platform-admins) o entrada internal → NUNCA se muestra a nivel de
@@ -52377,7 +52451,7 @@ class PermissionsViewComponent {
52377
52451
  if (!entry || entry.scope === 'internal') {
52378
52452
  continue;
52379
52453
  }
52380
- const label = this.permLabel(resource, action);
52454
+ const label = labeler(perm);
52381
52455
  if (entry.scope === 'app') {
52382
52456
  if (entry.appId === currentAppId) {
52383
52457
  appPerms.push(label);
@@ -52442,15 +52516,6 @@ class PermissionsViewComponent {
52442
52516
  };
52443
52517
  return this.tt(map[name] ?? name);
52444
52518
  }
52445
- permLabel(resource, action) {
52446
- if (resource === '*' && action === '*')
52447
- return this.tt('permAll');
52448
- const resKey = resource === '*' ? 'permAll' : `perm${resource.charAt(0).toUpperCase()}${resource.slice(1)}`;
52449
- const actKey = action === '*' ? 'permAll' : `perm${action.charAt(0).toUpperCase()}${action.slice(1)}`;
52450
- const res = this.tt(resKey);
52451
- const act = this.tt(actKey);
52452
- return `${res}: ${act}`;
52453
- }
52454
52519
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PermissionsViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
52455
52520
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PermissionsViewComponent, isStandalone: true, selector: "val-permissions-view", inputs: { config: "config" }, ngImport: i0, template: `
52456
52521
  <div class="page">
@@ -64629,5 +64694,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
64629
64694
  * Generated bundle index. Do not edit.
64630
64695
  */
64631
64696
 
64632
- export { ACTION_CARD_DEFAULTS, AD_SIZE_MAP, API_TABLE_COLUMN_LABELS, 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, ApiKeyService, ApiKeysModalComponent, AppConfigService, AppVersionService, ArticleBuilder, ArticleCardComponent, ArticleComponent, ArticleStripComponent, AttachmentUploaderComponent, AuthBackgroundComponent, AuthCtaComponent, AuthService, AuthStateService, AuthStorageService, AuthSyncService, AvatarComponent, AvatarUploadComponent, BOTTOM_NAV_DEFAULTS, BannerComponent, BaseDefault, BlogPostBuilder, BottomNavComponent, BoxComponent, BreadcrumbComponent, ButtonComponent, ButtonGroupComponent, CALLOUT_LABELS, CHEV_KEYS, CIRCLE_KEYS, COMMON_COUNTRY_CODES, COMMON_CURRENCIES, CONTENT_CARD_DEFAULTS, CORNER_KEYS, CTA_CARD_DEFAULTS, CURRENCY_INFO, CardComponent, CardSection, CardType, CardsCarouselComponent, ChangeEmailModalComponent, ChangePasswordModalComponent, CheckInputComponent, CheckboxRadioInputComponent, ChipGroupComponent, ClearDefault, ClearDefaultBlock, ClearDefaultFull, ClearDefaultRound, ClearDefaultRoundBlock, ClearDefaultRoundFull, CodeDisplayComponent, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, ContainerComponent, ContentCardComponent, 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_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_MODAL_CANCEL_BUTTON, DEFAULT_MODAL_CONFIRM_BUTTON, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLATFORMS, DEFAULT_REFRESHER_METADATA, DEFAULT_SKELETON_CONFIG, DEFAULT_SPLASH_SCREEN_CONFIG, DataTableComponent, DateInputComponent, DateRangeInputComponent, DebugConsoleComponent, DeleteAccountModalComponent, DetailSkeletonComponent, DeviceService, DisplayComponent, DividerComponent, DocsApiTableComponent, DocsBreadcrumbComponent, DocsBuilder, DocsCalloutComponent, DocsCodeExampleComponent, DocsLayoutComponent, DocsNavLinksComponent, DocsNavigationService, DocsPageComponent, DocsSearchComponent, DocsSectionComponent, DocsShellComponent, DocsSidebarComponent, DocsTocComponent, DonationService, DownloadService, EditOrgModalComponent, EmailInputComponent, EmptyStateComponent, ExpandableTextComponent, FEATURES_LIST_DEFAULTS, FUN_MODAL_DEFAULTS, FabComponent, FaqComponent, FeaturesListComponent, FeedbackFormComponent, FeedbackService, FileInputComponent, FirebaseService, FirestoreCollectionFactory, FirestoreService, FontSizeOption, FontSizeService, FooterComponent, FooterLinksComponent, FormComponent, FormSkeletonComponent, FunHeaderComponent, FunModalComponent, GlassComponent, GlowCardComponent, GlowComponent, GridSkeletonComponent, HANDOFF_ROUTE_PARAM, HANDOFF_TOKEN_PARAM, HandoffService, HasPermissionDirective, HeaderComponent, HintComponent, HorizontalScrollComponent, HourInputComponent, HrefComponent, I18nService, IMAGE_DEFAULTS, INFO_CARD_DEFAULTS, INITIAL_AUTH_STATE, INITIAL_MFA_STATE, INVITATION_CARD_DEFAULTS, Icon, IconComponent, IconService, ImageComponent, ImageCropComponent, ImageService, InAppBrowserService, InfiniteListComponent, InfoCardComponent, 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, NumberInputComponent, NumberStepperComponent, OAUTH_PROVIDERS_INFO, OAuthCallbackComponent, OAuthService, OrgInfoSheetComponent, OrgService, OrgSwitchService, OrganizationViewComponent, OutlineDefault, OutlineDefaultBlock, OutlineDefaultFull, OutlineDefaultRound, OutlineDefaultRoundBlock, OutlineDefaultRoundFull, PATTERN_MOTIFS, PATTERN_PALETTES, PATTERN_STYLE_CONFIGS, PLATFORM_CONFIGS, PageContentComponent, PageLinksComponent, PageRefreshService, PageTemplateComponent, PageWavesComponent, PageWrapperComponent, PaginationComponent, PaginationService, PasswordInputComponent, PatternComponent, PermissionCatalogService, PermissionSelectorComponent, PermissionsViewComponent, PhoneInputComponent, PillComponent, PinInputComponent, PlainCodeBoxComponent, PopoverSelectorComponent, PreferencesService, PreferencesViewComponent, PresetService, PriceTagComponent, PrimarySolidBlockButton, PrimarySolidBlockHrefButton, PrimarySolidBlockIconButton, PrimarySolidBlockIconHrefButton, PrimarySolidDefaultRoundButton, PrimarySolidDefaultRoundHrefButton, PrimarySolidDefaultRoundIconButton, PrimarySolidDefaultRoundIconHrefButton, PrimarySolidFullButton, PrimarySolidFullHrefButton, PrimarySolidFullIconButton, PrimarySolidFullIconHrefButton, PrimarySolidLargeRoundButton, PrimarySolidLargeRoundHrefButton, PrimarySolidLargeRoundIconButton, PrimarySolidLargeRoundIconHrefButton, PrimarySolidSmallRoundButton, PrimarySolidSmallRoundHrefButton, PrimarySolidSmallRoundIconButton, PrimarySolidSmallRoundIconHrefButton, ProcessLinksPipe, ProfileSkeletonComponent, ProfileViewComponent, ProgressBarComponent, ProgressRingComponent, ProgressStatusComponent, PrompterComponent, QR_PRESETS, QrCodeComponent, QrGeneratorService, QueryBuilder, QuoteBoxComponent, REQUEST_STATUSES, RadioInputComponent, RangeInputComponent, RatingComponent, RefresherComponent, RequestFirestoreService, RequestFormBuilderService, RequestService, RightsFooterComponent, RotatingTextComponent, SEARCH_HEADER_DEFAULTS, SETTINGS_SECTIONS_CATALOG, SHAPE_KEYS, SHARE_PROFILE_MODAL_DEFAULTS, SKELETON_LAYOUT_DEFAULT_ROWS, SKELETON_PRESETS, SOLID_KEYS, STATS_BAR_DEFAULTS, STROKE_KEYS, SearchHeaderComponent, SearchSelectorComponent, SearchbarComponent, SecondarySolidBlockButton, SecondarySolidBlockHrefButton, SecondarySolidBlockIconButton, SecondarySolidBlockIconHrefButton, SecondarySolidDefaultRoundButton, SecondarySolidDefaultRoundHrefButton, SecondarySolidDefaultRoundIconButton, SecondarySolidDefaultRoundIconHrefButton, SecondarySolidFullButton, SecondarySolidFullHrefButton, SecondarySolidFullIconButton, SecondarySolidFullIconHrefButton, SecondarySolidLargeRoundButton, SecondarySolidLargeRoundHrefButton, SecondarySolidLargeRoundIconButton, SecondarySolidLargeRoundIconHrefButton, SecondarySolidSmallRoundButton, SecondarySolidSmallRoundHrefButton, SecondarySolidSmallRoundIconButton, SecondarySolidSmallRoundIconHrefButton, SecurityViewComponent, SegmentControlComponent, SelectSearchComponent, SessionListModalComponent, SessionService, SettingsHubComponent, ShareButtonsComponent, ShareProfileModalComponent, SimpleComponent, SkeletonComponent, SkeletonLayoutComponent, SkeletonService, SolidBlockButton, SolidDefault, SolidDefaultBlock, SolidDefaultButton, SolidDefaultFull, SolidDefaultRound, SolidDefaultRoundBlock, SolidDefaultRoundButton, SolidDefaultRoundFull, SolidFullButton, SolidLargeButton, SolidLargeRoundButton, SolidSmallButton, SolidSmallRoundButton, SplashScreenService, StatsBarComponent, StatsCardComponent, StepperComponent, StorageService, SwipeCarouselComponent, SwitchOrgModalComponent, TRI_KEYS, TabbedContentComponent, TableSkeletonComponent, TabsComponent, Terminal404Component, TestimonialCardComponent, TestimonialCarouselComponent, TextComponent, TextInputComponent, TextareaInputComponent, ThemeOption, ThemeService, TimelineComponent, TitleBlockComponent, TitleComponent, ToastService, ToggleInputComponent, TokenService, ToolbarActionType, ToolbarComponent, TransferOwnershipModalComponent, TranslatePipe, TypedCollection, UPDATE_BANNER_DEFAULT_CONTENT, UPDATE_BANNER_I18N_NAMESPACE, UpdateBannerComponent, UserAvatarComponent, UsernameInputComponent, VALTECH_ADS_CONFIG, VALTECH_APP_CONFIG, VALTECH_APP_VERSION, VALTECH_AUTH_CONFIG, VALTECH_COMPANY_LINKS, VALTECH_CONTENT_CONFIG, VALTECH_DEBUG_CONSOLE, VALTECH_DEFAULT_CONTENT, VALTECH_DONATION_CONFIG, VALTECH_FEEDBACK_CONFIG, VALTECH_FIREBASE_CONFIG, VALTECH_FOOTER_I18N, VALTECH_FOOTER_LOGO, VALTECH_LANGUAGE_SELECTOR, VALTECH_LEGAL_CONFIG, VALTECH_NETWORK_ERROR_KEY, VALTECH_SETTINGS_MENU_LINKS, VALTECH_SITE_PATHS, VALTECH_SOCIAL_LINKS, VALTECH_SPLASH_SCREEN, VALTECH_WEB_BASE_URLS, VERSION, ValtechErrorService, WizardComponent, WizardFooterComponent, applyDefaultValueToControl, authGuard, authInterceptor, authPasswordValidator, beautifyLegalArticle, blogPost, buildCompanyFooterProps, buildFooterLinks, buildLegalLinkResolver, buildPath, buildSettingsCards, collections, connectPageRefresh, createErrorStateProps, createFirebaseConfig, createGlowCardProps, createInitialPaginationState, createNumberFromToField, createRefreshableStream, createTitleProps, docs, errorLoggingInterceptor, extractPathParams, generatePatternTiles, generateRandomTile, getAppInfo, getAppVersion, getCollectionPath, getDocumentId, getTimeOfDayKey, goToTop, guestGuard, hasEmulators, interpretError, isAtEnd, isCollectionPath, isDocumentPath, isEmulatorMode, isValidPath, joinPath, maxLength, mulberry32, news, parseMarkdownArticle, permissionGuard, permissionGuardFromRoute, provideLegalContent, provideSplashScreen, provideValtechAboutRoutes, provideValtechAccountRoutes, provideValtechAds, provideValtechAppConfig, provideValtechAppVersion, provideValtechAuth, provideValtechAuthInterceptor, provideValtechContent, provideValtechDebugConsole, provideValtechDonations, provideValtechErrorHandling, provideValtechFeedback, provideValtechFirebase, provideValtechI18n, provideValtechLegal, provideValtechNotificationPreferencesRoutes, provideValtechNotificationsRoutes, provideValtechOrganizationRoutes, provideValtechPermissionsRoutes, provideValtechPreferencesRoutes, provideValtechPresets, provideValtechProfileRoutes, provideValtechSecurityRoutes, provideValtechSettingsRoutes, provideValtechSite, provideValtechSkeleton, query, renderPatternSvgInner, replaceSpecialChars, resolveColor$1 as resolveColor, resolveInputDefaultValue, resolveWebBaseUrl, roleGuard, storagePaths, superAdminGuard, toArticle };
64697
+ export { ACTION_CARD_DEFAULTS, AD_SIZE_MAP, API_TABLE_COLUMN_LABELS, 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, ApiKeyService, ApiKeysModalComponent, AppConfigService, AppVersionService, ArticleBuilder, ArticleCardComponent, ArticleComponent, ArticleStripComponent, AttachmentUploaderComponent, AuthBackgroundComponent, AuthCtaComponent, AuthService, AuthStateService, AuthStorageService, AuthSyncService, AvatarComponent, AvatarUploadComponent, BOTTOM_NAV_DEFAULTS, BannerComponent, BaseDefault, BlogPostBuilder, BottomNavComponent, BoxComponent, BreadcrumbComponent, ButtonComponent, ButtonGroupComponent, CALLOUT_LABELS, CHEV_KEYS, CIRCLE_KEYS, COMMON_COUNTRY_CODES, COMMON_CURRENCIES, CONTENT_CARD_DEFAULTS, CORNER_KEYS, CTA_CARD_DEFAULTS, CURRENCY_INFO, CardComponent, CardSection, CardType, CardsCarouselComponent, ChangeEmailModalComponent, ChangePasswordModalComponent, CheckInputComponent, CheckboxRadioInputComponent, ChipGroupComponent, ClearDefault, ClearDefaultBlock, ClearDefaultFull, ClearDefaultRound, ClearDefaultRoundBlock, ClearDefaultRoundFull, CodeDisplayComponent, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, ContainerComponent, ContentCardComponent, 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_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_MODAL_CANCEL_BUTTON, DEFAULT_MODAL_CONFIRM_BUTTON, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLATFORMS, DEFAULT_REFRESHER_METADATA, DEFAULT_SKELETON_CONFIG, DEFAULT_SPLASH_SCREEN_CONFIG, DataTableComponent, DateInputComponent, DateRangeInputComponent, DebugConsoleComponent, DeleteAccountModalComponent, DetailSkeletonComponent, DeviceService, DisplayComponent, DividerComponent, DocsApiTableComponent, DocsBreadcrumbComponent, DocsBuilder, DocsCalloutComponent, DocsCodeExampleComponent, DocsLayoutComponent, DocsNavLinksComponent, DocsNavigationService, DocsPageComponent, DocsSearchComponent, DocsSectionComponent, DocsShellComponent, DocsSidebarComponent, DocsTocComponent, DonationService, DownloadService, EditOrgModalComponent, EmailInputComponent, EmptyStateComponent, ExpandableTextComponent, FEATURES_LIST_DEFAULTS, FUN_MODAL_DEFAULTS, FabComponent, FaqComponent, FeaturesListComponent, FeedbackFormComponent, FeedbackService, FileInputComponent, FirebaseService, FirestoreCollectionFactory, FirestoreService, FontSizeOption, FontSizeService, FooterComponent, FooterLinksComponent, FormComponent, FormSkeletonComponent, FunHeaderComponent, FunModalComponent, GlassComponent, GlowCardComponent, GlowComponent, GridSkeletonComponent, HANDOFF_ROUTE_PARAM, HANDOFF_TOKEN_PARAM, HandoffService, HasPermissionDirective, HeaderComponent, HintComponent, HorizontalScrollComponent, HourInputComponent, HrefComponent, I18nService, IMAGE_DEFAULTS, INFO_CARD_DEFAULTS, INITIAL_AUTH_STATE, INITIAL_MFA_STATE, INVITATION_CARD_DEFAULTS, Icon, IconComponent, IconService, ImageComponent, ImageCropComponent, ImageService, InAppBrowserService, InfiniteListComponent, InfoCardComponent, 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, NumberInputComponent, NumberStepperComponent, OAUTH_PROVIDERS_INFO, OAuthCallbackComponent, OAuthService, OrgInfoSheetComponent, OrgService, OrgSwitchService, OrganizationViewComponent, OutlineDefault, OutlineDefaultBlock, OutlineDefaultFull, OutlineDefaultRound, OutlineDefaultRoundBlock, OutlineDefaultRoundFull, PATTERN_MOTIFS, PATTERN_PALETTES, PATTERN_STYLE_CONFIGS, PLATFORM_CONFIGS, PageContentComponent, PageLinksComponent, PageRefreshService, PageTemplateComponent, PageWavesComponent, PageWrapperComponent, PaginationComponent, PaginationService, PasswordInputComponent, PatternComponent, PermissionCatalogService, PermissionSelectorComponent, PermissionsViewComponent, PhoneInputComponent, PillComponent, PinInputComponent, PlainCodeBoxComponent, PopoverSelectorComponent, PreferencesService, PreferencesViewComponent, PresetService, PriceTagComponent, PrimarySolidBlockButton, PrimarySolidBlockHrefButton, PrimarySolidBlockIconButton, PrimarySolidBlockIconHrefButton, PrimarySolidDefaultRoundButton, PrimarySolidDefaultRoundHrefButton, PrimarySolidDefaultRoundIconButton, PrimarySolidDefaultRoundIconHrefButton, PrimarySolidFullButton, PrimarySolidFullHrefButton, PrimarySolidFullIconButton, PrimarySolidFullIconHrefButton, PrimarySolidLargeRoundButton, PrimarySolidLargeRoundHrefButton, PrimarySolidLargeRoundIconButton, PrimarySolidLargeRoundIconHrefButton, PrimarySolidSmallRoundButton, PrimarySolidSmallRoundHrefButton, PrimarySolidSmallRoundIconButton, PrimarySolidSmallRoundIconHrefButton, ProcessLinksPipe, ProfileSkeletonComponent, ProfileViewComponent, ProgressBarComponent, ProgressRingComponent, ProgressStatusComponent, PrompterComponent, QR_PRESETS, QrCodeComponent, QrGeneratorService, QueryBuilder, QuoteBoxComponent, REQUEST_STATUSES, RadioInputComponent, RangeInputComponent, RatingComponent, RefresherComponent, RequestFirestoreService, RequestFormBuilderService, RequestService, RightsFooterComponent, RotatingTextComponent, SEARCH_HEADER_DEFAULTS, SETTINGS_SECTIONS_CATALOG, SHAPE_KEYS, SHARE_PROFILE_MODAL_DEFAULTS, SKELETON_LAYOUT_DEFAULT_ROWS, SKELETON_PRESETS, SOLID_KEYS, STATS_BAR_DEFAULTS, STROKE_KEYS, SearchHeaderComponent, SearchSelectorComponent, SearchbarComponent, SecondarySolidBlockButton, SecondarySolidBlockHrefButton, SecondarySolidBlockIconButton, SecondarySolidBlockIconHrefButton, SecondarySolidDefaultRoundButton, SecondarySolidDefaultRoundHrefButton, SecondarySolidDefaultRoundIconButton, SecondarySolidDefaultRoundIconHrefButton, SecondarySolidFullButton, SecondarySolidFullHrefButton, SecondarySolidFullIconButton, SecondarySolidFullIconHrefButton, SecondarySolidLargeRoundButton, SecondarySolidLargeRoundHrefButton, SecondarySolidLargeRoundIconButton, SecondarySolidLargeRoundIconHrefButton, SecondarySolidSmallRoundButton, SecondarySolidSmallRoundHrefButton, SecondarySolidSmallRoundIconButton, SecondarySolidSmallRoundIconHrefButton, SecurityViewComponent, SegmentControlComponent, SelectSearchComponent, SessionListModalComponent, SessionService, SettingsHubComponent, ShareButtonsComponent, ShareProfileModalComponent, SimpleComponent, SkeletonComponent, SkeletonLayoutComponent, SkeletonService, SolidBlockButton, SolidDefault, SolidDefaultBlock, SolidDefaultButton, SolidDefaultFull, SolidDefaultRound, SolidDefaultRoundBlock, SolidDefaultRoundButton, SolidDefaultRoundFull, SolidFullButton, SolidLargeButton, SolidLargeRoundButton, SolidSmallButton, SolidSmallRoundButton, SplashScreenService, StatsBarComponent, StatsCardComponent, StepperComponent, StorageService, SwipeCarouselComponent, SwitchOrgModalComponent, TRI_KEYS, TabbedContentComponent, TableSkeletonComponent, TabsComponent, Terminal404Component, TestimonialCardComponent, TestimonialCarouselComponent, TextComponent, TextInputComponent, TextareaInputComponent, ThemeOption, ThemeService, TimelineComponent, TitleBlockComponent, TitleComponent, ToastService, ToggleInputComponent, TokenService, ToolbarActionType, ToolbarComponent, TransferOwnershipModalComponent, TranslatePipe, TypedCollection, UPDATE_BANNER_DEFAULT_CONTENT, UPDATE_BANNER_I18N_NAMESPACE, UpdateBannerComponent, UserAvatarComponent, UsernameInputComponent, VALTECH_ADS_CONFIG, VALTECH_APP_CONFIG, VALTECH_APP_VERSION, VALTECH_AUTH_CONFIG, VALTECH_COMPANY_LINKS, VALTECH_CONTENT_CONFIG, VALTECH_DEBUG_CONSOLE, VALTECH_DEFAULT_CONTENT, VALTECH_DONATION_CONFIG, VALTECH_FEEDBACK_CONFIG, VALTECH_FIREBASE_CONFIG, VALTECH_FOOTER_I18N, VALTECH_FOOTER_LOGO, VALTECH_LANGUAGE_SELECTOR, VALTECH_LEGAL_CONFIG, VALTECH_NETWORK_ERROR_KEY, VALTECH_SETTINGS_MENU_LINKS, VALTECH_SITE_PATHS, VALTECH_SOCIAL_LINKS, VALTECH_SPLASH_SCREEN, VALTECH_WEB_BASE_URLS, VERSION, ValtechErrorService, WizardComponent, WizardFooterComponent, applyDefaultValueToControl, authGuard, authInterceptor, authPasswordValidator, beautifyLegalArticle, blogPost, buildCompanyFooterProps, buildFooterLinks, buildLegalLinkResolver, buildPath, buildSettingsCards, collections, connectPageRefresh, createErrorStateProps, createFirebaseConfig, createGlowCardProps, createInitialPaginationState, createNumberFromToField, createPermissionLabeler, createRefreshableStream, createTitleProps, docs, errorLoggingInterceptor, extractPathParams, generatePatternTiles, generateRandomTile, getAppInfo, getAppVersion, getCollectionPath, getDocumentId, getTimeOfDayKey, goToTop, guestGuard, hasEmulators, interpretError, isAtEnd, isCollectionPath, isDocumentPath, isEmulatorMode, isValidPath, joinPath, maxLength, mulberry32, news, parseMarkdownArticle, permissionGuard, permissionGuardFromRoute, provideLegalContent, provideSplashScreen, provideValtechAboutRoutes, provideValtechAccountRoutes, provideValtechAds, provideValtechAppConfig, provideValtechAppVersion, provideValtechAuth, provideValtechAuthInterceptor, provideValtechContent, provideValtechDebugConsole, provideValtechDonations, provideValtechErrorHandling, provideValtechFeedback, provideValtechFirebase, provideValtechI18n, provideValtechLegal, provideValtechNotificationPreferencesRoutes, provideValtechNotificationsRoutes, provideValtechOrganizationRoutes, provideValtechPermissionsRoutes, provideValtechPreferencesRoutes, provideValtechPresets, provideValtechProfileRoutes, provideValtechSecurityRoutes, provideValtechSettingsRoutes, provideValtechSite, provideValtechSkeleton, query, renderPatternSvgInner, replaceSpecialChars, resolveColor$1 as resolveColor, resolveInputDefaultValue, resolveWebBaseUrl, roleGuard, storagePaths, superAdminGuard, toArticle };
64633
64698
  //# sourceMappingURL=valtech-components.mjs.map