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.
- package/esm2022/lib/components/atoms/horizontal-scroll/horizontal-scroll.component.mjs +82 -0
- package/esm2022/lib/components/atoms/horizontal-scroll/types.mjs +2 -0
- package/esm2022/lib/components/atoms/rights-footer/rights-footer.component.mjs +82 -0
- package/esm2022/lib/components/atoms/rights-footer/types.mjs +2 -0
- package/esm2022/lib/components/molecules/check-input/check-input.component.mjs +55 -11
- package/esm2022/lib/components/molecules/email-input/email-input.component.mjs +13 -4
- package/esm2022/lib/components/molecules/expandable-text/expandable-text.component.mjs +27 -23
- package/esm2022/lib/components/molecules/footer-links/footer-links.component.mjs +277 -0
- package/esm2022/lib/components/molecules/footer-links/types.mjs +2 -0
- package/esm2022/lib/components/molecules/links-accordion/links-accordion.component.mjs +157 -0
- package/esm2022/lib/components/molecules/links-accordion/types.mjs +2 -0
- package/esm2022/lib/components/molecules/password-input/password-input.component.mjs +12 -2
- package/esm2022/lib/components/molecules/prompter/prompter.component.mjs +21 -9
- package/esm2022/lib/components/molecules/prompter/types.mjs +1 -1
- package/esm2022/lib/components/molecules/radio-input/radio-input.component.mjs +13 -4
- package/esm2022/lib/components/molecules/recap-card/recap-card.component.mjs +78 -0
- package/esm2022/lib/components/molecules/recap-card/types.mjs +2 -0
- package/esm2022/lib/components/molecules/select-input/select-input.component.mjs +31 -14
- package/esm2022/lib/components/molecules/swipe-carousel/swipe-carousel.component.mjs +206 -0
- package/esm2022/lib/components/molecules/swipe-carousel/types.mjs +2 -0
- package/esm2022/lib/components/molecules/testimonial-card/testimonial-card.component.mjs +138 -0
- package/esm2022/lib/components/molecules/testimonial-card/types.mjs +2 -0
- package/esm2022/lib/components/molecules/text-input/text-input.component.mjs +14 -4
- package/esm2022/lib/components/organisms/cards-carousel/cards-carousel.component.mjs +61 -0
- package/esm2022/lib/components/organisms/cards-carousel/types.mjs +2 -0
- package/esm2022/lib/components/organisms/company-footer/company-footer.component.mjs +72 -0
- package/esm2022/lib/components/organisms/company-footer/types.mjs +2 -0
- package/esm2022/lib/components/organisms/data-table/data-table.component.mjs +175 -3
- package/esm2022/lib/components/organisms/data-table/types.mjs +1 -1
- package/esm2022/lib/components/organisms/form/form.component.mjs +2 -2
- package/esm2022/lib/components/organisms/fun-header/fun-header.component.mjs +225 -0
- package/esm2022/lib/components/organisms/fun-header/types.mjs +2 -0
- package/esm2022/lib/components/organisms/menu/menu.component.mjs +197 -0
- package/esm2022/lib/components/organisms/menu/types.mjs +2 -0
- package/esm2022/lib/components/organisms/testimonial-carousel/testimonial-carousel.component.mjs +72 -0
- package/esm2022/lib/components/organisms/testimonial-carousel/types.mjs +2 -0
- package/esm2022/lib/components/templates/page-content/page-content.component.mjs +156 -0
- package/esm2022/lib/components/templates/page-content/types.mjs +2 -0
- package/esm2022/lib/components/templates/page-template/page-template.component.mjs +181 -0
- package/esm2022/lib/components/templates/page-template/types.mjs +2 -0
- package/esm2022/lib/components/templates/page-wrapper/page-wrapper.component.mjs +195 -0
- package/esm2022/lib/components/templates/page-wrapper/types.mjs +2 -0
- package/esm2022/lib/components/types.mjs +1 -1
- package/esm2022/lib/services/firebase/config.mjs +103 -0
- package/esm2022/lib/services/firebase/firebase.service.mjs +285 -0
- package/esm2022/lib/services/firebase/firestore-collection.mjs +266 -0
- package/esm2022/lib/services/firebase/firestore.service.mjs +508 -0
- package/esm2022/lib/services/firebase/index.mjs +46 -0
- package/esm2022/lib/services/firebase/messaging.service.mjs +503 -0
- package/esm2022/lib/services/firebase/storage.service.mjs +421 -0
- package/esm2022/lib/services/firebase/types.mjs +8 -0
- package/esm2022/lib/services/firebase/utils/path-builder.mjs +195 -0
- package/esm2022/lib/services/firebase/utils/query-builder.mjs +302 -0
- package/esm2022/public-api.mjs +33 -1
- package/fesm2022/valtech-components.mjs +5821 -868
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/atoms/horizontal-scroll/horizontal-scroll.component.d.ts +41 -0
- package/lib/components/atoms/horizontal-scroll/types.d.ts +13 -0
- package/lib/components/atoms/rights-footer/rights-footer.component.d.ts +39 -0
- package/lib/components/atoms/rights-footer/types.d.ts +13 -0
- package/lib/components/molecules/check-input/check-input.component.d.ts +17 -2
- package/lib/components/molecules/email-input/email-input.component.d.ts +1 -2
- package/lib/components/molecules/footer-links/footer-links.component.d.ts +47 -0
- package/lib/components/molecules/footer-links/types.d.ts +37 -0
- package/lib/components/molecules/links-accordion/links-accordion.component.d.ts +48 -0
- package/lib/components/molecules/links-accordion/types.d.ts +33 -0
- package/lib/components/molecules/password-input/password-input.component.d.ts +1 -1
- package/lib/components/molecules/prompter/prompter.component.d.ts +8 -1
- package/lib/components/molecules/prompter/types.d.ts +7 -1
- package/lib/components/molecules/radio-input/radio-input.component.d.ts +1 -2
- package/lib/components/molecules/recap-card/recap-card.component.d.ts +36 -0
- package/lib/components/molecules/recap-card/types.d.ts +30 -0
- package/lib/components/molecules/select-input/select-input.component.d.ts +6 -1
- package/lib/components/molecules/swipe-carousel/swipe-carousel.component.d.ts +66 -0
- package/lib/components/molecules/swipe-carousel/types.d.ts +35 -0
- package/lib/components/molecules/testimonial-card/testimonial-card.component.d.ts +41 -0
- package/lib/components/molecules/testimonial-card/types.d.ts +25 -0
- package/lib/components/molecules/text-input/text-input.component.d.ts +13 -4
- package/lib/components/organisms/cards-carousel/cards-carousel.component.d.ts +30 -0
- package/lib/components/organisms/cards-carousel/types.d.ts +11 -0
- package/lib/components/organisms/company-footer/company-footer.component.d.ts +32 -0
- package/lib/components/organisms/company-footer/types.d.ts +15 -0
- package/lib/components/organisms/data-table/data-table.component.d.ts +1 -1
- package/lib/components/organisms/data-table/types.d.ts +6 -0
- package/lib/components/organisms/fun-header/fun-header.component.d.ts +72 -0
- package/lib/components/organisms/fun-header/types.d.ts +28 -0
- package/lib/components/organisms/menu/menu.component.d.ts +39 -0
- package/lib/components/organisms/menu/types.d.ts +23 -0
- package/lib/components/organisms/testimonial-carousel/testimonial-carousel.component.d.ts +33 -0
- package/lib/components/organisms/testimonial-carousel/types.d.ts +8 -0
- package/lib/components/templates/page-content/page-content.component.d.ts +55 -0
- package/lib/components/templates/page-content/types.d.ts +14 -0
- package/lib/components/templates/page-template/page-template.component.d.ts +49 -0
- package/lib/components/templates/page-template/types.d.ts +17 -0
- package/lib/components/templates/page-wrapper/page-wrapper.component.d.ts +61 -0
- package/lib/components/templates/page-wrapper/types.d.ts +19 -0
- package/lib/components/types.d.ts +14 -0
- package/lib/services/firebase/config.d.ts +49 -0
- package/lib/services/firebase/firebase.service.d.ts +140 -0
- package/lib/services/firebase/firestore-collection.d.ts +195 -0
- package/lib/services/firebase/firestore.service.d.ts +303 -0
- package/lib/services/firebase/index.d.ts +38 -0
- package/lib/services/firebase/messaging.service.d.ts +254 -0
- package/lib/services/firebase/storage.service.d.ts +204 -0
- package/lib/services/firebase/types.d.ts +279 -0
- package/lib/services/firebase/utils/path-builder.d.ts +132 -0
- package/lib/services/firebase/utils/query-builder.d.ts +210 -0
- package/package.json +3 -1
- 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'
|
|
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,
|
|
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;
|