@forgeroute/ui 0.4.17 → 0.4.19

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.17",
3
+ "version": "0.4.19",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=22.0.0",
6
6
  "@angular/core": ">=22.0.0",
@@ -973,7 +973,7 @@ export declare class SelectComponent implements ControlValueAccessor, Validator,
973
973
  readonly error: import("@angular/core").InputSignal<string>;
974
974
  /** Reveal the built-in error messages now (e.g. after a failed Save click), without waiting for blur. */
975
975
  readonly showErrors: import("@angular/core").InputSignal<boolean>;
976
- readonly size: import("@angular/core").InputSignal<"sm" | "default">;
976
+ readonly size: import("@angular/core").InputSignal<"default" | "sm">;
977
977
  readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
978
978
  private readonly _cvaDisabled;
979
979
  protected readonly disabled: import("@angular/core").Signal<boolean>;
@@ -1237,6 +1237,13 @@ export declare class DataTableComponent<T extends Record<string, any>> implement
1237
1237
  * toolbar are all off, the header row above the table is not rendered at all.
1238
1238
  */
1239
1239
  readonly showSearch: import("@angular/core").InputSignal<boolean>;
1240
+ /**
1241
+ * Show the quick-filter tabs ("All / Active / ..."), which the table builds from the `/counts` endpoint. Defaults true:
1242
+ * with correct `/counts` data the tabs show. Set false for a table where the tabs add nothing (a small breakdown table in a
1243
+ * side panel); search, toolbar, column filters and the counts requests are unaffected. When the search box, the toolbar and the
1244
+ * tabs are all off, the header row is not rendered at all.
1245
+ */
1246
+ readonly showQuickTabs: import("@angular/core").InputSignal<boolean>;
1240
1247
  /** False when the header row would be empty (no search box, no toolbar, no quick-filter tabs). */
1241
1248
  protected readonly _showHeader: Signal<boolean>;
1242
1249
  /** Optional endpoint that returns Record<string,number> counts per quick-filter value. */
@@ -1765,6 +1772,11 @@ export declare class DataTableComponent<T extends Record<string, any>> implement
1765
1772
  "required": false;
1766
1773
  "isSignal": true;
1767
1774
  };
1775
+ "showQuickTabs": {
1776
+ "alias": "showQuickTabs";
1777
+ "required": false;
1778
+ "isSignal": true;
1779
+ };
1768
1780
  "countsEndpoint": {
1769
1781
  "alias": "countsEndpoint";
1770
1782
  "required": false;
@@ -1990,7 +2002,7 @@ export declare class ModalComponent implements OnInit, OnDestroy {
1990
2002
  readonly title: import("@angular/core").InputSignal<string>;
1991
2003
  readonly description: import("@angular/core").InputSignal<string>;
1992
2004
  readonly maxWidth: import("@angular/core").InputSignal<string>;
1993
- readonly bodyOverflow: import("@angular/core").InputSignal<"auto" | "visible" | "hidden">;
2005
+ readonly bodyOverflow: import("@angular/core").InputSignal<"hidden" | "auto" | "visible">;
1994
2006
  /** `data-testid` of the dialog element itself (the host `<ui-modal>` is always in the page, the dialog only while open). None when empty. */
1995
2007
  readonly dialogTestId: import("@angular/core").InputSignal<string>;
1996
2008
  /** Hides the header X button (e.g. while a request is running). Escape and a backdrop click still close unless `closable` is false. */
@@ -2374,7 +2386,7 @@ export declare class AudioPlayerComponent {
2374
2386
  /** Accessible name of the player. */
2375
2387
  readonly ariaLabel: import("@angular/core").InputSignal<string>;
2376
2388
  /** How much to load before play: 'metadata' (default), 'auto' or 'none'. */
2377
- readonly preload: import("@angular/core").InputSignal<"auto" | "none" | "metadata">;
2389
+ readonly preload: import("@angular/core").InputSignal<"none" | "auto" | "metadata">;
2378
2390
  /** Fires when the browser can't load or decode the source. */
2379
2391
  readonly playbackError: import("@angular/core").OutputEmitterRef<void>;
2380
2392
  protected readonly failed: import("@angular/core").WritableSignal<boolean>;
@@ -2624,7 +2636,7 @@ export declare class CheckboxComponent implements ControlValueAccessor, Validato
2624
2636
  * 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.
2625
2637
  * Default null: plain label text, exactly as before. Single mode only.
2626
2638
  */
2627
- readonly headingLevel: import("@angular/core").InputSignal<5 | 3 | 1 | 2 | 4 | 6 | null>;
2639
+ readonly headingLevel: import("@angular/core").InputSignal<1 | 2 | 3 | 4 | 5 | 6 | null>;
2628
2640
  readonly indeterminate: import("@angular/core").InputSignal<boolean>;
2629
2641
  readonly checked: import("@angular/core").ModelSignal<boolean>;
2630
2642
  /**
@@ -3017,6 +3029,14 @@ export declare class StepperComponent {
3017
3029
  readonly ariaLabel: import("@angular/core").InputSignal<string>;
3018
3030
  /** Horizontal, <= 480px: show only the current step's label (`'current'`, default) or every label (`'all'`). */
3019
3031
  readonly labelsOnSmallScreens: import("@angular/core").InputSignal<"all" | "current">;
3032
+ /**
3033
+ * Horizontal only. `'beside'` (default): the label sits to the right of its circle. `'below'`: equal-width columns, the label centred under
3034
+ * its circle, one continuous line behind the circles that fills as steps complete; a complete step shows a check, the current step an
3035
+ * accent ring with a dot, an upcoming step an empty circle (no numbers). Circles are 40px (32px with `size="sm"`).
3036
+ */
3037
+ readonly labelPosition: import("@angular/core").InputSignal<"beside" | "below">;
3038
+ /** Viewport width in px below which a horizontal stepper is drawn vertical (labels beside the circles), e.g. `640`. null (default) = never. */
3039
+ readonly stackBelow: import("@angular/core").InputSignal<number | null>;
3020
3040
  /** CSS length (e.g. `10.5rem`): horizontal only - the list gets `min-width: calc(<step count> * <value>)`. Empty (default) = no minimum. */
3021
3041
  readonly minStepWidth: import("@angular/core").InputSignal<string>;
3022
3042
  /** true = the list scrolls sideways (`overflow-x: auto`, 4px top / bottom padding so focus rings are not clipped) instead of squeezing. Default false. */
@@ -3029,6 +3049,9 @@ export declare class StepperComponent {
3029
3049
  readonly stepClick: import("@angular/core").OutputEmitterRef<string>;
3030
3050
  private readonly _win;
3031
3051
  private readonly _narrow;
3052
+ private readonly _stacked;
3053
+ /** The orientation actually drawn: `orientation`, or vertical while the viewport is below `stackBelow`. */
3054
+ protected readonly orient: import("@angular/core").Signal<StepperOrientation>;
3032
3055
  /** True when `compact` is a pixel number and the viewport is below it (tokens use CSS media queries instead). */
3033
3056
  protected readonly compactPx: import("@angular/core").Signal<boolean>;
3034
3057
  private readonly _id;
@@ -3113,6 +3136,16 @@ export declare class StepperComponent {
3113
3136
  "required": false;
3114
3137
  "isSignal": true;
3115
3138
  };
3139
+ "labelPosition": {
3140
+ "alias": "labelPosition";
3141
+ "required": false;
3142
+ "isSignal": true;
3143
+ };
3144
+ "stackBelow": {
3145
+ "alias": "stackBelow";
3146
+ "required": false;
3147
+ "isSignal": true;
3148
+ };
3116
3149
  "minStepWidth": {
3117
3150
  "alias": "minStepWidth";
3118
3151
  "required": false;
@@ -3514,7 +3547,7 @@ export declare class PhoneNumberPickerComponent {
3514
3547
  protected readonly modeCtl: FormControl<string>;
3515
3548
  protected readonly zipCtl: FormControl<string>;
3516
3549
  protected readonly areaCtl: FormControl<string>;
3517
- protected readonly step: import("@angular/core").WritableSignal<3 | 1 | 2>;
3550
+ protected readonly step: import("@angular/core").WritableSignal<1 | 2 | 3>;
3518
3551
  protected readonly mode: import("@angular/core").WritableSignal<PhoneNumberSearchMode>;
3519
3552
  private readonly _zip;
3520
3553
  private readonly _area;
@@ -3628,7 +3661,7 @@ export declare class ButtonComponent {
3628
3661
  * `ghost-start`: a ghost button for list / section toggles - a full-width row with its content aligned to the start, transparent
3629
3662
  * background, hover tint and the normal focus ring. Pair it with `ariaExpanded` / `ariaPressed`; the label may contain a heading element.
3630
3663
  */
3631
- readonly variant: import("@angular/core").InputSignal<"primary" | "danger" | "warning" | "link" | "secondary" | "ghost" | "ghost-start" | "tab" | "icon" | "icon-danger">;
3664
+ readonly variant: import("@angular/core").InputSignal<"primary" | "secondary" | "danger" | "warning" | "link" | "ghost" | "ghost-start" | "tab" | "icon" | "icon-danger">;
3632
3665
  /** 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`). */
3633
3666
  readonly routerLink: import("@angular/core").InputSignal<string | readonly unknown[] | null>;
3634
3667
  /** Query params of the `routerLink` (e.g. `{ section: 'deal-defaults' }`). */
@@ -3674,7 +3707,7 @@ export declare class ButtonComponent {
3674
3707
  readonly color: import("@angular/core").InputSignal<string | undefined>;
3675
3708
  readonly active: import("@angular/core").InputSignal<boolean>;
3676
3709
  readonly size: import("@angular/core").InputSignal<"sm" | "md" | "lg" | "xs">;
3677
- readonly type: import("@angular/core").InputSignal<"button" | "submit" | "reset">;
3710
+ readonly type: import("@angular/core").InputSignal<"reset" | "submit" | "button">;
3678
3711
  readonly disabled: import("@angular/core").InputSignal<boolean>;
3679
3712
  readonly loading: import("@angular/core").InputSignal<boolean>;
3680
3713
  readonly fullWidth: import("@angular/core").InputSignal<boolean>;
@@ -4069,7 +4102,7 @@ export declare class BulkMessagePanelComponent {
4069
4102
  readonly sending: import("@angular/core").InputSignal<boolean>;
4070
4103
  readonly closed: import("@angular/core").OutputEmitterRef<void>;
4071
4104
  readonly send: import("@angular/core").OutputEmitterRef<BulkMessageSendEvent>;
4072
- readonly channel: import("@angular/core").WritableSignal<"email" | "text">;
4105
+ readonly channel: import("@angular/core").WritableSignal<"text" | "email">;
4073
4106
  private readonly _subject;
4074
4107
  private readonly _body;
4075
4108
  get subject(): string;
@@ -4278,7 +4311,7 @@ export declare class TextInputComponent implements ControlValueAccessor, Validat
4278
4311
  readonly passwordRequirements: import("@angular/core").InputSignal<boolean>;
4279
4312
  /** Rules for `passwordRequirements`; default = the library's five rules (8+ characters, upper, lower, digit, special). */
4280
4313
  readonly passwordRules: import("@angular/core").InputSignal<readonly PasswordRule[] | undefined>;
4281
- readonly type: import("@angular/core").InputSignal<"number" | "email" | "text" | "tel" | "password" | "url">;
4314
+ readonly type: import("@angular/core").InputSignal<"number" | "text" | "email" | "tel" | "password" | "url">;
4282
4315
  readonly maxlength: import("@angular/core").InputSignal<number | undefined>;
4283
4316
  readonly required: import("@angular/core").InputSignal<boolean>;
4284
4317
  readonly autocomplete: import("@angular/core").InputSignal<string>;
@@ -4287,7 +4320,7 @@ export declare class TextInputComponent implements ControlValueAccessor, Validat
4287
4320
  * `search`, `text`, `none`). Empty (default) = the browser's default for the field, except `type="tel"`, which keeps `tel`.
4288
4321
  * It only picks the keyboard; it does not restrict what can be typed or pasted.
4289
4322
  */
4290
- readonly inputmode: import("@angular/core").InputSignal<"" | "email" | "text" | "none" | "search" | "tel" | "url" | "decimal" | "numeric">;
4323
+ readonly inputmode: import("@angular/core").InputSignal<"" | "none" | "text" | "search" | "email" | "tel" | "url" | "decimal" | "numeric">;
4291
4324
  readonly readonly: import("@angular/core").InputSignal<boolean>;
4292
4325
  readonly hint: import("@angular/core").InputSignal<string>;
4293
4326
  readonly error: import("@angular/core").InputSignal<string>;
@@ -4351,7 +4384,7 @@ export declare class TextInputComponent implements ControlValueAccessor, Validat
4351
4384
  protected readonly _stepAttr: import("@angular/core").Signal<string | null>;
4352
4385
  protected readonly _revealable: import("@angular/core").Signal<boolean>;
4353
4386
  protected readonly _shown: import("@angular/core").WritableSignal<boolean>;
4354
- protected readonly _inputType: import("@angular/core").Signal<"number" | "email" | "text" | "tel" | "password" | "url">;
4387
+ protected readonly _inputType: import("@angular/core").Signal<"number" | "text" | "email" | "tel" | "password" | "url">;
4355
4388
  protected readonly _eyePath: string;
4356
4389
  protected readonly _eyeOffPath: string;
4357
4390
  protected readonly _showRequirements: import("@angular/core").Signal<boolean>;
@@ -5875,7 +5908,7 @@ export declare class FormSectionComponent {
5875
5908
  }, {}, never, ["*"], true, never>;
5876
5909
  }
5877
5910
  export declare class FormRowComponent {
5878
- readonly cols: import("@angular/core").InputSignal<3 | 1 | 2 | 4>;
5911
+ readonly cols: import("@angular/core").InputSignal<1 | 2 | 3 | 4>;
5879
5912
  static ɵfac: i0.ɵɵFactoryDeclaration<FormRowComponent, never>;
5880
5913
  static ɵcmp: i0.ɵɵComponentDeclaration<FormRowComponent, "ui-form-row", never, {
5881
5914
  "cols": {
@@ -5892,7 +5925,7 @@ export declare class FormRowComponent {
5892
5925
  * child simply takes the full width. Keep a numeric span within the row's `cols` (use `all` for the whole row).
5893
5926
  */
5894
5927
  export declare class FormColSpanDirective {
5895
- readonly uiColSpan: import("@angular/core").InputSignal<"" | 3 | 2 | "2" | "3" | "all">;
5928
+ readonly uiColSpan: import("@angular/core").InputSignal<"" | "2" | "3" | 2 | 3 | "all">;
5896
5929
  protected readonly _class: import("@angular/core").Signal<string>;
5897
5930
  static ɵfac: i0.ɵɵFactoryDeclaration<FormColSpanDirective, never>;
5898
5931
  static ɵdir: i0.ɵɵDirectiveDeclaration<FormColSpanDirective, "[uiColSpan]", never, {
@@ -5932,6 +5965,14 @@ export declare class FormColSpanDirective {
5932
5965
  * <ui-button list-item-action variant="icon" ariaLabel="Remove" (click)="remove(d)">…</ui-button>
5933
5966
  * </ui-list-item>
5934
5967
  */
5968
+ /** One secondary line under the title: plain text, or text with a small icon and a tone (`danger` red, `warning` amber). */
5969
+ export type ListItemDetail = string | {
5970
+ text: string;
5971
+ icon?: string;
5972
+ tone?: 'default' | 'warning' | 'danger';
5973
+ };
5974
+ /** Colour of the optional leading icon tile. */
5975
+ export type ListItemIconColor = 'slate' | 'amber' | 'red' | 'blue' | 'green' | 'purple' | 'teal' | 'orange';
5935
5976
  export declare class ListItemComponent {
5936
5977
  /** Show a radio button, checkbox, or nothing on the left. */
5937
5978
  readonly leading: import("@angular/core").InputSignal<"none" | "checkbox" | "radio">;
@@ -5970,10 +6011,19 @@ export declare class ListItemComponent {
5970
6011
  * Pass whatever is relevant — email, phone, date, role, address, etc.
5971
6012
  * Falsy entries (null, undefined, '') are filtered out automatically.
5972
6013
  */
5973
- readonly details: import("@angular/core").InputSignal<(string | null | undefined)[]>;
6014
+ readonly details: import("@angular/core").InputSignal<(ListItemDetail | null | undefined)[]>;
6015
+ /** Optional leading icon: an icon key of `<ui-icon>` (e.g. `bell`, `task`, `email`) drawn in a tinted tile before the text. Default none. */
6016
+ readonly icon: import("@angular/core").InputSignal<string>;
6017
+ /** Colour of the icon tile. */
6018
+ readonly iconColor: import("@angular/core").InputSignal<ListItemIconColor>;
6019
+ protected readonly iconD: () => string | null;
5974
6020
  /** Emitted when the radio/checkbox changes. */
5975
6021
  readonly select: import("@angular/core").OutputEmitterRef<void>;
5976
- protected readonly visibleDetails: () => string[];
6022
+ protected readonly visibleDetails: () => {
6023
+ text: string;
6024
+ d: string | null;
6025
+ tone: "default" | "warning" | "danger";
6026
+ }[];
5977
6027
  static ɵfac: i0.ɵɵFactoryDeclaration<ListItemComponent, never>;
5978
6028
  static ɵcmp: i0.ɵɵComponentDeclaration<ListItemComponent, "ui-list-item", never, {
5979
6029
  "leading": {
@@ -6041,6 +6091,16 @@ export declare class ListItemComponent {
6041
6091
  "required": false;
6042
6092
  "isSignal": true;
6043
6093
  };
6094
+ "icon": {
6095
+ "alias": "icon";
6096
+ "required": false;
6097
+ "isSignal": true;
6098
+ };
6099
+ "iconColor": {
6100
+ "alias": "iconColor";
6101
+ "required": false;
6102
+ "isSignal": true;
6103
+ };
6044
6104
  }, {
6045
6105
  "select": "select";
6046
6106
  }, never, ["[list-item-action], [li-action]"], true, never>;
@@ -6174,6 +6234,10 @@ export declare class ListComponent<T = unknown> {
6174
6234
  /** Announcement after a move; receives the row label, the new position (1-based) and the list size. */
6175
6235
  readonly moveAnnouncement: import("@angular/core").InputSignal<(label: string, position: number, total: number) => string>;
6176
6236
  /** Fires with the new array when the user moves a row (`[(items)]`). The list does not change `items` itself. */
6237
+ /** Shows an arrow at the end of every row and makes the row open something: a click or Enter on the row (not on a button or link inside it) emits `itemClick`. Default false: no arrow, rows are not clickable. */
6238
+ readonly navigable: import("@angular/core").InputSignal<boolean>;
6239
+ /** The row of `[navigable]` that was clicked (or Enter was pressed on). */
6240
+ readonly itemClick: import("@angular/core").OutputEmitterRef<T>;
6177
6241
  readonly itemsChange: import("@angular/core").OutputEmitterRef<T[]>;
6178
6242
  /** Fires when the user moves a row. The host applies it (or uses `[(items)]`) and passes the new `items`. */
6179
6243
  readonly reorder: import("@angular/core").OutputEmitterRef<ListReorderEvent<T>>;
@@ -6202,6 +6266,8 @@ export declare class ListComponent<T = unknown> {
6202
6266
  * reordering is off or disabled, `from` is out of range, or nothing would change. Does not touch focus.
6203
6267
  */
6204
6268
  move(from: number, to: number): boolean;
6269
+ /** `[navigable]`: a click / Enter on the row itself emits the item; clicks on a control inside the row (button, link, field) are theirs. */
6270
+ private emitItemClick;
6205
6271
  protected onKeydown(e: KeyboardEvent): void;
6206
6272
  protected onClick(e: Event): void;
6207
6273
  protected onFocusOut(e: FocusEvent): void;
@@ -6301,7 +6367,13 @@ export declare class ListComponent<T = unknown> {
6301
6367
  "required": false;
6302
6368
  "isSignal": true;
6303
6369
  };
6370
+ "navigable": {
6371
+ "alias": "navigable";
6372
+ "required": false;
6373
+ "isSignal": true;
6374
+ };
6304
6375
  }, {
6376
+ "itemClick": "itemClick";
6305
6377
  "itemsChange": "itemsChange";
6306
6378
  "reorder": "reorder";
6307
6379
  }, ["rowTemplate"], ["[list-empty]"], true, never>;
@@ -6924,7 +6996,7 @@ export declare class AlertComponent {
6924
6996
  /** The SVG path (24×24 stroke icon) for an icon key, or undefined when the key is unknown. */
6925
6997
  export declare function iconPath(name: string): string | undefined;
6926
6998
  /** Keys with an icon of their own (the data-table action keys are accepted too — see `builtInActionIcon`). */
6927
- 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';
6999
+ 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';
6928
7000
  /**
6929
7001
  * A clickable icon. The host passes a key (`name="delete"`) and the library draws that icon; clicking it emits
6930
7002
  * `iconClick`, and the host does the actual work (delete the row, open a panel, …).
@@ -7527,7 +7599,7 @@ export type KpiCardValueColor = 'default' | 'green' | 'blue' | 'red';
7527
7599
  * Optional background: `background="#fef2f2"` fills the card with any CSS colour (default white), e.g. a soft red for money going out; the
7528
7600
  * text keeps its own colours, so pick a light shade.
7529
7601
  *
7530
- * Optional ring: `[progress]="67"` (+ `progressMax`, `progressVariant`, `progressSize`) draws a ui-progress-ring beside the label; extra lines
7602
+ * Optional ring (top-right corner, level with the icon when the card has one — no extra height; beside the label otherwise): `[progress]="67"` (+ `progressMax`, `progressVariant`, `progressSize`) draws a ui-progress-ring beside the label; extra lines
7531
7603
  * (a pace badge, a projection…) go in an element with the `kpi-footer` attribute.
7532
7604
  *
7533
7605
  * <ui-kpi-card label="Deals Closed" [value]="'' + deals" subtitle="Year to Date" icon="check-circle" color="blue" />
@@ -8483,7 +8555,7 @@ export declare class DetailCardComponent {
8483
8555
  /** true (default) = the title is displayed in capitals (CSS only); false = shown as written. The text, aria-label and heading name are never changed. */
8484
8556
  readonly uppercaseTitle: import("@angular/core").InputSignal<boolean>;
8485
8557
  /** 1-6 makes the title a real heading for screen readers (role=heading, aria-level); null keeps it plain text. */
8486
- readonly headingLevel: import("@angular/core").InputSignal<5 | 3 | 1 | 2 | 4 | 6 | null>;
8558
+ readonly headingLevel: import("@angular/core").InputSignal<1 | 2 | 3 | 4 | 5 | 6 | null>;
8487
8559
  /** Optional id for the title text; the card is then labelled by it. Without it the title is the card's aria-label. */
8488
8560
  readonly titleId: import("@angular/core").InputSignal<string>;
8489
8561
  /** Accessible name of the card when the header gives none (no header, or no title). A visible title wins; blank = no name. */
@@ -8506,7 +8578,7 @@ export declare class DetailCardComponent {
8506
8578
  readonly showEdit: import("@angular/core").InputSignal<boolean>;
8507
8579
  readonly editLabel: import("@angular/core").InputSignal<string>;
8508
8580
  readonly editClick: import("@angular/core").OutputEmitterRef<void>;
8509
- /** `data-testid` of the built-in Edit button (on the `ui-button` host); none when empty. */
8581
+ /** `data-testid` of the built-in Edit button (on the Edit `<button>`); none when empty. */
8510
8582
  readonly editTestId: import("@angular/core").InputSignal<string>;
8511
8583
  /** false = no pencil icon in the Edit button (text only). Default true: unchanged. */
8512
8584
  readonly editIcon: import("@angular/core").InputSignal<boolean>;
@@ -8941,7 +9013,8 @@ export declare class ColorInputComponent implements ControlValueAccessor, Valida
8941
9013
  * 'md' (default) 1rem (16px) title, 0.8125rem description, 28px tile, 16px icon; padding 14px 18px (12px 14px at 480px and narrower)
8942
9014
  * 'lg' 1.25rem (20px) title, 0.9375rem description, 36px tile, 20px icon; padding 18px 22px (14px 16px at 480px and narrower)
8943
9015
  * 'xl' 1.5rem (24px) title (1.375rem at 480px and narrower), 1rem description, 44px tile, 24px icon; padding 22px 26px (16px 18px at 480px and narrower)
8944
- * Padding is built in per size - there is no padding input.
9016
+ * Padding is built in per size. To drop one side of it use `noPaddingTop`, `noPaddingLeft` or `noPaddingBottom` (booleans, default
9017
+ * false; combine freely). Only that side becomes 0 at every size and screen width; the other sides keep their padding.
8945
9018
  *
8946
9019
  * Content slots:
8947
9020
  * - `[section-header-icon]`: your own icon (an `<svg>`, an `<img>` ...) shown in the tile instead of the `icon` input.
@@ -8974,6 +9047,12 @@ export declare class SectionHeaderComponent {
8974
9047
  readonly bordered: import("@angular/core").InputSignal<boolean>;
8975
9048
  /** Visual size: 'sm', 'md' (default), 'lg' or 'xl'. Independent of `level`; anything else renders as 'md'. */
8976
9049
  readonly size: import("@angular/core").InputSignal<"sm" | "md" | "lg" | "xl">;
9050
+ /** Remove the built-in top padding. */
9051
+ readonly noPaddingTop: import("@angular/core").InputSignal<boolean>;
9052
+ /** Remove the built-in left padding. */
9053
+ readonly noPaddingLeft: import("@angular/core").InputSignal<boolean>;
9054
+ /** Remove the built-in bottom padding. */
9055
+ readonly noPaddingBottom: import("@angular/core").InputSignal<boolean>;
8977
9056
  protected readonly titleId: string;
8978
9057
  protected readonly descriptionId: string;
8979
9058
  protected readonly headingLevel: import("@angular/core").Signal<number>;
@@ -9030,6 +9109,21 @@ export declare class SectionHeaderComponent {
9030
9109
  "required": false;
9031
9110
  "isSignal": true;
9032
9111
  };
9112
+ "noPaddingTop": {
9113
+ "alias": "noPaddingTop";
9114
+ "required": false;
9115
+ "isSignal": true;
9116
+ };
9117
+ "noPaddingLeft": {
9118
+ "alias": "noPaddingLeft";
9119
+ "required": false;
9120
+ "isSignal": true;
9121
+ };
9122
+ "noPaddingBottom": {
9123
+ "alias": "noPaddingBottom";
9124
+ "required": false;
9125
+ "isSignal": true;
9126
+ };
9033
9127
  }, {}, never, ["[section-header-icon]", "[section-header-actions]"], true, never>;
9034
9128
  }
9035
9129
  /**