@forgeroute/ui 0.4.25 → 0.4.27

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.25",
3
+ "version": "0.4.27",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=22.0.0",
6
6
  "@angular/core": ">=22.0.0",
@@ -4427,7 +4427,7 @@ export declare class TextInputComponent implements ControlValueAccessor, Validat
4427
4427
  readonly passwordRequirements: import("@angular/core").InputSignal<boolean>;
4428
4428
  /** Rules for `passwordRequirements`; default = the library's five rules (8+ characters, upper, lower, digit, special). */
4429
4429
  readonly passwordRules: import("@angular/core").InputSignal<readonly PasswordRule[] | undefined>;
4430
- readonly type: import("@angular/core").InputSignal<"number" | "text" | "email" | "tel" | "password" | "url">;
4430
+ readonly type: import("@angular/core").InputSignal<"number" | "text" | "password" | "email" | "tel" | "url">;
4431
4431
  readonly maxlength: import("@angular/core").InputSignal<number | undefined>;
4432
4432
  readonly required: import("@angular/core").InputSignal<boolean>;
4433
4433
  readonly autocomplete: import("@angular/core").InputSignal<string>;
@@ -4436,7 +4436,7 @@ export declare class TextInputComponent implements ControlValueAccessor, Validat
4436
4436
  * `search`, `text`, `none`). Empty (default) = the browser's default for the field, except `type="tel"`, which keeps `tel`.
4437
4437
  * It only picks the keyboard; it does not restrict what can be typed or pasted.
4438
4438
  */
4439
- readonly inputmode: import("@angular/core").InputSignal<"" | "none" | "text" | "search" | "email" | "tel" | "url" | "decimal" | "numeric">;
4439
+ readonly inputmode: import("@angular/core").InputSignal<"" | "text" | "none" | "search" | "email" | "tel" | "url" | "decimal" | "numeric">;
4440
4440
  readonly readonly: import("@angular/core").InputSignal<boolean>;
4441
4441
  readonly hint: import("@angular/core").InputSignal<string>;
4442
4442
  readonly error: import("@angular/core").InputSignal<string>;
@@ -4500,7 +4500,7 @@ export declare class TextInputComponent implements ControlValueAccessor, Validat
4500
4500
  protected readonly _stepAttr: import("@angular/core").Signal<string | null>;
4501
4501
  protected readonly _revealable: import("@angular/core").Signal<boolean>;
4502
4502
  protected readonly _shown: import("@angular/core").WritableSignal<boolean>;
4503
- protected readonly _inputType: import("@angular/core").Signal<"number" | "text" | "email" | "tel" | "password" | "url">;
4503
+ protected readonly _inputType: import("@angular/core").Signal<"number" | "text" | "password" | "email" | "tel" | "url">;
4504
4504
  protected readonly _eyePath: string;
4505
4505
  protected readonly _eyeOffPath: string;
4506
4506
  protected readonly _showRequirements: import("@angular/core").Signal<boolean>;
@@ -6046,7 +6046,7 @@ export declare class FormRowComponent {
6046
6046
  * child simply takes the full width. Keep a numeric span within the row's `cols` (use `all` for the whole row).
6047
6047
  */
6048
6048
  export declare class FormColSpanDirective {
6049
- readonly uiColSpan: import("@angular/core").InputSignal<"" | "2" | "3" | 2 | 3 | "all">;
6049
+ readonly uiColSpan: import("@angular/core").InputSignal<"" | "all" | 2 | "2" | 3 | "3">;
6050
6050
  protected readonly _class: import("@angular/core").Signal<string>;
6051
6051
  static ɵfac: i0.ɵɵFactoryDeclaration<FormColSpanDirective, never>;
6052
6052
  static ɵdir: i0.ɵɵDirectiveDeclaration<FormColSpanDirective, "[uiColSpan]", never, {
@@ -10970,4 +10970,69 @@ export declare class ImageGalleryDialogComponent {
10970
10970
  "index": "indexChange";
10971
10971
  }, never, never, true, never>;
10972
10972
  }
10973
+ /** The apps that can offer integrations. */
10974
+ export type IntegrationApp = 'real-estate' | 'contractor' | 'cremo' | 'mfh';
10975
+ /** One integration. `apps` says which apps offer it: `'all'` (Twilio, ...) or the list of apps it belongs to. Live ones can be connected; coming-soon ones are display-only. */
10976
+ export interface IntegrationDef {
10977
+ key: string;
10978
+ name: string;
10979
+ description: string;
10980
+ /** `'all'` = every app; otherwise only the listed apps offer it. */
10981
+ apps: 'all' | readonly IntegrationApp[];
10982
+ status: 'live' | 'coming-soon';
10983
+ iconBg: string;
10984
+ iconColor: string;
10985
+ connectLabel: string;
10986
+ connectDesc: string;
10987
+ setupSteps?: {
10988
+ title: string;
10989
+ desc: string;
10990
+ }[];
10991
+ howItWorks?: {
10992
+ title: string;
10993
+ desc: string;
10994
+ }[];
10995
+ group?: string;
10996
+ pricingNote?: string;
10997
+ /** IDX providers only: where the provider's own documentation lives. */
10998
+ supportUrl?: string;
10999
+ /** IDX providers only: the lead fields the provider sends. */
11000
+ fieldFormats?: string;
11001
+ /** IDX providers only: how the provider delivers leads. */
11002
+ webhookNote?: string;
11003
+ }
11004
+ /** Every integration any app offers: IDX providers first, then the rest in catalog order. Use `integrationsForApp()` to get one app's. */
11005
+ export declare const INTEGRATION_CATALOG: readonly IntegrationDef[];
11006
+ /** A text field the connect form shows while an integration is not connected. */
11007
+ export interface IntegrationFieldDef {
11008
+ id: string;
11009
+ label: string;
11010
+ type: 'text' | 'password';
11011
+ placeholder: string;
11012
+ hint?: string;
11013
+ }
11014
+ /** A checkbox of an integration's import options (shown once connected). */
11015
+ export interface IntegrationOptionDef {
11016
+ id: string;
11017
+ label: string;
11018
+ hint?: string;
11019
+ }
11020
+ export declare const INTEGRATION_FIELD_DEFS: Readonly<Record<string, readonly IntegrationFieldDef[]>>;
11021
+ export declare const INTEGRATION_OPTION_DEFS: Readonly<Record<string, readonly IntegrationOptionDef[]>>;
11022
+ /** Behavioural signals the IDX tracking webhook records (tier = how many lead-score points it is worth). */
11023
+ export declare const IDX_BEHAVIOR_SIGNALS: readonly {
11024
+ label: string;
11025
+ tier: 'high' | 'med' | 'low';
11026
+ }[];
11027
+ /** Ordered section labels used by `IntegrationDef.group`. */
11028
+ export declare const INTEGRATION_GROUP_ORDER: readonly string[];
11029
+ /** The integrations one app offers (those marked `'all'` plus those that list the app), in catalog order. */
11030
+ export declare function integrationsForApp(app: IntegrationApp): IntegrationDef[];
11031
+ /** Plain text plus the snippets to emphasise, for `<ui-text [text] [strong]>`. */
11032
+ export interface IntegrationPlainText {
11033
+ text: string;
11034
+ strong: string[];
11035
+ }
11036
+ /** Splits `<strong>x</strong>` markup out of catalog copy: `"a <strong>b</strong> c"` -> `{ text: 'a b c', strong: ['b'] }`. Any other tag is dropped. */
11037
+ export declare function integrationPlainText(html: string): IntegrationPlainText;
10973
11038
  export type { CalendarDay, CalendarRange, CalendarViewMode };