valtech-components 2.0.985 → 2.0.987

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 (37) hide show
  1. package/esm2022/lib/components/atoms/button/button.component.mjs +6 -3
  2. package/esm2022/lib/components/molecules/date-input/date-input.component.mjs +97 -14
  3. package/esm2022/lib/components/organisms/account-view/account-view.component.mjs +732 -0
  4. package/esm2022/lib/components/organisms/account-view/account-view.i18n.mjs +96 -0
  5. package/esm2022/lib/components/organisms/account-view/account.routes.mjs +29 -0
  6. package/esm2022/lib/components/organisms/account-view/types.mjs +2 -0
  7. package/esm2022/lib/components/organisms/create-org-modal/create-org-modal.component.mjs +240 -0
  8. package/esm2022/lib/components/organisms/create-org-modal/create-org-modal.i18n.mjs +46 -0
  9. package/esm2022/lib/components/organisms/delete-account-modal/delete-account-modal.component.mjs +272 -0
  10. package/esm2022/lib/components/organisms/delete-account-modal/delete-account-modal.i18n.mjs +40 -0
  11. package/esm2022/lib/components/organisms/org-info-sheet/org-info-sheet.component.mjs +205 -0
  12. package/esm2022/lib/components/organisms/org-info-sheet/org-info-sheet.i18n.mjs +35 -0
  13. package/esm2022/lib/components/organisms/switch-org-modal/switch-org-modal.component.mjs +280 -0
  14. package/esm2022/lib/components/organisms/switch-org-modal/switch-org-modal.i18n.mjs +26 -0
  15. package/esm2022/lib/components/types.mjs +1 -1
  16. package/esm2022/lib/version.mjs +2 -2
  17. package/esm2022/public-api.mjs +8 -1
  18. package/fesm2022/valtech-components.mjs +2279 -279
  19. package/fesm2022/valtech-components.mjs.map +1 -1
  20. package/lib/components/molecules/date-input/date-input.component.d.ts +9 -0
  21. package/lib/components/organisms/account-view/account-view.component.d.ts +88 -0
  22. package/lib/components/organisms/account-view/account-view.i18n.d.ts +7 -0
  23. package/lib/components/organisms/account-view/account.routes.d.ts +24 -0
  24. package/lib/components/organisms/account-view/types.d.ts +44 -0
  25. package/lib/components/organisms/article/article.component.d.ts +1 -0
  26. package/lib/components/organisms/create-org-modal/create-org-modal.component.d.ts +45 -0
  27. package/lib/components/organisms/create-org-modal/create-org-modal.i18n.d.ts +7 -0
  28. package/lib/components/organisms/delete-account-modal/delete-account-modal.component.d.ts +50 -0
  29. package/lib/components/organisms/delete-account-modal/delete-account-modal.i18n.d.ts +7 -0
  30. package/lib/components/organisms/org-info-sheet/org-info-sheet.component.d.ts +44 -0
  31. package/lib/components/organisms/org-info-sheet/org-info-sheet.i18n.d.ts +12 -0
  32. package/lib/components/organisms/switch-org-modal/switch-org-modal.component.d.ts +47 -0
  33. package/lib/components/organisms/switch-org-modal/switch-org-modal.i18n.d.ts +7 -0
  34. package/lib/components/types.d.ts +2 -0
  35. package/lib/version.d.ts +1 -1
  36. package/package.json +1 -1
  37. package/public-api.d.ts +7 -0
@@ -4,6 +4,7 @@ import * as i0 from "@angular/core";
4
4
  export declare class DateInputComponent implements OnInit, OnChanges {
5
5
  private i18n;
6
6
  private presets;
7
+ constructor();
7
8
  /**
8
9
  * Preset name to apply. Presets define reusable date input configurations
9
10
  * that can be registered at app level via provideValtechPresets().
@@ -27,6 +28,14 @@ export declare class DateInputComponent implements OnInit, OnChanges {
27
28
  get doneText(): string;
28
29
  /** Cancel button text - from props or i18n default */
29
30
  get cancelText(): string;
31
+ /** Presentación del datetime (default: date). */
32
+ get presentation(): string;
33
+ /** Texto del trigger cuando NO hay valor (placeholder explícito o default i18n). */
34
+ get placeholderText(): string;
35
+ /** Id del trigger/datetime — estable; se garantiza no vacío en resolveProps. */
36
+ get triggerId(): string;
37
+ /** Valor formateado del control para mostrar en el trigger ('' si vacío). */
38
+ get displayValue(): string;
30
39
  ngOnInit(): void;
31
40
  ngOnChanges(changes: SimpleChanges): void;
32
41
  /**
@@ -0,0 +1,88 @@
1
+ import { EmptyStateMetadata } from '../../molecules/empty-state/types';
2
+ import { ButtonGroupMetadata } from '../../molecules/button-group/types';
3
+ import { ButtonMetadata } from '../../types';
4
+ import { Organization, PendingInvitation } from '../../../services/org/types';
5
+ import { AccountViewConfig } from './types';
6
+ import * as i0 from "@angular/core";
7
+ /**
8
+ * `val-account-view` — vista Cuenta full-feature autocontenida (organism).
9
+ * Promovida desde `showcase` bajo el proceso de ADR-021. Reúne:
10
+ * - **Invitaciones pendientes** — aceptar / rechazar (`val-invitation-card`).
11
+ * - **Organizaciones** — card de org activa + empty-card + CTA "Nueva org"
12
+ * (modal `val-create-org-modal`) + "Ver todas" (modal `val-switch-org-modal`).
13
+ * - **Cerrar esta sesión** — `auth.logoutWithConfirmation()`.
14
+ * - **Eliminar cuenta** — modal `val-delete-account-modal`.
15
+ *
16
+ * NO renderiza ion-content — vive dentro de val-page-wrapper. No usa deep-links;
17
+ * `ActivatedRoute` se inyecta `{ optional: true }` solo para leer el route data
18
+ * de config. La navegación a la org route va por `NavigationService`.
19
+ *
20
+ * Auto-registra sus defaults i18n (es/en) en el constructor si el consumer no
21
+ * proveyó el namespace configurado (default `Settings.Account`).
22
+ */
23
+ export declare class AccountViewComponent {
24
+ private nav;
25
+ private i18n;
26
+ private auth;
27
+ private orgService;
28
+ private modalService;
29
+ private toast;
30
+ private errors;
31
+ private route;
32
+ /**
33
+ * Config vía @Input (object-first). Si no se pasa, se cae al route data
34
+ * `accountConfig` (poblado por `provideValtechAccountRoutes`). `resolvedConfig`
35
+ * mergea con los defaults — `@Input` gana sobre route data.
36
+ */
37
+ config?: AccountViewConfig;
38
+ readonly resolvedConfig: import("@angular/core").Signal<Required<Omit<AccountViewConfig, "onOrgSwitched" | "onOrgCreated" | "onLoggedOut" | "onAccountDeleted">> & Pick<AccountViewConfig, "onOrgSwitched" | "onOrgCreated" | "onLoggedOut" | "onAccountDeleted">>;
39
+ /** Namespace i18n resuelto (capturado para llamadas no-reactivas). */
40
+ private get ns();
41
+ readonly orgs: import("@angular/core").WritableSignal<Organization[]>;
42
+ readonly orgsLoading: import("@angular/core").WritableSignal<boolean>;
43
+ private readonly orgsError;
44
+ readonly orgsErrorState: import("@angular/core").Signal<EmptyStateMetadata>;
45
+ readonly pendingInvites: import("@angular/core").WritableSignal<PendingInvitation[]>;
46
+ readonly pendingInvitesLoading: import("@angular/core").WritableSignal<boolean>;
47
+ readonly inviteAccepting: import("@angular/core").WritableSignal<string>;
48
+ readonly pageTitle: import("@angular/core").Signal<string>;
49
+ readonly pageDescription: import("@angular/core").Signal<string>;
50
+ readonly orgsTitle: import("@angular/core").Signal<string>;
51
+ readonly orgsEmpty: import("@angular/core").Signal<string>;
52
+ readonly orgsMoreInfo: import("@angular/core").Signal<string>;
53
+ readonly orgsNewQuestion: import("@angular/core").Signal<string>;
54
+ readonly orgsNewHint: import("@angular/core").Signal<string>;
55
+ readonly newOrgCtaProps: import("@angular/core").Signal<{
56
+ title: string;
57
+ description: string;
58
+ padding: string;
59
+ borderRadius: string;
60
+ actions: ButtonGroupMetadata;
61
+ }>;
62
+ readonly logoutTitle: import("@angular/core").Signal<string>;
63
+ readonly logoutHint: import("@angular/core").Signal<string>;
64
+ readonly dangerTitle: import("@angular/core").Signal<string>;
65
+ readonly dangerDeleteTitle: import("@angular/core").Signal<string>;
66
+ readonly dangerDeleteHint: import("@angular/core").Signal<string>;
67
+ readonly activeOrgId: import("@angular/core").Signal<string>;
68
+ readonly activeOrgRole: import("@angular/core").Signal<string>;
69
+ readonly activeOrg: import("@angular/core").Signal<Organization>;
70
+ readonly logoutButtonProps: import("@angular/core").Signal<Partial<ButtonMetadata>>;
71
+ readonly deleteAccountButtonProps: import("@angular/core").Signal<Partial<ButtonMetadata>>;
72
+ readonly switchAccountButtonProps: import("@angular/core").Signal<Partial<ButtonMetadata>>;
73
+ constructor();
74
+ orgTypeLabel(type: string): string;
75
+ onSwitchAccount(): void;
76
+ onDeleteAccount(): void;
77
+ onManageOrg(): void;
78
+ onNewOrg(): void;
79
+ onMoreInfo(): void;
80
+ onLogout(): void;
81
+ private loadPendingInvites;
82
+ acceptPendingInvite(invite: PendingInvitation): void;
83
+ declinePendingInvite(invite: PendingInvitation): void;
84
+ private loadOrgs;
85
+ protected tt(key: string): string;
86
+ static ɵfac: i0.ɵɵFactoryDeclaration<AccountViewComponent, never>;
87
+ static ɵcmp: i0.ɵɵComponentDeclaration<AccountViewComponent, "val-account-view", never, { "config": { "alias": "config"; "required": false; }; }, {}, never, never, true, never>;
88
+ }
@@ -0,0 +1,7 @@
1
+ import { LanguagesContent } from '../../../services/i18n/types';
2
+ /**
3
+ * Defaults i18n (es/en) embebidos en `val-account-view`. Auto-registrados en el
4
+ * constructor del componente si el consumer no proveyó el namespace
5
+ * (`Settings.Account` por default). SOLO incluye las keys que la vista usa.
6
+ */
7
+ export declare const ACCOUNT_VIEW_I18N: LanguagesContent;
@@ -0,0 +1,24 @@
1
+ import { Routes } from '@angular/router';
2
+ import { AccountViewConfig } from './types';
3
+ /**
4
+ * Helper para montar la vista Cuenta (`val-account-view`) como ruta en una app
5
+ * del factory. El `config` se pasa por route `data` (`accountConfig`) y el
6
+ * componente lo lee como fallback de su `@Input() config`.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * // settings.routes.ts
11
+ * export const settingsRoutes: Routes = [
12
+ * ...provideValtechAccountRoutes(),
13
+ * { path: 'preferences', loadComponent: () => ... },
14
+ * ];
15
+ *
16
+ * // con config acotada:
17
+ * ...provideValtechAccountRoutes({ config: { showDeleteAccount: false } }),
18
+ * ...provideValtechAccountRoutes({ config: { manageOrgRoute: '/app/org' } }),
19
+ * ```
20
+ */
21
+ export declare function provideValtechAccountRoutes(opts?: {
22
+ path?: string;
23
+ config?: AccountViewConfig;
24
+ }): Routes;
@@ -0,0 +1,44 @@
1
+ import { Organization } from '../../../services/org/types';
2
+ /**
3
+ * Configuración acotada de `val-account-view` (object-first). Tres ejes de
4
+ * variación permitidos — **NADA de slots arbitrarios** (ADR-021: una vista
5
+ * full-feature no abre slots; si falta algo, se promueve un nuevo punto de
6
+ * extensión):
7
+ *
8
+ * - **secciones visibles** — gatean el render de cada bloque (invitaciones
9
+ * pendientes, organizaciones, CTA de nueva org, cerrar sesión, eliminar cuenta).
10
+ * - **branding** — `i18nNamespace` para resolver los textos (default
11
+ * `'Settings.Account'`).
12
+ * - **comportamiento / callbacks** — ruta de gestión de org (`manageOrgRoute`) y
13
+ * hooks opcionales tras switch / create / logout / delete.
14
+ */
15
+ export interface AccountViewConfig {
16
+ /** Muestra la sección de invitaciones pendientes. Default `true`. */
17
+ showPendingInvites?: boolean;
18
+ /** Muestra la sección de organizaciones (org activa + empty + CTA). Default `true`. */
19
+ showOrganizations?: boolean;
20
+ /** Muestra la card CTA de "Nueva organización". Default `true`. */
21
+ showNewOrgCta?: boolean;
22
+ /** Muestra la sección "Cerrar esta sesión". Default `true`. */
23
+ showLogout?: boolean;
24
+ /** Muestra la sección "Eliminar cuenta". Default `true`. */
25
+ showDeleteAccount?: boolean;
26
+ /**
27
+ * Namespace i18n con el que la vista resuelve sus textos.
28
+ * Default `'Settings.Account'`.
29
+ */
30
+ i18nNamespace?: string;
31
+ /**
32
+ * Ruta a la que navegar al gestionar la org activa (botón "Gestionar").
33
+ * Default `'/app/settings/organization'`.
34
+ */
35
+ manageOrgRoute?: string;
36
+ /** Hook tras cambiar de organización vía el modal de switch. */
37
+ onOrgSwitched?: () => void;
38
+ /** Hook tras crear una organización vía el modal de creación. */
39
+ onOrgCreated?: (newOrg: Organization) => void;
40
+ /** Hook tras cerrar sesión. */
41
+ onLoggedOut?: () => void;
42
+ /** Hook tras solicitar la eliminación de cuenta. */
43
+ onAccountDeleted?: () => void;
44
+ }
@@ -79,6 +79,7 @@ export declare class ArticleComponent implements OnInit {
79
79
  expand?: "full" | "block";
80
80
  link?: string;
81
81
  href?: string;
82
+ routerLink?: string | any[];
82
83
  target?: "_blank" | "_self" | "_parent" | "_top";
83
84
  download?: string;
84
85
  color: import("@ionic/core").Color;
@@ -0,0 +1,45 @@
1
+ import { WritableSignal } from '@angular/core';
2
+ import { FormMetadata, FormSubmit } from '../../types';
3
+ import { Organization } from '../../../services/org/types';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * `val-create-org-modal` — modal de creación de organización (organism
7
+ * compartido). Promovido desde `showcase` bajo el proceso de ADR-021. Reusado por
8
+ * la vista Cuenta (y futuras vistas org-aware).
9
+ *
10
+ * Crea la org vía `OrgService.createOrg` y, en éxito, cambia a ella con
11
+ * `OrgSwitchService.switchTo`. El formulario (nombre + tipo + descripción) se
12
+ * construye una vez y se mantiene reactivo a idioma + estado de trabajo vía
13
+ * effects `allowSignalWrites`.
14
+ *
15
+ * Abierto vía `ModalService` — recibe `_modalRef` por `componentProps` + callback
16
+ * `onSuccess(newOrg)`. Header canónico (Regla #5): sin `ion-title`, botón Cerrar
17
+ * texto en `slot=end`, título/subtítulo en el body con `val-display`/`val-title`.
18
+ *
19
+ * Auto-registra sus defaults i18n (es/en) si el consumer no proveyó el namespace
20
+ * `CreateOrgModal`.
21
+ */
22
+ export declare class CreateOrgModalComponent {
23
+ private i18n;
24
+ private orgService;
25
+ private orgSwitch;
26
+ private toast;
27
+ private errors;
28
+ /** Inyectado por `ModalService.open` — referencia para cerrar desde dentro. */
29
+ _modalRef?: {
30
+ dismiss: (data?: unknown, role?: string) => void;
31
+ };
32
+ /** Callback tras crear la org (pasado por `componentProps`). */
33
+ onSuccess?: (newOrg: Organization) => void;
34
+ /** Namespace i18n con que la vista resuelve sus textos. */
35
+ i18nNamespace: string;
36
+ private readonly _busy;
37
+ readonly formMeta: WritableSignal<FormMetadata>;
38
+ constructor();
39
+ onSubmit(event: FormSubmit): Promise<void>;
40
+ dismiss(): void;
41
+ private buildFormMeta;
42
+ t(key: string): string;
43
+ static ɵfac: i0.ɵɵFactoryDeclaration<CreateOrgModalComponent, never>;
44
+ static ɵcmp: i0.ɵɵComponentDeclaration<CreateOrgModalComponent, "val-create-org-modal", never, { "_modalRef": { "alias": "_modalRef"; "required": false; }; "onSuccess": { "alias": "onSuccess"; "required": false; }; "i18nNamespace": { "alias": "i18nNamespace"; "required": false; }; }, {}, never, never, true, never>;
45
+ }
@@ -0,0 +1,7 @@
1
+ import { LanguagesContent } from '../../../services/i18n/types';
2
+ /**
3
+ * Defaults i18n (es/en) embebidos en `val-create-org-modal`. Auto-registrados en
4
+ * el constructor del componente si el consumer no proveyó el namespace
5
+ * (`CreateOrgModal` por default). SOLO incluye las keys que el modal usa.
6
+ */
7
+ export declare const CREATE_ORG_MODAL_I18N: LanguagesContent;
@@ -0,0 +1,50 @@
1
+ import { OnInit } from '@angular/core';
2
+ import { ComponentState, FormMetadata, FormSubmit } from '../../types';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * `val-delete-account-modal` — modal de eliminación de cuenta (organism,
6
+ * cuenta-específico). Promovido desde `showcase` bajo el proceso de ADR-021.
7
+ *
8
+ * Decide el flujo según si la cuenta tiene contraseña:
9
+ * - **con password** → pide la contraseña actual y la verifica vía
10
+ * `auth.deleteAccount({ password })`.
11
+ * - **sin password** (cuenta OAuth) → envía un código por email
12
+ * (`auth.sendDeleteAccountCode()`) y lo pide para confirmar
13
+ * (`auth.deleteAccount({ code })`).
14
+ *
15
+ * Abierto vía `ModalService` — recibe `_modalRef` por `componentProps` para
16
+ * cerrar desde dentro. Header canónico (Regla #5): sin `ion-title`, botón Cerrar
17
+ * texto en `slot=end`, título/subtítulo en el body vía `val-form`.
18
+ *
19
+ * Auto-registra sus defaults i18n (es/en) en el constructor si el consumer no
20
+ * proveyó el namespace `Settings.DeleteAccount`.
21
+ */
22
+ export declare class DeleteAccountModalComponent implements OnInit {
23
+ private auth;
24
+ private errors;
25
+ private i18n;
26
+ private toast;
27
+ /** Inyectado por `ModalService.open` — referencia para cerrar desde dentro. */
28
+ _modalRef?: {
29
+ dismiss: (data?: unknown, role?: string) => void;
30
+ };
31
+ /** Namespace i18n con que la vista resuelve sus textos. */
32
+ i18nNamespace: string;
33
+ readonly hasPassword: import("@angular/core").WritableSignal<boolean>;
34
+ readonly codeSent: import("@angular/core").WritableSignal<boolean>;
35
+ readonly formState: import("@angular/core").WritableSignal<ComponentState>;
36
+ constructor();
37
+ ngOnInit(): void;
38
+ t: (key: string) => string;
39
+ private submitBtn;
40
+ readonly passwordFormProps: import("@angular/core").Signal<FormMetadata>;
41
+ readonly sendCodeFormProps: import("@angular/core").Signal<FormMetadata>;
42
+ readonly codeFormProps: import("@angular/core").Signal<FormMetadata>;
43
+ close(): void;
44
+ onPasswordSubmit(event: FormSubmit): Promise<void>;
45
+ onSendCode(): Promise<void>;
46
+ onResendCode(): Promise<void>;
47
+ onCodeSubmit(event: FormSubmit): Promise<void>;
48
+ static ɵfac: i0.ɵɵFactoryDeclaration<DeleteAccountModalComponent, never>;
49
+ static ɵcmp: i0.ɵɵComponentDeclaration<DeleteAccountModalComponent, "val-delete-account-modal", never, { "_modalRef": { "alias": "_modalRef"; "required": false; }; "i18nNamespace": { "alias": "i18nNamespace"; "required": false; }; }, {}, never, never, true, never>;
50
+ }
@@ -0,0 +1,7 @@
1
+ import { LanguagesContent } from '../../../services/i18n/types';
2
+ /**
3
+ * Defaults i18n (es/en) embebidos en `val-delete-account-modal`. Auto-registrados
4
+ * en el constructor del componente si el consumer no proveyó el namespace
5
+ * (`Settings.DeleteAccount` por default). SOLO incluye las keys que el modal usa.
6
+ */
7
+ export declare const DELETE_ACCOUNT_MODAL_I18N: LanguagesContent;
@@ -0,0 +1,44 @@
1
+ import { ButtonMetadata } from '../../types';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * `val-org-info-sheet` — sheet informativo "¿Qué son las organizaciones?".
5
+ * Extraído del `OrgInfoSheetComponent` inline de `AccountPage` bajo el proceso de
6
+ * ADR-021.
7
+ *
8
+ * El consumer pasa `title`/`subtitle`/`body`/`closeLabel` ya resueltos por props
9
+ * (patrón del resto de modales del factory). Los textos de los 3 features
10
+ * (Colaboración / Cambio rápido / Invitaciones), que en la versión inline estaban
11
+ * hardcoded, ahora se auto-resuelven desde el namespace `OrgInfoSheet`
12
+ * (auto-registrado en el constructor).
13
+ *
14
+ * Abierto vía `ModalService` — recibe `_modalRef` por `componentProps`. Header
15
+ * canónico (Regla #5): sin `ion-title`, botón Cerrar texto en `slot=end`,
16
+ * título/subtítulo en el body con `val-display`/`val-title`.
17
+ */
18
+ export declare class OrgInfoSheetComponent {
19
+ private i18n;
20
+ /** Título principal (resuelto por el consumer). Fallback al namespace propio. */
21
+ title: string;
22
+ /** Subtítulo (resuelto por el consumer). Fallback al namespace propio. */
23
+ subtitle: string;
24
+ /** Cuerpo en párrafos separados por doble salto de línea (resuelto por el consumer). */
25
+ body: string;
26
+ /** Label del botón cerrar (resuelto por el consumer). Fallback al namespace propio. */
27
+ closeLabel: string;
28
+ /** Props del botón cerrar del footer (el consumer puede pasar custom). */
29
+ closeProps: Partial<ButtonMetadata>;
30
+ /** Inyectado por `ModalService.open` — referencia para cerrar desde dentro. */
31
+ _modalRef?: {
32
+ dismiss: (data?: unknown, role?: string) => void;
33
+ };
34
+ constructor();
35
+ readonly resolvedTitle: import("@angular/core").Signal<string>;
36
+ readonly resolvedSubtitle: import("@angular/core").Signal<string>;
37
+ readonly resolvedCloseLabel: import("@angular/core").Signal<string>;
38
+ readonly paragraphs: import("@angular/core").Signal<string[]>;
39
+ readonly resolvedCloseProps: import("@angular/core").Signal<Partial<ButtonMetadata>>;
40
+ dismiss(): void;
41
+ protected tt(key: string): string;
42
+ static ɵfac: i0.ɵɵFactoryDeclaration<OrgInfoSheetComponent, never>;
43
+ static ɵcmp: i0.ɵɵComponentDeclaration<OrgInfoSheetComponent, "val-org-info-sheet", never, { "title": { "alias": "title"; "required": false; }; "subtitle": { "alias": "subtitle"; "required": false; }; "body": { "alias": "body"; "required": false; }; "closeLabel": { "alias": "closeLabel"; "required": false; }; "closeProps": { "alias": "closeProps"; "required": false; }; "_modalRef": { "alias": "_modalRef"; "required": false; }; }, {}, never, never, true, never>;
44
+ }
@@ -0,0 +1,12 @@
1
+ import { LanguagesContent } from '../../../services/i18n/types';
2
+ /**
3
+ * Defaults i18n (es/en) embebidos en `val-org-info-sheet`. Auto-registrados en el
4
+ * constructor del componente si el consumer no proveyó el namespace
5
+ * (`OrgInfoSheet`). Cubre los textos de los 3 features (que en la versión inline
6
+ * de showcase estaban hardcoded) más fallbacks de título/subtítulo/closeLabel.
7
+ *
8
+ * `title`/`subtitle`/`body`/`closeLabel` los suele pasar el consumer ya resueltos
9
+ * por props (patrón del resto de modales); las keys `feature*` se auto-resuelven
10
+ * desde este namespace.
11
+ */
12
+ export declare const ORG_INFO_SHEET_I18N: LanguagesContent;
@@ -0,0 +1,47 @@
1
+ import { Organization } from '../../../services/org/types';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * `val-switch-org-modal` — modal de cambio de organización activa (organism
5
+ * compartido). Promovido desde `showcase` bajo el proceso de ADR-021. Reusado por
6
+ * la vista Cuenta (y futuras vistas org-aware).
7
+ *
8
+ * Lista las organizaciones del user (vía `OrgService.listMyOrgs`), permite buscar
9
+ * por nombre, y cambia la org activa con `OrgSwitchService.switchTo`. La org
10
+ * actual queda primera y deshabilitada.
11
+ *
12
+ * Abierto vía `ModalService` — recibe `_modalRef` por `componentProps` + callback
13
+ * `onSuccess`. Header canónico (Regla #5): sin `ion-title`, botón Cerrar texto en
14
+ * `slot=end`, título/subtítulo en el body con `val-display`/`val-title`.
15
+ *
16
+ * Auto-registra sus defaults i18n (es/en) si el consumer no proveyó el namespace
17
+ * `Settings.SwitchOrg`.
18
+ */
19
+ export declare class SwitchOrgModalComponent {
20
+ private i18n;
21
+ private auth;
22
+ private orgService;
23
+ private orgSwitch;
24
+ private errors;
25
+ /** Inyectado por `ModalService.open` — referencia para cerrar desde dentro. */
26
+ _modalRef?: {
27
+ dismiss: (data?: unknown, role?: string) => void;
28
+ };
29
+ /** Callback tras un switch exitoso (pasado por `componentProps`). */
30
+ onSuccess?: () => void;
31
+ /** Namespace i18n con que la vista resuelve sus textos. */
32
+ i18nNamespace: string;
33
+ readonly orgs: import("@angular/core").WritableSignal<Organization[]>;
34
+ readonly loading: import("@angular/core").WritableSignal<boolean>;
35
+ readonly query: import("@angular/core").WritableSignal<string>;
36
+ readonly switchingId: import("@angular/core").WritableSignal<string>;
37
+ readonly activeOrgId: import("@angular/core").Signal<string>;
38
+ readonly filteredOrgs: import("@angular/core").Signal<Organization[]>;
39
+ constructor();
40
+ onQueryChange(value: string): void;
41
+ onSelect(org: Organization): Promise<void>;
42
+ private loadOrgs;
43
+ dismiss(): void;
44
+ t(key: string): string;
45
+ static ɵfac: i0.ɵɵFactoryDeclaration<SwitchOrgModalComponent, never>;
46
+ static ɵcmp: i0.ɵɵComponentDeclaration<SwitchOrgModalComponent, "val-switch-org-modal", never, { "_modalRef": { "alias": "_modalRef"; "required": false; }; "onSuccess": { "alias": "onSuccess"; "required": false; }; "i18nNamespace": { "alias": "i18nNamespace"; "required": false; }; }, {}, never, never, true, never>;
47
+ }
@@ -0,0 +1,7 @@
1
+ import { LanguagesContent } from '../../../services/i18n/types';
2
+ /**
3
+ * Defaults i18n (es/en) embebidos en `val-switch-org-modal`. Auto-registrados en
4
+ * el constructor del componente si el consumer no proveyó el namespace
5
+ * (`Settings.SwitchOrg` por default). SOLO incluye las keys que el modal usa.
6
+ */
7
+ export declare const SWITCH_ORG_MODAL_I18N: LanguagesContent;
@@ -284,6 +284,8 @@ export interface ButtonMetadata {
284
284
  link?: string;
285
285
  /** Associated href link */
286
286
  href?: string;
287
+ /** Angular router link (SPA navigation, no reload) */
288
+ routerLink?: string | any[];
287
289
  /** Link target */
288
290
  target?: '_blank' | '_self' | '_parent' | '_top';
289
291
  /** Download file name */
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 = "2.0.985";
5
+ export declare const VERSION = "2.0.987";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "valtech-components",
3
- "version": "2.0.985",
3
+ "version": "2.0.987",
4
4
  "private": false,
5
5
  "bin": {
6
6
  "valtech-firebase-config": "./src/lib/services/firebase/scripts/generate-sw-config.js"
package/public-api.d.ts CHANGED
@@ -278,6 +278,13 @@ export * from './lib/components/organisms/security-view/security.routes';
278
278
  export * from './lib/components/organisms/login-attempt-modal/login-attempt-modal.component';
279
279
  export * from './lib/components/organisms/session-list-modal/session-list-modal.component';
280
280
  export * from './lib/components/organisms/session-list-modal/types';
281
+ export * from './lib/components/organisms/account-view/account-view.component';
282
+ export * from './lib/components/organisms/account-view/types';
283
+ export * from './lib/components/organisms/account-view/account.routes';
284
+ export * from './lib/components/organisms/delete-account-modal/delete-account-modal.component';
285
+ export * from './lib/components/organisms/switch-org-modal/switch-org-modal.component';
286
+ export * from './lib/components/organisms/create-org-modal/create-org-modal.component';
287
+ export * from './lib/components/organisms/org-info-sheet/org-info-sheet.component';
281
288
  export * from './lib/components/organisms/skeleton-layout/skeleton-layout.component';
282
289
  export * from './lib/components/organisms/skeleton-layout/types';
283
290
  export * from './lib/components/organisms/faq/faq.component';