valtech-components 4.0.1029 → 4.0.1031

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 (31) hide show
  1. package/esm2022/lib/components/atoms/avatar/avatar.component.mjs +7 -9
  2. package/esm2022/lib/components/atoms/progress-bar/progress-bar.component.mjs +13 -12
  3. package/esm2022/lib/components/molecules/action-card/action-card.component.mjs +92 -36
  4. package/esm2022/lib/components/molecules/action-card/types.mjs +1 -1
  5. package/esm2022/lib/components/molecules/card/card.component.mjs +56 -28
  6. package/esm2022/lib/components/molecules/comment/comment.component.mjs +1 -1
  7. package/esm2022/lib/components/molecules/progress-status/progress-status.component.mjs +2 -2
  8. package/esm2022/lib/components/molecules/stats-card/stats-card.component.mjs +22 -10
  9. package/esm2022/lib/components/organisms/about-view/about-view.component.mjs +2 -2
  10. package/esm2022/lib/components/organisms/attachment-uploader/attachment-uploader.component.mjs +26 -5
  11. package/esm2022/lib/components/organisms/attachment-uploader/types.mjs +1 -1
  12. package/esm2022/lib/components/organisms/comment-section/comment-section.component.mjs +2 -2
  13. package/esm2022/lib/components/organisms/security-view/security-view.component.mjs +2 -2
  14. package/esm2022/lib/components/organisms/settings-hub/settings-hub.component.mjs +2 -2
  15. package/esm2022/lib/components/organisms/settings-hub/settings-sections.mjs +2 -11
  16. package/esm2022/lib/components/organisms/wizard/wizard-footer/wizard-footer.component.mjs +2 -2
  17. package/esm2022/lib/services/i18n/default-content.mjs +3 -1
  18. package/esm2022/lib/version.mjs +2 -2
  19. package/fesm2022/valtech-components.mjs +220 -111
  20. package/fesm2022/valtech-components.mjs.map +1 -1
  21. package/lib/components/atoms/avatar/avatar.component.d.ts +2 -2
  22. package/lib/components/atoms/progress-bar/progress-bar.component.d.ts +2 -1
  23. package/lib/components/molecules/action-card/action-card.component.d.ts +28 -7
  24. package/lib/components/molecules/action-card/types.d.ts +4 -1
  25. package/lib/components/molecules/card/card.component.d.ts +2 -2
  26. package/lib/components/molecules/stats-card/stats-card.component.d.ts +3 -1
  27. package/lib/components/organisms/attachment-uploader/attachment-uploader.component.d.ts +5 -2
  28. package/lib/components/organisms/attachment-uploader/types.d.ts +6 -0
  29. package/lib/components/organisms/settings-hub/settings-sections.d.ts +1 -1
  30. package/lib/version.d.ts +1 -1
  31. package/package.json +1 -1
@@ -8,7 +8,7 @@ export declare class AvatarComponent implements OnInit, OnChanges {
8
8
  * that can be registered at app level via provideValtechPresets().
9
9
  *
10
10
  * @example
11
- * <val-avatar preset="profile" [props]="{ image: 'url' }"></val-avatar>
11
+ * <vds-avatar preset="profile" [props]="{ image: 'url' }"></vds-avatar>
12
12
  */
13
13
  preset?: string;
14
14
  /**
@@ -32,5 +32,5 @@ export declare class AvatarComponent implements OnInit, OnChanges {
32
32
  private resolveProps;
33
33
  onClickHandler(): void;
34
34
  static ɵfac: i0.ɵɵFactoryDeclaration<AvatarComponent, never>;
35
- static ɵcmp: i0.ɵɵComponentDeclaration<AvatarComponent, "val-avatar", never, { "preset": { "alias": "preset"; "required": false; }; "props": { "alias": "props"; "required": false; }; }, { "onClick": "onClick"; }, never, never, true, never>;
35
+ static ɵcmp: i0.ɵɵComponentDeclaration<AvatarComponent, "val-avatar, vds-avatar", never, { "preset": { "alias": "preset"; "required": false; }; "props": { "alias": "props"; "required": false; }; }, { "onClick": "onClick"; }, never, never, true, never>;
36
36
  }
@@ -23,6 +23,7 @@ export declare class ProgressBarComponent implements OnInit, OnChanges {
23
23
  * Resolved props after merging preset + explicit props.
24
24
  */
25
25
  resolvedProps: ProgressBarMetadata;
26
+ get colorClass(): string;
26
27
  ngOnInit(): void;
27
28
  ngOnChanges(changes: SimpleChanges): void;
28
29
  /**
@@ -31,5 +32,5 @@ export declare class ProgressBarComponent implements OnInit, OnChanges {
31
32
  */
32
33
  private resolveProps;
33
34
  static ɵfac: i0.ɵɵFactoryDeclaration<ProgressBarComponent, never>;
34
- static ɵcmp: i0.ɵɵComponentDeclaration<ProgressBarComponent, "val-progress-bar", never, { "preset": { "alias": "preset"; "required": false; }; "props": { "alias": "props"; "required": false; }; }, {}, never, never, true, never>;
35
+ static ɵcmp: i0.ɵɵComponentDeclaration<ProgressBarComponent, "val-progress-bar, vds-progress-bar", never, { "preset": { "alias": "preset"; "required": false; }; "props": { "alias": "props"; "required": false; }; }, {}, never, never, true, never>;
35
36
  }
@@ -2,14 +2,14 @@ import { EventEmitter } from '@angular/core';
2
2
  import { ActionCardMetadata, ActionCardClickEvent } from './types';
3
3
  import * as i0 from "@angular/core";
4
4
  /**
5
- * val-action-card
5
+ * vds-action-card
6
6
  *
7
7
  * A clickable card component with icon, title, description, and optional badge.
8
8
  * Supports multiple icon formats: Ionicons, SVG paths, and image URLs.
9
9
  *
10
10
  * @example Basic usage with Ionicon
11
11
  * ```html
12
- * <val-action-card
12
+ * <vds-action-card
13
13
  * [props]="{
14
14
  * icon: { ionicon: 'settings-outline' },
15
15
  * title: 'Settings',
@@ -21,7 +21,7 @@ import * as i0 from "@angular/core";
21
21
  *
22
22
  * @example With routerLink navigation
23
23
  * ```html
24
- * <val-action-card
24
+ * <vds-action-card
25
25
  * [props]="{
26
26
  * icon: { ionicon: 'person-outline', color: 'primary' },
27
27
  * title: 'Profile',
@@ -34,7 +34,7 @@ import * as i0 from "@angular/core";
34
34
  *
35
35
  * @example With custom SVG icon
36
36
  * ```html
37
- * <val-action-card
37
+ * <vds-action-card
38
38
  * [props]="{
39
39
  * icon: { svgPath: 'M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5' },
40
40
  * title: 'Custom Feature',
@@ -49,6 +49,25 @@ export declare class ActionCardComponent {
49
49
  private navigation;
50
50
  /** Component configuration */
51
51
  readonly props: import("@angular/core").InputSignal<Partial<ActionCardMetadata>>;
52
+ readonly title: import("@angular/core").InputSignal<string>;
53
+ readonly titleKey: import("@angular/core").InputSignal<string>;
54
+ readonly description: import("@angular/core").InputSignal<string>;
55
+ readonly descriptionKey: import("@angular/core").InputSignal<string>;
56
+ readonly i18nNamespace: import("@angular/core").InputSignal<string>;
57
+ readonly icon: import("@angular/core").InputSignal<import("./types").ActionCardIcon>;
58
+ readonly size: import("@angular/core").InputSignal<import("./types").ActionCardSize>;
59
+ readonly variant: import("@angular/core").InputSignal<import("./types").ActionCardVariant>;
60
+ readonly bordered: import("@angular/core").InputSignal<boolean>;
61
+ readonly borderColor: import("@angular/core").InputSignal<string | (string & Record<never, never>)>;
62
+ readonly backgroundColor: import("@angular/core").InputSignal<string | (string & Record<never, never>)>;
63
+ readonly shadowed: import("@angular/core").InputSignal<boolean>;
64
+ readonly disabled: import("@angular/core").InputSignal<boolean>;
65
+ readonly routerLink: import("@angular/core").InputSignal<string | any[]>;
66
+ readonly queryParams: import("@angular/core").InputSignal<Record<string, string | number | boolean>>;
67
+ readonly href: import("@angular/core").InputSignal<string>;
68
+ readonly badge: import("@angular/core").InputSignal<import("./types").ActionCardBadge>;
69
+ readonly showChevron: import("@angular/core").InputSignal<boolean>;
70
+ readonly token: import("@angular/core").InputSignal<string>;
52
71
  /** Event emitted when card is clicked */
53
72
  onClick: EventEmitter<ActionCardClickEvent>;
54
73
  /** Merged configuration with defaults */
@@ -61,6 +80,7 @@ export declare class ActionCardComponent {
61
80
  descriptionKey?: string;
62
81
  i18nNamespace?: string;
63
82
  size: import("./types").ActionCardSize;
83
+ variant?: import("./types").ActionCardVariant;
64
84
  bordered: boolean;
65
85
  borderColor?: string | (string & Record<never, never>);
66
86
  backgroundColor?: string | (string & Record<never, never>);
@@ -72,12 +92,13 @@ export declare class ActionCardComponent {
72
92
  badge?: import("./types").ActionCardBadge;
73
93
  showChevron: boolean;
74
94
  }>;
95
+ private assignIfDefined;
75
96
  /** Get title with i18n support */
76
97
  getTitle(): string;
77
98
  /** Get description with i18n support */
78
99
  getDescription(): string;
79
- /** Resolve color to CSS value (named Ionic token CSS var, else passthrough) */
80
- private resolveColor;
100
+ /** Resolve a public role to VDS first, then keep Ionic as the compatibility fallback. */
101
+ private resolveRoleColor;
81
102
  getBackgroundColor(): string | null;
82
103
  getBorderColor(): string | null;
83
104
  getIconColor(): string | null;
@@ -87,5 +108,5 @@ export declare class ActionCardComponent {
87
108
  /** Handle card click */
88
109
  handleClick(event: MouseEvent): void;
89
110
  static ɵfac: i0.ɵɵFactoryDeclaration<ActionCardComponent, never>;
90
- static ɵcmp: i0.ɵɵComponentDeclaration<ActionCardComponent, "val-action-card", never, { "props": { "alias": "props"; "required": false; "isSignal": true; }; }, { "onClick": "onClick"; }, never, never, true, never>;
111
+ static ɵcmp: i0.ɵɵComponentDeclaration<ActionCardComponent, "val-action-card, vds-action-card", never, { "props": { "alias": "props"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "titleKey": { "alias": "titleKey"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "descriptionKey": { "alias": "descriptionKey"; "required": false; "isSignal": true; }; "i18nNamespace": { "alias": "i18nNamespace"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; "borderColor": { "alias": "borderColor"; "required": false; "isSignal": true; }; "backgroundColor": { "alias": "backgroundColor"; "required": false; "isSignal": true; }; "shadowed": { "alias": "shadowed"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "routerLink": { "alias": "routerLink"; "required": false; "isSignal": true; }; "queryParams": { "alias": "queryParams"; "required": false; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; "showChevron": { "alias": "showChevron"; "required": false; "isSignal": true; }; "token": { "alias": "token"; "required": false; "isSignal": true; }; }, { "onClick": "onClick"; }, never, never, true, never>;
91
112
  }
@@ -3,6 +3,7 @@ import { Color } from '@ionic/core';
3
3
  * Size options for action-card
4
4
  */
5
5
  export type ActionCardSize = 'small' | 'medium' | 'large';
6
+ export type ActionCardVariant = 'default' | 'marker';
6
7
  /**
7
8
  * Badge configuration for action-card
8
9
  */
@@ -39,7 +40,7 @@ export interface ActionCardClickEvent {
39
40
  navigated?: boolean;
40
41
  }
41
42
  /**
42
- * Metadata for val-action-card component
43
+ * Metadata for vds-action-card component
43
44
  */
44
45
  export interface ActionCardMetadata {
45
46
  /** Unique token for identification */
@@ -58,6 +59,8 @@ export interface ActionCardMetadata {
58
59
  i18nNamespace?: string;
59
60
  /** Card size variant */
60
61
  size?: ActionCardSize;
62
+ /** Visual variant */
63
+ variant?: ActionCardVariant;
61
64
  /** Show border */
62
65
  bordered?: boolean;
63
66
  /** Border color */
@@ -9,7 +9,7 @@ export declare class CardComponent implements OnInit, OnChanges {
9
9
  * (type, variant, padding, etc.) that can be registered at app level.
10
10
  *
11
11
  * @example
12
- * <val-card preset="feature" [props]="{ title: 'My Card' }"></val-card>
12
+ * <vds-card preset="feature" [props]="{ title: 'My Card' }"></vds-card>
13
13
  */
14
14
  preset?: string;
15
15
  /**
@@ -46,5 +46,5 @@ export declare class CardComponent implements OnInit, OnChanges {
46
46
  /** Activación por teclado con Space — previene el scroll de la página. */
47
47
  onKeyActivate(event: Event, section: CardSection, token?: string): void;
48
48
  static ɵfac: i0.ɵɵFactoryDeclaration<CardComponent, never>;
49
- static ɵcmp: i0.ɵɵComponentDeclaration<CardComponent, "val-card", never, { "preset": { "alias": "preset"; "required": false; }; "props": { "alias": "props"; "required": false; }; }, { "onClick": "onClick"; }, never, never, true, never>;
49
+ static ɵcmp: i0.ɵɵComponentDeclaration<CardComponent, "val-card, vds-card", never, { "preset": { "alias": "preset"; "required": false; }; "props": { "alias": "props"; "required": false; }; }, { "onClick": "onClick"; }, never, never, true, never>;
50
50
  }
@@ -12,9 +12,11 @@ export declare class StatsCardComponent implements OnInit, OnChanges {
12
12
  ngOnChanges(changes: SimpleChanges): void;
13
13
  private resolveProps;
14
14
  getCardColor(): string;
15
+ getCardColorHover(): string;
16
+ getCardColorContrast(): string;
15
17
  getBackgroundClass(): string;
16
18
  getTrendClass(): string;
17
19
  getTrendIcon(): string;
18
20
  static ɵfac: i0.ɵɵFactoryDeclaration<StatsCardComponent, never>;
19
- static ɵcmp: i0.ɵɵComponentDeclaration<StatsCardComponent, "val-stats-card", never, { "preset": { "alias": "preset"; "required": false; }; "props": { "alias": "props"; "required": false; }; }, { "onClick": "onClick"; }, never, never, true, never>;
21
+ static ɵcmp: i0.ɵɵComponentDeclaration<StatsCardComponent, "val-stats-card, vds-stats-card", never, { "preset": { "alias": "preset"; "required": false; }; "props": { "alias": "props"; "required": false; }; }, { "onClick": "onClick"; }, never, never, true, never>;
20
22
  }
@@ -1,8 +1,8 @@
1
- import { ElementRef, OnInit } from '@angular/core';
1
+ import { ElementRef, OnDestroy, OnInit } from '@angular/core';
2
2
  import { I18nService } from '../../../services/i18n';
3
3
  import { AttachmentItem, AttachmentUploaderMetadata } from './types';
4
4
  import * as i0 from "@angular/core";
5
- export declare class AttachmentUploaderComponent implements OnInit {
5
+ export declare class AttachmentUploaderComponent implements OnInit, OnDestroy {
6
6
  cameraPicker: ElementRef<HTMLInputElement>;
7
7
  cameraVideo: ElementRef<HTMLVideoElement>;
8
8
  props: import("@angular/core").InputSignal<AttachmentUploaderMetadata>;
@@ -13,6 +13,7 @@ export declare class AttachmentUploaderComponent implements OnInit {
13
13
  attachments: import("@angular/core").WritableSignal<AttachmentItem[]>;
14
14
  showCameraOverlay: import("@angular/core").WritableSignal<boolean>;
15
15
  private cameraStream;
16
+ private previewUrls;
16
17
  maxFiles: import("@angular/core").Signal<number>;
17
18
  accept: import("@angular/core").Signal<string>;
18
19
  maxReached: import("@angular/core").Signal<boolean>;
@@ -20,12 +21,14 @@ export declare class AttachmentUploaderComponent implements OnInit {
20
21
  isUploading: import("@angular/core").Signal<boolean>;
21
22
  get readyUrls(): string[];
22
23
  ngOnInit(): void;
24
+ ngOnDestroy(): void;
23
25
  constructor();
24
26
  openCamera(): Promise<void>;
25
27
  capturePhoto(): void;
26
28
  closeCamera(): void;
27
29
  onFilesSelected(event: Event): Promise<void>;
28
30
  private processFiles;
31
+ private createPreviewUrl;
29
32
  private compressImage;
30
33
  /**
31
34
  * Genera y sube la miniatura de una imagen ya comprimida.
@@ -10,6 +10,12 @@ export interface AttachmentItem {
10
10
  * diferencia entre 240KB y 15KB por fila. Ver `generateThumbnail`.
11
11
  */
12
12
  thumbnailUrl?: string;
13
+ /**
14
+ * URL local efímera para previsualizar imágenes seleccionadas antes de que
15
+ * exista una URL remota. Se crea con `URL.createObjectURL` y el componente la
16
+ * libera al remover el adjunto o destruirse.
17
+ */
18
+ previewUrl?: string;
13
19
  error?: string;
14
20
  isExternal?: boolean;
15
21
  }
@@ -26,7 +26,7 @@ export interface SettingsSection {
26
26
  shadowed?: boolean;
27
27
  }
28
28
  /**
29
- * Catálogo default de secciones del HUB de settings (7 entradas). `logout` va
29
+ * Catálogo default de secciones del HUB de settings (6 entradas). `logout` va
30
30
  * incluida pero sin `routerLink` (la maneja un callback). Mismo set, mismos
31
31
  * tokens/iconos/rutas que el builder original de showcase
32
32
  * (`shared/settings-action-cards.ts`) que esta promoción reemplaza.
package/lib/version.d.ts CHANGED
@@ -2,4 +2,4 @@
2
2
  * Current version of valtech-components.
3
3
  * This is automatically updated during the publish process.
4
4
  */
5
- export declare const VERSION = "4.0.1029";
5
+ export declare const VERSION = "4.0.1031";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "valtech-components",
3
- "version": "4.0.1029",
3
+ "version": "4.0.1031",
4
4
  "private": false,
5
5
  "bin": {
6
6
  "valtech-firebase-config": "./src/lib/services/firebase/scripts/generate-sw-config.js"