@forgeroute/ui 0.4.73 → 0.4.74

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.
@@ -202,7 +202,9 @@ 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 }[] */
205
+ * Expected shape: { name: string; variant?: BadgeVariant; color?: string }[]. `color` is a custom hex colour (`#rgb` / `#rrggbb`,
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
+ * an invalid value is ignored. */
206
208
  tagsKey?: string;
207
209
  /**
208
210
  * `cellType: 'link'` — returns where the cell points for a row (`value` is `item[key]`), or null / undefined /
@@ -736,7 +738,17 @@ export declare class BadgeComponent {
736
738
  * 2. Fall back to auto-color based on the label string
737
739
  */
738
740
  readonly variant: import("@angular/core").InputSignal<BadgeVariant | null>;
741
+ /**
742
+ * A custom hex colour (`#rgb` or `#rrggbb`), e.g. the colour a user picked for a tag. It becomes the background and the text is
743
+ * dark or white, whichever reads better (WCAG contrast). It wins over `variant`; anything that is not a valid hex colour is
744
+ * ignored (the variant / automatic colour applies). Omit it and nothing changes.
745
+ */
746
+ readonly color: import("@angular/core").InputSignal<string | null>;
739
747
  protected readonly resolvedVariant: import("@angular/core").Signal<BadgeVariant>;
748
+ protected readonly customStyles: import("@angular/core").Signal<{
749
+ bg: string;
750
+ color: string;
751
+ } | null>;
740
752
  protected readonly styles: import("@angular/core").Signal<{
741
753
  bg: string;
742
754
  color: string;
@@ -753,6 +765,11 @@ export declare class BadgeComponent {
753
765
  "required": false;
754
766
  "isSignal": true;
755
767
  };
768
+ "color": {
769
+ "alias": "color";
770
+ "required": false;
771
+ "isSignal": true;
772
+ };
756
773
  }, {}, never, never, true, never>;
757
774
  }
758
775
  /**
@@ -1286,6 +1303,11 @@ export interface ImportFieldDef {
1286
1303
  key: string;
1287
1304
  label: string;
1288
1305
  required?: boolean;
1306
+ /**
1307
+ * An example of what the column should contain (e.g. `VACANT, OCCUPIED`, `500.00`, `YYYY-MM-DD`). It is shown under the field's
1308
+ * label in the column-mapping step as "e.g. <example>" and linked to the column dropdown for screen readers. Omit it and nothing changes.
1309
+ */
1310
+ example?: string;
1289
1311
  }
1290
1312
  export interface ImportSource {
1291
1313
  value: string;
@@ -1406,6 +1428,10 @@ export declare class ImportExportComponent {
1406
1428
  private csvFile;
1407
1429
  private readCsvFile;
1408
1430
  private autoMap;
1431
+ private static nextId;
1432
+ private readonly idPrefix;
1433
+ /** Id of a field's example hint (the column dropdown points at it with aria-describedby). */
1434
+ protected exampleId(field: ImportFieldDef): string;
1409
1435
  get canSubmit(): boolean;
1410
1436
  get unmappedRequiredFields(): string[];
1411
1437
  get unmatchedCsvHeaders(): string[];
@@ -1620,7 +1646,6 @@ export declare class DataTableComponent<T extends Record<string, any>> implement
1620
1646
  * own panel for `rows` and, when it has finished, calls `clearSelection()` and `refresh()` on the table.
1621
1647
  */
1622
1648
  readonly bulkPanelClick: import("@angular/core").OutputEmitterRef<BulkPanelEvent<T>>;
1623
- /** Emitted after a built-in single-row delete completes successfully. */
1624
1649
  /**
1625
1650
  * Emitted after every rows request that completes (a request superseded by a newer one emits nothing; first load, page, sort, search, tab, filter, `refresh()` ...): `{ ok: true, total }` when the rows
1626
1651
  * arrived (`total` = all matching rows), `{ ok: false, total }` when the request failed (the rows on screen are kept, `total` is the last known).
@@ -1630,6 +1655,7 @@ export declare class DataTableComponent<T extends Record<string, any>> implement
1630
1655
  ok: boolean;
1631
1656
  total: number;
1632
1657
  }>;
1658
+ /** Emitted after a built-in single-row delete completes successfully. */
1633
1659
  readonly rowDeleted: import("@angular/core").OutputEmitterRef<T>;
1634
1660
  /**
1635
1661
  * Optional drag-and-drop ordering of the rows. Off by default; when `true` (and the user has full access) every row gets a grip
@@ -2388,7 +2414,7 @@ export declare class ModalComponent implements OnInit, OnDestroy {
2388
2414
  */
2389
2415
  readonly describedBy: import("@angular/core").InputSignal<string | null>;
2390
2416
  readonly maxWidth: import("@angular/core").InputSignal<string>;
2391
- readonly bodyOverflow: import("@angular/core").InputSignal<"hidden" | "visible" | "auto">;
2417
+ readonly bodyOverflow: import("@angular/core").InputSignal<"auto" | "hidden" | "visible">;
2392
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. */
2393
2419
  readonly dialogTestId: import("@angular/core").InputSignal<string>;
2394
2420
  /** Hides the header X button (e.g. while a request is running). Escape and a backdrop click still close unless `closable` is false. */
@@ -2756,7 +2782,7 @@ export declare class ToastComponent {
2756
2782
  "action": "action";
2757
2783
  }, never, never, true, never>;
2758
2784
  }
2759
- export type ProgressBarVariant = 'blue' | 'green' | 'amber' | 'red' | 'slate';
2785
+ export type ProgressBarVariant = 'blue' | 'green' | 'amber' | 'orange' | 'red' | 'slate';
2760
2786
  /**
2761
2787
  * Horizontal progress bar with an optional trailing label (e.g. "3/5").
2762
2788
  * Pass `value` and `max`; the fill width is clamped to 0–100%, rounded to whole percents, and a value above 0 is never drawn narrower
@@ -2962,7 +2988,7 @@ export declare class AudioPlayerComponent {
2962
2988
  /** Accessible name of the player. */
2963
2989
  readonly ariaLabel: import("@angular/core").InputSignal<string>;
2964
2990
  /** How much to load before play: 'metadata' (default), 'auto' or 'none'. */
2965
- readonly preload: import("@angular/core").InputSignal<"none" | "metadata" | "auto">;
2991
+ readonly preload: import("@angular/core").InputSignal<"auto" | "none" | "metadata">;
2966
2992
  /** Fires when the browser can't load or decode the source. */
2967
2993
  readonly playbackError: import("@angular/core").OutputEmitterRef<void>;
2968
2994
  protected readonly failed: import("@angular/core").WritableSignal<boolean>;
@@ -3216,7 +3242,7 @@ export declare class CheckboxComponent implements ControlValueAccessor, Validato
3216
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.
3217
3243
  * Default null: plain label text, exactly as before. Single mode only.
3218
3244
  */
3219
- readonly headingLevel: import("@angular/core").InputSignal<2 | 1 | 5 | 3 | 4 | 6 | null>;
3245
+ readonly headingLevel: import("@angular/core").InputSignal<1 | 4 | 2 | 3 | 5 | 6 | null>;
3220
3246
  readonly indeterminate: import("@angular/core").InputSignal<boolean>;
3221
3247
  readonly checked: import("@angular/core").ModelSignal<boolean>;
3222
3248
  /**
@@ -3234,7 +3260,7 @@ export declare class CheckboxComponent implements ControlValueAccessor, Validato
3234
3260
  */
3235
3261
  protected readonly _legend: import("@angular/core").Signal<string>;
3236
3262
  /** Group mode: lay the options out in a column (default) or in a wrapping row. */
3237
- readonly orientation: import("@angular/core").InputSignal<"vertical" | "horizontal">;
3263
+ readonly orientation: import("@angular/core").InputSignal<"horizontal" | "vertical">;
3238
3264
  /**
3239
3265
  * Group mode: the ticked option values as a two-way model (`[(values)]`), an alternative to ngModel / forms. Unset (default) = the
3240
3266
  * group is driven by ngModel / FormControl only. Values that are not an option are dropped and the order follows `options`.
@@ -3615,13 +3641,13 @@ export declare class StepperComponent {
3615
3641
  /** Accessible name of the list. */
3616
3642
  readonly ariaLabel: import("@angular/core").InputSignal<string>;
3617
3643
  /** Horizontal, <= 480px: show only the current step's label (`'current'`, default) or every label (`'all'`). */
3618
- readonly labelsOnSmallScreens: import("@angular/core").InputSignal<"all" | "current">;
3644
+ readonly labelsOnSmallScreens: import("@angular/core").InputSignal<"current" | "all">;
3619
3645
  /**
3620
3646
  * Horizontal only. `'beside'` (default): the label sits to the right of its circle. `'below'`: equal-width columns, the label centred under
3621
3647
  * its circle, one continuous line behind the circles that fills as steps complete; a complete step shows a check, the current step an
3622
3648
  * accent ring with a dot, an upcoming step an empty circle (no numbers). Circles are 40px (32px with `size="sm"`).
3623
3649
  */
3624
- readonly labelPosition: import("@angular/core").InputSignal<"below" | "beside">;
3650
+ readonly labelPosition: import("@angular/core").InputSignal<"beside" | "below">;
3625
3651
  /** Viewport width in px below which a horizontal stepper is drawn vertical (labels beside the circles), e.g. `640`. null (default) = never. */
3626
3652
  readonly stackBelow: import("@angular/core").InputSignal<number | null>;
3627
3653
  /** CSS length (e.g. `10.5rem`): horizontal only - the list gets `min-width: calc(<step count> * <value>)`. Empty (default) = no minimum. */
@@ -3653,7 +3679,7 @@ export declare class StepperComponent {
3653
3679
  protected readonly rows: import("@angular/core").Signal<{
3654
3680
  step: StepperStep;
3655
3681
  index: number;
3656
- state: "complete" | "current" | "upcoming";
3682
+ state: "current" | "complete" | "upcoming";
3657
3683
  error: boolean;
3658
3684
  errorMessage: string;
3659
3685
  selectable: boolean;
@@ -3966,13 +3992,13 @@ export declare class RadioGroupComponent implements ControlValueAccessor, Valida
3966
3992
  readonly error: import("@angular/core").InputSignal<string>;
3967
3993
  /** Reveal the built-in error messages now (e.g. after a failed Save click), without waiting for blur. */
3968
3994
  readonly showErrors: import("@angular/core").InputSignal<boolean>;
3969
- readonly orientation: import("@angular/core").InputSignal<"vertical" | "horizontal">;
3995
+ readonly orientation: import("@angular/core").InputSignal<"horizontal" | "vertical">;
3970
3996
  /** Native `name` shared by the radios; a unique one is generated when omitted. */
3971
3997
  readonly name: import("@angular/core").InputSignal<string>;
3972
3998
  /** `<ng-template uiRadioOptionContent="value">` children: content shown under that option while it is selected. */
3973
3999
  private readonly _optionContent;
3974
4000
  protected readonly _nestedContent: import("@angular/core").Signal<Map<string, TemplateRef<unknown>>>;
3975
- protected readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
4001
+ readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
3976
4002
  private readonly _cvaDisabled;
3977
4003
  protected readonly disabled: import("@angular/core").Signal<boolean>;
3978
4004
  private readonly _generatedName;
@@ -4139,7 +4165,7 @@ export declare class PhoneNumberPickerComponent {
4139
4165
  protected readonly modeCtl: FormControl<string>;
4140
4166
  protected readonly zipCtl: FormControl<string>;
4141
4167
  protected readonly areaCtl: FormControl<string>;
4142
- protected readonly step: import("@angular/core").WritableSignal<2 | 1 | 3>;
4168
+ protected readonly step: import("@angular/core").WritableSignal<1 | 2 | 3>;
4143
4169
  protected readonly mode: import("@angular/core").WritableSignal<PhoneNumberSearchMode>;
4144
4170
  private readonly _zip;
4145
4171
  private readonly _area;
@@ -4301,7 +4327,7 @@ export declare class ButtonComponent {
4301
4327
  readonly color: import("@angular/core").InputSignal<string | undefined>;
4302
4328
  readonly active: import("@angular/core").InputSignal<boolean>;
4303
4329
  readonly size: import("@angular/core").InputSignal<"sm" | "md" | "lg" | "xs">;
4304
- readonly type: import("@angular/core").InputSignal<"reset" | "submit" | "button">;
4330
+ readonly type: import("@angular/core").InputSignal<"button" | "reset" | "submit">;
4305
4331
  readonly disabled: import("@angular/core").InputSignal<boolean>;
4306
4332
  readonly loading: import("@angular/core").InputSignal<boolean>;
4307
4333
  readonly fullWidth: import("@angular/core").InputSignal<boolean>;
@@ -4510,6 +4536,10 @@ export interface PillTab {
4510
4536
  * its name. The tooltip is not shown in the horizontally scrolling mobile layout (it would be clipped).
4511
4537
  */
4512
4538
  info?: string;
4539
+ /** (library source 2026-11-05) Heading shown under the tab list while this tab is active, when the tabs' `showDescription` input is on. */
4540
+ title?: string;
4541
+ /** (library source 2026-11-05) Explanatory paragraph shown under the heading while this tab is active (`showDescription`). */
4542
+ description?: string;
4513
4543
  }
4514
4544
  /**
4515
4545
  * Pill-style tabs following the WAI-ARIA tabs pattern: each tab is a real <button role="tab">,
@@ -4526,7 +4556,7 @@ export declare class PillTabsComponent {
4526
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. */
4527
4557
  readonly noWrap: import("@angular/core").InputSignal<boolean>;
4528
4558
  /** 'vertical' stacks the tabs in a column (Up/Down arrows move between them, `aria-orientation="vertical"`). Default 'horizontal' = unchanged. */
4529
- readonly orientation: import("@angular/core").InputSignal<"vertical" | "horizontal">;
4559
+ readonly orientation: import("@angular/core").InputSignal<"horizontal" | "vertical">;
4530
4560
  protected readonly vertical: () => boolean;
4531
4561
  /**
4532
4562
  * (library source 2026-11-04, not yet published) Associate the tabs with their panels: every tab gets
@@ -4539,7 +4569,18 @@ export declare class PillTabsComponent {
4539
4569
  * `panel-` when this is on; in development mode a `console.warn` names such a key.
4540
4570
  */
4541
4571
  readonly controlsPanels: import("@angular/core").InputSignal<boolean>;
4572
+ /**
4573
+ * (library source 2026-11-05) Show the ACTIVE tab's `title` (heading) and `description` (paragraph) under the tab list. Default false = no extra DOM.
4574
+ * A tab with only one of them renders only that one; a tab with neither renders nothing. The ids are `<name>--title` / `<name>--description`
4575
+ * (`pillTabTitleId` / `pillTabDescriptionId`); `[uiTabPanel] [describedByHeader]="true"` points the panel's `aria-describedby` at the description.
4576
+ */
4577
+ readonly showDescription: import("@angular/core").InputSignal<boolean>;
4578
+ /** Heading level of the active tab's title when `showDescription` is on: 2 (default) or 3. */
4579
+ readonly headingLevel: import("@angular/core").InputSignal<2 | 3>;
4542
4580
  readonly tabChange: import("@angular/core").OutputEmitterRef<string>;
4581
+ protected readonly activeTab: import("@angular/core").Signal<PillTab | null>;
4582
+ protected titleId(): string;
4583
+ protected descriptionId(): string;
4543
4584
  /** True while pills are hidden past the start / end edge of the scroll area (drives the fade hints). */
4544
4585
  protected readonly canScrollStart: import("@angular/core").WritableSignal<boolean>;
4545
4586
  protected readonly canScrollEnd: import("@angular/core").WritableSignal<boolean>;
@@ -4590,6 +4631,16 @@ export declare class PillTabsComponent {
4590
4631
  "required": false;
4591
4632
  "isSignal": true;
4592
4633
  };
4634
+ "showDescription": {
4635
+ "alias": "showDescription";
4636
+ "required": false;
4637
+ "isSignal": true;
4638
+ };
4639
+ "headingLevel": {
4640
+ "alias": "headingLevel";
4641
+ "required": false;
4642
+ "isSignal": true;
4643
+ };
4593
4644
  }, {
4594
4645
  "tabChange": "tabChange";
4595
4646
  }, never, never, true, never>;
@@ -4598,6 +4649,10 @@ export declare class PillTabsComponent {
4598
4649
  export declare function pillTabId(name: string, key: string): string;
4599
4650
  /** Id a `uiTabPanel` element gets, and the id every tab's `aria-controls` points at when `controlsPanels` is on: `<name>-panel-<key>`. */
4600
4651
  export declare function pillTabPanelId(name: string, key: string): string;
4652
+ /** Id of the heading `ui-pill-tabs` renders for the active tab when `showDescription` is on: `<name>--title`. */
4653
+ export declare function pillTabTitleId(name: string): string;
4654
+ /** Id of the description paragraph `ui-pill-tabs` renders for the active tab when `showDescription` is on: `<name>--description`. */
4655
+ export declare function pillTabDescriptionId(name: string): string;
4601
4656
  /**
4602
4657
  * (library source 2026-11-04, not yet published) The panel that belongs to one `ui-pill-tabs` tab: a correct
4603
4658
  * WAI-ARIA tablist / tabpanel association with the smallest possible markup.
@@ -4614,6 +4669,8 @@ export declare function pillTabPanelId(name: string, key: string): string;
4614
4669
  * - `activeKey` the tabs' active key. When given (not null), the panel gets the `hidden` attribute while another tab is active
4615
4670
  * (the panels stay in the DOM, so their state survives a tab change). Leave it unset when the page renders only the
4616
4671
  * active panel itself (`@if`), then no `hidden` attribute is ever set.
4672
+ * - `describedByHeader` default false. true adds `aria-describedby="<tabsName>--description"` (the description `ui-pill-tabs` shows under the
4673
+ * tab list with `showDescription`) while the panel is not hidden. Turn it on only when the active tab has a `description`.
4617
4674
  * - `tabbable` default false. true adds `tabindex="0"` so a panel without any focusable content can be reached by keyboard
4618
4675
  * (WAI-ARIA tabs pattern).
4619
4676
  *
@@ -4632,6 +4689,9 @@ export declare class PillTabPanelDirective {
4632
4689
  readonly activeKey: import("@angular/core").InputSignal<string | null>;
4633
4690
  /** Makes the panel itself a Tab stop (for panels with no focusable content). Default false. */
4634
4691
  readonly tabbable: import("@angular/core").InputSignal<boolean>;
4692
+ /** Adds `aria-describedby` pointing at the description `ui-pill-tabs` renders under the tab list (`showDescription`). Default false. */
4693
+ readonly describedByHeader: import("@angular/core").InputSignal<boolean>;
4694
+ protected describedId(): string | null;
4635
4695
  protected panelId(): string;
4636
4696
  protected tabId(): string;
4637
4697
  protected isHidden(): boolean;
@@ -4657,6 +4717,11 @@ export declare class PillTabPanelDirective {
4657
4717
  "required": false;
4658
4718
  "isSignal": true;
4659
4719
  };
4720
+ "describedByHeader": {
4721
+ "alias": "describedByHeader";
4722
+ "required": false;
4723
+ "isSignal": true;
4724
+ };
4660
4725
  }, {}, never, never, true, never>;
4661
4726
  }
4662
4727
  export interface ContactLookup {
@@ -4845,7 +4910,7 @@ export declare class BulkMessagePanelComponent {
4845
4910
  readonly sending: import("@angular/core").InputSignal<boolean>;
4846
4911
  readonly closed: import("@angular/core").OutputEmitterRef<void>;
4847
4912
  readonly send: import("@angular/core").OutputEmitterRef<BulkMessageSendEvent>;
4848
- readonly channel: import("@angular/core").WritableSignal<"text" | "email">;
4913
+ readonly channel: import("@angular/core").WritableSignal<"email" | "text">;
4849
4914
  private readonly _subject;
4850
4915
  private readonly _body;
4851
4916
  get subject(): string;
@@ -4900,7 +4965,7 @@ export declare class ImportSourceGridComponent {
4900
4965
  /** The `value` of the picked source (highlighted). `tile` only: the `card` appearance does not keep a selection. */
4901
4966
  readonly selected: import("@angular/core").InputSignal<string>;
4902
4967
  /** `tile`: the compact buttons of the import window. `card`: one `ui-detail-card` per source with its own select button (used on a page). */
4903
- readonly appearance: import("@angular/core").InputSignal<"tile" | "card">;
4968
+ readonly appearance: import("@angular/core").InputSignal<"card" | "tile">;
4904
4969
  /** `card`: disables every card's button (for example while the page is saving). */
4905
4970
  readonly disabled: import("@angular/core").InputSignal<boolean>;
4906
4971
  /** `card`: the text of each card's button. */
@@ -5097,7 +5162,7 @@ export declare class BankAccountFormComponent implements UiFieldValidity {
5097
5162
  protected readonly accountError: import("@angular/core").Signal<"" | "Account number must be at least 4 digits.">;
5098
5163
  protected readonly confirmError: import("@angular/core").Signal<"" | "Account numbers do not match.">;
5099
5164
  /** First reason the form cannot be submitted ('' when it can). */
5100
- readonly errorMessage: import("@angular/core").Signal<"" | "Routing number must be 9 digits." | "Account number must be at least 4 digits." | "Account numbers do not match." | "Account holder name is required." | "Routing number is required." | "Account number is required." | "Confirm account number is required." | "Select a valid account type." | "Select a valid holder type." | "You must authorize ACH debits to continue.">;
5165
+ readonly errorMessage: import("@angular/core").Signal<"" | "Account holder name is required." | "Routing number is required." | "Routing number must be 9 digits." | "Account number is required." | "Account number must be at least 4 digits." | "Confirm account number is required." | "Account numbers do not match." | "Select a valid account type." | "Select a valid holder type." | "You must authorize ACH debits to continue.">;
5101
5166
  /** True while the form cannot be submitted (`UiFieldValidity`). */
5102
5167
  readonly invalid: import("@angular/core").Signal<boolean>;
5103
5168
  /** True when the form can be submitted (ignores `disabled` / `busy`). */
@@ -5373,7 +5438,7 @@ export declare class TextInputComponent implements ControlValueAccessor, Validat
5373
5438
  readonly passwordRequirements: import("@angular/core").InputSignal<boolean>;
5374
5439
  /** Rules for `passwordRequirements`; default = the library's five rules (8+ characters, upper, lower, digit, special). */
5375
5440
  readonly passwordRules: import("@angular/core").InputSignal<readonly PasswordRule[] | undefined>;
5376
- readonly type: import("@angular/core").InputSignal<"number" | "text" | "email" | "password" | "tel" | "url">;
5441
+ readonly type: import("@angular/core").InputSignal<"number" | "email" | "text" | "tel" | "password" | "url">;
5377
5442
  readonly maxlength: import("@angular/core").InputSignal<number | undefined>;
5378
5443
  readonly required: import("@angular/core").InputSignal<boolean>;
5379
5444
  readonly autocomplete: import("@angular/core").InputSignal<string>;
@@ -5382,7 +5447,7 @@ export declare class TextInputComponent implements ControlValueAccessor, Validat
5382
5447
  * `search`, `text`, `none`). Empty (default) = the browser's default for the field, except `type="tel"`, which keeps `tel`.
5383
5448
  * It only picks the keyboard; it does not restrict what can be typed or pasted.
5384
5449
  */
5385
- readonly inputmode: import("@angular/core").InputSignal<"" | "none" | "text" | "email" | "search" | "tel" | "url" | "decimal" | "numeric">;
5450
+ readonly inputmode: import("@angular/core").InputSignal<"" | "email" | "search" | "none" | "text" | "tel" | "url" | "decimal" | "numeric">;
5386
5451
  readonly readonly: import("@angular/core").InputSignal<boolean>;
5387
5452
  readonly hint: import("@angular/core").InputSignal<string>;
5388
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. */
@@ -5454,7 +5519,7 @@ export declare class TextInputComponent implements ControlValueAccessor, Validat
5454
5519
  protected readonly _stepAttr: import("@angular/core").Signal<string | null>;
5455
5520
  protected readonly _revealable: import("@angular/core").Signal<boolean>;
5456
5521
  protected readonly _shown: import("@angular/core").WritableSignal<boolean>;
5457
- protected readonly _inputType: import("@angular/core").Signal<"number" | "text" | "email" | "password" | "tel" | "url">;
5522
+ protected readonly _inputType: import("@angular/core").Signal<"number" | "email" | "text" | "tel" | "password" | "url">;
5458
5523
  protected readonly _eyePath: string;
5459
5524
  protected readonly _eyeOffPath: string;
5460
5525
  protected readonly _showRequirements: import("@angular/core").Signal<boolean>;
@@ -5773,7 +5838,7 @@ export declare class TextareaInputComponent implements ControlValueAccessor, Val
5773
5838
  readonly monospace: import("@angular/core").InputSignal<boolean>;
5774
5839
  /** Reveal the built-in error messages now (e.g. after a failed Save click), without waiting for blur. */
5775
5840
  readonly showErrors: import("@angular/core").InputSignal<boolean>;
5776
- protected readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
5841
+ readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
5777
5842
  private readonly _cvaDisabled;
5778
5843
  protected readonly disabled: import("@angular/core").Signal<boolean>;
5779
5844
  protected readonly _value: import("@angular/core").WritableSignal<string>;
@@ -6063,7 +6128,7 @@ export declare class FileInputComponent implements ControlValueAccessor, Validat
6063
6128
  readonly fileRemoved: import("@angular/core").OutputEmitterRef<void>;
6064
6129
  /** Emits whenever the field becomes invalid / valid. */
6065
6130
  readonly invalidChange: import("@angular/core").OutputEmitterRef<boolean>;
6066
- protected readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
6131
+ readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
6067
6132
  private readonly _cvaDisabled;
6068
6133
  protected readonly disabled: import("@angular/core").Signal<boolean>;
6069
6134
  protected readonly _files: import("@angular/core").WritableSignal<File[]>;
@@ -6369,7 +6434,7 @@ export declare class DatetimeInputComponent implements ControlValueAccessor, Val
6369
6434
  readonly error: import("@angular/core").InputSignal<string>;
6370
6435
  /** Reveal the built-in error messages now (e.g. after a failed Save click), without waiting for blur. */
6371
6436
  readonly showErrors: import("@angular/core").InputSignal<boolean>;
6372
- protected readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
6437
+ readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
6373
6438
  private readonly _cvaDisabled;
6374
6439
  protected readonly disabled: import("@angular/core").Signal<boolean>;
6375
6440
  protected readonly _value: import("@angular/core").WritableSignal<string>;
@@ -6645,7 +6710,8 @@ export declare class ComboboxComponent<T = unknown> implements ControlValueAcces
6645
6710
  readonly invalidChange: import("@angular/core").OutputEmitterRef<boolean>;
6646
6711
  readonly focused: import("@angular/core").OutputEmitterRef<void>;
6647
6712
  readonly blurred: import("@angular/core").OutputEmitterRef<void>;
6648
- protected readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
6713
+ /** Disables the field (`[disabled]="x()"`). Public so templates compile; ngModel / FormControl `disable()` still works (effective disabled = this OR the forms API). */
6714
+ readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
6649
6715
  private readonly _cvaDisabled;
6650
6716
  protected readonly disabled: import("@angular/core").Signal<boolean>;
6651
6717
  private readonly _field;
@@ -6967,7 +7033,7 @@ export declare class DropdownComponent {
6967
7033
  readonly loader: import("@angular/core").InputSignal<(() => Promise<DropdownItem[]>) | null>;
6968
7034
  readonly active: import("@angular/core").InputSignal<boolean>;
6969
7035
  readonly activeValue: import("@angular/core").InputSignal<string>;
6970
- readonly variant: import("@angular/core").InputSignal<"badge" | "button">;
7036
+ readonly variant: import("@angular/core").InputSignal<"button" | "badge">;
6971
7037
  /** Trigger size for `variant="button"`: `sm` (default, the compact toolbar look) or `md` (same padding and type as a medium `ui-button`). */
6972
7038
  readonly size: import("@angular/core").InputSignal<"sm" | "md">;
6973
7039
  readonly menuWidth: import("@angular/core").InputSignal<string>;
@@ -7280,7 +7346,7 @@ export declare class FormSectionComponent {
7280
7346
  }, {}, never, ["*"], true, never>;
7281
7347
  }
7282
7348
  export declare class FormRowComponent {
7283
- readonly cols: import("@angular/core").InputSignal<2 | 1 | 3 | 4>;
7349
+ readonly cols: import("@angular/core").InputSignal<1 | 4 | 2 | 3>;
7284
7350
  static ɵfac: i0.ɵɵFactoryDeclaration<FormRowComponent, never>;
7285
7351
  static ɵcmp: i0.ɵɵComponentDeclaration<FormRowComponent, "ui-form-row", never, {
7286
7352
  "cols": {
@@ -7297,7 +7363,7 @@ export declare class FormRowComponent {
7297
7363
  * child simply takes the full width. Keep a numeric span within the row's `cols` (use `all` for the whole row).
7298
7364
  */
7299
7365
  export declare class FormColSpanDirective {
7300
- readonly uiColSpan: import("@angular/core").InputSignal<"" | 2 | 3 | "2" | "3" | "all">;
7366
+ readonly uiColSpan: import("@angular/core").InputSignal<"" | 2 | 3 | "all" | "2" | "3">;
7301
7367
  protected readonly _class: import("@angular/core").Signal<string>;
7302
7368
  static ɵfac: i0.ɵɵFactoryDeclaration<FormColSpanDirective, never>;
7303
7369
  static ɵdir: i0.ɵɵDirectiveDeclaration<FormColSpanDirective, "[uiColSpan]", never, {
@@ -8495,9 +8561,9 @@ export declare class ChipGroupComponent {
8495
8561
  readonly spaceAbove: import("@angular/core").InputSignal<"none" | "sm" | "md">;
8496
8562
  /** Space below the chip group. */
8497
8563
  readonly spaceBelow: import("@angular/core").InputSignal<"none" | "sm" | "md">;
8498
- protected readonly _gap: import("@angular/core").Signal<"8px" | "12px" | "6px">;
8499
- protected readonly _spaceAbove: import("@angular/core").Signal<"0" | "12px" | "6px">;
8500
- protected readonly _spaceBelow: import("@angular/core").Signal<"0" | "12px" | "6px">;
8564
+ protected readonly _gap: import("@angular/core").Signal<"6px" | "12px" | "8px">;
8565
+ protected readonly _spaceAbove: import("@angular/core").Signal<"0" | "6px" | "12px">;
8566
+ protected readonly _spaceBelow: import("@angular/core").Signal<"0" | "6px" | "12px">;
8501
8567
  static ɵfac: i0.ɵɵFactoryDeclaration<ChipGroupComponent, never>;
8502
8568
  static ɵcmp: i0.ɵɵComponentDeclaration<ChipGroupComponent, "ui-chip-group", never, {
8503
8569
  "gap": {
@@ -8881,7 +8947,7 @@ export declare const ICON_NAMES: readonly string[];
8881
8947
  /** The SVG path (24×24 stroke icon) for an icon key, or undefined when the key is unknown. */
8882
8948
  export declare function iconPath(name: string): string | undefined;
8883
8949
  /** Keys with an icon of their own (the data-table action keys are accepted too — see `builtInActionIcon`). */
8884
- 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';
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';
8885
8951
  /**
8886
8952
  * A clickable icon. The host passes a key (`name="delete"`) and the library draws that icon; clicking it emits
8887
8953
  * `iconClick`, and the host does the actual work (delete the row, open a panel, …).
@@ -9020,7 +9086,7 @@ export declare class TimelineComponent {
9020
9086
  /** Any CSS length (e.g. `600px`). When set, the list scrolls inside a keyboard-focusable region of at most this height. Empty = no wrapper. */
9021
9087
  readonly maxHeight: import("@angular/core").InputSignal<string>;
9022
9088
  /** `below` (default): the time is under the title / description. `end`: the time sits right-aligned on the title row. */
9023
- readonly timePosition: import("@angular/core").InputSignal<"end" | "below">;
9089
+ readonly timePosition: import("@angular/core").InputSignal<"below" | "end">;
9024
9090
  /**
9025
9091
  * Group the items under a heading per calendar day of `dateTime` ("Today", "Yesterday", "Oct 3", "Oct 3, 2025"). Default false = no headings,
9026
9092
  * DOM unchanged. The given order is kept: consecutive items of one day share a heading, the same day appearing again later starts a new group.
@@ -9219,7 +9285,7 @@ export declare class AddressInputComponent implements ControlValueAccessor, Vali
9219
9285
  * the object. `valueChange` always emits the object. A written string is read with `parseAddressValue` for display only: the control keeps
9220
9286
  * the original text until the user edits a field (so a text the parser cannot split is not rewritten on load).
9221
9287
  */
9222
- readonly valueFormat: import("@angular/core").InputSignal<"object" | "text" | "auto">;
9288
+ readonly valueFormat: import("@angular/core").InputSignal<"object" | "auto" | "text">;
9223
9289
  /** 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. */
9224
9290
  readonly zipPattern: import("@angular/core").InputSignal<RegExp | null>;
9225
9291
  /** Message shown when the ZIP breaks `zipPattern`. */
@@ -10142,7 +10208,7 @@ export declare class RichTextEditorComponent implements ControlValueAccessor {
10142
10208
  readonly maxHeight: import("@angular/core").InputSignal<number>;
10143
10209
  /** Toolbar controls to remove. Everything is shown by default. */
10144
10210
  readonly hide: import("@angular/core").InputSignal<RichTextOption[]>;
10145
- protected readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
10211
+ readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
10146
10212
  private readonly _cvaDisabled;
10147
10213
  protected readonly disabled: import("@angular/core").Signal<boolean>;
10148
10214
  /** Disabled or read-only: the editor is not editable and every toolbar control is disabled. */
@@ -10403,6 +10469,240 @@ export declare class RadioComponent {
10403
10469
  "selected": "selected";
10404
10470
  }, never, ["*"], true, never>;
10405
10471
  }
10472
+ export interface SwatchOption {
10473
+ value: string;
10474
+ /** Accessible name and tooltip of the swatch (e.g. "Ocean blue"). */
10475
+ label: string;
10476
+ /** Any CSS colour (`#2563eb`, `rgb(...)`, `var(--x)`). */
10477
+ color: string;
10478
+ disabled?: boolean;
10479
+ /** `data-testid` of this option's native radio input; none when omitted. */
10480
+ testId?: string;
10481
+ }
10482
+ /**
10483
+ * (library source 2026-11-05, not yet published) Colour swatch picker: a `<fieldset role="radiogroup">` of native radio inputs
10484
+ * (arrow keys move + select natively, Home / End jump to the first / last enabled swatch), ControlValueAccessor with a string value
10485
+ * (`''` = nothing selected). The selected swatch shows a check mark and a ring (never colour alone); every swatch is named by its `label`
10486
+ * (accessible name + `title` tooltip). Built-in validation like `ui-radio-group`: `required` -> "<label> is required."; a value that is not one
10487
+ * of the `options` -> "Select a valid option." (not checked while `options` is empty); a disabled picker is never invalid.
10488
+ * `disabled` combines with the forms API (`setDisabledState`). 44px touch targets on touch devices and phones; the swatches wrap.
10489
+ */
10490
+ export declare class SwatchPickerComponent implements ControlValueAccessor, Validator, UiFieldValidity {
10491
+ private readonly _el;
10492
+ readonly label: import("@angular/core").InputSignal<string>;
10493
+ readonly options: import("@angular/core").InputSignal<SwatchOption[]>;
10494
+ readonly required: import("@angular/core").InputSignal<boolean>;
10495
+ readonly hint: import("@angular/core").InputSignal<string>;
10496
+ readonly error: import("@angular/core").InputSignal<string>;
10497
+ /** Reveal the built-in error messages now (e.g. after a failed Save click), without waiting for blur. */
10498
+ readonly showErrors: import("@angular/core").InputSignal<boolean>;
10499
+ /** Fixed number of swatches per row (0 = wrap freely, the default). On a phone the row wraps by width instead. */
10500
+ readonly columns: import("@angular/core").InputSignal<number>;
10501
+ /** Native `name` shared by the radios; a unique one is generated when omitted. */
10502
+ readonly name: import("@angular/core").InputSignal<string>;
10503
+ readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
10504
+ private readonly _cvaDisabled;
10505
+ protected readonly disabled: import("@angular/core").Signal<boolean>;
10506
+ private readonly _generatedName;
10507
+ protected get _name(): string;
10508
+ protected readonly _descId: string;
10509
+ protected readonly _value: import("@angular/core").WritableSignal<string>;
10510
+ private readonly _reveal;
10511
+ private readonly _issue;
10512
+ readonly invalid: import("@angular/core").Signal<boolean>;
10513
+ readonly errorMessage: import("@angular/core").Signal<string>;
10514
+ readonly invalidChange: import("@angular/core").OutputEmitterRef<boolean>;
10515
+ /** Emits the chosen value on a user pick. */
10516
+ readonly valueChange: import("@angular/core").OutputEmitterRef<string>;
10517
+ protected readonly _activeError: import("@angular/core").Signal<string>;
10518
+ private _onValidatorChange;
10519
+ constructor();
10520
+ ngOnChanges(): void;
10521
+ validate(control: AbstractControl): ValidationErrors | null;
10522
+ registerOnValidatorChange(fn: () => void): void;
10523
+ private _onChange;
10524
+ private _onTouched;
10525
+ writeValue(val: string): void;
10526
+ registerOnChange(fn: (v: string) => void): void;
10527
+ registerOnTouched(fn: () => void): void;
10528
+ setDisabledState(d: boolean): void;
10529
+ protected onSelect(value: string): void;
10530
+ /** Home / End select the first / last enabled swatch (arrow keys are native radio behaviour). */
10531
+ protected onKeydown(e: KeyboardEvent): void;
10532
+ /** Touched once focus leaves the whole group. */
10533
+ protected onFocusOut(event: FocusEvent): void;
10534
+ private _check;
10535
+ static ɵfac: i0.ɵɵFactoryDeclaration<SwatchPickerComponent, never>;
10536
+ static ɵcmp: i0.ɵɵComponentDeclaration<SwatchPickerComponent, "ui-swatch-picker", never, {
10537
+ "label": {
10538
+ "alias": "label";
10539
+ "required": false;
10540
+ "isSignal": true;
10541
+ };
10542
+ "options": {
10543
+ "alias": "options";
10544
+ "required": false;
10545
+ "isSignal": true;
10546
+ };
10547
+ "required": {
10548
+ "alias": "required";
10549
+ "required": false;
10550
+ "isSignal": true;
10551
+ };
10552
+ "hint": {
10553
+ "alias": "hint";
10554
+ "required": false;
10555
+ "isSignal": true;
10556
+ };
10557
+ "error": {
10558
+ "alias": "error";
10559
+ "required": false;
10560
+ "isSignal": true;
10561
+ };
10562
+ "showErrors": {
10563
+ "alias": "showErrors";
10564
+ "required": false;
10565
+ "isSignal": true;
10566
+ };
10567
+ "columns": {
10568
+ "alias": "columns";
10569
+ "required": false;
10570
+ "isSignal": true;
10571
+ };
10572
+ "name": {
10573
+ "alias": "name";
10574
+ "required": false;
10575
+ "isSignal": true;
10576
+ };
10577
+ "_disabledInput": {
10578
+ "alias": "disabled";
10579
+ "required": false;
10580
+ "isSignal": true;
10581
+ };
10582
+ }, {
10583
+ "invalidChange": "invalidChange";
10584
+ "valueChange": "valueChange";
10585
+ }, never, never, true, never>;
10586
+ }
10587
+ export interface IconPickerOption {
10588
+ value: string;
10589
+ /** Accessible name and tooltip of the icon (e.g. "Wrench"). */
10590
+ label: string;
10591
+ /** Key of a library icon (`<ui-icon>` / action key such as `wrench`, `history`). Defaults to `value` when neither `iconKey` nor `path` is given. */
10592
+ iconKey?: string;
10593
+ /** Raw SVG path (`d` value, 24x24 stroke icon); wins over `iconKey`. */
10594
+ path?: string;
10595
+ disabled?: boolean;
10596
+ /** `data-testid` of this option's native radio input; none when omitted. */
10597
+ testId?: string;
10598
+ }
10599
+ /**
10600
+ * (library source 2026-11-05, not yet published) Icon picker: a `<fieldset role="radiogroup">` of native radio inputs
10601
+ * (arrow keys move + select natively, Home / End jump to the first / last enabled icon), ControlValueAccessor with a string value
10602
+ * (`''` = nothing selected). The selected icon is inverted and shows a check mark (never colour alone); every icon is named by its `label`
10603
+ * (accessible name + `title` tooltip). Built-in validation like `ui-radio-group`: `required` -> "<label> is required."; a value that is not one
10604
+ * of the `options` -> "Select a valid option." (not checked while `options` is empty); a disabled picker is never invalid.
10605
+ * `disabled` combines with the forms API (`setDisabledState`). 44px touch targets on touch devices and phones; the icons wrap.
10606
+ */
10607
+ export declare class IconPickerComponent implements ControlValueAccessor, Validator, UiFieldValidity {
10608
+ private readonly _el;
10609
+ readonly label: import("@angular/core").InputSignal<string>;
10610
+ readonly options: import("@angular/core").InputSignal<IconPickerOption[]>;
10611
+ readonly required: import("@angular/core").InputSignal<boolean>;
10612
+ readonly hint: import("@angular/core").InputSignal<string>;
10613
+ readonly error: import("@angular/core").InputSignal<string>;
10614
+ /** Reveal the built-in error messages now (e.g. after a failed Save click), without waiting for blur. */
10615
+ readonly showErrors: import("@angular/core").InputSignal<boolean>;
10616
+ /** SVG path drawn for an option: its `path`, else the library icon `iconKey` (default: the option's `value`); '' when unknown. */
10617
+ protected _path(o: IconPickerOption): string;
10618
+ /** Fixed number of icons per row (0 = wrap freely, the default). On a phone the row wraps by width instead. */
10619
+ readonly columns: import("@angular/core").InputSignal<number>;
10620
+ /** Native `name` shared by the radios; a unique one is generated when omitted. */
10621
+ readonly name: import("@angular/core").InputSignal<string>;
10622
+ readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
10623
+ private readonly _cvaDisabled;
10624
+ protected readonly disabled: import("@angular/core").Signal<boolean>;
10625
+ private readonly _generatedName;
10626
+ protected get _name(): string;
10627
+ protected readonly _descId: string;
10628
+ protected readonly _value: import("@angular/core").WritableSignal<string>;
10629
+ private readonly _reveal;
10630
+ private readonly _issue;
10631
+ readonly invalid: import("@angular/core").Signal<boolean>;
10632
+ readonly errorMessage: import("@angular/core").Signal<string>;
10633
+ readonly invalidChange: import("@angular/core").OutputEmitterRef<boolean>;
10634
+ /** Emits the chosen value on a user pick. */
10635
+ readonly valueChange: import("@angular/core").OutputEmitterRef<string>;
10636
+ protected readonly _activeError: import("@angular/core").Signal<string>;
10637
+ private _onValidatorChange;
10638
+ constructor();
10639
+ ngOnChanges(): void;
10640
+ validate(control: AbstractControl): ValidationErrors | null;
10641
+ registerOnValidatorChange(fn: () => void): void;
10642
+ private _onChange;
10643
+ private _onTouched;
10644
+ writeValue(val: string): void;
10645
+ registerOnChange(fn: (v: string) => void): void;
10646
+ registerOnTouched(fn: () => void): void;
10647
+ setDisabledState(d: boolean): void;
10648
+ protected onSelect(value: string): void;
10649
+ /** Home / End select the first / last enabled icon (arrow keys are native radio behaviour). */
10650
+ protected onKeydown(e: KeyboardEvent): void;
10651
+ /** Touched once focus leaves the whole group. */
10652
+ protected onFocusOut(event: FocusEvent): void;
10653
+ private _check;
10654
+ static ɵfac: i0.ɵɵFactoryDeclaration<IconPickerComponent, never>;
10655
+ static ɵcmp: i0.ɵɵComponentDeclaration<IconPickerComponent, "ui-icon-picker", never, {
10656
+ "label": {
10657
+ "alias": "label";
10658
+ "required": false;
10659
+ "isSignal": true;
10660
+ };
10661
+ "options": {
10662
+ "alias": "options";
10663
+ "required": false;
10664
+ "isSignal": true;
10665
+ };
10666
+ "required": {
10667
+ "alias": "required";
10668
+ "required": false;
10669
+ "isSignal": true;
10670
+ };
10671
+ "hint": {
10672
+ "alias": "hint";
10673
+ "required": false;
10674
+ "isSignal": true;
10675
+ };
10676
+ "error": {
10677
+ "alias": "error";
10678
+ "required": false;
10679
+ "isSignal": true;
10680
+ };
10681
+ "showErrors": {
10682
+ "alias": "showErrors";
10683
+ "required": false;
10684
+ "isSignal": true;
10685
+ };
10686
+ "columns": {
10687
+ "alias": "columns";
10688
+ "required": false;
10689
+ "isSignal": true;
10690
+ };
10691
+ "name": {
10692
+ "alias": "name";
10693
+ "required": false;
10694
+ "isSignal": true;
10695
+ };
10696
+ "_disabledInput": {
10697
+ "alias": "disabled";
10698
+ "required": false;
10699
+ "isSignal": true;
10700
+ };
10701
+ }, {
10702
+ "invalidChange": "invalidChange";
10703
+ "valueChange": "valueChange";
10704
+ }, never, never, true, never>;
10705
+ }
10406
10706
  /**
10407
10707
  * Content shown directly under ONE option of a `ui-radio-group`, only while that option is selected (e.g. an address form under
10408
10708
  * "Ship to an alternate address"). Put an `<ng-template>` inside the group and name the option's value:
@@ -10465,7 +10765,7 @@ export declare class RadioMatrixComponent implements ControlValueAccessor, Valid
10465
10765
  readonly showErrors: import("@angular/core").InputSignal<boolean>;
10466
10766
  /** Prefix of the native radio `name`s (one name per row); a unique one is generated when omitted. */
10467
10767
  readonly name: import("@angular/core").InputSignal<string>;
10468
- protected readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
10768
+ readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
10469
10769
  private readonly _cvaDisabled;
10470
10770
  protected readonly disabled: import("@angular/core").Signal<boolean>;
10471
10771
  private readonly _generatedName;
@@ -10904,7 +11204,7 @@ export declare class DetailCardComponent {
10904
11204
  /** true (default) = the title is displayed in capitals (CSS only); false = shown as written. The text, aria-label and heading name are never changed. */
10905
11205
  readonly uppercaseTitle: import("@angular/core").InputSignal<boolean>;
10906
11206
  /** 1-6 makes the title a real heading for screen readers (role=heading, aria-level); null keeps it plain text. */
10907
- readonly headingLevel: import("@angular/core").InputSignal<2 | 1 | 5 | 3 | 4 | 6 | null>;
11207
+ readonly headingLevel: import("@angular/core").InputSignal<1 | 4 | 2 | 3 | 5 | 6 | null>;
10908
11208
  /** Optional id for the title text; the card is then labelled by it. Without it the title is the card's aria-label. */
10909
11209
  readonly titleId: import("@angular/core").InputSignal<string>;
10910
11210
  /** Accessible name of the card when the header gives none (no header, or no title). A visible title wins; blank = no name. */
@@ -10918,7 +11218,7 @@ export declare class DetailCardComponent {
10918
11218
  /** Background colour of the footer bar (the `[card-footer]` slot) as any CSS colour. Empty = no colour of its own. */
10919
11219
  readonly footerBackground: import("@angular/core").InputSignal<string>;
10920
11220
  /** Alignment of the `[card-footer]` content: `'start'` (default, unchanged) or `'end'` = a right-aligned action row with an 8px gap. */
10921
- readonly footerAlign: import("@angular/core").InputSignal<"end" | "start">;
11221
+ readonly footerAlign: import("@angular/core").InputSignal<"start" | "end">;
10922
11222
  /** Text colour as any CSS colour (`#fff`, `var(--on-dark)` …). Empty = the default colours. Colours the title, subtitle, chevron and body text. */
10923
11223
  readonly textColor: import("@angular/core").InputSignal<string>;
10924
11224
  /** false = no header at all (no title, edit button, toggle or divider): the card is only the body, always open. */
@@ -11547,7 +11847,7 @@ export declare class ColorInputComponent implements ControlValueAccessor, Valida
11547
11847
  readonly presets: import("@angular/core").InputSignal<ColorPreset[]>;
11548
11848
  /** Emits whenever the field becomes invalid / valid. */
11549
11849
  readonly invalidChange: import("@angular/core").OutputEmitterRef<boolean>;
11550
- protected readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
11850
+ readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
11551
11851
  private readonly _cvaDisabled;
11552
11852
  protected readonly disabled: import("@angular/core").Signal<boolean>;
11553
11853
  /** Current model value (what the form control holds). */
@@ -13521,7 +13821,7 @@ export declare class SetupWizardComponent {
13521
13821
  protected customHintId(): string;
13522
13822
  protected readonly importBlocked: import("@angular/core").Signal<boolean>;
13523
13823
  /** The step's own two parts (`splitLayout`) show as two tabs, one card at a time; this is the open one (it starts on the app's part on every visit). */
13524
- protected readonly splitTab: import("@angular/core").WritableSignal<"extra" | "main">;
13824
+ protected readonly splitTab: import("@angular/core").WritableSignal<"main" | "extra">;
13525
13825
  protected readonly splitTabs: import("@angular/core").Signal<{
13526
13826
  key: string;
13527
13827
  label: string;
@@ -15688,7 +15988,7 @@ export declare class PaymentSidePanelComponent {
15688
15988
  private readonly terminalAvailable;
15689
15989
  /** value -> label of every live method the rendered plugins contribute (the first plugin wins a duplicate value). */
15690
15990
  private readonly liveMethods;
15691
- protected readonly kind: import("@angular/core").Signal<"none" | "manual" | "live" | "terminal">;
15991
+ protected readonly kind: import("@angular/core").Signal<"none" | "live" | "terminal" | "manual">;
15692
15992
  private kindOf;
15693
15993
  /** The method list as shown: record-only built-ins (a plugin takes over its own values), plugin extras, and only manual ones while a split is being built. */
15694
15994
  readonly methodList: import("@angular/core").Signal<PaymentMethodOption[]>;