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,72 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, Input } from '@angular/core';
3
+ import { SwipeCarouselComponent } from '../../molecules/swipe-carousel/swipe-carousel.component';
4
+ import { TestimonialCardComponent } from '../../molecules/testimonial-card/testimonial-card.component';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * val-testimonial-carousel
8
+ *
9
+ * A carousel of testimonial cards using Swiper.js with centered slides
10
+ * and responsive breakpoints for optimal viewing on all devices.
11
+ *
12
+ * @example
13
+ * <val-testimonial-carousel
14
+ * [props]="{
15
+ * cards: [
16
+ * { title: 'John Doe', image: '/john.jpg', link: { text: 'CEO', route: ['/team'] } },
17
+ * { title: 'Jane Smith', image: '/jane.jpg', link: { text: 'CTO', route: ['/team'] } }
18
+ * ]
19
+ * }"
20
+ * ></val-testimonial-carousel>
21
+ *
22
+ * @input props - Carousel configuration with testimonial cards
23
+ */
24
+ export class TestimonialCarouselComponent {
25
+ constructor() {
26
+ /**
27
+ * Carousel configuration with testimonial cards.
28
+ */
29
+ this.props = { cards: [] };
30
+ /**
31
+ * Swiper configuration optimized for testimonial cards.
32
+ */
33
+ this.swiperProps = {
34
+ slidesPerView: 1.1,
35
+ spaceBetween: 40,
36
+ loop: true,
37
+ centeredSlides: true,
38
+ effect: 'slide',
39
+ pagination: true,
40
+ navigation: true,
41
+ breakpoints: {
42
+ 768: {
43
+ slidesPerView: 1.5,
44
+ spaceBetween: 40,
45
+ },
46
+ 1024: {
47
+ slidesPerView: 1.7,
48
+ spaceBetween: 50,
49
+ },
50
+ },
51
+ };
52
+ }
53
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TestimonialCarouselComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
54
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: TestimonialCarouselComponent, isStandalone: true, selector: "val-testimonial-carousel", inputs: { props: "props" }, ngImport: i0, template: `
55
+ <val-swipe-carousel [items]="props.cards" [itemTemplate]="testimonialTemplate" [props]="swiperProps" />
56
+ <ng-template #testimonialTemplate let-card>
57
+ <val-testimonial-card [props]="card"></val-testimonial-card>
58
+ </ng-template>
59
+ `, isInline: true, styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: TestimonialCardComponent, selector: "val-testimonial-card", inputs: ["props"] }, { kind: "component", type: SwipeCarouselComponent, selector: "val-swipe-carousel", inputs: ["items", "itemTemplate", "props"] }] }); }
60
+ }
61
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TestimonialCarouselComponent, decorators: [{
62
+ type: Component,
63
+ args: [{ selector: 'val-testimonial-carousel', standalone: true, imports: [CommonModule, TestimonialCardComponent, SwipeCarouselComponent], template: `
64
+ <val-swipe-carousel [items]="props.cards" [itemTemplate]="testimonialTemplate" [props]="swiperProps" />
65
+ <ng-template #testimonialTemplate let-card>
66
+ <val-testimonial-card [props]="card"></val-testimonial-card>
67
+ </ng-template>
68
+ `, styles: [":host{display:block}\n"] }]
69
+ }], propDecorators: { props: [{
70
+ type: Input
71
+ }] } });
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGltb25pYWwtY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy90ZXN0aW1vbmlhbC1jYXJvdXNlbC90ZXN0aW1vbmlhbC1jYXJvdXNlbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBRWpHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZEQUE2RCxDQUFDOztBQUd2Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFpQkgsTUFBTSxPQUFPLDRCQUE0QjtJQWhCekM7UUFpQkU7O1dBRUc7UUFDTSxVQUFLLEdBQWdDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBRTVEOztXQUVHO1FBQ0gsZ0JBQVcsR0FBMEI7WUFDbkMsYUFBYSxFQUFFLEdBQUc7WUFDbEIsWUFBWSxFQUFFLEVBQUU7WUFDaEIsSUFBSSxFQUFFLElBQUk7WUFDVixjQUFjLEVBQUUsSUFBSTtZQUNwQixNQUFNLEVBQUUsT0FBTztZQUNmLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFdBQVcsRUFBRTtnQkFDWCxHQUFHLEVBQUU7b0JBQ0gsYUFBYSxFQUFFLEdBQUc7b0JBQ2xCLFlBQVksRUFBRSxFQUFFO2lCQUNqQjtnQkFDRCxJQUFJLEVBQUU7b0JBQ0osYUFBYSxFQUFFLEdBQUc7b0JBQ2xCLFlBQVksRUFBRSxFQUFFO2lCQUNqQjthQUNGO1NBQ0YsQ0FBQztLQUNIOytHQTVCWSw0QkFBNEI7bUdBQTVCLDRCQUE0QixnSEFaN0I7Ozs7O0dBS1QsK0ZBTlMsWUFBWSwrQkFBRSx3QkFBd0Isb0ZBQUUsc0JBQXNCOzs0RkFhN0QsNEJBQTRCO2tCQWhCeEMsU0FBUzsrQkFDRSwwQkFBMEIsY0FDeEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLHdCQUF3QixFQUFFLHNCQUFzQixDQUFDLFlBQy9EOzs7OztHQUtUOzhCQVdRLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTd2lwZUNhcm91c2VsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3N3aXBlLWNhcm91c2VsL3N3aXBlLWNhcm91c2VsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTd2lwZUNhcm91c2VsTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvc3dpcGUtY2Fyb3VzZWwvdHlwZXMnO1xuaW1wb3J0IHsgVGVzdGltb25pYWxDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3Rlc3RpbW9uaWFsLWNhcmQvdGVzdGltb25pYWwtY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVzdGltb25pYWxDYXJvdXNlbE1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogdmFsLXRlc3RpbW9uaWFsLWNhcm91c2VsXG4gKlxuICogQSBjYXJvdXNlbCBvZiB0ZXN0aW1vbmlhbCBjYXJkcyB1c2luZyBTd2lwZXIuanMgd2l0aCBjZW50ZXJlZCBzbGlkZXNcbiAqIGFuZCByZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBvcHRpbWFsIHZpZXdpbmcgb24gYWxsIGRldmljZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtdGVzdGltb25pYWwtY2Fyb3VzZWxcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBjYXJkczogW1xuICogICAgICAgeyB0aXRsZTogJ0pvaG4gRG9lJywgaW1hZ2U6ICcvam9obi5qcGcnLCBsaW5rOiB7IHRleHQ6ICdDRU8nLCByb3V0ZTogWycvdGVhbSddIH0gfSxcbiAqICAgICAgIHsgdGl0bGU6ICdKYW5lIFNtaXRoJywgaW1hZ2U6ICcvamFuZS5qcGcnLCBsaW5rOiB7IHRleHQ6ICdDVE8nLCByb3V0ZTogWycvdGVhbSddIH0gfVxuICogICAgIF1cbiAqICAgfVwiXG4gKiA+PC92YWwtdGVzdGltb25pYWwtY2Fyb3VzZWw+XG4gKlxuICogQGlucHV0IHByb3BzIC0gQ2Fyb3VzZWwgY29uZmlndXJhdGlvbiB3aXRoIHRlc3RpbW9uaWFsIGNhcmRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC10ZXN0aW1vbmlhbC1jYXJvdXNlbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRlc3RpbW9uaWFsQ2FyZENvbXBvbmVudCwgU3dpcGVDYXJvdXNlbENvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPHZhbC1zd2lwZS1jYXJvdXNlbCBbaXRlbXNdPVwicHJvcHMuY2FyZHNcIiBbaXRlbVRlbXBsYXRlXT1cInRlc3RpbW9uaWFsVGVtcGxhdGVcIiBbcHJvcHNdPVwic3dpcGVyUHJvcHNcIiAvPlxuICAgIDxuZy10ZW1wbGF0ZSAjdGVzdGltb25pYWxUZW1wbGF0ZSBsZXQtY2FyZD5cbiAgICAgIDx2YWwtdGVzdGltb25pYWwtY2FyZCBbcHJvcHNdPVwiY2FyZFwiPjwvdmFsLXRlc3RpbW9uaWFsLWNhcmQ+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgYCxcbiAgc3R5bGVzOiBgXG4gICAgOmhvc3Qge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBUZXN0aW1vbmlhbENhcm91c2VsQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIENhcm91c2VsIGNvbmZpZ3VyYXRpb24gd2l0aCB0ZXN0aW1vbmlhbCBjYXJkcy5cbiAgICovXG4gIEBJbnB1dCgpIHByb3BzOiBUZXN0aW1vbmlhbENhcm91c2VsTWV0YWRhdGEgPSB7IGNhcmRzOiBbXSB9O1xuXG4gIC8qKlxuICAgKiBTd2lwZXIgY29uZmlndXJhdGlvbiBvcHRpbWl6ZWQgZm9yIHRlc3RpbW9uaWFsIGNhcmRzLlxuICAgKi9cbiAgc3dpcGVyUHJvcHM6IFN3aXBlQ2Fyb3VzZWxNZXRhZGF0YSA9IHtcbiAgICBzbGlkZXNQZXJWaWV3OiAxLjEsXG4gICAgc3BhY2VCZXR3ZWVuOiA0MCxcbiAgICBsb29wOiB0cnVlLFxuICAgIGNlbnRlcmVkU2xpZGVzOiB0cnVlLFxuICAgIGVmZmVjdDogJ3NsaWRlJyxcbiAgICBwYWdpbmF0aW9uOiB0cnVlLFxuICAgIG5hdmlnYXRpb246IHRydWUsXG4gICAgYnJlYWtwb2ludHM6IHtcbiAgICAgIDc2ODoge1xuICAgICAgICBzbGlkZXNQZXJWaWV3OiAxLjUsXG4gICAgICAgIHNwYWNlQmV0d2VlbjogNDAsXG4gICAgICB9LFxuICAgICAgMTAyNDoge1xuICAgICAgICBzbGlkZXNQZXJWaWV3OiAxLjcsXG4gICAgICAgIHNwYWNlQmV0d2VlbjogNTAsXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3Rlc3RpbW9uaWFsLWNhcm91c2VsL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZXN0aW1vbmlhbENhcmRNZXRhZGF0YSB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy90ZXN0aW1vbmlhbC1jYXJkL3R5cGVzJztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciB0aGUgdGVzdGltb25pYWwgY2Fyb3VzZWwgY29tcG9uZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlc3RpbW9uaWFsQ2Fyb3VzZWxNZXRhZGF0YSB7XG4gIC8qKiBBcnJheSBvZiB0ZXN0aW1vbmlhbCBjYXJkcyB0byBkaXNwbGF5ICovXG4gIGNhcmRzOiBUZXN0aW1vbmlhbENhcmRNZXRhZGF0YVtdO1xufVxuIl19
@@ -0,0 +1,156 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, EventEmitter, inject, Input, Output } from '@angular/core';
3
+ import { IonContent } from '@ionic/angular/standalone';
4
+ import { HeaderComponent } from '../../organisms/header/header.component';
5
+ import { ThemeService } from '../../../services/theme.service';
6
+ import { NavigationService } from '../../../services/navigation.service';
7
+ import { resolveColor } from '../../../shared/utils/styles';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/common";
10
+ /**
11
+ * val-page-content
12
+ *
13
+ * A page content template with corporate header, main content area,
14
+ * and footer slots. Supports dark mode and customizable backgrounds.
15
+ *
16
+ * @example
17
+ * <val-page-content
18
+ * [props]="{
19
+ * header: { ... },
20
+ * background: '--main-background',
21
+ * homeRoute: '/'
22
+ * }"
23
+ * (onHeaderClick)="handleHeaderAction($event)"
24
+ * >
25
+ * <div content>
26
+ * <!-- Main page content -->
27
+ * </div>
28
+ * <div footer>
29
+ * <val-company-footer [props]="footerProps"></val-company-footer>
30
+ * </div>
31
+ * </val-page-content>
32
+ *
33
+ * @input props - Page content configuration
34
+ * @output onHeaderClick - Emits when a header action is clicked
35
+ */
36
+ export class PageContentComponent {
37
+ constructor() {
38
+ this.theme = inject(ThemeService);
39
+ this.nav = inject(NavigationService);
40
+ /**
41
+ * Page content configuration.
42
+ */
43
+ this.props = {};
44
+ /**
45
+ * Emits when a header action is clicked.
46
+ */
47
+ this.onHeaderClick = new EventEmitter();
48
+ }
49
+ /**
50
+ * Default header configuration.
51
+ */
52
+ get headerProps() {
53
+ return (this.props.header || {
54
+ bordered: true,
55
+ translucent: true,
56
+ toolbar: {
57
+ withBack: false,
58
+ withActions: true,
59
+ textColor: 'dark',
60
+ withMenu: true,
61
+ title: '',
62
+ actions: [
63
+ {
64
+ token: 'header-logo',
65
+ description: '',
66
+ position: 'left',
67
+ type: 'IMAGE',
68
+ image: {
69
+ width: 10,
70
+ src: '--main-logo',
71
+ alt: 'header logo',
72
+ mode: 'box',
73
+ shaded: false,
74
+ bordered: false,
75
+ size: 'small',
76
+ limited: false,
77
+ flex: true,
78
+ },
79
+ },
80
+ ],
81
+ },
82
+ });
83
+ }
84
+ /**
85
+ * Gets the background color based on theme.
86
+ */
87
+ getBackground() {
88
+ if (this.theme.IsDark) {
89
+ return 'var(--ion-background-color)';
90
+ }
91
+ const bg = this.props.background;
92
+ if (!bg) {
93
+ return 'var(--ion-background-color)';
94
+ }
95
+ return resolveColor(bg);
96
+ }
97
+ /**
98
+ * Handles header action clicks.
99
+ */
100
+ onHeaderClickHandler(token) {
101
+ this.onHeaderClick.emit(token);
102
+ // Navigate to home route if configured and logo was clicked
103
+ if (token === 'header-logo' && this.props.homeRoute) {
104
+ this.nav.navigateByUrl(this.props.homeRoute);
105
+ }
106
+ }
107
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PageContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
108
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PageContentComponent, isStandalone: true, selector: "val-page-content", inputs: { props: "props" }, outputs: { onHeaderClick: "onHeaderClick" }, ngImport: i0, template: `
109
+ <div class="ion-page">
110
+ <val-header
111
+ [props]="headerProps"
112
+ (onClick)="onHeaderClickHandler($event)"
113
+ />
114
+ <ion-content
115
+ [fullscreen]="true"
116
+ [ngStyle]="{
117
+ '--background': getBackground()
118
+ }"
119
+ >
120
+ <main>
121
+ <ng-content select="[content]"></ng-content>
122
+ </main>
123
+ <ng-content select="[footer]"></ng-content>
124
+ </ion-content>
125
+ <ng-content select="[extra-footer]"></ng-content>
126
+ </div>
127
+ `, isInline: true, styles: ["main{min-height:60vh}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: HeaderComponent, selector: "val-header", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }] }); }
128
+ }
129
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PageContentComponent, decorators: [{
130
+ type: Component,
131
+ args: [{ selector: 'val-page-content', standalone: true, imports: [CommonModule, HeaderComponent, IonContent], template: `
132
+ <div class="ion-page">
133
+ <val-header
134
+ [props]="headerProps"
135
+ (onClick)="onHeaderClickHandler($event)"
136
+ />
137
+ <ion-content
138
+ [fullscreen]="true"
139
+ [ngStyle]="{
140
+ '--background': getBackground()
141
+ }"
142
+ >
143
+ <main>
144
+ <ng-content select="[content]"></ng-content>
145
+ </main>
146
+ <ng-content select="[footer]"></ng-content>
147
+ </ion-content>
148
+ <ng-content select="[extra-footer]"></ng-content>
149
+ </div>
150
+ `, styles: ["main{min-height:60vh}\n"] }]
151
+ }], propDecorators: { props: [{
152
+ type: Input
153
+ }], onHeaderClick: [{
154
+ type: Output
155
+ }] } });
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1jb250ZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvcGFnZS1jb250ZW50L3BhZ2UtY29udGVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRXpFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBRTVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBK0JILE1BQU0sT0FBTyxvQkFBb0I7SUE5QmpDO1FBK0JVLFVBQUssR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDN0IsUUFBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRXhDOztXQUVHO1FBQ00sVUFBSyxHQUF3QixFQUFFLENBQUM7UUFFekM7O1dBRUc7UUFDTyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7S0FtRXREO0lBakVDOztPQUVHO0lBQ0gsSUFBSSxXQUFXO1FBQ2IsT0FBTyxDQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJO1lBQ25CLFFBQVEsRUFBRSxJQUFJO1lBQ2QsV0FBVyxFQUFFLElBQUk7WUFDakIsT0FBTyxFQUFFO2dCQUNQLFFBQVEsRUFBRSxLQUFLO2dCQUNmLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixTQUFTLEVBQUUsTUFBTTtnQkFDakIsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsT0FBTyxFQUFFO29CQUNQO3dCQUNFLEtBQUssRUFBRSxhQUFhO3dCQUNwQixXQUFXLEVBQUUsRUFBRTt3QkFDZixRQUFRLEVBQUUsTUFBTTt3QkFDaEIsSUFBSSxFQUFFLE9BQU87d0JBQ2IsS0FBSyxFQUFFOzRCQUNMLEtBQUssRUFBRSxFQUFFOzRCQUNULEdBQUcsRUFBRSxhQUFhOzRCQUNsQixHQUFHLEVBQUUsYUFBYTs0QkFDbEIsSUFBSSxFQUFFLEtBQUs7NEJBQ1gsTUFBTSxFQUFFLEtBQUs7NEJBQ2IsUUFBUSxFQUFFLEtBQUs7NEJBQ2YsSUFBSSxFQUFFLE9BQU87NEJBQ2IsT0FBTyxFQUFFLEtBQUs7NEJBQ2QsSUFBSSxFQUFFLElBQUk7eUJBQ1g7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWE7UUFDWCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdEIsT0FBTyw2QkFBNkIsQ0FBQztRQUN2QyxDQUFDO1FBRUQsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDakMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ1IsT0FBTyw2QkFBNkIsQ0FBQztRQUN2QyxDQUFDO1FBRUQsT0FBTyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsb0JBQW9CLENBQUMsS0FBYTtRQUNoQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUvQiw0REFBNEQ7UUFDNUQsSUFBSSxLQUFLLEtBQUssYUFBYSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvQyxDQUFDO0lBQ0gsQ0FBQzsrR0E5RVUsb0JBQW9CO21HQUFwQixvQkFBb0IscUpBMUJyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CVCxnR0FwQlMsWUFBWSxvSEFBRSxlQUFlLGdHQUFFLFVBQVU7OzRGQTJCeEMsb0JBQW9CO2tCQTlCaEMsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxVQUFVLENBQUMsWUFDMUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQlQ7OEJBY1EsS0FBSztzQkFBYixLQUFLO2dCQUtJLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uQ29udGVudCB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL2hlYWRlci9oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFRoZW1lU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RoZW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGFnZUNvbnRlbnRNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgcmVzb2x2ZUNvbG9yIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3V0aWxzL3N0eWxlcyc7XG5cbi8qKlxuICogdmFsLXBhZ2UtY29udGVudFxuICpcbiAqIEEgcGFnZSBjb250ZW50IHRlbXBsYXRlIHdpdGggY29ycG9yYXRlIGhlYWRlciwgbWFpbiBjb250ZW50IGFyZWEsXG4gKiBhbmQgZm9vdGVyIHNsb3RzLiBTdXBwb3J0cyBkYXJrIG1vZGUgYW5kIGN1c3RvbWl6YWJsZSBiYWNrZ3JvdW5kcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogPHZhbC1wYWdlLWNvbnRlbnRcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBoZWFkZXI6IHsgLi4uIH0sXG4gKiAgICAgYmFja2dyb3VuZDogJy0tbWFpbi1iYWNrZ3JvdW5kJyxcbiAqICAgICBob21lUm91dGU6ICcvJ1xuICogICB9XCJcbiAqICAgKG9uSGVhZGVyQ2xpY2spPVwiaGFuZGxlSGVhZGVyQWN0aW9uKCRldmVudClcIlxuICogPlxuICogICA8ZGl2IGNvbnRlbnQ+XG4gKiAgICAgPCEtLSBNYWluIHBhZ2UgY29udGVudCAtLT5cbiAqICAgPC9kaXY+XG4gKiAgIDxkaXYgZm9vdGVyPlxuICogICAgIDx2YWwtY29tcGFueS1mb290ZXIgW3Byb3BzXT1cImZvb3RlclByb3BzXCI+PC92YWwtY29tcGFueS1mb290ZXI+XG4gKiAgIDwvZGl2PlxuICogPC92YWwtcGFnZS1jb250ZW50PlxuICpcbiAqIEBpbnB1dCBwcm9wcyAtIFBhZ2UgY29udGVudCBjb25maWd1cmF0aW9uXG4gKiBAb3V0cHV0IG9uSGVhZGVyQ2xpY2sgLSBFbWl0cyB3aGVuIGEgaGVhZGVyIGFjdGlvbiBpcyBjbGlja2VkXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1wYWdlLWNvbnRlbnQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBIZWFkZXJDb21wb25lbnQsIElvbkNvbnRlbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJpb24tcGFnZVwiPlxuICAgICAgPHZhbC1oZWFkZXJcbiAgICAgICAgW3Byb3BzXT1cImhlYWRlclByb3BzXCJcbiAgICAgICAgKG9uQ2xpY2spPVwib25IZWFkZXJDbGlja0hhbmRsZXIoJGV2ZW50KVwiXG4gICAgICAvPlxuICAgICAgPGlvbi1jb250ZW50XG4gICAgICAgIFtmdWxsc2NyZWVuXT1cInRydWVcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgJy0tYmFja2dyb3VuZCc6IGdldEJhY2tncm91bmQoKVxuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgICAgPG1haW4+XG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2NvbnRlbnRdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L21haW4+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltmb290ZXJdXCI+PC9uZy1jb250ZW50PlxuICAgICAgPC9pb24tY29udGVudD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltleHRyYS1mb290ZXJdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IGBcbiAgICBtYWluIHtcbiAgICAgIG1pbi1oZWlnaHQ6IDYwdmg7XG4gICAgfVxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlQ29udGVudENvbXBvbmVudCB7XG4gIHByaXZhdGUgdGhlbWUgPSBpbmplY3QoVGhlbWVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBuYXYgPSBpbmplY3QoTmF2aWdhdGlvblNlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBQYWdlIGNvbnRlbnQgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIEBJbnB1dCgpIHByb3BzOiBQYWdlQ29udGVudE1ldGFkYXRhID0ge307XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gYSBoZWFkZXIgYWN0aW9uIGlzIGNsaWNrZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgb25IZWFkZXJDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0IGhlYWRlciBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgZ2V0IGhlYWRlclByb3BzKCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnByb3BzLmhlYWRlciB8fCB7XG4gICAgICAgIGJvcmRlcmVkOiB0cnVlLFxuICAgICAgICB0cmFuc2x1Y2VudDogdHJ1ZSxcbiAgICAgICAgdG9vbGJhcjoge1xuICAgICAgICAgIHdpdGhCYWNrOiBmYWxzZSxcbiAgICAgICAgICB3aXRoQWN0aW9uczogdHJ1ZSxcbiAgICAgICAgICB0ZXh0Q29sb3I6ICdkYXJrJyxcbiAgICAgICAgICB3aXRoTWVudTogdHJ1ZSxcbiAgICAgICAgICB0aXRsZTogJycsXG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0b2tlbjogJ2hlYWRlci1sb2dvJyxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICcnLFxuICAgICAgICAgICAgICBwb3NpdGlvbjogJ2xlZnQnLFxuICAgICAgICAgICAgICB0eXBlOiAnSU1BR0UnLFxuICAgICAgICAgICAgICBpbWFnZToge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMCxcbiAgICAgICAgICAgICAgICBzcmM6ICctLW1haW4tbG9nbycsXG4gICAgICAgICAgICAgICAgYWx0OiAnaGVhZGVyIGxvZ28nLFxuICAgICAgICAgICAgICAgIG1vZGU6ICdib3gnLFxuICAgICAgICAgICAgICAgIHNoYWRlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgYm9yZGVyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICAgICAgICAgICAgbGltaXRlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgZmxleDogdHJ1ZSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGJhY2tncm91bmQgY29sb3IgYmFzZWQgb24gdGhlbWUuXG4gICAqL1xuICBnZXRCYWNrZ3JvdW5kKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMudGhlbWUuSXNEYXJrKSB7XG4gICAgICByZXR1cm4gJ3ZhcigtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yKSc7XG4gICAgfVxuXG4gICAgY29uc3QgYmcgPSB0aGlzLnByb3BzLmJhY2tncm91bmQ7XG4gICAgaWYgKCFiZykge1xuICAgICAgcmV0dXJuICd2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciknO1xuICAgIH1cblxuICAgIHJldHVybiByZXNvbHZlQ29sb3IoYmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgaGVhZGVyIGFjdGlvbiBjbGlja3MuXG4gICAqL1xuICBvbkhlYWRlckNsaWNrSGFuZGxlcih0b2tlbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5vbkhlYWRlckNsaWNrLmVtaXQodG9rZW4pO1xuXG4gICAgLy8gTmF2aWdhdGUgdG8gaG9tZSByb3V0ZSBpZiBjb25maWd1cmVkIGFuZCBsb2dvIHdhcyBjbGlja2VkXG4gICAgaWYgKHRva2VuID09PSAnaGVhZGVyLWxvZ28nICYmIHRoaXMucHJvcHMuaG9tZVJvdXRlKSB7XG4gICAgICB0aGlzLm5hdi5uYXZpZ2F0ZUJ5VXJsKHRoaXMucHJvcHMuaG9tZVJvdXRlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL3BhZ2UtY29udGVudC90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSGVhZGVyTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvaGVhZGVyL3R5cGVzJztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciB0aGUgcGFnZSBjb250ZW50IGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWdlQ29udGVudE1ldGFkYXRhIHtcbiAgLyoqIEhlYWRlciBjb25maWd1cmF0aW9uICovXG4gIGhlYWRlcj86IEhlYWRlck1ldGFkYXRhO1xuICAvKiogQmFja2dyb3VuZCBjb2xvciBvciBDU1MgdmFyaWFibGUgKi9cbiAgYmFja2dyb3VuZD86IHN0cmluZztcbiAgLyoqIEJhY2tncm91bmQgY29sb3IgZm9yIGRhcmsgbW9kZSAqL1xuICBiYWNrZ3JvdW5kRGFyaz86IHN0cmluZztcbiAgLyoqIFJvdXRlIHRvIG5hdmlnYXRlIHRvIHdoZW4gaGVhZGVyIGxvZ28gaXMgY2xpY2tlZCAqL1xuICBob21lUm91dGU/OiBzdHJpbmc7XG59XG4iXX0=
@@ -0,0 +1,181 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, EventEmitter, inject, Input, Output } from '@angular/core';
3
+ import { NavController } from '@ionic/angular';
4
+ import { IonCol, IonGrid, IonHeader, IonRow, IonTitle, IonToolbar } from '@ionic/angular/standalone';
5
+ import { ExpandableTextComponent } from '../../molecules/expandable-text/expandable-text.component';
6
+ import { ButtonComponent } from '../../atoms/button/button.component';
7
+ import * as i0 from "@angular/core";
8
+ /**
9
+ * val-page-template
10
+ *
11
+ * A page template component with title, expandable description,
12
+ * content projection, and optional back navigation button.
13
+ *
14
+ * @example
15
+ * <val-page-template
16
+ * [props]="{
17
+ * pageTitle: 'Getting Started',
18
+ * pageDescription: 'Learn how to use our components...',
19
+ * showBackButton: true
20
+ * }"
21
+ * >
22
+ * <div extra-description>
23
+ * <p>Additional info here</p>
24
+ * </div>
25
+ *
26
+ * <!-- Main content -->
27
+ * <my-content></my-content>
28
+ *
29
+ * <div extra-footer>
30
+ * <p>Footer content</p>
31
+ * </div>
32
+ * </val-page-template>
33
+ *
34
+ * @input props - Page template configuration
35
+ * @output onBack - Emits when back button is clicked
36
+ */
37
+ export class PageTemplateComponent {
38
+ constructor() {
39
+ this.nav = inject(NavController);
40
+ /**
41
+ * Page template configuration.
42
+ */
43
+ this.props = {};
44
+ /**
45
+ * Emits when the back button is clicked.
46
+ */
47
+ this.onBack = new EventEmitter();
48
+ }
49
+ /**
50
+ * Handles back navigation.
51
+ */
52
+ handleBack() {
53
+ this.onBack.emit();
54
+ this.nav.back();
55
+ }
56
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PageTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
57
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PageTemplateComponent, isStandalone: true, selector: "val-page-template", inputs: { props: "props" }, outputs: { onBack: "onBack" }, ngImport: i0, template: `
58
+ @if (props.pageTitle) {
59
+ <ion-header [class.ion-no-border]="true">
60
+ <ion-toolbar style="--background: transparent;">
61
+ <ion-title class="page-title" size="large">{{ props.pageTitle }}</ion-title>
62
+ </ion-toolbar>
63
+ </ion-header>
64
+ }
65
+ <ion-grid>
66
+ <ion-row class="ion-justify-content-center description-row">
67
+ <ion-col size="12" size-md="10" size-lg="8">
68
+ @if (props.pageDescription) {
69
+ <div class="description-container">
70
+ <val-expandable-text
71
+ [props]="{
72
+ limit: props.descriptionLimit || 180,
73
+ content: props.pageDescription,
74
+ color: props.descriptionColor || 'dark',
75
+ expandText: 'more'
76
+ }"
77
+ />
78
+ </div>
79
+ }
80
+ <ng-content select="[extra-description]"></ng-content>
81
+ </ion-col>
82
+ </ion-row>
83
+ <ng-content></ng-content>
84
+ <ng-content select="[extra-footer]"></ng-content>
85
+ @if (props.showBackButton) {
86
+ <ion-row class="ion-justify-content-center back-row">
87
+ <ion-col size="12" size-md="10" size-lg="8">
88
+ <val-button
89
+ class="back-button"
90
+ [props]="{
91
+ text: props.backButtonText || 'Back',
92
+ color: 'dark',
93
+ size: 'small',
94
+ type: 'button',
95
+ state: 'ENABLED',
96
+ fill: 'outline',
97
+ shape: 'round',
98
+ icon: {
99
+ name: 'arrow-back-outline',
100
+ slot: 'start'
101
+ }
102
+ }"
103
+ (onClick)="handleBack()"
104
+ />
105
+ </ion-col>
106
+ </ion-row>
107
+ }
108
+ </ion-grid>
109
+ `, isInline: true, styles: [".page-title{margin-left:-4px;padding:0;font-size:2.5rem;font-weight:800}.description-row{margin-bottom:16px}.description-container{margin-top:1rem}.back-row{margin-bottom:16px}.back-button{display:block;margin:1rem 0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: ExpandableTextComponent, selector: "val-expandable-text", inputs: ["props"] }, { 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: ButtonComponent, selector: "val-button", inputs: ["props"], outputs: ["onClick"] }] }); }
110
+ }
111
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PageTemplateComponent, decorators: [{
112
+ type: Component,
113
+ args: [{ selector: 'val-page-template', standalone: true, imports: [
114
+ CommonModule,
115
+ IonHeader,
116
+ IonToolbar,
117
+ IonTitle,
118
+ ExpandableTextComponent,
119
+ IonGrid,
120
+ IonRow,
121
+ IonCol,
122
+ ButtonComponent,
123
+ ], template: `
124
+ @if (props.pageTitle) {
125
+ <ion-header [class.ion-no-border]="true">
126
+ <ion-toolbar style="--background: transparent;">
127
+ <ion-title class="page-title" size="large">{{ props.pageTitle }}</ion-title>
128
+ </ion-toolbar>
129
+ </ion-header>
130
+ }
131
+ <ion-grid>
132
+ <ion-row class="ion-justify-content-center description-row">
133
+ <ion-col size="12" size-md="10" size-lg="8">
134
+ @if (props.pageDescription) {
135
+ <div class="description-container">
136
+ <val-expandable-text
137
+ [props]="{
138
+ limit: props.descriptionLimit || 180,
139
+ content: props.pageDescription,
140
+ color: props.descriptionColor || 'dark',
141
+ expandText: 'more'
142
+ }"
143
+ />
144
+ </div>
145
+ }
146
+ <ng-content select="[extra-description]"></ng-content>
147
+ </ion-col>
148
+ </ion-row>
149
+ <ng-content></ng-content>
150
+ <ng-content select="[extra-footer]"></ng-content>
151
+ @if (props.showBackButton) {
152
+ <ion-row class="ion-justify-content-center back-row">
153
+ <ion-col size="12" size-md="10" size-lg="8">
154
+ <val-button
155
+ class="back-button"
156
+ [props]="{
157
+ text: props.backButtonText || 'Back',
158
+ color: 'dark',
159
+ size: 'small',
160
+ type: 'button',
161
+ state: 'ENABLED',
162
+ fill: 'outline',
163
+ shape: 'round',
164
+ icon: {
165
+ name: 'arrow-back-outline',
166
+ slot: 'start'
167
+ }
168
+ }"
169
+ (onClick)="handleBack()"
170
+ />
171
+ </ion-col>
172
+ </ion-row>
173
+ }
174
+ </ion-grid>
175
+ `, styles: [".page-title{margin-left:-4px;padding:0;font-size:2.5rem;font-weight:800}.description-row{margin-bottom:16px}.description-container{margin-top:1rem}.back-row{margin-bottom:16px}.back-button{display:block;margin:1rem 0}\n"] }]
176
+ }], propDecorators: { props: [{
177
+ type: Input
178
+ }], onBack: [{
179
+ type: Output
180
+ }] } });
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS10ZW1wbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL3BhZ2UtdGVtcGxhdGUvcGFnZS10ZW1wbGF0ZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7O0FBR3RFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEJHO0FBOEZILE1BQU0sT0FBTyxxQkFBcUI7SUE3RmxDO1FBOEZVLFFBQUcsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFcEM7O1dBRUc7UUFDTSxVQUFLLEdBQXlCLEVBQUUsQ0FBQztRQUUxQzs7V0FFRztRQUNPLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0tBUzdDO0lBUEM7O09BRUc7SUFDSCxVQUFVO1FBQ1IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2xCLENBQUM7K0dBbkJVLHFCQUFxQjttR0FBckIscUJBQXFCLHdJQS9FdEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvRFQsb1NBOURDLFlBQVksK0JBQ1osU0FBUyxvR0FDVCxVQUFVLG1GQUNWLFFBQVEsaUZBQ1IsdUJBQXVCLG1GQUN2QixPQUFPLHdFQUNQLE1BQU0sb0RBQ04sTUFBTSxrVEFDTixlQUFlOzs0RkFpRk4scUJBQXFCO2tCQTdGakMsU0FBUzsrQkFDRSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osU0FBUzt3QkFDVCxVQUFVO3dCQUNWLFFBQVE7d0JBQ1IsdUJBQXVCO3dCQUN2QixPQUFPO3dCQUNQLE1BQU07d0JBQ04sTUFBTTt3QkFDTixlQUFlO3FCQUNoQixZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0RUOzhCQWlDUSxLQUFLO3NCQUFiLEtBQUs7Z0JBS0ksTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdkNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBJb25Db2wsIElvbkdyaWQsIElvbkhlYWRlciwgSW9uUm93LCBJb25UaXRsZSwgSW9uVG9vbGJhciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgRXhwYW5kYWJsZVRleHRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvZXhwYW5kYWJsZS10ZXh0L2V4cGFuZGFibGUtdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGFnZVRlbXBsYXRlTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiB2YWwtcGFnZS10ZW1wbGF0ZVxuICpcbiAqIEEgcGFnZSB0ZW1wbGF0ZSBjb21wb25lbnQgd2l0aCB0aXRsZSwgZXhwYW5kYWJsZSBkZXNjcmlwdGlvbixcbiAqIGNvbnRlbnQgcHJvamVjdGlvbiwgYW5kIG9wdGlvbmFsIGJhY2sgbmF2aWdhdGlvbiBidXR0b24uXG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtcGFnZS10ZW1wbGF0ZVxuICogICBbcHJvcHNdPVwie1xuICogICAgIHBhZ2VUaXRsZTogJ0dldHRpbmcgU3RhcnRlZCcsXG4gKiAgICAgcGFnZURlc2NyaXB0aW9uOiAnTGVhcm4gaG93IHRvIHVzZSBvdXIgY29tcG9uZW50cy4uLicsXG4gKiAgICAgc2hvd0JhY2tCdXR0b246IHRydWVcbiAqICAgfVwiXG4gKiA+XG4gKiAgIDxkaXYgZXh0cmEtZGVzY3JpcHRpb24+XG4gKiAgICAgPHA+QWRkaXRpb25hbCBpbmZvIGhlcmU8L3A+XG4gKiAgIDwvZGl2PlxuICpcbiAqICAgPCEtLSBNYWluIGNvbnRlbnQgLS0+XG4gKiAgIDxteS1jb250ZW50PjwvbXktY29udGVudD5cbiAqXG4gKiAgIDxkaXYgZXh0cmEtZm9vdGVyPlxuICogICAgIDxwPkZvb3RlciBjb250ZW50PC9wPlxuICogICA8L2Rpdj5cbiAqIDwvdmFsLXBhZ2UtdGVtcGxhdGU+XG4gKlxuICogQGlucHV0IHByb3BzIC0gUGFnZSB0ZW1wbGF0ZSBjb25maWd1cmF0aW9uXG4gKiBAb3V0cHV0IG9uQmFjayAtIEVtaXRzIHdoZW4gYmFjayBidXR0b24gaXMgY2xpY2tlZFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtcGFnZS10ZW1wbGF0ZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSW9uSGVhZGVyLFxuICAgIElvblRvb2xiYXIsXG4gICAgSW9uVGl0bGUsXG4gICAgRXhwYW5kYWJsZVRleHRDb21wb25lbnQsXG4gICAgSW9uR3JpZCxcbiAgICBJb25Sb3csXG4gICAgSW9uQ29sLFxuICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICBAaWYgKHByb3BzLnBhZ2VUaXRsZSkge1xuICAgICAgPGlvbi1oZWFkZXIgW2NsYXNzLmlvbi1uby1ib3JkZXJdPVwidHJ1ZVwiPlxuICAgICAgICA8aW9uLXRvb2xiYXIgc3R5bGU9XCItLWJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1wiPlxuICAgICAgICAgIDxpb24tdGl0bGUgY2xhc3M9XCJwYWdlLXRpdGxlXCIgc2l6ZT1cImxhcmdlXCI+e3sgcHJvcHMucGFnZVRpdGxlIH19PC9pb24tdGl0bGU+XG4gICAgICAgIDwvaW9uLXRvb2xiYXI+XG4gICAgICA8L2lvbi1oZWFkZXI+XG4gICAgfVxuICAgIDxpb24tZ3JpZD5cbiAgICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLWp1c3RpZnktY29udGVudC1jZW50ZXIgZGVzY3JpcHRpb24tcm93XCI+XG4gICAgICAgIDxpb24tY29sIHNpemU9XCIxMlwiIHNpemUtbWQ9XCIxMFwiIHNpemUtbGc9XCI4XCI+XG4gICAgICAgICAgQGlmIChwcm9wcy5wYWdlRGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvbi1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgPHZhbC1leHBhbmRhYmxlLXRleHRcbiAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgbGltaXQ6IHByb3BzLmRlc2NyaXB0aW9uTGltaXQgfHwgMTgwLFxuICAgICAgICAgICAgICAgICAgY29udGVudDogcHJvcHMucGFnZURlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgY29sb3I6IHByb3BzLmRlc2NyaXB0aW9uQ29sb3IgfHwgJ2RhcmsnLFxuICAgICAgICAgICAgICAgICAgZXhwYW5kVGV4dDogJ21vcmUnXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2V4dHJhLWRlc2NyaXB0aW9uXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9pb24tY29sPlxuICAgICAgPC9pb24tcm93PlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2V4dHJhLWZvb3Rlcl1cIj48L25nLWNvbnRlbnQ+XG4gICAgICBAaWYgKHByb3BzLnNob3dCYWNrQnV0dG9uKSB7XG4gICAgICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLWp1c3RpZnktY29udGVudC1jZW50ZXIgYmFjay1yb3dcIj5cbiAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiMTJcIiBzaXplLW1kPVwiMTBcIiBzaXplLWxnPVwiOFwiPlxuICAgICAgICAgICAgPHZhbC1idXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJiYWNrLWJ1dHRvblwiXG4gICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgdGV4dDogcHJvcHMuYmFja0J1dHRvblRleHQgfHwgJ0JhY2snLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgICAgICAgICBzdGF0ZTogJ0VOQUJMRUQnLFxuICAgICAgICAgICAgICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICAgICAgICAgICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgICAgICAgICAgICBpY29uOiB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiAnYXJyb3ctYmFjay1vdXRsaW5lJyxcbiAgICAgICAgICAgICAgICAgIHNsb3Q6ICdzdGFydCdcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAob25DbGljayk9XCJoYW5kbGVCYWNrKClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgIDwvaW9uLXJvdz5cbiAgICAgIH1cbiAgICA8L2lvbi1ncmlkPlxuICBgLFxuICBzdHlsZXM6IGBcbiAgICAucGFnZS10aXRsZSB7XG4gICAgICBtYXJnaW4tbGVmdDogLTRweDtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgICBmb250LXNpemU6IDIuNXJlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgfVxuXG4gICAgLmRlc2NyaXB0aW9uLXJvdyB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICAgIH1cblxuICAgIC5kZXNjcmlwdGlvbi1jb250YWluZXIge1xuICAgICAgbWFyZ2luLXRvcDogMXJlbTtcbiAgICB9XG5cbiAgICAuYmFjay1yb3cge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICB9XG5cbiAgICAuYmFjay1idXR0b24ge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBtYXJnaW46IDFyZW0gMDtcbiAgICB9XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VUZW1wbGF0ZUNvbXBvbmVudCB7XG4gIHByaXZhdGUgbmF2ID0gaW5qZWN0KE5hdkNvbnRyb2xsZXIpO1xuXG4gIC8qKlxuICAgKiBQYWdlIHRlbXBsYXRlIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBASW5wdXQoKSBwcm9wczogUGFnZVRlbXBsYXRlTWV0YWRhdGEgPSB7fTtcblxuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgYmFjayBidXR0b24gaXMgY2xpY2tlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBvbkJhY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgYmFjayBuYXZpZ2F0aW9uLlxuICAgKi9cbiAgaGFuZGxlQmFjaygpOiB2b2lkIHtcbiAgICB0aGlzLm9uQmFjay5lbWl0KCk7XG4gICAgdGhpcy5uYXYuYmFjaygpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL3BhZ2UtdGVtcGxhdGUvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgdGhlIHBhZ2UgdGVtcGxhdGUgY29tcG9uZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VUZW1wbGF0ZU1ldGFkYXRhIHtcbiAgLyoqIFBhZ2UgdGl0bGUgZGlzcGxheWVkIGluIGxhcmdlIGhlYWRlciBzdHlsZSAqL1xuICBwYWdlVGl0bGU/OiBzdHJpbmc7XG4gIC8qKiBQYWdlIGRlc2NyaXB0aW9uIChleHBhbmRhYmxlIHRleHQpICovXG4gIHBhZ2VEZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqIFNob3cgYSBiYWNrIGJ1dHRvbiBhdCB0aGUgYm90dG9tICovXG4gIHNob3dCYWNrQnV0dG9uPzogYm9vbGVhbjtcbiAgLyoqIEN1c3RvbSB0ZXh0IGZvciB0aGUgYmFjayBidXR0b24gKGRlZmF1bHQ6ICdCYWNrJykgKi9cbiAgYmFja0J1dHRvblRleHQ/OiBzdHJpbmc7XG4gIC8qKiBDaGFyYWN0ZXIgbGltaXQgZm9yIGRlc2NyaXB0aW9uIGJlZm9yZSBleHBhbmQgKGRlZmF1bHQ6IDE4MCkgKi9cbiAgZGVzY3JpcHRpb25MaW1pdD86IG51bWJlcjtcbiAgLyoqIFRleHQgY29sb3IgZm9yIHRoZSBkZXNjcmlwdGlvbiAoZGVmYXVsdDogJ2RhcmsnKSAqL1xuICBkZXNjcmlwdGlvbkNvbG9yPzogc3RyaW5nO1xufVxuIl19