valtech-components 2.0.1008 → 2.0.1010

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.
Files changed (43) hide show
  1. package/esm2022/lib/components/molecules/date-input/date-input.component.mjs +38 -18
  2. package/esm2022/lib/components/organisms/about-view/about-view.component.mjs +436 -0
  3. package/esm2022/lib/components/organisms/about-view/about-view.i18n.mjs +61 -0
  4. package/esm2022/lib/components/organisms/about-view/about.routes.mjs +36 -0
  5. package/esm2022/lib/components/organisms/about-view/types.mjs +19 -0
  6. package/esm2022/lib/components/organisms/account-view/account-view.component.mjs +2 -2
  7. package/esm2022/lib/components/organisms/api-keys-modal/api-keys-modal.component.mjs +385 -0
  8. package/esm2022/lib/components/organisms/api-keys-modal/api-keys-modal.i18n.mjs +63 -0
  9. package/esm2022/lib/components/organisms/member-import-modal/member-import-modal.component.mjs +313 -0
  10. package/esm2022/lib/components/organisms/member-import-modal/member-import-modal.i18n.mjs +63 -0
  11. package/esm2022/lib/components/organisms/organization-view/organization-view.component.mjs +141 -3
  12. package/esm2022/lib/components/organisms/organization-view/organization-view.i18n.mjs +21 -1
  13. package/esm2022/lib/components/templates/auth-background/auth-background.component.mjs +39 -9
  14. package/esm2022/lib/services/apikeys/api-keys.service.mjs +46 -0
  15. package/esm2022/lib/services/apikeys/types.mjs +7 -0
  16. package/esm2022/lib/services/auth/auth.service.mjs +14 -1
  17. package/esm2022/lib/services/auth/types.mjs +1 -1
  18. package/esm2022/lib/services/org/org.service.mjs +8 -1
  19. package/esm2022/lib/services/org/types.mjs +1 -1
  20. package/esm2022/lib/version.mjs +2 -2
  21. package/esm2022/public-api.mjs +7 -1
  22. package/fesm2022/valtech-components.mjs +1938 -336
  23. package/fesm2022/valtech-components.mjs.map +1 -1
  24. package/lib/components/molecules/date-input/date-input.component.d.ts +16 -0
  25. package/lib/components/organisms/about-view/about-view.component.d.ts +88 -0
  26. package/lib/components/organisms/about-view/about-view.i18n.d.ts +14 -0
  27. package/lib/components/organisms/about-view/about.routes.d.ts +31 -0
  28. package/lib/components/organisms/about-view/types.d.ts +76 -0
  29. package/lib/components/organisms/api-keys-modal/api-keys-modal.component.d.ts +44 -0
  30. package/lib/components/organisms/api-keys-modal/api-keys-modal.i18n.d.ts +6 -0
  31. package/lib/components/organisms/member-import-modal/member-import-modal.component.d.ts +47 -0
  32. package/lib/components/organisms/member-import-modal/member-import-modal.i18n.d.ts +6 -0
  33. package/lib/components/organisms/organization-view/organization-view.component.d.ts +6 -0
  34. package/lib/components/templates/auth-background/auth-background.component.d.ts +4 -0
  35. package/lib/services/apikeys/api-keys.service.d.ts +25 -0
  36. package/lib/services/apikeys/types.d.ts +46 -0
  37. package/lib/services/auth/auth.service.d.ts +7 -1
  38. package/lib/services/auth/types.d.ts +23 -0
  39. package/lib/services/org/org.service.d.ts +6 -1
  40. package/lib/services/org/types.d.ts +30 -0
  41. package/lib/version.d.ts +1 -1
  42. package/package.json +1 -1
  43. package/public-api.d.ts +8 -1
@@ -0,0 +1,436 @@
1
+ import { Component, computed, inject, Input } from '@angular/core';
2
+ import { ActivatedRoute } from '@angular/router';
3
+ import { IonButton, IonGrid, IonIcon } from '@ionic/angular/standalone';
4
+ import { addIcons } from 'ionicons';
5
+ import { chatbubbleEllipsesOutline, copyOutline, helpCircleOutline, logoFacebook, logoInstagram, logoLinkedin, logoTiktok, logoTwitter, logoYoutube, shareSocialOutline, starOutline, } from 'ionicons/icons';
6
+ import { PillComponent } from '../../molecules/pill/pill.component';
7
+ import { ActionCardComponent } from '../../molecules/action-card/action-card.component';
8
+ import { TextComponent } from '../../atoms/text/text.component';
9
+ import { TitleComponent } from '../../atoms/title/title.component';
10
+ import { ContentReactionComponent } from '../../molecules/content-reaction/content-reaction.component';
11
+ import { I18nService } from '../../../services/i18n';
12
+ import { ModalService } from '../../../services/modal/modal.service';
13
+ import { NavigationService } from '../../../services/navigation/navigation.service';
14
+ import { ToastService } from '../../../services/toast.service';
15
+ import { ABOUT_VIEW_I18N } from './about-view.i18n';
16
+ import * as i0 from "@angular/core";
17
+ addIcons({
18
+ copyOutline,
19
+ starOutline,
20
+ chatbubbleEllipsesOutline,
21
+ shareSocialOutline,
22
+ helpCircleOutline,
23
+ logoFacebook,
24
+ logoInstagram,
25
+ logoLinkedin,
26
+ logoTwitter,
27
+ logoYoutube,
28
+ logoTiktok,
29
+ });
30
+ const DEFAULT_NAMESPACE = 'Settings.About';
31
+ const DEFAULT_BRAND_NAME = 'Valtech';
32
+ const DEFAULT_LOGO_SRC = 'assets/images/main-icon.png';
33
+ const DEFAULT_RATING_ENTITY_ID = 'experience';
34
+ /**
35
+ * `val-about-view` — vista About full-feature autocontenida (organism).
36
+ * Promovida desde `showcase` bajo el proceso de ADR-021. Reúne:
37
+ * - **HERO** — logo + nombre de marca + tagline + pill de versión (copiable).
38
+ * - **Descripción** — título + cuerpo.
39
+ * - **Acciones** — action-card de rating built-in (abre `val-content-reaction`
40
+ * DIRECTAMENTE vía `ModalService`, sin wrapper local — decisión CTO) + las
41
+ * acciones genéricas que el consumer aporte por `config.actions`.
42
+ * - **Redes** — links sociales (`config.socialLinks`); sección oculta si vacía.
43
+ * - **Footer** — copyright con el año actual.
44
+ *
45
+ * Lo app-specific (logo, nombre, versión, redes, acciones share/faq) viaja como
46
+ * DATA de config — NO como slots (ADR-021). La versión la pasa el consumer
47
+ * (`config.version` = su `APP_VERSION`); la lib NO importa el `version.ts` de la
48
+ * app. Si no se pasa versión, el pill se oculta.
49
+ *
50
+ * NO renderiza ion-content — vive dentro de val-page-wrapper. `ActivatedRoute`
51
+ * se inyecta `{ optional: true }` solo para leer el route data de config.
52
+ *
53
+ * Auto-registra sus defaults i18n (es/en) en el constructor si el consumer no
54
+ * proveyó el namespace configurado (default `Settings.About`).
55
+ *
56
+ * GOTCHA i18n ContentReaction: `val-content-reaction` exige su namespace
57
+ * `ContentReaction` registrado donde se use (key faltante en binding + CD =
58
+ * navegador congelado en dev). `ContentReactionComponent` se auto-registra ese
59
+ * namespace en SU constructor, y como se abre vía `ModalService` ese constructor
60
+ * corre antes de que su template binde — queda cubierto. Igual lo importamos
61
+ * como dependencia explícita de esta vista para que la garantía sea local.
62
+ */
63
+ export class AboutViewComponent {
64
+ /** Namespace i18n resuelto (capturado para llamadas no-reactivas). */
65
+ get ns() {
66
+ return this.resolvedConfig().i18nNamespace;
67
+ }
68
+ constructor() {
69
+ this.nav = inject(NavigationService);
70
+ this.i18n = inject(I18nService);
71
+ this.modalService = inject(ModalService);
72
+ this.toast = inject(ToastService);
73
+ this.route = inject(ActivatedRoute, { optional: true });
74
+ this.resolvedConfig = computed(() => {
75
+ const fromRoute = (this.route?.snapshot.data['aboutConfig'] ?? {});
76
+ const merged = { ...fromRoute, ...(this.config ?? {}) };
77
+ return {
78
+ brand: {
79
+ name: merged.brand?.name ?? DEFAULT_BRAND_NAME,
80
+ logoSrc: merged.brand?.logoSrc ?? DEFAULT_LOGO_SRC,
81
+ },
82
+ version: merged.version ?? '',
83
+ socialLinks: merged.socialLinks ?? [],
84
+ showRating: merged.showRating ?? true,
85
+ ratingEntityId: merged.ratingEntityId ?? DEFAULT_RATING_ENTITY_ID,
86
+ actions: merged.actions ?? [],
87
+ i18nNamespace: merged.i18nNamespace ?? DEFAULT_NAMESPACE,
88
+ onRated: merged.onRated,
89
+ };
90
+ });
91
+ this.brandName = computed(() => this.resolvedConfig().brand.name);
92
+ this.logoSrc = computed(() => this.resolvedConfig().brand.logoSrc);
93
+ this.version = computed(() => this.resolvedConfig().version);
94
+ this.socialLinks = computed(() => this.resolvedConfig().socialLinks);
95
+ this.showRating = computed(() => this.resolvedConfig().showRating);
96
+ this.actions = computed(() => this.resolvedConfig().actions);
97
+ /** Copyright del footer — año actual interpolado en `copyrightText`. */
98
+ this.copyright = computed(() => {
99
+ this.i18n.lang();
100
+ const year = String(new Date().getFullYear());
101
+ return this.tt('copyrightText').replace('{year}', year);
102
+ });
103
+ /** Title metadata para secciones — bold + size small. */
104
+ this.rateActionCard = computed(() => {
105
+ this.i18n.lang();
106
+ return {
107
+ icon: { ionicon: 'star-outline', color: 'primary' },
108
+ title: this.tt('rateTitle'),
109
+ description: this.tt('rateDesc'),
110
+ size: 'medium',
111
+ bordered: false,
112
+ shadowed: false,
113
+ };
114
+ });
115
+ const ns = this.ns;
116
+ if (!this.i18n.hasNamespace(ns)) {
117
+ this.i18n.registerContent(ns, ABOUT_VIEW_I18N);
118
+ }
119
+ this.nav.setBackHeader('pageTitle', ns, { withMenu: true });
120
+ }
121
+ /** Helper i18n bound al namespace resuelto. Reactivo vía `lang()`. */
122
+ tt(key) {
123
+ this.i18n.lang();
124
+ return this.i18n.t(key, this.ns);
125
+ }
126
+ /** Title metadata para secciones — bold + size small. */
127
+ sectionTitle(key) {
128
+ this.i18n.lang();
129
+ return {
130
+ content: this.tt(key),
131
+ size: 'small',
132
+ color: 'dark',
133
+ bold: true,
134
+ };
135
+ }
136
+ /** ActionCardMetadata para una acción genérica del consumer. */
137
+ extraActionCard(action) {
138
+ return {
139
+ icon: { ionicon: action.icon ?? 'chatbubble-ellipses-outline', color: 'primary' },
140
+ title: action.label,
141
+ description: action.description,
142
+ size: 'medium',
143
+ bordered: false,
144
+ shadowed: false,
145
+ };
146
+ }
147
+ /** Copia la versión al portapapeles + toast (color dark). */
148
+ async copyVersion() {
149
+ const v = this.version();
150
+ if (!v)
151
+ return;
152
+ try {
153
+ await navigator.clipboard.writeText(v);
154
+ this.toast.show({
155
+ message: this.tt('versionCopied').replace('{v}', v),
156
+ color: 'dark',
157
+ duration: 1500,
158
+ });
159
+ }
160
+ catch {
161
+ // clipboard no disponible — silencioso
162
+ }
163
+ }
164
+ /** Abre una URL externa en nueva tab. `mailto:` queda en la misma tab. */
165
+ openUrl(url) {
166
+ if (url.startsWith('mailto:')) {
167
+ window.location.href = url;
168
+ return;
169
+ }
170
+ window.open(url, '_blank', 'noopener,noreferrer');
171
+ }
172
+ /**
173
+ * "Calificar la app" — abre `val-content-reaction` DIRECTAMENTE como sheet
174
+ * modal (sin wrapper local — decisión CTO). El componente persiste la reacción
175
+ * contra el backend de feedback y muestra su propio estado de "gracias"; el
176
+ * sheet se cierra arrastrando (breakpoint 0). El namespace i18n
177
+ * `ContentReaction` lo auto-registra `ContentReactionComponent` en su
178
+ * constructor, que corre al crear el modal — sin riesgo de key faltante.
179
+ *
180
+ * Sheet (bottom sheet): el contenido scrollea dentro y el botón "Enviar" queda
181
+ * siempre alcanzable, también en viewports chicos.
182
+ */
183
+ async openRating() {
184
+ const reactionProps = {
185
+ // entityType "app" distingue esta reacción de las de artículos/FAQs.
186
+ entityRef: { entityType: 'app', entityId: this.resolvedConfig().ratingEntityId },
187
+ question: this.tt('rateQuestion'),
188
+ commentPlaceholder: this.tt('rateComment'),
189
+ thankYouMessage: this.tt('rateThanks'),
190
+ showComment: true,
191
+ showThankYou: true,
192
+ // Modal one-shot: NO bloquear el render con el check de rating previo.
193
+ skipInitialCheck: true,
194
+ emojis: ['😕', '🙂', '😍'],
195
+ emojiLabels: [this.tt('rateBad'), this.tt('rateMid'), this.tt('rateGood')],
196
+ };
197
+ await this.modalService.open({
198
+ component: ContentReactionComponent,
199
+ componentProps: { props: reactionProps },
200
+ breakpoints: {
201
+ initialBreakpoint: 0.9,
202
+ breakpoints: [0, 0.9, 1],
203
+ showHandle: true,
204
+ handleBehavior: 'cycle',
205
+ },
206
+ });
207
+ this.resolvedConfig().onRated?.();
208
+ }
209
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AboutViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
210
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AboutViewComponent, isStandalone: true, selector: "val-about-view", inputs: { config: "config" }, ngImport: i0, template: `
211
+ <ion-grid class="about-grid">
212
+ <!-- HERO: logo + name + version -->
213
+ <div class="about-hero">
214
+ <img class="about-hero__logo" [src]="logoSrc()" [alt]="brandName()" />
215
+ <val-title
216
+ [props]="{
217
+ content: brandName(),
218
+ size: 'xlarge',
219
+ color: 'dark',
220
+ bold: true,
221
+ }"
222
+ />
223
+ <val-text
224
+ [props]="{
225
+ content: tt('tagline'),
226
+ size: 'medium',
227
+ color: 'dark',
228
+ bold: false,
229
+ }"
230
+ />
231
+ @if (version()) {
232
+ <div
233
+ class="version-row"
234
+ (click)="copyVersion()"
235
+ role="button"
236
+ [attr.aria-label]="tt('versionLabel') + ' ' + version()"
237
+ >
238
+ <val-pill
239
+ [props]="{
240
+ label: tt('versionLabel') + ' ' + version(),
241
+ color: 'dark',
242
+ weight: 'bold',
243
+ size: 'small',
244
+ }"
245
+ />
246
+ <ion-icon name="copy-outline" class="version-copy-icon" />
247
+ </div>
248
+ }
249
+ </div>
250
+
251
+ <!-- DESCRIPTION -->
252
+ <section class="about-section">
253
+ <val-title [props]="sectionTitle('descTitle')" />
254
+ <val-text
255
+ [props]="{
256
+ content: tt('descBody'),
257
+ size: 'medium',
258
+ color: 'dark',
259
+ bold: false,
260
+ }"
261
+ />
262
+ </section>
263
+
264
+ <!-- ACTIONS — rating built-in + acciones del consumer. -->
265
+ @if (showRating() || actions().length > 0) {
266
+ <section class="about-section about-section--reviews">
267
+ <val-title [props]="sectionTitle('actionsTitle')" />
268
+ <div class="about-actions">
269
+ @if (showRating()) {
270
+ <val-action-card [props]="rateActionCard()" (onClick)="openRating()" />
271
+ }
272
+ @for (action of actions(); track action.label) {
273
+ <val-action-card [props]="extraActionCard(action)" (onClick)="action.onClick()" />
274
+ }
275
+ </div>
276
+ </section>
277
+ }
278
+
279
+ <!-- SOCIAL — penúltimo, justo antes del footer de derechos. -->
280
+ @if (socialLinks().length > 0) {
281
+ <section class="about-section">
282
+ <val-title [props]="sectionTitle('socialTitle')" />
283
+ <val-text
284
+ [props]="{
285
+ content: tt('socialDesc'),
286
+ size: 'medium',
287
+ color: 'dark',
288
+ bold: false,
289
+ }"
290
+ />
291
+ <div class="about-social">
292
+ @for (s of socialLinks(); track s.url) {
293
+ <ion-button
294
+ fill="clear"
295
+ size="small"
296
+ class="social-btn"
297
+ [attr.aria-label]="s.label"
298
+ (click)="openUrl(s.url)"
299
+ >
300
+ <ion-icon [name]="s.icon" slot="icon-only" />
301
+ </ion-button>
302
+ }
303
+ </div>
304
+ </section>
305
+ }
306
+
307
+ <!-- FOOTER -->
308
+ <footer class="about-footer">
309
+ <val-text
310
+ [props]="{
311
+ content: copyright(),
312
+ size: 'small',
313
+ color: 'dark',
314
+ bold: false,
315
+ }"
316
+ />
317
+ </footer>
318
+ </ion-grid>
319
+ `, isInline: true, styles: [":host{display:block}.about-grid{padding:16px 0;max-width:720px;margin:0 auto}.about-hero{display:flex;flex-direction:column;align-items:center;gap:8px;padding:24px 0 16px;text-align:center}.about-hero__logo{height:96px;width:auto;display:block}.version-row{display:flex;align-items:center;gap:6px;cursor:pointer;opacity:.85;transition:opacity .15s ease}.version-row:hover{opacity:1}.version-copy-icon{font-size:14px;color:var(--ion-color-medium)}.about-section{padding:16px 0 8px;display:flex;flex-direction:column;gap:8px}.about-actions{display:flex;flex-direction:column;gap:8px}.about-section--reviews val-action-card{display:block}.about-section--reviews val-action-card ::ng-deep .action-card{background:var(--ion-color-light, #f4f5f8);box-shadow:none}.about-section--reviews val-action-card ::ng-deep .action-card__description{color:var(--ion-color-dark);opacity:.7}.about-social{display:flex;flex-wrap:wrap;gap:10px;padding-top:8px}.about-social .social-btn{--border-radius: 50%;--background: var(--ion-color-light, #f4f5f8);--color: var(--ion-color-dark);--padding-start: 0;--padding-end: 0;width:48px;height:48px;margin:0;transition:transform .15s ease}.about-social .social-btn:hover{--background: var(--ion-color-primary-tint, #8a4ce5);--color: #fff;transform:translateY(-2px)}.about-social .social-btn ion-icon{font-size:22px}.about-footer{display:flex;flex-direction:column;align-items:center;gap:4px;padding:24px 0;text-align:center}:host-context(body.dark) val-action-card ::ng-deep .action-card,:host-context(html.ion-palette-dark) val-action-card ::ng-deep .action-card,:host-context([data-theme=\"dark\"]) val-action-card ::ng-deep .action-card{background:#ffffff0a}:host-context(body.dark) .about-section--reviews val-action-card ::ng-deep .action-card:hover,:host-context(html.ion-palette-dark) .about-section--reviews val-action-card ::ng-deep .action-card:hover,:host-context([data-theme=\"dark\"]) .about-section--reviews val-action-card ::ng-deep .action-card:hover{background:#ffffff14}:host-context(body.dark) .about-social .social-btn,:host-context(html.ion-palette-dark) .about-social .social-btn,:host-context([data-theme=\"dark\"]) .about-social .social-btn{--background: rgba(255, 255, 255, .04)}\n"], dependencies: [{ 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: IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: PillComponent, selector: "val-pill", inputs: ["preset", "props"], outputs: ["pillClick", "pillAction"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: ActionCardComponent, selector: "val-action-card", inputs: ["props"], outputs: ["onClick"] }] }); }
320
+ }
321
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AboutViewComponent, decorators: [{
322
+ type: Component,
323
+ args: [{ selector: 'val-about-view', standalone: true, imports: [IonButton, IonGrid, IonIcon, PillComponent, TitleComponent, TextComponent, ActionCardComponent], template: `
324
+ <ion-grid class="about-grid">
325
+ <!-- HERO: logo + name + version -->
326
+ <div class="about-hero">
327
+ <img class="about-hero__logo" [src]="logoSrc()" [alt]="brandName()" />
328
+ <val-title
329
+ [props]="{
330
+ content: brandName(),
331
+ size: 'xlarge',
332
+ color: 'dark',
333
+ bold: true,
334
+ }"
335
+ />
336
+ <val-text
337
+ [props]="{
338
+ content: tt('tagline'),
339
+ size: 'medium',
340
+ color: 'dark',
341
+ bold: false,
342
+ }"
343
+ />
344
+ @if (version()) {
345
+ <div
346
+ class="version-row"
347
+ (click)="copyVersion()"
348
+ role="button"
349
+ [attr.aria-label]="tt('versionLabel') + ' ' + version()"
350
+ >
351
+ <val-pill
352
+ [props]="{
353
+ label: tt('versionLabel') + ' ' + version(),
354
+ color: 'dark',
355
+ weight: 'bold',
356
+ size: 'small',
357
+ }"
358
+ />
359
+ <ion-icon name="copy-outline" class="version-copy-icon" />
360
+ </div>
361
+ }
362
+ </div>
363
+
364
+ <!-- DESCRIPTION -->
365
+ <section class="about-section">
366
+ <val-title [props]="sectionTitle('descTitle')" />
367
+ <val-text
368
+ [props]="{
369
+ content: tt('descBody'),
370
+ size: 'medium',
371
+ color: 'dark',
372
+ bold: false,
373
+ }"
374
+ />
375
+ </section>
376
+
377
+ <!-- ACTIONS — rating built-in + acciones del consumer. -->
378
+ @if (showRating() || actions().length > 0) {
379
+ <section class="about-section about-section--reviews">
380
+ <val-title [props]="sectionTitle('actionsTitle')" />
381
+ <div class="about-actions">
382
+ @if (showRating()) {
383
+ <val-action-card [props]="rateActionCard()" (onClick)="openRating()" />
384
+ }
385
+ @for (action of actions(); track action.label) {
386
+ <val-action-card [props]="extraActionCard(action)" (onClick)="action.onClick()" />
387
+ }
388
+ </div>
389
+ </section>
390
+ }
391
+
392
+ <!-- SOCIAL — penúltimo, justo antes del footer de derechos. -->
393
+ @if (socialLinks().length > 0) {
394
+ <section class="about-section">
395
+ <val-title [props]="sectionTitle('socialTitle')" />
396
+ <val-text
397
+ [props]="{
398
+ content: tt('socialDesc'),
399
+ size: 'medium',
400
+ color: 'dark',
401
+ bold: false,
402
+ }"
403
+ />
404
+ <div class="about-social">
405
+ @for (s of socialLinks(); track s.url) {
406
+ <ion-button
407
+ fill="clear"
408
+ size="small"
409
+ class="social-btn"
410
+ [attr.aria-label]="s.label"
411
+ (click)="openUrl(s.url)"
412
+ >
413
+ <ion-icon [name]="s.icon" slot="icon-only" />
414
+ </ion-button>
415
+ }
416
+ </div>
417
+ </section>
418
+ }
419
+
420
+ <!-- FOOTER -->
421
+ <footer class="about-footer">
422
+ <val-text
423
+ [props]="{
424
+ content: copyright(),
425
+ size: 'small',
426
+ color: 'dark',
427
+ bold: false,
428
+ }"
429
+ />
430
+ </footer>
431
+ </ion-grid>
432
+ `, styles: [":host{display:block}.about-grid{padding:16px 0;max-width:720px;margin:0 auto}.about-hero{display:flex;flex-direction:column;align-items:center;gap:8px;padding:24px 0 16px;text-align:center}.about-hero__logo{height:96px;width:auto;display:block}.version-row{display:flex;align-items:center;gap:6px;cursor:pointer;opacity:.85;transition:opacity .15s ease}.version-row:hover{opacity:1}.version-copy-icon{font-size:14px;color:var(--ion-color-medium)}.about-section{padding:16px 0 8px;display:flex;flex-direction:column;gap:8px}.about-actions{display:flex;flex-direction:column;gap:8px}.about-section--reviews val-action-card{display:block}.about-section--reviews val-action-card ::ng-deep .action-card{background:var(--ion-color-light, #f4f5f8);box-shadow:none}.about-section--reviews val-action-card ::ng-deep .action-card__description{color:var(--ion-color-dark);opacity:.7}.about-social{display:flex;flex-wrap:wrap;gap:10px;padding-top:8px}.about-social .social-btn{--border-radius: 50%;--background: var(--ion-color-light, #f4f5f8);--color: var(--ion-color-dark);--padding-start: 0;--padding-end: 0;width:48px;height:48px;margin:0;transition:transform .15s ease}.about-social .social-btn:hover{--background: var(--ion-color-primary-tint, #8a4ce5);--color: #fff;transform:translateY(-2px)}.about-social .social-btn ion-icon{font-size:22px}.about-footer{display:flex;flex-direction:column;align-items:center;gap:4px;padding:24px 0;text-align:center}:host-context(body.dark) val-action-card ::ng-deep .action-card,:host-context(html.ion-palette-dark) val-action-card ::ng-deep .action-card,:host-context([data-theme=\"dark\"]) val-action-card ::ng-deep .action-card{background:#ffffff0a}:host-context(body.dark) .about-section--reviews val-action-card ::ng-deep .action-card:hover,:host-context(html.ion-palette-dark) .about-section--reviews val-action-card ::ng-deep .action-card:hover,:host-context([data-theme=\"dark\"]) .about-section--reviews val-action-card ::ng-deep .action-card:hover{background:#ffffff14}:host-context(body.dark) .about-social .social-btn,:host-context(html.ion-palette-dark) .about-social .social-btn,:host-context([data-theme=\"dark\"]) .about-social .social-btn{--background: rgba(255, 255, 255, .04)}\n"] }]
433
+ }], ctorParameters: () => [], propDecorators: { config: [{
434
+ type: Input
435
+ }] } });
436
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJvdXQtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2Fib3V0LXZpZXcvYWJvdXQtdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsWUFBWSxFQUNaLGFBQWEsRUFDYixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLFdBQVcsR0FDWixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUV4RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRW5FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBR3ZHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saURBQWlELENB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkdUO3dEQStJUSxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBpbmplY3QsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJb25CdXR0b24sIElvbkdyaWQsIElvbkljb24gfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHtcbiAgY2hhdGJ1YmJsZUVsbGlwc2VzT3V0bGluZSxcbiAgY29weU91dGxpbmUsXG4gIGhlbHBDaXJjbGVPdXRsaW5lLFxuICBsb2dvRmFjZWJvb2ssXG4gIGxvZ29JbnN0YWdyYW0sXG4gIGxvZ29MaW5rZWRpbixcbiAgbG9nb1Rpa3RvayxcbiAgbG9nb1R3aXR0ZXIsXG4gIGxvZ29Zb3V0dWJlLFxuICBzaGFyZVNvY2lhbE91dGxpbmUsXG4gIHN0YXJPdXRsaW5lLFxufSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5cbmltcG9ydCB7IFBpbGxDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvcGlsbC9waWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBY3Rpb25DYXJkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2FjdGlvbi1jYXJkL2FjdGlvbi1jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBY3Rpb25DYXJkTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvYWN0aW9uLWNhcmQvdHlwZXMnO1xuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90aXRsZS90aXRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGl0bGVNZXRhZGF0YSB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3R5cGVzJztcbmltcG9ydCB7IENvbnRlbnRSZWFjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9jb250ZW50LXJlYWN0aW9uL2NvbnRlbnQtcmVhY3Rpb24uY29tcG9uZW50JztcbmltcG9ydCB7IENvbnRlbnRSZWFjdGlvbk1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2NvbnRlbnQtcmVhY3Rpb24vdHlwZXMnO1xuXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbW9kYWwvbW9kYWwuc2VydmljZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRpb24vbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBBYm91dEFjdGlvbiwgQWJvdXRWaWV3Q29uZmlnIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBBQk9VVF9WSUVXX0kxOE4gfSBmcm9tICcuL2Fib3V0LXZpZXcuaTE4bic7XG5cbmFkZEljb25zKHtcbiAgY29weU91dGxpbmUsXG4gIHN0YXJPdXRsaW5lLFxuICBjaGF0YnViYmxlRWxsaXBzZXNPdXRsaW5lLFxuICBzaGFyZVNvY2lhbE91dGxpbmUsXG4gIGhlbHBDaXJjbGVPdXRsaW5lLFxuICBsb2dvRmFjZWJvb2ssXG4gIGxvZ29JbnN0YWdyYW0sXG4gIGxvZ29MaW5rZWRpbixcbiAgbG9nb1R3aXR0ZXIsXG4gIGxvZ29Zb3V0dWJlLFxuICBsb2dvVGlrdG9rLFxufSk7XG5cbmNvbnN0IERFRkFVTFRfTkFNRVNQQUNFID0gJ1NldHRpbmdzLkFib3V0JztcbmNvbnN0IERFRkFVTFRfQlJBTkRfTkFNRSA9ICdWYWx0ZWNoJztcbmNvbnN0IERFRkFVTFRfTE9HT19TUkMgPSAnYXNzZXRzL2ltYWdlcy9tYWluLWljb24ucG5nJztcbmNvbnN0IERFRkFVTFRfUkFUSU5HX0VOVElUWV9JRCA9ICdleHBlcmllbmNlJztcblxuLyoqXG4gKiBgdmFsLWFib3V0LXZpZXdgIOKAlCB2aXN0YSBBYm91dCBmdWxsLWZlYXR1cmUgYXV0b2NvbnRlbmlkYSAob3JnYW5pc20pLlxuICogUHJvbW92aWRhIGRlc2RlIGBzaG93Y2FzZWAgYmFqbyBlbCBwcm9jZXNvIGRlIEFEUi0wMjEuIFJlw7puZTpcbiAqICAtICoqSEVSTyoqIOKAlCBsb2dvICsgbm9tYnJlIGRlIG1hcmNhICsgdGFnbGluZSArIHBpbGwgZGUgdmVyc2nDs24gKGNvcGlhYmxlKS5cbiAqICAtICoqRGVzY3JpcGNpw7NuKiog4oCUIHTDrXR1bG8gKyBjdWVycG8uXG4gKiAgLSAqKkFjY2lvbmVzKiog4oCUIGFjdGlvbi1jYXJkIGRlIHJhdGluZyBidWlsdC1pbiAoYWJyZSBgdmFsLWNvbnRlbnQtcmVhY3Rpb25gXG4gKiAgICBESVJFQ1RBTUVOVEUgdsOtYSBgTW9kYWxTZXJ2aWNlYCwgc2luIHdyYXBwZXIgbG9jYWwg4oCUIGRlY2lzacOzbiBDVE8pICsgbGFzXG4gKiAgICBhY2Npb25lcyBnZW7DqXJpY2FzIHF1ZSBlbCBjb25zdW1lciBhcG9ydGUgcG9yIGBjb25maWcuYWN0aW9uc2AuXG4gKiAgLSAqKlJlZGVzKiog4oCUIGxpbmtzIHNvY2lhbGVzIChgY29uZmlnLnNvY2lhbExpbmtzYCk7IHNlY2Npw7NuIG9jdWx0YSBzaSB2YWPDrWEuXG4gKiAgLSAqKkZvb3RlcioqIOKAlCBjb3B5cmlnaHQgY29uIGVsIGHDsW8gYWN0dWFsLlxuICpcbiAqIExvIGFwcC1zcGVjaWZpYyAobG9nbywgbm9tYnJlLCB2ZXJzacOzbiwgcmVkZXMsIGFjY2lvbmVzIHNoYXJlL2ZhcSkgdmlhamEgY29tb1xuICogREFUQSBkZSBjb25maWcg4oCUIE5PIGNvbW8gc2xvdHMgKEFEUi0wMjEpLiBMYSB2ZXJzacOzbiBsYSBwYXNhIGVsIGNvbnN1bWVyXG4gKiAoYGNvbmZpZy52ZXJzaW9uYCA9IHN1IGBBUFBfVkVSU0lPTmApOyBsYSBsaWIgTk8gaW1wb3J0YSBlbCBgdmVyc2lvbi50c2AgZGUgbGFcbiAqIGFwcC4gU2kgbm8gc2UgcGFzYSB2ZXJzacOzbiwgZWwgcGlsbCBzZSBvY3VsdGEuXG4gKlxuICogTk8gcmVuZGVyaXphIGlvbi1jb250ZW50IOKAlCB2aXZlIGRlbnRybyBkZSB2YWwtcGFnZS13cmFwcGVyLiBgQWN0aXZhdGVkUm91dGVgXG4gKiBzZSBpbnllY3RhIGB7IG9wdGlvbmFsOiB0cnVlIH1gIHNvbG8gcGFyYSBsZWVyIGVsIHJvdXRlIGRhdGEgZGUgY29uZmlnLlxuICpcbiAqIEF1dG8tcmVnaXN0cmEgc3VzIGRlZmF1bHRzIGkxOG4gKGVzL2VuKSBlbiBlbCBjb25zdHJ1Y3RvciBzaSBlbCBjb25zdW1lciBub1xuICogcHJvdmV5w7MgZWwgbmFtZXNwYWNlIGNvbmZpZ3VyYWRvIChkZWZhdWx0IGBTZXR0aW5ncy5BYm91dGApLlxuICpcbiAqIEdPVENIQSBpMThuIENvbnRlbnRSZWFjdGlvbjogYHZhbC1jb250ZW50LXJlYWN0aW9uYCBleGlnZSBzdSBuYW1lc3BhY2VcbiAqIGBDb250ZW50UmVhY3Rpb25gIHJlZ2lzdHJhZG8gZG9uZGUgc2UgdXNlIChrZXkgZmFsdGFudGUgZW4gYmluZGluZyArIENEID1cbiAqIG5hdmVnYWRvciBjb25nZWxhZG8gZW4gZGV2KS4gYENvbnRlbnRSZWFjdGlvbkNvbXBvbmVudGAgc2UgYXV0by1yZWdpc3RyYSBlc2VcbiAqIG5hbWVzcGFjZSBlbiBTVSBjb25zdHJ1Y3RvciwgeSBjb21vIHNlIGFicmUgdsOtYSBgTW9kYWxTZXJ2aWNlYCBlc2UgY29uc3RydWN0b3JcbiAqIGNvcnJlIGFudGVzIGRlIHF1ZSBzdSB0ZW1wbGF0ZSBiaW5kZSDigJQgcXVlZGEgY3ViaWVydG8uIElndWFsIGxvIGltcG9ydGFtb3NcbiAqIGNvbW8gZGVwZW5kZW5jaWEgZXhwbMOtY2l0YSBkZSBlc3RhIHZpc3RhIHBhcmEgcXVlIGxhIGdhcmFudMOtYSBzZWEgbG9jYWwuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1hYm91dC12aWV3JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0lvbkJ1dHRvbiwgSW9uR3JpZCwgSW9uSWNvbiwgUGlsbENvbXBvbmVudCwgVGl0bGVDb21wb25lbnQsIFRleHRDb21wb25lbnQsIEFjdGlvbkNhcmRDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24tZ3JpZCBjbGFzcz1cImFib3V0LWdyaWRcIj5cbiAgICAgIDwhLS0gSEVSTzogbG9nbyArIG5hbWUgKyB2ZXJzaW9uIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImFib3V0LWhlcm9cIj5cbiAgICAgICAgPGltZyBjbGFzcz1cImFib3V0LWhlcm9fX2xvZ29cIiBbc3JjXT1cImxvZ29TcmMoKVwiIFthbHRdPVwiYnJhbmROYW1lKClcIiAvPlxuICAgICAgICA8dmFsLXRpdGxlXG4gICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgIGNvbnRlbnQ6IGJyYW5kTmFtZSgpLFxuICAgICAgICAgICAgc2l6ZTogJ3hsYXJnZScsXG4gICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgYm9sZDogdHJ1ZSxcbiAgICAgICAgICB9XCJcbiAgICAgICAgLz5cbiAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCd0YWdsaW5lJyksXG4gICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICB9XCJcbiAgICAgICAgLz5cbiAgICAgICAgQGlmICh2ZXJzaW9uKCkpIHtcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInZlcnNpb24tcm93XCJcbiAgICAgICAgICAgIChjbGljayk9XCJjb3B5VmVyc2lvbigpXCJcbiAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0dCgndmVyc2lvbkxhYmVsJykgKyAnICcgKyB2ZXJzaW9uKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDx2YWwtcGlsbFxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0dCgndmVyc2lvbkxhYmVsJykgKyAnICcgKyB2ZXJzaW9uKCksXG4gICAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgICB3ZWlnaHQ6ICdib2xkJyxcbiAgICAgICAgICAgICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNvcHktb3V0bGluZVwiIGNsYXNzPVwidmVyc2lvbi1jb3B5LWljb25cIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBERVNDUklQVElPTiAtLT5cbiAgICAgIDxzZWN0aW9uIGNsYXNzPVwiYWJvdXQtc2VjdGlvblwiPlxuICAgICAgICA8dmFsLXRpdGxlIFtwcm9wc109XCJzZWN0aW9uVGl0bGUoJ2Rlc2NUaXRsZScpXCIgLz5cbiAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCdkZXNjQm9keScpLFxuICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgfVwiXG4gICAgICAgIC8+XG4gICAgICA8L3NlY3Rpb24+XG5cbiAgICAgIDwhLS0gQUNUSU9OUyDigJQgcmF0aW5nIGJ1aWx0LWluICsgYWNjaW9uZXMgZGVsIGNvbnN1bWVyLiAtLT5cbiAgICAgIEBpZiAoc2hvd1JhdGluZygpIHx8IGFjdGlvbnMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiYWJvdXQtc2VjdGlvbiBhYm91dC1zZWN0aW9uLS1yZXZpZXdzXCI+XG4gICAgICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwic2VjdGlvblRpdGxlKCdhY3Rpb25zVGl0bGUnKVwiIC8+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFib3V0LWFjdGlvbnNcIj5cbiAgICAgICAgICAgIEBpZiAoc2hvd1JhdGluZygpKSB7XG4gICAgICAgICAgICAgIDx2YWwtYWN0aW9uLWNhcmQgW3Byb3BzXT1cInJhdGVBY3Rpb25DYXJkKClcIiAob25DbGljayk9XCJvcGVuUmF0aW5nKClcIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGZvciAoYWN0aW9uIG9mIGFjdGlvbnMoKTsgdHJhY2sgYWN0aW9uLmxhYmVsKSB7XG4gICAgICAgICAgICAgIDx2YWwtYWN0aW9uLWNhcmQgW3Byb3BzXT1cImV4dHJhQWN0aW9uQ2FyZChhY3Rpb24pXCIgKG9uQ2xpY2spPVwiYWN0aW9uLm9uQ2xpY2soKVwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH1cblxuICAgICAgPCEtLSBTT0NJQUwg4oCUIHBlbsO6bHRpbW8sIGp1c3RvIGFudGVzIGRlbCBmb290ZXIgZGUgZGVyZWNob3MuIC0tPlxuICAgICAgQGlmIChzb2NpYWxMaW5rcygpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJhYm91dC1zZWN0aW9uXCI+XG4gICAgICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwic2VjdGlvblRpdGxlKCdzb2NpYWxUaXRsZScpXCIgLz5cbiAgICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCdzb2NpYWxEZXNjJyksXG4gICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFib3V0LXNvY2lhbFwiPlxuICAgICAgICAgICAgQGZvciAocyBvZiBzb2NpYWxMaW5rcygpOyB0cmFjayBzLnVybCkge1xuICAgICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNvY2lhbC1idG5cIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicy5sYWJlbFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5Vcmwocy51cmwpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJzLmljb25cIiBzbG90PVwiaWNvbi1vbmx5XCIgLz5cbiAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG5cbiAgICAgIDwhLS0gRk9PVEVSIC0tPlxuICAgICAgPGZvb3RlciBjbGFzcz1cImFib3V0LWZvb3RlclwiPlxuICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgY29udGVudDogY29weXJpZ2h0KCksXG4gICAgICAgICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgIH1cIlxuICAgICAgICAvPlxuICAgICAgPC9mb290ZXI+XG4gICAgPC9pb24tZ3JpZD5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cblxuICAgICAgLmFib3V0LWdyaWQge1xuICAgICAgICBwYWRkaW5nOiAxNnB4IDA7XG4gICAgICAgIG1heC13aWR0aDogNzIwcHg7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtaGVybyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBwYWRkaW5nOiAyNHB4IDAgMTZweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtaGVyb19fbG9nbyB7XG4gICAgICAgIGhlaWdodDogOTZweDtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuXG4gICAgICAudmVyc2lvbi1yb3cge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDZweDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBvcGFjaXR5OiAwLjg1O1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzIGVhc2U7XG4gICAgICB9XG5cbiAgICAgIC52ZXJzaW9uLXJvdzpob3ZlciB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG5cbiAgICAgIC52ZXJzaW9uLWNvcHktaWNvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0pO1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtc2VjdGlvbiB7XG4gICAgICAgIHBhZGRpbmc6IDE2cHggMCA4cHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtc2VjdGlvbi0tcmV2aWV3cyB2YWwtYWN0aW9uLWNhcmQge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cblxuICAgICAgLmFib3V0LXNlY3Rpb24tLXJldmlld3MgdmFsLWFjdGlvbi1jYXJkIDo6bmctZGVlcCAuYWN0aW9uLWNhcmQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQsICNmNGY1ZjgpO1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtc2VjdGlvbi0tcmV2aWV3cyB2YWwtYWN0aW9uLWNhcmQgOjpuZy1kZWVwIC5hY3Rpb24tY2FyZF9fZGVzY3JpcHRpb24ge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgICBvcGFjaXR5OiAwLjc7XG4gICAgICB9XG5cbiAgICAgIC5hYm91dC1zb2NpYWwge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgICAgcGFkZGluZy10b3A6IDhweDtcbiAgICAgIH1cblxuICAgICAgLmFib3V0LXNvY2lhbCAuc29jaWFsLWJ0biB7XG4gICAgICAgIC0tYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICAtLWJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1saWdodCwgI2Y0ZjVmOCk7XG4gICAgICAgIC0tY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcbiAgICAgICAgLS1wYWRkaW5nLXN0YXJ0OiAwO1xuICAgICAgICAtLXBhZGRpbmctZW5kOiAwO1xuICAgICAgICB3aWR0aDogNDhweDtcbiAgICAgICAgaGVpZ2h0OiA0OHB4O1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjE1cyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtc29jaWFsIC5zb2NpYWwtYnRuOmhvdmVyIHtcbiAgICAgICAgLS1iYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeS10aW50LCAjOGE0Y2U1KTtcbiAgICAgICAgLS1jb2xvcjogI2ZmZjtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtc29jaWFsIC5zb2NpYWwtYnRuIGlvbi1pY29uIHtcbiAgICAgICAgZm9udC1zaXplOiAyMnB4O1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtZm9vdGVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA0cHg7XG4gICAgICAgIHBhZGRpbmc6IDI0cHggMDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGJvZHkuZGFyaykgdmFsLWFjdGlvbi1jYXJkIDo6bmctZGVlcCAuYWN0aW9uLWNhcmQsXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgdmFsLWFjdGlvbi1jYXJkIDo6bmctZGVlcCAuYWN0aW9uLWNhcmQsXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIHZhbC1hY3Rpb24tY2FyZCA6Om5nLWRlZXAgLmFjdGlvbi1jYXJkIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA0KTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChib2R5LmRhcmspIC5hYm91dC1zZWN0aW9uLS1yZXZpZXdzIHZhbC1hY3Rpb24tY2FyZCA6Om5nLWRlZXAgLmFjdGlvbi1jYXJkOmhvdmVyLFxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC5hYm91dC1zZWN0aW9uLS1yZXZpZXdzIHZhbC1hY3Rpb24tY2FyZCA6Om5nLWRlZXAgLmFjdGlvbi1jYXJkOmhvdmVyLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAuYWJvdXQtc2VjdGlvbi0tcmV2aWV3cyB2YWwtYWN0aW9uLWNhcmQgOjpuZy1kZWVwIC5hY3Rpb24tY2FyZDpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoYm9keS5kYXJrKSAuYWJvdXQtc29jaWFsIC5zb2NpYWwtYnRuLFxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC5hYm91dC1zb2NpYWwgLnNvY2lhbC1idG4sXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5hYm91dC1zb2NpYWwgLnNvY2lhbC1idG4ge1xuICAgICAgICAtLWJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNCk7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQWJvdXRWaWV3Q29tcG9uZW50IHtcbiAgcHJpdmF0ZSBuYXYgPSBpbmplY3QoTmF2aWdhdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIG1vZGFsU2VydmljZSA9IGluamVjdChNb2RhbFNlcnZpY2UpO1xuICBwcml2YXRlIHRvYXN0ID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XG4gIHByaXZhdGUgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgLyoqXG4gICAqIENvbmZpZyB2w61hIEBJbnB1dCAob2JqZWN0LWZpcnN0KS4gU2kgbm8gc2UgcGFzYSwgc2UgY2FlIGFsIHJvdXRlIGRhdGFcbiAgICogYGFib3V0Q29uZmlnYCAocG9ibGFkbyBwb3IgYHByb3ZpZGVWYWx0ZWNoQWJvdXRSb3V0ZXNgKS4gYHJlc29sdmVkQ29uZmlnYFxuICAgKiBtZXJnZWEgY29uIGxvcyBkZWZhdWx0cyDigJQgYEBJbnB1dGAgZ2FuYSBzb2JyZSByb3V0ZSBkYXRhLlxuICAgKi9cbiAgQElucHV0KCkgY29uZmlnPzogQWJvdXRWaWV3Q29uZmlnO1xuXG4gIHJlYWRvbmx5IHJlc29sdmVkQ29uZmlnID0gY29tcHV0ZWQ8UmVxdWlyZWQ8T21pdDxBYm91dFZpZXdDb25maWcsICdvblJhdGVkJz4+ICYgUGljazxBYm91dFZpZXdDb25maWcsICdvblJhdGVkJz4+KFxuICAgICgpID0+IHtcbiAgICAgIGNvbnN0IGZyb21Sb3V0ZSA9ICh0aGlzLnJvdXRlPy5zbmFwc2hvdC5kYXRhWydhYm91dENvbmZpZyddID8/IHt9KSBhcyBBYm91dFZpZXdDb25maWc7XG4gICAgICBjb25zdCBtZXJnZWQ6IEFib3V0Vmlld0NvbmZpZyA9IHsgLi4uZnJvbVJvdXRlLCAuLi4odGhpcy5jb25maWcgPz8ge30pIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICBicmFuZDoge1xuICAgICAgICAgIG5hbWU6IG1lcmdlZC5icmFuZD8ubmFtZSA/PyBERUZBVUxUX0JSQU5EX05BTUUsXG4gICAgICAgICAgbG9nb1NyYzogbWVyZ2VkLmJyYW5kPy5sb2dvU3JjID8/IERFRkFVTFRfTE9HT19TUkMsXG4gICAgICAgIH0sXG4gICAgICAgIHZlcnNpb246IG1lcmdlZC52ZXJzaW9uID8/ICcnLFxuICAgICAgICBzb2NpYWxMaW5rczogbWVyZ2VkLnNvY2lhbExpbmtzID8/IFtdLFxuICAgICAgICBzaG93UmF0aW5nOiBtZXJnZWQuc2hvd1JhdGluZyA/PyB0cnVlLFxuICAgICAgICByYXRpbmdFbnRpdHlJZDogbWVyZ2VkLnJhdGluZ0VudGl0eUlkID8/IERFRkFVTFRfUkFUSU5HX0VOVElUWV9JRCxcbiAgICAgICAgYWN0aW9uczogbWVyZ2VkLmFjdGlvbnMgPz8gW10sXG4gICAgICAgIGkxOG5OYW1lc3BhY2U6IG1lcmdlZC5pMThuTmFtZXNwYWNlID8/IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICAgICBvblJhdGVkOiBtZXJnZWQub25SYXRlZCxcbiAgICAgIH07XG4gICAgfVxuICApO1xuXG4gIC8qKiBOYW1lc3BhY2UgaTE4biByZXN1ZWx0byAoY2FwdHVyYWRvIHBhcmEgbGxhbWFkYXMgbm8tcmVhY3RpdmFzKS4gKi9cbiAgcHJpdmF0ZSBnZXQgbnMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZENvbmZpZygpLmkxOG5OYW1lc3BhY2U7XG4gIH1cblxuICByZWFkb25seSBicmFuZE5hbWUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnJlc29sdmVkQ29uZmlnKCkuYnJhbmQubmFtZSEpO1xuICByZWFkb25seSBsb2dvU3JjID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yZXNvbHZlZENvbmZpZygpLmJyYW5kLmxvZ29TcmMhKTtcbiAgcmVhZG9ubHkgdmVyc2lvbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMucmVzb2x2ZWRDb25maWcoKS52ZXJzaW9uKTtcbiAgcmVhZG9ubHkgc29jaWFsTGlua3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnJlc29sdmVkQ29uZmlnKCkuc29jaWFsTGlua3MpO1xuICByZWFkb25seSBzaG93UmF0aW5nID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yZXNvbHZlZENvbmZpZygpLnNob3dSYXRpbmcpO1xuICByZWFkb25seSBhY3Rpb25zID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yZXNvbHZlZENvbmZpZygpLmFjdGlvbnMpO1xuXG4gIC8qKiBDb3B5cmlnaHQgZGVsIGZvb3RlciDigJQgYcOxbyBhY3R1YWwgaW50ZXJwb2xhZG8gZW4gYGNvcHlyaWdodFRleHRgLiAqL1xuICByZWFkb25seSBjb3B5cmlnaHQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICBjb25zdCB5ZWFyID0gU3RyaW5nKG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSk7XG4gICAgcmV0dXJuIHRoaXMudHQoJ2NvcHlyaWdodFRleHQnKS5yZXBsYWNlKCd7eWVhcn0nLCB5ZWFyKTtcbiAgfSk7XG5cbiAgLyoqIFRpdGxlIG1ldGFkYXRhIHBhcmEgc2VjY2lvbmVzIOKAlCBib2xkICsgc2l6ZSBzbWFsbC4gKi9cbiAgcmVhZG9ubHkgcmF0ZUFjdGlvbkNhcmQgPSBjb21wdXRlZDxBY3Rpb25DYXJkTWV0YWRhdGE+KCgpID0+IHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIHJldHVybiB7XG4gICAgICBpY29uOiB7IGlvbmljb246ICdzdGFyLW91dGxpbmUnLCBjb2xvcjogJ3ByaW1hcnknIH0sXG4gICAgICB0aXRsZTogdGhpcy50dCgncmF0ZVRpdGxlJyksXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy50dCgncmF0ZURlc2MnKSxcbiAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgYm9yZGVyZWQ6IGZhbHNlLFxuICAgICAgc2hhZG93ZWQ6IGZhbHNlLFxuICAgIH07XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IG5zID0gdGhpcy5ucztcbiAgICBpZiAoIXRoaXMuaTE4bi5oYXNOYW1lc3BhY2UobnMpKSB7XG4gICAgICB0aGlzLmkxOG4ucmVnaXN0ZXJDb250ZW50KG5zLCBBQk9VVF9WSUVXX0kxOE4pO1xuICAgIH1cbiAgICB0aGlzLm5hdi5zZXRCYWNrSGVhZGVyKCdwYWdlVGl0bGUnLCBucywgeyB3aXRoTWVudTogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8qKiBIZWxwZXIgaTE4biBib3VuZCBhbCBuYW1lc3BhY2UgcmVzdWVsdG8uIFJlYWN0aXZvIHbDrWEgYGxhbmcoKWAuICovXG4gIHByb3RlY3RlZCB0dChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCB0aGlzLm5zKTtcbiAgfVxuXG4gIC8qKiBUaXRsZSBtZXRhZGF0YSBwYXJhIHNlY2Npb25lcyDigJQgYm9sZCArIHNpemUgc21hbGwuICovXG4gIHByb3RlY3RlZCBzZWN0aW9uVGl0bGUoa2V5OiBzdHJpbmcpOiBUaXRsZU1ldGFkYXRhIHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiB0aGlzLnR0KGtleSksXG4gICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgIGJvbGQ6IHRydWUsXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBBY3Rpb25DYXJkTWV0YWRhdGEgcGFyYSB1bmEgYWNjacOzbiBnZW7DqXJpY2EgZGVsIGNvbnN1bWVyLiAqL1xuICBwcm90ZWN0ZWQgZXh0cmFBY3Rpb25DYXJkKGFjdGlvbjogQWJvdXRBY3Rpb24pOiBBY3Rpb25DYXJkTWV0YWRhdGEge1xuICAgIHJldHVybiB7XG4gICAgICBpY29uOiB7IGlvbmljb246IGFjdGlvbi5pY29uID8/ICdjaGF0YnViYmxlLWVsbGlwc2VzLW91dGxpbmUnLCBjb2xvcjogJ3ByaW1hcnknIH0sXG4gICAgICB0aXRsZTogYWN0aW9uLmxhYmVsLFxuICAgICAgZGVzY3JpcHRpb246IGFjdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgYm9yZGVyZWQ6IGZhbHNlLFxuICAgICAgc2hhZG93ZWQ6IGZhbHNlLFxuICAgIH07XG4gIH1cblxuICAvKiogQ29waWEgbGEgdmVyc2nDs24gYWwgcG9ydGFwYXBlbGVzICsgdG9hc3QgKGNvbG9yIGRhcmspLiAqL1xuICBhc3luYyBjb3B5VmVyc2lvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB2ID0gdGhpcy52ZXJzaW9uKCk7XG4gICAgaWYgKCF2KSByZXR1cm47XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHYpO1xuICAgICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgICAgbWVzc2FnZTogdGhpcy50dCgndmVyc2lvbkNvcGllZCcpLnJlcGxhY2UoJ3t2fScsIHYpLFxuICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICBkdXJhdGlvbjogMTUwMCxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gY2xpcGJvYXJkIG5vIGRpc3BvbmlibGUg4oCUIHNpbGVuY2lvc29cbiAgICB9XG4gIH1cblxuICAvKiogQWJyZSB1bmEgVVJMIGV4dGVybmEgZW4gbnVldmEgdGFiLiBgbWFpbHRvOmAgcXVlZGEgZW4gbGEgbWlzbWEgdGFiLiAqL1xuICBvcGVuVXJsKHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHVybC5zdGFydHNXaXRoKCdtYWlsdG86JykpIHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnLCAnbm9vcGVuZXIsbm9yZWZlcnJlcicpO1xuICB9XG5cbiAgLyoqXG4gICAqIFwiQ2FsaWZpY2FyIGxhIGFwcFwiIOKAlCBhYnJlIGB2YWwtY29udGVudC1yZWFjdGlvbmAgRElSRUNUQU1FTlRFIGNvbW8gc2hlZXRcbiAgICogbW9kYWwgKHNpbiB3cmFwcGVyIGxvY2FsIOKAlCBkZWNpc2nDs24gQ1RPKS4gRWwgY29tcG9uZW50ZSBwZXJzaXN0ZSBsYSByZWFjY2nDs25cbiAgICogY29udHJhIGVsIGJhY2tlbmQgZGUgZmVlZGJhY2sgeSBtdWVzdHJhIHN1IHByb3BpbyBlc3RhZG8gZGUgXCJncmFjaWFzXCI7IGVsXG4gICAqIHNoZWV0IHNlIGNpZXJyYSBhcnJhc3RyYW5kbyAoYnJlYWtwb2ludCAwKS4gRWwgbmFtZXNwYWNlIGkxOG5cbiAgICogYENvbnRlbnRSZWFjdGlvbmAgbG8gYXV0by1yZWdpc3RyYSBgQ29udGVudFJlYWN0aW9uQ29tcG9uZW50YCBlbiBzdVxuICAgKiBjb25zdHJ1Y3RvciwgcXVlIGNvcnJlIGFsIGNyZWFyIGVsIG1vZGFsIOKAlCBzaW4gcmllc2dvIGRlIGtleSBmYWx0YW50ZS5cbiAgICpcbiAgICogU2hlZXQgKGJvdHRvbSBzaGVldCk6IGVsIGNvbnRlbmlkbyBzY3JvbGxlYSBkZW50cm8geSBlbCBib3TDs24gXCJFbnZpYXJcIiBxdWVkYVxuICAgKiBzaWVtcHJlIGFsY2FuemFibGUsIHRhbWJpw6luIGVuIHZpZXdwb3J0cyBjaGljb3MuXG4gICAqL1xuICBhc3luYyBvcGVuUmF0aW5nKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHJlYWN0aW9uUHJvcHM6IFBhcnRpYWw8Q29udGVudFJlYWN0aW9uTWV0YWRhdGE+ID0ge1xuICAgICAgLy8gZW50aXR5VHlwZSBcImFwcFwiIGRpc3Rpbmd1ZSBlc3RhIHJlYWNjacOzbiBkZSBsYXMgZGUgYXJ0w61jdWxvcy9GQVFzLlxuICAgICAgZW50aXR5UmVmOiB7IGVudGl0eVR5cGU6ICdhcHAnLCBlbnRpdHlJZDogdGhpcy5yZXNvbHZlZENvbmZpZygpLnJhdGluZ0VudGl0eUlkIH0sXG4gICAgICBxdWVzdGlvbjogdGhpcy50dCgncmF0ZVF1ZXN0aW9uJyksXG4gICAgICBjb21tZW50UGxhY2Vob2xkZXI6IHRoaXMudHQoJ3JhdGVDb21tZW50JyksXG4gICAgICB0aGFua1lvdU1lc3NhZ2U6IHRoaXMudHQoJ3JhdGVUaGFua3MnKSxcbiAgICAgIHNob3dDb21tZW50OiB0cnVlLFxuICAgICAgc2hvd1RoYW5rWW91OiB0cnVlLFxuICAgICAgLy8gTW9kYWwgb25lLXNob3Q6IE5PIGJsb3F1ZWFyIGVsIHJlbmRlciBjb24gZWwgY2hlY2sgZGUgcmF0aW5nIHByZXZpby5cbiAgICAgIHNraXBJbml0aWFsQ2hlY2s6IHRydWUsXG4gICAgICBlbW9qaXM6IFsn8J+YlScsICfwn5mCJywgJ/CfmI0nXSxcbiAgICAgIGVtb2ppTGFiZWxzOiBbdGhpcy50dCgncmF0ZUJhZCcpLCB0aGlzLnR0KCdyYXRlTWlkJyksIHRoaXMudHQoJ3JhdGVHb29kJyldLFxuICAgIH07XG4gICAgYXdhaXQgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbjxDb250ZW50UmVhY3Rpb25Db21wb25lbnQ+KHtcbiAgICAgIGNvbXBvbmVudDogQ29udGVudFJlYWN0aW9uQ29tcG9uZW50LFxuICAgICAgY29tcG9uZW50UHJvcHM6IHsgcHJvcHM6IHJlYWN0aW9uUHJvcHMgfSxcbiAgICAgIGJyZWFrcG9pbnRzOiB7XG4gICAgICAgIGluaXRpYWxCcmVha3BvaW50OiAwLjksXG4gICAgICAgIGJyZWFrcG9pbnRzOiBbMCwgMC45LCAxXSxcbiAgICAgICAgc2hvd0hhbmRsZTogdHJ1ZSxcbiAgICAgICAgaGFuZGxlQmVoYXZpb3I6ICdjeWNsZScsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHRoaXMucmVzb2x2ZWRDb25maWcoKS5vblJhdGVkPy4oKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Defaults i18n (es/en) embebidos en `val-about-view`. Auto-registrados en el
3
+ * constructor del componente si el consumer no proveyó el namespace
4
+ * (`Settings.About` por default). SOLO incluye las keys que la vista usa.
5
+ *
6
+ * Textos portados EXACTOS del override `Settings.About` de showcase
7
+ * (`frontend/showcase/src/i18n/index.ts`). Las keys de las acciones
8
+ * showcase-specific (`feedback*`, `share*`, `faq*`, `donate*`) NO se incluyen:
9
+ * esas acciones se modelan ahora como `actions[]` de la config (el consumer
10
+ * aporta sus propios textos). `copyrightText` se incluye aquí (antes salía del
11
+ * namespace `Layout`) para que la vista sea autocontenida.
12
+ */
13
+ export const ABOUT_VIEW_I18N = {
14
+ es: {
15
+ pageTitle: 'Acerca de',
16
+ pageDescription: 'Demo del factory Valtech',
17
+ tagline: 'App de demo — explora las funcionalidades en vivo',
18
+ descTitle: 'Acerca de Showcase',
19
+ descBody: 'Showcase es la app de referencia del factory Valtech. Aquí puedes explorar el flujo completo en vivo: autenticación, perfil, organizaciones, notificaciones y ajustes de cuenta.',
20
+ actionsTitle: 'Acciones',
21
+ rateTitle: 'Calificar la app',
22
+ rateDesc: 'Cuéntanos qué te ha parecido la experiencia.',
23
+ rateModalTitle: 'Tu opinión',
24
+ rateQuestion: '¿Qué te ha parecido la experiencia hasta ahora?',
25
+ rateComment: 'Cuéntanos más (opcional)…',
26
+ rateThanks: '¡Gracias por tu opinión!',
27
+ rateClose: 'Cerrar',
28
+ rateBad: 'No tanto',
29
+ rateMid: 'Bien',
30
+ rateGood: '¡Me encanta!',
31
+ socialTitle: 'Síguenos',
32
+ socialDesc: 'Estamos en redes sociales.',
33
+ versionLabel: 'Versión',
34
+ versionCopied: 'v{v} copiado',
35
+ copyrightText: '© {year}, Soluciones Valtech Ltda. o sus afiliados. Todos los derechos reservados.',
36
+ },
37
+ en: {
38
+ pageTitle: 'About',
39
+ pageDescription: 'Valtech factory demo',
40
+ tagline: 'Demo app — explore features live',
41
+ descTitle: 'About Showcase',
42
+ descBody: 'Showcase is the reference app for the Valtech factory. Explore the full flow live: authentication, profile, organizations, notifications and account settings.',
43
+ actionsTitle: 'Actions',
44
+ rateTitle: 'Rate the app',
45
+ rateDesc: 'Tell us how your experience has been.',
46
+ rateModalTitle: 'Your feedback',
47
+ rateQuestion: 'How has your experience been so far?',
48
+ rateComment: 'Tell us more (optional)…',
49
+ rateThanks: 'Thanks for your feedback!',
50
+ rateClose: 'Close',
51
+ rateBad: 'Not great',
52
+ rateMid: 'Good',
53
+ rateGood: 'Love it!',
54
+ socialTitle: 'Follow us',
55
+ socialDesc: "We're on social media.",
56
+ versionLabel: 'Version',
57
+ versionCopied: 'v{v} copied',
58
+ copyrightText: '© {year}, Soluciones Valtech Ltda. or its affiliates. All rights reserved.',
59
+ },
60
+ };
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJvdXQtdmlldy5pMThuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9hYm91dC12aWV3L2Fib3V0LXZpZXcuaTE4bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBcUI7SUFDL0MsRUFBRSxFQUFFO1FBQ0YsU0FBUyxFQUFFLFdBQVc7UUFDdEIsZUFBZSxFQUFFLDBCQUEwQjtRQUMzQyxPQUFPLEVBQUUsbURBQW1EO1FBQzVELFNBQVMsRUFBRSxvQkFBb0I7UUFDL0IsUUFBUSxFQUNOLGtMQUFrTDtRQUNwTCxZQUFZLEVBQUUsVUFBVTtRQUN4QixTQUFTLEVBQUUsa0JBQWtCO1FBQzdCLFFBQVEsRUFBRSw4Q0FBOEM7UUFDeEQsY0FBYyxFQUFFLFlBQVk7UUFDNUIsWUFBWSxFQUFFLGlEQUFpRDtRQUMvRCxXQUFXLEVBQUUsMkJBQTJCO1FBQ3hDLFVBQVUsRUFBRSwwQkFBMEI7UUFDdEMsU0FBUyxFQUFFLFFBQVE7UUFDbkIsT0FBTyxFQUFFLFVBQVU7UUFDbkIsT0FBTyxFQUFFLE1BQU07UUFDZixRQUFRLEVBQUUsY0FBYztRQUN4QixXQUFXLEVBQUUsVUFBVTtRQUN2QixVQUFVLEVBQUUsNEJBQTRCO1FBQ3hDLFlBQVksRUFBRSxTQUFTO1FBQ3ZCLGFBQWEsRUFBRSxjQUFjO1FBQzdCLGFBQWEsRUFDWCxvRkFBb0Y7S0FDdkY7SUFDRCxFQUFFLEVBQUU7UUFDRixTQUFTLEVBQUUsT0FBTztRQUNsQixlQUFlLEVBQUUsc0JBQXNCO1FBQ3ZDLE9BQU8sRUFBRSxrQ0FBa0M7UUFDM0MsU0FBUyxFQUFFLGdCQUFnQjtRQUMzQixRQUFRLEVBQ04sZ0tBQWdLO1FBQ2xLLFlBQVksRUFBRSxTQUFTO1FBQ3ZCLFNBQVMsRUFBRSxjQUFjO1FBQ3pCLFFBQVEsRUFBRSx1Q0FBdUM7UUFDakQsY0FBYyxFQUFFLGVBQWU7UUFDL0IsWUFBWSxFQUFFLHNDQUFzQztRQUNwRCxXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLFVBQVUsRUFBRSwyQkFBMkI7UUFDdkMsU0FBUyxFQUFFLE9BQU87UUFDbEIsT0FBTyxFQUFFLFdBQVc7UUFDcEIsT0FBTyxFQUFFLE1BQU07UUFDZixRQUFRLEVBQUUsVUFBVTtRQUNwQixXQUFXLEVBQUUsV0FBVztRQUN4QixVQUFVLEVBQUUsd0JBQXdCO1FBQ3BDLFlBQVksRUFBRSxTQUFTO1FBQ3ZCLGFBQWEsRUFBRSxhQUFhO1FBQzVCLGFBQWEsRUFBRSw0RUFBNEU7S0FDNUY7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGFuZ3VhZ2VzQ29udGVudCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4vdHlwZXMnO1xuXG4vKipcbiAqIERlZmF1bHRzIGkxOG4gKGVzL2VuKSBlbWJlYmlkb3MgZW4gYHZhbC1hYm91dC12aWV3YC4gQXV0by1yZWdpc3RyYWRvcyBlbiBlbFxuICogY29uc3RydWN0b3IgZGVsIGNvbXBvbmVudGUgc2kgZWwgY29uc3VtZXIgbm8gcHJvdmV5w7MgZWwgbmFtZXNwYWNlXG4gKiAoYFNldHRpbmdzLkFib3V0YCBwb3IgZGVmYXVsdCkuIFNPTE8gaW5jbHV5ZSBsYXMga2V5cyBxdWUgbGEgdmlzdGEgdXNhLlxuICpcbiAqIFRleHRvcyBwb3J0YWRvcyBFWEFDVE9TIGRlbCBvdmVycmlkZSBgU2V0dGluZ3MuQWJvdXRgIGRlIHNob3djYXNlXG4gKiAoYGZyb250ZW5kL3Nob3djYXNlL3NyYy9pMThuL2luZGV4LnRzYCkuIExhcyBrZXlzIGRlIGxhcyBhY2Npb25lc1xuICogc2hvd2Nhc2Utc3BlY2lmaWMgKGBmZWVkYmFjaypgLCBgc2hhcmUqYCwgYGZhcSpgLCBgZG9uYXRlKmApIE5PIHNlIGluY2x1eWVuOlxuICogZXNhcyBhY2Npb25lcyBzZSBtb2RlbGFuIGFob3JhIGNvbW8gYGFjdGlvbnNbXWAgZGUgbGEgY29uZmlnIChlbCBjb25zdW1lclxuICogYXBvcnRhIHN1cyBwcm9waW9zIHRleHRvcykuIGBjb3B5cmlnaHRUZXh0YCBzZSBpbmNsdXllIGFxdcOtIChhbnRlcyBzYWzDrWEgZGVsXG4gKiBuYW1lc3BhY2UgYExheW91dGApIHBhcmEgcXVlIGxhIHZpc3RhIHNlYSBhdXRvY29udGVuaWRhLlxuICovXG5leHBvcnQgY29uc3QgQUJPVVRfVklFV19JMThOOiBMYW5ndWFnZXNDb250ZW50ID0ge1xuICBlczoge1xuICAgIHBhZ2VUaXRsZTogJ0FjZXJjYSBkZScsXG4gICAgcGFnZURlc2NyaXB0aW9uOiAnRGVtbyBkZWwgZmFjdG9yeSBWYWx0ZWNoJyxcbiAgICB0YWdsaW5lOiAnQXBwIGRlIGRlbW8g4oCUIGV4cGxvcmEgbGFzIGZ1bmNpb25hbGlkYWRlcyBlbiB2aXZvJyxcbiAgICBkZXNjVGl0bGU6ICdBY2VyY2EgZGUgU2hvd2Nhc2UnLFxuICAgIGRlc2NCb2R5OlxuICAgICAgJ1Nob3djYXNlIGVzIGxhIGFwcCBkZSByZWZlcmVuY2lhIGRlbCBmYWN0b3J5IFZhbHRlY2guIEFxdcOtIHB1ZWRlcyBleHBsb3JhciBlbCBmbHVqbyBjb21wbGV0byBlbiB2aXZvOiBhdXRlbnRpY2FjacOzbiwgcGVyZmlsLCBvcmdhbml6YWNpb25lcywgbm90aWZpY2FjaW9uZXMgeSBhanVzdGVzIGRlIGN1ZW50YS4nLFxuICAgIGFjdGlvbnNUaXRsZTogJ0FjY2lvbmVzJyxcbiAgICByYXRlVGl0bGU6ICdDYWxpZmljYXIgbGEgYXBwJyxcbiAgICByYXRlRGVzYzogJ0N1w6ludGFub3MgcXXDqSB0ZSBoYSBwYXJlY2lkbyBsYSBleHBlcmllbmNpYS4nLFxuICAgIHJhdGVNb2RhbFRpdGxlOiAnVHUgb3BpbmnDs24nLFxuICAgIHJhdGVRdWVzdGlvbjogJ8K/UXXDqSB0ZSBoYSBwYXJlY2lkbyBsYSBleHBlcmllbmNpYSBoYXN0YSBhaG9yYT8nLFxuICAgIHJhdGVDb21tZW50OiAnQ3XDqW50YW5vcyBtw6FzIChvcGNpb25hbCnigKYnLFxuICAgIHJhdGVUaGFua3M6ICfCoUdyYWNpYXMgcG9yIHR1IG9waW5pw7NuIScsXG4gICAgcmF0ZUNsb3NlOiAnQ2VycmFyJyxcbiAgICByYXRlQmFkOiAnTm8gdGFudG8nLFxuICAgIHJhdGVNaWQ6ICdCaWVuJyxcbiAgICByYXRlR29vZDogJ8KhTWUgZW5jYW50YSEnLFxuICAgIHNvY2lhbFRpdGxlOiAnU8OtZ3Vlbm9zJyxcbiAgICBzb2NpYWxEZXNjOiAnRXN0YW1vcyBlbiByZWRlcyBzb2NpYWxlcy4nLFxuICAgIHZlcnNpb25MYWJlbDogJ1ZlcnNpw7NuJyxcbiAgICB2ZXJzaW9uQ29waWVkOiAndnt2fSBjb3BpYWRvJyxcbiAgICBjb3B5cmlnaHRUZXh0OlxuICAgICAgJ8KpIHt5ZWFyfSwgU29sdWNpb25lcyBWYWx0ZWNoIEx0ZGEuIG8gc3VzIGFmaWxpYWRvcy4gVG9kb3MgbG9zIGRlcmVjaG9zIHJlc2VydmFkb3MuJyxcbiAgfSxcbiAgZW46IHtcbiAgICBwYWdlVGl0bGU6ICdBYm91dCcsXG4gICAgcGFnZURlc2NyaXB0aW9uOiAnVmFsdGVjaCBmYWN0b3J5IGRlbW8nLFxuICAgIHRhZ2xpbmU6ICdEZW1vIGFwcCDigJQgZXhwbG9yZSBmZWF0dXJlcyBsaXZlJyxcbiAgICBkZXNjVGl0bGU6ICdBYm91dCBTaG93Y2FzZScsXG4gICAgZGVzY0JvZHk6XG4gICAgICAnU2hvd2Nhc2UgaXMgdGhlIHJlZmVyZW5jZSBhcHAgZm9yIHRoZSBWYWx0ZWNoIGZhY3RvcnkuIEV4cGxvcmUgdGhlIGZ1bGwgZmxvdyBsaXZlOiBhdXRoZW50aWNhdGlvbiwgcHJvZmlsZSwgb3JnYW5pemF0aW9ucywgbm90aWZpY2F0aW9ucyBhbmQgYWNjb3VudCBzZXR0aW5ncy4nLFxuICAgIGFjdGlvbnNUaXRsZTogJ0FjdGlvbnMnLFxuICAgIHJhdGVUaXRsZTogJ1JhdGUgdGhlIGFwcCcsXG4gICAgcmF0ZURlc2M6ICdUZWxsIHVzIGhvdyB5b3VyIGV4cGVyaWVuY2UgaGFzIGJlZW4uJyxcbiAgICByYXRlTW9kYWxUaXRsZTogJ1lvdXIgZmVlZGJhY2snLFxuICAgIHJhdGVRdWVzdGlvbjogJ0hvdyBoYXMgeW91ciBleHBlcmllbmNlIGJlZW4gc28gZmFyPycsXG4gICAgcmF0ZUNvbW1lbnQ6ICdUZWxsIHVzIG1vcmUgKG9wdGlvbmFsKeKApicsXG4gICAgcmF0ZVRoYW5rczogJ1RoYW5rcyBmb3IgeW91ciBmZWVkYmFjayEnLFxuICAgIHJhdGVDbG9zZTogJ0Nsb3NlJyxcbiAgICByYXRlQmFkOiAnTm90IGdyZWF0JyxcbiAgICByYXRlTWlkOiAnR29vZCcsXG4gICAgcmF0ZUdvb2Q6ICdMb3ZlIGl0IScsXG4gICAgc29jaWFsVGl0bGU6ICdGb2xsb3cgdXMnLFxuICAgIHNvY2lhbERlc2M6IFwiV2UncmUgb24gc29jaWFsIG1lZGlhLlwiLFxuICAgIHZlcnNpb25MYWJlbDogJ1ZlcnNpb24nLFxuICAgIHZlcnNpb25Db3BpZWQ6ICd2e3Z9IGNvcGllZCcsXG4gICAgY29weXJpZ2h0VGV4dDogJ8KpIHt5ZWFyfSwgU29sdWNpb25lcyBWYWx0ZWNoIEx0ZGEuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLicsXG4gIH0sXG59O1xuIl19
@@ -0,0 +1,36 @@
1
+ import { AboutViewComponent } from './about-view.component';
2
+ /**
3
+ * Helper para montar la vista About (`val-about-view`) como ruta en una app del
4
+ * factory. El `config` se pasa por route `data` (`aboutConfig`) y el componente
5
+ * lo lee como fallback de su `@Input() config` (el `@Input` gana).
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * // settings.routes.ts
10
+ * import { APP_VERSION } from '../version';
11
+ *
12
+ * export const settingsRoutes: Routes = [
13
+ * ...provideValtechAboutRoutes({ config: { version: APP_VERSION } }), // → /app/about
14
+ * { path: 'preferences', loadComponent: () => ... },
15
+ * ];
16
+ *
17
+ * // con redes y acciones extra:
18
+ * ...provideValtechAboutRoutes({
19
+ * config: {
20
+ * version: APP_VERSION,
21
+ * socialLinks: VALTECH_SOCIAL_LINKS.map(s => ({ icon: s.icon, url: s.url, label: s.name })),
22
+ * actions: [{ label: 'Compartir', icon: 'share-social-outline', onClick: () => share() }],
23
+ * },
24
+ * }),
25
+ * ```
26
+ */
27
+ export function provideValtechAboutRoutes(opts) {
28
+ return [
29
+ {
30
+ path: opts?.path ?? 'about',
31
+ component: AboutViewComponent,
32
+ data: { aboutConfig: opts?.config },
33
+ },
34
+ ];
35
+ }
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJvdXQucm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9hYm91dC12aWV3L2Fib3V0LnJvdXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUc1RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUFDLElBR3pDO0lBQ0MsT0FBTztRQUNMO1lBQ0UsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksT0FBTztZQUMzQixTQUFTLEVBQUUsa0JBQWtCO1lBQzdCLElBQUksRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO1NBQ3BDO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3V0ZXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBBYm91dFZpZXdDb21wb25lbnQgfSBmcm9tICcuL2Fib3V0LXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IEFib3V0Vmlld0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIEhlbHBlciBwYXJhIG1vbnRhciBsYSB2aXN0YSBBYm91dCAoYHZhbC1hYm91dC12aWV3YCkgY29tbyBydXRhIGVuIHVuYSBhcHAgZGVsXG4gKiBmYWN0b3J5LiBFbCBgY29uZmlnYCBzZSBwYXNhIHBvciByb3V0ZSBgZGF0YWAgKGBhYm91dENvbmZpZ2ApIHkgZWwgY29tcG9uZW50ZVxuICogbG8gbGVlIGNvbW8gZmFsbGJhY2sgZGUgc3UgYEBJbnB1dCgpIGNvbmZpZ2AgKGVsIGBASW5wdXRgIGdhbmEpLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogLy8gc2V0dGluZ3Mucm91dGVzLnRzXG4gKiBpbXBvcnQgeyBBUFBfVkVSU0lPTiB9IGZyb20gJy4uL3ZlcnNpb24nO1xuICpcbiAqIGV4cG9ydCBjb25zdCBzZXR0aW5nc1JvdXRlczogUm91dGVzID0gW1xuICogICAuLi5wcm92aWRlVmFsdGVjaEFib3V0Um91dGVzKHsgY29uZmlnOiB7IHZlcnNpb246IEFQUF9WRVJTSU9OIH0gfSksIC8vIOKGkiAvYXBwL2Fib3V0XG4gKiAgIHsgcGF0aDogJ3ByZWZlcmVuY2VzJywgbG9hZENvbXBvbmVudDogKCkgPT4gLi4uIH0sXG4gKiBdO1xuICpcbiAqIC8vIGNvbiByZWRlcyB5IGFjY2lvbmVzIGV4dHJhOlxuICogLi4ucHJvdmlkZVZhbHRlY2hBYm91dFJvdXRlcyh7XG4gKiAgIGNvbmZpZzoge1xuICogICAgIHZlcnNpb246IEFQUF9WRVJTSU9OLFxuICogICAgIHNvY2lhbExpbmtzOiBWQUxURUNIX1NPQ0lBTF9MSU5LUy5tYXAocyA9PiAoeyBpY29uOiBzLmljb24sIHVybDogcy51cmwsIGxhYmVsOiBzLm5hbWUgfSkpLFxuICogICAgIGFjdGlvbnM6IFt7IGxhYmVsOiAnQ29tcGFydGlyJywgaWNvbjogJ3NoYXJlLXNvY2lhbC1vdXRsaW5lJywgb25DbGljazogKCkgPT4gc2hhcmUoKSB9XSxcbiAqICAgfSxcbiAqIH0pLFxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlVmFsdGVjaEFib3V0Um91dGVzKG9wdHM/OiB7XG4gIHBhdGg/OiBzdHJpbmc7XG4gIGNvbmZpZz86IEFib3V0Vmlld0NvbmZpZztcbn0pOiBSb3V0ZXMge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHBhdGg6IG9wdHM/LnBhdGggPz8gJ2Fib3V0JyxcbiAgICAgIGNvbXBvbmVudDogQWJvdXRWaWV3Q29tcG9uZW50LFxuICAgICAgZGF0YTogeyBhYm91dENvbmZpZzogb3B0cz8uY29uZmlnIH0sXG4gICAgfSxcbiAgXTtcbn1cbiJdfQ==
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Configuración acotada de `val-about-view` (object-first). La vista About es
3
+ * app-specific por naturaleza (logo, nombre, versión, redes, acciones extra),
4
+ * así que lo propio de cada app se parametriza como **DATA de config** — NO como
5
+ * slots arbitrarios (ADR-021: una vista full-feature no abre slots; si falta
6
+ * algo, se promueve un nuevo punto de extensión).
7
+ *
8
+ * Ejes de variación permitidos:
9
+ * - **branding** — `brand.name` / `brand.logoSrc` (qué muestra el HERO).
10
+ * - **versión** — `version` la pasa el consumer (la lib NO puede importar el
11
+ * `version.ts` de la app). Si no se pasa, se oculta el pill de versión.
12
+ * - **redes** — `socialLinks`; si está vacío se oculta la sección social.
13
+ * - **rating** — `showRating` + `ratingEntityId` + `onRated`.
14
+ * - **acciones extra** — `actions[]` genéricas que el consumer agrega junto a
15
+ * la acción de rating built-in.
16
+ * - **branding i18n** — `i18nNamespace` (default `'Settings.About'`).
17
+ */
18
+ export {};
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2Fib3V0LXZpZXcvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbmZpZ3VyYWNpw7NuIGFjb3RhZGEgZGUgYHZhbC1hYm91dC12aWV3YCAob2JqZWN0LWZpcnN0KS4gTGEgdmlzdGEgQWJvdXQgZXNcbiAqIGFwcC1zcGVjaWZpYyBwb3IgbmF0dXJhbGV6YSAobG9nbywgbm9tYnJlLCB2ZXJzacOzbiwgcmVkZXMsIGFjY2lvbmVzIGV4dHJhKSxcbiAqIGFzw60gcXVlIGxvIHByb3BpbyBkZSBjYWRhIGFwcCBzZSBwYXJhbWV0cml6YSBjb21vICoqREFUQSBkZSBjb25maWcqKiDigJQgTk8gY29tb1xuICogc2xvdHMgYXJiaXRyYXJpb3MgKEFEUi0wMjE6IHVuYSB2aXN0YSBmdWxsLWZlYXR1cmUgbm8gYWJyZSBzbG90czsgc2kgZmFsdGFcbiAqIGFsZ28sIHNlIHByb211ZXZlIHVuIG51ZXZvIHB1bnRvIGRlIGV4dGVuc2nDs24pLlxuICpcbiAqIEVqZXMgZGUgdmFyaWFjacOzbiBwZXJtaXRpZG9zOlxuICogIC0gKipicmFuZGluZyoqIOKAlCBgYnJhbmQubmFtZWAgLyBgYnJhbmQubG9nb1NyY2AgKHF1w6kgbXVlc3RyYSBlbCBIRVJPKS5cbiAqICAtICoqdmVyc2nDs24qKiDigJQgYHZlcnNpb25gIGxhIHBhc2EgZWwgY29uc3VtZXIgKGxhIGxpYiBOTyBwdWVkZSBpbXBvcnRhciBlbFxuICogICAgYHZlcnNpb24udHNgIGRlIGxhIGFwcCkuIFNpIG5vIHNlIHBhc2EsIHNlIG9jdWx0YSBlbCBwaWxsIGRlIHZlcnNpw7NuLlxuICogIC0gKipyZWRlcyoqIOKAlCBgc29jaWFsTGlua3NgOyBzaSBlc3TDoSB2YWPDrW8gc2Ugb2N1bHRhIGxhIHNlY2Npw7NuIHNvY2lhbC5cbiAqICAtICoqcmF0aW5nKiog4oCUIGBzaG93UmF0aW5nYCArIGByYXRpbmdFbnRpdHlJZGAgKyBgb25SYXRlZGAuXG4gKiAgLSAqKmFjY2lvbmVzIGV4dHJhKiog4oCUIGBhY3Rpb25zW11gIGdlbsOpcmljYXMgcXVlIGVsIGNvbnN1bWVyIGFncmVnYSBqdW50byBhXG4gKiAgICBsYSBhY2Npw7NuIGRlIHJhdGluZyBidWlsdC1pbi5cbiAqICAtICoqYnJhbmRpbmcgaTE4bioqIOKAlCBgaTE4bk5hbWVzcGFjZWAgKGRlZmF1bHQgYCdTZXR0aW5ncy5BYm91dCdgKS5cbiAqL1xuXG4vKiogTWFyY2EgYSBtb3N0cmFyIGVuIGVsIEhFUk8gKGxvZ28gKyBub21icmUpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBYm91dEJyYW5kIHtcbiAgLyoqIE5vbWJyZSBkZSBsYSBtYXJjYS4gRGVmYXVsdCBgJ1ZhbHRlY2gnYC4gKi9cbiAgbmFtZT86IHN0cmluZztcbiAgLyoqIFJ1dGEgZGVsIGxvZ28uIERlZmF1bHQgYCdhc3NldHMvaW1hZ2VzL21haW4taWNvbi5wbmcnYC4gKi9cbiAgbG9nb1NyYz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBY2Npw7NuIGdlbsOpcmljYSBleHRyYSBkZSBsYSBzZWNjacOzbiBcIkFjY2lvbmVzXCIgKGFkZW3DoXMgZGVsIHJhdGluZyBidWlsdC1pbikuXG4gKiBFbCBjb25zdW1lciBsYSBtb2RlbGEgY29tcGxldGEgKGxhYmVsL2Rlc2NyaXBjacOzbi/DrWNvbm8gKyBoYW5kbGVyKS4gTGFzXG4gKiBhY2Npb25lcyBzaGFyZS9mYXEgZGUgc2hvd2Nhc2UgTk8gc29uIGdlbsOpcmljYXMgKFdlYiBTaGFyZSBBUEkgeSBydXRhIGludGVybmFcbiAqIGRlIGxhIGFwcCksIHBvciBlc28gc2UgZXhwb25lbiBjb21vIGBhY3Rpb25zYCBwYXJhIHF1ZSBjYWRhIGFwcCBhcG9ydGUgbGFzXG4gKiBzdXlhcyBlbiB2ZXogZGUgaGFyZGNvZGVhcmxhcyBlbiBsYSBsaWIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWJvdXRBY3Rpb24ge1xuICAvKiogVGV4dG8gcHJpbmNpcGFsIGRlIGxhIGFjdGlvbi1jYXJkLiAqL1xuICBsYWJlbDogc3RyaW5nO1xuICAvKiogVGV4dG8gc2VjdW5kYXJpbyAob3BjaW9uYWwpLiAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqIElvbmljb24gbmFtZSAoZWouIGAnc2hhcmUtc29jaWFsLW91dGxpbmUnYCkuICovXG4gIGljb24/OiBzdHJpbmc7XG4gIC8qKiBIYW5kbGVyIGRlbCBjbGljay4gKi9cbiAgb25DbGljazogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBYm91dFZpZXdDb25maWcge1xuICAvKiogTWFyY2EgZGVsIEhFUk8gKGxvZ28gKyBub21icmUpLiBEZWZhdWx0IFZhbHRlY2guICovXG4gIGJyYW5kPzogQWJvdXRCcmFuZDtcblxuICAvKipcbiAgICogVmVyc2nDs24gYSBtb3N0cmFyIGVuIGVsIHBpbGwgKGVsIGNvbnN1bWVyIHBhc2Egc3UgYEFQUF9WRVJTSU9OYCkuIExhIGxpYiBOT1xuICAgKiBpbXBvcnRhIGVsIGB2ZXJzaW9uLnRzYCBkZSBsYSBhcHAuIFNpIG5vIHNlIHBhc2EsIGVsIHBpbGwgZGUgdmVyc2nDs24gc2VcbiAgICogb2N1bHRhLlxuICAgKi9cbiAgdmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogUmVkZXMgc29jaWFsZXMuIFNpIGVzdMOhIHZhY8OtbyAobyBubyBzZSBwYXNhKSwgbGEgc2VjY2nDs24gc29jaWFsIHNlIG9jdWx0YS5cbiAgICogYGljb25gID0gaW9uaWNvbiBuYW1lOyBgdXJsYCA9IGRlc3Rpbm87IGBsYWJlbGAgPSBhcmlhLWxhYmVsLlxuICAgKi9cbiAgc29jaWFsTGlua3M/OiB7IGljb246IHN0cmluZzsgdXJsOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfVtdO1xuXG4gIC8qKiBNdWVzdHJhIGxhIGFjdGlvbi1jYXJkIGRlIHJhdGluZyBidWlsdC1pbi4gRGVmYXVsdCBgdHJ1ZWAuICovXG4gIHNob3dSYXRpbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBgZW50aXR5SWRgIGRlbCBgZW50aXR5UmVmYCBxdWUgcmVjaWJlIGB2YWwtY29udGVudC1yZWFjdGlvbmAgYWwgY2FsaWZpY2FyXG4gICAqIChlbCBgZW50aXR5VHlwZWAgZXMgc2llbXByZSBgJ2FwcCdgKS4gRGVmYXVsdCBgJ2V4cGVyaWVuY2UnYC5cbiAgICovXG4gIHJhdGluZ0VudGl0eUlkPzogc3RyaW5nO1xuXG4gIC8qKiBBY2Npb25lcyBnZW7DqXJpY2FzIGV4dHJhIGRlIGxhIHNlY2Npw7NuIFwiQWNjaW9uZXNcIi4gRGVmYXVsdCBgW11gLiAqL1xuICBhY3Rpb25zPzogQWJvdXRBY3Rpb25bXTtcblxuICAvKipcbiAgICogTmFtZXNwYWNlIGkxOG4gY29uIGVsIHF1ZSBsYSB2aXN0YSByZXN1ZWx2ZSBzdXMgdGV4dG9zLlxuICAgKiBEZWZhdWx0IGAnU2V0dGluZ3MuQWJvdXQnYC5cbiAgICovXG4gIGkxOG5OYW1lc3BhY2U/OiBzdHJpbmc7XG5cbiAgLyoqIEhvb2sgdHJhcyBlbnZpYXIgbGEgY2FsaWZpY2FjacOzbiAocmF0aW5nKSBkZXNkZSBgdmFsLWNvbnRlbnQtcmVhY3Rpb25gLiAqL1xuICBvblJhdGVkPzogKCkgPT4gdm9pZDtcbn1cbiJdfQ==