@forgeroute/ui 0.4.37 → 0.4.38

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forgeroute/ui",
3
- "version": "0.4.37",
3
+ "version": "0.4.38",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=22.0.0",
6
6
  "@angular/core": ">=22.0.0",
@@ -115,7 +115,7 @@ export declare class TemplatePickerComponent {
115
115
  private readonly host;
116
116
  private readonly search$;
117
117
  /** Filter results to a specific channel: 'email', 'text', or omit for all. */
118
- readonly channel: import("@angular/core").InputSignal<"" | "email" | "text">;
118
+ readonly channel: import("@angular/core").InputSignal<"" | "text" | "email">;
119
119
  readonly selectedId: import("@angular/core").InputSignal<string | null>;
120
120
  readonly label: import("@angular/core").InputSignal<string>;
121
121
  /** Shows the red required asterisk (same as the library inputs) — e.g. when a template must be picked to send. */
@@ -543,7 +543,7 @@ export declare class DocumentSendOptionsComponent implements UiFieldValidity {
543
543
  /** API root from FORGEROUTE_CONFIG (e.g. a cross-origin prod API); falls back to same-origin `/api`. */
544
544
  private readonly apiBase;
545
545
  /** `email` → purpose select + attachment allowed; `text` → link only (purpose fixed to e-signature). */
546
- readonly channel: import("@angular/core").InputSignal<"email" | "text">;
546
+ readonly channel: import("@angular/core").InputSignal<"text" | "email">;
547
547
  readonly label: import("@angular/core").InputSignal<string>;
548
548
  /** When true, at least one document must be chosen. The message forms leave it false: documents are optional there. */
549
549
  readonly required: import("@angular/core").InputSignal<boolean>;
@@ -608,7 +608,7 @@ export declare class DocumentSendOptionsComponent implements UiFieldValidity {
608
608
  /** Roles of documents whose row had no `signerRoles` and that the host resolves (`signers().resolveRoles`). */
609
609
  readonly roleStates: import("@angular/core").WritableSignal<Record<string, RoleState>>;
610
610
  /** The envelope's documents: `loading` / `error` while the panel reads them (`loadDocuments`), `ready` once known. */
611
- readonly envelopeStatus: import("@angular/core").WritableSignal<"idle" | "loading" | "ready" | "error">;
611
+ readonly envelopeStatus: import("@angular/core").WritableSignal<"error" | "loading" | "ready" | "idle">;
612
612
  private envelopeSub;
613
613
  private readonly roleSubs;
614
614
  /** The sender opened the collapsed "Signing options" line. */
@@ -1813,7 +1813,7 @@ export declare class SendMessagePanelComponent {
1813
1813
  readonly activeContact: import("@angular/core").WritableSignal<MessageContact | null>;
1814
1814
  /** What the sender should know about the picked contact before sending (why a channel is missing, what to add). */
1815
1815
  readonly contactNotices: import("@angular/core").Signal<string[]>;
1816
- readonly channel: import("@angular/core").WritableSignal<"email" | "text">;
1816
+ readonly channel: import("@angular/core").WritableSignal<"text" | "email">;
1817
1817
  readonly valid: import("@angular/core").WritableSignal<boolean>;
1818
1818
  /** Bumped on every fresh open / new contact — re-creates the email and text forms so no draft carries over. */
1819
1819
  readonly formEpoch: import("@angular/core").WritableSignal<number>;
@@ -11286,6 +11286,8 @@ export interface SetupWizardTexts {
11286
11286
  importErrorsText: (imported: number, errors: number) => string;
11287
11287
  importAgain: string;
11288
11288
  whatGetsImported: string;
11289
+ /** Title of the card with the summary on the last page. */
11290
+ summaryTitle: string;
11289
11291
  doneTitle: string;
11290
11292
  doneDescription: string;
11291
11293
  doneHint: string;
@@ -11753,6 +11755,8 @@ export declare class EmailTemplateEditorComponent {
11753
11755
  readonly headingOptions: SelectOption<string>[];
11754
11756
  readonly fontSizeOptions: SelectOption<string>[];
11755
11757
  readonly spacingTabs: PillTab[];
11758
+ /** The grey hint shown in the empty first block. */
11759
+ protected readonly startPlaceholder = "Start writing your email...";
11756
11760
  readonly ctaTypeOptions: SelectOption<string>[];
11757
11761
  readonly playbackOptions: {
11758
11762
  value: string;
@@ -11787,6 +11791,9 @@ export declare class EmailTemplateEditorComponent {
11787
11791
  readonly filteredBlockGroups: import("@angular/core").Signal<EmailTemplateBlockGroup[]>;
11788
11792
  private readonly serialized;
11789
11793
  readonly previewHtml: import("@angular/core").Signal<string>;
11794
+ private readonly sanitizer;
11795
+ /** The Preview / Mobile document: a full page with the email's own styles. It is shown in a sandboxed iframe (no scripts, no popups), so trusting the markup here cannot run anything. */
11796
+ readonly previewDoc: import("@angular/core").Signal<SafeHtml>;
11790
11797
  /** Characters in the body as it is saved. */
11791
11798
  readonly bodyLength: import("@angular/core").Signal<number>;
11792
11799
  readonly bodyHasContent: import("@angular/core").Signal<boolean>;
@@ -12101,4 +12108,9 @@ export declare const DEFAULT_EMAIL_TEMPLATE_VARIABLE_GROUPS: {
12101
12108
  example: string;
12102
12109
  }[];
12103
12110
  }[];
12111
+ /**
12112
+ * The document the Preview / Mobile tabs show (inside a sandboxed iframe): the serialised message with the base look of a sent email. A
12113
+ * Content-Security-Policy meta blocks scripts and anything but images / inline styles, and links open nowhere (sandbox, no popups).
12114
+ */
12115
+ export declare function buildPreviewDocument(bodyHtml: string): string;
12104
12116
  export type { CalendarDay, CalendarRange, CalendarViewMode };