valtech-components 2.0.408 → 2.0.412
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 +39 -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 +184 -6
- 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 +5839 -862
- 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 +9 -10
- 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 +4 -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
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { TemplateRef } from '@angular/core';
|
|
2
|
+
import { HorizontalScrollMetadata } from './types';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* val-horizontal-scroll
|
|
6
|
+
*
|
|
7
|
+
* A generic horizontal scroll container that renders items using a provided template.
|
|
8
|
+
* Useful for carousels, galleries, or any horizontally scrollable content.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* <val-horizontal-scroll
|
|
12
|
+
* [items]="cards"
|
|
13
|
+
* [itemTemplate]="cardTemplate"
|
|
14
|
+
* [props]="{ gap: '16px', snapAlign: 'start' }"
|
|
15
|
+
* ></val-horizontal-scroll>
|
|
16
|
+
*
|
|
17
|
+
* <ng-template #cardTemplate let-item let-index="index">
|
|
18
|
+
* <div class="card">{{ item.title }}</div>
|
|
19
|
+
* </ng-template>
|
|
20
|
+
*
|
|
21
|
+
* @input items - Array of items to render
|
|
22
|
+
* @input itemTemplate - Template reference for rendering each item
|
|
23
|
+
* @input props - Optional configuration (gap, padding, showScrollbar, snapAlign)
|
|
24
|
+
*/
|
|
25
|
+
export declare class HorizontalScrollComponent<T = any> {
|
|
26
|
+
/**
|
|
27
|
+
* Array of items to render in the horizontal scroll.
|
|
28
|
+
*/
|
|
29
|
+
items: T[];
|
|
30
|
+
/**
|
|
31
|
+
* Template reference for rendering each item.
|
|
32
|
+
* The template receives the item as implicit context and index as 'index'.
|
|
33
|
+
*/
|
|
34
|
+
itemTemplate: TemplateRef<any>;
|
|
35
|
+
/**
|
|
36
|
+
* Optional configuration for the horizontal scroll container.
|
|
37
|
+
*/
|
|
38
|
+
props?: HorizontalScrollMetadata;
|
|
39
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<HorizontalScrollComponent<any>, never>;
|
|
40
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<HorizontalScrollComponent<any>, "val-horizontal-scroll", never, { "items": { "alias": "items"; "required": false; }; "itemTemplate": { "alias": "itemTemplate"; "required": false; }; "props": { "alias": "props"; "required": false; }; }, {}, never, never, true, never>;
|
|
41
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration for the horizontal scroll component.
|
|
3
|
+
*/
|
|
4
|
+
export interface HorizontalScrollMetadata {
|
|
5
|
+
/** Optional gap between items in pixels or CSS units. Default: '0px' */
|
|
6
|
+
gap?: string;
|
|
7
|
+
/** Optional padding for the scroll container. Default: '0px' */
|
|
8
|
+
padding?: string;
|
|
9
|
+
/** Whether to show the scrollbar. Default: false */
|
|
10
|
+
showScrollbar?: boolean;
|
|
11
|
+
/** Snap behavior for scroll items: 'none' | 'start' | 'center'. Default: 'none' */
|
|
12
|
+
snapAlign?: 'none' | 'start' | 'center';
|
|
13
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { RightsFooterMetadata } from './types';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* val-rights-footer
|
|
5
|
+
*
|
|
6
|
+
* A simple component that displays copyright text with dynamic year.
|
|
7
|
+
* Useful for footers where you need to show "© 2024 Company. All rights reserved."
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* <val-rights-footer></val-rights-footer>
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* <val-rights-footer
|
|
14
|
+
* [props]="{
|
|
15
|
+
* companyName: 'My Company',
|
|
16
|
+
* rightsText: 'All rights reserved.',
|
|
17
|
+
* color: 'medium',
|
|
18
|
+
* align: 'left'
|
|
19
|
+
* }"
|
|
20
|
+
* ></val-rights-footer>
|
|
21
|
+
*
|
|
22
|
+
* @input props - Optional configuration (companyName, rightsText, color, align)
|
|
23
|
+
*/
|
|
24
|
+
export declare class RightsFooterComponent {
|
|
25
|
+
/**
|
|
26
|
+
* Optional configuration for the rights footer.
|
|
27
|
+
*/
|
|
28
|
+
props?: RightsFooterMetadata;
|
|
29
|
+
/**
|
|
30
|
+
* Current year for copyright.
|
|
31
|
+
*/
|
|
32
|
+
currentYear: number;
|
|
33
|
+
/**
|
|
34
|
+
* Computed copyright text.
|
|
35
|
+
*/
|
|
36
|
+
get copyrightText(): string;
|
|
37
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RightsFooterComponent, never>;
|
|
38
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RightsFooterComponent, "val-rights-footer", never, { "props": { "alias": "props"; "required": false; }; }, {}, never, never, true, never>;
|
|
39
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration for the rights footer component.
|
|
3
|
+
*/
|
|
4
|
+
export interface RightsFooterMetadata {
|
|
5
|
+
/** Company name to display. Default: 'Valtech' */
|
|
6
|
+
companyName?: string;
|
|
7
|
+
/** Rights text. Default: 'Todos los derechos reservados.' */
|
|
8
|
+
rightsText?: string;
|
|
9
|
+
/** Text color. Default: 'dark' */
|
|
10
|
+
color?: 'primary' | 'secondary' | 'tertiary' | 'success' | 'warning' | 'danger' | 'dark' | 'light' | 'medium';
|
|
11
|
+
/** Text alignment. Default: 'center' */
|
|
12
|
+
align?: 'left' | 'center' | 'right';
|
|
13
|
+
}
|
|
@@ -1,8 +1,23 @@
|
|
|
1
1
|
import { OnInit } from '@angular/core';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { InputMetadata } from '../../types';
|
|
2
4
|
import * as i0 from "@angular/core";
|
|
3
5
|
export declare class CheckInputComponent implements OnInit {
|
|
4
|
-
|
|
6
|
+
private langService;
|
|
7
|
+
/**
|
|
8
|
+
* Input configuration object.
|
|
9
|
+
* @type {InputMetadata}
|
|
10
|
+
* @property control - The Angular FormControl for the checkbox.
|
|
11
|
+
* @property label - Static label text.
|
|
12
|
+
* @property contentKey - Key for reactive content from LangService.
|
|
13
|
+
* @property contentClass - Class name for reactive content lookup.
|
|
14
|
+
* @property contentFallback - Fallback text if content not found.
|
|
15
|
+
* @property labelPlacement - Position of label ('start' | 'end'). Default: 'end'.
|
|
16
|
+
*/
|
|
17
|
+
props: InputMetadata;
|
|
18
|
+
displayLabel$: Observable<string>;
|
|
5
19
|
ngOnInit(): void;
|
|
20
|
+
private setupDisplayLabel;
|
|
6
21
|
static ɵfac: i0.ɵɵFactoryDeclaration<CheckInputComponent, never>;
|
|
7
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<CheckInputComponent, "val-check-input", never, {}, {}, never, never, true, never>;
|
|
22
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CheckInputComponent, "val-check-input", never, { "props": { "alias": "props"; "required": false; }; }, {}, never, never, true, never>;
|
|
8
23
|
}
|
|
@@ -6,10 +6,9 @@ export declare class EmailInputComponent 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
|
*/
|
|
11
11
|
props: InputMetadata;
|
|
12
|
-
constructor();
|
|
13
12
|
ngOnInit(): void;
|
|
14
13
|
static ɵfac: i0.ɵɵFactoryDeclaration<EmailInputComponent, never>;
|
|
15
14
|
static ɵcmp: i0.ɵɵComponentDeclaration<EmailInputComponent, "val-email-input", never, { "props": { "alias": "props"; "required": false; }; }, {}, never, never, true, never>;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import { LanguageSelectorMetadata } from '../language-selector/types';
|
|
3
|
+
import { FooterLinksMetadata } from './types';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* val-footer-links
|
|
7
|
+
*
|
|
8
|
+
* A responsive footer component with two columns of links, social media icons,
|
|
9
|
+
* logo, and optional language selector.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* <val-footer-links
|
|
13
|
+
* [props]="{
|
|
14
|
+
* leftLinks: { title: 'Company', links: [...] },
|
|
15
|
+
* rightLinks: { title: 'Resources', links: [...] },
|
|
16
|
+
* logo: 'logo.svg',
|
|
17
|
+
* logoRoute: '/',
|
|
18
|
+
* socialLinks: [
|
|
19
|
+
* { icon: 'logo-facebook', url: 'https://facebook.com', name: 'Facebook' }
|
|
20
|
+
* ]
|
|
21
|
+
* }"
|
|
22
|
+
* ></val-footer-links>
|
|
23
|
+
*
|
|
24
|
+
* @input props - Footer configuration
|
|
25
|
+
* @output logoClick - Emits when logo is clicked
|
|
26
|
+
*/
|
|
27
|
+
export declare class FooterLinksComponent {
|
|
28
|
+
private nav;
|
|
29
|
+
/**
|
|
30
|
+
* Footer configuration.
|
|
31
|
+
*/
|
|
32
|
+
props: FooterLinksMetadata;
|
|
33
|
+
/**
|
|
34
|
+
* Emits when the logo is clicked.
|
|
35
|
+
*/
|
|
36
|
+
logoClick: EventEmitter<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Default language selector configuration.
|
|
39
|
+
*/
|
|
40
|
+
get languageSelectorConfig(): LanguageSelectorMetadata;
|
|
41
|
+
/**
|
|
42
|
+
* Handles logo click - navigates if route provided, otherwise emits event.
|
|
43
|
+
*/
|
|
44
|
+
onLogoClick(): void;
|
|
45
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FooterLinksComponent, never>;
|
|
46
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FooterLinksComponent, "val-footer-links", never, { "props": { "alias": "props"; "required": false; }; }, { "logoClick": "logoClick"; }, never, never, true, never>;
|
|
47
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { DividerMetadata } from '../../atoms/divider/types';
|
|
2
|
+
import { LanguageSelectorMetadata } from '../language-selector/types';
|
|
3
|
+
import { LinkCakeMetadata } from '../links-cake/types';
|
|
4
|
+
/**
|
|
5
|
+
* Social link configuration.
|
|
6
|
+
*/
|
|
7
|
+
export interface SocialLinkMetadata {
|
|
8
|
+
/** Ionicon name (e.g., 'logo-facebook', 'logo-twitter') */
|
|
9
|
+
icon: string;
|
|
10
|
+
/** URL to the social profile */
|
|
11
|
+
url: string;
|
|
12
|
+
/** Accessible name for the link */
|
|
13
|
+
name: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Configuration for the footer links component.
|
|
17
|
+
*/
|
|
18
|
+
export interface FooterLinksMetadata {
|
|
19
|
+
/** Left column links configuration */
|
|
20
|
+
leftLinks: LinkCakeMetadata;
|
|
21
|
+
/** Right column links configuration */
|
|
22
|
+
rightLinks: LinkCakeMetadata;
|
|
23
|
+
/** Optional logo URL */
|
|
24
|
+
logo?: string;
|
|
25
|
+
/** Logo alt text. Default: 'Logo' */
|
|
26
|
+
logoAlt?: string;
|
|
27
|
+
/** Route to navigate when logo is clicked */
|
|
28
|
+
logoRoute?: string;
|
|
29
|
+
/** Optional divider configuration */
|
|
30
|
+
divider?: DividerMetadata;
|
|
31
|
+
/** Social media links */
|
|
32
|
+
socialLinks?: SocialLinkMetadata[];
|
|
33
|
+
/** Language selector configuration. Set to false to hide. */
|
|
34
|
+
languageSelector?: LanguageSelectorMetadata | false;
|
|
35
|
+
/** Icon color for social links. Default: 'dark' */
|
|
36
|
+
socialIconColor?: string;
|
|
37
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import { Router } from '@angular/router';
|
|
3
|
+
import { IonAccordionGroup, MenuController } from '@ionic/angular/standalone';
|
|
4
|
+
import { LinksAccordionMetadata } from './types';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
/**
|
|
7
|
+
* val-links-accordion
|
|
8
|
+
*
|
|
9
|
+
* A hierarchical navigation component using Ionic accordions.
|
|
10
|
+
* Supports sections with optional sub-links and automatic menu closing.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* <val-links-accordion
|
|
14
|
+
* [props]="{
|
|
15
|
+
* sections: [
|
|
16
|
+
* { title: 'Home', route: ['/'] },
|
|
17
|
+
* { title: 'Products', links: [
|
|
18
|
+
* { text: 'Catalog', route: ['/products'] },
|
|
19
|
+
* { text: 'New Arrivals', route: ['/products', 'new'] }
|
|
20
|
+
* ]}
|
|
21
|
+
* ]
|
|
22
|
+
* }"
|
|
23
|
+
* (navigate)="onNavigate($event)"
|
|
24
|
+
* ></val-links-accordion>
|
|
25
|
+
*
|
|
26
|
+
* @input props - Accordion configuration
|
|
27
|
+
* @output navigate - Emits route when a link is clicked
|
|
28
|
+
*/
|
|
29
|
+
export declare class LinksAccordionComponent {
|
|
30
|
+
private router;
|
|
31
|
+
private menuCtrl;
|
|
32
|
+
/**
|
|
33
|
+
* Accordion configuration.
|
|
34
|
+
*/
|
|
35
|
+
props: LinksAccordionMetadata;
|
|
36
|
+
/**
|
|
37
|
+
* Emits the route when a link is clicked.
|
|
38
|
+
*/
|
|
39
|
+
navigate: EventEmitter<string[]>;
|
|
40
|
+
accordionGroup: IonAccordionGroup;
|
|
41
|
+
constructor(router: Router, menuCtrl: MenuController);
|
|
42
|
+
/**
|
|
43
|
+
* Handles link click - closes accordion/menu and navigates.
|
|
44
|
+
*/
|
|
45
|
+
onLinkClick(route: string[], event?: Event): Promise<void>;
|
|
46
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LinksAccordionComponent, never>;
|
|
47
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<LinksAccordionComponent, "val-links-accordion", never, { "props": { "alias": "props"; "required": false; }; }, { "navigate": "navigate"; }, never, never, true, never>;
|
|
48
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A link item within an accordion section.
|
|
3
|
+
*/
|
|
4
|
+
export interface LinksAccordionLink {
|
|
5
|
+
/** Display text for the link */
|
|
6
|
+
text: string;
|
|
7
|
+
/** Route segments for navigation */
|
|
8
|
+
route: string[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* An accordion section with optional sub-links.
|
|
12
|
+
*/
|
|
13
|
+
export interface LinksAccordionSection {
|
|
14
|
+
/** Section title */
|
|
15
|
+
title: string;
|
|
16
|
+
/** Optional route if the section itself is clickable */
|
|
17
|
+
route?: string[];
|
|
18
|
+
/** Optional sub-links within this section */
|
|
19
|
+
links?: LinksAccordionLink[];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Configuration for the links accordion component.
|
|
23
|
+
*/
|
|
24
|
+
export interface LinksAccordionMetadata {
|
|
25
|
+
/** Array of accordion sections */
|
|
26
|
+
sections: LinksAccordionSection[];
|
|
27
|
+
/** Background color for the accordion. Default: 'var(--ion-background-color)' */
|
|
28
|
+
backgroundColor?: string;
|
|
29
|
+
/** Whether to close the menu when a link is clicked. Default: true */
|
|
30
|
+
closeMenuOnClick?: boolean;
|
|
31
|
+
/** Whether to close the accordion when navigating. Default: true */
|
|
32
|
+
closeAccordionOnClick?: boolean;
|
|
33
|
+
}
|
|
@@ -7,7 +7,7 @@ export declare class PasswordInputComponent implements OnInit {
|
|
|
7
7
|
* Input configuration object.
|
|
8
8
|
* @type {InputMetadata}
|
|
9
9
|
* @property control - The Angular FormControl for the input.
|
|
10
|
-
* @property placeholder - The placeholder text.
|
|
10
|
+
* @property placeholder - The placeholder text. For i18n, use langService.getText() to get translated value.
|
|
11
11
|
*/
|
|
12
12
|
props: InputMetadata;
|
|
13
13
|
hidePassword: boolean;
|
|
@@ -1,23 +1,22 @@
|
|
|
1
1
|
import { EventEmitter, OnInit } from '@angular/core';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
2
3
|
import { PrompterMetadata } from './types';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
export declare class PrompterComponent implements OnInit {
|
|
6
|
+
private langService;
|
|
7
|
+
/** Observable for reactive content - follows val-text/val-button pattern */
|
|
8
|
+
displayContent$: Observable<string>;
|
|
5
9
|
/**
|
|
6
10
|
* Prompter configuration object.
|
|
7
|
-
* @type {PrompterMetadata}
|
|
8
|
-
* @property content - The main text content.
|
|
9
|
-
* @property buttons - Array of button configurations (optional).
|
|
10
|
-
* @property hrefs - Array of link configurations (optional).
|
|
11
|
-
* @property color - The background color of the box.
|
|
12
|
-
* @property size - The size of the text and box.
|
|
13
|
-
* @property bordered - Whether the box has a border.
|
|
14
|
-
* @property padding - Custom padding for the box.
|
|
15
|
-
* @property teleprompter - Whether to use teleprompter style (optional).
|
|
16
11
|
*/
|
|
17
12
|
props: PrompterMetadata;
|
|
18
13
|
onClick: EventEmitter<string>;
|
|
19
|
-
constructor();
|
|
20
14
|
ngOnInit(): void;
|
|
15
|
+
/**
|
|
16
|
+
* Set up content Observable.
|
|
17
|
+
* Follows the same pattern as val-text and val-button for consistency.
|
|
18
|
+
*/
|
|
19
|
+
private setupContent;
|
|
21
20
|
clickHandler(token?: string): void;
|
|
22
21
|
static ɵfac: i0.ɵɵFactoryDeclaration<PrompterComponent, never>;
|
|
23
22
|
static ɵcmp: i0.ɵɵComponentDeclaration<PrompterComponent, "val-prompter", never, { "props": { "alias": "props"; "required": false; }; }, { "onClick": "onClick"; }, never, never, true, never>;
|
|
@@ -7,11 +7,13 @@ import { ButtonMetadata } from '../../types';
|
|
|
7
7
|
* @property teleprompter - Whether to use teleprompter style.
|
|
8
8
|
* @property bordered - Whether the box has a border.
|
|
9
9
|
* @property color - The background color of the box (optional).
|
|
10
|
-
* @property content - The main text content.
|
|
10
|
+
* @property content - The main text content (used as fallback if i18n keys provided).
|
|
11
11
|
* @property size - The size of the text and box ('small' | 'medium' | 'large' | 'xlarge').
|
|
12
12
|
* @property buttons - Array of button configurations (optional).
|
|
13
13
|
* @property hrefs - Array of link configurations (optional).
|
|
14
14
|
* @property padding - Custom padding for the box (optional).
|
|
15
|
+
* @property contentClass - i18n content class name (optional, for reactive translations).
|
|
16
|
+
* @property contentKey - i18n content key (optional, for reactive translations).
|
|
15
17
|
*/
|
|
16
18
|
export type PrompterMetadata = {
|
|
17
19
|
teleprompter: boolean;
|
|
@@ -22,4 +24,8 @@ export type PrompterMetadata = {
|
|
|
22
24
|
buttons?: ButtonMetadata[];
|
|
23
25
|
hrefs?: HrefMetadata[];
|
|
24
26
|
padding?: string;
|
|
27
|
+
/** i18n content class name for reactive translations */
|
|
28
|
+
contentClass?: string;
|
|
29
|
+
/** i18n content key for reactive translations */
|
|
30
|
+
contentKey?: string;
|
|
25
31
|
};
|
|
@@ -6,10 +6,9 @@ export declare class RadioInputComponent implements OnInit {
|
|
|
6
6
|
* Input configuration object.
|
|
7
7
|
* @type {InputMetadata}
|
|
8
8
|
* @property control - The Angular FormControl for the radio input.
|
|
9
|
-
* @property options - The available options for the radio group.
|
|
9
|
+
* @property options - The available options for the radio group. For i18n, translate names before passing.
|
|
10
10
|
*/
|
|
11
11
|
props: InputMetadata;
|
|
12
|
-
constructor();
|
|
13
12
|
ngOnInit(): void;
|
|
14
13
|
static ɵfac: i0.ɵɵFactoryDeclaration<RadioInputComponent, never>;
|
|
15
14
|
static ɵcmp: i0.ɵɵComponentDeclaration<RadioInputComponent, "val-radio-input", never, { "props": { "alias": "props"; "required": false; }; }, {}, never, never, true, never>;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { RecapCardMetadata, RecapCardShape } from './types';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* val-recap-card
|
|
5
|
+
*
|
|
6
|
+
* A decorative card component with geometric shapes, title, and link.
|
|
7
|
+
* Useful for recap sections, feature highlights, or promotional content.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* <val-recap-card
|
|
11
|
+
* [props]="{
|
|
12
|
+
* title: { title: 'Feature Title', subtitle: 'Subtitle here' },
|
|
13
|
+
* link: { text: 'Learn more', url: '/features' },
|
|
14
|
+
* color: 'primary',
|
|
15
|
+
* shapes: [
|
|
16
|
+
* { color: '#ffffff33', style: { top: '-20px', right: '-20px', width: '100px', height: '100px' } }
|
|
17
|
+
* ]
|
|
18
|
+
* }"
|
|
19
|
+
* ></val-recap-card>
|
|
20
|
+
*
|
|
21
|
+
* @input props - Card configuration (title, link, shapes, color)
|
|
22
|
+
*/
|
|
23
|
+
export declare class RecapCardComponent {
|
|
24
|
+
/**
|
|
25
|
+
* Card configuration.
|
|
26
|
+
*/
|
|
27
|
+
props: RecapCardMetadata;
|
|
28
|
+
/**
|
|
29
|
+
* Merges shape color with additional styles.
|
|
30
|
+
*/
|
|
31
|
+
mergeShapeStyle(shape: RecapCardShape): {
|
|
32
|
+
[key: string]: string | number;
|
|
33
|
+
};
|
|
34
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RecapCardComponent, never>;
|
|
35
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RecapCardComponent, "val-recap-card", never, { "props": { "alias": "props"; "required": false; }; }, {}, never, never, true, never>;
|
|
36
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { LinkMetadata } from '../link/types';
|
|
2
|
+
import { TitleBlockMetada } from '../title-block/types';
|
|
3
|
+
/**
|
|
4
|
+
* Configuration for a decorative shape within the recap card.
|
|
5
|
+
*/
|
|
6
|
+
export interface RecapCardShape {
|
|
7
|
+
/** Background color of the shape */
|
|
8
|
+
color: string;
|
|
9
|
+
/** Additional CSS styles (position, size, etc.) */
|
|
10
|
+
style?: {
|
|
11
|
+
[key: string]: string | number;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Configuration for the recap card component.
|
|
16
|
+
*/
|
|
17
|
+
export interface RecapCardMetadata {
|
|
18
|
+
/** Title block configuration */
|
|
19
|
+
title: TitleBlockMetada;
|
|
20
|
+
/** Link configuration */
|
|
21
|
+
link: LinkMetadata;
|
|
22
|
+
/** Decorative shapes to display behind content */
|
|
23
|
+
shapes?: RecapCardShape[];
|
|
24
|
+
/** Background color of the card (Ionic color) */
|
|
25
|
+
color?: string;
|
|
26
|
+
/** Minimum height of the card. Default: '400px' */
|
|
27
|
+
minHeight?: string;
|
|
28
|
+
/** Width of the card. Default: '280px' */
|
|
29
|
+
width?: string;
|
|
30
|
+
}
|
|
@@ -2,6 +2,7 @@ import { OnInit } from '@angular/core';
|
|
|
2
2
|
import { InputMetadata } from '../../types';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export declare class SearchSelectorComponent implements OnInit {
|
|
5
|
+
private langService;
|
|
5
6
|
/**
|
|
6
7
|
* Input configuration object.
|
|
7
8
|
* @type {InputMetadata}
|
|
@@ -9,6 +10,9 @@ export declare class SearchSelectorComponent implements OnInit {
|
|
|
9
10
|
* @property label - The label for the select.
|
|
10
11
|
* @property options - The available options for the select.
|
|
11
12
|
* @property placeholder - The placeholder text.
|
|
13
|
+
* @property modalHeader - Custom header text for the modal (optional, uses label if not provided).
|
|
14
|
+
* @property cancelText - Custom cancel button text (optional, uses i18n default).
|
|
15
|
+
* @property okText - Custom OK button text (optional, uses i18n default).
|
|
12
16
|
*/
|
|
13
17
|
props: InputMetadata;
|
|
14
18
|
customModalOptions: {
|
|
@@ -16,7 +20,8 @@ export declare class SearchSelectorComponent implements OnInit {
|
|
|
16
20
|
breakpoints: number[];
|
|
17
21
|
initialBreakpoint: number;
|
|
18
22
|
};
|
|
19
|
-
|
|
23
|
+
cancelText: string;
|
|
24
|
+
okText: string;
|
|
20
25
|
ngOnInit(): void;
|
|
21
26
|
static ɵfac: i0.ɵɵFactoryDeclaration<SearchSelectorComponent, never>;
|
|
22
27
|
static ɵcmp: i0.ɵɵComponentDeclaration<SearchSelectorComponent, "val-select-input", never, { "props": { "alias": "props"; "required": false; }; }, {}, never, never, true, never>;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { AfterViewInit, ElementRef, OnChanges, OnDestroy, SimpleChanges, TemplateRef } from '@angular/core';
|
|
2
|
+
import Swiper from 'swiper';
|
|
3
|
+
import { SwipeCarouselMetadata } from './types';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* val-swipe-carousel
|
|
7
|
+
*
|
|
8
|
+
* A powerful carousel component built on Swiper with multiple transition effects,
|
|
9
|
+
* navigation, pagination, and responsive breakpoints.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* <val-swipe-carousel
|
|
13
|
+
* [items]="slides"
|
|
14
|
+
* [itemTemplate]="slideTemplate"
|
|
15
|
+
* [props]="{ effect: 'coverflow', pagination: true }"
|
|
16
|
+
* ></val-swipe-carousel>
|
|
17
|
+
*
|
|
18
|
+
* <ng-template #slideTemplate let-item>
|
|
19
|
+
* <div class="slide-content">{{ item.title }}</div>
|
|
20
|
+
* </ng-template>
|
|
21
|
+
*
|
|
22
|
+
* @input items - Array of items to render as slides
|
|
23
|
+
* @input itemTemplate - Template reference for rendering each slide
|
|
24
|
+
* @input props - Configuration options (effect, pagination, navigation, etc.)
|
|
25
|
+
*/
|
|
26
|
+
export declare class SwipeCarouselComponent<T = any> implements AfterViewInit, OnChanges, OnDestroy {
|
|
27
|
+
/**
|
|
28
|
+
* Array of items to render as slides.
|
|
29
|
+
*/
|
|
30
|
+
items: T[];
|
|
31
|
+
/**
|
|
32
|
+
* Template reference for rendering each slide.
|
|
33
|
+
* The template receives the item as implicit context and index as 'index'.
|
|
34
|
+
*/
|
|
35
|
+
itemTemplate: TemplateRef<any>;
|
|
36
|
+
/**
|
|
37
|
+
* Configuration options for the carousel.
|
|
38
|
+
*/
|
|
39
|
+
props?: SwipeCarouselMetadata;
|
|
40
|
+
swiperContainer: ElementRef;
|
|
41
|
+
private swiper?;
|
|
42
|
+
private defaultOptions;
|
|
43
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
44
|
+
ngAfterViewInit(): void;
|
|
45
|
+
ngOnDestroy(): void;
|
|
46
|
+
private initSwiper;
|
|
47
|
+
private destroySwiper;
|
|
48
|
+
/**
|
|
49
|
+
* Navigate to previous slide.
|
|
50
|
+
*/
|
|
51
|
+
slidePrev(): void;
|
|
52
|
+
/**
|
|
53
|
+
* Navigate to next slide.
|
|
54
|
+
*/
|
|
55
|
+
slideNext(): void;
|
|
56
|
+
/**
|
|
57
|
+
* Navigate to specific slide by index.
|
|
58
|
+
*/
|
|
59
|
+
slideTo(index: number): void;
|
|
60
|
+
/**
|
|
61
|
+
* Get the Swiper instance for advanced control.
|
|
62
|
+
*/
|
|
63
|
+
getSwiperInstance(): Swiper | undefined;
|
|
64
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SwipeCarouselComponent<any>, never>;
|
|
65
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SwipeCarouselComponent<any>, "val-swipe-carousel", never, { "items": { "alias": "items"; "required": false; }; "itemTemplate": { "alias": "itemTemplate"; "required": false; }; "props": { "alias": "props"; "required": false; }; }, {}, never, never, true, never>;
|
|
66
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration options for the Swiper carousel.
|
|
3
|
+
*/
|
|
4
|
+
export interface SwipeCarouselMetadata {
|
|
5
|
+
/** Number of slides per view. Default: 1 */
|
|
6
|
+
slidesPerView?: number | 'auto';
|
|
7
|
+
/** Space between slides in pixels. Default: 10 */
|
|
8
|
+
spaceBetween?: number;
|
|
9
|
+
/** Enable infinite loop. Default: true */
|
|
10
|
+
loop?: boolean;
|
|
11
|
+
/** Center active slide. Default: true */
|
|
12
|
+
centeredSlides?: boolean;
|
|
13
|
+
/** Transition effect. Default: 'slide' */
|
|
14
|
+
effect?: 'slide' | 'fade' | 'cube' | 'coverflow' | 'flip';
|
|
15
|
+
/** Autoplay configuration. Default: false */
|
|
16
|
+
autoplay?: boolean | {
|
|
17
|
+
delay: number;
|
|
18
|
+
disableOnInteraction: boolean;
|
|
19
|
+
};
|
|
20
|
+
/** Responsive breakpoints */
|
|
21
|
+
breakpoints?: {
|
|
22
|
+
[width: number]: {
|
|
23
|
+
slidesPerView?: number | 'auto';
|
|
24
|
+
spaceBetween?: number;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
/** Show pagination bullets. Default: true */
|
|
28
|
+
pagination?: boolean;
|
|
29
|
+
/** Show navigation arrows. Default: true */
|
|
30
|
+
navigation?: boolean;
|
|
31
|
+
/** Apply scale effect to inactive slides. Default: true */
|
|
32
|
+
scaleEffect?: boolean;
|
|
33
|
+
/** Padding for the carousel wrapper. Default: '0 32px' */
|
|
34
|
+
wrapperPadding?: string;
|
|
35
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { TestimonialCardMetadata } from './types';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* val-testimonial-card
|
|
5
|
+
*
|
|
6
|
+
* A card component for testimonials with image, title, link, and action buttons.
|
|
7
|
+
* Supports dynamic background gradients and dark mode overlay.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* <val-testimonial-card
|
|
11
|
+
* [props]="{
|
|
12
|
+
* title: { title: 'John Doe', subtitle: 'CEO, Company' },
|
|
13
|
+
* link: { text: 'Read full story', url: '#' },
|
|
14
|
+
* image: { src: 'avatar.jpg', alt: 'John Doe' },
|
|
15
|
+
* color: 'primary'
|
|
16
|
+
* }"
|
|
17
|
+
* ></val-testimonial-card>
|
|
18
|
+
*
|
|
19
|
+
* @input props - Card configuration (title, link, image, color, background, actions)
|
|
20
|
+
*/
|
|
21
|
+
export declare class TestimonialCardComponent {
|
|
22
|
+
private theme;
|
|
23
|
+
/**
|
|
24
|
+
* Card configuration.
|
|
25
|
+
*/
|
|
26
|
+
props: TestimonialCardMetadata;
|
|
27
|
+
/**
|
|
28
|
+
* Gets the effective color/background.
|
|
29
|
+
* Supports: Ionic color names (primary, secondary), CSS variables (--my-color),
|
|
30
|
+
* direct colors (#fff, rgb()), or url() for images.
|
|
31
|
+
*/
|
|
32
|
+
private getColor;
|
|
33
|
+
/**
|
|
34
|
+
* Generates dynamic card styles with overlay based on theme.
|
|
35
|
+
*/
|
|
36
|
+
cardStyle(): {
|
|
37
|
+
[key: string]: string;
|
|
38
|
+
};
|
|
39
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TestimonialCardComponent, never>;
|
|
40
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TestimonialCardComponent, "val-testimonial-card", never, { "props": { "alias": "props"; "required": false; }; }, {}, never, never, true, never>;
|
|
41
|
+
}
|