yukit-web 0.0.4 → 0.0.6

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.
@@ -27,6 +27,7 @@ import * as i1$a from '@spartan-ng/brain/dialog';
27
27
  import * as i1$b from '@spartan-ng/brain/alert-dialog';
28
28
  import * as i1$c from 'yukit-web/helm/attachment';
29
29
  import { HlmAttachmentAction } from 'yukit-web/helm/attachment';
30
+ import { RouterLink } from '@angular/router';
30
31
  import * as i1$d from 'yukit-web/helm/sidebar';
31
32
  export { HlmSidebarConfig as YuwSidebarConfigDto, HlmSidebarService as YuwSidebarService, SidebarVariant as YuwSidebarServiceVariantDto, provideHlmSidebarConfig as provideYuwSidebarConfig } from 'yukit-web/helm/sidebar';
32
33
 
@@ -89,6 +90,7 @@ declare abstract class YuwValueAccessorBase<T> implements ControlValueAccessor {
89
90
 
90
91
  type YuwInputTypeDto = 'text' | 'email' | 'tel' | 'url' | 'number';
91
92
  type YuwInputModeDto = 'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url';
93
+ type YuwFieldSizeDto = 'default' | 'xs' | 'sm' | 'lg';
92
94
  interface YuwTextFieldContract {
93
95
  readonly value: ModelSignal<string>;
94
96
  readonly inputId: InputSignal<string | undefined>;
@@ -209,7 +211,7 @@ interface YuwButtonGroupClickDto {
209
211
  */
210
212
  declare class YuwButtonComponent {
211
213
  private readonly _host;
212
- readonly variant: _angular_core.InputSignal<"secondary" | "destructive" | "default" | "outline" | "ghost" | "link" | null | undefined>;
214
+ readonly variant: _angular_core.InputSignal<"default" | "secondary" | "destructive" | "outline" | "ghost" | "link" | null | undefined>;
213
215
  readonly size: _angular_core.InputSignal<"default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined>;
214
216
  readonly color: _angular_core.InputSignal<YuwColorDto>;
215
217
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
@@ -229,7 +231,7 @@ declare class YuwButtonComponent {
229
231
  protected readonly _textClass = "bg-transparent text-foreground border-border dark:border-input";
230
232
  protected readonly _isGroup: _angular_core.Signal<boolean>;
231
233
  protected readonly _animationDisabled: _angular_core.Signal<boolean>;
232
- protected readonly _effectiveVariant: _angular_core.Signal<"secondary" | "destructive" | "default" | "outline" | "ghost" | "link" | null | undefined>;
234
+ protected readonly _effectiveVariant: _angular_core.Signal<"default" | "secondary" | "destructive" | "outline" | "ghost" | "link" | null | undefined>;
233
235
  /** Classes for the single-mode button/anchor: our variant layer + the consumer's `class`, which goes last so it wins. */
234
236
  protected readonly _btnClass: _angular_core.Signal<string>;
235
237
  private readonly _texts;
@@ -247,7 +249,7 @@ declare class YuwButtonComponent {
247
249
  kind: "text";
248
250
  label?: string;
249
251
  } | {
250
- variant: "secondary" | "destructive" | "default" | "outline" | "ghost" | "link" | null | undefined;
252
+ variant: "default" | "secondary" | "destructive" | "outline" | "ghost" | "link" | null | undefined;
251
253
  size: "default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
252
254
  color: YuwColorDto;
253
255
  disabled: boolean;
@@ -308,7 +310,7 @@ declare class YuwButtonGroupTextDirective {
308
310
  * ```
309
311
  */
310
312
  declare class YuwBadgeComponent {
311
- readonly variant: _angular_core.InputSignal<"secondary" | "destructive" | "default" | "outline" | "ghost" | "link" | null | undefined>;
313
+ readonly variant: _angular_core.InputSignal<"default" | "secondary" | "destructive" | "outline" | "ghost" | "link" | null | undefined>;
312
314
  readonly color: _angular_core.InputSignal<YuwColorDto>;
313
315
  readonly removeLabel: _angular_core.InputSignal<string | undefined>;
314
316
  readonly dot: _angular_core.InputSignalWithTransform<boolean, unknown>;
@@ -454,6 +456,9 @@ type YuwComboboxValue = string | string[] | undefined;
454
456
  * - `options`: Required array of option items (`YuwComboboxOptionDto<TData>[]`).
455
457
  * - `value`: Two-way selected value(s) (`string` for single mode, `string[]` for multiple mode).
456
458
  * Emits `valueChange` on every selection change.
459
+ * - `size`: Control height (`'default'` 40px, `'xs'` 28px, `'sm'` 36px, `'lg'` 44px), matching the
460
+ * `<yuw-button>` size of the same name. Applies to whichever control shape renders; the popover
461
+ * panel and its inner search field keep their own compact sizing.
457
462
  * - `multiple`: Enables multi-selection mode with removable tags/chips.
458
463
  * - `disabled`: Disables combobox interaction.
459
464
  * - `placeholder`: Placeholder text when no option is selected.
@@ -486,6 +491,7 @@ type YuwComboboxValue = string | string[] | undefined;
486
491
  declare class YuwComboboxComponent<TData = unknown> extends YuwValueAccessorBase<YuwComboboxValue> {
487
492
  readonly options: _angular_core.InputSignal<YuwComboboxOptionDto<TData>[]>;
488
493
  readonly value: _angular_core.ModelSignal<YuwComboboxValue>;
494
+ readonly size: _angular_core.InputSignal<YuwFieldSizeDto>;
489
495
  readonly multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
490
496
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
491
497
  readonly placeholder: _angular_core.InputSignal<string | undefined>;
@@ -501,6 +507,9 @@ declare class YuwComboboxComponent<TData = unknown> extends YuwValueAccessorBase
501
507
  private readonly _panel;
502
508
  protected readonly _disabled: _angular_core.Signal<boolean>;
503
509
  protected readonly _clearVisible: _angular_core.Signal<boolean>;
510
+ protected readonly _fieldClass: _angular_core.Signal<string>;
511
+ protected readonly _chipsClass: _angular_core.Signal<string>;
512
+ protected readonly _triggerClass: _angular_core.Signal<string>;
504
513
  private readonly _generatedId;
505
514
  protected readonly _controlId: _angular_core.Signal<string>;
506
515
  protected readonly _singleValue: _angular_core.Signal<string | undefined>;
@@ -516,7 +525,7 @@ declare class YuwComboboxComponent<TData = unknown> extends YuwValueAccessorBase
516
525
  protected onValueChange(next: YuwComboboxValue | null): void;
517
526
  protected _onFocusOut(event: FocusEvent): void;
518
527
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwComboboxComponent<any>, never>;
519
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwComboboxComponent<any>, "yuw-combobox", never, { "options": { "alias": "options"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "search": { "alias": "search"; "required": false; "isSignal": true; }; "triggerAriaLabel": { "alias": "triggerAriaLabel"; "required": true; "isSignal": true; }; "clearAriaLabel": { "alias": "clearAriaLabel"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "readonlyTrigger": { "alias": "readonlyTrigger"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "search": "searchChange"; }, ["itemTemplate"], never, true, never>;
528
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwComboboxComponent<any>, "yuw-combobox", never, { "options": { "alias": "options"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "search": { "alias": "search"; "required": false; "isSignal": true; }; "triggerAriaLabel": { "alias": "triggerAriaLabel"; "required": true; "isSignal": true; }; "clearAriaLabel": { "alias": "clearAriaLabel"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "readonlyTrigger": { "alias": "readonlyTrigger"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "search": "searchChange"; }, ["itemTemplate"], never, true, never>;
520
529
  }
521
530
 
522
531
  /**
@@ -598,6 +607,8 @@ declare const YuwAccordionImports: readonly [typeof YuwAccordion, typeof YuwAcco
598
607
  * - `value`: Two-way text string.
599
608
  * - `inputId`: `id` applied to the native input, for external `<label for>` association.
600
609
  * - `type`: HTML input type (`'text'`, `'email'`, `'number'`, etc.). Default is `'text'`.
610
+ * - `size`: Control height (`'default'` 40px, `'xs'` 28px, `'sm'` 36px, `'lg'` 44px), matching the
611
+ * `<yuw-button>` size of the same name. Default is `'default'`.
601
612
  * - `inputmode`: Virtual keyboard hint (e.g. `'numeric'`).
602
613
  * - `disabled`: Disables input interaction.
603
614
  * - `readonly`: Makes the field read-only.
@@ -625,6 +636,7 @@ declare class YuwInputComponent extends YuwValueAccessorBase<string> implements
625
636
  readonly value: _angular_core.ModelSignal<string>;
626
637
  readonly inputId: _angular_core.InputSignal<string | undefined>;
627
638
  readonly type: _angular_core.InputSignal<YuwInputTypeDto>;
639
+ readonly size: _angular_core.InputSignal<YuwFieldSizeDto>;
628
640
  readonly inputmode: _angular_core.InputSignal<YuwInputModeDto | undefined>;
629
641
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
630
642
  readonly readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
@@ -649,7 +661,7 @@ declare class YuwInputComponent extends YuwValueAccessorBase<string> implements
649
661
  protected _emptyValue(): string;
650
662
  protected onChange(): void;
651
663
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwInputComponent, never>;
652
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwInputComponent, "yuw-input", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "inputmode": { "alias": "inputmode"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "maxlength": { "alias": "maxlength"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "committed": "committed"; }, ["_leftAddons", "_rightAddons"], ["yuw-left-addon", "yuw-right-addon"], true, never>;
664
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwInputComponent, "yuw-input", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "inputmode": { "alias": "inputmode"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "maxlength": { "alias": "maxlength"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "committed": "committed"; }, ["_leftAddons", "_rightAddons"], ["yuw-left-addon", "yuw-right-addon"], true, never>;
653
665
  }
654
666
 
655
667
  /**
@@ -754,6 +766,8 @@ type YuwSearchInputCollapseFromDto = 'left' | 'right';
754
766
  * app is responsible for translating.
755
767
  * - `expandedWidth`: CSS width the field animates out to, e.g. `'18rem'`. Default is `'16rem'`.
756
768
  * Collapsible mode only.
769
+ * - `size`: Control height, matching the `<yuw-button>` of the same name. While collapsed the
770
+ * control is a square of that height.
757
771
  * - `transparent`: Removes the field's resting border and background so it sits directly on its
758
772
  * container — for search inside a toolbar or a colored surface. The focus and invalid rings stay.
759
773
  * - `class`: Extra classes merged onto the input group.
@@ -799,6 +813,7 @@ declare class YuwSearchInputComponent extends YuwValueAccessorBase<string> imple
799
813
  readonly collapseFrom: _angular_core.InputSignal<YuwSearchInputCollapseFromDto | undefined>;
800
814
  readonly expandedWidth: _angular_core.InputSignal<string>;
801
815
  readonly expandAriaLabel: _angular_core.InputSignal<string | undefined>;
816
+ readonly size: _angular_core.InputSignal<YuwFieldSizeDto>;
802
817
  readonly transparent: _angular_core.InputSignalWithTransform<boolean, unknown>;
803
818
  readonly userClass: _angular_core.InputSignal<string>;
804
819
  private readonly _open;
@@ -817,6 +832,8 @@ declare class YuwSearchInputComponent extends YuwValueAccessorBase<string> imple
817
832
  protected readonly _iconClasses: _angular_core.Signal<string>;
818
833
  protected readonly _fieldClasses: _angular_core.Signal<string>;
819
834
  protected readonly _showExpandButton: _angular_core.Signal<boolean>;
835
+ /** Geometry for the collapsed expand button, which the helm's capped `size` input cannot express. */
836
+ protected readonly _expandButtonClasses: _angular_core.Signal<string>;
820
837
  protected readonly _showClear: _angular_core.Signal<boolean>;
821
838
  protected _emptyValue(): string;
822
839
  protected onInput(event: Event): void;
@@ -840,7 +857,7 @@ declare class YuwSearchInputComponent extends YuwValueAccessorBase<string> imple
840
857
  protected onEscape(): void;
841
858
  protected onBlur(): void;
842
859
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSearchInputComponent, never>;
843
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwSearchInputComponent, "yuw-search-input", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "clearAriaLabel": { "alias": "clearAriaLabel"; "required": false; "isSignal": true; }; "collapseFrom": { "alias": "collapseFrom"; "required": false; "isSignal": true; }; "expandedWidth": { "alias": "expandedWidth"; "required": false; "isSignal": true; }; "expandAriaLabel": { "alias": "expandAriaLabel"; "required": false; "isSignal": true; }; "transparent": { "alias": "transparent"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "searched": "searched"; "committed": "committed"; }, never, never, true, never>;
860
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwSearchInputComponent, "yuw-search-input", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "clearAriaLabel": { "alias": "clearAriaLabel"; "required": false; "isSignal": true; }; "collapseFrom": { "alias": "collapseFrom"; "required": false; "isSignal": true; }; "expandedWidth": { "alias": "expandedWidth"; "required": false; "isSignal": true; }; "expandAriaLabel": { "alias": "expandAriaLabel"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "transparent": { "alias": "transparent"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "searched": "searched"; "committed": "committed"; }, never, never, true, never>;
844
861
  }
845
862
 
846
863
  /**
@@ -848,6 +865,7 @@ declare class YuwSearchInputComponent extends YuwValueAccessorBase<string> imple
848
865
  *
849
866
  * Inputs / Models:
850
867
  * - `value`: Two-way password string.
868
+ * - `size`: Control height, matching the `<yuw-button>` of the same name.
851
869
  * - `inputId`: `id` applied to the native input, for external `<label for>` association.
852
870
  * - `disabled`: Disables input interaction.
853
871
  * - `readonly`: Makes the field read-only.
@@ -872,6 +890,7 @@ declare class YuwSearchInputComponent extends YuwValueAccessorBase<string> imple
872
890
  declare class YuwPasswordInputComponent extends YuwValueAccessorBase<string> implements YuwTextFieldContract {
873
891
  readonly value: _angular_core.ModelSignal<string>;
874
892
  readonly inputId: _angular_core.InputSignal<string | undefined>;
893
+ readonly size: _angular_core.InputSignal<YuwFieldSizeDto>;
875
894
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
876
895
  readonly readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
877
896
  readonly required: _angular_core.InputSignalWithTransform<boolean, unknown>;
@@ -893,7 +912,7 @@ declare class YuwPasswordInputComponent extends YuwValueAccessorBase<string> imp
893
912
  protected onChange(): void;
894
913
  protected onToggleReveal(): void;
895
914
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwPasswordInputComponent, never>;
896
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwPasswordInputComponent, "yuw-password-input", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "revealAriaLabel": { "alias": "revealAriaLabel"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; "masked": { "alias": "masked"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "committed": "committed"; "masked": "maskedChange"; }, never, never, true, never>;
915
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwPasswordInputComponent, "yuw-password-input", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "revealAriaLabel": { "alias": "revealAriaLabel"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; "masked": { "alias": "masked"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "committed": "committed"; "masked": "maskedChange"; }, never, never, true, never>;
897
916
  }
898
917
 
899
918
  /**
@@ -924,6 +943,7 @@ type YuwInputOtpModeDto = 'numeric' | 'text';
924
943
  * - `groupSizes`: Slot counts per visual group (`number[]`). A separator renders between groups, e.g. `[3, 3]` gives `000-000`. Default is `[6]`.
925
944
  * - `mode`: Virtual-keyboard hint (`'numeric'`, `'text'`). Default is `'numeric'`.
926
945
  * - `disabled`: Disables input interaction.
946
+ * - `size`: Cell size, matching the `<yuw-button>` of the same name.
927
947
  * - `invalid`: Forces invalid styling.
928
948
  * - `autofocus`: Focuses the field on init. Appropriate on dedicated verification screens.
929
949
  * - `transformPaste`: Normalizes pasted text before it fills the slots.
@@ -943,6 +963,7 @@ declare class YuwInputOtpComponent extends YuwValueAccessorBase<string> {
943
963
  readonly inputId: _angular_core.InputSignal<string | undefined>;
944
964
  readonly groupSizes: _angular_core.InputSignal<readonly number[]>;
945
965
  readonly mode: _angular_core.InputSignal<YuwInputOtpModeDto>;
966
+ readonly size: _angular_core.InputSignal<YuwFieldSizeDto>;
946
967
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
947
968
  readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
948
969
  readonly autofocus: _angular_core.InputSignalWithTransform<boolean, unknown>;
@@ -958,7 +979,7 @@ declare class YuwInputOtpComponent extends YuwValueAccessorBase<string> {
958
979
  protected _emptyValue(): string;
959
980
  protected onValueChange(next: string): void;
960
981
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwInputOtpComponent, never>;
961
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwInputOtpComponent, "yuw-input-otp", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "groupSizes": { "alias": "groupSizes"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "autofocus": { "alias": "autofocus"; "required": false; "isSignal": true; }; "transformPaste": { "alias": "transformPaste"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "completed": "completed"; }, never, never, true, never>;
982
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwInputOtpComponent, "yuw-input-otp", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "groupSizes": { "alias": "groupSizes"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "autofocus": { "alias": "autofocus"; "required": false; "isSignal": true; }; "transformPaste": { "alias": "transformPaste"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "completed": "completed"; }, never, never, true, never>;
962
983
  }
963
984
 
964
985
  /**
@@ -1060,7 +1081,8 @@ declare class YuwCheckboxComponent extends YuwValueAccessorBase<boolean> {
1060
1081
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwCheckboxComponent, "yuw-checkbox", never, { "value": { "alias": "checked"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaLabelledby": { "alias": "ariaLabelledby"; "required": false; "isSignal": true; }; "ariaDescribedby": { "alias": "ariaDescribedby"; "required": false; "isSignal": true; }; "secondary": { "alias": "secondary"; "required": false; "isSignal": true; }; }, { "value": "checkedChange"; "indeterminate": "indeterminateChange"; }, never, ["*"], true, never>;
1061
1082
  }
1062
1083
 
1063
- type YuwSwitchSizeDto = 'default' | 'sm';
1084
+ type YuwSwitchSizeDto = 'default' | 'xs' | 'sm' | 'lg';
1085
+
1064
1086
  /**
1065
1087
  * Toggle switch control for binary settings and immediate state changes.
1066
1088
  *
@@ -1070,7 +1092,8 @@ type YuwSwitchSizeDto = 'default' | 'sm';
1070
1092
  *
1071
1093
  * Inputs / Models:
1072
1094
  * - `checked` (alias for `value`): Two-way boolean on/off state. Bind as `[(checked)]`.
1073
- * - `size`: Track size variant (`'default'`, `'sm'`). Default is `'default'`.
1095
+ * - `size`: Track size (`'default'`, `'xs'`, `'sm'`, `'lg'`). Named to match the rest of the
1096
+ * library; the pixel values keep a switch's own proportions rather than the field heights.
1074
1097
  * - `disabled`: Disables switch interaction.
1075
1098
  * - `inputId`: HTML `id` for the underlying control, enabling external `<label for="...">` association.
1076
1099
  * - `ariaLabel`: Accessible name for switches with no visible adjacent label.
@@ -1084,6 +1107,8 @@ type YuwSwitchSizeDto = 'default' | 'sm';
1084
1107
  declare class YuwSwitchComponent extends YuwValueAccessorBase<boolean> {
1085
1108
  readonly value: _angular_core.ModelSignal<boolean>;
1086
1109
  readonly size: _angular_core.InputSignal<YuwSwitchSizeDto>;
1110
+ protected readonly _helmSize: _angular_core.Signal<"default" | "sm">;
1111
+ protected readonly _switchClass: _angular_core.Signal<string>;
1087
1112
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
1088
1113
  readonly inputId: _angular_core.InputSignal<string | undefined>;
1089
1114
  readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
@@ -1508,6 +1533,10 @@ type YuwDatepickerModeDto = 'single' | 'range' | 'multiple' | 'monthYear';
1508
1533
  * ```
1509
1534
  */
1510
1535
  declare class YuwDatepickerComponent extends YuwValueAccessorBase<YuwDatepickerValue> {
1536
+ private readonly _singleConfig;
1537
+ private readonly _rangeConfig;
1538
+ private readonly _multiConfig;
1539
+ private readonly _monthYearConfig;
1511
1540
  readonly mode: _angular_core.InputSignal<YuwDatepickerModeDto>;
1512
1541
  readonly value: _angular_core.ModelSignal<YuwDatepickerValue>;
1513
1542
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
@@ -1517,16 +1546,14 @@ declare class YuwDatepickerComponent extends YuwValueAccessorBase<YuwDatepickerV
1517
1546
  readonly captionLayout: _angular_core.InputSignal<"dropdown" | "label" | "dropdown-months" | "dropdown-years">;
1518
1547
  readonly align: _angular_core.InputSignal<"start" | "center" | "end">;
1519
1548
  readonly buttonId: _angular_core.InputSignal<string | undefined>;
1549
+ readonly size: _angular_core.InputSignal<YuwFieldSizeDto>;
1520
1550
  readonly userClass: _angular_core.InputSignal<string>;
1521
1551
  readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
1522
1552
  readonly formatDate: _angular_core.InputSignal<((date: Date) => string) | undefined>;
1523
- protected readonly _disabled: _angular_core.Signal<boolean>;
1524
1553
  private readonly _generatedButtonId;
1554
+ protected readonly _triggerClass: _angular_core.Signal<string>;
1555
+ protected readonly _disabled: _angular_core.Signal<boolean>;
1525
1556
  protected readonly _buttonId: _angular_core.Signal<string>;
1526
- private readonly _singleConfig;
1527
- private readonly _rangeConfig;
1528
- private readonly _multiConfig;
1529
- private readonly _monthYearConfig;
1530
1557
  protected readonly _formatSingle: _angular_core.Signal<(date: Date) => string>;
1531
1558
  protected readonly _formatMonthYear: _angular_core.Signal<(date: Date) => string>;
1532
1559
  protected readonly _formatRange: _angular_core.Signal<(dates: [Date | null, Date | null]) => string>;
@@ -1537,7 +1564,7 @@ declare class YuwDatepickerComponent extends YuwValueAccessorBase<YuwDatepickerV
1537
1564
  protected _emptyValue(): YuwDatepickerValue;
1538
1565
  protected onValueChange(next: YuwDatepickerValue): void;
1539
1566
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwDatepickerComponent, never>;
1540
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwDatepickerComponent, "yuw-datepicker", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "captionLayout": { "alias": "captionLayout"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "buttonId": { "alias": "buttonId"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "formatDate": { "alias": "formatDate"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
1567
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwDatepickerComponent, "yuw-datepicker", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "captionLayout": { "alias": "captionLayout"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "buttonId": { "alias": "buttonId"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "formatDate": { "alias": "formatDate"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
1541
1568
  }
1542
1569
 
1543
1570
  /**
@@ -1976,7 +2003,7 @@ declare class YuwSheetComponent {
1976
2003
  readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
1977
2004
  readonly closeLabel: _angular_core.InputSignal<string | undefined>;
1978
2005
  readonly panelClass: _angular_core.InputSignal<string | undefined>;
1979
- readonly triggerVariant: _angular_core.InputSignal<"secondary" | "destructive" | "default" | "outline" | "ghost" | "link" | null | undefined>;
2006
+ readonly triggerVariant: _angular_core.InputSignal<"default" | "secondary" | "destructive" | "outline" | "ghost" | "link" | null | undefined>;
1980
2007
  readonly triggerSize: _angular_core.InputSignal<"default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined>;
1981
2008
  protected readonly hasFooter: _angular_core.Signal<YuwSheetFooterDirective | undefined>;
1982
2009
  protected readonly _sheetState: _angular_core.Signal<"open" | "closed">;
@@ -2043,7 +2070,7 @@ declare class YuwPopoverComponent {
2043
2070
  readonly title: _angular_core.InputSignal<string | undefined>;
2044
2071
  readonly description: _angular_core.InputSignal<string | undefined>;
2045
2072
  readonly panelClass: _angular_core.InputSignal<string | undefined>;
2046
- readonly triggerVariant: _angular_core.InputSignal<"secondary" | "destructive" | "default" | "outline" | "ghost" | "link" | null | undefined>;
2073
+ readonly triggerVariant: _angular_core.InputSignal<"default" | "secondary" | "destructive" | "outline" | "ghost" | "link" | null | undefined>;
2047
2074
  readonly triggerSize: _angular_core.InputSignal<"default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined>;
2048
2075
  readonly triggerTransparent: _angular_core.InputSignalWithTransform<boolean, unknown>;
2049
2076
  readonly triggerClass: _angular_core.InputSignal<string>;
@@ -2290,7 +2317,7 @@ declare class YuwDialogComponent {
2290
2317
  readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
2291
2318
  readonly closeLabel: _angular_core.InputSignal<string | undefined>;
2292
2319
  readonly panelClass: _angular_core.InputSignal<string | undefined>;
2293
- readonly triggerVariant: _angular_core.InputSignal<"secondary" | "destructive" | "default" | "outline" | "ghost" | "link" | null | undefined>;
2320
+ readonly triggerVariant: _angular_core.InputSignal<"default" | "secondary" | "destructive" | "outline" | "ghost" | "link" | null | undefined>;
2294
2321
  readonly triggerSize: _angular_core.InputSignal<"default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined>;
2295
2322
  protected readonly hasFooter: _angular_core.Signal<YuwDialogFooterDirective | undefined>;
2296
2323
  protected readonly _dialogState: _angular_core.Signal<"open" | "closed">;
@@ -2373,9 +2400,9 @@ declare class YuwAlertDialogComponent {
2373
2400
  readonly description: _angular_core.InputSignal<string | undefined>;
2374
2401
  readonly confirmLabel: _angular_core.InputSignal<string>;
2375
2402
  readonly cancelLabel: _angular_core.InputSignal<string>;
2376
- readonly confirmVariant: _angular_core.InputSignal<"secondary" | "destructive" | "default" | "outline" | "ghost" | "link" | null | undefined>;
2403
+ readonly confirmVariant: _angular_core.InputSignal<"default" | "secondary" | "destructive" | "outline" | "ghost" | "link" | null | undefined>;
2377
2404
  readonly size: _angular_core.InputSignal<YuwAlertDialogSizeDto>;
2378
- readonly triggerVariant: _angular_core.InputSignal<"secondary" | "destructive" | "default" | "outline" | "ghost" | "link" | null | undefined>;
2405
+ readonly triggerVariant: _angular_core.InputSignal<"default" | "secondary" | "destructive" | "outline" | "ghost" | "link" | null | undefined>;
2379
2406
  readonly triggerSize: _angular_core.InputSignal<"default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined>;
2380
2407
  readonly confirmed: _angular_core.OutputEmitterRef<void>;
2381
2408
  readonly cancelled: _angular_core.OutputEmitterRef<void>;
@@ -2435,6 +2462,7 @@ type YuwTabsActivationModeDto = 'automatic' | 'manual';
2435
2462
  * - `tabs`: The tab definitions (`YuwTabItemDto[]`) rendered as triggers, in order.
2436
2463
  * - `activeTab`: Two-way id of the selected tab. Drive via `[(activeTab)]` to control it
2437
2464
  * programmatically; listen to `activeTabChange` to react to activations.
2465
+ * - `size`: Tab-list height, matching the `<yuw-button>` of the same name.
2438
2466
  * - `variant`: Trigger list style (`'default'` filled, `'line'` underlined). Default is `'default'`.
2439
2467
  * - `orientation`: Layout direction (`'horizontal'`, `'vertical'`). Default is `'horizontal'`.
2440
2468
  * - `activationMode`: How keyboard focus activates tabs (`'automatic'` activates on focus,
@@ -2452,12 +2480,14 @@ declare class YuwTabsComponent {
2452
2480
  readonly tabs: _angular_core.InputSignal<YuwTabItemDto[]>;
2453
2481
  readonly activeTab: _angular_core.ModelSignal<string>;
2454
2482
  readonly variant: _angular_core.InputSignal<YuwTabsVariantDto>;
2483
+ readonly size: _angular_core.InputSignal<YuwFieldSizeDto>;
2484
+ protected readonly _listClass: _angular_core.Signal<string>;
2455
2485
  readonly orientation: _angular_core.InputSignal<YuwTabsOrientationDto>;
2456
2486
  readonly activationMode: _angular_core.InputSignal<YuwTabsActivationModeDto>;
2457
2487
  protected readonly panels: _angular_core.Signal<readonly YuwTabPanelDirective[]>;
2458
2488
  protected onTabActivated(tabId: string): void;
2459
2489
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwTabsComponent, never>;
2460
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwTabsComponent, "yuw-tabs", never, { "tabs": { "alias": "tabs"; "required": true; "isSignal": true; }; "activeTab": { "alias": "activeTab"; "required": true; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "activationMode": { "alias": "activationMode"; "required": false; "isSignal": true; }; }, { "activeTab": "activeTabChange"; }, ["panels"], never, true, never>;
2490
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwTabsComponent, "yuw-tabs", never, { "tabs": { "alias": "tabs"; "required": true; "isSignal": true; }; "activeTab": { "alias": "activeTab"; "required": true; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "activationMode": { "alias": "activationMode"; "required": false; "isSignal": true; }; }, { "activeTab": "activeTabChange"; }, ["panels"], never, true, never>;
2461
2491
  }
2462
2492
 
2463
2493
  /**
@@ -2537,6 +2567,103 @@ declare class YuwAttachmentTriggerDirective {
2537
2567
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwAttachmentTriggerDirective, "button[yuwAttachmentTrigger], a[yuwAttachmentTrigger]", never, {}, {}, never, never, true, [{ directive: typeof i1$c.HlmAttachmentTrigger; inputs: { "type": "type"; }; outputs: {}; }]>;
2538
2568
  }
2539
2569
 
2570
+ /**
2571
+ * Where a sidebar entry points.
2572
+ *
2573
+ * Split across two target fields rather than one, because they drive different mechanisms: `route`
2574
+ * binds `[routerLink]` (in-app navigation, and the source of the entry's automatic active state),
2575
+ * `href` binds a plain `[href]` (full page load, external URLs). `helm/breadcrumb` shows the cost of
2576
+ * conflating them — its DTO field is named `href` but is wired to `routerLink`, so a consumer
2577
+ * passing an external URL gets silent router navigation to a route that doesn't exist.
2578
+ *
2579
+ * An entry with neither renders as a `<button>` and reports through `itemClicked`.
2580
+ *
2581
+ * - `route`: in-app target, accepting anything `[routerLink]` does, including a command array.
2582
+ * - `href`: external or non-router target, bound to a plain anchor.
2583
+ * - `target`: `target` attribute, only meaningful alongside `href`.
2584
+ * - `exact`: whether the active state requires a full URL match, mapping to
2585
+ * `routerLinkActiveOptions.exact`; applies only to a `route`. Default is `false`, so a parent
2586
+ * route stays highlighted while a child is open — set it on a root path like `/` that would
2587
+ * otherwise match everything.
2588
+ */
2589
+ interface YuwSidebarNavigationDto {
2590
+ route?: RouterLink['routerLink'];
2591
+ href?: string;
2592
+ target?: string;
2593
+ exact?: boolean;
2594
+ }
2595
+ /**
2596
+ * A submenu entry, nested under a {@link YuwSidebarItemDto}.
2597
+ *
2598
+ * Deliberately not the same type as its parent: the helm sub-button renders no icon, no badge and
2599
+ * no further nesting, so reusing `YuwSidebarItemDto` here would hand consumers three fields that
2600
+ * silently do nothing. Same reasoning as `YuwButtonGroupTextDto`.
2601
+ *
2602
+ * `label` is supplied already translated — the sidebar owns no user-facing copy.
2603
+ */
2604
+ interface YuwSidebarSubItemDto extends YuwSidebarNavigationDto {
2605
+ id: string;
2606
+ label: string;
2607
+ disabled?: boolean;
2608
+ }
2609
+ /**
2610
+ * A single entry of a sidebar menu.
2611
+ *
2612
+ * Renders an anchor when it carries a `route` or `href`, and a `<button>` otherwise — the data says
2613
+ * which it is, so there is no `kind` field to keep in sync with it.
2614
+ *
2615
+ * - `label`: text of the entry, supplied already translated — the sidebar owns no user-facing copy.
2616
+ * - `icon`: name of a registered `@ng-icons` icon. Because the *consumer* chooses this name, the
2617
+ * consuming app is responsible for `provideIcons()`-ing it; `provideIcons` is a component-level
2618
+ * provider, so a name registered on the component hosting the sidebar resolves here through the
2619
+ * injector chain. Same contract as `<yuw-spinner icon="…">`.
2620
+ * - `badge`: short trailing count or status, hidden automatically while collapsed to icons.
2621
+ * - `tooltip`: label shown while collapsed to icons, where `label` is not visible. Falls back to
2622
+ * `label` when absent, so the common case needs no second field.
2623
+ */
2624
+ interface YuwSidebarItemDto extends YuwSidebarNavigationDto {
2625
+ id: string;
2626
+ label: string;
2627
+ icon?: string;
2628
+ badge?: string;
2629
+ tooltip?: string;
2630
+ disabled?: boolean;
2631
+ children?: YuwSidebarSubItemDto[];
2632
+ }
2633
+ /**
2634
+ * A titled section of the sidebar.
2635
+ *
2636
+ * `label` is heading text, already translated; omitting it renders the menu with no heading.
2637
+ * `separatorAfter` draws a divider after the group — for separating a settings block from the
2638
+ * main nav.
2639
+ */
2640
+ interface YuwSidebarGroupDto {
2641
+ id: string;
2642
+ label?: string;
2643
+ items: YuwSidebarItemDto[];
2644
+ separatorAfter?: boolean;
2645
+ }
2646
+ /**
2647
+ * What `<yuw-sidebar>`'s `content` and `footer` inputs accept.
2648
+ *
2649
+ * An object rather than a bare `YuwSidebarGroupDto[]` so the shape can grow without a breaking
2650
+ * change to the input's type.
2651
+ */
2652
+ interface YuwSidebarContentDto {
2653
+ groups: YuwSidebarGroupDto[];
2654
+ }
2655
+ /**
2656
+ * What `<yuw-sidebar>` emits from `itemClicked`.
2657
+ *
2658
+ * Only entries with neither `route` nor `href` emit: a navigating entry's click is the router's or
2659
+ * the browser's to handle. Carries the `id` rather than the whole entry, matching
2660
+ * `YuwButtonGroupClickDto`.
2661
+ */
2662
+ interface YuwSidebarItemClickDto {
2663
+ id: string;
2664
+ event: MouseEvent;
2665
+ }
2666
+
2540
2667
  type YuwSidebarSideDto = 'left' | 'right';
2541
2668
  type YuwSidebarVariantDto = 'sidebar' | 'floating' | 'inset';
2542
2669
  type YuwSidebarCollapsibleDto = 'offcanvas' | 'icon' | 'none';
@@ -2554,6 +2681,25 @@ type YuwSidebarCollapsibleDto = 'offcanvas' | 'icon' | 'none';
2554
2681
  * - `collapsible`: Collapse behaviour (`'offcanvas'` slides away, `'icon'` shrinks to icons, `'none'` always open). Default is `'offcanvas'`.
2555
2682
  * - `sidebarWidthMobile`: Width of the mobile slide-in sheet (any CSS length). Defaults to the helm sidebar config (`18rem`).
2556
2683
  * - `sidebarContainerClass`: Extra classes merged onto the desktop fixed container (the helm merges them last, so they win).
2684
+ * - `content`: Renders the scrollable nav from a `YuwSidebarContentDto` instead of hand-written
2685
+ * markup. Groups → items → optional one level of children. An item with a `route` becomes a
2686
+ * `[routerLink]` anchor whose active state, `aria-current` and pointer-lock resolve automatically
2687
+ * from `routerLinkActive`; one with an `href` becomes a plain anchor; one with neither becomes a
2688
+ * button that reports through `itemClicked`.
2689
+ * - `footer`: The same, rendered into the footer region.
2690
+ *
2691
+ * Outputs:
2692
+ * - `itemClicked`: Emits `{id, event}` when a non-navigating entry (no `route`, no `href`) is
2693
+ * activated, in either `content` or `footer`.
2694
+ *
2695
+ * The two forms compose rather than exclude each other, unlike `<yuw-button>`'s `buttons` input
2696
+ * which drops projected content when set. `content`/`footer` render their own region; anything
2697
+ * projected still renders, so a data-driven nav can sit alongside a hand-written block. To place
2698
+ * extra markup *inside* the object-rendered regions — where it scrolls with the nav and inherits the
2699
+ * content area's flex sizing — mark it `[yuwSidebarContentExtra]` or `[yuwSidebarFooterExtra]`; the
2700
+ * default slot keeps everything else, so existing projection-only usage is unaffected.
2701
+ *
2702
+ * `header` has no object form: it is a free-form branding area with no repeating structure to model.
2557
2703
  *
2558
2704
  * Deliberately not exposed from the helm sidebar (add a wrapper only when a real consumer needs
2559
2705
  * them): `HlmSidebarMenuAction`, `HlmSidebarMenuSkeleton`, `HlmSidebarInput` and
@@ -2570,6 +2716,29 @@ type YuwSidebarCollapsibleDto = 'offcanvas' | 'icon' | 'none';
2570
2716
  * </div>
2571
2717
  * </yuw-sidebar>
2572
2718
  * ```
2719
+ *
2720
+ * Object form:
2721
+ * ```html
2722
+ * <yuw-sidebar collapsible="icon" [content]="nav" [footer]="footerNav"
2723
+ * (itemClicked)="onAction($event.id)">
2724
+ * <div yuwSidebarHeader>Yurest</div>
2725
+ * </yuw-sidebar>
2726
+ * ```
2727
+ * ```ts
2728
+ * nav: YuwSidebarContentDto = {
2729
+ * groups: [{
2730
+ * id: 'management',
2731
+ * label: 'Gestión',
2732
+ * items: [
2733
+ * {id: 'orders', label: 'Pedidos', icon: 'lucideReceipt', route: '/orders', badge: '12'},
2734
+ * {id: 'reports', label: 'Informes', icon: 'lucideChartLine', children: [
2735
+ * {id: 'sales', label: 'Ventas', route: '/reports/sales'},
2736
+ * ]},
2737
+ * {id: 'sync', label: 'Sincronizar'},
2738
+ * ],
2739
+ * }],
2740
+ * };
2741
+ * ```
2573
2742
  */
2574
2743
  declare class YuwSidebarComponent {
2575
2744
  private readonly config;
@@ -2578,8 +2747,11 @@ declare class YuwSidebarComponent {
2578
2747
  readonly collapsible: _angular_core.InputSignal<YuwSidebarCollapsibleDto>;
2579
2748
  readonly sidebarWidthMobile: _angular_core.InputSignal<string>;
2580
2749
  readonly sidebarContainerClass: _angular_core.InputSignal<string>;
2750
+ readonly content: _angular_core.InputSignal<YuwSidebarContentDto | undefined>;
2751
+ readonly footer: _angular_core.InputSignal<YuwSidebarContentDto | undefined>;
2752
+ readonly itemClicked: _angular_core.OutputEmitterRef<YuwSidebarItemClickDto>;
2581
2753
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarComponent, never>;
2582
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwSidebarComponent, "yuw-sidebar", never, { "side": { "alias": "side"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "sidebarWidthMobile": { "alias": "sidebarWidthMobile"; "required": false; "isSignal": true; }; "sidebarContainerClass": { "alias": "sidebarContainerClass"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
2754
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwSidebarComponent, "yuw-sidebar", never, { "side": { "alias": "side"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "sidebarWidthMobile": { "alias": "sidebarWidthMobile"; "required": false; "isSignal": true; }; "sidebarContainerClass": { "alias": "sidebarContainerClass"; "required": false; "isSignal": true; }; "content": { "alias": "content"; "required": false; "isSignal": true; }; "footer": { "alias": "footer"; "required": false; "isSignal": true; }; }, { "itemClicked": "itemClicked"; }, never, ["[yuwSidebarHeader], yuw-sidebar-header", "[yuwSidebarContentExtra]", "*", "[yuwSidebarFooterExtra]"], true, never>;
2583
2755
  }
2584
2756
 
2585
2757
  /**
@@ -2670,6 +2842,23 @@ declare class YuwSidebarMenuDirective {
2670
2842
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarMenuDirective, never>;
2671
2843
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarMenuDirective, "ul[yuwSidebarMenu]", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmSidebarMenu; inputs: {}; outputs: {}; }]>;
2672
2844
  }
2845
+ /**
2846
+ * Marks projected markup that belongs *inside* the region `<yuw-sidebar>` renders from its `content`
2847
+ * input, after the object-driven groups — a hand-written group alongside a data-driven nav.
2848
+ *
2849
+ * Only meaningful when `content` is set; without it the marker is inert and the element falls
2850
+ * through to the default slot like any other projected node. Carries no styling of its own: it is a
2851
+ * projection selector, and whatever it is applied to (usually a `[yuwSidebarGroup]`) keeps its own.
2852
+ */
2853
+ declare class YuwSidebarContentExtraDirective {
2854
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarContentExtraDirective, never>;
2855
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarContentExtraDirective, "[yuwSidebarContentExtra]", never, {}, {}, never, never, true, never>;
2856
+ }
2857
+ /** The `footer` counterpart of {@link YuwSidebarContentExtraDirective}. */
2858
+ declare class YuwSidebarFooterExtraDirective {
2859
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarFooterExtraDirective, never>;
2860
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarFooterExtraDirective, "[yuwSidebarFooterExtra]", never, {}, {}, never, never, true, never>;
2861
+ }
2673
2862
  /** A single entry of a sidebar menu. Apply to an `<li>`. */
2674
2863
  declare class YuwSidebarMenuItemDirective {
2675
2864
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarMenuItemDirective, never>;
@@ -2681,9 +2870,17 @@ declare class YuwSidebarMenuItemDirective {
2681
2870
  *
2682
2871
  * To label the item while the sidebar is collapsed to icons, add Spartan's `tooltip` input
2683
2872
  * alongside this directive — it comes from the underlying menu-button primitive and is only shown
2684
- * in the collapsed state.
2873
+ * in the collapsed state. It cannot be re-forwarded through this wrapper's `hostDirectives`
2874
+ * (`tooltip` is the alias `HlmSidebarMenuButton` gives its own composed `BrnTooltip`, not a public
2875
+ * input of its own), so bind it with `[attr.tooltip]` rather than `[tooltip]` when the value comes
2876
+ * from an expression.
2877
+ *
2878
+ * Carries `yuwSidebarMenuButtonClass`, our hover/expanded colouring and collapsed-to-icon geometry.
2879
+ * The `classes()` registration below runs after the composed `HlmSidebarMenuButton`'s own, so our
2880
+ * classes merge last and win — see `sidebar.variants.ts`.
2685
2881
  */
2686
2882
  declare class YuwSidebarMenuButtonDirective {
2883
+ constructor();
2687
2884
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarMenuButtonDirective, never>;
2688
2885
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarMenuButtonDirective, "button[yuwSidebarMenuButton], a[yuwSidebarMenuButton]", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmSidebarMenuButton; inputs: { "variant": "variant"; "size": "size"; "isActive": "isActive"; "closeMobileSidebarOnClick": "closeMobileSidebarOnClick"; }; outputs: {}; }]>;
2689
2886
  }
@@ -2728,5 +2925,5 @@ declare class YuwSidebarInsetDirective {
2728
2925
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarInsetDirective, "main[yuwSidebarInset]", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmSidebarInset; inputs: {}; outputs: {}; }]>;
2729
2926
  }
2730
2927
 
2731
- export { DATATABLE_ALIGN_CLASS, YUW_DATATABLE_FEATURES, YUW_PASSWORD_REVEAL_STATES, YuwAccordion, YuwAccordionContentComponent, YuwAccordionImports, YuwAccordionItem, YuwAccordionTriggerComponent, YuwAlertActionDirective, YuwAlertComponent, YuwAlertDescriptionDirective, YuwAlertDialogComponent, YuwAlertDialogMediaDirective, YuwAlertDialogTriggerDirective, YuwAlertImports, YuwAlertTitleDirective, YuwAttachmentActionDirective, YuwAttachmentActionsDirective, YuwAttachmentContentDirective, YuwAttachmentDescriptionDirective, YuwAttachmentDirective, YuwAttachmentGroupDirective, YuwAttachmentMediaDirective, YuwAttachmentTitleDirective, YuwAttachmentTriggerDirective, YuwAvatarComponent, YuwBadgeComponent, YuwBreadcrumbComponent, YuwButtonComponent, YuwButtonGroupTextDirective, YuwCaptionDirective, YuwCardActionDirective, YuwCardContentDirective, YuwCardDescriptionDirective, YuwCardDirective, YuwCardFooterDirective, YuwCardHeaderDirective, YuwCardImports, YuwCardTitleDirective, YuwCheckboxComponent, YuwComboboxComponent, YuwComboboxItemDirective, YuwContextMenuCheckboxDirective, YuwContextMenuCheckboxIndicatorComponent, YuwContextMenuDirective, YuwContextMenuGroupDirective, YuwContextMenuImports, YuwContextMenuItemDirective, YuwContextMenuLabelDirective, YuwContextMenuRadioDirective, YuwContextMenuRadioIndicatorComponent, YuwContextMenuSeparatorDirective, YuwContextMenuShortcutDirective, YuwContextMenuSubDirective, YuwContextMenuSubIndicatorComponent, YuwContextMenuSubTriggerDirective, YuwContextMenuTriggerDirective, YuwDatatableComponent, YuwDatepickerComponent, YuwDialogCloseDirective, YuwDialogComponent, YuwDialogFooterDirective, YuwDialogImports, YuwDialogTriggerDirective, YuwEmptyContentDirective, YuwEmptyDescriptionDirective, YuwEmptyDirective, YuwEmptyHeaderDirective, YuwEmptyImports, YuwEmptyMediaDirective, YuwEmptyTitleDirective, YuwInputAddonImports, YuwInputComponent, YuwInputOtpComponent, YuwItemActionsDirective, YuwItemContentDirective, YuwItemDescriptionDirective, YuwItemDirective, YuwItemFooterDirective, YuwItemGroupDirective, YuwItemHeaderDirective, YuwItemImports, YuwItemMediaDirective, YuwItemSeparatorDirective, YuwItemTitleDirective, YuwLabel, YuwLeftAddonDirective, YuwPaginationComponent, YuwPasswordInputComponent, YuwPopoverComponent, YuwPopoverTriggerDirective, YuwRadioGroupComponent, YuwRightAddonDirective, YuwSearchInputComponent, YuwSheetCloseDirective, YuwSheetComponent, YuwSheetFooterDirective, YuwSheetImports, YuwSheetTriggerDirective, YuwSidebarComponent, YuwSidebarContentDirective, YuwSidebarFooterDirective, YuwSidebarGroupContentDirective, YuwSidebarGroupDirective, YuwSidebarGroupLabelDirective, YuwSidebarHeaderDirective, YuwSidebarInsetDirective, YuwSidebarMenuBadgeDirective, YuwSidebarMenuButtonDirective, YuwSidebarMenuDirective, YuwSidebarMenuItemDirective, YuwSidebarMenuSubButtonDirective, YuwSidebarMenuSubDirective, YuwSidebarMenuSubItemDirective, YuwSidebarRailDirective, YuwSidebarSeparatorDirective, YuwSidebarTriggerComponent, YuwSidebarWrapperDirective, YuwSkeletonDirective, YuwSpinnerComponent, YuwSwitchComponent, YuwTBodyDirective, YuwTFootDirective, YuwTHeadDirective, YuwTabPanelDirective, YuwTableContainerDirective, YuwTableDirective, YuwTableImports, YuwTabsComponent, YuwTdDirective, YuwTextareaComponent, YuwThDirective, YuwToasterComponent, YuwTooltipDirective, YuwTrDirective, YuwValueAccessorBase, buildInputOtpGroups, cn, datatableCellVariants, datatableContainerVariants, datatableHeadVariants, datatableHeaderCellVariants, datatableRowVariants, getPaginationRange, provideValueAccessor, totalInputOtpLength };
2732
- export type { YuwAlertDialogSizeDto, YuwAlertVariantDto, YuwAvatarGroupItemDto, YuwAvatarSizeDto, YuwBreadcrumbItemDto, YuwButtonGroupClickDto, YuwButtonGroupEntryDto, YuwButtonGroupItemDto, YuwButtonGroupTextDto, YuwColorDto, YuwComboboxItemContext, YuwComboboxOptionDto, YuwComboboxValue, YuwDatatableAlign, YuwDatatableAppearanceDto, YuwDatatableColumnDef, YuwDatatableColumnMeta, YuwDatatableFeatures, YuwDatepickerModeDto, YuwDatepickerValue, YuwInputModeDto, YuwInputOtpGroupDto, YuwInputOtpModeDto, YuwInputTypeDto, YuwPaginationRangeItem, YuwPaginationSizeDto, YuwPasswordRevealStateDto, YuwPopoverAlignDto, YuwRadioOptionDto, YuwSearchInputCollapseFromDto, YuwSheetSideDto, YuwSidebarCollapsibleDto, YuwSidebarSideDto, YuwSidebarVariantDto, YuwSwitchSizeDto, YuwTabItemDto, YuwTabsActivationModeDto, YuwTabsOrientationDto, YuwTabsVariantDto, YuwTextFieldContract, YuwToasterPositionDto, YuwToasterThemeDto, YuwTooltipPositionDto };
2928
+ export { DATATABLE_ALIGN_CLASS, YUW_DATATABLE_FEATURES, YUW_PASSWORD_REVEAL_STATES, YuwAccordion, YuwAccordionContentComponent, YuwAccordionImports, YuwAccordionItem, YuwAccordionTriggerComponent, YuwAlertActionDirective, YuwAlertComponent, YuwAlertDescriptionDirective, YuwAlertDialogComponent, YuwAlertDialogMediaDirective, YuwAlertDialogTriggerDirective, YuwAlertImports, YuwAlertTitleDirective, YuwAttachmentActionDirective, YuwAttachmentActionsDirective, YuwAttachmentContentDirective, YuwAttachmentDescriptionDirective, YuwAttachmentDirective, YuwAttachmentGroupDirective, YuwAttachmentMediaDirective, YuwAttachmentTitleDirective, YuwAttachmentTriggerDirective, YuwAvatarComponent, YuwBadgeComponent, YuwBreadcrumbComponent, YuwButtonComponent, YuwButtonGroupTextDirective, YuwCaptionDirective, YuwCardActionDirective, YuwCardContentDirective, YuwCardDescriptionDirective, YuwCardDirective, YuwCardFooterDirective, YuwCardHeaderDirective, YuwCardImports, YuwCardTitleDirective, YuwCheckboxComponent, YuwComboboxComponent, YuwComboboxItemDirective, YuwContextMenuCheckboxDirective, YuwContextMenuCheckboxIndicatorComponent, YuwContextMenuDirective, YuwContextMenuGroupDirective, YuwContextMenuImports, YuwContextMenuItemDirective, YuwContextMenuLabelDirective, YuwContextMenuRadioDirective, YuwContextMenuRadioIndicatorComponent, YuwContextMenuSeparatorDirective, YuwContextMenuShortcutDirective, YuwContextMenuSubDirective, YuwContextMenuSubIndicatorComponent, YuwContextMenuSubTriggerDirective, YuwContextMenuTriggerDirective, YuwDatatableComponent, YuwDatepickerComponent, YuwDialogCloseDirective, YuwDialogComponent, YuwDialogFooterDirective, YuwDialogImports, YuwDialogTriggerDirective, YuwEmptyContentDirective, YuwEmptyDescriptionDirective, YuwEmptyDirective, YuwEmptyHeaderDirective, YuwEmptyImports, YuwEmptyMediaDirective, YuwEmptyTitleDirective, YuwInputAddonImports, YuwInputComponent, YuwInputOtpComponent, YuwItemActionsDirective, YuwItemContentDirective, YuwItemDescriptionDirective, YuwItemDirective, YuwItemFooterDirective, YuwItemGroupDirective, YuwItemHeaderDirective, YuwItemImports, YuwItemMediaDirective, YuwItemSeparatorDirective, YuwItemTitleDirective, YuwLabel, YuwLeftAddonDirective, YuwPaginationComponent, YuwPasswordInputComponent, YuwPopoverComponent, YuwPopoverTriggerDirective, YuwRadioGroupComponent, YuwRightAddonDirective, YuwSearchInputComponent, YuwSheetCloseDirective, YuwSheetComponent, YuwSheetFooterDirective, YuwSheetImports, YuwSheetTriggerDirective, YuwSidebarComponent, YuwSidebarContentDirective, YuwSidebarContentExtraDirective, YuwSidebarFooterDirective, YuwSidebarFooterExtraDirective, YuwSidebarGroupContentDirective, YuwSidebarGroupDirective, YuwSidebarGroupLabelDirective, YuwSidebarHeaderDirective, YuwSidebarInsetDirective, YuwSidebarMenuBadgeDirective, YuwSidebarMenuButtonDirective, YuwSidebarMenuDirective, YuwSidebarMenuItemDirective, YuwSidebarMenuSubButtonDirective, YuwSidebarMenuSubDirective, YuwSidebarMenuSubItemDirective, YuwSidebarRailDirective, YuwSidebarSeparatorDirective, YuwSidebarTriggerComponent, YuwSidebarWrapperDirective, YuwSkeletonDirective, YuwSpinnerComponent, YuwSwitchComponent, YuwTBodyDirective, YuwTFootDirective, YuwTHeadDirective, YuwTabPanelDirective, YuwTableContainerDirective, YuwTableDirective, YuwTableImports, YuwTabsComponent, YuwTdDirective, YuwTextareaComponent, YuwThDirective, YuwToasterComponent, YuwTooltipDirective, YuwTrDirective, YuwValueAccessorBase, buildInputOtpGroups, cn, datatableCellVariants, datatableContainerVariants, datatableHeadVariants, datatableHeaderCellVariants, datatableRowVariants, getPaginationRange, provideValueAccessor, totalInputOtpLength };
2929
+ export type { YuwAlertDialogSizeDto, YuwAlertVariantDto, YuwAvatarGroupItemDto, YuwAvatarSizeDto, YuwBreadcrumbItemDto, YuwButtonGroupClickDto, YuwButtonGroupEntryDto, YuwButtonGroupItemDto, YuwButtonGroupTextDto, YuwColorDto, YuwComboboxItemContext, YuwComboboxOptionDto, YuwComboboxValue, YuwDatatableAlign, YuwDatatableAppearanceDto, YuwDatatableColumnDef, YuwDatatableColumnMeta, YuwDatatableFeatures, YuwDatepickerModeDto, YuwDatepickerValue, YuwFieldSizeDto, YuwInputModeDto, YuwInputOtpGroupDto, YuwInputOtpModeDto, YuwInputTypeDto, YuwPaginationRangeItem, YuwPaginationSizeDto, YuwPasswordRevealStateDto, YuwPopoverAlignDto, YuwRadioOptionDto, YuwSearchInputCollapseFromDto, YuwSheetSideDto, YuwSidebarCollapsibleDto, YuwSidebarContentDto, YuwSidebarGroupDto, YuwSidebarItemClickDto, YuwSidebarItemDto, YuwSidebarSideDto, YuwSidebarSubItemDto, YuwSidebarVariantDto, YuwSwitchSizeDto, YuwTabItemDto, YuwTabsActivationModeDto, YuwTabsOrientationDto, YuwTabsVariantDto, YuwTextFieldContract, YuwToasterPositionDto, YuwToasterThemeDto, YuwTooltipPositionDto };