valtech-components 4.0.969 → 4.0.971

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 (29) hide show
  1. package/esm2022/lib/components/organisms/comms-preferences-settings/comms-preferences-settings.component.mjs +153 -0
  2. package/esm2022/lib/components/organisms/comms-preferences-settings/comms-preferences-settings.i18n.mjs +25 -0
  3. package/esm2022/lib/components/organisms/comms-preferences-settings/types.mjs +2 -0
  4. package/esm2022/lib/components/organisms/page-block/page-block.component.mjs +254 -0
  5. package/esm2022/lib/components/organisms/page-block/types.mjs +20 -0
  6. package/esm2022/lib/components/organisms/video-player/types.mjs +12 -0
  7. package/esm2022/lib/components/organisms/video-player/video-player.component.mjs +235 -0
  8. package/esm2022/lib/services/comms-preferences/comms-preferences.service.mjs +38 -0
  9. package/esm2022/lib/services/comms-preferences/config.mjs +18 -0
  10. package/esm2022/lib/services/comms-preferences/index.mjs +4 -0
  11. package/esm2022/lib/services/comms-preferences/types.mjs +2 -0
  12. package/esm2022/lib/version.mjs +2 -2
  13. package/esm2022/public-api.mjs +13 -1
  14. package/fesm2022/valtech-components.mjs +780 -63
  15. package/fesm2022/valtech-components.mjs.map +1 -1
  16. package/lib/components/organisms/comms-preferences-settings/comms-preferences-settings.component.d.ts +29 -0
  17. package/lib/components/organisms/comms-preferences-settings/comms-preferences-settings.i18n.d.ts +24 -0
  18. package/lib/components/organisms/comms-preferences-settings/types.d.ts +4 -0
  19. package/lib/components/organisms/page-block/page-block.component.d.ts +65 -0
  20. package/lib/components/organisms/page-block/types.d.ts +102 -0
  21. package/lib/components/organisms/video-player/types.d.ts +45 -0
  22. package/lib/components/organisms/video-player/video-player.component.d.ts +42 -0
  23. package/lib/services/comms-preferences/comms-preferences.service.d.ts +15 -0
  24. package/lib/services/comms-preferences/config.d.ts +14 -0
  25. package/lib/services/comms-preferences/index.d.ts +3 -0
  26. package/lib/services/comms-preferences/types.d.ts +21 -0
  27. package/lib/version.d.ts +1 -1
  28. package/package.json +1 -1
  29. package/public-api.d.ts +7 -0
@@ -0,0 +1,153 @@
1
+ import { Component, inject, Input, signal } from '@angular/core';
2
+ import { FormControl } from '@angular/forms';
3
+ import { firstValueFrom } from 'rxjs';
4
+ import { ContainerComponent } from '../../atoms/container/container.component';
5
+ import { DisplayComponent } from '../../atoms/display/display.component';
6
+ import { TitleComponent } from '../../atoms/title/title.component';
7
+ import { TextComponent } from '../../atoms/text/text.component';
8
+ import { EmptyStateComponent } from '../../molecules/empty-state/empty-state.component';
9
+ import { ToggleInputComponent } from '../../molecules/toggle-input/toggle-input.component';
10
+ import { CommsPreferencesService } from '../../../services/comms-preferences/comms-preferences.service';
11
+ import { I18nService } from '../../../services/i18n';
12
+ import { NavigationService } from '../../../services/navigation/navigation.service';
13
+ import { connectPageRefresh } from '../../../services/page-refresh/page-refresh.service';
14
+ import { ToastService } from '../../../services/toast.service';
15
+ import { createPageState } from '../../../services/page-state/page-state';
16
+ import { COMMS_PREFERENCES_SETTINGS_I18N } from './comms-preferences-settings.i18n';
17
+ import * as i0 from "@angular/core";
18
+ const DEFAULT_NAMESPACE = 'Settings.Comms';
19
+ /**
20
+ * `val-comms-preferences-settings` (ADR-089) — la organización enciende o
21
+ * apaga comunicaciones transaccionales configurables (hoy: bingo-transfer-
22
+ * pending; el catálogo crece sin tocar este componente). Un toggle por
23
+ * comunicación, guardado inmediato (sin botón "Guardar" aparte) con
24
+ * rollback optimista si falla.
25
+ */
26
+ export class CommsPreferencesSettingsComponent {
27
+ get ns() {
28
+ return this.config?.i18nNamespace ?? DEFAULT_NAMESPACE;
29
+ }
30
+ constructor() {
31
+ this.i18n = inject(I18nService);
32
+ this.nav = inject(NavigationService);
33
+ this.toast = inject(ToastService);
34
+ this.svc = inject(CommsPreferencesService);
35
+ this.settings = signal([]);
36
+ this.controls = new Map();
37
+ this.page = createPageState(this.i18n, async () => {
38
+ const res = await firstValueFrom(this.svc.list());
39
+ this.settings.set(res.settings);
40
+ });
41
+ const ns = this.ns;
42
+ if (!this.i18n.hasNamespace(ns)) {
43
+ this.i18n.registerContent(ns, COMMS_PREFERENCES_SETTINGS_I18N);
44
+ }
45
+ this.nav.setBackHeader('pageTitle', ns, { withMenu: true });
46
+ connectPageRefresh(() => this.page.reload());
47
+ }
48
+ controlFor(templateId, initial) {
49
+ let control = this.controls.get(templateId);
50
+ if (!control) {
51
+ control = new FormControl(initial, { nonNullable: true });
52
+ control.valueChanges.subscribe(v => this.onToggle(templateId, v));
53
+ this.controls.set(templateId, control);
54
+ }
55
+ else if (control.value !== initial && !control.dirty) {
56
+ control.setValue(initial, { emitEvent: false });
57
+ }
58
+ return control;
59
+ }
60
+ toggleProps(templateId) {
61
+ const item = this.settings().find(s => s.templateId === templateId);
62
+ return {
63
+ control: this.controlFor(templateId, item?.enabled ?? true),
64
+ color: 'primary',
65
+ };
66
+ }
67
+ async onToggle(templateId, enabled) {
68
+ const previous = !enabled;
69
+ try {
70
+ await firstValueFrom(this.svc.setEnabled(templateId, enabled));
71
+ this.toast.show({ message: this.tt('savedOk'), duration: 1500, color: 'dark', position: 'top' });
72
+ }
73
+ catch {
74
+ this.controls.get(templateId)?.setValue(previous, { emitEvent: false });
75
+ this.toast.show({ message: this.tt('saveError'), duration: 2500, color: 'dark', position: 'top' });
76
+ }
77
+ }
78
+ tt(key) {
79
+ return this.i18n.t(key, this.ns);
80
+ }
81
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CommsPreferencesSettingsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
82
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CommsPreferencesSettingsComponent, isStandalone: true, selector: "val-comms-preferences-settings", inputs: { config: "config" }, ngImport: i0, template: `
83
+ <val-container [props]="{ size: 'md', padding: 'none' }">
84
+ <div class="page">
85
+ <header class="page-header">
86
+ <val-display [props]="{ size: 'small', color: 'dark', content: tt('pageTitle') }" />
87
+ <val-title [props]="{ size: 'large', color: 'dark', bold: false, content: tt('pageDescription') }" />
88
+ </header>
89
+
90
+ @if (page.errorState(); as e) {
91
+ <val-empty-state [props]="e" />
92
+ } @else if (!page.loading() && settings().length === 0) {
93
+ <val-empty-state [props]="{ variant: 'empty', title: tt('empty') }" />
94
+ } @else if (!page.loading()) {
95
+ <section class="settings-section">
96
+ @for (item of settings(); track item.templateId) {
97
+ <div class="comm-row">
98
+ <div class="comm-row__body">
99
+ <val-title [props]="{ size: 'medium', color: 'dark', bold: true, content: item.label }" />
100
+ </div>
101
+ <div class="comm-row__control">
102
+ <val-toggle-input [props]="toggleProps(item.templateId)" />
103
+ </div>
104
+ </div>
105
+ }
106
+ </section>
107
+ }
108
+ </div>
109
+ </val-container>
110
+ `, isInline: true, styles: [".page{padding:16px 0}.page-header{margin-bottom:8px}.settings-section{padding:8px 0}.comm-row{display:grid;grid-template-columns:1fr auto;gap:16px;align-items:center;padding:12px 0}.comm-row+.comm-row{border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08))}\n"], dependencies: [{ kind: "component", type: ContainerComponent, selector: "val-container", inputs: ["props"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: EmptyStateComponent, selector: "val-empty-state", inputs: ["props"] }, { kind: "component", type: ToggleInputComponent, selector: "val-toggle-input", inputs: ["preset", "props"] }] }); }
111
+ }
112
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CommsPreferencesSettingsComponent, decorators: [{
113
+ type: Component,
114
+ args: [{ selector: 'val-comms-preferences-settings', standalone: true, imports: [
115
+ ContainerComponent,
116
+ DisplayComponent,
117
+ TitleComponent,
118
+ TextComponent,
119
+ EmptyStateComponent,
120
+ ToggleInputComponent,
121
+ ], template: `
122
+ <val-container [props]="{ size: 'md', padding: 'none' }">
123
+ <div class="page">
124
+ <header class="page-header">
125
+ <val-display [props]="{ size: 'small', color: 'dark', content: tt('pageTitle') }" />
126
+ <val-title [props]="{ size: 'large', color: 'dark', bold: false, content: tt('pageDescription') }" />
127
+ </header>
128
+
129
+ @if (page.errorState(); as e) {
130
+ <val-empty-state [props]="e" />
131
+ } @else if (!page.loading() && settings().length === 0) {
132
+ <val-empty-state [props]="{ variant: 'empty', title: tt('empty') }" />
133
+ } @else if (!page.loading()) {
134
+ <section class="settings-section">
135
+ @for (item of settings(); track item.templateId) {
136
+ <div class="comm-row">
137
+ <div class="comm-row__body">
138
+ <val-title [props]="{ size: 'medium', color: 'dark', bold: true, content: item.label }" />
139
+ </div>
140
+ <div class="comm-row__control">
141
+ <val-toggle-input [props]="toggleProps(item.templateId)" />
142
+ </div>
143
+ </div>
144
+ }
145
+ </section>
146
+ }
147
+ </div>
148
+ </val-container>
149
+ `, styles: [".page{padding:16px 0}.page-header{margin-bottom:8px}.settings-section{padding:8px 0}.comm-row{display:grid;grid-template-columns:1fr auto;gap:16px;align-items:center;padding:12px 0}.comm-row+.comm-row{border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08))}\n"] }]
150
+ }], ctorParameters: () => [], propDecorators: { config: [{
151
+ type: Input
152
+ }] } });
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbXMtcHJlZmVyZW5jZXMtc2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9jb21tcy1wcmVmZXJlbmNlcy1zZXR0aW5ncy9jb21tcy1wcmVmZXJlbmNlcy1zZXR0aW5ncy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBRzNGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBRXhHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNwRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUN6RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxN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Z0JBQWdCLDJFQUNoQixjQUFjLHlFQUVkLG1CQUFtQiwrRUFDbkIsb0JBQW9COzs0RkF1RFgsaUNBQWlDO2tCQWhFN0MsU0FBUzsrQkFDRSxnQ0FBZ0MsY0FDOUIsSUFBSSxXQUNQO3dCQUNQLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3dCQUNoQixjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsbUJBQW1CO3dCQUNuQixvQkFBb0I7cUJBQ3JCLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0QlQ7d0RBK0JRLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IENvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2NvbnRhaW5lci9jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IERpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9kaXNwbGF5L2Rpc3BsYXkuY29tcG9uZW50JztcbmltcG9ydCB7IFRpdGxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGl0bGUvdGl0bGUuY29tcG9uZW50JztcbmltcG9ydCB7IFRleHRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90ZXh0L3RleHQuY29tcG9uZW50JztcbmltcG9ydCB7IEVtcHR5U3RhdGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvZW1wdHktc3RhdGUvZW1wdHktc3RhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IFRvZ2dsZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3RvZ2dsZS1pbnB1dC90b2dnbGUtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFRvZ2dsZUlucHV0TWV0YWRhdGEgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvdG9nZ2xlLWlucHV0L3R5cGVzJztcblxuaW1wb3J0IHsgQ29tbXNQcmVmZXJlbmNlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jb21tcy1wcmVmZXJlbmNlcy9jb21tcy1wcmVmZXJlbmNlcy5zZXJ2aWNlJztcbmltcG9ydCB7IENvbW11bmljYXRpb25TZXR0aW5nIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY29tbXMtcHJlZmVyZW5jZXMvdHlwZXMnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgY29ubmVjdFBhZ2VSZWZyZXNoIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcGFnZS1yZWZyZXNoL3BhZ2UtcmVmcmVzaC5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgY3JlYXRlUGFnZVN0YXRlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcGFnZS1zdGF0ZS9wYWdlLXN0YXRlJztcblxuaW1wb3J0IHsgQ29tbXNQcmVmZXJlbmNlc1NldHRpbmdzQ29uZmlnIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBDT01NU19QUkVGRVJFTkNFU19TRVRUSU5HU19JMThOIH0gZnJvbSAnLi9jb21tcy1wcmVmZXJlbmNlcy1zZXR0aW5ncy5pMThuJztcblxuY29uc3QgREVGQVVMVF9OQU1FU1BBQ0UgPSAnU2V0dGluZ3MuQ29tbXMnO1xuXG4vKipcbiAqIGB2YWwtY29tbXMtcHJlZmVyZW5jZXMtc2V0dGluZ3NgIChBRFItMDg5KSDigJQgbGEgb3JnYW5pemFjacOzbiBlbmNpZW5kZSBvXG4gKiBhcGFnYSBjb211bmljYWNpb25lcyB0cmFuc2FjY2lvbmFsZXMgY29uZmlndXJhYmxlcyAoaG95OiBiaW5nby10cmFuc2Zlci1cbiAqIHBlbmRpbmc7IGVsIGNhdMOhbG9nbyBjcmVjZSBzaW4gdG9jYXIgZXN0ZSBjb21wb25lbnRlKS4gVW4gdG9nZ2xlIHBvclxuICogY29tdW5pY2FjacOzbiwgZ3VhcmRhZG8gaW5tZWRpYXRvIChzaW4gYm90w7NuIFwiR3VhcmRhclwiIGFwYXJ0ZSkgY29uXG4gKiByb2xsYmFjayBvcHRpbWlzdGEgc2kgZmFsbGEuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1jb21tcy1wcmVmZXJlbmNlcy1zZXR0aW5ncycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb250YWluZXJDb21wb25lbnQsXG4gICAgRGlzcGxheUNvbXBvbmVudCxcbiAgICBUaXRsZUNvbXBvbmVudCxcbiAgICBUZXh0Q29tcG9uZW50LFxuICAgIEVtcHR5U3RhdGVDb21wb25lbnQsXG4gICAgVG9nZ2xlSW5wdXRDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPHZhbC1jb250YWluZXIgW3Byb3BzXT1cInsgc2l6ZTogJ21kJywgcGFkZGluZzogJ25vbmUnIH1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwYWdlXCI+XG4gICAgICAgIDxoZWFkZXIgY2xhc3M9XCJwYWdlLWhlYWRlclwiPlxuICAgICAgICAgIDx2YWwtZGlzcGxheSBbcHJvcHNdPVwieyBzaXplOiAnc21hbGwnLCBjb2xvcjogJ2RhcmsnLCBjb250ZW50OiB0dCgncGFnZVRpdGxlJykgfVwiIC8+XG4gICAgICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwieyBzaXplOiAnbGFyZ2UnLCBjb2xvcjogJ2RhcmsnLCBib2xkOiBmYWxzZSwgY29udGVudDogdHQoJ3BhZ2VEZXNjcmlwdGlvbicpIH1cIiAvPlxuICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICBAaWYgKHBhZ2UuZXJyb3JTdGF0ZSgpOyBhcyBlKSB7XG4gICAgICAgICAgPHZhbC1lbXB0eS1zdGF0ZSBbcHJvcHNdPVwiZVwiIC8+XG4gICAgICAgIH0gQGVsc2UgaWYgKCFwYWdlLmxvYWRpbmcoKSAmJiBzZXR0aW5ncygpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIDx2YWwtZW1wdHktc3RhdGUgW3Byb3BzXT1cInsgdmFyaWFudDogJ2VtcHR5JywgdGl0bGU6IHR0KCdlbXB0eScpIH1cIiAvPlxuICAgICAgICB9IEBlbHNlIGlmICghcGFnZS5sb2FkaW5nKCkpIHtcbiAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cInNldHRpbmdzLXNlY3Rpb25cIj5cbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2Ygc2V0dGluZ3MoKTsgdHJhY2sgaXRlbS50ZW1wbGF0ZUlkKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21tLXJvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21tLXJvd19fYm9keVwiPlxuICAgICAgICAgICAgICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwieyBzaXplOiAnbWVkaXVtJywgY29sb3I6ICdkYXJrJywgYm9sZDogdHJ1ZSwgY29udGVudDogaXRlbS5sYWJlbCB9XCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tbS1yb3dfX2NvbnRyb2xcIj5cbiAgICAgICAgICAgICAgICAgIDx2YWwtdG9nZ2xlLWlucHV0IFtwcm9wc109XCJ0b2dnbGVQcm9wcyhpdGVtLnRlbXBsYXRlSWQpXCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L3ZhbC1jb250YWluZXI+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5wYWdlIHtcbiAgICAgICAgcGFkZGluZzogMTZweCAwO1xuICAgICAgfVxuICAgICAgLnBhZ2UtaGVhZGVyIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgICAgfVxuICAgICAgLnNldHRpbmdzLXNlY3Rpb24ge1xuICAgICAgICBwYWRkaW5nOiA4cHggMDtcbiAgICAgIH1cbiAgICAgIC5jb21tLXJvdyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIGF1dG87XG4gICAgICAgIGdhcDogMTZweDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogMTJweCAwO1xuICAgICAgfVxuICAgICAgLmNvbW0tcm93ICsgLmNvbW0tcm93IHtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXZhbC1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4wOCkpO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIENvbW1zUHJlZmVyZW5jZXNTZXR0aW5nc0NvbXBvbmVudCB7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgbmF2ID0gaW5qZWN0KE5hdmlnYXRpb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdCA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xuICBwcml2YXRlIHN2YyA9IGluamVjdChDb21tc1ByZWZlcmVuY2VzU2VydmljZSk7XG5cbiAgQElucHV0KCkgY29uZmlnPzogQ29tbXNQcmVmZXJlbmNlc1NldHRpbmdzQ29uZmlnO1xuXG4gIHByaXZhdGUgZ2V0IG5zKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnPy5pMThuTmFtZXNwYWNlID8/IERFRkFVTFRfTkFNRVNQQUNFO1xuICB9XG5cbiAgcmVhZG9ubHkgc2V0dGluZ3MgPSBzaWduYWw8Q29tbXVuaWNhdGlvblNldHRpbmdbXT4oW10pO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbnRyb2xzID0gbmV3IE1hcDxzdHJpbmcsIEZvcm1Db250cm9sPGJvb2xlYW4+PigpO1xuXG4gIHJlYWRvbmx5IHBhZ2UgPSBjcmVhdGVQYWdlU3RhdGUodGhpcy5pMThuLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5zdmMubGlzdCgpKTtcbiAgICB0aGlzLnNldHRpbmdzLnNldChyZXMuc2V0dGluZ3MpO1xuICB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBjb25zdCBucyA9IHRoaXMubnM7XG4gICAgaWYgKCF0aGlzLmkxOG4uaGFzTmFtZXNwYWNlKG5zKSkge1xuICAgICAgdGhpcy5pMThuLnJlZ2lzdGVyQ29udGVudChucywgQ09NTVNfUFJFRkVSRU5DRVNfU0VUVElOR1NfSTE4Tik7XG4gICAgfVxuICAgIHRoaXMubmF2LnNldEJhY2tIZWFkZXIoJ3BhZ2VUaXRsZScsIG5zLCB7IHdpdGhNZW51OiB0cnVlIH0pO1xuICAgIGNvbm5lY3RQYWdlUmVmcmVzaCgoKSA9PiB0aGlzLnBhZ2UucmVsb2FkKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb250cm9sRm9yKHRlbXBsYXRlSWQ6IHN0cmluZywgaW5pdGlhbDogYm9vbGVhbik6IEZvcm1Db250cm9sPGJvb2xlYW4+IHtcbiAgICBsZXQgY29udHJvbCA9IHRoaXMuY29udHJvbHMuZ2V0KHRlbXBsYXRlSWQpO1xuICAgIGlmICghY29udHJvbCkge1xuICAgICAgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxib29sZWFuPihpbml0aWFsLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xuICAgICAgY29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHYgPT4gdGhpcy5vblRvZ2dsZSh0ZW1wbGF0ZUlkLCB2KSk7XG4gICAgICB0aGlzLmNvbnRyb2xzLnNldCh0ZW1wbGF0ZUlkLCBjb250cm9sKTtcbiAgICB9IGVsc2UgaWYgKGNvbnRyb2wudmFsdWUgIT09IGluaXRpYWwgJiYgIWNvbnRyb2wuZGlydHkpIHtcbiAgICAgIGNvbnRyb2wuc2V0VmFsdWUoaW5pdGlhbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH1cbiAgICByZXR1cm4gY29udHJvbDtcbiAgfVxuXG4gIHRvZ2dsZVByb3BzKHRlbXBsYXRlSWQ6IHN0cmluZyk6IFRvZ2dsZUlucHV0TWV0YWRhdGEge1xuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnNldHRpbmdzKCkuZmluZChzID0+IHMudGVtcGxhdGVJZCA9PT0gdGVtcGxhdGVJZCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRyb2w6IHRoaXMuY29udHJvbEZvcih0ZW1wbGF0ZUlkLCBpdGVtPy5lbmFibGVkID8/IHRydWUpLFxuICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBvblRvZ2dsZSh0ZW1wbGF0ZUlkOiBzdHJpbmcsIGVuYWJsZWQ6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwcmV2aW91cyA9ICFlbmFibGVkO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnN2Yy5zZXRFbmFibGVkKHRlbXBsYXRlSWQsIGVuYWJsZWQpKTtcbiAgICAgIHRoaXMudG9hc3Quc2hvdyh7IG1lc3NhZ2U6IHRoaXMudHQoJ3NhdmVkT2snKSwgZHVyYXRpb246IDE1MDAsIGNvbG9yOiAnZGFyaycsIHBvc2l0aW9uOiAndG9wJyB9KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMuY29udHJvbHMuZ2V0KHRlbXBsYXRlSWQpPy5zZXRWYWx1ZShwcmV2aW91cywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgdGhpcy50b2FzdC5zaG93KHsgbWVzc2FnZTogdGhpcy50dCgnc2F2ZUVycm9yJyksIGR1cmF0aW9uOiAyNTAwLCBjb2xvcjogJ2RhcmsnLCBwb3NpdGlvbjogJ3RvcCcgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHR0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCB0aGlzLm5zKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,25 @@
1
+ export const COMMS_PREFERENCES_SETTINGS_I18N = {
2
+ es: {
3
+ pageTitle: 'Comunicaciones',
4
+ pageDescription: 'Elige qué correos automáticos recibe tu organización.',
5
+ empty: 'Esta app no tiene comunicaciones configurables por ahora.',
6
+ savedOk: 'Preferencia guardada.',
7
+ saveError: 'No se pudo guardar el cambio. Intenta de nuevo.',
8
+ errorTitle: 'No se pudo cargar',
9
+ offlineTitle: 'Sin conexión',
10
+ offlineHint: 'Revisa tu conexión e intenta de nuevo.',
11
+ retry: 'Reintentar',
12
+ },
13
+ en: {
14
+ pageTitle: 'Communications',
15
+ pageDescription: 'Choose which automatic emails your organization receives.',
16
+ empty: 'This app has no configurable communications right now.',
17
+ savedOk: 'Preference saved.',
18
+ saveError: 'Could not save the change. Please try again.',
19
+ errorTitle: 'Could not load',
20
+ offlineTitle: 'Offline',
21
+ offlineHint: 'Check your connection and try again.',
22
+ retry: 'Retry',
23
+ },
24
+ };
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbXMtcHJlZmVyZW5jZXMtc2V0dGluZ3MuaTE4bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvY29tbXMtcHJlZmVyZW5jZXMtc2V0dGluZ3MvY29tbXMtcHJlZmVyZW5jZXMtc2V0dGluZ3MuaTE4bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRztJQUM3QyxFQUFFLEVBQUU7UUFDRixTQUFTLEVBQUUsZ0JBQWdCO1FBQzNCLGVBQWUsRUFBRSx1REFBdUQ7UUFDeEUsS0FBSyxFQUFFLDJEQUEyRDtRQUNsRSxPQUFPLEVBQUUsdUJBQXVCO1FBQ2hDLFNBQVMsRUFBRSxpREFBaUQ7UUFDNUQsVUFBVSxFQUFFLG1CQUFtQjtRQUMvQixZQUFZLEVBQUUsY0FBYztRQUM1QixXQUFXLEVBQUUsd0NBQXdDO1FBQ3JELEtBQUssRUFBRSxZQUFZO0tBQ3BCO0lBQ0QsRUFBRSxFQUFFO1FBQ0YsU0FBUyxFQUFFLGdCQUFnQjtRQUMzQixlQUFlLEVBQUUsMkRBQTJEO1FBQzVFLEtBQUssRUFBRSx3REFBd0Q7UUFDL0QsT0FBTyxFQUFFLG1CQUFtQjtRQUM1QixTQUFTLEVBQUUsOENBQThDO1FBQ3pELFVBQVUsRUFBRSxnQkFBZ0I7UUFDNUIsWUFBWSxFQUFFLFNBQVM7UUFDdkIsV0FBVyxFQUFFLHNDQUFzQztRQUNuRCxLQUFLLEVBQUUsT0FBTztLQUNmO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBDT01NU19QUkVGRVJFTkNFU19TRVRUSU5HU19JMThOID0ge1xuICBlczoge1xuICAgIHBhZ2VUaXRsZTogJ0NvbXVuaWNhY2lvbmVzJyxcbiAgICBwYWdlRGVzY3JpcHRpb246ICdFbGlnZSBxdcOpIGNvcnJlb3MgYXV0b23DoXRpY29zIHJlY2liZSB0dSBvcmdhbml6YWNpw7NuLicsXG4gICAgZW1wdHk6ICdFc3RhIGFwcCBubyB0aWVuZSBjb211bmljYWNpb25lcyBjb25maWd1cmFibGVzIHBvciBhaG9yYS4nLFxuICAgIHNhdmVkT2s6ICdQcmVmZXJlbmNpYSBndWFyZGFkYS4nLFxuICAgIHNhdmVFcnJvcjogJ05vIHNlIHB1ZG8gZ3VhcmRhciBlbCBjYW1iaW8uIEludGVudGEgZGUgbnVldm8uJyxcbiAgICBlcnJvclRpdGxlOiAnTm8gc2UgcHVkbyBjYXJnYXInLFxuICAgIG9mZmxpbmVUaXRsZTogJ1NpbiBjb25leGnDs24nLFxuICAgIG9mZmxpbmVIaW50OiAnUmV2aXNhIHR1IGNvbmV4acOzbiBlIGludGVudGEgZGUgbnVldm8uJyxcbiAgICByZXRyeTogJ1JlaW50ZW50YXInLFxuICB9LFxuICBlbjoge1xuICAgIHBhZ2VUaXRsZTogJ0NvbW11bmljYXRpb25zJyxcbiAgICBwYWdlRGVzY3JpcHRpb246ICdDaG9vc2Ugd2hpY2ggYXV0b21hdGljIGVtYWlscyB5b3VyIG9yZ2FuaXphdGlvbiByZWNlaXZlcy4nLFxuICAgIGVtcHR5OiAnVGhpcyBhcHAgaGFzIG5vIGNvbmZpZ3VyYWJsZSBjb21tdW5pY2F0aW9ucyByaWdodCBub3cuJyxcbiAgICBzYXZlZE9rOiAnUHJlZmVyZW5jZSBzYXZlZC4nLFxuICAgIHNhdmVFcnJvcjogJ0NvdWxkIG5vdCBzYXZlIHRoZSBjaGFuZ2UuIFBsZWFzZSB0cnkgYWdhaW4uJyxcbiAgICBlcnJvclRpdGxlOiAnQ291bGQgbm90IGxvYWQnLFxuICAgIG9mZmxpbmVUaXRsZTogJ09mZmxpbmUnLFxuICAgIG9mZmxpbmVIaW50OiAnQ2hlY2sgeW91ciBjb25uZWN0aW9uIGFuZCB0cnkgYWdhaW4uJyxcbiAgICByZXRyeTogJ1JldHJ5JyxcbiAgfSxcbn07XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2NvbW1zLXByZWZlcmVuY2VzLXNldHRpbmdzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIENvbW1zUHJlZmVyZW5jZXNTZXR0aW5nc0NvbmZpZyB7XG4gIC8qKiBOYW1lc3BhY2UgaTE4biBkZSB0ZXh0b3MgcHJvcGlvcyAocGFnZVRpdGxlL3BhZ2VEZXNjcmlwdGlvbi9ldGMpLiBEZWZhdWx0IGBTZXR0aW5ncy5Db21tc2AuICovXG4gIGkxOG5OYW1lc3BhY2U/OiBzdHJpbmc7XG59XG4iXX0=
@@ -0,0 +1,254 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, signal } from '@angular/core';
3
+ import { DisplayComponent } from '../../atoms/display/display.component';
4
+ import { TitleComponent } from '../../atoms/title/title.component';
5
+ import { TextComponent } from '../../atoms/text/text.component';
6
+ import { ButtonComponent } from '../../atoms/button/button.component';
7
+ import { FaqComponent } from '../faq/faq.component';
8
+ import * as i0 from "@angular/core";
9
+ /**
10
+ * `val-page-block`
11
+ *
12
+ * Organism que renderiza UN bloque del constructor de páginas de plataforma
13
+ * (ADR-077, `services/page` en el backend). Es el punto de la lib donde el
14
+ * catálogo de bloques (`hero`, `text`, `gallery`, `cta`, `faq`) mapea 1:1 a
15
+ * componentes reales — la razón de ser del ADR: "un rediseño de la lib
16
+ * mejora todas las páginas publicadas sin tocar sus datos".
17
+ *
18
+ * Presentacional puro: recibe `props` ya tipados (espejo exacto del `Block`
19
+ * del backend), sin llamadas HTTP propias ni conocimiento de a qué app
20
+ * pertenece la página. El bloque `cta` NO navega — emite `(ctaAction)` con
21
+ * la intención cruda (`{ action }`) para que el consumidor (la app) la
22
+ * resuelva contra su propio routing (ADR-077: "el CTA guarda una intención,
23
+ * nunca una URL").
24
+ *
25
+ * El caller típico itera `Page.Blocks` y renderiza uno de estos por bloque:
26
+ *
27
+ * @example
28
+ * ```html
29
+ * @for (block of page().blocks; track $index) {
30
+ * <val-page-block [props]="block" (ctaAction)="onCtaAction($event)" />
31
+ * }
32
+ * ```
33
+ */
34
+ export class PageBlockComponent {
35
+ constructor() {
36
+ /**
37
+ * Emite la intención cruda del CTA al hacer click (`{ action }`, nunca una
38
+ * URL — ver comentario de clase). El consumidor decide qué hacer con
39
+ * `action`; este componente no la interpreta.
40
+ */
41
+ this.ctaAction = new EventEmitter();
42
+ /** Fallback de imagen rota (convención de la lib) — un slot, una signal. */
43
+ this.heroImageFailed = signal(false);
44
+ /** Índices de `gallery.images` cuya carga falló (`error` del `<img>`). */
45
+ this.failedGalleryImages = signal(new Set());
46
+ }
47
+ get hero() {
48
+ return this.props.props;
49
+ }
50
+ get text() {
51
+ return this.props.props;
52
+ }
53
+ get gallery() {
54
+ return this.props.props;
55
+ }
56
+ get cta() {
57
+ return this.props.props;
58
+ }
59
+ get faq() {
60
+ return this.props.props;
61
+ }
62
+ /**
63
+ * `text.body` es texto plano (no markdown — a diferencia de
64
+ * `val-article`/`val-faq`, `blocks_validate.go` solo exige un string no
65
+ * vacío). Partido por línea para que `val-text` (un `<p>` por línea)
66
+ * respete los saltos que el autor escribió, sin interpretar sintaxis.
67
+ */
68
+ textParagraphs() {
69
+ return this.text.body.split('\n').filter(line => line.trim().length > 0);
70
+ }
71
+ /**
72
+ * `val-faq` agrupa por categoría; el bloque `faq` de `services/page` no
73
+ * tiene categorías (solo `items` planos) — se envuelve en una única
74
+ * categoría sin label (`hideSingleCategoryLabel` default `true` la oculta).
75
+ */
76
+ faqCategories() {
77
+ return [
78
+ {
79
+ id: 'page-faq',
80
+ label: '',
81
+ items: this.faq.items.map((item, index) => ({
82
+ id: `page-faq-${index}`,
83
+ question: item.question,
84
+ answer: item.answer,
85
+ })),
86
+ },
87
+ ];
88
+ }
89
+ onCtaClick() {
90
+ this.ctaAction.emit(this.cta.intent);
91
+ }
92
+ onGalleryImageError(index) {
93
+ const next = new Set(this.failedGalleryImages());
94
+ next.add(index);
95
+ this.failedGalleryImages.set(next);
96
+ }
97
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PageBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
98
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PageBlockComponent, isStandalone: true, selector: "val-page-block", inputs: { props: "props" }, outputs: { ctaAction: "ctaAction" }, ngImport: i0, template: `
99
+ @switch (props.type) {
100
+ @case ('hero') {
101
+ <section class="page-block page-block--hero" [class]="'align-' + (hero.align || 'center')">
102
+ @if (hero.image && !heroImageFailed()) {
103
+ <img
104
+ class="page-block__hero-image"
105
+ [src]="hero.image"
106
+ [alt]="hero.title"
107
+ loading="lazy"
108
+ (error)="heroImageFailed.set(true)"
109
+ />
110
+ }
111
+ <div class="page-block__hero-copy">
112
+ <val-display [props]="{ size: 'large', color: 'dark', content: hero.title }" />
113
+ @if (hero.subtitle) {
114
+ <val-text [props]="{ size: 'large', color: 'medium', bold: false, content: hero.subtitle }" />
115
+ }
116
+ </div>
117
+ </section>
118
+ }
119
+ @case ('text') {
120
+ <section class="page-block page-block--text">
121
+ @if (text.heading) {
122
+ <val-title [props]="{ size: 'large', color: 'dark', bold: false, content: text.heading }" />
123
+ }
124
+ @for (paragraph of textParagraphs(); track $index) {
125
+ <val-text [props]="{ size: 'medium', color: 'dark', bold: false, content: paragraph }" />
126
+ }
127
+ </section>
128
+ }
129
+ @case ('gallery') {
130
+ <section class="page-block page-block--gallery">
131
+ <div class="page-block__gallery-grid">
132
+ @for (image of gallery.images; track $index) {
133
+ @if (!failedGalleryImages().has($index)) {
134
+ <!-- Sin alt descriptivo: el backend no modela texto alternativo
135
+ por imagen (services/page/blocks_validate.go, gallery.images
136
+ es solo un arreglo de strings). Se marca decorativa a
137
+ propósito, no un olvido de a11y. -->
138
+ <img
139
+ class="page-block__gallery-image"
140
+ [src]="image"
141
+ alt=""
142
+ loading="lazy"
143
+ (error)="onGalleryImageError($index)"
144
+ />
145
+ }
146
+ }
147
+ </div>
148
+ </section>
149
+ }
150
+ @case ('cta') {
151
+ <section class="page-block page-block--cta">
152
+ <val-button
153
+ [props]="{
154
+ text: cta.label,
155
+ color: 'primary',
156
+ fill: 'solid',
157
+ shape: 'round',
158
+ type: 'button',
159
+ state: 'ENABLED',
160
+ }"
161
+ (onClick)="onCtaClick()"
162
+ />
163
+ </section>
164
+ }
165
+ @case ('faq') {
166
+ <section class="page-block page-block--faq">
167
+ <val-faq [props]="{ categories: faqCategories(), searchable: false }" />
168
+ </section>
169
+ }
170
+ }
171
+ `, isInline: true, styles: [".page-block{display:block;width:100%}.page-block--hero{display:flex;flex-direction:column;gap:16px;text-align:center;align-items:center}.page-block--hero.align-left{text-align:left;align-items:flex-start}.page-block--hero.align-right{text-align:right;align-items:flex-end}.page-block__hero-image{width:100%;max-height:360px;object-fit:cover;border-radius:12px}.page-block__hero-copy{display:flex;flex-direction:column;gap:8px;max-width:640px}.page-block--text{display:flex;flex-direction:column;gap:8px}.page-block__gallery-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}@media (min-width: 768px){.page-block__gallery-grid{grid-template-columns:repeat(3,1fr);gap:12px}}@media (min-width: 992px){.page-block__gallery-grid{grid-template-columns:repeat(4,1fr)}}.page-block__gallery-image{width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:8px}.page-block--cta{display:flex;justify-content:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }, { kind: "component", type: FaqComponent, selector: "val-faq", inputs: ["props"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
172
+ }
173
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PageBlockComponent, decorators: [{
174
+ type: Component,
175
+ args: [{ selector: 'val-page-block', standalone: true, imports: [CommonModule, DisplayComponent, TitleComponent, TextComponent, ButtonComponent, FaqComponent], template: `
176
+ @switch (props.type) {
177
+ @case ('hero') {
178
+ <section class="page-block page-block--hero" [class]="'align-' + (hero.align || 'center')">
179
+ @if (hero.image && !heroImageFailed()) {
180
+ <img
181
+ class="page-block__hero-image"
182
+ [src]="hero.image"
183
+ [alt]="hero.title"
184
+ loading="lazy"
185
+ (error)="heroImageFailed.set(true)"
186
+ />
187
+ }
188
+ <div class="page-block__hero-copy">
189
+ <val-display [props]="{ size: 'large', color: 'dark', content: hero.title }" />
190
+ @if (hero.subtitle) {
191
+ <val-text [props]="{ size: 'large', color: 'medium', bold: false, content: hero.subtitle }" />
192
+ }
193
+ </div>
194
+ </section>
195
+ }
196
+ @case ('text') {
197
+ <section class="page-block page-block--text">
198
+ @if (text.heading) {
199
+ <val-title [props]="{ size: 'large', color: 'dark', bold: false, content: text.heading }" />
200
+ }
201
+ @for (paragraph of textParagraphs(); track $index) {
202
+ <val-text [props]="{ size: 'medium', color: 'dark', bold: false, content: paragraph }" />
203
+ }
204
+ </section>
205
+ }
206
+ @case ('gallery') {
207
+ <section class="page-block page-block--gallery">
208
+ <div class="page-block__gallery-grid">
209
+ @for (image of gallery.images; track $index) {
210
+ @if (!failedGalleryImages().has($index)) {
211
+ <!-- Sin alt descriptivo: el backend no modela texto alternativo
212
+ por imagen (services/page/blocks_validate.go, gallery.images
213
+ es solo un arreglo de strings). Se marca decorativa a
214
+ propósito, no un olvido de a11y. -->
215
+ <img
216
+ class="page-block__gallery-image"
217
+ [src]="image"
218
+ alt=""
219
+ loading="lazy"
220
+ (error)="onGalleryImageError($index)"
221
+ />
222
+ }
223
+ }
224
+ </div>
225
+ </section>
226
+ }
227
+ @case ('cta') {
228
+ <section class="page-block page-block--cta">
229
+ <val-button
230
+ [props]="{
231
+ text: cta.label,
232
+ color: 'primary',
233
+ fill: 'solid',
234
+ shape: 'round',
235
+ type: 'button',
236
+ state: 'ENABLED',
237
+ }"
238
+ (onClick)="onCtaClick()"
239
+ />
240
+ </section>
241
+ }
242
+ @case ('faq') {
243
+ <section class="page-block page-block--faq">
244
+ <val-faq [props]="{ categories: faqCategories(), searchable: false }" />
245
+ </section>
246
+ }
247
+ }
248
+ `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".page-block{display:block;width:100%}.page-block--hero{display:flex;flex-direction:column;gap:16px;text-align:center;align-items:center}.page-block--hero.align-left{text-align:left;align-items:flex-start}.page-block--hero.align-right{text-align:right;align-items:flex-end}.page-block__hero-image{width:100%;max-height:360px;object-fit:cover;border-radius:12px}.page-block__hero-copy{display:flex;flex-direction:column;gap:8px;max-width:640px}.page-block--text{display:flex;flex-direction:column;gap:8px}.page-block__gallery-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}@media (min-width: 768px){.page-block__gallery-grid{grid-template-columns:repeat(3,1fr);gap:12px}}@media (min-width: 992px){.page-block__gallery-grid{grid-template-columns:repeat(4,1fr)}}.page-block__gallery-image{width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:8px}.page-block--cta{display:flex;justify-content:center}\n"] }]
249
+ }], propDecorators: { props: [{
250
+ type: Input
251
+ }], ctaAction: [{
252
+ type: Output
253
+ }] } });
254
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1ibG9jay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3BhZ2UtYmxvY2svcGFnZS1ibG9jay5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFZcEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCRztBQWtGSCxNQUFNLE9BQU8sa0JBQWtCO0lBakYvQjtRQXFGRTs7OztXQUlHO1FBQ08sY0FBUyxHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO1FBRXhELDRFQUE0RTtRQUNuRSxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QywwRUFBMEU7UUFDakUsd0JBQW1CLEdBQUcsTUFBTSxDQUFjLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztLQTREL0Q7SUExREMsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQTJCLENBQUM7SUFDaEQsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUEyQixDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBOEIsQ0FBQztJQUNuRCxDQUFDO0lBRUQsSUFBSSxHQUFHO1FBQ0wsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQTBCLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQUksR0FBRztRQUNMLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUEwQixDQUFDO0lBQy9DLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsYUFBYTtRQUNYLE9BQU87WUFDTDtnQkFDRSxFQUFFLEVBQUUsVUFBVTtnQkFDZCxLQUFLLEVBQUUsRUFBRTtnQkFDVCxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDMUMsRUFBRSxFQUFFLFlBQVksS0FBSyxFQUFFO29CQUN2QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7b0JBQ3ZCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtpQkFDcEIsQ0FBQyxDQUFDO2FBQ0o7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxLQUFhO1FBQy9CLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQixJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7K0dBekVVLGtCQUFrQjttR0FBbEIsa0JBQWtCLDJJQTdFbkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5RVQsKzlCQTFFUyxZQUFZLCtCQUFFLGdCQUFnQiwyRUFBRSxjQUFjLHlFQUFFLGFBQWEsd0VBQUUsZUFBZSwwR0FBRSxZQUFZOzs0RkE4RTNGLGtCQUFrQjtrQkFqRjlCLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBQ2QsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLFlBQVksQ0FBQyxZQUM3Rjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlFVCxtQkFFZ0IsdUJBQXVCLENBQUMsTUFBTTs4QkFJdEMsS0FBSztzQkFBYixLQUFLO2dCQU9JLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9kaXNwbGF5L2Rpc3BsYXkuY29tcG9uZW50JztcbmltcG9ydCB7IFRpdGxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGl0bGUvdGl0bGUuY29tcG9uZW50JztcbmltcG9ydCB7IFRleHRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90ZXh0L3RleHQuY29tcG9uZW50JztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IEZhcUNvbXBvbmVudCB9IGZyb20gJy4uL2ZhcS9mYXEuY29tcG9uZW50JztcbmltcG9ydCB7IEZhcUNhdGVnb3J5IH0gZnJvbSAnLi4vZmFxL3R5cGVzJztcbmltcG9ydCB7XG4gIFBhZ2VCbG9jayxcbiAgUGFnZUNUQUJsb2NrUHJvcHMsXG4gIFBhZ2VDVEFJbnRlbnQsXG4gIFBhZ2VGQVFCbG9ja1Byb3BzLFxuICBQYWdlR2FsbGVyeUJsb2NrUHJvcHMsXG4gIFBhZ2VIZXJvQmxvY2tQcm9wcyxcbiAgUGFnZVRleHRCbG9ja1Byb3BzLFxufSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBgdmFsLXBhZ2UtYmxvY2tgXG4gKlxuICogT3JnYW5pc20gcXVlIHJlbmRlcml6YSBVTiBibG9xdWUgZGVsIGNvbnN0cnVjdG9yIGRlIHDDoWdpbmFzIGRlIHBsYXRhZm9ybWFcbiAqIChBRFItMDc3LCBgc2VydmljZXMvcGFnZWAgZW4gZWwgYmFja2VuZCkuIEVzIGVsIHB1bnRvIGRlIGxhIGxpYiBkb25kZSBlbFxuICogY2F0w6Fsb2dvIGRlIGJsb3F1ZXMgKGBoZXJvYCwgYHRleHRgLCBgZ2FsbGVyeWAsIGBjdGFgLCBgZmFxYCkgbWFwZWEgMToxIGFcbiAqIGNvbXBvbmVudGVzIHJlYWxlcyDigJQgbGEgcmF6w7NuIGRlIHNlciBkZWwgQURSOiBcInVuIHJlZGlzZcOxbyBkZSBsYSBsaWJcbiAqIG1lam9yYSB0b2RhcyBsYXMgcMOhZ2luYXMgcHVibGljYWRhcyBzaW4gdG9jYXIgc3VzIGRhdG9zXCIuXG4gKlxuICogUHJlc2VudGFjaW9uYWwgcHVybzogcmVjaWJlIGBwcm9wc2AgeWEgdGlwYWRvcyAoZXNwZWpvIGV4YWN0byBkZWwgYEJsb2NrYFxuICogZGVsIGJhY2tlbmQpLCBzaW4gbGxhbWFkYXMgSFRUUCBwcm9waWFzIG5pIGNvbm9jaW1pZW50byBkZSBhIHF1w6kgYXBwXG4gKiBwZXJ0ZW5lY2UgbGEgcMOhZ2luYS4gRWwgYmxvcXVlIGBjdGFgIE5PIG5hdmVnYSDigJQgZW1pdGUgYChjdGFBY3Rpb24pYCBjb25cbiAqIGxhIGludGVuY2nDs24gY3J1ZGEgKGB7IGFjdGlvbiB9YCkgcGFyYSBxdWUgZWwgY29uc3VtaWRvciAobGEgYXBwKSBsYVxuICogcmVzdWVsdmEgY29udHJhIHN1IHByb3BpbyByb3V0aW5nIChBRFItMDc3OiBcImVsIENUQSBndWFyZGEgdW5hIGludGVuY2nDs24sXG4gKiBudW5jYSB1bmEgVVJMXCIpLlxuICpcbiAqIEVsIGNhbGxlciB0w61waWNvIGl0ZXJhIGBQYWdlLkJsb2Nrc2AgeSByZW5kZXJpemEgdW5vIGRlIGVzdG9zIHBvciBibG9xdWU6XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIEBmb3IgKGJsb2NrIG9mIHBhZ2UoKS5ibG9ja3M7IHRyYWNrICRpbmRleCkge1xuICogICA8dmFsLXBhZ2UtYmxvY2sgW3Byb3BzXT1cImJsb2NrXCIgKGN0YUFjdGlvbik9XCJvbkN0YUFjdGlvbigkZXZlbnQpXCIgLz5cbiAqIH1cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtcGFnZS1ibG9jaycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIERpc3BsYXlDb21wb25lbnQsIFRpdGxlQ29tcG9uZW50LCBUZXh0Q29tcG9uZW50LCBCdXR0b25Db21wb25lbnQsIEZhcUNvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgQHN3aXRjaCAocHJvcHMudHlwZSkge1xuICAgICAgQGNhc2UgKCdoZXJvJykge1xuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cInBhZ2UtYmxvY2sgcGFnZS1ibG9jay0taGVyb1wiIFtjbGFzc109XCInYWxpZ24tJyArIChoZXJvLmFsaWduIHx8ICdjZW50ZXInKVwiPlxuICAgICAgICAgIEBpZiAoaGVyby5pbWFnZSAmJiAhaGVyb0ltYWdlRmFpbGVkKCkpIHtcbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgY2xhc3M9XCJwYWdlLWJsb2NrX19oZXJvLWltYWdlXCJcbiAgICAgICAgICAgICAgW3NyY109XCJoZXJvLmltYWdlXCJcbiAgICAgICAgICAgICAgW2FsdF09XCJoZXJvLnRpdGxlXCJcbiAgICAgICAgICAgICAgbG9hZGluZz1cImxhenlcIlxuICAgICAgICAgICAgICAoZXJyb3IpPVwiaGVyb0ltYWdlRmFpbGVkLnNldCh0cnVlKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFnZS1ibG9ja19faGVyby1jb3B5XCI+XG4gICAgICAgICAgICA8dmFsLWRpc3BsYXkgW3Byb3BzXT1cInsgc2l6ZTogJ2xhcmdlJywgY29sb3I6ICdkYXJrJywgY29udGVudDogaGVyby50aXRsZSB9XCIgLz5cbiAgICAgICAgICAgIEBpZiAoaGVyby5zdWJ0aXRsZSkge1xuICAgICAgICAgICAgICA8dmFsLXRleHQgW3Byb3BzXT1cInsgc2l6ZTogJ2xhcmdlJywgY29sb3I6ICdtZWRpdW0nLCBib2xkOiBmYWxzZSwgY29udGVudDogaGVyby5zdWJ0aXRsZSB9XCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfVxuICAgICAgQGNhc2UgKCd0ZXh0Jykge1xuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cInBhZ2UtYmxvY2sgcGFnZS1ibG9jay0tdGV4dFwiPlxuICAgICAgICAgIEBpZiAodGV4dC5oZWFkaW5nKSB7XG4gICAgICAgICAgICA8dmFsLXRpdGxlIFtwcm9wc109XCJ7IHNpemU6ICdsYXJnZScsIGNvbG9yOiAnZGFyaycsIGJvbGQ6IGZhbHNlLCBjb250ZW50OiB0ZXh0LmhlYWRpbmcgfVwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBmb3IgKHBhcmFncmFwaCBvZiB0ZXh0UGFyYWdyYXBocygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgIDx2YWwtdGV4dCBbcHJvcHNdPVwieyBzaXplOiAnbWVkaXVtJywgY29sb3I6ICdkYXJrJywgYm9sZDogZmFsc2UsIGNvbnRlbnQ6IHBhcmFncmFwaCB9XCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH1cbiAgICAgIEBjYXNlICgnZ2FsbGVyeScpIHtcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJwYWdlLWJsb2NrIHBhZ2UtYmxvY2stLWdhbGxlcnlcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFnZS1ibG9ja19fZ2FsbGVyeS1ncmlkXCI+XG4gICAgICAgICAgICBAZm9yIChpbWFnZSBvZiBnYWxsZXJ5LmltYWdlczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgIEBpZiAoIWZhaWxlZEdhbGxlcnlJbWFnZXMoKS5oYXMoJGluZGV4KSkge1xuICAgICAgICAgICAgICAgIDwhLS0gU2luIGFsdCBkZXNjcmlwdGl2bzogZWwgYmFja2VuZCBubyBtb2RlbGEgdGV4dG8gYWx0ZXJuYXRpdm9cbiAgICAgICAgICAgICAgICAgICAgIHBvciBpbWFnZW4gKHNlcnZpY2VzL3BhZ2UvYmxvY2tzX3ZhbGlkYXRlLmdvLCBnYWxsZXJ5LmltYWdlc1xuICAgICAgICAgICAgICAgICAgICAgZXMgc29sbyB1biBhcnJlZ2xvIGRlIHN0cmluZ3MpLiBTZSBtYXJjYSBkZWNvcmF0aXZhIGFcbiAgICAgICAgICAgICAgICAgICAgIHByb3DDs3NpdG8sIG5vIHVuIG9sdmlkbyBkZSBhMTF5LiAtLT5cbiAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInBhZ2UtYmxvY2tfX2dhbGxlcnktaW1hZ2VcIlxuICAgICAgICAgICAgICAgICAgW3NyY109XCJpbWFnZVwiXG4gICAgICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgICAgbG9hZGluZz1cImxhenlcIlxuICAgICAgICAgICAgICAgICAgKGVycm9yKT1cIm9uR2FsbGVyeUltYWdlRXJyb3IoJGluZGV4KVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG4gICAgICBAY2FzZSAoJ2N0YScpIHtcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJwYWdlLWJsb2NrIHBhZ2UtYmxvY2stLWN0YVwiPlxuICAgICAgICAgIDx2YWwtYnV0dG9uXG4gICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICB0ZXh0OiBjdGEubGFiZWwsXG4gICAgICAgICAgICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgICAgICAgICAgIGZpbGw6ICdzb2xpZCcsXG4gICAgICAgICAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgICAgICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgKG9uQ2xpY2spPVwib25DdGFDbGljaygpXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG4gICAgICBAY2FzZSAoJ2ZhcScpIHtcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJwYWdlLWJsb2NrIHBhZ2UtYmxvY2stLWZhcVwiPlxuICAgICAgICAgIDx2YWwtZmFxIFtwcm9wc109XCJ7IGNhdGVnb3JpZXM6IGZhcUNhdGVnb3JpZXMoKSwgc2VhcmNoYWJsZTogZmFsc2UgfVwiIC8+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH1cbiAgICB9XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL3BhZ2UtYmxvY2suY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VCbG9ja0NvbXBvbmVudCB7XG4gIC8qKiBFbCBibG9xdWUgYSByZW5kZXJpemFyIOKAlCBlc3Blam8gZGUgYHBhZ2UuQmxvY2tgIChiYWNrZW5kKS4gKi9cbiAgQElucHV0KCkgcHJvcHMhOiBQYWdlQmxvY2s7XG5cbiAgLyoqXG4gICAqIEVtaXRlIGxhIGludGVuY2nDs24gY3J1ZGEgZGVsIENUQSBhbCBoYWNlciBjbGljayAoYHsgYWN0aW9uIH1gLCBudW5jYSB1bmFcbiAgICogVVJMIOKAlCB2ZXIgY29tZW50YXJpbyBkZSBjbGFzZSkuIEVsIGNvbnN1bWlkb3IgZGVjaWRlIHF1w6kgaGFjZXIgY29uXG4gICAqIGBhY3Rpb25gOyBlc3RlIGNvbXBvbmVudGUgbm8gbGEgaW50ZXJwcmV0YS5cbiAgICovXG4gIEBPdXRwdXQoKSBjdGFBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPFBhZ2VDVEFJbnRlbnQ+KCk7XG5cbiAgLyoqIEZhbGxiYWNrIGRlIGltYWdlbiByb3RhIChjb252ZW5jacOzbiBkZSBsYSBsaWIpIOKAlCB1biBzbG90LCB1bmEgc2lnbmFsLiAqL1xuICByZWFkb25seSBoZXJvSW1hZ2VGYWlsZWQgPSBzaWduYWwoZmFsc2UpO1xuICAvKiogw41uZGljZXMgZGUgYGdhbGxlcnkuaW1hZ2VzYCBjdXlhIGNhcmdhIGZhbGzDsyAoYGVycm9yYCBkZWwgYDxpbWc+YCkuICovXG4gIHJlYWRvbmx5IGZhaWxlZEdhbGxlcnlJbWFnZXMgPSBzaWduYWw8U2V0PG51bWJlcj4+KG5ldyBTZXQoKSk7XG5cbiAgZ2V0IGhlcm8oKTogUGFnZUhlcm9CbG9ja1Byb3BzIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5wcm9wcyBhcyBQYWdlSGVyb0Jsb2NrUHJvcHM7XG4gIH1cblxuICBnZXQgdGV4dCgpOiBQYWdlVGV4dEJsb2NrUHJvcHMge1xuICAgIHJldHVybiB0aGlzLnByb3BzLnByb3BzIGFzIFBhZ2VUZXh0QmxvY2tQcm9wcztcbiAgfVxuXG4gIGdldCBnYWxsZXJ5KCk6IFBhZ2VHYWxsZXJ5QmxvY2tQcm9wcyB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMucHJvcHMgYXMgUGFnZUdhbGxlcnlCbG9ja1Byb3BzO1xuICB9XG5cbiAgZ2V0IGN0YSgpOiBQYWdlQ1RBQmxvY2tQcm9wcyB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMucHJvcHMgYXMgUGFnZUNUQUJsb2NrUHJvcHM7XG4gIH1cblxuICBnZXQgZmFxKCk6IFBhZ2VGQVFCbG9ja1Byb3BzIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5wcm9wcyBhcyBQYWdlRkFRQmxvY2tQcm9wcztcbiAgfVxuXG4gIC8qKlxuICAgKiBgdGV4dC5ib2R5YCBlcyB0ZXh0byBwbGFubyAobm8gbWFya2Rvd24g4oCUIGEgZGlmZXJlbmNpYSBkZVxuICAgKiBgdmFsLWFydGljbGVgL2B2YWwtZmFxYCwgYGJsb2Nrc192YWxpZGF0ZS5nb2Agc29sbyBleGlnZSB1biBzdHJpbmcgbm9cbiAgICogdmFjw61vKS4gUGFydGlkbyBwb3IgbMOtbmVhIHBhcmEgcXVlIGB2YWwtdGV4dGAgKHVuIGA8cD5gIHBvciBsw61uZWEpXG4gICAqIHJlc3BldGUgbG9zIHNhbHRvcyBxdWUgZWwgYXV0b3IgZXNjcmliacOzLCBzaW4gaW50ZXJwcmV0YXIgc2ludGF4aXMuXG4gICAqL1xuICB0ZXh0UGFyYWdyYXBocygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMudGV4dC5ib2R5LnNwbGl0KCdcXG4nKS5maWx0ZXIobGluZSA9PiBsaW5lLnRyaW0oKS5sZW5ndGggPiAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBgdmFsLWZhcWAgYWdydXBhIHBvciBjYXRlZ29yw61hOyBlbCBibG9xdWUgYGZhcWAgZGUgYHNlcnZpY2VzL3BhZ2VgIG5vXG4gICAqIHRpZW5lIGNhdGVnb3LDrWFzIChzb2xvIGBpdGVtc2AgcGxhbm9zKSDigJQgc2UgZW52dWVsdmUgZW4gdW5hIMO6bmljYVxuICAgKiBjYXRlZ29yw61hIHNpbiBsYWJlbCAoYGhpZGVTaW5nbGVDYXRlZ29yeUxhYmVsYCBkZWZhdWx0IGB0cnVlYCBsYSBvY3VsdGEpLlxuICAgKi9cbiAgZmFxQ2F0ZWdvcmllcygpOiBGYXFDYXRlZ29yeVtdIHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBpZDogJ3BhZ2UtZmFxJyxcbiAgICAgICAgbGFiZWw6ICcnLFxuICAgICAgICBpdGVtczogdGhpcy5mYXEuaXRlbXMubWFwKChpdGVtLCBpbmRleCkgPT4gKHtcbiAgICAgICAgICBpZDogYHBhZ2UtZmFxLSR7aW5kZXh9YCxcbiAgICAgICAgICBxdWVzdGlvbjogaXRlbS5xdWVzdGlvbixcbiAgICAgICAgICBhbnN3ZXI6IGl0ZW0uYW5zd2VyLFxuICAgICAgICB9KSksXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBvbkN0YUNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuY3RhQWN0aW9uLmVtaXQodGhpcy5jdGEuaW50ZW50KTtcbiAgfVxuXG4gIG9uR2FsbGVyeUltYWdlRXJyb3IoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG5leHQgPSBuZXcgU2V0KHRoaXMuZmFpbGVkR2FsbGVyeUltYWdlcygpKTtcbiAgICBuZXh0LmFkZChpbmRleCk7XG4gICAgdGhpcy5mYWlsZWRHYWxsZXJ5SW1hZ2VzLnNldChuZXh0KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Tipos del organism `val-page-block` — constructor de páginas de plataforma
3
+ * (ADR-077: `docs/adr/077-constructor-de-paginas-de-plataforma.md`, primera
4
+ * aplicación real en Eklesee, Bloque 4:
5
+ * `docs/eklesee/03-roadmap-y-abiertos.md`).
6
+ *
7
+ * Espejo 1:1 de `Block`/`Props` en `backend/go/services/page/types.go` +
8
+ * `backend/go/services/page/blocks_validate.go` — la forma de cada `props`
9
+ * sale de ahí, no se inventa acá. El catálogo de esta primera pasada son 5
10
+ * tipos (`hero`, `text`, `gallery`, `cta`, `faq`); `countdown`/`sponsors`/
11
+ * `progress` (catálogo completo del ADR) quedan fuera hasta que Bingo migre.
12
+ *
13
+ * El componente es i18n-agnóstico y agnóstico al dominio a propósito (mismo
14
+ * criterio que `val-faq`/`val-article`): recibe `props` ya resueltos, sin
15
+ * llamadas HTTP propias ni conocimiento de rutas de ninguna app. La app que
16
+ * lo consume (Eklesee) resuelve `PageCTAIntent.action` a una ruta real —
17
+ * este organism solo la emite via `(ctaAction)`.
18
+ */
19
+ export {};
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3BhZ2UtYmxvY2svdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaXBvcyBkZWwgb3JnYW5pc20gYHZhbC1wYWdlLWJsb2NrYCDigJQgY29uc3RydWN0b3IgZGUgcMOhZ2luYXMgZGUgcGxhdGFmb3JtYVxuICogKEFEUi0wNzc6IGBkb2NzL2Fkci8wNzctY29uc3RydWN0b3ItZGUtcGFnaW5hcy1kZS1wbGF0YWZvcm1hLm1kYCwgcHJpbWVyYVxuICogYXBsaWNhY2nDs24gcmVhbCBlbiBFa2xlc2VlLCBCbG9xdWUgNDpcbiAqIGBkb2NzL2VrbGVzZWUvMDMtcm9hZG1hcC15LWFiaWVydG9zLm1kYCkuXG4gKlxuICogRXNwZWpvIDE6MSBkZSBgQmxvY2tgL2BQcm9wc2AgZW4gYGJhY2tlbmQvZ28vc2VydmljZXMvcGFnZS90eXBlcy5nb2AgK1xuICogYGJhY2tlbmQvZ28vc2VydmljZXMvcGFnZS9ibG9ja3NfdmFsaWRhdGUuZ29gIOKAlCBsYSBmb3JtYSBkZSBjYWRhIGBwcm9wc2BcbiAqIHNhbGUgZGUgYWjDrSwgbm8gc2UgaW52ZW50YSBhY8OhLiBFbCBjYXTDoWxvZ28gZGUgZXN0YSBwcmltZXJhIHBhc2FkYSBzb24gNVxuICogdGlwb3MgKGBoZXJvYCwgYHRleHRgLCBgZ2FsbGVyeWAsIGBjdGFgLCBgZmFxYCk7IGBjb3VudGRvd25gL2BzcG9uc29yc2AvXG4gKiBgcHJvZ3Jlc3NgIChjYXTDoWxvZ28gY29tcGxldG8gZGVsIEFEUikgcXVlZGFuIGZ1ZXJhIGhhc3RhIHF1ZSBCaW5nbyBtaWdyZS5cbiAqXG4gKiBFbCBjb21wb25lbnRlIGVzIGkxOG4tYWduw7NzdGljbyB5IGFnbsOzc3RpY28gYWwgZG9taW5pbyBhIHByb3DDs3NpdG8gKG1pc21vXG4gKiBjcml0ZXJpbyBxdWUgYHZhbC1mYXFgL2B2YWwtYXJ0aWNsZWApOiByZWNpYmUgYHByb3BzYCB5YSByZXN1ZWx0b3MsIHNpblxuICogbGxhbWFkYXMgSFRUUCBwcm9waWFzIG5pIGNvbm9jaW1pZW50byBkZSBydXRhcyBkZSBuaW5ndW5hIGFwcC4gTGEgYXBwIHF1ZVxuICogbG8gY29uc3VtZSAoRWtsZXNlZSkgcmVzdWVsdmUgYFBhZ2VDVEFJbnRlbnQuYWN0aW9uYCBhIHVuYSBydXRhIHJlYWwg4oCUXG4gKiBlc3RlIG9yZ2FuaXNtIHNvbG8gbGEgZW1pdGUgdmlhIGAoY3RhQWN0aW9uKWAuXG4gKi9cblxuLyoqIGhlcm8g4oCUIHByb3BzOiBgdGl0bGVgIChyZXF1ZXJpZG8pLCBgc3VidGl0bGVgL2BpbWFnZWAvYGFsaWduYCAob3BjaW9uYWxlcykuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VIZXJvQmxvY2tQcm9wcyB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHN1YnRpdGxlPzogc3RyaW5nO1xuICAvKiogVVJMIGRlIGxhIGltYWdlbiBkZSBmb25kby9hY29tcGHDsWFudGUuICovXG4gIGltYWdlPzogc3RyaW5nO1xuICBhbGlnbj86ICdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0Jztcbn1cblxuLyoqIHRleHQg4oCUIHByb3BzOiBgYm9keWAgKHJlcXVlcmlkbyksIGBoZWFkaW5nYCAob3BjaW9uYWwpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWdlVGV4dEJsb2NrUHJvcHMge1xuICBib2R5OiBzdHJpbmc7XG4gIGhlYWRpbmc/OiBzdHJpbmc7XG59XG5cbi8qKiBnYWxsZXJ5IOKAlCBwcm9wczogYGltYWdlc2AgKHJlcXVlcmlkbywgMS4uMjAgVVJMcywgdmFsaWRhZG8gZW4gYmFja2VuZCkuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VHYWxsZXJ5QmxvY2tQcm9wcyB7XG4gIGltYWdlczogc3RyaW5nW107XG59XG5cbi8qKlxuICogSW50ZW5jacOzbiBkZWwgQ1RBLCBOVU5DQSB1bmEgVVJMIChBRFItMDc3OiBcImVsIGxpbmsgZGVsIHZlbmRlZG9yIHB1ZWRlXG4gKiByZWdlbmVyYXJzZS4uLiBzaW4gZGVqYXIgcMOhZ2luYXMgcHVibGljYWRhcyBhcHVudGFuZG8gYSB1biB0b2tlbiBtdWVydG9cIikuXG4gKiBFbCBjYXTDoWxvZ28gZGUgYGFjdGlvbmAgZXMgZGVsIGJhY2tlbmQgKGBwYWdlLkNUQUFjdGlvbmAsIGhveSBzb2xvXG4gKiBgYXBwbHlfbWVtYmVyc2hpcGAg4oCUIHZlciBgc2VydmljZXMvcGFnZS90eXBlcy5nb2ApLiBFc3RlIGNvbXBvbmVudGUgTk9cbiAqIHJlc3VlbHZlIGxhIGludGVuY2nDs24gYSB1bmEgcnV0YTogc29sbyBsYSByZWNpYmUgeSBsYSByZWVtaXRlIHRhbCBjdWFsIHZpYVxuICogYChjdGFBY3Rpb24pYCBwYXJhIHF1ZSBsYSBhcHAgbGEgcmVzdWVsdmEgY29udHJhIHN1IHByb3BpbyByb3V0aW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VDVEFJbnRlbnQge1xuICBhY3Rpb246IHN0cmluZztcbn1cblxuLyoqIGN0YSDigJQgcHJvcHM6IGBsYWJlbGAgKHJlcXVlcmlkbyksIGBpbnRlbnQuYWN0aW9uYCAocmVxdWVyaWRvKS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZUNUQUJsb2NrUHJvcHMge1xuICBsYWJlbDogc3RyaW5nO1xuICBpbnRlbnQ6IFBhZ2VDVEFJbnRlbnQ7XG59XG5cbi8qKiBVbiDDrXRlbSBkZSBGQVEgKHByZWd1bnRhICsgcmVzcHVlc3RhIGVuIHRleHRvIHBsYW5vKS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZUZBUUl0ZW1Qcm9wcyB7XG4gIHF1ZXN0aW9uOiBzdHJpbmc7XG4gIGFuc3dlcjogc3RyaW5nO1xufVxuXG4vKiogZmFxIOKAlCBwcm9wczogYGl0ZW1zYCAocmVxdWVyaWRvLCAxLi41MCwgdmFsaWRhZG8gZW4gYmFja2VuZCkuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VGQVFCbG9ja1Byb3BzIHtcbiAgaXRlbXM6IFBhZ2VGQVFJdGVtUHJvcHNbXTtcbn1cblxuLyoqIERpc2NyaW1pbmFkb3IgZGUgYmxvcXVlIOKAlCBlc3Blam8gZGUgYHBhZ2UuQmxvY2tUeXBlYCAoYmFja2VuZCkuICovXG5leHBvcnQgdHlwZSBQYWdlQmxvY2tUeXBlID0gJ2hlcm8nIHwgJ3RleHQnIHwgJ2dhbGxlcnknIHwgJ2N0YScgfCAnZmFxJztcblxuaW50ZXJmYWNlIFBhZ2VCbG9ja0Jhc2Uge1xuICAvKipcbiAgICogT3JkZW4gZGUgcmVuZGVyaXphZG8gZGVudHJvIGRlIGBQYWdlLkJsb2Nrc2AuIEVsIGJhY2tlbmQgbG8gcmUtZXN0YW1wYVxuICAgKiBTSUVNUFJFIGEgcGFydGlyIGRlIGxhIHBvc2ljacOzbiBkZWwgYXJyYXkgYWwgZ3VhcmRhciAoYFNldEJsb2Nrc2Ag4oCUXG4gICAqIHJlZ2xhICM3IGJhY2tlbmQvZ28vQ0xBVURFLm1kOiBudW5jYSBjb25maWFyIGVuIHVuIGBvcmRlcmAgcXVlIHZlbmdhIGRlbFxuICAgKiBjbGllbnRlKS4gT3BjaW9uYWwgYWPDoTogZWwgY29uc3VtaWRvciB0w61waWNvIHlhIGl0ZXJhIGVsIGFycmF5IGVuIGVsXG4gICAqIG9yZGVuIHJlYWwsIGVzdGUgY2FtcG8gZXMgaW5mb3JtYXRpdm8uXG4gICAqL1xuICBvcmRlcj86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWdlSGVyb0Jsb2NrIGV4dGVuZHMgUGFnZUJsb2NrQmFzZSB7XG4gIHR5cGU6ICdoZXJvJztcbiAgcHJvcHM6IFBhZ2VIZXJvQmxvY2tQcm9wcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWdlVGV4dEJsb2NrIGV4dGVuZHMgUGFnZUJsb2NrQmFzZSB7XG4gIHR5cGU6ICd0ZXh0JztcbiAgcHJvcHM6IFBhZ2VUZXh0QmxvY2tQcm9wcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWdlR2FsbGVyeUJsb2NrIGV4dGVuZHMgUGFnZUJsb2NrQmFzZSB7XG4gIHR5cGU6ICdnYWxsZXJ5JztcbiAgcHJvcHM6IFBhZ2VHYWxsZXJ5QmxvY2tQcm9wcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWdlQ1RBQmxvY2sgZXh0ZW5kcyBQYWdlQmxvY2tCYXNlIHtcbiAgdHlwZTogJ2N0YSc7XG4gIHByb3BzOiBQYWdlQ1RBQmxvY2tQcm9wcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWdlRkFRQmxvY2sgZXh0ZW5kcyBQYWdlQmxvY2tCYXNlIHtcbiAgdHlwZTogJ2ZhcSc7XG4gIHByb3BzOiBQYWdlRkFRQmxvY2tQcm9wcztcbn1cblxuLyoqIFVuacOzbiBkaXNjcmltaW5hZGEg4oCUIGVzcGVqbyBkZSBgcGFnZS5CbG9ja2AgKGJhY2tlbmQsIGBQcm9wcyBtYXBbc3RyaW5nXWFueWAgdGlwYWRvIHBvciBgVHlwZWApLiAqL1xuZXhwb3J0IHR5cGUgUGFnZUJsb2NrID1cbiAgfCBQYWdlSGVyb0Jsb2NrXG4gIHwgUGFnZVRleHRCbG9ja1xuICB8IFBhZ2VHYWxsZXJ5QmxvY2tcbiAgfCBQYWdlQ1RBQmxvY2tcbiAgfCBQYWdlRkFRQmxvY2s7XG5cbi8qKlxuICogUHJvcHMgZGUgYDx2YWwtcGFnZS1ibG9jaz5gLiBBbGlhcyBkZSBgUGFnZUJsb2NrYCBjb24gZWwgbm9tYnJlXG4gKiBgKk1ldGFkYXRhYCBxdWUgc2lndWUgZWwgcmVzdG8gZGUgbGEgbGliIChgY29udmVuY2nDs246IFByb3BzIGludGVyZmFjZVxuICog4oaSICpNZXRhZGF0YWApIOKAlCBtaXNtbyB0aXBvLCBkb3Mgbm9tYnJlcyBwYXJhIGRvcyBjb250ZXh0b3MgZGUgdXNvIChlbFxuICogYXJyYXkgZGUgbGEgcMOhZ2luYSB2cy4gZWwgYEBJbnB1dGAgZGUgdW4gY29tcG9uZW50ZSBwdW50dWFsKS5cbiAqL1xuZXhwb3J0IHR5cGUgUGFnZUJsb2NrTWV0YWRhdGEgPSBQYWdlQmxvY2s7XG4iXX0=
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Tipos de `val-video-player` (ADR-087 — video como servicio de plataforma).
3
+ *
4
+ * Espejo agnóstico al dominio de `content.VideoAsset` (backend Go,
5
+ * `backend/go/services/content/video.go`) — mismos nombres de campo en
6
+ * camelCase. Cualquier app pasa acá el `VideoAsset` que le devuelve SU propio
7
+ * backend (sermón en Eklesee, receta en Okhelia, animal en Chesed, artículo de
8
+ * ayuda) con un mapeo trivial; el componente no conoce ni le importa de qué
9
+ * dominio viene.
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3ZpZGVvLXBsYXllci90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7O0dBU0ciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRpcG9zIGRlIGB2YWwtdmlkZW8tcGxheWVyYCAoQURSLTA4NyDigJQgdmlkZW8gY29tbyBzZXJ2aWNpbyBkZSBwbGF0YWZvcm1hKS5cbiAqXG4gKiBFc3Blam8gYWduw7NzdGljbyBhbCBkb21pbmlvIGRlIGBjb250ZW50LlZpZGVvQXNzZXRgIChiYWNrZW5kIEdvLFxuICogYGJhY2tlbmQvZ28vc2VydmljZXMvY29udGVudC92aWRlby5nb2ApIOKAlCBtaXNtb3Mgbm9tYnJlcyBkZSBjYW1wbyBlblxuICogY2FtZWxDYXNlLiBDdWFscXVpZXIgYXBwIHBhc2EgYWPDoSBlbCBgVmlkZW9Bc3NldGAgcXVlIGxlIGRldnVlbHZlIFNVIHByb3Bpb1xuICogYmFja2VuZCAoc2VybcOzbiBlbiBFa2xlc2VlLCByZWNldGEgZW4gT2toZWxpYSwgYW5pbWFsIGVuIENoZXNlZCwgYXJ0w61jdWxvIGRlXG4gKiBheXVkYSkgY29uIHVuIG1hcGVvIHRyaXZpYWw7IGVsIGNvbXBvbmVudGUgbm8gY29ub2NlIG5pIGxlIGltcG9ydGEgZGUgcXXDqVxuICogZG9taW5pbyB2aWVuZS5cbiAqL1xuXG5leHBvcnQgdHlwZSBWaWRlb1BsYXllclNvdXJjZSA9ICd1cGxvYWQnIHwgJ2xpbmsnO1xuXG4vKiogU29sbyBhcGxpY2EgYSBgc291cmNlOiAndXBsb2FkJ2AuIFVuIGxpbmsgbm9ybWFsaXphZG8gY29uIMOpeGl0byBuYWNlIGVuICdyZWFkeScuICovXG5leHBvcnQgdHlwZSBWaWRlb1BsYXllclN0YXR1cyA9ICd1cGxvYWRpbmcnIHwgJ3Byb2Nlc3NpbmcnIHwgJ3JlYWR5JyB8ICdmYWlsZWQnIHwgJ3JlamVjdGVkJztcblxuZXhwb3J0IGludGVyZmFjZSBWaWRlb1BsYXllckNhcHRpb24ge1xuICBsb2NhbGU6IHN0cmluZztcbiAgdXJsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlkZW9QbGF5ZXJBc3NldCB7XG4gIHNvdXJjZTogVmlkZW9QbGF5ZXJTb3VyY2U7XG4gIC8qKlxuICAgKiBgc291cmNlOid1cGxvYWQnYCDihpIgVVJMIGRlIHJlcHJvZHVjY2nDs24geWEgcHJlc2lnbmFkYSBwb3IgZWwgYmFja2VuZFxuICAgKiAoVFRMIGNvcnRvLCB+MTUgbWluIOKAlCBBRFItMDg3IMKnNikuIMOac2FsYSBkaXJlY3RvLCBubyBsYSBjYWNoZWVzIG5pIGxhXG4gICAqIHBlcnNpc3Rhczogc2UgcmVjYWxjdWxhIGVuIGNhZGEgbGVjdHVyYSBkZWwgZG9jdW1lbnRvLlxuICAgKiBgc291cmNlOidsaW5rJ2Ag4oaSIFVSTCBub3JtYWxpemFkYSBkZWwgcHJvdmVlZG9yIChubyBzZSB1c2EgcGFyYSBlbFxuICAgKiBlbWJlZCwgdmVyIGBleHRlcm5hbElkYCkuXG4gICAqL1xuICB1cmw/OiBzdHJpbmc7XG4gIC8qKiBgJ3lvdXR1YmUnIHwgJ3ZpbWVvJ2Ag4oCUIHNvbG8gc2kgYHNvdXJjZTogJ2xpbmsnYC4gKi9cbiAgcHJvdmlkZXI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJRCB5YSBub3JtYWxpemFkbyBwb3IgZWwgYmFja2VuZCDigJQgZWwgw5pOSUNPIGRhdG8gcXVlIGFybWEgZWwgaWZyYW1lIGRlXG4gICAqIGVtYmVkLiBFbCBjb21wb25lbnRlIE5VTkNBIGFybWEgdW4gYHNyY2AgY29uIGRhdG9zIGNydWRvcyBkZWwgdXN1YXJpby5cbiAgICovXG4gIGV4dGVybmFsSWQ/OiBzdHJpbmc7XG4gIGR1cmF0aW9uU2VjPzogbnVtYmVyO1xuICAvKiogUG9ydGFkYSDigJQgc2UgbXVlc3RyYSBtaWVudHJhcyBlbCB2aWRlbyBubyBlc3TDoSBgcmVhZHlgIChtZWpvciBwZXJjZXBjacOzbiBkZSBjYXJnYSkuICovXG4gIHRodW1ibmFpbD86IHN0cmluZztcbiAgY2FwdGlvbnM/OiBWaWRlb1BsYXllckNhcHRpb25bXTtcbiAgc3RhdHVzPzogVmlkZW9QbGF5ZXJTdGF0dXM7XG4gIC8qKlxuICAgKiBNb3Rpdm8gbGVnaWJsZSBkZSBgZmFpbGVkYC9gcmVqZWN0ZWRgLCB5YSBlbiBlbCBpZGlvbWEgcXVlIGRlY2lkacOzIGVsXG4gICAqIGJhY2tlbmQgKGVzLUNMKSDigJQgc2UgbXVlc3RyYSB0YWwgY3VhbCwgbm8gZXMgdW4gY8OzZGlnbyBhIHRyYWR1Y2lyLlxuICAgKi9cbiAgZmFpbFJlYXNvbj86IHN0cmluZztcbn1cbiJdfQ==