valtech-components 2.0.407 → 2.0.410

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 (110) hide show
  1. package/esm2022/lib/components/atoms/horizontal-scroll/horizontal-scroll.component.mjs +82 -0
  2. package/esm2022/lib/components/atoms/horizontal-scroll/types.mjs +2 -0
  3. package/esm2022/lib/components/atoms/rights-footer/rights-footer.component.mjs +82 -0
  4. package/esm2022/lib/components/atoms/rights-footer/types.mjs +2 -0
  5. package/esm2022/lib/components/molecules/check-input/check-input.component.mjs +55 -11
  6. package/esm2022/lib/components/molecules/email-input/email-input.component.mjs +13 -4
  7. package/esm2022/lib/components/molecules/expandable-text/expandable-text.component.mjs +27 -23
  8. package/esm2022/lib/components/molecules/footer-links/footer-links.component.mjs +277 -0
  9. package/esm2022/lib/components/molecules/footer-links/types.mjs +2 -0
  10. package/esm2022/lib/components/molecules/links-accordion/links-accordion.component.mjs +157 -0
  11. package/esm2022/lib/components/molecules/links-accordion/types.mjs +2 -0
  12. package/esm2022/lib/components/molecules/password-input/password-input.component.mjs +12 -2
  13. package/esm2022/lib/components/molecules/prompter/prompter.component.mjs +21 -9
  14. package/esm2022/lib/components/molecules/prompter/types.mjs +1 -1
  15. package/esm2022/lib/components/molecules/radio-input/radio-input.component.mjs +13 -4
  16. package/esm2022/lib/components/molecules/recap-card/recap-card.component.mjs +78 -0
  17. package/esm2022/lib/components/molecules/recap-card/types.mjs +2 -0
  18. package/esm2022/lib/components/molecules/select-input/select-input.component.mjs +31 -14
  19. package/esm2022/lib/components/molecules/swipe-carousel/swipe-carousel.component.mjs +206 -0
  20. package/esm2022/lib/components/molecules/swipe-carousel/types.mjs +2 -0
  21. package/esm2022/lib/components/molecules/testimonial-card/testimonial-card.component.mjs +138 -0
  22. package/esm2022/lib/components/molecules/testimonial-card/types.mjs +2 -0
  23. package/esm2022/lib/components/molecules/text-input/text-input.component.mjs +14 -4
  24. package/esm2022/lib/components/organisms/cards-carousel/cards-carousel.component.mjs +61 -0
  25. package/esm2022/lib/components/organisms/cards-carousel/types.mjs +2 -0
  26. package/esm2022/lib/components/organisms/company-footer/company-footer.component.mjs +72 -0
  27. package/esm2022/lib/components/organisms/company-footer/types.mjs +2 -0
  28. package/esm2022/lib/components/organisms/data-table/data-table.component.mjs +175 -3
  29. package/esm2022/lib/components/organisms/data-table/types.mjs +1 -1
  30. package/esm2022/lib/components/organisms/form/form.component.mjs +2 -2
  31. package/esm2022/lib/components/organisms/fun-header/fun-header.component.mjs +225 -0
  32. package/esm2022/lib/components/organisms/fun-header/types.mjs +2 -0
  33. package/esm2022/lib/components/organisms/menu/menu.component.mjs +197 -0
  34. package/esm2022/lib/components/organisms/menu/types.mjs +2 -0
  35. package/esm2022/lib/components/organisms/testimonial-carousel/testimonial-carousel.component.mjs +72 -0
  36. package/esm2022/lib/components/organisms/testimonial-carousel/types.mjs +2 -0
  37. package/esm2022/lib/components/templates/page-content/page-content.component.mjs +156 -0
  38. package/esm2022/lib/components/templates/page-content/types.mjs +2 -0
  39. package/esm2022/lib/components/templates/page-template/page-template.component.mjs +181 -0
  40. package/esm2022/lib/components/templates/page-template/types.mjs +2 -0
  41. package/esm2022/lib/components/templates/page-wrapper/page-wrapper.component.mjs +195 -0
  42. package/esm2022/lib/components/templates/page-wrapper/types.mjs +2 -0
  43. package/esm2022/lib/components/types.mjs +1 -1
  44. package/esm2022/lib/services/firebase/config.mjs +103 -0
  45. package/esm2022/lib/services/firebase/firebase.service.mjs +285 -0
  46. package/esm2022/lib/services/firebase/firestore-collection.mjs +266 -0
  47. package/esm2022/lib/services/firebase/firestore.service.mjs +508 -0
  48. package/esm2022/lib/services/firebase/index.mjs +46 -0
  49. package/esm2022/lib/services/firebase/messaging.service.mjs +503 -0
  50. package/esm2022/lib/services/firebase/storage.service.mjs +421 -0
  51. package/esm2022/lib/services/firebase/types.mjs +8 -0
  52. package/esm2022/lib/services/firebase/utils/path-builder.mjs +195 -0
  53. package/esm2022/lib/services/firebase/utils/query-builder.mjs +302 -0
  54. package/esm2022/lib/services/icons.service.mjs +3 -2
  55. package/esm2022/public-api.mjs +33 -1
  56. package/fesm2022/valtech-components.mjs +5823 -869
  57. package/fesm2022/valtech-components.mjs.map +1 -1
  58. package/lib/components/atoms/horizontal-scroll/horizontal-scroll.component.d.ts +41 -0
  59. package/lib/components/atoms/horizontal-scroll/types.d.ts +13 -0
  60. package/lib/components/atoms/rights-footer/rights-footer.component.d.ts +39 -0
  61. package/lib/components/atoms/rights-footer/types.d.ts +13 -0
  62. package/lib/components/molecules/check-input/check-input.component.d.ts +17 -2
  63. package/lib/components/molecules/email-input/email-input.component.d.ts +1 -2
  64. package/lib/components/molecules/footer-links/footer-links.component.d.ts +47 -0
  65. package/lib/components/molecules/footer-links/types.d.ts +37 -0
  66. package/lib/components/molecules/links-accordion/links-accordion.component.d.ts +48 -0
  67. package/lib/components/molecules/links-accordion/types.d.ts +33 -0
  68. package/lib/components/molecules/password-input/password-input.component.d.ts +1 -1
  69. package/lib/components/molecules/prompter/prompter.component.d.ts +8 -1
  70. package/lib/components/molecules/prompter/types.d.ts +7 -1
  71. package/lib/components/molecules/radio-input/radio-input.component.d.ts +1 -2
  72. package/lib/components/molecules/recap-card/recap-card.component.d.ts +36 -0
  73. package/lib/components/molecules/recap-card/types.d.ts +30 -0
  74. package/lib/components/molecules/select-input/select-input.component.d.ts +6 -1
  75. package/lib/components/molecules/swipe-carousel/swipe-carousel.component.d.ts +66 -0
  76. package/lib/components/molecules/swipe-carousel/types.d.ts +35 -0
  77. package/lib/components/molecules/testimonial-card/testimonial-card.component.d.ts +41 -0
  78. package/lib/components/molecules/testimonial-card/types.d.ts +25 -0
  79. package/lib/components/molecules/text-input/text-input.component.d.ts +13 -4
  80. package/lib/components/organisms/cards-carousel/cards-carousel.component.d.ts +30 -0
  81. package/lib/components/organisms/cards-carousel/types.d.ts +11 -0
  82. package/lib/components/organisms/company-footer/company-footer.component.d.ts +32 -0
  83. package/lib/components/organisms/company-footer/types.d.ts +15 -0
  84. package/lib/components/organisms/data-table/data-table.component.d.ts +1 -1
  85. package/lib/components/organisms/data-table/types.d.ts +6 -0
  86. package/lib/components/organisms/fun-header/fun-header.component.d.ts +72 -0
  87. package/lib/components/organisms/fun-header/types.d.ts +28 -0
  88. package/lib/components/organisms/menu/menu.component.d.ts +39 -0
  89. package/lib/components/organisms/menu/types.d.ts +23 -0
  90. package/lib/components/organisms/testimonial-carousel/testimonial-carousel.component.d.ts +33 -0
  91. package/lib/components/organisms/testimonial-carousel/types.d.ts +8 -0
  92. package/lib/components/templates/page-content/page-content.component.d.ts +55 -0
  93. package/lib/components/templates/page-content/types.d.ts +14 -0
  94. package/lib/components/templates/page-template/page-template.component.d.ts +49 -0
  95. package/lib/components/templates/page-template/types.d.ts +17 -0
  96. package/lib/components/templates/page-wrapper/page-wrapper.component.d.ts +61 -0
  97. package/lib/components/templates/page-wrapper/types.d.ts +19 -0
  98. package/lib/components/types.d.ts +14 -0
  99. package/lib/services/firebase/config.d.ts +49 -0
  100. package/lib/services/firebase/firebase.service.d.ts +140 -0
  101. package/lib/services/firebase/firestore-collection.d.ts +195 -0
  102. package/lib/services/firebase/firestore.service.d.ts +303 -0
  103. package/lib/services/firebase/index.d.ts +38 -0
  104. package/lib/services/firebase/messaging.service.d.ts +254 -0
  105. package/lib/services/firebase/storage.service.d.ts +204 -0
  106. package/lib/services/firebase/types.d.ts +279 -0
  107. package/lib/services/firebase/utils/path-builder.d.ts +132 -0
  108. package/lib/services/firebase/utils/query-builder.d.ts +210 -0
  109. package/package.json +3 -1
  110. package/public-api.d.ts +31 -0
@@ -0,0 +1,206 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, Input, ViewChild, } from '@angular/core';
3
+ import Swiper from 'swiper';
4
+ import { Autoplay, EffectCoverflow, EffectCube, EffectFade, EffectFlip, Navigation, Pagination } from 'swiper/modules';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ /**
8
+ * val-swipe-carousel
9
+ *
10
+ * A powerful carousel component built on Swiper with multiple transition effects,
11
+ * navigation, pagination, and responsive breakpoints.
12
+ *
13
+ * @example
14
+ * <val-swipe-carousel
15
+ * [items]="slides"
16
+ * [itemTemplate]="slideTemplate"
17
+ * [props]="{ effect: 'coverflow', pagination: true }"
18
+ * ></val-swipe-carousel>
19
+ *
20
+ * <ng-template #slideTemplate let-item>
21
+ * <div class="slide-content">{{ item.title }}</div>
22
+ * </ng-template>
23
+ *
24
+ * @input items - Array of items to render as slides
25
+ * @input itemTemplate - Template reference for rendering each slide
26
+ * @input props - Configuration options (effect, pagination, navigation, etc.)
27
+ */
28
+ export class SwipeCarouselComponent {
29
+ constructor() {
30
+ /**
31
+ * Array of items to render as slides.
32
+ */
33
+ this.items = [];
34
+ this.defaultOptions = {
35
+ slidesPerView: 1,
36
+ spaceBetween: 10,
37
+ loop: true,
38
+ centeredSlides: true,
39
+ effect: 'slide',
40
+ pagination: true,
41
+ navigation: true,
42
+ scaleEffect: true,
43
+ breakpoints: {
44
+ 768: {
45
+ slidesPerView: 1.5,
46
+ spaceBetween: 40,
47
+ },
48
+ 1024: {
49
+ slidesPerView: 1.7,
50
+ spaceBetween: 50,
51
+ },
52
+ },
53
+ };
54
+ }
55
+ ngOnChanges(changes) {
56
+ if (changes['items'] || changes['props']) {
57
+ this.destroySwiper();
58
+ if (this.items && this.items.length > 0 && this.swiperContainer) {
59
+ setTimeout(() => this.initSwiper(), 0);
60
+ }
61
+ }
62
+ }
63
+ ngAfterViewInit() {
64
+ if (this.items && this.items.length > 0) {
65
+ this.initSwiper();
66
+ }
67
+ }
68
+ ngOnDestroy() {
69
+ this.destroySwiper();
70
+ }
71
+ initSwiper() {
72
+ const options = { ...this.defaultOptions, ...this.props };
73
+ const swiperConfig = {
74
+ modules: [Navigation, Pagination, EffectFade, EffectCube, EffectCoverflow, EffectFlip, Autoplay],
75
+ slidesPerView: options.slidesPerView,
76
+ spaceBetween: options.spaceBetween,
77
+ loop: options.loop,
78
+ centeredSlides: options.centeredSlides,
79
+ effect: options.effect,
80
+ autoplay: options.autoplay,
81
+ breakpoints: options.breakpoints,
82
+ pagination: options.pagination !== false
83
+ ? {
84
+ el: '.swiper-pagination',
85
+ clickable: true,
86
+ }
87
+ : false,
88
+ navigation: options.navigation !== false
89
+ ? {
90
+ nextEl: '.swiper-button-next',
91
+ prevEl: '.swiper-button-prev',
92
+ }
93
+ : false,
94
+ };
95
+ // Effect-specific configurations
96
+ if (options.effect === 'coverflow') {
97
+ swiperConfig.coverflowEffect = {
98
+ rotate: 50,
99
+ stretch: 0,
100
+ depth: 100,
101
+ modifier: 1,
102
+ slideShadows: false,
103
+ };
104
+ }
105
+ if (options.effect === 'cube') {
106
+ swiperConfig.cubeEffect = {
107
+ shadow: true,
108
+ slideShadows: true,
109
+ shadowOffset: 20,
110
+ shadowScale: 0.94,
111
+ };
112
+ }
113
+ this.swiper = new Swiper(this.swiperContainer.nativeElement, swiperConfig);
114
+ }
115
+ destroySwiper() {
116
+ if (this.swiper) {
117
+ this.swiper.destroy(true, true);
118
+ this.swiper = undefined;
119
+ }
120
+ }
121
+ // Public API for external control
122
+ /**
123
+ * Navigate to previous slide.
124
+ */
125
+ slidePrev() {
126
+ this.swiper?.slidePrev();
127
+ }
128
+ /**
129
+ * Navigate to next slide.
130
+ */
131
+ slideNext() {
132
+ this.swiper?.slideNext();
133
+ }
134
+ /**
135
+ * Navigate to specific slide by index.
136
+ */
137
+ slideTo(index) {
138
+ this.swiper?.slideTo(index);
139
+ }
140
+ /**
141
+ * Get the Swiper instance for advanced control.
142
+ */
143
+ getSwiperInstance() {
144
+ return this.swiper;
145
+ }
146
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SwipeCarouselComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
147
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SwipeCarouselComponent, isStandalone: true, selector: "val-swipe-carousel", inputs: { items: "items", itemTemplate: "itemTemplate", props: "props" }, viewQueries: [{ propertyName: "swiperContainer", first: true, predicate: ["swiperContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
148
+ <div
149
+ class="carousel-wrapper"
150
+ [class.scale-effect]="props?.scaleEffect !== false"
151
+ [class.no-padding]="!props?.navigation"
152
+ [style.padding]="props?.wrapperPadding"
153
+ >
154
+ <div class="swiper-container" #swiperContainer>
155
+ <div class="swiper-wrapper">
156
+ @for (item of items; track $index) {
157
+ <div class="swiper-slide">
158
+ <ng-container *ngTemplateOutlet="itemTemplate; context: { $implicit: item, index: $index }"></ng-container>
159
+ </div>
160
+ }
161
+ </div>
162
+
163
+ <div *ngIf="props?.pagination !== false" class="swiper-pagination"></div>
164
+ </div>
165
+
166
+ <div *ngIf="props?.navigation !== false" class="swiper-button-prev"></div>
167
+ <div *ngIf="props?.navigation !== false" class="swiper-button-next"></div>
168
+ </div>
169
+ `, isInline: true, styles: ["@charset \"UTF-8\";.swiper-container{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;box-sizing:content-box}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translateZ(0);z-index:10}.swiper-pagination-bullet{width:8px;height:8px;display:inline-block;border-radius:50%;background:var(--ion-color-medium, #999);opacity:.7;margin:0 4px;cursor:pointer;transition:all .3s ease}.swiper-pagination-bullet-active{opacity:1;background:var(--ion-color-primary, #3880ff);width:10px;height:10px}.carousel-wrapper{position:relative;width:100%;padding:0 50px}.carousel-wrapper.no-padding{padding:0}.carousel-wrapper .swiper-container{width:100%;overflow:visible}.carousel-wrapper .swiper-wrapper{padding-bottom:32px}.carousel-wrapper .swiper-slide{display:flex;justify-content:center;align-items:center;padding:2px 0}.carousel-wrapper.scale-effect .swiper-slide{transform:scale(.85);opacity:.7;transition:transform .3s ease,opacity .3s ease}.carousel-wrapper.scale-effect .swiper-slide.swiper-slide-active{transform:scale(1);opacity:1}.carousel-wrapper .swiper-pagination{bottom:0!important;left:50%;transform:translate(-50%);width:auto}.carousel-wrapper .swiper-button-prev,.carousel-wrapper .swiper-button-next{position:absolute;top:calc(50% - 16px);transform:translateY(-50%);width:45px;height:45px;background-color:var(--ion-background-color, #ffffff);border-radius:50%;box-shadow:0 4px 10px #00000026;display:flex;justify-content:center;align-items:center;cursor:pointer;z-index:10;transition:box-shadow .2s ease,transform .2s ease;border:none;outline:none}.carousel-wrapper .swiper-button-prev:hover,.carousel-wrapper .swiper-button-next:hover{box-shadow:0 6px 14px #0003;transform:translateY(-50%) scale(1.05)}.carousel-wrapper .swiper-button-prev:after,.carousel-wrapper .swiper-button-next:after{font-size:24px;color:var(--ion-color-primary, #3880ff);font-weight:700}.carousel-wrapper .swiper-button-prev{left:0}.carousel-wrapper .swiper-button-prev:after{content:\"\\2039\"}.carousel-wrapper .swiper-button-next{right:0}.carousel-wrapper .swiper-button-next:after{content:\"\\203a\"}.carousel-wrapper .swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
170
+ }
171
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SwipeCarouselComponent, decorators: [{
172
+ type: Component,
173
+ args: [{ selector: 'val-swipe-carousel', standalone: true, imports: [CommonModule], template: `
174
+ <div
175
+ class="carousel-wrapper"
176
+ [class.scale-effect]="props?.scaleEffect !== false"
177
+ [class.no-padding]="!props?.navigation"
178
+ [style.padding]="props?.wrapperPadding"
179
+ >
180
+ <div class="swiper-container" #swiperContainer>
181
+ <div class="swiper-wrapper">
182
+ @for (item of items; track $index) {
183
+ <div class="swiper-slide">
184
+ <ng-container *ngTemplateOutlet="itemTemplate; context: { $implicit: item, index: $index }"></ng-container>
185
+ </div>
186
+ }
187
+ </div>
188
+
189
+ <div *ngIf="props?.pagination !== false" class="swiper-pagination"></div>
190
+ </div>
191
+
192
+ <div *ngIf="props?.navigation !== false" class="swiper-button-prev"></div>
193
+ <div *ngIf="props?.navigation !== false" class="swiper-button-next"></div>
194
+ </div>
195
+ `, styles: ["@charset \"UTF-8\";.swiper-container{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;box-sizing:content-box}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translateZ(0);z-index:10}.swiper-pagination-bullet{width:8px;height:8px;display:inline-block;border-radius:50%;background:var(--ion-color-medium, #999);opacity:.7;margin:0 4px;cursor:pointer;transition:all .3s ease}.swiper-pagination-bullet-active{opacity:1;background:var(--ion-color-primary, #3880ff);width:10px;height:10px}.carousel-wrapper{position:relative;width:100%;padding:0 50px}.carousel-wrapper.no-padding{padding:0}.carousel-wrapper .swiper-container{width:100%;overflow:visible}.carousel-wrapper .swiper-wrapper{padding-bottom:32px}.carousel-wrapper .swiper-slide{display:flex;justify-content:center;align-items:center;padding:2px 0}.carousel-wrapper.scale-effect .swiper-slide{transform:scale(.85);opacity:.7;transition:transform .3s ease,opacity .3s ease}.carousel-wrapper.scale-effect .swiper-slide.swiper-slide-active{transform:scale(1);opacity:1}.carousel-wrapper .swiper-pagination{bottom:0!important;left:50%;transform:translate(-50%);width:auto}.carousel-wrapper .swiper-button-prev,.carousel-wrapper .swiper-button-next{position:absolute;top:calc(50% - 16px);transform:translateY(-50%);width:45px;height:45px;background-color:var(--ion-background-color, #ffffff);border-radius:50%;box-shadow:0 4px 10px #00000026;display:flex;justify-content:center;align-items:center;cursor:pointer;z-index:10;transition:box-shadow .2s ease,transform .2s ease;border:none;outline:none}.carousel-wrapper .swiper-button-prev:hover,.carousel-wrapper .swiper-button-next:hover{box-shadow:0 6px 14px #0003;transform:translateY(-50%) scale(1.05)}.carousel-wrapper .swiper-button-prev:after,.carousel-wrapper .swiper-button-next:after{font-size:24px;color:var(--ion-color-primary, #3880ff);font-weight:700}.carousel-wrapper .swiper-button-prev{left:0}.carousel-wrapper .swiper-button-prev:after{content:\"\\2039\"}.carousel-wrapper .swiper-button-next{right:0}.carousel-wrapper .swiper-button-next:after{content:\"\\203a\"}.carousel-wrapper .swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}\n"] }]
196
+ }], propDecorators: { items: [{
197
+ type: Input
198
+ }], itemTemplate: [{
199
+ type: Input
200
+ }], props: [{
201
+ type: Input
202
+ }], swiperContainer: [{
203
+ type: ViewChild,
204
+ args: ['swiperContainer']
205
+ }] } });
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpcGUtY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9zd2lwZS1jYXJvdXNlbC9zd2lwZS1jYXJvdXNlbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFFTCxTQUFTLEVBRVQsS0FBSyxFQUtMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFHdkg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBOEJILE1BQU0sT0FBTyxzQkFBc0I7SUE3Qm5DO1FBOEJFOztXQUVHO1FBQ00sVUFBSyxHQUFRLEVBQUUsQ0FBQztRQWlCakIsbUJBQWMsR0FBMEI7WUFDOUMsYUFBYSxFQUFFLENBQUM7WUFDaEIsWUFBWSxFQUFFLEVBQUU7WUFDaEIsSUFBSSxFQUFFLElBQUk7WUFDVixjQUFjLEVBQUUsSUFBSTtZQUNwQixNQUFNLEVBQUUsT0FBTztZQUNmLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLFdBQVcsRUFBRTtnQkFDWCxHQUFHLEVBQUU7b0JBQ0gsYUFBYSxFQUFFLEdBQUc7b0JBQ2xCLFlBQVksRUFBRSxFQUFFO2lCQUNqQjtnQkFDRCxJQUFJLEVBQUU7b0JBQ0osYUFBYSxFQUFFLEdBQUc7b0JBQ2xCLFlBQVksRUFBRSxFQUFFO2lCQUNqQjthQUNGO1NBQ0YsQ0FBQztLQTRHSDtJQTFHQyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUNoRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BCLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU8sVUFBVTtRQUNoQixNQUFNLE9BQU8sR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUUxRCxNQUFNLFlBQVksR0FBUTtZQUN4QixPQUFPLEVBQUUsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUM7WUFDaEcsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhO1lBQ3BDLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWTtZQUNsQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7WUFDbEIsY0FBYyxFQUFFLE9BQU8sQ0FBQyxjQUFjO1lBQ3RDLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtZQUN0QixRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVE7WUFDMUIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO1lBQ2hDLFVBQVUsRUFDUixPQUFPLENBQUMsVUFBVSxLQUFLLEtBQUs7Z0JBQzFCLENBQUMsQ0FBQztvQkFDRSxFQUFFLEVBQUUsb0JBQW9CO29CQUN4QixTQUFTLEVBQUUsSUFBSTtpQkFDaEI7Z0JBQ0gsQ0FBQyxDQUFDLEtBQUs7WUFDWCxVQUFVLEVBQ1IsT0FBTyxDQUFDLFVBQVUsS0FBSyxLQUFLO2dCQUMxQixDQUFDLENBQUM7b0JBQ0UsTUFBTSxFQUFFLHFCQUFxQjtvQkFDN0IsTUFBTSxFQUFFLHFCQUFxQjtpQkFDOUI7Z0JBQ0gsQ0FBQyxDQUFDLEtBQUs7U0FDWixDQUFDO1FBRUYsaUNBQWlDO1FBQ2pDLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUNuQyxZQUFZLENBQUMsZUFBZSxHQUFHO2dCQUM3QixNQUFNLEVBQUUsRUFBRTtnQkFDVixPQUFPLEVBQUUsQ0FBQztnQkFDVixLQUFLLEVBQUUsR0FBRztnQkFDVixRQUFRLEVBQUUsQ0FBQztnQkFDWCxZQUFZLEVBQUUsS0FBSzthQUNwQixDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUM5QixZQUFZLENBQUMsVUFBVSxHQUFHO2dCQUN4QixNQUFNLEVBQUUsSUFBSTtnQkFDWixZQUFZLEVBQUUsSUFBSTtnQkFDbEIsWUFBWSxFQUFFLEVBQUU7Z0JBQ2hCLFdBQVcsRUFBRSxJQUFJO2FBQ2xCLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRU8sYUFBYTtRQUNuQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFFRCxrQ0FBa0M7SUFFbEM7O09BRUc7SUFDSCxTQUFTO1FBQ1AsSUFBSSxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxTQUFTO1FBQ1AsSUFBSSxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxPQUFPLENBQUMsS0FBYTtRQUNuQixJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQzsrR0FuSlUsc0JBQXNCO21HQUF0QixzQkFBc0IsaVNBekJ2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCVCxpL0VBdkJTLFlBQVk7OzRGQTBCWCxzQkFBc0I7a0JBN0JsQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsWUFDYjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCVDs4QkFPUSxLQUFLO3NCQUFiLEtBQUs7Z0JBTUcsWUFBWTtzQkFBcEIsS0FBSztnQkFLRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRXdCLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBTd2lwZXIgZnJvbSAnc3dpcGVyJztcbmltcG9ydCB7IEF1dG9wbGF5LCBFZmZlY3RDb3ZlcmZsb3csIEVmZmVjdEN1YmUsIEVmZmVjdEZhZGUsIEVmZmVjdEZsaXAsIE5hdmlnYXRpb24sIFBhZ2luYXRpb24gfSBmcm9tICdzd2lwZXIvbW9kdWxlcyc7XG5pbXBvcnQgeyBTd2lwZUNhcm91c2VsTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiB2YWwtc3dpcGUtY2Fyb3VzZWxcbiAqXG4gKiBBIHBvd2VyZnVsIGNhcm91c2VsIGNvbXBvbmVudCBidWlsdCBvbiBTd2lwZXIgd2l0aCBtdWx0aXBsZSB0cmFuc2l0aW9uIGVmZmVjdHMsXG4gKiBuYXZpZ2F0aW9uLCBwYWdpbmF0aW9uLCBhbmQgcmVzcG9uc2l2ZSBicmVha3BvaW50cy5cbiAqXG4gKiBAZXhhbXBsZVxuICogPHZhbC1zd2lwZS1jYXJvdXNlbFxuICogICBbaXRlbXNdPVwic2xpZGVzXCJcbiAqICAgW2l0ZW1UZW1wbGF0ZV09XCJzbGlkZVRlbXBsYXRlXCJcbiAqICAgW3Byb3BzXT1cInsgZWZmZWN0OiAnY292ZXJmbG93JywgcGFnaW5hdGlvbjogdHJ1ZSB9XCJcbiAqID48L3ZhbC1zd2lwZS1jYXJvdXNlbD5cbiAqXG4gKiA8bmctdGVtcGxhdGUgI3NsaWRlVGVtcGxhdGUgbGV0LWl0ZW0+XG4gKiAgIDxkaXYgY2xhc3M9XCJzbGlkZS1jb250ZW50XCI+e3sgaXRlbS50aXRsZSB9fTwvZGl2PlxuICogPC9uZy10ZW1wbGF0ZT5cbiAqXG4gKiBAaW5wdXQgaXRlbXMgLSBBcnJheSBvZiBpdGVtcyB0byByZW5kZXIgYXMgc2xpZGVzXG4gKiBAaW5wdXQgaXRlbVRlbXBsYXRlIC0gVGVtcGxhdGUgcmVmZXJlbmNlIGZvciByZW5kZXJpbmcgZWFjaCBzbGlkZVxuICogQGlucHV0IHByb3BzIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zIChlZmZlY3QsIHBhZ2luYXRpb24sIG5hdmlnYXRpb24sIGV0Yy4pXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1zd2lwZS1jYXJvdXNlbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiY2Fyb3VzZWwtd3JhcHBlclwiXG4gICAgICBbY2xhc3Muc2NhbGUtZWZmZWN0XT1cInByb3BzPy5zY2FsZUVmZmVjdCAhPT0gZmFsc2VcIlxuICAgICAgW2NsYXNzLm5vLXBhZGRpbmddPVwiIXByb3BzPy5uYXZpZ2F0aW9uXCJcbiAgICAgIFtzdHlsZS5wYWRkaW5nXT1cInByb3BzPy53cmFwcGVyUGFkZGluZ1wiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInN3aXBlci1jb250YWluZXJcIiAjc3dpcGVyQ29udGFpbmVyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3dpcGVyLXdyYXBwZXJcIj5cbiAgICAgICAgICBAZm9yIChpdGVtIG9mIGl0ZW1zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzd2lwZXItc2xpZGVcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0sIGluZGV4OiAkaW5kZXggfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvcHM/LnBhZ2luYXRpb24gIT09IGZhbHNlXCIgY2xhc3M9XCJzd2lwZXItcGFnaW5hdGlvblwiPjwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCJwcm9wcz8ubmF2aWdhdGlvbiAhPT0gZmFsc2VcIiBjbGFzcz1cInN3aXBlci1idXR0b24tcHJldlwiPjwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cInByb3BzPy5uYXZpZ2F0aW9uICE9PSBmYWxzZVwiIGNsYXNzPVwic3dpcGVyLWJ1dHRvbi1uZXh0XCI+PC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL3N3aXBlLWNhcm91c2VsLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFN3aXBlQ2Fyb3VzZWxDb21wb25lbnQ8VCA9IGFueT4gaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBBcnJheSBvZiBpdGVtcyB0byByZW5kZXIgYXMgc2xpZGVzLlxuICAgKi9cbiAgQElucHV0KCkgaXRlbXM6IFRbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBUZW1wbGF0ZSByZWZlcmVuY2UgZm9yIHJlbmRlcmluZyBlYWNoIHNsaWRlLlxuICAgKiBUaGUgdGVtcGxhdGUgcmVjZWl2ZXMgdGhlIGl0ZW0gYXMgaW1wbGljaXQgY29udGV4dCBhbmQgaW5kZXggYXMgJ2luZGV4Jy5cbiAgICovXG4gIEBJbnB1dCgpIGl0ZW1UZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGNhcm91c2VsLlxuICAgKi9cbiAgQElucHV0KCkgcHJvcHM/OiBTd2lwZUNhcm91c2VsTWV0YWRhdGE7XG5cbiAgQFZpZXdDaGlsZCgnc3dpcGVyQ29udGFpbmVyJykgc3dpcGVyQ29udGFpbmVyITogRWxlbWVudFJlZjtcblxuICBwcml2YXRlIHN3aXBlcj86IFN3aXBlcjtcblxuICBwcml2YXRlIGRlZmF1bHRPcHRpb25zOiBTd2lwZUNhcm91c2VsTWV0YWRhdGEgPSB7XG4gICAgc2xpZGVzUGVyVmlldzogMSxcbiAgICBzcGFjZUJldHdlZW46IDEwLFxuICAgIGxvb3A6IHRydWUsXG4gICAgY2VudGVyZWRTbGlkZXM6IHRydWUsXG4gICAgZWZmZWN0OiAnc2xpZGUnLFxuICAgIHBhZ2luYXRpb246IHRydWUsXG4gICAgbmF2aWdhdGlvbjogdHJ1ZSxcbiAgICBzY2FsZUVmZmVjdDogdHJ1ZSxcbiAgICBicmVha3BvaW50czoge1xuICAgICAgNzY4OiB7XG4gICAgICAgIHNsaWRlc1BlclZpZXc6IDEuNSxcbiAgICAgICAgc3BhY2VCZXR3ZWVuOiA0MCxcbiAgICAgIH0sXG4gICAgICAxMDI0OiB7XG4gICAgICAgIHNsaWRlc1BlclZpZXc6IDEuNyxcbiAgICAgICAgc3BhY2VCZXR3ZWVuOiA1MCxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2l0ZW1zJ10gfHwgY2hhbmdlc1sncHJvcHMnXSkge1xuICAgICAgdGhpcy5kZXN0cm95U3dpcGVyKCk7XG4gICAgICBpZiAodGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDAgJiYgdGhpcy5zd2lwZXJDb250YWluZXIpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmluaXRTd2lwZXIoKSwgMCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5pbml0U3dpcGVyKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95U3dpcGVyKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRTd2lwZXIoKTogdm9pZCB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHsgLi4udGhpcy5kZWZhdWx0T3B0aW9ucywgLi4udGhpcy5wcm9wcyB9O1xuXG4gICAgY29uc3Qgc3dpcGVyQ29uZmlnOiBhbnkgPSB7XG4gICAgICBtb2R1bGVzOiBbTmF2aWdhdGlvbiwgUGFnaW5hdGlvbiwgRWZmZWN0RmFkZSwgRWZmZWN0Q3ViZSwgRWZmZWN0Q292ZXJmbG93LCBFZmZlY3RGbGlwLCBBdXRvcGxheV0sXG4gICAgICBzbGlkZXNQZXJWaWV3OiBvcHRpb25zLnNsaWRlc1BlclZpZXcsXG4gICAgICBzcGFjZUJldHdlZW46IG9wdGlvbnMuc3BhY2VCZXR3ZWVuLFxuICAgICAgbG9vcDogb3B0aW9ucy5sb29wLFxuICAgICAgY2VudGVyZWRTbGlkZXM6IG9wdGlvbnMuY2VudGVyZWRTbGlkZXMsXG4gICAgICBlZmZlY3Q6IG9wdGlvbnMuZWZmZWN0LFxuICAgICAgYXV0b3BsYXk6IG9wdGlvbnMuYXV0b3BsYXksXG4gICAgICBicmVha3BvaW50czogb3B0aW9ucy5icmVha3BvaW50cyxcbiAgICAgIHBhZ2luYXRpb246XG4gICAgICAgIG9wdGlvbnMucGFnaW5hdGlvbiAhPT0gZmFsc2VcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgZWw6ICcuc3dpcGVyLXBhZ2luYXRpb24nLFxuICAgICAgICAgICAgICBjbGlja2FibGU6IHRydWUsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiBmYWxzZSxcbiAgICAgIG5hdmlnYXRpb246XG4gICAgICAgIG9wdGlvbnMubmF2aWdhdGlvbiAhPT0gZmFsc2VcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgbmV4dEVsOiAnLnN3aXBlci1idXR0b24tbmV4dCcsXG4gICAgICAgICAgICAgIHByZXZFbDogJy5zd2lwZXItYnV0dG9uLXByZXYnLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogZmFsc2UsXG4gICAgfTtcblxuICAgIC8vIEVmZmVjdC1zcGVjaWZpYyBjb25maWd1cmF0aW9uc1xuICAgIGlmIChvcHRpb25zLmVmZmVjdCA9PT0gJ2NvdmVyZmxvdycpIHtcbiAgICAgIHN3aXBlckNvbmZpZy5jb3ZlcmZsb3dFZmZlY3QgPSB7XG4gICAgICAgIHJvdGF0ZTogNTAsXG4gICAgICAgIHN0cmV0Y2g6IDAsXG4gICAgICAgIGRlcHRoOiAxMDAsXG4gICAgICAgIG1vZGlmaWVyOiAxLFxuICAgICAgICBzbGlkZVNoYWRvd3M6IGZhbHNlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5lZmZlY3QgPT09ICdjdWJlJykge1xuICAgICAgc3dpcGVyQ29uZmlnLmN1YmVFZmZlY3QgPSB7XG4gICAgICAgIHNoYWRvdzogdHJ1ZSxcbiAgICAgICAgc2xpZGVTaGFkb3dzOiB0cnVlLFxuICAgICAgICBzaGFkb3dPZmZzZXQ6IDIwLFxuICAgICAgICBzaGFkb3dTY2FsZTogMC45NCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdGhpcy5zd2lwZXIgPSBuZXcgU3dpcGVyKHRoaXMuc3dpcGVyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsIHN3aXBlckNvbmZpZyk7XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3lTd2lwZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3dpcGVyKSB7XG4gICAgICB0aGlzLnN3aXBlci5kZXN0cm95KHRydWUsIHRydWUpO1xuICAgICAgdGhpcy5zd2lwZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgLy8gUHVibGljIEFQSSBmb3IgZXh0ZXJuYWwgY29udHJvbFxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZSB0byBwcmV2aW91cyBzbGlkZS5cbiAgICovXG4gIHNsaWRlUHJldigpOiB2b2lkIHtcbiAgICB0aGlzLnN3aXBlcj8uc2xpZGVQcmV2KCk7XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGUgdG8gbmV4dCBzbGlkZS5cbiAgICovXG4gIHNsaWRlTmV4dCgpOiB2b2lkIHtcbiAgICB0aGlzLnN3aXBlcj8uc2xpZGVOZXh0KCk7XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGUgdG8gc3BlY2lmaWMgc2xpZGUgYnkgaW5kZXguXG4gICAqL1xuICBzbGlkZVRvKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnN3aXBlcj8uc2xpZGVUbyhpbmRleCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBTd2lwZXIgaW5zdGFuY2UgZm9yIGFkdmFuY2VkIGNvbnRyb2wuXG4gICAqL1xuICBnZXRTd2lwZXJJbnN0YW5jZSgpOiBTd2lwZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnN3aXBlcjtcbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3N3aXBlLWNhcm91c2VsL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIFN3aXBlciBjYXJvdXNlbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTd2lwZUNhcm91c2VsTWV0YWRhdGEge1xuICAvKiogTnVtYmVyIG9mIHNsaWRlcyBwZXIgdmlldy4gRGVmYXVsdDogMSAqL1xuICBzbGlkZXNQZXJWaWV3PzogbnVtYmVyIHwgJ2F1dG8nO1xuICAvKiogU3BhY2UgYmV0d2VlbiBzbGlkZXMgaW4gcGl4ZWxzLiBEZWZhdWx0OiAxMCAqL1xuICBzcGFjZUJldHdlZW4/OiBudW1iZXI7XG4gIC8qKiBFbmFibGUgaW5maW5pdGUgbG9vcC4gRGVmYXVsdDogdHJ1ZSAqL1xuICBsb29wPzogYm9vbGVhbjtcbiAgLyoqIENlbnRlciBhY3RpdmUgc2xpZGUuIERlZmF1bHQ6IHRydWUgKi9cbiAgY2VudGVyZWRTbGlkZXM/OiBib29sZWFuO1xuICAvKiogVHJhbnNpdGlvbiBlZmZlY3QuIERlZmF1bHQ6ICdzbGlkZScgKi9cbiAgZWZmZWN0PzogJ3NsaWRlJyB8ICdmYWRlJyB8ICdjdWJlJyB8ICdjb3ZlcmZsb3cnIHwgJ2ZsaXAnO1xuICAvKiogQXV0b3BsYXkgY29uZmlndXJhdGlvbi4gRGVmYXVsdDogZmFsc2UgKi9cbiAgYXV0b3BsYXk/OiBib29sZWFuIHwgeyBkZWxheTogbnVtYmVyOyBkaXNhYmxlT25JbnRlcmFjdGlvbjogYm9vbGVhbiB9O1xuICAvKiogUmVzcG9uc2l2ZSBicmVha3BvaW50cyAqL1xuICBicmVha3BvaW50cz86IHtcbiAgICBbd2lkdGg6IG51bWJlcl06IHtcbiAgICAgIHNsaWRlc1BlclZpZXc/OiBudW1iZXIgfCAnYXV0byc7XG4gICAgICBzcGFjZUJldHdlZW4/OiBudW1iZXI7XG4gICAgfTtcbiAgfTtcbiAgLyoqIFNob3cgcGFnaW5hdGlvbiBidWxsZXRzLiBEZWZhdWx0OiB0cnVlICovXG4gIHBhZ2luYXRpb24/OiBib29sZWFuO1xuICAvKiogU2hvdyBuYXZpZ2F0aW9uIGFycm93cy4gRGVmYXVsdDogdHJ1ZSAqL1xuICBuYXZpZ2F0aW9uPzogYm9vbGVhbjtcbiAgLyoqIEFwcGx5IHNjYWxlIGVmZmVjdCB0byBpbmFjdGl2ZSBzbGlkZXMuIERlZmF1bHQ6IHRydWUgKi9cbiAgc2NhbGVFZmZlY3Q/OiBib29sZWFuO1xuICAvKiogUGFkZGluZyBmb3IgdGhlIGNhcm91c2VsIHdyYXBwZXIuIERlZmF1bHQ6ICcwIDMycHgnICovXG4gIHdyYXBwZXJQYWRkaW5nPzogc3RyaW5nO1xufVxuIl19
@@ -0,0 +1,138 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, inject, Input } from '@angular/core';
3
+ import { IonCard, IonCardContent } from '@ionic/angular/standalone';
4
+ import { ThemeService } from '../../../services/theme.service';
5
+ import { ImageComponent } from '../../atoms/image/image.component';
6
+ import { ButtonGroupComponent } from '../button-group/button-group.component';
7
+ import { LinkComponent } from '../link/link.component';
8
+ import { TitleBlockComponent } from '../title-block/title-block.component';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "@angular/common";
11
+ /**
12
+ * val-testimonial-card
13
+ *
14
+ * A card component for testimonials with image, title, link, and action buttons.
15
+ * Supports dynamic background gradients and dark mode overlay.
16
+ *
17
+ * @example
18
+ * <val-testimonial-card
19
+ * [props]="{
20
+ * title: { title: 'John Doe', subtitle: 'CEO, Company' },
21
+ * link: { text: 'Read full story', url: '#' },
22
+ * image: { src: 'avatar.jpg', alt: 'John Doe' },
23
+ * color: 'primary'
24
+ * }"
25
+ * ></val-testimonial-card>
26
+ *
27
+ * @input props - Card configuration (title, link, image, color, background, actions)
28
+ */
29
+ export class TestimonialCardComponent {
30
+ constructor() {
31
+ this.theme = inject(ThemeService);
32
+ }
33
+ /**
34
+ * Gets the effective color/background.
35
+ * Supports: Ionic color names (primary, secondary), CSS variables (--my-color),
36
+ * direct colors (#fff, rgb()), or url() for images.
37
+ */
38
+ getColor() {
39
+ const color = this.props.background || this.props.color || 'secondary';
40
+ // If it's a CSS variable, url, gradient, or direct color value, return as-is
41
+ if (color.startsWith('--') ||
42
+ color.startsWith('var(') ||
43
+ color.startsWith('url(') ||
44
+ color.startsWith('#') ||
45
+ color.startsWith('rgb') ||
46
+ color.startsWith('hsl') ||
47
+ color.includes('gradient')) {
48
+ return color.startsWith('--') ? `var(${color})` : color;
49
+ }
50
+ // Assume it's an Ionic color name
51
+ return `var(--ion-color-${color})`;
52
+ }
53
+ /**
54
+ * Generates dynamic card styles with overlay based on theme.
55
+ */
56
+ cardStyle() {
57
+ const isDark = this.theme.IsDark;
58
+ const overlay = isDark
59
+ ? 'linear-gradient(0deg, rgba(0,0,0,0.45) 0%, rgba(0,0,0,0.45) 100%)'
60
+ : 'linear-gradient(0deg, rgba(255,255,255,0.55) 0%, rgba(255,255,255,0.55) 100%)';
61
+ const color = this.getColor();
62
+ // If color is an image URL
63
+ if (typeof color === 'string' && color.startsWith('url(')) {
64
+ return {
65
+ backgroundImage: `${overlay}, ${color}`,
66
+ backgroundSize: 'cover',
67
+ backgroundPosition: 'center',
68
+ };
69
+ }
70
+ // Gradient overlay over any background
71
+ return {
72
+ backgroundImage: `${overlay}, linear-gradient(200deg, var(--ion-color-light) 2%, ${color} 95%)`,
73
+ backgroundSize: 'cover',
74
+ backgroundPosition: 'center',
75
+ };
76
+ }
77
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TestimonialCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
78
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TestimonialCardComponent, isStandalone: true, selector: "val-testimonial-card", inputs: { props: "props" }, ngImport: i0, template: `
79
+ <ion-card class="testimonial-card" [ngStyle]="cardStyle()">
80
+ <ion-card-content
81
+ class="testimonial-card__content"
82
+ [style.min-height]="props.minHeight || '450px'"
83
+ [style.max-height]="props.minHeight || '450px'"
84
+ [style.min-width]="props.minWidth || '300px'"
85
+ >
86
+ <section>
87
+ @if (props.image) {
88
+ <section class="image-container">
89
+ <val-image style="display: contents;" [props]="props.image" />
90
+ </section>
91
+ }
92
+ <val-title-block [props]="props.title" />
93
+ </section>
94
+
95
+ @if (props.link) {
96
+ <val-link [props]="props.link" />
97
+ }
98
+
99
+ @if (props.actions) {
100
+ <val-button-group [props]="props.actions" />
101
+ }
102
+ </ion-card-content>
103
+ </ion-card>
104
+ `, isInline: true, styles: [".testimonial-card{position:relative;overflow:hidden;border-radius:16px;margin:10px}.testimonial-card .testimonial-card__content{position:relative;z-index:1;display:flex;flex-direction:column;justify-content:space-between;height:100%;min-height:450px;max-height:450px;min-width:300px;padding:16px}.testimonial-card .image-container{display:flex;justify-content:center;margin-bottom:16px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: LinkComponent, selector: "val-link", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: TitleBlockComponent, selector: "val-title-block", inputs: ["props"] }, { kind: "component", type: ImageComponent, selector: "val-image", inputs: ["props"] }, { kind: "component", type: ButtonGroupComponent, selector: "val-button-group", inputs: ["props"], outputs: ["onClick"] }] }); }
105
+ }
106
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TestimonialCardComponent, decorators: [{
107
+ type: Component,
108
+ args: [{ selector: 'val-testimonial-card', standalone: true, imports: [CommonModule, IonCard, IonCardContent, LinkComponent, TitleBlockComponent, ImageComponent, ButtonGroupComponent], template: `
109
+ <ion-card class="testimonial-card" [ngStyle]="cardStyle()">
110
+ <ion-card-content
111
+ class="testimonial-card__content"
112
+ [style.min-height]="props.minHeight || '450px'"
113
+ [style.max-height]="props.minHeight || '450px'"
114
+ [style.min-width]="props.minWidth || '300px'"
115
+ >
116
+ <section>
117
+ @if (props.image) {
118
+ <section class="image-container">
119
+ <val-image style="display: contents;" [props]="props.image" />
120
+ </section>
121
+ }
122
+ <val-title-block [props]="props.title" />
123
+ </section>
124
+
125
+ @if (props.link) {
126
+ <val-link [props]="props.link" />
127
+ }
128
+
129
+ @if (props.actions) {
130
+ <val-button-group [props]="props.actions" />
131
+ }
132
+ </ion-card-content>
133
+ </ion-card>
134
+ `, styles: [".testimonial-card{position:relative;overflow:hidden;border-radius:16px;margin:10px}.testimonial-card .testimonial-card__content{position:relative;z-index:1;display:flex;flex-direction:column;justify-content:space-between;height:100%;min-height:450px;max-height:450px;min-width:300px;padding:16px}.testimonial-card .image-container{display:flex;justify-content:center;margin-bottom:16px}\n"] }]
135
+ }], propDecorators: { props: [{
136
+ type: Input
137
+ }] } });
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGltb25pYWwtY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3Rlc3RpbW9uaWFsLWNhcmQvdGVzdGltb25pYWwtY2FyZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7QUFHM0U7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBa0NILE1BQU0sT0FBTyx3QkFBd0I7SUFqQ3JDO1FBa0NVLFVBQUssR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7S0EwRHRDO0lBbkRDOzs7O09BSUc7SUFDSyxRQUFRO1FBQ2QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksV0FBVyxDQUFDO1FBRXZFLDZFQUE2RTtRQUM3RSxJQUNFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQ3RCLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1lBQ3hCLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1lBQ3hCLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO1lBQ3JCLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO1lBQ3ZCLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO1lBQ3ZCLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQzFCLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUMxRCxDQUFDO1FBRUQsa0NBQWtDO1FBQ2xDLE9BQU8sbUJBQW1CLEtBQUssR0FBRyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7T0FFRztJQUNILFNBQVM7UUFDUCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUNqQyxNQUFNLE9BQU8sR0FBRyxNQUFNO1lBQ3BCLENBQUMsQ0FBQyxtRUFBbUU7WUFDckUsQ0FBQyxDQUFDLCtFQUErRSxDQUFDO1FBQ3BGLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUU5QiwyQkFBMkI7UUFDM0IsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzFELE9BQU87Z0JBQ0wsZUFBZSxFQUFFLEdBQUcsT0FBTyxLQUFLLEtBQUssRUFBRTtnQkFDdkMsY0FBYyxFQUFFLE9BQU87Z0JBQ3ZCLGtCQUFrQixFQUFFLFFBQVE7YUFDN0IsQ0FBQztRQUNKLENBQUM7UUFFRCx1Q0FBdUM7UUFDdkMsT0FBTztZQUNMLGVBQWUsRUFBRSxHQUFHLE9BQU8sd0RBQXdELEtBQUssT0FBTztZQUMvRixjQUFjLEVBQUUsT0FBTztZQUN2QixrQkFBa0IsRUFBRSxRQUFRO1NBQzdCLENBQUM7SUFDSixDQUFDOytHQTFEVSx3QkFBd0I7bUdBQXhCLHdCQUF3Qiw0R0E3QnpCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCVCw2Y0EzQlMsWUFBWSxvSEFBRSxPQUFPLHlMQUFFLGNBQWMsK0VBQUUsYUFBYSw4RkFBRSxtQkFBbUIsK0VBQUUsY0FBYyx5RUFBRSxvQkFBb0I7OzRGQThCOUcsd0JBQXdCO2tCQWpDcEMsU0FBUzsrQkFDRSxzQkFBc0IsY0FDcEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxvQkFBb0IsQ0FBQyxZQUNoSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQlQ7OEJBU1EsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uQ2FyZCwgSW9uQ2FyZENvbnRlbnQgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IFRoZW1lU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RoZW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgSW1hZ2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9pbWFnZS9pbWFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uR3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi9idXR0b24tZ3JvdXAvYnV0dG9uLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMaW5rQ29tcG9uZW50IH0gZnJvbSAnLi4vbGluay9saW5rLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZUJsb2NrQ29tcG9uZW50IH0gZnJvbSAnLi4vdGl0bGUtYmxvY2svdGl0bGUtYmxvY2suY29tcG9uZW50JztcbmltcG9ydCB7IFRlc3RpbW9uaWFsQ2FyZE1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogdmFsLXRlc3RpbW9uaWFsLWNhcmRcbiAqXG4gKiBBIGNhcmQgY29tcG9uZW50IGZvciB0ZXN0aW1vbmlhbHMgd2l0aCBpbWFnZSwgdGl0bGUsIGxpbmssIGFuZCBhY3Rpb24gYnV0dG9ucy5cbiAqIFN1cHBvcnRzIGR5bmFtaWMgYmFja2dyb3VuZCBncmFkaWVudHMgYW5kIGRhcmsgbW9kZSBvdmVybGF5LlxuICpcbiAqIEBleGFtcGxlXG4gKiA8dmFsLXRlc3RpbW9uaWFsLWNhcmRcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICB0aXRsZTogeyB0aXRsZTogJ0pvaG4gRG9lJywgc3VidGl0bGU6ICdDRU8sIENvbXBhbnknIH0sXG4gKiAgICAgbGluazogeyB0ZXh0OiAnUmVhZCBmdWxsIHN0b3J5JywgdXJsOiAnIycgfSxcbiAqICAgICBpbWFnZTogeyBzcmM6ICdhdmF0YXIuanBnJywgYWx0OiAnSm9obiBEb2UnIH0sXG4gKiAgICAgY29sb3I6ICdwcmltYXJ5J1xuICogICB9XCJcbiAqID48L3ZhbC10ZXN0aW1vbmlhbC1jYXJkPlxuICpcbiAqIEBpbnB1dCBwcm9wcyAtIENhcmQgY29uZmlndXJhdGlvbiAodGl0bGUsIGxpbmssIGltYWdlLCBjb2xvciwgYmFja2dyb3VuZCwgYWN0aW9ucylcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXRlc3RpbW9uaWFsLWNhcmQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25DYXJkLCBJb25DYXJkQ29udGVudCwgTGlua0NvbXBvbmVudCwgVGl0bGVCbG9ja0NvbXBvbmVudCwgSW1hZ2VDb21wb25lbnQsIEJ1dHRvbkdyb3VwQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8aW9uLWNhcmQgY2xhc3M9XCJ0ZXN0aW1vbmlhbC1jYXJkXCIgW25nU3R5bGVdPVwiY2FyZFN0eWxlKClcIj5cbiAgICAgIDxpb24tY2FyZC1jb250ZW50XG4gICAgICAgIGNsYXNzPVwidGVzdGltb25pYWwtY2FyZF9fY29udGVudFwiXG4gICAgICAgIFtzdHlsZS5taW4taGVpZ2h0XT1cInByb3BzLm1pbkhlaWdodCB8fCAnNDUwcHgnXCJcbiAgICAgICAgW3N0eWxlLm1heC1oZWlnaHRdPVwicHJvcHMubWluSGVpZ2h0IHx8ICc0NTBweCdcIlxuICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cInByb3BzLm1pbldpZHRoIHx8ICczMDBweCdcIlxuICAgICAgPlxuICAgICAgICA8c2VjdGlvbj5cbiAgICAgICAgICBAaWYgKHByb3BzLmltYWdlKSB7XG4gICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImltYWdlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICA8dmFsLWltYWdlIHN0eWxlPVwiZGlzcGxheTogY29udGVudHM7XCIgW3Byb3BzXT1cInByb3BzLmltYWdlXCIgLz5cbiAgICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgPHZhbC10aXRsZS1ibG9jayBbcHJvcHNdPVwicHJvcHMudGl0bGVcIiAvPlxuICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgQGlmIChwcm9wcy5saW5rKSB7XG4gICAgICAgICAgPHZhbC1saW5rIFtwcm9wc109XCJwcm9wcy5saW5rXCIgLz5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAocHJvcHMuYWN0aW9ucykge1xuICAgICAgICAgIDx2YWwtYnV0dG9uLWdyb3VwIFtwcm9wc109XCJwcm9wcy5hY3Rpb25zXCIgLz5cbiAgICAgICAgfVxuICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxuICAgIDwvaW9uLWNhcmQ+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL3Rlc3RpbW9uaWFsLWNhcmQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVGVzdGltb25pYWxDYXJkQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSB0aGVtZSA9IGluamVjdChUaGVtZVNlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBDYXJkIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBASW5wdXQoKSBwcm9wcyE6IFRlc3RpbW9uaWFsQ2FyZE1ldGFkYXRhO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBlZmZlY3RpdmUgY29sb3IvYmFja2dyb3VuZC5cbiAgICogU3VwcG9ydHM6IElvbmljIGNvbG9yIG5hbWVzIChwcmltYXJ5LCBzZWNvbmRhcnkpLCBDU1MgdmFyaWFibGVzICgtLW15LWNvbG9yKSxcbiAgICogZGlyZWN0IGNvbG9ycyAoI2ZmZiwgcmdiKCkpLCBvciB1cmwoKSBmb3IgaW1hZ2VzLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRDb2xvcigpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvbG9yID0gdGhpcy5wcm9wcy5iYWNrZ3JvdW5kIHx8IHRoaXMucHJvcHMuY29sb3IgfHwgJ3NlY29uZGFyeSc7XG5cbiAgICAvLyBJZiBpdCdzIGEgQ1NTIHZhcmlhYmxlLCB1cmwsIGdyYWRpZW50LCBvciBkaXJlY3QgY29sb3IgdmFsdWUsIHJldHVybiBhcy1pc1xuICAgIGlmIChcbiAgICAgIGNvbG9yLnN0YXJ0c1dpdGgoJy0tJykgfHxcbiAgICAgIGNvbG9yLnN0YXJ0c1dpdGgoJ3ZhcignKSB8fFxuICAgICAgY29sb3Iuc3RhcnRzV2l0aCgndXJsKCcpIHx8XG4gICAgICBjb2xvci5zdGFydHNXaXRoKCcjJykgfHxcbiAgICAgIGNvbG9yLnN0YXJ0c1dpdGgoJ3JnYicpIHx8XG4gICAgICBjb2xvci5zdGFydHNXaXRoKCdoc2wnKSB8fFxuICAgICAgY29sb3IuaW5jbHVkZXMoJ2dyYWRpZW50JylcbiAgICApIHtcbiAgICAgIHJldHVybiBjb2xvci5zdGFydHNXaXRoKCctLScpID8gYHZhcigke2NvbG9yfSlgIDogY29sb3I7XG4gICAgfVxuXG4gICAgLy8gQXNzdW1lIGl0J3MgYW4gSW9uaWMgY29sb3IgbmFtZVxuICAgIHJldHVybiBgdmFyKC0taW9uLWNvbG9yLSR7Y29sb3J9KWA7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGR5bmFtaWMgY2FyZCBzdHlsZXMgd2l0aCBvdmVybGF5IGJhc2VkIG9uIHRoZW1lLlxuICAgKi9cbiAgY2FyZFN0eWxlKCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIGNvbnN0IGlzRGFyayA9IHRoaXMudGhlbWUuSXNEYXJrO1xuICAgIGNvbnN0IG92ZXJsYXkgPSBpc0RhcmtcbiAgICAgID8gJ2xpbmVhci1ncmFkaWVudCgwZGVnLCByZ2JhKDAsMCwwLDAuNDUpIDAlLCByZ2JhKDAsMCwwLDAuNDUpIDEwMCUpJ1xuICAgICAgOiAnbGluZWFyLWdyYWRpZW50KDBkZWcsIHJnYmEoMjU1LDI1NSwyNTUsMC41NSkgMCUsIHJnYmEoMjU1LDI1NSwyNTUsMC41NSkgMTAwJSknO1xuICAgIGNvbnN0IGNvbG9yID0gdGhpcy5nZXRDb2xvcigpO1xuXG4gICAgLy8gSWYgY29sb3IgaXMgYW4gaW1hZ2UgVVJMXG4gICAgaWYgKHR5cGVvZiBjb2xvciA9PT0gJ3N0cmluZycgJiYgY29sb3Iuc3RhcnRzV2l0aCgndXJsKCcpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBiYWNrZ3JvdW5kSW1hZ2U6IGAke292ZXJsYXl9LCAke2NvbG9yfWAsXG4gICAgICAgIGJhY2tncm91bmRTaXplOiAnY292ZXInLFxuICAgICAgICBiYWNrZ3JvdW5kUG9zaXRpb246ICdjZW50ZXInLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBHcmFkaWVudCBvdmVybGF5IG92ZXIgYW55IGJhY2tncm91bmRcbiAgICByZXR1cm4ge1xuICAgICAgYmFja2dyb3VuZEltYWdlOiBgJHtvdmVybGF5fSwgbGluZWFyLWdyYWRpZW50KDIwMGRlZywgdmFyKC0taW9uLWNvbG9yLWxpZ2h0KSAyJSwgJHtjb2xvcn0gOTUlKWAsXG4gICAgICBiYWNrZ3JvdW5kU2l6ZTogJ2NvdmVyJyxcbiAgICAgIGJhY2tncm91bmRQb3NpdGlvbjogJ2NlbnRlcicsXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3Rlc3RpbW9uaWFsLWNhcmQvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1dHRvbkdyb3VwTWV0YWRhdGEgfSBmcm9tICcuLi9idXR0b24tZ3JvdXAvdHlwZXMnO1xuaW1wb3J0IHsgSW1hZ2VNZXRhZGF0YSB9IGZyb20gJy4uLy4uL2F0b21zL2ltYWdlL3R5cGVzJztcbmltcG9ydCB7IExpbmtNZXRhZGF0YSB9IGZyb20gJy4uL2xpbmsvdHlwZXMnO1xuaW1wb3J0IHsgVGl0bGVCbG9ja01ldGFkYSB9IGZyb20gJy4uL3RpdGxlLWJsb2NrL3R5cGVzJztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciB0aGUgdGVzdGltb25pYWwgY2FyZCBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGVzdGltb25pYWxDYXJkTWV0YWRhdGEge1xuICAvKiogVGl0bGUgYmxvY2sgY29uZmlndXJhdGlvbiAqL1xuICB0aXRsZTogVGl0bGVCbG9ja01ldGFkYTtcbiAgLyoqIE9wdGlvbmFsIGxpbmsgY29uZmlndXJhdGlvbiAqL1xuICBsaW5rPzogTGlua01ldGFkYXRhO1xuICAvKiogT3B0aW9uYWwgaW1hZ2UgY29uZmlndXJhdGlvbiAqL1xuICBpbWFnZT86IEltYWdlTWV0YWRhdGE7XG4gIC8qKiBCYWNrZ3JvdW5kIGNvbG9yIChJb25pYyBjb2xvciwgQ1NTIGNvbG9yLCBvciBDU1MgdmFyaWFibGUpICovXG4gIGNvbG9yPzogc3RyaW5nO1xuICAvKiogQmFja2dyb3VuZCAodXJsKC4uLikgZm9yIGltYWdlLCBncmFkaWVudCwgb3IgY29sb3IpICovXG4gIGJhY2tncm91bmQ/OiBzdHJpbmc7XG4gIC8qKiBPcHRpb25hbCBhY3Rpb24gYnV0dG9ucyAqL1xuICBhY3Rpb25zPzogQnV0dG9uR3JvdXBNZXRhZGF0YTtcbiAgLyoqIE1pbmltdW0gaGVpZ2h0IG9mIHRoZSBjYXJkLiBEZWZhdWx0OiAnNDUwcHgnICovXG4gIG1pbkhlaWdodD86IHN0cmluZztcbiAgLyoqIE1pbmltdW0gd2lkdGggb2YgdGhlIGNhcmQuIERlZmF1bHQ6ICczMDBweCcgKi9cbiAgbWluV2lkdGg/OiBzdHJpbmc7XG59XG4iXX0=
@@ -9,9 +9,19 @@ import * as i1 from "@angular/forms";
9
9
  * val-text-input
10
10
  *
11
11
  * A text input field integrated with Angular forms.
12
+ * For i18n support, pass the translated placeholder text via props.
12
13
  *
13
- * @example
14
- * <val-text-input [props]="{ control: myControl, placeholder: 'Enter text', ... }"></val-text-input>
14
+ * @example Static placeholder:
15
+ * <val-text-input [props]="{ control: myControl, placeholder: 'Enter text' }"></val-text-input>
16
+ *
17
+ * @example With i18n:
18
+ * ```typescript
19
+ * // In component
20
+ * textProps = {
21
+ * control: this.textControl,
22
+ * placeholder: this.langService.getText('MyComponent', 'namePlaceholder')
23
+ * };
24
+ * ```
15
25
  *
16
26
  * @input props: InputMetadata - Configuration for the input (form control, placeholder, label, etc.)
17
27
  */
@@ -31,7 +41,7 @@ export class TextInputComponent {
31
41
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TextInputComponent, decorators: [{
32
42
  type: Component,
33
43
  args: [{ selector: 'val-text-input', standalone: true, imports: [ReactiveFormsModule, IonInput], template: ` <ion-input [formControl]="props.control" type="text" [placeholder]="props.placeholder" /> `, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}\n"] }]
34
- }], ctorParameters: () => [], propDecorators: { props: [{
44
+ }], propDecorators: { props: [{
35
45
  type: Input
36
46
  }] } });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3RleHQtaW5wdXQvdGV4dC1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxlQUFlLEVBQWlCLE1BQU0sYUFBYSxDQUFDOzs7QUFTN0Q7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxPQUFPLGtCQUFrQjtJQVk3QjtRQUZBLFdBQU0sR0FBRyxlQUFlLENBQUM7SUFFVixDQUFDO0lBRWhCLFFBQVE7UUFDTix5Q0FBeUM7UUFDekMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVcsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ2pELDBCQUEwQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FBQzsrR0FuQlUsa0JBQWtCO21HQUFsQixrQkFBa0Isc0dBYm5CLDZGQUE2RixnckZBRDdGLG1CQUFtQiwwVEFBRSxRQUFROzs0RkFjNUIsa0JBQWtCO2tCQWpCOUIsU0FBUzsrQkFDRSxnQkFBZ0IsY0FDZCxJQUFJLFdBQ1AsQ0FBQyxtQkFBbUIsRUFBRSxRQUFRLENBQUMsWUFDOUIsNkZBQTZGO3dEQXFCOUYsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW9uSW5wdXQgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFwcGx5RGVmYXVsdFZhbHVlVG9Db250cm9sIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3V0aWxzL2Zvcm0tZGVmYXVsdHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50U3RhdGVzLCBJbnB1dE1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtdGV4dC1pbnB1dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtSZWFjdGl2ZUZvcm1zTW9kdWxlLCBJb25JbnB1dF0sXG4gIHRlbXBsYXRlOiBgIDxpb24taW5wdXQgW2Zvcm1Db250cm9sXT1cInByb3BzLmNvbnRyb2xcIiB0eXBlPVwidGV4dFwiIFtwbGFjZWhvbGRlcl09XCJwcm9wcy5wbGFjZWhvbGRlclwiIC8+IGAsXG4gIHN0eWxlVXJsczogWycuL3RleHQtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG4vKipcbiAqIHZhbC10ZXh0LWlucHV0XG4gKlxuICogQSB0ZXh0IGlucHV0IGZpZWxkIGludGVncmF0ZWQgd2l0aCBBbmd1bGFyIGZvcm1zLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8dmFsLXRleHQtaW5wdXQgW3Byb3BzXT1cInsgY29udHJvbDogbXlDb250cm9sLCBwbGFjZWhvbGRlcjogJ0VudGVyIHRleHQnLCAuLi4gfVwiPjwvdmFsLXRleHQtaW5wdXQ+XG4gKlxuICogQGlucHV0IHByb3BzOiBJbnB1dE1ldGFkYXRhIC0gQ29uZmlndXJhdGlvbiBmb3IgdGhlIGlucHV0IChmb3JtIGNvbnRyb2wsIHBsYWNlaG9sZGVyLCBsYWJlbCwgZXRjLilcbiAqL1xuZXhwb3J0IGNsYXNzIFRleHRJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBJbnB1dCBjb25maWd1cmF0aW9uIG9iamVjdC5cbiAgICogQHR5cGUge0lucHV0TWV0YWRhdGF9XG4gICAqIEBwcm9wZXJ0eSBjb250cm9sIC0gVGhlIEFuZ3VsYXIgRm9ybUNvbnRyb2wgZm9yIHRoZSBpbnB1dC5cbiAgICogQHByb3BlcnR5IHBsYWNlaG9sZGVyIC0gVGhlIHBsYWNlaG9sZGVyIHRleHQuXG4gICAqIEBwcm9wZXJ0eSBsYWJlbCwgbmFtZSwgaGludCwgdHlwZSwgdmFsaWRhdG9ycywgZXRjLiAtIFNlZSBJbnB1dE1ldGFkYXRhIGZvciBhbGwgb3B0aW9ucy5cbiAgICovXG4gIEBJbnB1dCgpIHByb3BzOiBJbnB1dE1ldGFkYXRhO1xuXG4gIHN0YXRlcyA9IENvbXBvbmVudFN0YXRlcztcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gQXBwbHkgZGVmYXVsdCB2YWx1ZXMgb24gaW5pdGlhbGl6YXRpb25cbiAgICBpZiAodGhpcy5wcm9wcz8ud2l0aERlZmF1bHQgfHwgdGhpcy5wcm9wcz8udmFsdWUpIHtcbiAgICAgIGFwcGx5RGVmYXVsdFZhbHVlVG9Db250cm9sKHRoaXMucHJvcHMpO1xuICAgIH1cbiAgfVxufVxuIl19
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3RleHQtaW5wdXQvdGV4dC1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxlQUFlLEVBQWlCLE1BQU0sYUFBYSxDQUFDOzs7QUFTN0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBM0IvQjtRQXFDRSxXQUFNLEdBQUcsZUFBZSxDQUFDO0tBUTFCO0lBTkMsUUFBUTtRQUNOLHlDQUF5QztRQUN6QyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDakQsMEJBQTBCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLENBQUM7SUFDSCxDQUFDOytHQWpCVSxrQkFBa0I7bUdBQWxCLGtCQUFrQixzR0F2Qm5CLDZGQUE2RixnckZBRDdGLG1CQUFtQiwwVEFBRSxRQUFROzs0RkF3QjVCLGtCQUFrQjtrQkEzQjlCLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBQ2QsSUFBSSxXQUNQLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLFlBQzlCLDZGQUE2Rjs4QkErQjlGLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElvbklucHV0IH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhcHBseURlZmF1bHRWYWx1ZVRvQ29udHJvbCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC91dGlscy9mb3JtLWRlZmF1bHRzJztcbmltcG9ydCB7IENvbXBvbmVudFN0YXRlcywgSW5wdXRNZXRhZGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXRleHQtaW5wdXQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbUmVhY3RpdmVGb3Jtc01vZHVsZSwgSW9uSW5wdXRdLFxuICB0ZW1wbGF0ZTogYCA8aW9uLWlucHV0IFtmb3JtQ29udHJvbF09XCJwcm9wcy5jb250cm9sXCIgdHlwZT1cInRleHRcIiBbcGxhY2Vob2xkZXJdPVwicHJvcHMucGxhY2Vob2xkZXJcIiAvPiBgLFxuICBzdHlsZVVybHM6IFsnLi90ZXh0LWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtdGV4dC1pbnB1dFxuICpcbiAqIEEgdGV4dCBpbnB1dCBmaWVsZCBpbnRlZ3JhdGVkIHdpdGggQW5ndWxhciBmb3Jtcy5cbiAqIEZvciBpMThuIHN1cHBvcnQsIHBhc3MgdGhlIHRyYW5zbGF0ZWQgcGxhY2Vob2xkZXIgdGV4dCB2aWEgcHJvcHMuXG4gKlxuICogQGV4YW1wbGUgU3RhdGljIHBsYWNlaG9sZGVyOlxuICogPHZhbC10ZXh0LWlucHV0IFtwcm9wc109XCJ7IGNvbnRyb2w6IG15Q29udHJvbCwgcGxhY2Vob2xkZXI6ICdFbnRlciB0ZXh0JyB9XCI+PC92YWwtdGV4dC1pbnB1dD5cbiAqXG4gKiBAZXhhbXBsZSBXaXRoIGkxOG46XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBJbiBjb21wb25lbnRcbiAqIHRleHRQcm9wcyA9IHtcbiAqICAgY29udHJvbDogdGhpcy50ZXh0Q29udHJvbCxcbiAqICAgcGxhY2Vob2xkZXI6IHRoaXMubGFuZ1NlcnZpY2UuZ2V0VGV4dCgnTXlDb21wb25lbnQnLCAnbmFtZVBsYWNlaG9sZGVyJylcbiAqIH07XG4gKiBgYGBcbiAqXG4gKiBAaW5wdXQgcHJvcHM6IElucHV0TWV0YWRhdGEgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgaW5wdXQgKGZvcm0gY29udHJvbCwgcGxhY2Vob2xkZXIsIGxhYmVsLCBldGMuKVxuICovXG5leHBvcnQgY2xhc3MgVGV4dElucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLyoqXG4gICAqIElucHV0IGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgKiBAdHlwZSB7SW5wdXRNZXRhZGF0YX1cbiAgICogQHByb3BlcnR5IGNvbnRyb2wgLSBUaGUgQW5ndWxhciBGb3JtQ29udHJvbCBmb3IgdGhlIGlucHV0LlxuICAgKiBAcHJvcGVydHkgcGxhY2Vob2xkZXIgLSBUaGUgcGxhY2Vob2xkZXIgdGV4dC4gRm9yIGkxOG4sIHVzZSBsYW5nU2VydmljZS5nZXRUZXh0KCkgdG8gZ2V0IHRyYW5zbGF0ZWQgdmFsdWUuXG4gICAqIEBwcm9wZXJ0eSBsYWJlbCwgbmFtZSwgaGludCwgdHlwZSwgdmFsaWRhdG9ycywgZXRjLiAtIFNlZSBJbnB1dE1ldGFkYXRhIGZvciBhbGwgb3B0aW9ucy5cbiAgICovXG4gIEBJbnB1dCgpIHByb3BzOiBJbnB1dE1ldGFkYXRhO1xuXG4gIHN0YXRlcyA9IENvbXBvbmVudFN0YXRlcztcblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyBBcHBseSBkZWZhdWx0IHZhbHVlcyBvbiBpbml0aWFsaXphdGlvblxuICAgIGlmICh0aGlzLnByb3BzPy53aXRoRGVmYXVsdCB8fCB0aGlzLnByb3BzPy52YWx1ZSkge1xuICAgICAgYXBwbHlEZWZhdWx0VmFsdWVUb0NvbnRyb2wodGhpcy5wcm9wcyk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,61 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, Input } from '@angular/core';
3
+ import { ActionHeaderComponent } from '../../molecules/action-header/action-header.component';
4
+ import { HorizontalScrollComponent } from '../../atoms/horizontal-scroll/horizontal-scroll.component';
5
+ import { RecapCardComponent } from '../../molecules/recap-card/recap-card.component';
6
+ import * as i0 from "@angular/core";
7
+ /**
8
+ * val-cards-carousel
9
+ *
10
+ * A horizontal carousel of recap cards with optional action header.
11
+ * Combines HorizontalScroll for smooth horizontal scrolling with RecapCard
12
+ * components for consistent card styling.
13
+ *
14
+ * @example
15
+ * <val-cards-carousel
16
+ * [props]="{
17
+ * header: { title: 'Featured Items', actionType: 'link', actionLabel: 'View All' },
18
+ * cards: [
19
+ * { title: 'Card 1', description: 'Description', href: '/item/1' },
20
+ * { title: 'Card 2', description: 'Description', href: '/item/2' }
21
+ * ]
22
+ * }"
23
+ * ></val-cards-carousel>
24
+ *
25
+ * @input props - Carousel configuration with cards and optional header
26
+ */
27
+ export class CardsCarouselComponent {
28
+ constructor() {
29
+ /**
30
+ * Carousel configuration with cards and optional header.
31
+ */
32
+ this.props = { cards: [] };
33
+ }
34
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CardsCarouselComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
35
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CardsCarouselComponent, isStandalone: true, selector: "val-cards-carousel", inputs: { props: "props" }, ngImport: i0, template: `
36
+ @if (props.header) {
37
+ <val-action-header [props]="props.header" />
38
+ }
39
+
40
+ <val-horizontal-scroll [items]="props.cards" [itemTemplate]="recapCardTemplate" />
41
+ <ng-template #recapCardTemplate let-recap>
42
+ <val-recap-card [props]="recap" />
43
+ </ng-template>
44
+ `, isInline: true, styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: RecapCardComponent, selector: "val-recap-card", inputs: ["props"] }, { kind: "component", type: HorizontalScrollComponent, selector: "val-horizontal-scroll", inputs: ["items", "itemTemplate", "props"] }, { kind: "component", type: ActionHeaderComponent, selector: "val-action-header", inputs: ["props"] }] }); }
45
+ }
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CardsCarouselComponent, decorators: [{
47
+ type: Component,
48
+ args: [{ selector: 'val-cards-carousel', standalone: true, imports: [CommonModule, RecapCardComponent, HorizontalScrollComponent, ActionHeaderComponent], template: `
49
+ @if (props.header) {
50
+ <val-action-header [props]="props.header" />
51
+ }
52
+
53
+ <val-horizontal-scroll [items]="props.cards" [itemTemplate]="recapCardTemplate" />
54
+ <ng-template #recapCardTemplate let-recap>
55
+ <val-recap-card [props]="recap" />
56
+ </ng-template>
57
+ `, styles: [":host{display:block}\n"] }]
58
+ }], propDecorators: { props: [{
59
+ type: Input
60
+ }] } });
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZHMtY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9jYXJkcy1jYXJvdXNlbC9jYXJkcy1jYXJvdXNlbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQzlGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDOztBQUdyRjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQXFCSCxNQUFNLE9BQU8sc0JBQXNCO0lBcEJuQztRQXFCRTs7V0FFRztRQUNNLFVBQUssR0FBMEIsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUM7S0FDdkQ7K0dBTFksc0JBQXNCO21HQUF0QixzQkFBc0IsMEdBaEJ2Qjs7Ozs7Ozs7O0dBU1QsK0ZBVlMsWUFBWSwrQkFBRSxrQkFBa0IsOEVBQUUseUJBQXlCLDhHQUFFLHFCQUFxQjs7NEZBaUJqRixzQkFBc0I7a0JBcEJsQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUseUJBQXlCLEVBQUUscUJBQXFCLENBQUMsWUFDbkY7Ozs7Ozs7OztHQVNUOzhCQVdRLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb25IZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvYWN0aW9uLWhlYWRlci9hY3Rpb24taGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBIb3Jpem9udGFsU2Nyb2xsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvaG9yaXpvbnRhbC1zY3JvbGwvaG9yaXpvbnRhbC1zY3JvbGwuY29tcG9uZW50JztcbmltcG9ydCB7IFJlY2FwQ2FyZENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9yZWNhcC1jYXJkL3JlY2FwLWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IENhcmRzQ2Fyb3VzZWxNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIHZhbC1jYXJkcy1jYXJvdXNlbFxuICpcbiAqIEEgaG9yaXpvbnRhbCBjYXJvdXNlbCBvZiByZWNhcCBjYXJkcyB3aXRoIG9wdGlvbmFsIGFjdGlvbiBoZWFkZXIuXG4gKiBDb21iaW5lcyBIb3Jpem9udGFsU2Nyb2xsIGZvciBzbW9vdGggaG9yaXpvbnRhbCBzY3JvbGxpbmcgd2l0aCBSZWNhcENhcmRcbiAqIGNvbXBvbmVudHMgZm9yIGNvbnNpc3RlbnQgY2FyZCBzdHlsaW5nLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8dmFsLWNhcmRzLWNhcm91c2VsXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgaGVhZGVyOiB7IHRpdGxlOiAnRmVhdHVyZWQgSXRlbXMnLCBhY3Rpb25UeXBlOiAnbGluaycsIGFjdGlvbkxhYmVsOiAnVmlldyBBbGwnIH0sXG4gKiAgICAgY2FyZHM6IFtcbiAqICAgICAgIHsgdGl0bGU6ICdDYXJkIDEnLCBkZXNjcmlwdGlvbjogJ0Rlc2NyaXB0aW9uJywgaHJlZjogJy9pdGVtLzEnIH0sXG4gKiAgICAgICB7IHRpdGxlOiAnQ2FyZCAyJywgZGVzY3JpcHRpb246ICdEZXNjcmlwdGlvbicsIGhyZWY6ICcvaXRlbS8yJyB9XG4gKiAgICAgXVxuICogICB9XCJcbiAqID48L3ZhbC1jYXJkcy1jYXJvdXNlbD5cbiAqXG4gKiBAaW5wdXQgcHJvcHMgLSBDYXJvdXNlbCBjb25maWd1cmF0aW9uIHdpdGggY2FyZHMgYW5kIG9wdGlvbmFsIGhlYWRlclxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtY2FyZHMtY2Fyb3VzZWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWNhcENhcmRDb21wb25lbnQsIEhvcml6b250YWxTY3JvbGxDb21wb25lbnQsIEFjdGlvbkhlYWRlckNvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgQGlmIChwcm9wcy5oZWFkZXIpIHtcbiAgICAgIDx2YWwtYWN0aW9uLWhlYWRlciBbcHJvcHNdPVwicHJvcHMuaGVhZGVyXCIgLz5cbiAgICB9XG5cbiAgICA8dmFsLWhvcml6b250YWwtc2Nyb2xsIFtpdGVtc109XCJwcm9wcy5jYXJkc1wiIFtpdGVtVGVtcGxhdGVdPVwicmVjYXBDYXJkVGVtcGxhdGVcIiAvPlxuICAgIDxuZy10ZW1wbGF0ZSAjcmVjYXBDYXJkVGVtcGxhdGUgbGV0LXJlY2FwPlxuICAgICAgPHZhbC1yZWNhcC1jYXJkIFtwcm9wc109XCJyZWNhcFwiIC8+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgYCxcbiAgc3R5bGVzOiBgXG4gICAgOmhvc3Qge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBDYXJkc0Nhcm91c2VsQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIENhcm91c2VsIGNvbmZpZ3VyYXRpb24gd2l0aCBjYXJkcyBhbmQgb3B0aW9uYWwgaGVhZGVyLlxuICAgKi9cbiAgQElucHV0KCkgcHJvcHM6IENhcmRzQ2Fyb3VzZWxNZXRhZGF0YSA9IHsgY2FyZHM6IFtdIH07XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2NhcmRzLWNhcm91c2VsL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb25IZWFkZXJNZXRhZGF0YSB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9hY3Rpb24taGVhZGVyL3R5cGVzJztcbmltcG9ydCB7IFJlY2FwQ2FyZE1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3JlY2FwLWNhcmQvdHlwZXMnO1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBjYXJkcyBjYXJvdXNlbCBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FyZHNDYXJvdXNlbE1ldGFkYXRhIHtcbiAgLyoqIEFycmF5IG9mIHJlY2FwIGNhcmRzIHRvIGRpc3BsYXkgKi9cbiAgY2FyZHM6IFJlY2FwQ2FyZE1ldGFkYXRhW107XG4gIC8qKiBPcHRpb25hbCBhY3Rpb24gaGVhZGVyIGNvbmZpZ3VyYXRpb24gKi9cbiAgaGVhZGVyPzogQWN0aW9uSGVhZGVyTWV0YWRhdGE7XG59XG4iXX0=
@@ -0,0 +1,72 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, Input } from '@angular/core';
3
+ import { IonCol, IonGrid, IonRow } from '@ionic/angular/standalone';
4
+ import { FooterLinksComponent } from '../../molecules/footer-links/footer-links.component';
5
+ import { RightsFooterComponent } from '../../atoms/rights-footer/rights-footer.component';
6
+ import * as i0 from "@angular/core";
7
+ /**
8
+ * val-company-footer
9
+ *
10
+ * A complete footer component combining footer links (with logo and social icons)
11
+ * and a rights/copyright footer. Configurable padding and background options.
12
+ *
13
+ * @example
14
+ * <val-company-footer
15
+ * [props]="{
16
+ * links: {
17
+ * leftLinks: { title: 'Company', size: 'medium', links: [...] },
18
+ * rightLinks: { title: 'Support', size: 'medium', links: [...] },
19
+ * logo: '/assets/logo.png',
20
+ * socialLinks: [...]
21
+ * },
22
+ * rights: { companyName: 'Acme Inc' },
23
+ * withPadding: true
24
+ * }"
25
+ * ></val-company-footer>
26
+ *
27
+ * @input props - Footer configuration
28
+ */
29
+ export class CompanyFooterComponent {
30
+ constructor() {
31
+ /**
32
+ * Footer configuration.
33
+ */
34
+ this.props = {
35
+ links: {
36
+ leftLinks: { title: '', size: 'medium', links: [] },
37
+ rightLinks: { title: '', size: 'medium', links: [] },
38
+ },
39
+ };
40
+ }
41
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CompanyFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
42
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CompanyFooterComponent, isStandalone: true, selector: "val-company-footer", inputs: { props: "props" }, ngImport: i0, template: `
43
+ <footer [class.withPadding]="props.withPadding" [class.withBackground]="props.withBackground">
44
+ <ion-grid>
45
+ <val-footer-links [props]="props.links" />
46
+ <ion-row>
47
+ <ion-col size="12">
48
+ <val-rights-footer [props]="props.rights || {}" />
49
+ </ion-col>
50
+ </ion-row>
51
+ </ion-grid>
52
+ </footer>
53
+ `, isInline: true, styles: [".withPadding{padding:16px}.withBackground{background-color:var(--ion-background-color)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: IonRow, selector: "ion-row" }, { kind: "component", type: IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: RightsFooterComponent, selector: "val-rights-footer", inputs: ["props"] }, { kind: "component", type: FooterLinksComponent, selector: "val-footer-links", inputs: ["props"], outputs: ["logoClick"] }] }); }
54
+ }
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CompanyFooterComponent, decorators: [{
56
+ type: Component,
57
+ args: [{ selector: 'val-company-footer', standalone: true, imports: [CommonModule, IonGrid, IonRow, IonCol, RightsFooterComponent, FooterLinksComponent], template: `
58
+ <footer [class.withPadding]="props.withPadding" [class.withBackground]="props.withBackground">
59
+ <ion-grid>
60
+ <val-footer-links [props]="props.links" />
61
+ <ion-row>
62
+ <ion-col size="12">
63
+ <val-rights-footer [props]="props.rights || {}" />
64
+ </ion-col>
65
+ </ion-row>
66
+ </ion-grid>
67
+ </footer>
68
+ `, styles: [".withPadding{padding:16px}.withBackground{background-color:var(--ion-background-color)}\n"] }]
69
+ }], propDecorators: { props: [{
70
+ type: Input
71
+ }] } });
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFueS1mb290ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9jb21wYW55LWZvb3Rlci9jb21wYW55LWZvb3Rlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDOztBQUcxRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBMkJILE1BQU0sT0FBTyxzQkFBc0I7SUExQm5DO1FBMkJFOztXQUVHO1FBQ00sVUFBSyxHQUEwQjtZQUN0QyxLQUFLLEVBQUU7Z0JBQ0wsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7Z0JBQ25ELFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO2FBQ3JEO1NBQ0YsQ0FBQztLQUNIOytHQVZZLHNCQUFzQjttR0FBdEIsc0JBQXNCLDBHQXRCdkI7Ozs7Ozs7Ozs7O0dBV1Qsa0tBWlMsWUFBWSwrQkFBRSxPQUFPLHdFQUFFLE1BQU0sb0RBQUUsTUFBTSxrVEFBRSxxQkFBcUIsaUZBQUUsb0JBQW9COzs0RkF1QmpGLHNCQUFzQjtrQkExQmxDLFNBQVM7K0JBQ0Usb0JBQW9CLGNBQ2xCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsQ0FBQyxZQUNuRjs7Ozs7Ozs7Ozs7R0FXVDs4QkFlUSxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uQ29sLCBJb25HcmlkLCBJb25Sb3cgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IEZvb3RlckxpbmtzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2Zvb3Rlci1saW5rcy9mb290ZXItbGlua3MuY29tcG9uZW50JztcbmltcG9ydCB7IFJpZ2h0c0Zvb3RlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3JpZ2h0cy1mb290ZXIvcmlnaHRzLWZvb3Rlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tcGFueUZvb3Rlck1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogdmFsLWNvbXBhbnktZm9vdGVyXG4gKlxuICogQSBjb21wbGV0ZSBmb290ZXIgY29tcG9uZW50IGNvbWJpbmluZyBmb290ZXIgbGlua3MgKHdpdGggbG9nbyBhbmQgc29jaWFsIGljb25zKVxuICogYW5kIGEgcmlnaHRzL2NvcHlyaWdodCBmb290ZXIuIENvbmZpZ3VyYWJsZSBwYWRkaW5nIGFuZCBiYWNrZ3JvdW5kIG9wdGlvbnMuXG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtY29tcGFueS1mb290ZXJcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBsaW5rczoge1xuICogICAgICAgbGVmdExpbmtzOiB7IHRpdGxlOiAnQ29tcGFueScsIHNpemU6ICdtZWRpdW0nLCBsaW5rczogWy4uLl0gfSxcbiAqICAgICAgIHJpZ2h0TGlua3M6IHsgdGl0bGU6ICdTdXBwb3J0Jywgc2l6ZTogJ21lZGl1bScsIGxpbmtzOiBbLi4uXSB9LFxuICogICAgICAgbG9nbzogJy9hc3NldHMvbG9nby5wbmcnLFxuICogICAgICAgc29jaWFsTGlua3M6IFsuLi5dXG4gKiAgICAgfSxcbiAqICAgICByaWdodHM6IHsgY29tcGFueU5hbWU6ICdBY21lIEluYycgfSxcbiAqICAgICB3aXRoUGFkZGluZzogdHJ1ZVxuICogICB9XCJcbiAqID48L3ZhbC1jb21wYW55LWZvb3Rlcj5cbiAqXG4gKiBAaW5wdXQgcHJvcHMgLSBGb290ZXIgY29uZmlndXJhdGlvblxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtY29tcGFueS1mb290ZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25HcmlkLCBJb25Sb3csIElvbkNvbCwgUmlnaHRzRm9vdGVyQ29tcG9uZW50LCBGb290ZXJMaW5rc0NvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGZvb3RlciBbY2xhc3Mud2l0aFBhZGRpbmddPVwicHJvcHMud2l0aFBhZGRpbmdcIiBbY2xhc3Mud2l0aEJhY2tncm91bmRdPVwicHJvcHMud2l0aEJhY2tncm91bmRcIj5cbiAgICAgIDxpb24tZ3JpZD5cbiAgICAgICAgPHZhbC1mb290ZXItbGlua3MgW3Byb3BzXT1cInByb3BzLmxpbmtzXCIgLz5cbiAgICAgICAgPGlvbi1yb3c+XG4gICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjEyXCI+XG4gICAgICAgICAgICA8dmFsLXJpZ2h0cy1mb290ZXIgW3Byb3BzXT1cInByb3BzLnJpZ2h0cyB8fCB7fVwiIC8+XG4gICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICA8L2lvbi1yb3c+XG4gICAgICA8L2lvbi1ncmlkPlxuICAgIDwvZm9vdGVyPlxuICBgLFxuICBzdHlsZXM6IGBcbiAgICAud2l0aFBhZGRpbmcge1xuICAgICAgcGFkZGluZzogMTZweDtcbiAgICB9XG5cbiAgICAud2l0aEJhY2tncm91bmQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IpO1xuICAgIH1cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgQ29tcGFueUZvb3RlckNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBGb290ZXIgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIEBJbnB1dCgpIHByb3BzOiBDb21wYW55Rm9vdGVyTWV0YWRhdGEgPSB7XG4gICAgbGlua3M6IHtcbiAgICAgIGxlZnRMaW5rczogeyB0aXRsZTogJycsIHNpemU6ICdtZWRpdW0nLCBsaW5rczogW10gfSxcbiAgICAgIHJpZ2h0TGlua3M6IHsgdGl0bGU6ICcnLCBzaXplOiAnbWVkaXVtJywgbGlua3M6IFtdIH0sXG4gICAgfSxcbiAgfTtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2NvbXBhbnktZm9vdGVyL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb290ZXJMaW5rc01ldGFkYXRhIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2Zvb3Rlci1saW5rcy90eXBlcyc7XG5pbXBvcnQgeyBSaWdodHNGb290ZXJNZXRhZGF0YSB9IGZyb20gJy4uLy4uL2F0b21zL3JpZ2h0cy1mb290ZXIvdHlwZXMnO1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBjb21wYW55IGZvb3RlciBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGFueUZvb3Rlck1ldGFkYXRhIHtcbiAgLyoqIEZvb3RlciBsaW5rcyBjb25maWd1cmF0aW9uICovXG4gIGxpbmtzOiBGb290ZXJMaW5rc01ldGFkYXRhO1xuICAvKiogUmlnaHRzIGZvb3RlciBjb25maWd1cmF0aW9uICovXG4gIHJpZ2h0cz86IFJpZ2h0c0Zvb3Rlck1ldGFkYXRhO1xuICAvKiogQWRkIHBhZGRpbmcgYXJvdW5kIHRoZSBmb290ZXIgKi9cbiAgd2l0aFBhZGRpbmc/OiBib29sZWFuO1xuICAvKiogQWRkIGJhY2tncm91bmQgY29sb3IgdG8gdGhlIGZvb3RlciAqL1xuICB3aXRoQmFja2dyb3VuZD86IGJvb2xlYW47XG59XG4iXX0=