@forgeroute/ui 0.4.74 → 0.4.75

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.74",
3
+ "version": "0.4.75",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=22.0.0",
6
6
  "@angular/core": ">=22.0.0",
@@ -202,7 +202,7 @@ export interface ColumnDef {
202
202
  ariaLabel?: string;
203
203
  } | null;
204
204
  /** Key in item holding the tags array. Defaults to col.key.
205
- * Expected shape: { name: string; variant?: BadgeVariant; color?: string }[]. `color` is a custom hex colour (`#rgb` / `#rrggbb`,
205
+ * Expected shape: { name: string; variant?: BadgeVariant; color?: string; colorName?: string }[]. `colorName` is the colour (or state) in words, e.g. 'red' or 'error': it is read by screen readers after the tag name (hidden visually) so the colour is never the only signal; omit it and nothing changes. `color` is a custom hex colour (`#rgb` / `#rrggbb`,
206
206
  * e.g. the colour a user picked for the tag): it becomes the chip background with dark or white text for contrast and wins over `variant`;
207
207
  * an invalid value is ignored. */
208
208
  tagsKey?: string;
@@ -1170,7 +1170,7 @@ export declare class SelectComponent implements ControlValueAccessor, Validator,
1170
1170
  readonly error: import("@angular/core").InputSignal<string>;
1171
1171
  /** Reveal the built-in error messages now (e.g. after a failed Save click), without waiting for blur. */
1172
1172
  readonly showErrors: import("@angular/core").InputSignal<boolean>;
1173
- readonly size: import("@angular/core").InputSignal<"sm" | "default">;
1173
+ readonly size: import("@angular/core").InputSignal<"default" | "sm">;
1174
1174
  readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
1175
1175
  private readonly _cvaDisabled;
1176
1176
  protected readonly disabled: import("@angular/core").Signal<boolean>;
@@ -2283,7 +2283,7 @@ export declare class SidePanelComponent implements OnDestroy {
2283
2283
  readonly cancelLabel: import("@angular/core").InputSignal<string>;
2284
2284
  /** Right-aligned primary action button label. Empty string = hidden. */
2285
2285
  readonly primaryLabel: import("@angular/core").InputSignal<string>;
2286
- readonly primaryVariant: import("@angular/core").InputSignal<"primary" | "danger" | "warning">;
2286
+ readonly primaryVariant: import("@angular/core").InputSignal<"warning" | "danger" | "primary">;
2287
2287
  readonly primaryLoading: import("@angular/core").InputSignal<boolean>;
2288
2288
  readonly primaryDisabled: import("@angular/core").InputSignal<boolean>;
2289
2289
  /** `data-testid` of the Cancel button; none when empty (default). */
@@ -2414,7 +2414,7 @@ export declare class ModalComponent implements OnInit, OnDestroy {
2414
2414
  */
2415
2415
  readonly describedBy: import("@angular/core").InputSignal<string | null>;
2416
2416
  readonly maxWidth: import("@angular/core").InputSignal<string>;
2417
- readonly bodyOverflow: import("@angular/core").InputSignal<"auto" | "hidden" | "visible">;
2417
+ readonly bodyOverflow: import("@angular/core").InputSignal<"hidden" | "visible" | "auto">;
2418
2418
  /** `data-testid` of the dialog element itself (the host `<ui-modal>` is always in the page, the dialog only while open). None when empty. */
2419
2419
  readonly dialogTestId: import("@angular/core").InputSignal<string>;
2420
2420
  /** Hides the header X button (e.g. while a request is running). Escape and a backdrop click still close unless `closable` is false. */
@@ -2988,7 +2988,7 @@ export declare class AudioPlayerComponent {
2988
2988
  /** Accessible name of the player. */
2989
2989
  readonly ariaLabel: import("@angular/core").InputSignal<string>;
2990
2990
  /** How much to load before play: 'metadata' (default), 'auto' or 'none'. */
2991
- readonly preload: import("@angular/core").InputSignal<"auto" | "none" | "metadata">;
2991
+ readonly preload: import("@angular/core").InputSignal<"none" | "metadata" | "auto">;
2992
2992
  /** Fires when the browser can't load or decode the source. */
2993
2993
  readonly playbackError: import("@angular/core").OutputEmitterRef<void>;
2994
2994
  protected readonly failed: import("@angular/core").WritableSignal<boolean>;
@@ -3242,7 +3242,7 @@ export declare class CheckboxComponent implements ControlValueAccessor, Validato
3242
3242
  * clicking it still toggles the box - e.g. a product name that is both the heading of its card and the label of its checkbox.
3243
3243
  * Default null: plain label text, exactly as before. Single mode only.
3244
3244
  */
3245
- readonly headingLevel: import("@angular/core").InputSignal<1 | 4 | 2 | 3 | 5 | 6 | null>;
3245
+ readonly headingLevel: import("@angular/core").InputSignal<1 | 2 | 3 | 4 | 5 | 6 | null>;
3246
3246
  readonly indeterminate: import("@angular/core").InputSignal<boolean>;
3247
3247
  readonly checked: import("@angular/core").ModelSignal<boolean>;
3248
3248
  /**
@@ -3260,7 +3260,7 @@ export declare class CheckboxComponent implements ControlValueAccessor, Validato
3260
3260
  */
3261
3261
  protected readonly _legend: import("@angular/core").Signal<string>;
3262
3262
  /** Group mode: lay the options out in a column (default) or in a wrapping row. */
3263
- readonly orientation: import("@angular/core").InputSignal<"horizontal" | "vertical">;
3263
+ readonly orientation: import("@angular/core").InputSignal<"vertical" | "horizontal">;
3264
3264
  /**
3265
3265
  * Group mode: the ticked option values as a two-way model (`[(values)]`), an alternative to ngModel / forms. Unset (default) = the
3266
3266
  * group is driven by ngModel / FormControl only. Values that are not an option are dropped and the order follows `options`.
@@ -3641,13 +3641,13 @@ export declare class StepperComponent {
3641
3641
  /** Accessible name of the list. */
3642
3642
  readonly ariaLabel: import("@angular/core").InputSignal<string>;
3643
3643
  /** Horizontal, <= 480px: show only the current step's label (`'current'`, default) or every label (`'all'`). */
3644
- readonly labelsOnSmallScreens: import("@angular/core").InputSignal<"current" | "all">;
3644
+ readonly labelsOnSmallScreens: import("@angular/core").InputSignal<"all" | "current">;
3645
3645
  /**
3646
3646
  * Horizontal only. `'beside'` (default): the label sits to the right of its circle. `'below'`: equal-width columns, the label centred under
3647
3647
  * its circle, one continuous line behind the circles that fills as steps complete; a complete step shows a check, the current step an
3648
3648
  * accent ring with a dot, an upcoming step an empty circle (no numbers). Circles are 40px (32px with `size="sm"`).
3649
3649
  */
3650
- readonly labelPosition: import("@angular/core").InputSignal<"beside" | "below">;
3650
+ readonly labelPosition: import("@angular/core").InputSignal<"below" | "beside">;
3651
3651
  /** Viewport width in px below which a horizontal stepper is drawn vertical (labels beside the circles), e.g. `640`. null (default) = never. */
3652
3652
  readonly stackBelow: import("@angular/core").InputSignal<number | null>;
3653
3653
  /** CSS length (e.g. `10.5rem`): horizontal only - the list gets `min-width: calc(<step count> * <value>)`. Empty (default) = no minimum. */
@@ -3679,7 +3679,7 @@ export declare class StepperComponent {
3679
3679
  protected readonly rows: import("@angular/core").Signal<{
3680
3680
  step: StepperStep;
3681
3681
  index: number;
3682
- state: "current" | "complete" | "upcoming";
3682
+ state: "complete" | "current" | "upcoming";
3683
3683
  error: boolean;
3684
3684
  errorMessage: string;
3685
3685
  selectable: boolean;
@@ -3992,7 +3992,7 @@ export declare class RadioGroupComponent implements ControlValueAccessor, Valida
3992
3992
  readonly error: import("@angular/core").InputSignal<string>;
3993
3993
  /** Reveal the built-in error messages now (e.g. after a failed Save click), without waiting for blur. */
3994
3994
  readonly showErrors: import("@angular/core").InputSignal<boolean>;
3995
- readonly orientation: import("@angular/core").InputSignal<"horizontal" | "vertical">;
3995
+ readonly orientation: import("@angular/core").InputSignal<"vertical" | "horizontal">;
3996
3996
  /** Native `name` shared by the radios; a unique one is generated when omitted. */
3997
3997
  readonly name: import("@angular/core").InputSignal<string>;
3998
3998
  /** `<ng-template uiRadioOptionContent="value">` children: content shown under that option while it is selected. */
@@ -4281,7 +4281,7 @@ export declare class ButtonComponent {
4281
4281
  * `ghost-start`: a ghost button for list / section toggles - a full-width row with its content aligned to the start, transparent
4282
4282
  * background, hover tint and the normal focus ring. Pair it with `ariaExpanded` / `ariaPressed`; the label may contain a heading element.
4283
4283
  */
4284
- readonly variant: import("@angular/core").InputSignal<"link" | "primary" | "secondary" | "danger" | "warning" | "icon" | "ghost" | "ghost-start" | "tab" | "icon-danger">;
4284
+ readonly variant: import("@angular/core").InputSignal<"link" | "icon" | "warning" | "danger" | "primary" | "secondary" | "ghost" | "ghost-start" | "tab" | "icon-danger">;
4285
4285
  /** Renders an anchor to this route instead of a button (use with `variant="link"` for an inline text link). `['/settings']` or `'/settings'`. While `disabled` or `loading` it renders a non-clickable `<span role="link" aria-disabled>` with no href (like `href`). */
4286
4286
  readonly routerLink: import("@angular/core").InputSignal<string | readonly unknown[] | null>;
4287
4287
  /** Query params of the `routerLink` (e.g. `{ section: 'deal-defaults' }`). */
@@ -4302,7 +4302,7 @@ export declare class ButtonComponent {
4302
4302
  */
4303
4303
  readonly href: import("@angular/core").InputSignal<string | null>;
4304
4304
  /** Where to open the `href` (`_blank` = a new tab). */
4305
- readonly target: import("@angular/core").InputSignal<"_blank" | "_self" | "_parent" | "_top" | null>;
4305
+ readonly target: import("@angular/core").InputSignal<"_self" | "_blank" | "_parent" | "_top" | null>;
4306
4306
  /** `rel` of the `href` link. A `_blank` target always gets `noopener noreferrer` added. */
4307
4307
  readonly rel: import("@angular/core").InputSignal<string | null>;
4308
4308
  /** The href when it is allowed (http, https, mailto, tel, sms or a relative URL), else null. */
@@ -4556,7 +4556,7 @@ export declare class PillTabsComponent {
4556
4556
  /** Keep every pill at its own width on one line (default false: pills may shrink and wrap their text). On a phone the row scrolls sideways, as it always does. */
4557
4557
  readonly noWrap: import("@angular/core").InputSignal<boolean>;
4558
4558
  /** 'vertical' stacks the tabs in a column (Up/Down arrows move between them, `aria-orientation="vertical"`). Default 'horizontal' = unchanged. */
4559
- readonly orientation: import("@angular/core").InputSignal<"horizontal" | "vertical">;
4559
+ readonly orientation: import("@angular/core").InputSignal<"vertical" | "horizontal">;
4560
4560
  protected readonly vertical: () => boolean;
4561
4561
  /**
4562
4562
  * (library source 2026-11-04, not yet published) Associate the tabs with their panels: every tab gets
@@ -5447,7 +5447,7 @@ export declare class TextInputComponent implements ControlValueAccessor, Validat
5447
5447
  * `search`, `text`, `none`). Empty (default) = the browser's default for the field, except `type="tel"`, which keeps `tel`.
5448
5448
  * It only picks the keyboard; it does not restrict what can be typed or pasted.
5449
5449
  */
5450
- readonly inputmode: import("@angular/core").InputSignal<"" | "email" | "search" | "none" | "text" | "tel" | "url" | "decimal" | "numeric">;
5450
+ readonly inputmode: import("@angular/core").InputSignal<"" | "none" | "email" | "search" | "text" | "numeric" | "tel" | "url" | "decimal">;
5451
5451
  readonly readonly: import("@angular/core").InputSignal<boolean>;
5452
5452
  readonly hint: import("@angular/core").InputSignal<string>;
5453
5453
  /** Id(s) of an external element that also describes this control (e.g. one shared error text for a group of fields). Space separated; MERGED after the control's own hint / error id in `aria-describedby`, never replacing it. Empty = unchanged. */
@@ -6091,6 +6091,14 @@ export declare class FileInputComponent implements ControlValueAccessor, Validat
6091
6091
  * Default `false`: nothing is toasted (the field message and `(fileRejected)` are unchanged). Needs a `ui-toast` outlet like any toast.
6092
6092
  */
6093
6093
  readonly toastOnReject: import("@angular/core").InputSignal<boolean>;
6094
+ /**
6095
+ * When several files are refused in one pick or drop, show EVERY one inside the field as a list (each line
6096
+ * `"name" was not added. <reason>`) instead of only the first refusal message. No toast is raised. The same list is available to the
6097
+ * host through `rejections` and `(filesRejected)`. Default `false`: the field shows the first refusal message only (unchanged).
6098
+ */
6099
+ readonly listRejections: import("@angular/core").InputSignal<boolean>;
6100
+ /** Id(s) of host elements that describe the picker (space-separated), added after the field's own error text, like `ui-text-input`'s `ariaDescribedBy`. Empty: nothing is added. */
6101
+ readonly ariaDescribedBy: import("@angular/core").InputSignal<string>;
6094
6102
  /** Show a Remove button next to the chosen file. */
6095
6103
  readonly clearable: import("@angular/core").InputSignal<boolean>;
6096
6104
  readonly removeLabel: import("@angular/core").InputSignal<string>;
@@ -6124,6 +6132,8 @@ export declare class FileInputComponent implements ControlValueAccessor, Validat
6124
6132
  readonly filesSelected: import("@angular/core").OutputEmitterRef<File[]>;
6125
6133
  /** A picked or dropped file was refused (wrong type or too big). */
6126
6134
  readonly fileRejected: import("@angular/core").OutputEmitterRef<FileRejection>;
6135
+ /** Every file refused by ONE pick or drop, in one event (fires only when at least one file was refused; `(fileRejected)` still fires per file). */
6136
+ readonly filesRejected: import("@angular/core").OutputEmitterRef<FileRejection[]>;
6127
6137
  /** The Remove button cleared the selection. */
6128
6138
  readonly fileRemoved: import("@angular/core").OutputEmitterRef<void>;
6129
6139
  /** Emits whenever the field becomes invalid / valid. */
@@ -6138,6 +6148,15 @@ export declare class FileInputComponent implements ControlValueAccessor, Validat
6138
6148
  /** Message of the last refused file ('' when the last pick was fine); shown in every mode. */
6139
6149
  private readonly _toast;
6140
6150
  private readonly _rejection;
6151
+ /** `aria-describedby` of the native input and the drop zone: the shown error text, then the host's ids. Absent when neither exists. */
6152
+ protected readonly _describedBy: import("@angular/core").Signal<string | null>;
6153
+ private readonly _rejected;
6154
+ /** The files refused by the last pick or drop (empty when the last pick was fine, after Remove / clear, and when files are set from the form). */
6155
+ readonly rejections: import("@angular/core").Signal<FileRejection[]>;
6156
+ /** One line per refused file: `"name" was not added. <reason>`. */
6157
+ readonly rejectionLines: import("@angular/core").Signal<string[]>;
6158
+ /** The list replaces the single message only while it is the refusal that is shown (a host `[error]` on a visible field wins). */
6159
+ protected readonly _showRejectList: import("@angular/core").Signal<boolean>;
6141
6160
  private readonly _reveal;
6142
6161
  private readonly _issue;
6143
6162
  /** True while a required field is empty, the last pick was refused, or the host passed an `[error]`. */
@@ -6174,6 +6193,8 @@ export declare class FileInputComponent implements ControlValueAccessor, Validat
6174
6193
  protected onDragOver(event: DragEvent): void;
6175
6194
  protected onDragLeave(event: DragEvent): void;
6176
6195
  protected onDrop(event: DragEvent): void;
6196
+ /** Keeps the first-message string (the `invalid` state) and the full list in step. */
6197
+ private setRejections;
6177
6198
  private rejectionFor;
6178
6199
  /** Applies picked / dropped files: refused ones raise the message and `fileRejected`, accepted ones become the value. */
6179
6200
  private accept$;
@@ -6239,6 +6260,16 @@ export declare class FileInputComponent implements ControlValueAccessor, Validat
6239
6260
  "required": false;
6240
6261
  "isSignal": true;
6241
6262
  };
6263
+ "listRejections": {
6264
+ "alias": "listRejections";
6265
+ "required": false;
6266
+ "isSignal": true;
6267
+ };
6268
+ "ariaDescribedBy": {
6269
+ "alias": "ariaDescribedBy";
6270
+ "required": false;
6271
+ "isSignal": true;
6272
+ };
6242
6273
  "clearable": {
6243
6274
  "alias": "clearable";
6244
6275
  "required": false;
@@ -6322,10 +6353,125 @@ export declare class FileInputComponent implements ControlValueAccessor, Validat
6322
6353
  }, {
6323
6354
  "filesSelected": "filesSelected";
6324
6355
  "fileRejected": "fileRejected";
6356
+ "filesRejected": "filesRejected";
6325
6357
  "fileRemoved": "fileRemoved";
6326
6358
  "invalidChange": "invalidChange";
6327
6359
  }, never, never, true, never>;
6328
6360
  }
6361
+ /**
6362
+ * A read-only text field with a Copy button (a feed address, an API URL, an invite link).
6363
+ *
6364
+ * <ui-copy-field label="Feed address" [value]="feedUrl()" (copied)="toast.success('Address copied')" />
6365
+ *
6366
+ * The button copies `value` with the Clipboard API; where that is missing or refused (older Safari / Firefox settings, an insecure page) it
6367
+ * selects the text and uses `document.execCommand('copy')`. If that fails too, the text stays selected and a status line asks the user to
6368
+ * press Ctrl/Cmd + C, and `(copyFailed)` is emitted. A polite live region announces the result. The button's accessible name contains its
6369
+ * visible text (WCAG 2.5.3). The field shows the full value (it scrolls inside the field); it never changes `value`.
6370
+ */
6371
+ export declare class CopyFieldComponent implements OnDestroy {
6372
+ /** The text shown and copied. */
6373
+ readonly value: import("@angular/core").InputSignal<string>;
6374
+ readonly label: import("@angular/core").InputSignal<string>;
6375
+ /** Visible button text (default "Copy"). */
6376
+ readonly copyLabel: import("@angular/core").InputSignal<string>;
6377
+ /** Visible button text for 2 seconds after a successful copy (default "Copied"). */
6378
+ readonly copiedLabel: import("@angular/core").InputSignal<string>;
6379
+ /** Accessible name of the button; default `<copyLabel> <label>`. Keep the visible text inside it. */
6380
+ readonly buttonAriaLabel: import("@angular/core").InputSignal<string>;
6381
+ /** Announced after a successful copy (default "Copied to clipboard"). */
6382
+ readonly copiedMessage: import("@angular/core").InputSignal<string>;
6383
+ /** Shown and announced when copying was refused (default asks for Ctrl/Cmd + C). */
6384
+ readonly failedMessage: import("@angular/core").InputSignal<string>;
6385
+ readonly hint: import("@angular/core").InputSignal<string>;
6386
+ readonly disabled: import("@angular/core").InputSignal<boolean>;
6387
+ /** Id(s) of host elements that also describe the field (space-separated). */
6388
+ readonly ariaDescribedBy: import("@angular/core").InputSignal<string>;
6389
+ readonly inputTestId: import("@angular/core").InputSignal<string>;
6390
+ readonly buttonTestId: import("@angular/core").InputSignal<string>;
6391
+ /** The text was copied. */
6392
+ readonly copied: import("@angular/core").OutputEmitterRef<string>;
6393
+ /** Neither the Clipboard API nor the fallback could copy. */
6394
+ readonly copyFailed: import("@angular/core").OutputEmitterRef<void>;
6395
+ protected readonly _id: string;
6396
+ protected readonly _state: import("@angular/core").WritableSignal<"idle" | "copied" | "failed">;
6397
+ protected readonly _announcement: import("@angular/core").Signal<string>;
6398
+ protected readonly _buttonName: import("@angular/core").Signal<string>;
6399
+ protected readonly _describedBy: import("@angular/core").Signal<string | null>;
6400
+ private readonly fieldEl;
6401
+ private _timer;
6402
+ ngOnDestroy(): void;
6403
+ /** Selects the whole text (also done on focus, so a manual copy is one keystroke away). */
6404
+ selectAll(): void;
6405
+ /** Copies `value`; the button calls this. Resolves to true when the text reached the clipboard. */
6406
+ copy(): Promise<boolean>;
6407
+ private legacyCopy;
6408
+ static ɵfac: i0.ɵɵFactoryDeclaration<CopyFieldComponent, never>;
6409
+ static ɵcmp: i0.ɵɵComponentDeclaration<CopyFieldComponent, "ui-copy-field", never, {
6410
+ "value": {
6411
+ "alias": "value";
6412
+ "required": false;
6413
+ "isSignal": true;
6414
+ };
6415
+ "label": {
6416
+ "alias": "label";
6417
+ "required": false;
6418
+ "isSignal": true;
6419
+ };
6420
+ "copyLabel": {
6421
+ "alias": "copyLabel";
6422
+ "required": false;
6423
+ "isSignal": true;
6424
+ };
6425
+ "copiedLabel": {
6426
+ "alias": "copiedLabel";
6427
+ "required": false;
6428
+ "isSignal": true;
6429
+ };
6430
+ "buttonAriaLabel": {
6431
+ "alias": "buttonAriaLabel";
6432
+ "required": false;
6433
+ "isSignal": true;
6434
+ };
6435
+ "copiedMessage": {
6436
+ "alias": "copiedMessage";
6437
+ "required": false;
6438
+ "isSignal": true;
6439
+ };
6440
+ "failedMessage": {
6441
+ "alias": "failedMessage";
6442
+ "required": false;
6443
+ "isSignal": true;
6444
+ };
6445
+ "hint": {
6446
+ "alias": "hint";
6447
+ "required": false;
6448
+ "isSignal": true;
6449
+ };
6450
+ "disabled": {
6451
+ "alias": "disabled";
6452
+ "required": false;
6453
+ "isSignal": true;
6454
+ };
6455
+ "ariaDescribedBy": {
6456
+ "alias": "ariaDescribedBy";
6457
+ "required": false;
6458
+ "isSignal": true;
6459
+ };
6460
+ "inputTestId": {
6461
+ "alias": "inputTestId";
6462
+ "required": false;
6463
+ "isSignal": true;
6464
+ };
6465
+ "buttonTestId": {
6466
+ "alias": "buttonTestId";
6467
+ "required": false;
6468
+ "isSignal": true;
6469
+ };
6470
+ }, {
6471
+ "copied": "copied";
6472
+ "copyFailed": "copyFailed";
6473
+ }, never, never, true, never>;
6474
+ }
6329
6475
  export declare class DateInputComponent implements ControlValueAccessor, Validator, UiFieldValidity {
6330
6476
  readonly label: import("@angular/core").InputSignal<string>;
6331
6477
  readonly required: import("@angular/core").InputSignal<boolean>;
@@ -7033,7 +7179,7 @@ export declare class DropdownComponent {
7033
7179
  readonly loader: import("@angular/core").InputSignal<(() => Promise<DropdownItem[]>) | null>;
7034
7180
  readonly active: import("@angular/core").InputSignal<boolean>;
7035
7181
  readonly activeValue: import("@angular/core").InputSignal<string>;
7036
- readonly variant: import("@angular/core").InputSignal<"button" | "badge">;
7182
+ readonly variant: import("@angular/core").InputSignal<"badge" | "button">;
7037
7183
  /** Trigger size for `variant="button"`: `sm` (default, the compact toolbar look) or `md` (same padding and type as a medium `ui-button`). */
7038
7184
  readonly size: import("@angular/core").InputSignal<"sm" | "md">;
7039
7185
  readonly menuWidth: import("@angular/core").InputSignal<string>;
@@ -7346,7 +7492,7 @@ export declare class FormSectionComponent {
7346
7492
  }, {}, never, ["*"], true, never>;
7347
7493
  }
7348
7494
  export declare class FormRowComponent {
7349
- readonly cols: import("@angular/core").InputSignal<1 | 4 | 2 | 3>;
7495
+ readonly cols: import("@angular/core").InputSignal<1 | 2 | 3 | 4>;
7350
7496
  static ɵfac: i0.ɵɵFactoryDeclaration<FormRowComponent, never>;
7351
7497
  static ɵcmp: i0.ɵɵComponentDeclaration<FormRowComponent, "ui-form-row", never, {
7352
7498
  "cols": {
@@ -7363,7 +7509,7 @@ export declare class FormRowComponent {
7363
7509
  * child simply takes the full width. Keep a numeric span within the row's `cols` (use `all` for the whole row).
7364
7510
  */
7365
7511
  export declare class FormColSpanDirective {
7366
- readonly uiColSpan: import("@angular/core").InputSignal<"" | 2 | 3 | "all" | "2" | "3">;
7512
+ readonly uiColSpan: import("@angular/core").InputSignal<"" | 2 | 3 | "2" | "3" | "all">;
7367
7513
  protected readonly _class: import("@angular/core").Signal<string>;
7368
7514
  static ɵfac: i0.ɵɵFactoryDeclaration<FormColSpanDirective, never>;
7369
7515
  static ɵdir: i0.ɵɵDirectiveDeclaration<FormColSpanDirective, "[uiColSpan]", never, {
@@ -8941,13 +9087,13 @@ export declare class AlertComponent {
8941
9087
  }
8942
9088
  /**
8943
9089
  * Every key `<ui-icon>` draws by itself (the data-table action keys such as `view` / `edit` / `call` are accepted too, see `builtInActionIcon`).
8944
- * Each resolves with `iconPath(key)`. Includes `search`, `cup` (food / drink) and `wrench` (rental / tools), library source 2026-11-04, not yet published.
9090
+ * Each resolves with `iconPath(key)`. Includes `search`, `cup` (food / drink) and `wrench` (rental / tools), library source 2026-11-04, and `cash` (banknote) and `dollar` (payment methods / amounts), library source 2026-11-05, not yet published.
8945
9091
  */
8946
9092
  export declare const ICON_NAMES: readonly string[];
8947
9093
  /** The SVG path (24×24 stroke icon) for an icon key, or undefined when the key is unknown. */
8948
9094
  export declare function iconPath(name: string): string | undefined;
8949
9095
  /** Keys with an icon of their own (the data-table action keys are accepted too — see `builtInActionIcon`). */
8950
- export type IconName = 'add' | 'close' | 'check' | 'upload' | 'image' | 'chevron-up' | 'chevron-down' | 'arrow-left' | 'bell' | 'print' | 'lock' | 'shield' | 'arrow-up' | 'arrow-down' | 'arrow-right' | 'document' | 'grip' | 'card' | 'bank' | 'view' | 'view-off' | 'edit' | 'delete' | 'download' | 'duplicate' | 'archive' | 'restore' | 'share' | 'email' | 'message' | 'call' | 'refund' | 'chevron-right' | 'link' | 'save' | 'chart' | 'clipboard' | 'unlink' | 'send' | 'refresh' | 'search' | 'cup' | 'wrench' | 'history' | 'move-up' | 'move-down';
9096
+ export type IconName = 'add' | 'close' | 'check' | 'upload' | 'image' | 'chevron-up' | 'chevron-down' | 'arrow-left' | 'bell' | 'print' | 'lock' | 'shield' | 'arrow-up' | 'arrow-down' | 'arrow-right' | 'document' | 'grip' | 'card' | 'bank' | 'view' | 'view-off' | 'edit' | 'delete' | 'download' | 'duplicate' | 'archive' | 'restore' | 'share' | 'email' | 'message' | 'call' | 'refund' | 'chevron-right' | 'link' | 'save' | 'chart' | 'clipboard' | 'unlink' | 'send' | 'refresh' | 'search' | 'cup' | 'wrench' | 'cash' | 'dollar' | 'history' | 'move-up' | 'move-down';
8951
9097
  /**
8952
9098
  * A clickable icon. The host passes a key (`name="delete"`) and the library draws that icon; clicking it emits
8953
9099
  * `iconClick`, and the host does the actual work (delete the row, open a panel, …).
@@ -8974,7 +9120,7 @@ export declare class IconComponent {
8974
9120
  readonly ariaLabel: import("@angular/core").InputSignal<string>;
8975
9121
  /** Icon size in px. */
8976
9122
  readonly size: import("@angular/core").InputSignal<number>;
8977
- readonly variant: import("@angular/core").InputSignal<"danger" | "default">;
9123
+ readonly variant: import("@angular/core").InputSignal<"default" | "danger">;
8978
9124
  readonly disabled: import("@angular/core").InputSignal<boolean>;
8979
9125
  /** The host is running the request this icon started: a spinner replaces the picture and the button is disabled (no click) until it is false again. */
8980
9126
  readonly loading: import("@angular/core").InputSignal<boolean>;
@@ -9285,7 +9431,7 @@ export declare class AddressInputComponent implements ControlValueAccessor, Vali
9285
9431
  * the object. `valueChange` always emits the object. A written string is read with `parseAddressValue` for display only: the control keeps
9286
9432
  * the original text until the user edits a field (so a text the parser cannot split is not rewritten on load).
9287
9433
  */
9288
- readonly valueFormat: import("@angular/core").InputSignal<"object" | "auto" | "text">;
9434
+ readonly valueFormat: import("@angular/core").InputSignal<"object" | "text" | "auto">;
9289
9435
  /** ZIP rule; the default is the US 5 digits / 5+4 rule. `null` accepts any non-empty ZIP. The ZIP is validated and stored trimmed. */
9290
9436
  readonly zipPattern: import("@angular/core").InputSignal<RegExp | null>;
9291
9437
  /** Message shown when the ZIP breaks `zipPattern`. */
@@ -11067,7 +11213,7 @@ export declare class PdfHotspotComponent {
11067
11213
  /** `ready`: clickable; `blocked`: disabled (a prerequisite is missing); `signed`: shows `image`. */
11068
11214
  readonly state: import("@angular/core").InputSignal<"ready" | "blocked" | "signed">;
11069
11215
  /** `warning` gives the ready state an amber look (e.g. for initials), default is blue. */
11070
- readonly tone: import("@angular/core").InputSignal<"primary" | "warning">;
11216
+ readonly tone: import("@angular/core").InputSignal<"warning" | "primary">;
11071
11217
  /** Text of the ready button (e.g. "Sign Here"). */
11072
11218
  readonly label: import("@angular/core").InputSignal<string>;
11073
11219
  /** Text of the blocked button (e.g. "Add signature above"). */
@@ -11204,7 +11350,7 @@ export declare class DetailCardComponent {
11204
11350
  /** true (default) = the title is displayed in capitals (CSS only); false = shown as written. The text, aria-label and heading name are never changed. */
11205
11351
  readonly uppercaseTitle: import("@angular/core").InputSignal<boolean>;
11206
11352
  /** 1-6 makes the title a real heading for screen readers (role=heading, aria-level); null keeps it plain text. */
11207
- readonly headingLevel: import("@angular/core").InputSignal<1 | 4 | 2 | 3 | 5 | 6 | null>;
11353
+ readonly headingLevel: import("@angular/core").InputSignal<1 | 2 | 3 | 4 | 5 | 6 | null>;
11208
11354
  /** Optional id for the title text; the card is then labelled by it. Without it the title is the card's aria-label. */
11209
11355
  readonly titleId: import("@angular/core").InputSignal<string>;
11210
11356
  /** Accessible name of the card when the header gives none (no header, or no title). A visible title wins; blank = no name. */
@@ -11218,7 +11364,7 @@ export declare class DetailCardComponent {
11218
11364
  /** Background colour of the footer bar (the `[card-footer]` slot) as any CSS colour. Empty = no colour of its own. */
11219
11365
  readonly footerBackground: import("@angular/core").InputSignal<string>;
11220
11366
  /** Alignment of the `[card-footer]` content: `'start'` (default, unchanged) or `'end'` = a right-aligned action row with an 8px gap. */
11221
- readonly footerAlign: import("@angular/core").InputSignal<"start" | "end">;
11367
+ readonly footerAlign: import("@angular/core").InputSignal<"end" | "start">;
11222
11368
  /** Text colour as any CSS colour (`#fff`, `var(--on-dark)` …). Empty = the default colours. Colours the title, subtitle, chevron and body text. */
11223
11369
  readonly textColor: import("@angular/core").InputSignal<string>;
11224
11370
  /** false = no header at all (no title, edit button, toggle or divider): the card is only the body, always open. */