valtech-components 2.0.408 → 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 (109) 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/public-api.mjs +33 -1
  55. package/fesm2022/valtech-components.mjs +5821 -868
  56. package/fesm2022/valtech-components.mjs.map +1 -1
  57. package/lib/components/atoms/horizontal-scroll/horizontal-scroll.component.d.ts +41 -0
  58. package/lib/components/atoms/horizontal-scroll/types.d.ts +13 -0
  59. package/lib/components/atoms/rights-footer/rights-footer.component.d.ts +39 -0
  60. package/lib/components/atoms/rights-footer/types.d.ts +13 -0
  61. package/lib/components/molecules/check-input/check-input.component.d.ts +17 -2
  62. package/lib/components/molecules/email-input/email-input.component.d.ts +1 -2
  63. package/lib/components/molecules/footer-links/footer-links.component.d.ts +47 -0
  64. package/lib/components/molecules/footer-links/types.d.ts +37 -0
  65. package/lib/components/molecules/links-accordion/links-accordion.component.d.ts +48 -0
  66. package/lib/components/molecules/links-accordion/types.d.ts +33 -0
  67. package/lib/components/molecules/password-input/password-input.component.d.ts +1 -1
  68. package/lib/components/molecules/prompter/prompter.component.d.ts +8 -1
  69. package/lib/components/molecules/prompter/types.d.ts +7 -1
  70. package/lib/components/molecules/radio-input/radio-input.component.d.ts +1 -2
  71. package/lib/components/molecules/recap-card/recap-card.component.d.ts +36 -0
  72. package/lib/components/molecules/recap-card/types.d.ts +30 -0
  73. package/lib/components/molecules/select-input/select-input.component.d.ts +6 -1
  74. package/lib/components/molecules/swipe-carousel/swipe-carousel.component.d.ts +66 -0
  75. package/lib/components/molecules/swipe-carousel/types.d.ts +35 -0
  76. package/lib/components/molecules/testimonial-card/testimonial-card.component.d.ts +41 -0
  77. package/lib/components/molecules/testimonial-card/types.d.ts +25 -0
  78. package/lib/components/molecules/text-input/text-input.component.d.ts +13 -4
  79. package/lib/components/organisms/cards-carousel/cards-carousel.component.d.ts +30 -0
  80. package/lib/components/organisms/cards-carousel/types.d.ts +11 -0
  81. package/lib/components/organisms/company-footer/company-footer.component.d.ts +32 -0
  82. package/lib/components/organisms/company-footer/types.d.ts +15 -0
  83. package/lib/components/organisms/data-table/data-table.component.d.ts +1 -1
  84. package/lib/components/organisms/data-table/types.d.ts +6 -0
  85. package/lib/components/organisms/fun-header/fun-header.component.d.ts +72 -0
  86. package/lib/components/organisms/fun-header/types.d.ts +28 -0
  87. package/lib/components/organisms/menu/menu.component.d.ts +39 -0
  88. package/lib/components/organisms/menu/types.d.ts +23 -0
  89. package/lib/components/organisms/testimonial-carousel/testimonial-carousel.component.d.ts +33 -0
  90. package/lib/components/organisms/testimonial-carousel/types.d.ts +8 -0
  91. package/lib/components/templates/page-content/page-content.component.d.ts +55 -0
  92. package/lib/components/templates/page-content/types.d.ts +14 -0
  93. package/lib/components/templates/page-template/page-template.component.d.ts +49 -0
  94. package/lib/components/templates/page-template/types.d.ts +17 -0
  95. package/lib/components/templates/page-wrapper/page-wrapper.component.d.ts +61 -0
  96. package/lib/components/templates/page-wrapper/types.d.ts +19 -0
  97. package/lib/components/types.d.ts +14 -0
  98. package/lib/services/firebase/config.d.ts +49 -0
  99. package/lib/services/firebase/firebase.service.d.ts +140 -0
  100. package/lib/services/firebase/firestore-collection.d.ts +195 -0
  101. package/lib/services/firebase/firestore.service.d.ts +303 -0
  102. package/lib/services/firebase/index.d.ts +38 -0
  103. package/lib/services/firebase/messaging.service.d.ts +254 -0
  104. package/lib/services/firebase/storage.service.d.ts +204 -0
  105. package/lib/services/firebase/types.d.ts +279 -0
  106. package/lib/services/firebase/utils/path-builder.d.ts +132 -0
  107. package/lib/services/firebase/utils/query-builder.d.ts +210 -0
  108. package/package.json +3 -1
  109. package/public-api.d.ts +31 -0
@@ -6,7 +6,7 @@ export declare class TextInputComponent implements OnInit {
6
6
  * Input configuration object.
7
7
  * @type {InputMetadata}
8
8
  * @property control - The Angular FormControl for the input.
9
- * @property placeholder - The placeholder text.
9
+ * @property placeholder - The placeholder text. For i18n, use langService.getText() to get translated value.
10
10
  * @property label, name, hint, type, validators, etc. - See InputMetadata for all options.
11
11
  */
12
12
  props: InputMetadata;
@@ -18,15 +18,24 @@ export declare class TextInputComponent implements OnInit {
18
18
  * val-text-input
19
19
  *
20
20
  * A text input field integrated with Angular forms.
21
+ * For i18n support, pass the translated placeholder text via props.
21
22
  *
22
- * @example
23
- * <val-text-input [props]="{ control: myControl, placeholder: 'Enter text', ... }"></val-text-input>
23
+ * @example Static placeholder:
24
+ * <val-text-input [props]="{ control: myControl, placeholder: 'Enter text' }"></val-text-input>
25
+ *
26
+ * @example With i18n:
27
+ * ```typescript
28
+ * // In component
29
+ * textProps = {
30
+ * control: this.textControl,
31
+ * placeholder: this.langService.getText('MyComponent', 'namePlaceholder')
32
+ * };
33
+ * ```
24
34
  *
25
35
  * @input props: InputMetadata - Configuration for the input (form control, placeholder, label, etc.)
26
36
  */
27
37
  ERROR: "ERROR";
28
38
  };
29
- constructor();
30
39
  ngOnInit(): void;
31
40
  static ɵfac: i0.ɵɵFactoryDeclaration<TextInputComponent, never>;
32
41
  static ɵcmp: i0.ɵɵComponentDeclaration<TextInputComponent, "val-text-input", never, { "props": { "alias": "props"; "required": false; }; }, {}, never, never, true, never>;
@@ -0,0 +1,30 @@
1
+ import { CardsCarouselMetadata } from './types';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * val-cards-carousel
5
+ *
6
+ * A horizontal carousel of recap cards with optional action header.
7
+ * Combines HorizontalScroll for smooth horizontal scrolling with RecapCard
8
+ * components for consistent card styling.
9
+ *
10
+ * @example
11
+ * <val-cards-carousel
12
+ * [props]="{
13
+ * header: { title: 'Featured Items', actionType: 'link', actionLabel: 'View All' },
14
+ * cards: [
15
+ * { title: 'Card 1', description: 'Description', href: '/item/1' },
16
+ * { title: 'Card 2', description: 'Description', href: '/item/2' }
17
+ * ]
18
+ * }"
19
+ * ></val-cards-carousel>
20
+ *
21
+ * @input props - Carousel configuration with cards and optional header
22
+ */
23
+ export declare class CardsCarouselComponent {
24
+ /**
25
+ * Carousel configuration with cards and optional header.
26
+ */
27
+ props: CardsCarouselMetadata;
28
+ static ɵfac: i0.ɵɵFactoryDeclaration<CardsCarouselComponent, never>;
29
+ static ɵcmp: i0.ɵɵComponentDeclaration<CardsCarouselComponent, "val-cards-carousel", never, { "props": { "alias": "props"; "required": false; }; }, {}, never, never, true, never>;
30
+ }
@@ -0,0 +1,11 @@
1
+ import { ActionHeaderMetadata } from '../../molecules/action-header/types';
2
+ import { RecapCardMetadata } from '../../molecules/recap-card/types';
3
+ /**
4
+ * Configuration for the cards carousel component.
5
+ */
6
+ export interface CardsCarouselMetadata {
7
+ /** Array of recap cards to display */
8
+ cards: RecapCardMetadata[];
9
+ /** Optional action header configuration */
10
+ header?: ActionHeaderMetadata;
11
+ }
@@ -0,0 +1,32 @@
1
+ import { CompanyFooterMetadata } from './types';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * val-company-footer
5
+ *
6
+ * A complete footer component combining footer links (with logo and social icons)
7
+ * and a rights/copyright footer. Configurable padding and background options.
8
+ *
9
+ * @example
10
+ * <val-company-footer
11
+ * [props]="{
12
+ * links: {
13
+ * leftLinks: { title: 'Company', size: 'medium', links: [...] },
14
+ * rightLinks: { title: 'Support', size: 'medium', links: [...] },
15
+ * logo: '/assets/logo.png',
16
+ * socialLinks: [...]
17
+ * },
18
+ * rights: { companyName: 'Acme Inc' },
19
+ * withPadding: true
20
+ * }"
21
+ * ></val-company-footer>
22
+ *
23
+ * @input props - Footer configuration
24
+ */
25
+ export declare class CompanyFooterComponent {
26
+ /**
27
+ * Footer configuration.
28
+ */
29
+ props: CompanyFooterMetadata;
30
+ static ɵfac: i0.ɵɵFactoryDeclaration<CompanyFooterComponent, never>;
31
+ static ɵcmp: i0.ɵɵComponentDeclaration<CompanyFooterComponent, "val-company-footer", never, { "props": { "alias": "props"; "required": false; }; }, {}, never, never, true, never>;
32
+ }
@@ -0,0 +1,15 @@
1
+ import { FooterLinksMetadata } from '../../molecules/footer-links/types';
2
+ import { RightsFooterMetadata } from '../../atoms/rights-footer/types';
3
+ /**
4
+ * Configuration for the company footer component.
5
+ */
6
+ export interface CompanyFooterMetadata {
7
+ /** Footer links configuration */
8
+ links: FooterLinksMetadata;
9
+ /** Rights footer configuration */
10
+ rights?: RightsFooterMetadata;
11
+ /** Add padding around the footer */
12
+ withPadding?: boolean;
13
+ /** Add background color to the footer */
14
+ withBackground?: boolean;
15
+ }
@@ -42,5 +42,5 @@ export declare class DataTableComponent<T = any> implements OnInit, OnChanges {
42
42
  goToPage(page: number): void;
43
43
  onPageSizeChange(event: CustomEvent): void;
44
44
  static ɵfac: i0.ɵɵFactoryDeclaration<DataTableComponent<any>, never>;
45
- static ɵcmp: i0.ɵɵComponentDeclaration<DataTableComponent<any>, "val-data-table", never, { "props": { "alias": "props"; "required": false; }; }, { "rowClick": "rowClick"; "selectionChange": "selectionChange"; "sortChange": "sortChange"; "pageChange": "pageChange"; }, never, never, true, never>;
45
+ static ɵcmp: i0.ɵɵComponentDeclaration<DataTableComponent<any>, "val-data-table", never, { "props": { "alias": "props"; "required": false; }; }, { "rowClick": "rowClick"; "selectionChange": "selectionChange"; "sortChange": "sortChange"; "pageChange": "pageChange"; }, never, ["[toolbar]"], true, never>;
46
46
  }
@@ -194,6 +194,12 @@ export interface DataTableMetadata<T = any> {
194
194
  ariaLabel?: string;
195
195
  /** Content class for reactive content */
196
196
  contentClass?: string;
197
+ /** Responsive mode: 'scroll' (default) or 'cards' for mobile card view */
198
+ responsiveMode?: 'scroll' | 'cards';
199
+ /** Breakpoint for card view in pixels. Default: 768 */
200
+ responsiveBreakpoint?: number;
201
+ /** Custom template for mobile card view */
202
+ mobileCardTemplate?: TemplateRef<any>;
197
203
  }
198
204
  /**
199
205
  * Default pagination options.
@@ -0,0 +1,72 @@
1
+ import { FunHeaderMetadata } from './types';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * val-fun-header
5
+ *
6
+ * A decorative header component with flexible background options,
7
+ * optional logo, and integrated banner content. Supports dark mode,
8
+ * gradients, images with overlays, and various styling options.
9
+ *
10
+ * @example
11
+ * <val-fun-header
12
+ * [props]="{
13
+ * image: '/assets/logo.png',
14
+ * background: 'primary',
15
+ * gradient: true,
16
+ * content: {
17
+ * title: 'Welcome',
18
+ * description: 'Get started with our platform'
19
+ * },
20
+ * rounded: true,
21
+ * shadowed: true
22
+ * }"
23
+ * ></val-fun-header>
24
+ *
25
+ * @input props - Header configuration
26
+ */
27
+ export declare class FunHeaderComponent {
28
+ private theme;
29
+ /**
30
+ * Header configuration.
31
+ */
32
+ props: FunHeaderMetadata;
33
+ /**
34
+ * Check if the image is a CSS variable (starts with --)
35
+ */
36
+ isImageVariable(image?: string): boolean;
37
+ /**
38
+ * Get the image source, handling CSS variables
39
+ */
40
+ getImageSrc(): string;
41
+ /**
42
+ * Generate header background styles
43
+ * Supports: images, gradients, colors, CSS variables, and dark mode
44
+ */
45
+ headerStyle(): Record<string, string>;
46
+ /**
47
+ * Resolve background color for gradient generation
48
+ */
49
+ private resolveBackgroundColor;
50
+ /**
51
+ * Check if background is an image URL
52
+ */
53
+ private isBackgroundImage;
54
+ /**
55
+ * Check if background is a gradient
56
+ */
57
+ private isGradient;
58
+ /**
59
+ * Check if background is a CSS variable
60
+ */
61
+ private isCSSVariable;
62
+ /**
63
+ * Check if background is a direct color value
64
+ */
65
+ private isColorValue;
66
+ /**
67
+ * Apply image background with optional overlay
68
+ */
69
+ private applyImageBackground;
70
+ static ɵfac: i0.ɵɵFactoryDeclaration<FunHeaderComponent, never>;
71
+ static ɵcmp: i0.ɵɵComponentDeclaration<FunHeaderComponent, "val-fun-header", never, { "props": { "alias": "props"; "required": false; }; }, {}, never, never, true, never>;
72
+ }
@@ -0,0 +1,28 @@
1
+ import { BannerMetadata } from '../banner/types';
2
+ /**
3
+ * Configuration for the fun header component.
4
+ */
5
+ export interface FunHeaderMetadata {
6
+ /** Optional token for tracking/analytics */
7
+ token?: string;
8
+ /** Logo image path or CSS variable (e.g., '--my-logo') */
9
+ image?: string;
10
+ /** Background image URL, gradient, color, or CSS variable */
11
+ background?: string;
12
+ /** Dark mode background (optional, falls back to background) */
13
+ backgroundDark?: string;
14
+ /** Create automatic gradient from --ion-background-color to background color */
15
+ gradient?: boolean;
16
+ /** Add overlay for better text contrast on images */
17
+ overlay?: boolean;
18
+ /** Overlay opacity (0-1, default: 0.3) */
19
+ overlayOpacity?: number;
20
+ /** Banner content configuration */
21
+ content: BannerMetadata;
22
+ /** Add border around the header */
23
+ bordered?: boolean;
24
+ /** Add box shadow to the header */
25
+ shadowed?: boolean;
26
+ /** Add rounded bottom corners */
27
+ rounded?: boolean;
28
+ }
@@ -0,0 +1,39 @@
1
+ import { MenuMetadata } from './types';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * val-menu
5
+ *
6
+ * A side menu component using Ionic IonMenu with customizable logo,
7
+ * close button, and content projection for menu items.
8
+ *
9
+ * @example
10
+ * <val-menu
11
+ * [props]="{
12
+ * id: 'main-menu',
13
+ * contentId: 'main-content',
14
+ * side: 'start',
15
+ * type: 'overlay',
16
+ * swipe: true,
17
+ * showCloseButton: true
18
+ * }"
19
+ * >
20
+ * <val-links-accordion [props]="menuLinks"></val-links-accordion>
21
+ * </val-menu>
22
+ *
23
+ * <ion-router-outlet id="main-content"></ion-router-outlet>
24
+ *
25
+ * @input props - Menu configuration
26
+ */
27
+ export declare class MenuComponent {
28
+ private menuCtrl;
29
+ /**
30
+ * Menu configuration.
31
+ */
32
+ props: MenuMetadata;
33
+ /**
34
+ * Closes the menu.
35
+ */
36
+ closeMenu(): Promise<void>;
37
+ static ɵfac: i0.ɵɵFactoryDeclaration<MenuComponent, never>;
38
+ static ɵcmp: i0.ɵɵComponentDeclaration<MenuComponent, "val-menu", never, { "props": { "alias": "props"; "required": false; }; }, {}, never, ["*"], true, never>;
39
+ }
@@ -0,0 +1,23 @@
1
+ import { MenuType, Side } from '@ionic/core';
2
+ import { ImageMetadata } from '../../atoms/image/types';
3
+ /**
4
+ * Configuration for the menu component.
5
+ */
6
+ export interface MenuMetadata {
7
+ /** Menu type: 'overlay', 'reveal', or 'push' */
8
+ type?: MenuType;
9
+ /** Enable swipe gesture to open/close */
10
+ swipe?: boolean;
11
+ /** ID of the content element this menu is associated with */
12
+ contentId?: string;
13
+ /** Unique identifier for the menu */
14
+ id?: string;
15
+ /** Which side the menu appears on */
16
+ side?: Side;
17
+ /** Show a close button at the bottom */
18
+ showCloseButton?: boolean;
19
+ /** Close button text (default: 'Close') */
20
+ closeButtonText?: string;
21
+ /** Logo image configuration */
22
+ logo?: ImageMetadata;
23
+ }
@@ -0,0 +1,33 @@
1
+ import { SwipeCarouselMetadata } from '../../molecules/swipe-carousel/types';
2
+ import { TestimonialCarouselMetadata } from './types';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * val-testimonial-carousel
6
+ *
7
+ * A carousel of testimonial cards using Swiper.js with centered slides
8
+ * and responsive breakpoints for optimal viewing on all devices.
9
+ *
10
+ * @example
11
+ * <val-testimonial-carousel
12
+ * [props]="{
13
+ * cards: [
14
+ * { title: 'John Doe', image: '/john.jpg', link: { text: 'CEO', route: ['/team'] } },
15
+ * { title: 'Jane Smith', image: '/jane.jpg', link: { text: 'CTO', route: ['/team'] } }
16
+ * ]
17
+ * }"
18
+ * ></val-testimonial-carousel>
19
+ *
20
+ * @input props - Carousel configuration with testimonial cards
21
+ */
22
+ export declare class TestimonialCarouselComponent {
23
+ /**
24
+ * Carousel configuration with testimonial cards.
25
+ */
26
+ props: TestimonialCarouselMetadata;
27
+ /**
28
+ * Swiper configuration optimized for testimonial cards.
29
+ */
30
+ swiperProps: SwipeCarouselMetadata;
31
+ static ɵfac: i0.ɵɵFactoryDeclaration<TestimonialCarouselComponent, never>;
32
+ static ɵcmp: i0.ɵɵComponentDeclaration<TestimonialCarouselComponent, "val-testimonial-carousel", never, { "props": { "alias": "props"; "required": false; }; }, {}, never, never, true, never>;
33
+ }
@@ -0,0 +1,8 @@
1
+ import { TestimonialCardMetadata } from '../../molecules/testimonial-card/types';
2
+ /**
3
+ * Configuration for the testimonial carousel component.
4
+ */
5
+ export interface TestimonialCarouselMetadata {
6
+ /** Array of testimonial cards to display */
7
+ cards: TestimonialCardMetadata[];
8
+ }
@@ -0,0 +1,55 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { PageContentMetadata } from './types';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * val-page-content
6
+ *
7
+ * A page content template with corporate header, main content area,
8
+ * and footer slots. Supports dark mode and customizable backgrounds.
9
+ *
10
+ * @example
11
+ * <val-page-content
12
+ * [props]="{
13
+ * header: { ... },
14
+ * background: '--main-background',
15
+ * homeRoute: '/'
16
+ * }"
17
+ * (onHeaderClick)="handleHeaderAction($event)"
18
+ * >
19
+ * <div content>
20
+ * <!-- Main page content -->
21
+ * </div>
22
+ * <div footer>
23
+ * <val-company-footer [props]="footerProps"></val-company-footer>
24
+ * </div>
25
+ * </val-page-content>
26
+ *
27
+ * @input props - Page content configuration
28
+ * @output onHeaderClick - Emits when a header action is clicked
29
+ */
30
+ export declare class PageContentComponent {
31
+ private theme;
32
+ private nav;
33
+ /**
34
+ * Page content configuration.
35
+ */
36
+ props: PageContentMetadata;
37
+ /**
38
+ * Emits when a header action is clicked.
39
+ */
40
+ onHeaderClick: EventEmitter<string>;
41
+ /**
42
+ * Default header configuration.
43
+ */
44
+ get headerProps(): import("valtech-components").HeaderMetadata;
45
+ /**
46
+ * Gets the background color based on theme.
47
+ */
48
+ getBackground(): string;
49
+ /**
50
+ * Handles header action clicks.
51
+ */
52
+ onHeaderClickHandler(token: string): void;
53
+ static ɵfac: i0.ɵɵFactoryDeclaration<PageContentComponent, never>;
54
+ static ɵcmp: i0.ɵɵComponentDeclaration<PageContentComponent, "val-page-content", never, { "props": { "alias": "props"; "required": false; }; }, { "onHeaderClick": "onHeaderClick"; }, never, ["[content]", "[footer]", "[extra-footer]"], true, never>;
55
+ }
@@ -0,0 +1,14 @@
1
+ import { HeaderMetadata } from '../../organisms/header/types';
2
+ /**
3
+ * Configuration for the page content component.
4
+ */
5
+ export interface PageContentMetadata {
6
+ /** Header configuration */
7
+ header?: HeaderMetadata;
8
+ /** Background color or CSS variable */
9
+ background?: string;
10
+ /** Background color for dark mode */
11
+ backgroundDark?: string;
12
+ /** Route to navigate to when header logo is clicked */
13
+ homeRoute?: string;
14
+ }
@@ -0,0 +1,49 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { PageTemplateMetadata } from './types';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * val-page-template
6
+ *
7
+ * A page template component with title, expandable description,
8
+ * content projection, and optional back navigation button.
9
+ *
10
+ * @example
11
+ * <val-page-template
12
+ * [props]="{
13
+ * pageTitle: 'Getting Started',
14
+ * pageDescription: 'Learn how to use our components...',
15
+ * showBackButton: true
16
+ * }"
17
+ * >
18
+ * <div extra-description>
19
+ * <p>Additional info here</p>
20
+ * </div>
21
+ *
22
+ * <!-- Main content -->
23
+ * <my-content></my-content>
24
+ *
25
+ * <div extra-footer>
26
+ * <p>Footer content</p>
27
+ * </div>
28
+ * </val-page-template>
29
+ *
30
+ * @input props - Page template configuration
31
+ * @output onBack - Emits when back button is clicked
32
+ */
33
+ export declare class PageTemplateComponent {
34
+ private nav;
35
+ /**
36
+ * Page template configuration.
37
+ */
38
+ props: PageTemplateMetadata;
39
+ /**
40
+ * Emits when the back button is clicked.
41
+ */
42
+ onBack: EventEmitter<void>;
43
+ /**
44
+ * Handles back navigation.
45
+ */
46
+ handleBack(): void;
47
+ static ɵfac: i0.ɵɵFactoryDeclaration<PageTemplateComponent, never>;
48
+ static ɵcmp: i0.ɵɵComponentDeclaration<PageTemplateComponent, "val-page-template", never, { "props": { "alias": "props"; "required": false; }; }, { "onBack": "onBack"; }, never, ["[extra-description]", "*", "[extra-footer]"], true, never>;
49
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Configuration for the page template component.
3
+ */
4
+ export interface PageTemplateMetadata {
5
+ /** Page title displayed in large header style */
6
+ pageTitle?: string;
7
+ /** Page description (expandable text) */
8
+ pageDescription?: string;
9
+ /** Show a back button at the bottom */
10
+ showBackButton?: boolean;
11
+ /** Custom text for the back button (default: 'Back') */
12
+ backButtonText?: string;
13
+ /** Character limit for description before expand (default: 180) */
14
+ descriptionLimit?: number;
15
+ /** Text color for the description (default: 'dark') */
16
+ descriptionColor?: string;
17
+ }
@@ -0,0 +1,61 @@
1
+ import { EventEmitter, OnDestroy, OnInit } from '@angular/core';
2
+ import { ViewWillEnter, ViewWillLeave } from '@ionic/angular/standalone';
3
+ import { PageWrapperMetadata } from './types';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * val-page-wrapper
7
+ *
8
+ * A complete page wrapper template with header, router outlet, footer,
9
+ * and automatic scroll-to-top on navigation.
10
+ *
11
+ * @example
12
+ * <val-page-wrapper
13
+ * [props]="{
14
+ * homeRoute: '/',
15
+ * scrollToTopOnNavigate: true,
16
+ * footer: {
17
+ * links: { ... },
18
+ * rights: { companyName: 'Acme' }
19
+ * }
20
+ * }"
21
+ * ></val-page-wrapper>
22
+ *
23
+ * @input props - Page wrapper configuration
24
+ * @output onHeaderClick - Emits when a header action is clicked
25
+ */
26
+ export declare class PageWrapperComponent implements ViewWillEnter, ViewWillLeave, OnInit, OnDestroy {
27
+ private theme;
28
+ private nav;
29
+ private router;
30
+ private routerSubscription?;
31
+ /**
32
+ * Page wrapper configuration.
33
+ */
34
+ props: PageWrapperMetadata;
35
+ /**
36
+ * Emits when a header action is clicked.
37
+ */
38
+ onHeaderClick: EventEmitter<string>;
39
+ /**
40
+ * Default header configuration.
41
+ */
42
+ get headerProps(): import("valtech-components").HeaderMetadata;
43
+ ngOnInit(): void;
44
+ ngOnDestroy(): void;
45
+ ionViewWillLeave(): void;
46
+ ionViewWillEnter(): void;
47
+ /**
48
+ * Gets the background color based on theme.
49
+ */
50
+ getBackground(): string;
51
+ /**
52
+ * Scrolls the content to the top.
53
+ */
54
+ private scrollToTop;
55
+ /**
56
+ * Handles header action clicks.
57
+ */
58
+ onHeaderClickHandler(token: string): void;
59
+ static ɵfac: i0.ɵɵFactoryDeclaration<PageWrapperComponent, never>;
60
+ static ɵcmp: i0.ɵɵComponentDeclaration<PageWrapperComponent, "val-page-wrapper", never, { "props": { "alias": "props"; "required": false; }; }, { "onHeaderClick": "onHeaderClick"; }, never, never, true, never>;
61
+ }
@@ -0,0 +1,19 @@
1
+ import { HeaderMetadata } from '../../organisms/header/types';
2
+ import { CompanyFooterMetadata } from '../../organisms/company-footer/types';
3
+ /**
4
+ * Configuration for the page wrapper component.
5
+ */
6
+ export interface PageWrapperMetadata {
7
+ /** Header configuration */
8
+ header?: HeaderMetadata;
9
+ /** Footer configuration */
10
+ footer?: CompanyFooterMetadata;
11
+ /** Background color or CSS variable */
12
+ background?: string;
13
+ /** Route to navigate to when header logo is clicked */
14
+ homeRoute?: string;
15
+ /** Content ID for scroll handling */
16
+ contentId?: string;
17
+ /** Enable scroll-to-top on route change */
18
+ scrollToTopOnNavigate?: boolean;
19
+ }
@@ -126,6 +126,20 @@ export type InputMetadata = {
126
126
  fromPlaceholder?: string;
127
127
  /** Placeholder for "to" field (only for NUMBER_FROM_TO type) */
128
128
  toPlaceholder?: string;
129
+ /** Key for reactive content from LangService */
130
+ contentKey?: string;
131
+ /** Component class name for content lookup */
132
+ contentClass?: string;
133
+ /** Fallback text if content key is not found */
134
+ contentFallback?: string;
135
+ /** Custom header text for select modal */
136
+ modalHeader?: string;
137
+ /** Custom cancel button text for select modal */
138
+ cancelText?: string;
139
+ /** Custom OK button text for select modal */
140
+ okText?: string;
141
+ /** Position of label for checkbox ('start' | 'end') */
142
+ labelPlacement?: 'start' | 'end';
129
143
  };
130
144
  /**
131
145
  * A section in a form, grouping multiple fields.
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Firebase Configuration
3
+ *
4
+ * Configuración e inicialización de Firebase para aplicaciones Angular.
5
+ * Usa provideValtechFirebase() en el bootstrap de tu aplicación.
6
+ */
7
+ import { EnvironmentProviders, InjectionToken } from '@angular/core';
8
+ import { ValtechFirebaseConfig } from './types';
9
+ /**
10
+ * Token de inyección para la configuración de Firebase.
11
+ * Usado internamente por los servicios de Firebase.
12
+ */
13
+ export declare const VALTECH_FIREBASE_CONFIG: InjectionToken<ValtechFirebaseConfig>;
14
+ /**
15
+ * Provee Firebase a la aplicación Angular.
16
+ *
17
+ * @param config - Configuración de Firebase
18
+ * @returns EnvironmentProviders para usar en bootstrapApplication
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * // main.ts
23
+ * import { bootstrapApplication } from '@angular/platform-browser';
24
+ * import { provideValtechFirebase } from 'valtech-components';
25
+ * import { environment } from './environments/environment';
26
+ *
27
+ * bootstrapApplication(AppComponent, {
28
+ * providers: [
29
+ * provideValtechFirebase({
30
+ * firebase: environment.firebase,
31
+ * persistence: true,
32
+ * emulator: environment.useEmulators ? {
33
+ * firestore: { host: 'localhost', port: 8080 },
34
+ * auth: { host: 'localhost', port: 9099 },
35
+ * storage: { host: 'localhost', port: 9199 },
36
+ * } : undefined,
37
+ * }),
38
+ * ],
39
+ * });
40
+ * ```
41
+ */
42
+ export declare function provideValtechFirebase(config: ValtechFirebaseConfig): EnvironmentProviders;
43
+ /**
44
+ * Verifica si los emuladores están configurados.
45
+ *
46
+ * @param config - Configuración de Firebase
47
+ * @returns true si hay al menos un emulador configurado
48
+ */
49
+ export declare function hasEmulators(config: ValtechFirebaseConfig): boolean;