valtech-components 4.0.238 → 4.0.240

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.
@@ -43,7 +43,7 @@ export declare class RightsFooterComponent {
43
43
  /**
44
44
  * Computed helper for color prop in template.
45
45
  */
46
- propsColor: import("@angular/core").Signal<"success" | "medium" | "primary" | "secondary" | "tertiary" | "warning" | "danger" | "light" | "dark">;
46
+ propsColor: import("@angular/core").Signal<"dark" | "primary" | "secondary" | "tertiary" | "success" | "warning" | "danger" | "light" | "medium">;
47
47
  /**
48
48
  * Computed helper for withMargin prop in template.
49
49
  */
@@ -11,7 +11,7 @@ export declare class TextComponent {
11
11
  */
12
12
  displayContent: import("@angular/core").Signal<string>;
13
13
  propsColor: import("@angular/core").Signal<import("@ionic/core").Color>;
14
- propsSize: import("@angular/core").Signal<"small" | "medium" | "large" | "xlarge">;
14
+ propsSize: import("@angular/core").Signal<"medium" | "small" | "large" | "xlarge">;
15
15
  propsBold: import("@angular/core").Signal<boolean>;
16
16
  propsProcessLinks: import("@angular/core").Signal<boolean>;
17
17
  propsAllowPartialBold: import("@angular/core").Signal<boolean>;
@@ -38,7 +38,7 @@ export declare class UserAvatarComponent {
38
38
  readonly imageUrl: import("@angular/core").Signal<string>;
39
39
  /** Iniciales — 1-2 chars derivados de name (preferred) o email prefix. */
40
40
  readonly initials: import("@angular/core").Signal<string>;
41
- readonly sizeClass: import("@angular/core").Signal<"small" | "medium" | "large" | "xlarge" | "xsmall">;
41
+ readonly sizeClass: import("@angular/core").Signal<"medium" | "small" | "large" | "xlarge" | "xsmall">;
42
42
  readonly shapeClass: import("@angular/core").Signal<"circle" | "square">;
43
43
  /** Background — explicito o derivado deterministicamente del user. */
44
44
  readonly bgColor: import("@angular/core").Signal<string>;
@@ -14,13 +14,16 @@ export interface ChatComposerSendEvent {
14
14
  files: File[];
15
15
  }
16
16
  /**
17
- * val-chat-composer — barra de redacción de chat moderna (signal inputs).
17
+ * val-chat-composer — barra de redacción estilo Notion/Claude (full custom).
18
18
  *
19
- * Pill con: adjuntar (+), textarea auto-grow, y mic/enviar (mic cuando está vacío,
20
- * enviar cuando hay texto o adjuntos). Los adjuntos (botón + / pegar imagen) se
21
- * acumulan como PREVIEW (miniaturas) y se emiten por `(attach)` recién al ENVIAR
22
- * no se van solos al chat. Audio grabado se emite directo al parar.
23
- * No incluye picker de emoji: el teclado del sistema ya lo trae.
19
+ * El editor es un `contenteditable` (NO ion-textarea): crece hasta un max-height,
20
+ * soporta pegar texto plano e imágenes del portapapeles, Enter envía / Shift+Enter
21
+ * salta línea. Debajo, una fila de acciones propias: adjuntar (+), mic/enviar.
22
+ * Los adjuntos (botón / pegar / audio grabado) se acumulan como miniaturas de
23
+ * PREVIEW y se mandan en UN solo evento `send {text, files}` (caption + adjuntos).
24
+ *
25
+ * Pensado para vivir en un contenedor fijo al fondo del viewport (el consumer
26
+ * ancla la posición). No incluye emoji picker (el teclado del sistema lo trae).
24
27
  */
25
28
  export declare class ChatComposerComponent implements OnDestroy {
26
29
  private i18n;
@@ -34,6 +37,7 @@ export declare class ChatComposerComponent implements OnDestroy {
34
37
  readonly typing: import("@angular/core").OutputEmitterRef<void>;
35
38
  readonly voice: import("@angular/core").OutputEmitterRef<void>;
36
39
  readonly cancelReply: import("@angular/core").OutputEmitterRef<void>;
40
+ private readonly editableRef;
37
41
  protected readonly body: import("@angular/core").WritableSignal<string>;
38
42
  protected readonly pending: import("@angular/core").WritableSignal<PendingAttachment[]>;
39
43
  private pendingId;
@@ -48,19 +52,17 @@ export declare class ChatComposerComponent implements OnDestroy {
48
52
  constructor();
49
53
  protected readonly canSend: import("@angular/core").Signal<boolean>;
50
54
  protected readonly placeholderText: import("@angular/core").Signal<string>;
51
- protected onInput(event: Event): void;
55
+ /** Lee el texto del contenteditable a la signal `body`. */
56
+ protected syncBody(): void;
52
57
  protected onKeydown(event: KeyboardEvent): void;
58
+ /** Pegar: texto plano (sin formato) + imágenes del portapapeles. */
59
+ protected onPaste(event: ClipboardEvent): void;
53
60
  protected onSend(): void;
61
+ private clearEditable;
54
62
  protected onFile(event: Event): void;
55
- /** Pegar imagen desde el portapapeles (captura de pantalla, copiar imagen). */
56
- protected onPaste(event: ClipboardEvent): void;
57
63
  private addPending;
58
64
  protected removePending(id: number): void;
59
- /**
60
- * Emite typing como máximo 1 vez cada 2s. performance.now es seguro en runtime.
61
- */
62
65
  private emitTypingDebounced;
63
- /** Selecciona un mimeType de audio soportado por el navegador. */
64
66
  private pickAudioMime;
65
67
  protected startRecording(): Promise<void>;
66
68
  /** Para la grabación y la stagea como adjunto pendiente (con preview de audio). */
@@ -41,7 +41,7 @@ export declare class FeaturesListComponent {
41
41
  iconColor: string;
42
42
  iconSize: number;
43
43
  mode: "horizontal" | "vertical";
44
- gap: "small" | "medium" | "large";
44
+ gap: "medium" | "small" | "large";
45
45
  alignment: "center" | "start";
46
46
  imageShape: "circle" | "square";
47
47
  maxVisible: number;
@@ -26,7 +26,7 @@ export declare class LoadMoreComponent {
26
26
  readonly color: import("@angular/core").Signal<string>;
27
27
  readonly fill: import("@angular/core").Signal<string>;
28
28
  readonly shape: import("@angular/core").Signal<string>;
29
- readonly size: import("@angular/core").Signal<"default" | "small" | "large">;
29
+ readonly size: import("@angular/core").Signal<"small" | "default" | "large">;
30
30
  readonly threshold: import("@angular/core").Signal<string>;
31
31
  readonly label: import("@angular/core").Signal<string>;
32
32
  private readonly _pendingComplete;
@@ -45,7 +45,7 @@ export declare class ArticleComponent implements OnInit {
45
45
  getVideoElement(element: ArticleElement): ArticleVideoElement;
46
46
  getCustomElement(element: ArticleElement): ArticleCustomElement;
47
47
  getQuoteTextProps(element: ArticleElement): {
48
- size: "small" | "medium" | "large" | "xlarge";
48
+ size: "medium" | "small" | "large" | "xlarge";
49
49
  color: import("@ionic/core").Color;
50
50
  content?: string;
51
51
  bold: boolean;
@@ -61,7 +61,7 @@ export declare class ArticleComponent implements OnInit {
61
61
  showQuoteMark?: boolean;
62
62
  };
63
63
  getHighlightTextProps(element: ArticleElement): {
64
- size: "small" | "medium" | "large" | "xlarge";
64
+ size: "medium" | "small" | "large" | "xlarge";
65
65
  color: import("@ionic/core").Color;
66
66
  content?: string;
67
67
  bold: boolean;
@@ -78,7 +78,7 @@ export declare class ArticleComponent implements OnInit {
78
78
  actionType?: import("valtech-components").ActionType; /**
79
79
  * Obtiene los estilos de padding para el contenedor article
80
80
  */
81
- expand?: "full" | "block";
81
+ expand?: "block" | "full";
82
82
  link?: string;
83
83
  href?: string;
84
84
  routerLink?: string | any[];
@@ -93,9 +93,9 @@ export declare class ArticleComponent implements OnInit {
93
93
  contentInterpolation?: Record<string, string | number>;
94
94
  icon?: import("valtech-components").IconMetada;
95
95
  shape?: "round";
96
- size?: "default" | "small" | "large";
97
- fill?: "default" | "clear" | "outline" | "solid";
98
- type: "reset" | "submit" | "button";
96
+ size?: "small" | "default" | "large";
97
+ fill?: "solid" | "clear" | "outline" | "default";
98
+ type: "button" | "submit" | "reset";
99
99
  token?: string;
100
100
  ref?: any;
101
101
  handler?: (value: any) => any;
@@ -50,7 +50,7 @@ export declare class ChatWindowComponent {
50
50
  protected readonly replyingTo: import("@angular/core").WritableSignal<MessageReplyTo>;
51
51
  protected readonly atBottom: import("@angular/core").WritableSignal<boolean>;
52
52
  protected readonly hasNew: import("@angular/core").WritableSignal<boolean>;
53
- protected readonly locale: import("@angular/core").Signal<"es-CL" | "en-US">;
53
+ protected readonly locale: import("@angular/core").Signal<"en-US" | "es-CL">;
54
54
  constructor();
55
55
  protected readonly rows: import("@angular/core").Signal<ChatRow[]>;
56
56
  protected onScroll(): void;
@@ -4,7 +4,7 @@ export declare class LandingStepsComponent {
4
4
  private readonly props_;
5
5
  set props(v: LandingStepsMetadata);
6
6
  readonly p: import("@angular/core").Signal<LandingStepsMetadata>;
7
- readonly cols: import("@angular/core").Signal<2 | 3 | 4>;
7
+ readonly cols: import("@angular/core").Signal<3 | 2 | 4>;
8
8
  readonly accentColor: import("@angular/core").Signal<string>;
9
9
  static ɵfac: i0.ɵɵFactoryDeclaration<LandingStepsComponent, never>;
10
10
  static ɵcmp: i0.ɵɵComponentDeclaration<LandingStepsComponent, "val-landing-steps", never, { "props": { "alias": "props"; "required": false; }; }, {}, never, never, true, never>;
@@ -28,7 +28,7 @@ export declare class MemberImportModalComponent implements OnInit {
28
28
  /** Namespace i18n. */
29
29
  i18nNamespace: string;
30
30
  csv: string;
31
- readonly importMode: import("@angular/core").WritableSignal<"paste" | "file">;
31
+ readonly importMode: import("@angular/core").WritableSignal<"file" | "paste">;
32
32
  readonly onConflictControl: FormControl<string>;
33
33
  readonly sendActivationControl: FormControl<boolean>;
34
34
  readonly conflictSelectProps: import("@angular/core").Signal<Partial<InputMetadata>>;
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Contrato de metadatos de eventos de dominio (ADR-043) — espejo TS del
3
+ * registro Go `services/events/routes.go`. Mantener ambos en sync.
4
+ *
5
+ * El sobre `meta` viaja con una operación async para que el ruteo a flujos
6
+ * downstream (mailer, archiver...) se resuelva declarativamente en EventBridge.
7
+ */
8
+ export declare const META_SCHEMA_VERSION = 1;
9
+ /** Intención de ruteo: QUÉ hacer con la salida, no qué servicio lo hace. */
10
+ export type RouteIntent = 'email' | 'archive' | 'webhook';
11
+ /** Set de intents válidos. Sumar uno nuevo aquí y en el registro Go. */
12
+ export declare const KNOWN_ROUTES: readonly RouteIntent[];
13
+ export declare function isKnownRoute(r: string): r is RouteIntent;
14
+ /** Valida que todos los tags de `routes` estén registrados. Lanza si no. */
15
+ export declare function validateRoutes(routes: string[] | undefined): void;
16
+ /**
17
+ * Sobre opaco que el caller declara al encolar. El productor no lo interpreta:
18
+ * lo persiste y lo echa en el evento de completado. `params` chico e inline si
19
+ * no es sensible; grande/PII por puntero ({ ref: "directives/<id>" }).
20
+ */
21
+ export interface EventMeta {
22
+ schemaVersion?: number;
23
+ correlationId?: string;
24
+ origin?: string;
25
+ routes?: RouteIntent[];
26
+ params?: Record<string, unknown>;
27
+ }
@@ -1,6 +1,7 @@
1
1
  import { Observable } from 'rxjs';
2
2
  import { ValtechAuthConfig } from '../auth/types';
3
3
  import type { PdfGenerateRequest, PdfResult, PdfJob, PdfJobEnqueued } from './types';
4
+ import { EventMeta } from '../events/meta';
4
5
  import * as i0 from "@angular/core";
5
6
  /**
6
7
  * Servicio de PDF de plataforma (ADR-042). Reutilizable por cualquier app.
@@ -35,7 +36,7 @@ export declare class PdfService {
35
36
  * Lambda lo genera fuera de banda y, al completar, proyecta el estado a
36
37
  * Firestore. Usar watchJob(jobId) para observar el resultado en tiempo real.
37
38
  */
38
- createJob(req: PdfGenerateRequest): Observable<PdfJobEnqueued>;
39
+ createJob(req: PdfGenerateRequest, meta?: EventMeta): Observable<PdfJobEnqueued>;
39
40
  /**
40
41
  * Observa el estado de un job PDF async en tiempo real (onSnapshot del doc
41
42
  * `apps/{appId}/orgs/{orgId}/pdf-jobs/{jobId}`). Emite null si no hay org
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.238";
5
+ export declare const VERSION = "4.0.240";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "valtech-components",
3
- "version": "4.0.238",
3
+ "version": "4.0.240",
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
@@ -354,6 +354,7 @@ export * from './lib/components/templates/auth-background/types';
354
354
  export * from './lib/services/download.service';
355
355
  export * from './lib/services/pdf/pdf.service';
356
356
  export * from './lib/services/pdf/types';
357
+ export * from './lib/services/events/meta';
357
358
  export * from './lib/services/icons.service';
358
359
  export * from './lib/services/in-app-browser.service';
359
360
  export * from './lib/services/link-processor.service';