yukit-web 0.3.4 → 0.5.0

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.
@@ -3,33 +3,34 @@ import * as _angular_core from '@angular/core';
3
3
  import { ModelSignal, Type, Provider, InputSignal, InputSignalWithTransform, TemplateRef, WritableSignal, Signal, OnInit, ElementRef } from '@angular/core';
4
4
  import { ControlValueAccessor } from '@angular/forms';
5
5
  import { SortingState, PaginationState, columnFilteringFeature, columnVisibilityFeature, rowPaginationFeature, rowSelectionFeature, rowSortingFeature, RowData, ColumnDef, ColumnFiltersState, ColumnVisibilityState, RowSelectionState } from '@tanstack/table-core';
6
+ import * as i1 from '@spartan-ng/brain/combobox';
6
7
  import { ButtonVariants } from 'yukit-web/helm/button';
7
- import * as i1 from 'yukit-web/helm/badge';
8
+ import * as i1$1 from 'yukit-web/helm/badge';
8
9
  import * as yukit_web from 'yukit-web';
9
10
  import { HlmAccordion, HlmAccordionItem } from 'yukit-web/helm/accordion';
10
11
  import { HlmLabel } from 'yukit-web/helm/label';
11
- import * as i1$1 from 'yukit-web/helm/skeleton';
12
- import * as i1$2 from 'yukit-web/helm/card';
13
- import * as i1$3 from 'yukit-web/helm/empty';
14
- import * as i1$4 from 'yukit-web/helm/context-menu';
12
+ import * as i1$2 from 'yukit-web/helm/skeleton';
13
+ import * as i1$3 from 'yukit-web/helm/card';
14
+ import * as i1$4 from 'yukit-web/helm/empty';
15
+ import * as i1$5 from 'yukit-web/helm/context-menu';
15
16
  import * as i2 from 'yukit-web/helm/dropdown-menu';
16
- import * as i1$5 from 'yukit-web/helm/table';
17
+ import * as i1$6 from 'yukit-web/helm/table';
17
18
  import * as class_variance_authority_types from 'class-variance-authority/types';
18
19
  import * as _tanstack_angular_table from '@tanstack/angular-table';
19
- import * as i1$6 from 'yukit-web/helm/item';
20
+ import * as i1$7 from 'yukit-web/helm/item';
20
21
  import { HlmItemSeparator } from 'yukit-web/helm/item';
21
- import * as i1$7 from '@spartan-ng/brain/sheet';
22
- import * as i1$8 from '@spartan-ng/brain/popover';
23
- import * as i1$9 from '@spartan-ng/brain/tooltip';
22
+ import * as i1$8 from '@spartan-ng/brain/sheet';
23
+ import * as i1$9 from '@spartan-ng/brain/popover';
24
+ import * as i1$a from '@spartan-ng/brain/tooltip';
24
25
  import { ToastOptions } from '@spartan-ng/brain/sonner';
25
26
  export { toast as yuwToast } from '@spartan-ng/brain/sonner';
26
- import * as i1$a from '@spartan-ng/brain/dialog';
27
+ import * as i1$b from '@spartan-ng/brain/dialog';
27
28
  import { BrnDialogState } from '@spartan-ng/brain/dialog';
28
- import * as i1$b from '@spartan-ng/brain/alert-dialog';
29
- import * as i1$c from 'yukit-web/helm/attachment';
29
+ import * as i1$c from '@spartan-ng/brain/alert-dialog';
30
+ import * as i1$d from 'yukit-web/helm/attachment';
30
31
  import { HlmAttachmentAction } from 'yukit-web/helm/attachment';
31
32
  import { RouterLink } from '@angular/router';
32
- import * as i1$d from 'yukit-web/helm/sidebar';
33
+ import * as i1$e from 'yukit-web/helm/sidebar';
33
34
  export { HlmSidebarConfig as YuwSidebarConfigDto, HlmSidebarService as YuwSidebarService, SidebarVariant as YuwSidebarServiceVariantDto, provideHlmSidebarConfig as provideYuwSidebarConfig } from 'yukit-web/helm/sidebar';
34
35
  import { CommandFilter } from '@spartan-ng/brain/command';
35
36
 
@@ -77,6 +78,95 @@ declare class YuwClassDirective {
77
78
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwClassDirective, "[yuwClass]", never, { "yuwClass": { "alias": "yuwClass"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
78
79
  }
79
80
 
81
+ /** Scroll axes the mouse-scroll directives drag along. */
82
+ type YuwScrollAxisDto = 'x' | 'y';
83
+ /**
84
+ * Click-and-drag scrolling for a mouse along one axis, shared by `yuwMouseScrollX` and `yuwMouseScrollY`.
85
+ * Touch and pen input are left to the browser's native scrolling, and nothing happens while the host
86
+ * does not overflow along the axis.
87
+ *
88
+ * Pressing the primary button and moving past `DRAG_THRESHOLD_PX` scrolls the host with the pointer,
89
+ * captured so it keeps following outside the host. The click that ends a drag is swallowed in the
90
+ * capture phase, so the control under the pointer is not activated; a shorter press is a normal click.
91
+ * The pointer is only captured once the drag starts, so a press that leaves the host before then is
92
+ * released outside unseen: it is dropped on the next move that arrives with the button up, and never
93
+ * turns into a drag the user is no longer holding.
94
+ * While dragging the host gets `data-dragging`, a `grabbing` cursor and no text selection.
95
+ *
96
+ * Built to cost nothing while idle, since it sits inside data-heavy views: every listener is a native one
97
+ * registered outside Angular, so no event ever schedules change detection, and the drag state lives in
98
+ * plain fields written straight to the DOM instead of signals bound to the host. At rest the host only
99
+ * listens to `pointerdown` (plus `wheel` in `yuwMouseScrollX`); the move, release and `dragstart`
100
+ * listeners exist only during a press, and the click-swallowing one only between a drag and its click.
101
+ * Each group hangs off an `AbortController`, so ending a press or destroying the directive drops it at once.
102
+ *
103
+ * Subclasses provide `_axis`, the axis they scroll along, and register extra host listeners with `_listen`.
104
+ */
105
+ declare abstract class YuwMouseDragScrollBase {
106
+ protected readonly _element: HTMLElement;
107
+ private readonly _zone;
108
+ protected abstract readonly _axis: YuwScrollAxisDto;
109
+ private _clickGuard;
110
+ private _dragging;
111
+ private readonly _lifetime;
112
+ private readonly _onPointerDown;
113
+ private readonly _onPointerEnd;
114
+ private readonly _onPointerMove;
115
+ private _press;
116
+ constructor();
117
+ /** Adds a native host listener outside Angular, removed when the directive is destroyed. */
118
+ protected _listen<K extends keyof HTMLElementEventMap>(type: K, listener: (event: HTMLElementEventMap[K]) => void, options?: AddEventListenerOptions): void;
119
+ private _endPress;
120
+ /**
121
+ * Swallows the click a drag ends with. The listener is dropped after that click, or on the next press
122
+ * when the release produced none.
123
+ */
124
+ private _guardNextClick;
125
+ private _setDragging;
126
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwMouseDragScrollBase, never>;
127
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwMouseDragScrollBase, never, never, {}, {}, never, never, true, never>;
128
+ }
129
+
130
+ /**
131
+ * Lets a mouse scroll a horizontally overflowing element, which otherwise only a touch swipe, a trackpad
132
+ * or Shift+wheel can move.
133
+ *
134
+ * - Wheel: a mostly vertical step scrolls sideways while the element can still move that way; at either
135
+ * end, or when nothing overflows, the event is left alone so the page keeps scrolling. Horizontal input
136
+ * (trackpads, tilt wheels) and Ctrl+wheel zoom pass through untouched.
137
+ * - Drag: click and drag scrolls sideways, as described in `YuwMouseDragScrollBase`.
138
+ *
139
+ * The wheel listener is native, registered outside Angular and non-passive, since it must be able to
140
+ * `preventDefault`; it only reads four numbers before returning, so it never delays the page's scrolling.
141
+ *
142
+ * Usage:
143
+ * ```html
144
+ * <div class="overflow-x-auto" yuwMouseScrollX>...</div>
145
+ * ```
146
+ */
147
+ declare class YuwMouseScrollXDirective extends YuwMouseDragScrollBase {
148
+ protected readonly _axis = "x";
149
+ private readonly _onWheel;
150
+ constructor();
151
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwMouseScrollXDirective, never>;
152
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwMouseScrollXDirective, "[yuwMouseScrollX]", never, {}, {}, never, never, true, never>;
153
+ }
154
+
155
+ /**
156
+ * Lets a mouse scroll a vertically overflowing element by click and drag, as described in
157
+ * `YuwMouseDragScrollBase`. The wheel already scrolls vertically, so it is left to the browser.
158
+ *
159
+ * Usage:
160
+ * ```html
161
+ * <div class="overflow-y-auto" yuwMouseScrollY>...</div>
162
+ * ```
163
+ */
164
+ declare class YuwMouseScrollYDirective extends YuwMouseDragScrollBase {
165
+ protected readonly _axis = "y";
166
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwMouseScrollYDirective, never>;
167
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwMouseScrollYDirective, "[yuwMouseScrollY]", never, {}, {}, never, never, true, never>;
168
+ }
169
+
80
170
  /**
81
171
  * Registers a component as a form control, so `formControlName`/`formControl`/`ngModel` bind to it.
82
172
  *
@@ -235,6 +325,8 @@ interface YuwComboboxOptionDto<TData = unknown> {
235
325
  data?: TData;
236
326
  }
237
327
 
328
+ type YuwColorDto = 'primary' | 'secondary' | 'neutral' | 'destructive' | 'success' | 'warning' | 'info' | 'muted' | 'violet' | 'orange' | 'pink' | 'teal';
329
+
238
330
  /** The `let-` context of a `*yuwComboboxItem` template. `$implicit` is the option itself, so
239
331
  * `let-option` works; `selected` is passed alongside because an item that renders its own
240
332
  * markup loses the default check glyph and often needs to show that state some other way. */
@@ -268,6 +360,49 @@ declare class YuwComboboxItemDirective<TData = unknown> {
268
360
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwComboboxItemDirective<any>, "[yuwComboboxItem]", never, { "typeOf": { "alias": "yuwComboboxItemTypeOf"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
269
361
  }
270
362
 
363
+ /**
364
+ * The `let-` context of a `yuwComboboxTrigger` template.
365
+ *
366
+ * `$implict`: Labels of the selected options joined with `, `;
367
+ * empty while nothing is selected.
368
+ *
369
+ * `labels`: Labels of the selected options, in selection order.
370
+ */
371
+ interface YuwComboboxTriggerContext {
372
+ readonly $implicit: string;
373
+ readonly labels: readonly string[];
374
+ }
375
+ /**
376
+ * Turns `<yuw-combobox>` into a button that opens its option list directly, with the search field
377
+ * inside the list. The template is the button's content; the button itself is a `<yuw-button>`
378
+ * styled by the combobox `trigger*` inputs.
379
+ *
380
+ * Usage:
381
+ * ```html
382
+ * <yuw-combobox multiple [options]="columns" [(value)]="hidden" triggerAriaLabel="Columns" triggerSize="icon">
383
+ * <ng-template yuwComboboxTrigger let-selected>
384
+ * <ng-icon name="lucideSettings2" />
385
+ * </ng-template>
386
+ * </yuw-combobox>
387
+ * ```
388
+ */
389
+ declare class YuwComboboxTriggerDirective {
390
+ readonly templateRef: TemplateRef<YuwComboboxTriggerContext>;
391
+ static ngTemplateContextGuard(_directive: YuwComboboxTriggerDirective, _context: unknown): _context is YuwComboboxTriggerContext;
392
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwComboboxTriggerDirective, never>;
393
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwComboboxTriggerDirective, "ng-template[yuwComboboxTrigger]", never, {}, {}, never, never, true, never>;
394
+ }
395
+ /**
396
+ * Makes a `<yuw-button>` the trigger and anchor of the surrounding brain combobox. The brain
397
+ * trigger's selector only matches a native `button`, so composing the directives here is what lets
398
+ * the combobox reuse `<yuw-button>`; its `inline-flex` host gives the overlay a box to anchor to and
399
+ * receives the click bubbling up from the inner button.
400
+ */
401
+ declare class YuwComboboxTriggerButtonDirective {
402
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwComboboxTriggerButtonDirective, never>;
403
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwComboboxTriggerButtonDirective, "yuw-button[yuwComboboxTriggerButton]", never, {}, {}, never, never, true, [{ directive: typeof i1.BrnComboboxTrigger; inputs: {}; outputs: {}; }, { directive: typeof i1.BrnComboboxAnchor; inputs: {}; outputs: {}; }, { directive: typeof i1.BrnComboboxPopoverTrigger; inputs: {}; outputs: {}; }]>;
404
+ }
405
+
271
406
  type YuwComboboxValue = string | string[] | undefined;
272
407
  /**
273
408
  * Searchable select combobox component supporting single or multiple selections, search filtering, and custom option rendering.
@@ -297,8 +432,19 @@ type YuwComboboxValue = string | string[] | undefined;
297
432
  * - `inputId`: HTML `id` for the focusable control (the search input, or the trigger button when
298
433
  * `readonlyTrigger` is set), enabling external `<label for="...">` association.
299
434
  * - `readonlyTrigger`: Renders control as a button showing selected label, placing search input inside popover.
435
+ * - `triggerColor`, `triggerSize`, `triggerVariant`, `triggerClass`: Look of the button rendered by a
436
+ * projected `yuwComboboxTrigger` template, same vocabulary as `<yuw-popover>`. Defaults are
437
+ * `'neutral'`, `'default'`, `'outline'` and `''`.
438
+ *
439
+ * A projected `<ng-template yuwComboboxTrigger>` replaces the control, in either mode, with a
440
+ * `<yuw-button>` whose content is that template: clicking it opens the option list straight away,
441
+ * with the search field inside it. `triggerAriaLabel` names that button, so pass one that reads well
442
+ * for an icon-only trigger. See `YuwComboboxTriggerDirective`.
300
443
  * - `invalid`: Forces invalid styling.
301
444
  *
445
+ * Content marked `yuwComboboxFooter` is projected at the bottom of the option list, for actions
446
+ * that belong with it (a "clear all", say); the consumer renders and styles it.
447
+ *
302
448
  * `multiple` takes precedence over `readonlyTrigger`: when both are set the multi-select
303
449
  * chips shape renders and `readonlyTrigger` is ignored.
304
450
  *
@@ -316,6 +462,7 @@ declare class YuwComboboxComponent<TData = unknown> extends YuwValueAccessorBase
316
462
  private readonly _panel;
317
463
  private readonly _singleBox;
318
464
  protected readonly itemTemplate: _angular_core.Signal<YuwComboboxItemDirective<TData> | undefined>;
465
+ protected readonly triggerTemplate: _angular_core.Signal<YuwComboboxTriggerDirective | undefined>;
319
466
  readonly clearAriaLabel: _angular_core.InputSignal<string | undefined>;
320
467
  readonly emptyText: _angular_core.InputSignal<string | undefined>;
321
468
  readonly inputId: _angular_core.InputSignal<string | undefined>;
@@ -329,16 +476,22 @@ declare class YuwComboboxComponent<TData = unknown> extends YuwValueAccessorBase
329
476
  readonly searchPlaceholder: _angular_core.InputSignal<string | undefined>;
330
477
  readonly size: _angular_core.InputSignal<YuwFieldSizeDto>;
331
478
  readonly triggerAriaLabel: _angular_core.InputSignal<string>;
479
+ readonly triggerClass: _angular_core.InputSignal<string>;
480
+ readonly triggerColor: _angular_core.InputSignal<YuwColorDto>;
481
+ readonly triggerSize: _angular_core.InputSignal<"default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined>;
482
+ readonly triggerVariant: _angular_core.InputSignal<"link" | "default" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined>;
332
483
  readonly value: _angular_core.ModelSignal<YuwComboboxValue>;
333
484
  protected readonly _focusSelectors: string[];
334
485
  private readonly _generatedId;
335
486
  protected readonly _itemToString: (value: string) => string;
336
487
  protected readonly _chipsClass: _angular_core.Signal<string>;
337
488
  protected readonly _clearVisible: _angular_core.Signal<boolean>;
489
+ protected readonly _contentClass: _angular_core.Signal<"" | "w-auto min-w-56 max-w-80">;
338
490
  protected readonly _controlId: _angular_core.Signal<string>;
339
491
  protected readonly _fieldClass: _angular_core.Signal<string>;
340
492
  private readonly _labelByValue;
341
493
  protected readonly _multipleValue: _angular_core.Signal<string[]>;
494
+ protected readonly _searchInPanel: _angular_core.Signal<boolean>;
342
495
  protected readonly _selectedChips: _angular_core.Signal<{
343
496
  value: string;
344
497
  label: string;
@@ -346,6 +499,7 @@ declare class YuwComboboxComponent<TData = unknown> extends YuwValueAccessorBase
346
499
  protected readonly _selectedValues: _angular_core.Signal<Set<string>>;
347
500
  protected readonly _singleValue: _angular_core.Signal<string | undefined>;
348
501
  protected readonly _triggerClass: _angular_core.Signal<string>;
502
+ protected readonly _triggerContext: _angular_core.Signal<YuwComboboxTriggerContext>;
349
503
  close(): void;
350
504
  constructor();
351
505
  /**
@@ -365,7 +519,7 @@ declare class YuwComboboxComponent<TData = unknown> extends YuwValueAccessorBase
365
519
  */
366
520
  private _guardEscape;
367
521
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwComboboxComponent<any>, never>;
368
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwComboboxComponent<any>, "yuw-combobox", never, { "clearAriaLabel": { "alias": "clearAriaLabel"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "keepValueOnEscape": { "alias": "keepValueOnEscape"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": true; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "readonlyTrigger": { "alias": "readonlyTrigger"; "required": false; "isSignal": true; }; "search": { "alias": "search"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "triggerAriaLabel": { "alias": "triggerAriaLabel"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "search": "searchChange"; "value": "valueChange"; }, ["itemTemplate"], never, true, never>;
522
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwComboboxComponent<any>, "yuw-combobox", never, { "clearAriaLabel": { "alias": "clearAriaLabel"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "keepValueOnEscape": { "alias": "keepValueOnEscape"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": true; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "readonlyTrigger": { "alias": "readonlyTrigger"; "required": false; "isSignal": true; }; "search": { "alias": "search"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "triggerAriaLabel": { "alias": "triggerAriaLabel"; "required": true; "isSignal": true; }; "triggerClass": { "alias": "triggerClass"; "required": false; "isSignal": true; }; "triggerColor": { "alias": "triggerColor"; "required": false; "isSignal": true; }; "triggerSize": { "alias": "triggerSize"; "required": false; "isSignal": true; }; "triggerVariant": { "alias": "triggerVariant"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "search": "searchChange"; "value": "valueChange"; }, ["itemTemplate", "triggerTemplate"], ["[yuwComboboxFooter]"], true, never>;
369
523
  }
370
524
 
371
525
  interface YuwPageSort {
@@ -412,8 +566,6 @@ interface YuwPagedList<Filters> {
412
566
  */
413
567
  declare function createPagedList<Filters>(options: YuwPagedListOptions<Filters>): YuwPagedList<Filters>;
414
568
 
415
- type YuwColorDto = 'primary' | 'secondary' | 'neutral' | 'destructive' | 'success' | 'warning' | 'info' | 'muted' | 'violet' | 'orange' | 'pink' | 'teal';
416
-
417
569
  /**
418
570
  * A single action button, rendered as a `<button>` or, when `href` is set, an `<a>`.
419
571
  *
@@ -465,7 +617,7 @@ declare class YuwButtonComponent {
465
617
  readonly size: _angular_core.InputSignal<"default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined>;
466
618
  readonly target: _angular_core.InputSignal<string | undefined>;
467
619
  readonly transparent: _angular_core.InputSignalWithTransform<boolean, unknown>;
468
- readonly type: _angular_core.InputSignal<"button" | "reset" | "submit">;
620
+ readonly type: _angular_core.InputSignal<"reset" | "submit" | "button">;
469
621
  readonly userClass: _angular_core.InputSignal<string>;
470
622
  readonly variant: _angular_core.InputSignal<"link" | "default" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined>;
471
623
  readonly yuwDropdownMenuTrigger: _angular_core.InputSignal<TemplateRef<unknown> | undefined>;
@@ -602,7 +754,7 @@ declare class YuwButtonGroupComponent {
602
754
  color: YuwColorDto;
603
755
  transparent: boolean;
604
756
  disabled: boolean;
605
- type: "button" | "reset" | "submit";
757
+ type: "reset" | "submit" | "button";
606
758
  class: string;
607
759
  id: string;
608
760
  label?: string;
@@ -681,7 +833,7 @@ declare class YuwBadgeComponent {
681
833
  protected readonly removeClass: _angular_core.Signal<string>;
682
834
  protected onRemoveClick(event: Event): void;
683
835
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwBadgeComponent, never>;
684
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwBadgeComponent, "yuw-badge", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "dot": { "alias": "dot"; "required": false; "isSignal": true; }; "removeLabel": { "alias": "removeLabel"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, { "removed": "removed"; }, never, ["[yuwBadgeIcon]", "*"], true, [{ directive: typeof i1.HlmBadge; inputs: { "variant": "variant"; }; outputs: {}; }]>;
836
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwBadgeComponent, "yuw-badge", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "dot": { "alias": "dot"; "required": false; "isSignal": true; }; "removeLabel": { "alias": "removeLabel"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, { "removed": "removed"; }, never, ["[yuwBadgeIcon]", "*"], true, [{ directive: typeof i1$1.HlmBadge; inputs: { "variant": "variant"; }; outputs: {}; }]>;
685
837
  }
686
838
 
687
839
  /** A single crumb in `<yuw-breadcrumb>`'s `items` input. */
@@ -806,95 +958,6 @@ type YuwPaginationRangeItem = number | 'ellipsis';
806
958
  */
807
959
  declare function getPaginationRange(page: number, totalPages: number): YuwPaginationRangeItem[];
808
960
 
809
- /** Text of the page size selector and its range message. */
810
- interface YuwPageSizeLabels {
811
- readonly label: string;
812
- readonly empty: string;
813
- readonly range: (range: YuwPageRange) => string;
814
- }
815
- /** Text of the standalone pagination footer. */
816
- interface YuwListPaginationLabels {
817
- readonly pageSize: YuwPageSizeLabels;
818
- readonly ariaLabel: string;
819
- readonly previous: string;
820
- readonly next: string;
821
- readonly ellipsis: string;
822
- }
823
-
824
- /**
825
- * Page size selector and range message of a `YuwPagedList`; in a datatable it takes the pagination slot.
826
- *
827
- * Inputs:
828
- * - `disabled`: Disables the page size selector. Default is `false`.
829
- * - `labels`: Required `YuwPageSizeLabels` with the selector label, the text for an empty list and the function that builds the range message.
830
- * - `list`: Required `YuwPagedList` whose page size is chosen and whose range is shown in the message.
831
- */
832
- declare class YuwPageSizeComponent {
833
- readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
834
- readonly labels: _angular_core.InputSignal<YuwPageSizeLabels>;
835
- readonly list: _angular_core.InputSignal<YuwPagedList<unknown>>;
836
- protected readonly message: _angular_core.Signal<string>;
837
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwPageSizeComponent, never>;
838
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwPageSizeComponent, "yuw-page-size", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": true; "isSignal": true; }; "list": { "alias": "list"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
839
- }
840
-
841
- /**
842
- * Pagination footer for lists without a datatable: the page size selector with its range message
843
- * and the page navigation, both driven by one `YuwPagedList`. A disabled `fieldset` blocks its buttons.
844
- *
845
- * Inputs:
846
- * - `disabled`: Disables the page size selector and the page buttons. Default is `false`.
847
- * - `labels`: Required `YuwListPaginationLabels` with the consumer's text for the page size selector, the navigation aria label and the previous, next and ellipsis texts.
848
- * - `list`: Required `YuwPagedList` holding the current page, page size, total pages and range; changes made in the footer are written back to it.
849
- */
850
- declare class YuwListPaginationComponent {
851
- readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
852
- readonly labels: _angular_core.InputSignal<YuwListPaginationLabels>;
853
- readonly list: _angular_core.InputSignal<YuwPagedList<unknown>>;
854
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwListPaginationComponent, never>;
855
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwListPaginationComponent, "yuw-list-pagination", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": true; "isSignal": true; }; "list": { "alias": "list"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
856
- }
857
-
858
- /**
859
- * Page title, optional description and up to two actions, each rendered when its label is set.
860
- * On mobile the primary action shows only its icon, or `primaryMobileLabel`. Icons are `@ng-icons`
861
- * names; the consumer registers any beyond `lucidePlus` with `provideIcons`.
862
- *
863
- * Inputs:
864
- * - `backLabel`: Text of the back button, which renders only when set; on small screens only its arrow shows.
865
- * - `description`: Optional subtitle under the title.
866
- * - `primaryDisabled`: Disables the primary action, which stays visible but ignores clicks, e.g. while the list it creates items for is loading.
867
- * - `primaryIcon`: Icon name shown in the primary action.
868
- * - `primaryLabel`: Text of the primary action, which renders only when set.
869
- * - `primaryMobileLabel`: Text the primary action shows on small screens instead of its label.
870
- * - `secondaryIcon`: Icon name shown in the secondary action.
871
- * - `secondaryLabel`: Text of the secondary action, which renders only when set; hidden on small screens, leaving its icon.
872
- * - `title`: Required page title.
873
- *
874
- * Outputs:
875
- * - `backClicked`: Emits the `MouseEvent` of the back button.
876
- * - `primaryClicked`: Emits the `MouseEvent` of the primary action.
877
- * - `secondaryClicked`: Emits the `MouseEvent` of the secondary action.
878
- */
879
- declare class YuwPageHeaderComponent {
880
- readonly backLabel: _angular_core.InputSignal<string | undefined>;
881
- readonly description: _angular_core.InputSignal<string | undefined>;
882
- readonly primaryDisabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
883
- readonly primaryIcon: _angular_core.InputSignal<string | undefined>;
884
- readonly primaryLabel: _angular_core.InputSignal<string | undefined>;
885
- readonly primaryMobileLabel: _angular_core.InputSignal<string | undefined>;
886
- readonly secondaryDisabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
887
- readonly secondaryIcon: _angular_core.InputSignal<string | undefined>;
888
- readonly secondaryLabel: _angular_core.InputSignal<string | undefined>;
889
- readonly title: _angular_core.InputSignal<string>;
890
- readonly backClicked: _angular_core.OutputEmitterRef<MouseEvent>;
891
- readonly primaryClicked: _angular_core.OutputEmitterRef<MouseEvent>;
892
- readonly secondaryClicked: _angular_core.OutputEmitterRef<MouseEvent>;
893
- protected readonly isMobile: _angular_core.Signal<boolean>;
894
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwPageHeaderComponent, never>;
895
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwPageHeaderComponent, "yuw-page-header", never, { "backLabel": { "alias": "backLabel"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "primaryDisabled": { "alias": "primaryDisabled"; "required": false; "isSignal": true; }; "primaryIcon": { "alias": "primaryIcon"; "required": false; "isSignal": true; }; "primaryLabel": { "alias": "primaryLabel"; "required": false; "isSignal": true; }; "primaryMobileLabel": { "alias": "primaryMobileLabel"; "required": false; "isSignal": true; }; "secondaryDisabled": { "alias": "secondaryDisabled"; "required": false; "isSignal": true; }; "secondaryIcon": { "alias": "secondaryIcon"; "required": false; "isSignal": true; }; "secondaryLabel": { "alias": "secondaryLabel"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": true; "isSignal": true; }; }, { "backClicked": "backClicked"; "primaryClicked": "primaryClicked"; "secondaryClicked": "secondaryClicked"; }, never, never, true, never>;
896
- }
897
-
898
961
  /**
899
962
  * Container directive for collapsible accordion items.
900
963
  *
@@ -1637,53 +1700,7 @@ declare class YuwRadioGroupComponent extends YuwValueAccessorBase<string | undef
1637
1700
  */
1638
1701
  declare class YuwSkeletonDirective {
1639
1702
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSkeletonDirective, never>;
1640
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSkeletonDirective, "[yuwSkeleton]", never, {}, {}, never, never, true, [{ directive: typeof i1$1.HlmSkeleton; inputs: {}; outputs: {}; }]>;
1641
- }
1642
-
1643
- /**
1644
- * Grid of projected cards, usually `yuw-card-grid-item`s in an `@for`. `loading` shows
1645
- * `skeletonCount` placeholders shaped by `skeletonClass`; `empty` shows `emptyText`; `columnsClass`
1646
- * holds the Tailwind column utilities.
1647
- *
1648
- * Inputs:
1649
- * - `columnsClass`: Tailwind grid column utilities applied to the grid and its skeleton. Default is `'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4'`.
1650
- * - `empty`: Shows `emptyText` instead of the projected cards. Default is `false`.
1651
- * - `emptyText`: Required message shown when `empty` is set. The app supplies and translates it.
1652
- * - `loading`: Shows `skeletonCount` placeholders instead of the content; takes precedence over `empty`. Default is `false`.
1653
- * - `skeletonClass`: Extra classes sizing each placeholder, e.g. its height. Default is `'h-16'`.
1654
- * - `skeletonCount`: Number of placeholders shown while loading. Default is `12`.
1655
- *
1656
- * `YuwCardGridComponent.COLUMNS` holds the column classes admin lists share per view mode — `list`
1657
- * is one column, `block` grows from one to five, and `tags` packs small tag cards up to six — so every listing lays out its cards the same
1658
- * way: `[columnsClass]="YuwCardGridComponent.COLUMNS[mode]"`.
1659
- */
1660
- declare class YuwCardGridComponent {
1661
- readonly columnsClass: _angular_core.InputSignal<string>;
1662
- readonly empty: _angular_core.InputSignalWithTransform<boolean, unknown>;
1663
- readonly emptyText: _angular_core.InputSignal<string>;
1664
- readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
1665
- readonly skeletonClass: _angular_core.InputSignal<string>;
1666
- readonly skeletonCount: _angular_core.InputSignalWithTransform<number, unknown>;
1667
- static readonly COLUMNS: {
1668
- readonly list: "grid-cols-1";
1669
- readonly block: "grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5";
1670
- readonly tags: "grid-cols-1 sm:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5 2xl:grid-cols-6";
1671
- };
1672
- protected readonly skeletons: _angular_core.Signal<number[]>;
1673
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwCardGridComponent, never>;
1674
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwCardGridComponent, "yuw-card-grid", never, { "columnsClass": { "alias": "columnsClass"; "required": false; "isSignal": true; }; "empty": { "alias": "empty"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": true; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "skeletonClass": { "alias": "skeletonClass"; "required": false; "isSignal": true; }; "skeletonCount": { "alias": "skeletonCount"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1675
- }
1676
-
1677
- /**
1678
- * While `pending` the card stays hidden in place under a skeleton, so the grid does not jump.
1679
- *
1680
- * Inputs:
1681
- * - `pending`: Hides the projected card and overlays a skeleton while it is loading. Default is `false`.
1682
- */
1683
- declare class YuwCardGridItemComponent {
1684
- readonly pending: _angular_core.InputSignalWithTransform<boolean, unknown>;
1685
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwCardGridItemComponent, never>;
1686
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwCardGridItemComponent, "yuw-card-grid-item", never, { "pending": { "alias": "pending"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1703
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSkeletonDirective, "[yuwSkeleton]", never, {}, {}, never, never, true, [{ directive: typeof i1$2.HlmSkeleton; inputs: {}; outputs: {}; }]>;
1687
1704
  }
1688
1705
 
1689
1706
  /**
@@ -1704,37 +1721,37 @@ declare class YuwCardGridItemComponent {
1704
1721
  */
1705
1722
  declare class YuwCardDirective {
1706
1723
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwCardDirective, never>;
1707
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwCardDirective, "[yuwCard]", never, {}, {}, never, never, true, [{ directive: typeof i1$2.HlmCard; inputs: { "size": "size"; }; outputs: {}; }]>;
1724
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwCardDirective, "[yuwCard]", never, {}, {}, never, never, true, [{ directive: typeof i1$3.HlmCard; inputs: { "size": "size"; }; outputs: {}; }]>;
1708
1725
  }
1709
1726
  /** Header container directive for a card. */
1710
1727
  declare class YuwCardHeaderDirective {
1711
1728
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwCardHeaderDirective, never>;
1712
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwCardHeaderDirective, "[yuwCardHeader]", never, {}, {}, never, never, true, [{ directive: typeof i1$2.HlmCardHeader; inputs: {}; outputs: {}; }]>;
1729
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwCardHeaderDirective, "[yuwCardHeader]", never, {}, {}, never, never, true, [{ directive: typeof i1$3.HlmCardHeader; inputs: {}; outputs: {}; }]>;
1713
1730
  }
1714
1731
  /** Heading directive for card title text. */
1715
1732
  declare class YuwCardTitleDirective {
1716
1733
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwCardTitleDirective, never>;
1717
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwCardTitleDirective, "[yuwCardTitle]", never, {}, {}, never, never, true, [{ directive: typeof i1$2.HlmCardTitle; inputs: {}; outputs: {}; }]>;
1734
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwCardTitleDirective, "[yuwCardTitle]", never, {}, {}, never, never, true, [{ directive: typeof i1$3.HlmCardTitle; inputs: {}; outputs: {}; }]>;
1718
1735
  }
1719
1736
  /** Subtitle or description directive for card text. */
1720
1737
  declare class YuwCardDescriptionDirective {
1721
1738
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwCardDescriptionDirective, never>;
1722
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwCardDescriptionDirective, "[yuwCardDescription]", never, {}, {}, never, never, true, [{ directive: typeof i1$2.HlmCardDescription; inputs: {}; outputs: {}; }]>;
1739
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwCardDescriptionDirective, "[yuwCardDescription]", never, {}, {}, never, never, true, [{ directive: typeof i1$3.HlmCardDescription; inputs: {}; outputs: {}; }]>;
1723
1740
  }
1724
1741
  /** Header action directive for placing top-right controls (e.g. menu button or status badge). */
1725
1742
  declare class YuwCardActionDirective {
1726
1743
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwCardActionDirective, never>;
1727
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwCardActionDirective, "[yuwCardAction]", never, {}, {}, never, never, true, [{ directive: typeof i1$2.HlmCardAction; inputs: {}; outputs: {}; }]>;
1744
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwCardActionDirective, "[yuwCardAction]", never, {}, {}, never, never, true, [{ directive: typeof i1$3.HlmCardAction; inputs: {}; outputs: {}; }]>;
1728
1745
  }
1729
1746
  /** Main body container directive for card content. */
1730
1747
  declare class YuwCardContentDirective {
1731
1748
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwCardContentDirective, never>;
1732
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwCardContentDirective, "[yuwCardContent]", never, {}, {}, never, never, true, [{ directive: typeof i1$2.HlmCardContent; inputs: {}; outputs: {}; }]>;
1749
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwCardContentDirective, "[yuwCardContent]", never, {}, {}, never, never, true, [{ directive: typeof i1$3.HlmCardContent; inputs: {}; outputs: {}; }]>;
1733
1750
  }
1734
1751
  /** Footer container directive for card action buttons or summary info. */
1735
1752
  declare class YuwCardFooterDirective {
1736
1753
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwCardFooterDirective, never>;
1737
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwCardFooterDirective, "[yuwCardFooter]", never, {}, {}, never, never, true, [{ directive: typeof i1$2.HlmCardFooter; inputs: {}; outputs: {}; }]>;
1754
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwCardFooterDirective, "[yuwCardFooter]", never, {}, {}, never, never, true, [{ directive: typeof i1$3.HlmCardFooter; inputs: {}; outputs: {}; }]>;
1738
1755
  }
1739
1756
  /** Every card part, for a consumer's `imports`. */
1740
1757
  declare const YuwCardImports: readonly [typeof YuwCardDirective, typeof YuwCardHeaderDirective, typeof YuwCardTitleDirective, typeof YuwCardDescriptionDirective, typeof YuwCardActionDirective, typeof YuwCardContentDirective, typeof YuwCardFooterDirective];
@@ -1760,32 +1777,32 @@ declare const YuwCardImports: readonly [typeof YuwCardDirective, typeof YuwCardH
1760
1777
  */
1761
1778
  declare class YuwEmptyDirective {
1762
1779
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwEmptyDirective, never>;
1763
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwEmptyDirective, "[yuwEmpty]", never, {}, {}, never, never, true, [{ directive: typeof i1$3.HlmEmpty; inputs: {}; outputs: {}; }]>;
1780
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwEmptyDirective, "[yuwEmpty]", never, {}, {}, never, never, true, [{ directive: typeof i1$4.HlmEmpty; inputs: {}; outputs: {}; }]>;
1764
1781
  }
1765
1782
  /** Header container directive for empty-state title and media. */
1766
1783
  declare class YuwEmptyHeaderDirective {
1767
1784
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwEmptyHeaderDirective, never>;
1768
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwEmptyHeaderDirective, "[yuwEmptyHeader]", never, {}, {}, never, never, true, [{ directive: typeof i1$3.HlmEmptyHeader; inputs: {}; outputs: {}; }]>;
1785
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwEmptyHeaderDirective, "[yuwEmptyHeader]", never, {}, {}, never, never, true, [{ directive: typeof i1$4.HlmEmptyHeader; inputs: {}; outputs: {}; }]>;
1769
1786
  }
1770
1787
  /** Slot directive for empty-state icons or illustrations. Supports `variant` input. */
1771
1788
  declare class YuwEmptyMediaDirective {
1772
1789
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwEmptyMediaDirective, never>;
1773
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwEmptyMediaDirective, "[yuwEmptyMedia]", never, {}, {}, never, never, true, [{ directive: typeof i1$3.HlmEmptyMedia; inputs: { "variant": "variant"; }; outputs: {}; }]>;
1790
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwEmptyMediaDirective, "[yuwEmptyMedia]", never, {}, {}, never, never, true, [{ directive: typeof i1$4.HlmEmptyMedia; inputs: { "variant": "variant"; }; outputs: {}; }]>;
1774
1791
  }
1775
1792
  /** Title heading directive for empty state message. */
1776
1793
  declare class YuwEmptyTitleDirective {
1777
1794
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwEmptyTitleDirective, never>;
1778
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwEmptyTitleDirective, "[yuwEmptyTitle]", never, {}, {}, never, never, true, [{ directive: typeof i1$3.HlmEmptyTitle; inputs: {}; outputs: {}; }]>;
1795
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwEmptyTitleDirective, "[yuwEmptyTitle]", never, {}, {}, never, never, true, [{ directive: typeof i1$4.HlmEmptyTitle; inputs: {}; outputs: {}; }]>;
1779
1796
  }
1780
1797
  /** Description paragraph directive explaining the empty state. */
1781
1798
  declare class YuwEmptyDescriptionDirective {
1782
1799
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwEmptyDescriptionDirective, never>;
1783
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwEmptyDescriptionDirective, "[yuwEmptyDescription]", never, {}, {}, never, never, true, [{ directive: typeof i1$3.HlmEmptyDescription; inputs: {}; outputs: {}; }]>;
1800
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwEmptyDescriptionDirective, "[yuwEmptyDescription]", never, {}, {}, never, never, true, [{ directive: typeof i1$4.HlmEmptyDescription; inputs: {}; outputs: {}; }]>;
1784
1801
  }
1785
1802
  /** Content slot directive for action buttons or call-to-action controls in an empty state. */
1786
1803
  declare class YuwEmptyContentDirective {
1787
1804
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwEmptyContentDirective, never>;
1788
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwEmptyContentDirective, "[yuwEmptyContent]", never, {}, {}, never, never, true, [{ directive: typeof i1$3.HlmEmptyContent; inputs: {}; outputs: {}; }]>;
1805
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwEmptyContentDirective, "[yuwEmptyContent]", never, {}, {}, never, never, true, [{ directive: typeof i1$4.HlmEmptyContent; inputs: {}; outputs: {}; }]>;
1789
1806
  }
1790
1807
  /** Every empty-state part, for a consumer's `imports`. */
1791
1808
  declare const YuwEmptyImports: readonly [typeof YuwEmptyDirective, typeof YuwEmptyHeaderDirective, typeof YuwEmptyMediaDirective, typeof YuwEmptyTitleDirective, typeof YuwEmptyDescriptionDirective, typeof YuwEmptyContentDirective];
@@ -1887,7 +1904,7 @@ declare class YuwContextMenuTriggerDirective {
1887
1904
  readonly opened: _angular_core.OutputRef<void>;
1888
1905
  constructor();
1889
1906
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwContextMenuTriggerDirective, never>;
1890
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwContextMenuTriggerDirective, "[yuwContextMenuTrigger]", never, { "menu": { "alias": "yuwContextMenuTrigger"; "required": true; "isSignal": true; }; "menuData": { "alias": "yuwContextMenuTriggerData"; "required": false; "isSignal": true; }; }, { "closed": "closed"; "opened": "opened"; }, never, never, true, [{ directive: typeof i1$4.HlmContextMenuTrigger; inputs: { "disabled": "disabled"; "align": "align"; "side": "side"; }; outputs: {}; }]>;
1907
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwContextMenuTriggerDirective, "[yuwContextMenuTrigger]", never, { "menu": { "alias": "yuwContextMenuTrigger"; "required": true; "isSignal": true; }; "menuData": { "alias": "yuwContextMenuTriggerData"; "required": false; "isSignal": true; }; }, { "closed": "closed"; "opened": "opened"; }, never, never, true, [{ directive: typeof i1$5.HlmContextMenuTrigger; inputs: { "disabled": "disabled"; "align": "align"; "side": "side"; }; outputs: {}; }]>;
1891
1908
  }
1892
1909
  /** Container directive for context menu options, placed inside the context menu template. */
1893
1910
  declare class YuwContextMenuDirective {
@@ -2093,47 +2110,47 @@ declare class YuwDatepickerComponent extends YuwValueAccessorBase<YuwDatepickerV
2093
2110
  */
2094
2111
  declare class YuwTableContainerDirective {
2095
2112
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwTableContainerDirective, never>;
2096
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwTableContainerDirective, "[yuwTableContainer]", never, {}, {}, never, never, true, [{ directive: typeof i1$5.HlmTableContainer; inputs: {}; outputs: {}; }]>;
2113
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwTableContainerDirective, "[yuwTableContainer]", never, {}, {}, never, never, true, [{ directive: typeof i1$6.HlmTableContainer; inputs: {}; outputs: {}; }]>;
2097
2114
  }
2098
2115
  /** Table element styling directive applied to native `<table>`. */
2099
2116
  declare class YuwTableDirective {
2100
2117
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwTableDirective, never>;
2101
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwTableDirective, "[yuwTable]", never, {}, {}, never, never, true, [{ directive: typeof i1$5.HlmTable; inputs: {}; outputs: {}; }]>;
2118
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwTableDirective, "[yuwTable]", never, {}, {}, never, never, true, [{ directive: typeof i1$6.HlmTable; inputs: {}; outputs: {}; }]>;
2102
2119
  }
2103
2120
  /** Table header container directive applied to native `<thead>`. */
2104
2121
  declare class YuwTHeadDirective {
2105
2122
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwTHeadDirective, never>;
2106
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwTHeadDirective, "[yuwTHead]", never, {}, {}, never, never, true, [{ directive: typeof i1$5.HlmTHead; inputs: {}; outputs: {}; }]>;
2123
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwTHeadDirective, "[yuwTHead]", never, {}, {}, never, never, true, [{ directive: typeof i1$6.HlmTHead; inputs: {}; outputs: {}; }]>;
2107
2124
  }
2108
2125
  /** Table body container directive applied to native `<tbody>`. */
2109
2126
  declare class YuwTBodyDirective {
2110
2127
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwTBodyDirective, never>;
2111
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwTBodyDirective, "[yuwTBody]", never, {}, {}, never, never, true, [{ directive: typeof i1$5.HlmTBody; inputs: {}; outputs: {}; }]>;
2128
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwTBodyDirective, "[yuwTBody]", never, {}, {}, never, never, true, [{ directive: typeof i1$6.HlmTBody; inputs: {}; outputs: {}; }]>;
2112
2129
  }
2113
2130
  /** Table footer container directive applied to native `<tfoot>`. */
2114
2131
  declare class YuwTFootDirective {
2115
2132
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwTFootDirective, never>;
2116
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwTFootDirective, "[yuwTFoot]", never, {}, {}, never, never, true, [{ directive: typeof i1$5.HlmTFoot; inputs: {}; outputs: {}; }]>;
2133
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwTFootDirective, "[yuwTFoot]", never, {}, {}, never, never, true, [{ directive: typeof i1$6.HlmTFoot; inputs: {}; outputs: {}; }]>;
2117
2134
  }
2118
2135
  /** Table row directive applied to native `<tr>`. */
2119
2136
  declare class YuwTrDirective {
2120
2137
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwTrDirective, never>;
2121
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwTrDirective, "[yuwTr]", never, {}, {}, never, never, true, [{ directive: typeof i1$5.HlmTr; inputs: {}; outputs: {}; }]>;
2138
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwTrDirective, "[yuwTr]", never, {}, {}, never, never, true, [{ directive: typeof i1$6.HlmTr; inputs: {}; outputs: {}; }]>;
2122
2139
  }
2123
2140
  /** Table header cell directive applied to native `<th>`. */
2124
2141
  declare class YuwThDirective {
2125
2142
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwThDirective, never>;
2126
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwThDirective, "[yuwTh]", never, {}, {}, never, never, true, [{ directive: typeof i1$5.HlmTh; inputs: {}; outputs: {}; }]>;
2143
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwThDirective, "[yuwTh]", never, {}, {}, never, never, true, [{ directive: typeof i1$6.HlmTh; inputs: {}; outputs: {}; }]>;
2127
2144
  }
2128
2145
  /** Table data cell directive applied to native `<td>`. */
2129
2146
  declare class YuwTdDirective {
2130
2147
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwTdDirective, never>;
2131
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwTdDirective, "[yuwTd]", never, {}, {}, never, never, true, [{ directive: typeof i1$5.HlmTd; inputs: {}; outputs: {}; }]>;
2148
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwTdDirective, "[yuwTd]", never, {}, {}, never, never, true, [{ directive: typeof i1$6.HlmTd; inputs: {}; outputs: {}; }]>;
2132
2149
  }
2133
2150
  /** Table caption directive applied to native `<caption>`. */
2134
2151
  declare class YuwCaptionDirective {
2135
2152
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwCaptionDirective, never>;
2136
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwCaptionDirective, "[yuwCaption]", never, {}, {}, never, never, true, [{ directive: typeof i1$5.HlmCaption; inputs: {}; outputs: {}; }]>;
2153
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwCaptionDirective, "[yuwCaption]", never, {}, {}, never, never, true, [{ directive: typeof i1$6.HlmCaption; inputs: {}; outputs: {}; }]>;
2137
2154
  }
2138
2155
  /** Table custom pagination div content. */
2139
2156
  declare class YuwDatatablePaginationDirective {
@@ -2143,215 +2160,36 @@ declare class YuwDatatablePaginationDirective {
2143
2160
  /** Every table part, for a consumer's `imports`. */
2144
2161
  declare const YuwTableImports: readonly [typeof YuwTableContainerDirective, typeof YuwTableDirective, typeof YuwTHeadDirective, typeof YuwTBodyDirective, typeof YuwTFootDirective, typeof YuwTrDirective, typeof YuwThDirective, typeof YuwTdDirective, typeof YuwCaptionDirective, typeof YuwDatatablePaginationDirective];
2145
2162
 
2146
- interface YuwFilterOptionDto {
2147
- readonly value: string;
2148
- readonly label: string;
2149
- readonly disabled?: boolean;
2150
- }
2151
- /** `single` keeps one value, `multiple` a set; both render as checkboxes. */
2152
- type YuwFilterGroupMode = 'single' | 'multiple';
2153
- /**
2154
- * `options` feeds the checkbox list; a group without them renders the `yuwFilterContent` template
2155
- * of the same id, and `mode` then only states whether its value is a string or an array.
2156
- */
2157
- interface YuwFilterGroupDto {
2158
- readonly id: string;
2159
- readonly label: string;
2160
- readonly mode: YuwFilterGroupMode;
2161
- readonly options?: readonly YuwFilterOptionDto[];
2162
- }
2163
- /** Value of one group: a string for `single` groups, an array for `multiple`. */
2164
- type YuwFilterValue = string | readonly string[];
2165
- /** Selection keyed by `YuwFilterGroupDto.id`. */
2166
- type YuwFilterSelection = Readonly<Record<string, YuwFilterValue>>;
2167
- /** A named selection the user saved; `id` is assigned by the consumer that persists it. */
2168
- interface YuwFilterSetDto {
2169
- readonly id: string;
2170
- readonly name: string;
2171
- readonly selection: YuwFilterSelection;
2172
- }
2173
- /** Payload of `setSaved`: the name the user typed and the selection applied at that moment. */
2174
- interface YuwFilterSetSaveDto {
2175
- readonly name: string;
2176
- readonly selection: YuwFilterSelection;
2177
- }
2178
- /** Payload of `setRenamed`. */
2179
- interface YuwFilterSetRenameDto {
2180
- readonly id: string;
2181
- readonly name: string;
2182
- }
2183
- /** Texts of the saved-sets control and its dialog; the consumer translates them. */
2184
- interface YuwFilterSetLabels {
2185
- readonly title: string;
2186
- readonly empty: string;
2187
- readonly save: string;
2188
- readonly select: string;
2189
- readonly none: string;
2190
- readonly edit: string;
2191
- readonly delete: string;
2192
- readonly saveTitle: string;
2193
- readonly renameTitle: string;
2194
- readonly deleteTitle: string;
2195
- readonly deleteMessage: (name: string) => string;
2196
- readonly nameLabel: string;
2197
- readonly confirm: string;
2198
- readonly cancel: string;
2199
- readonly close: string;
2200
- }
2201
- interface YuwListToolbarFilterLabels {
2202
- readonly title: string;
2203
- readonly clearAll: string;
2204
- readonly close: string;
2205
- readonly apply: string;
2206
- readonly pending: string;
2207
- readonly selected: (count: number) => string;
2208
- readonly sets?: YuwFilterSetLabels;
2209
- }
2210
- interface YuwListToolbarSearchLabels {
2211
- readonly expand: string;
2212
- readonly clear: string;
2213
- }
2214
- interface YuwListToolbarColumnsLabels {
2215
- readonly trigger: string;
2216
- readonly placeholder: string;
2217
- readonly empty: string;
2218
- readonly toggle: string;
2219
- }
2220
- type YuwViewMode = 'list' | 'block';
2221
- type YuwListToolbarViewModeLabels = Readonly<Record<YuwViewMode, string>>;
2222
- /** ng-icon names of the view mode buttons; the consumer registers custom ones with `provideIcons`. */
2223
- type YuwListToolbarViewModeIcons = Readonly<Record<YuwViewMode, string>>;
2224
- interface YuwListToolbarLabels {
2225
- readonly filters: YuwListToolbarFilterLabels;
2226
- readonly search: YuwListToolbarSearchLabels;
2227
- readonly columns: YuwListToolbarColumnsLabels;
2228
- readonly export: string;
2229
- readonly viewMode?: YuwListToolbarViewModeLabels;
2230
- }
2231
-
2232
- /** Template context of a `yuwFilterContent` template. */
2233
- interface YuwFilterContentContext {
2234
- /** The group the template renders; same as `let-group`. */
2235
- readonly $implicit: YuwFilterGroupDto;
2236
- /** Staged value of the group, `undefined` while it holds nothing. */
2237
- readonly value: YuwFilterValue | undefined;
2238
- /** Stages a new value for the group; `undefined` or an empty array clears it. */
2239
- readonly change: (value: YuwFilterValue | undefined) => void;
2240
- }
2163
+ type YuwDatatableAlign = 'start' | 'center' | 'end';
2241
2164
  /**
2242
- * Replaces the checkbox list of one filter group inside `<yuw-list-toolbar>` with projected markup.
2243
- * Apply it to an `<ng-template>` and pass the id of the group it renders; that group needs no
2244
- * `options`.
2165
+ * Default floor for a column that opts into `meta.wrap`, as a Tailwind `min-w-*` class.
2245
2166
  *
2246
- * The template feeds the same staged selection as the checkboxes: calling `change` stages the value
2247
- * under the group id, so the pending dot, the applied count, Apply, Clear and saved sets all work
2248
- * without extra wiring.
2167
+ * This is the only bound a wrapping column needs. It is what makes the responsive behaviour work:
2168
+ * below it the table stops shrinking the column — which would end in a column one word wide — and
2169
+ * the table's own width exceeds the container instead, so `YuwTableContainer`'s `overflow-x-auto`
2170
+ * scrolls horizontally.
2249
2171
  *
2250
- * Usage:
2251
- * ```html
2252
- * <yuw-list-toolbar [filterGroups]="groups" [(selection)]="selection" [labels]="labels">
2253
- * <ng-template yuwFilterContent="customer" let-value="value" let-change="change">
2254
- * <yuw-combobox [options]="customers" [value]="value ?? ''" (valueChange)="change($event)" />
2255
- * </ng-template>
2256
- * </yuw-list-toolbar>
2257
- * ```
2172
+ * There is deliberately no maximum. A cap would make a wrapping column break onto several lines
2173
+ * while the table still had free space beside it, which reads as broken; letting the column take
2174
+ * its share of the row means text wraps only once it genuinely no longer fits.
2175
+ */
2176
+ declare const YUW_DATATABLE_WRAP_MIN_WIDTH = "min-w-48";
2177
+ /**
2178
+ * Layout classes the `<table>` needs for `meta.wrap` columns to size correctly.
2258
2179
  *
2259
- * Inputs:
2260
- * - `yuwFilterContent`: Required string; id of the filter group this template renders.
2180
+ * `w-full` lets the table fill its container so a wrapping column can spread into the free space
2181
+ * instead of wrapping early, and `min-w-max` keeps the table at least as wide as its content
2182
+ * demands — which is what lets a wrapping column's floor push the table past the container and
2183
+ * hand the overflow to the scroll container. Applied unconditionally: for a table with no wrapping
2184
+ * column both halves resolve to the width it already had.
2261
2185
  */
2262
- declare class YuwFilterContentDirective {
2263
- readonly templateRef: TemplateRef<YuwFilterContentContext>;
2264
- readonly groupId: _angular_core.InputSignal<string>;
2265
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwFilterContentDirective, never>;
2266
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwFilterContentDirective, "ng-template[yuwFilterContent]", never, { "groupId": { "alias": "yuwFilterContent"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
2267
- }
2268
-
2186
+ declare const DATATABLE_LAYOUT_CLASS = "w-full min-w-max";
2269
2187
  /**
2270
- * Toolbar of a list page: filters on the leading edge, search, export and column visibility on the
2271
- * trailing one, and projected content after them.
2188
+ * Class maps for `yuw-datatable`, layered on top of the Hlm table directives' own classes.
2272
2189
  *
2273
- * Each control renders only when its input is set: `filterGroups`, `searchPlaceholder`,
2274
- * `showExport`, `hideableColumns`, `viewMode`. Setting `viewMode` adds a list/block switch bound
2275
- * two-way to it (`viewModeChange` is the click listener); its names come from `labels.viewMode`. Saved filter sets need `filterSets` and `labels.filters.sets`;
2276
- * the toolbar emits `setSaved`, `setRenamed` and `setDeleted` and the consumer persists them. `labels` holds every text and the consumer translates it;
2277
- * `idleColor` is the filter trigger tone while nothing is applied. A filter group may omit `options` and be
2278
- * rendered by a projected `<ng-template yuwFilterContent="groupId">` instead (a combobox, say); see
2279
- * `YuwFilterContentDirective`.
2280
- *
2281
- * Inputs:
2282
- * - `filterGroups`: Filter groups the editor offers; the filter control renders only when set.
2283
- * - `filterSets`: Saved filter sets; together with `labels.filters.sets` it enables the sets star.
2284
- * - `filtersDisabled`: Disables the filter buttons. Default is `false`.
2285
- * - `hiddenColumns`: Two-way (`[(hiddenColumns)]`) ids of the columns currently hidden. Default is `[]`.
2286
- * - `hideableColumns`: Options of the columns the user may hide; the columns button renders only when set.
2287
- * - `idleColor`: `YuwColorDto` tone of the filter trigger while nothing is applied. Default is `'neutral'`.
2288
- * - `labels`: Required `YuwListToolbarLabels` with the consumer's translated text for every control.
2289
- * - `search`: Two-way (`[(search)]`) text of the search field. Default is `''`.
2290
- * - `searchPlaceholder`: Placeholder of the search field; the search renders only when set.
2291
- * - `selection`: Two-way (`[(selection)]`) applied filter selection, values keyed by group id. Default is `{}`.
2292
- * - `showExport`: Renders the export button. Default is `false`.
2293
- * - `viewMode`: Two-way (`[(viewMode)]`) `YuwViewMode` (`'list'` or `'block'`); the list/block switch renders only when set.
2294
- * - `viewModeIcons`: Partial override of the switch icons by mode (ng-icon names, registered by the consumer with `provideIcons`). Defaults are `lucideList` and `lucideLayoutGrid`.
2295
- *
2296
- * Outputs:
2297
- * - `exported`: Emits the `MouseEvent` of the export button click.
2298
- * - `searched`: Emits the current search text on every keystroke and when it is cleared.
2299
- */
2300
- declare class YuwListToolbarComponent {
2301
- protected readonly filterContents: _angular_core.Signal<readonly YuwFilterContentDirective[]>;
2302
- readonly filterGroups: _angular_core.InputSignal<readonly YuwFilterGroupDto[] | undefined>;
2303
- readonly filtersDisabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
2304
- readonly filterSets: _angular_core.InputSignal<readonly YuwFilterSetDto[] | undefined>;
2305
- readonly hiddenColumns: _angular_core.ModelSignal<string[]>;
2306
- readonly hideableColumns: _angular_core.InputSignal<YuwComboboxOptionDto<unknown>[] | undefined>;
2307
- readonly idleColor: _angular_core.InputSignal<YuwColorDto>;
2308
- readonly labels: _angular_core.InputSignal<YuwListToolbarLabels>;
2309
- readonly search: _angular_core.ModelSignal<string>;
2310
- readonly searchPlaceholder: _angular_core.InputSignal<string | undefined>;
2311
- readonly selection: _angular_core.ModelSignal<Readonly<Record<string, yukit_web.YuwFilterValue>>>;
2312
- readonly showExport: _angular_core.InputSignalWithTransform<boolean, unknown>;
2313
- readonly viewMode: _angular_core.ModelSignal<YuwViewMode | undefined>;
2314
- readonly viewModeIcons: _angular_core.InputSignal<Partial<Readonly<Record<YuwViewMode, string>>> | undefined>;
2315
- readonly exported: _angular_core.OutputEmitterRef<MouseEvent>;
2316
- readonly searched: _angular_core.OutputEmitterRef<string>;
2317
- readonly setDeleted: _angular_core.OutputEmitterRef<string>;
2318
- readonly setRenamed: _angular_core.OutputEmitterRef<YuwFilterSetRenameDto>;
2319
- readonly setSaved: _angular_core.OutputEmitterRef<YuwFilterSetSaveDto>;
2320
- protected readonly isMobile: _angular_core.Signal<boolean>;
2321
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwListToolbarComponent, never>;
2322
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwListToolbarComponent, "yuw-list-toolbar", never, { "filterGroups": { "alias": "filterGroups"; "required": false; "isSignal": true; }; "filtersDisabled": { "alias": "filtersDisabled"; "required": false; "isSignal": true; }; "filterSets": { "alias": "filterSets"; "required": false; "isSignal": true; }; "hiddenColumns": { "alias": "hiddenColumns"; "required": false; "isSignal": true; }; "hideableColumns": { "alias": "hideableColumns"; "required": false; "isSignal": true; }; "idleColor": { "alias": "idleColor"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": true; "isSignal": true; }; "search": { "alias": "search"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; "showExport": { "alias": "showExport"; "required": false; "isSignal": true; }; "viewMode": { "alias": "viewMode"; "required": false; "isSignal": true; }; "viewModeIcons": { "alias": "viewModeIcons"; "required": false; "isSignal": true; }; }, { "hiddenColumns": "hiddenColumnsChange"; "search": "searchChange"; "selection": "selectionChange"; "viewMode": "viewModeChange"; "exported": "exported"; "searched": "searched"; "setDeleted": "setDeleted"; "setRenamed": "setRenamed"; "setSaved": "setSaved"; }, ["filterContents"], ["*"], true, never>;
2323
- }
2324
-
2325
- type YuwDatatableAlign = 'start' | 'center' | 'end';
2326
- /**
2327
- * Default floor for a column that opts into `meta.wrap`, as a Tailwind `min-w-*` class.
2328
- *
2329
- * This is the only bound a wrapping column needs. It is what makes the responsive behaviour work:
2330
- * below it the table stops shrinking the column — which would end in a column one word wide — and
2331
- * the table's own width exceeds the container instead, so `YuwTableContainer`'s `overflow-x-auto`
2332
- * scrolls horizontally.
2333
- *
2334
- * There is deliberately no maximum. A cap would make a wrapping column break onto several lines
2335
- * while the table still had free space beside it, which reads as broken; letting the column take
2336
- * its share of the row means text wraps only once it genuinely no longer fits.
2337
- */
2338
- declare const YUW_DATATABLE_WRAP_MIN_WIDTH = "min-w-48";
2339
- /**
2340
- * Layout classes the `<table>` needs for `meta.wrap` columns to size correctly.
2341
- *
2342
- * `w-full` lets the table fill its container so a wrapping column can spread into the free space
2343
- * instead of wrapping early, and `min-w-max` keeps the table at least as wide as its content
2344
- * demands — which is what lets a wrapping column's floor push the table past the container and
2345
- * hand the overflow to the scroll container. Applied unconditionally: for a table with no wrapping
2346
- * column both halves resolve to the width it already had.
2347
- */
2348
- declare const DATATABLE_LAYOUT_CLASS = "w-full min-w-max";
2349
- /**
2350
- * Class maps for `yuw-datatable`, layered on top of the Hlm table directives' own classes.
2351
- *
2352
- * `DATATABLE_ALIGN_CLASS` is keyed by a column's `meta.align` and shared by header and body cells,
2353
- * so a column declares its alignment once and both honour it; `start` maps to an empty string
2354
- * rather than re-stating what `HlmTh`/`HlmTd` already apply.
2190
+ * `DATATABLE_ALIGN_CLASS` is keyed by a column's `meta.align` and shared by header and body cells,
2191
+ * so a column declares its alignment once and both honour it; `start` maps to an empty string
2192
+ * rather than re-stating what `HlmTh`/`HlmTd` already apply.
2355
2193
  *
2356
2194
  * The `appearance` maps are split per element because the treatment is not uniform: `card` frames
2357
2195
  * the container so the header tint clips to the radius instead of squaring off against a
@@ -2719,47 +2557,47 @@ declare class YuwAvatarComponent {
2719
2557
  */
2720
2558
  declare class YuwItemDirective {
2721
2559
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwItemDirective, never>;
2722
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwItemDirective, "[yuwItem], yuw-item", never, {}, {}, never, never, true, [{ directive: typeof i1$6.HlmItem; inputs: { "variant": "variant"; "size": "size"; }; outputs: {}; }]>;
2560
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwItemDirective, "[yuwItem], yuw-item", never, {}, {}, never, never, true, [{ directive: typeof i1$7.HlmItem; inputs: { "variant": "variant"; "size": "size"; }; outputs: {}; }]>;
2723
2561
  }
2724
2562
  /** Header slot directive for an item container. */
2725
2563
  declare class YuwItemHeaderDirective {
2726
2564
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwItemHeaderDirective, never>;
2727
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwItemHeaderDirective, "[yuwItemHeader], yuw-item-header", never, {}, {}, never, never, true, [{ directive: typeof i1$6.HlmItemHeader; inputs: {}; outputs: {}; }]>;
2565
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwItemHeaderDirective, "[yuwItemHeader], yuw-item-header", never, {}, {}, never, never, true, [{ directive: typeof i1$7.HlmItemHeader; inputs: {}; outputs: {}; }]>;
2728
2566
  }
2729
2567
  /** Leading media slot directive (for icons, avatars, or images) at the start of an item. Supports `variant` (`'default'`, `'icon'`, `'image'`). */
2730
2568
  declare class YuwItemMediaDirective {
2731
2569
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwItemMediaDirective, never>;
2732
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwItemMediaDirective, "[yuwItemMedia], yuw-item-media", never, {}, {}, never, never, true, [{ directive: typeof i1$6.HlmItemMedia; inputs: { "variant": "variant"; }; outputs: {}; }]>;
2570
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwItemMediaDirective, "[yuwItemMedia], yuw-item-media", never, {}, {}, never, never, true, [{ directive: typeof i1$7.HlmItemMedia; inputs: { "variant": "variant"; }; outputs: {}; }]>;
2733
2571
  }
2734
2572
  /** Main text content container directive for an item. */
2735
2573
  declare class YuwItemContentDirective {
2736
2574
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwItemContentDirective, never>;
2737
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwItemContentDirective, "[yuwItemContent], yuw-item-content", never, {}, {}, never, never, true, [{ directive: typeof i1$6.HlmItemContent; inputs: {}; outputs: {}; }]>;
2575
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwItemContentDirective, "[yuwItemContent], yuw-item-content", never, {}, {}, never, never, true, [{ directive: typeof i1$7.HlmItemContent; inputs: {}; outputs: {}; }]>;
2738
2576
  }
2739
2577
  /** Title heading directive for an item. */
2740
2578
  declare class YuwItemTitleDirective {
2741
2579
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwItemTitleDirective, never>;
2742
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwItemTitleDirective, "[yuwItemTitle], yuw-item-title", never, {}, {}, never, never, true, [{ directive: typeof i1$6.HlmItemTitle; inputs: {}; outputs: {}; }]>;
2580
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwItemTitleDirective, "[yuwItemTitle], yuw-item-title", never, {}, {}, never, never, true, [{ directive: typeof i1$7.HlmItemTitle; inputs: {}; outputs: {}; }]>;
2743
2581
  }
2744
2582
  /** Subtitle or description paragraph directive for an item. */
2745
2583
  declare class YuwItemDescriptionDirective {
2746
2584
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwItemDescriptionDirective, never>;
2747
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwItemDescriptionDirective, "[yuwItemDescription], yuw-item-description", never, {}, {}, never, never, true, [{ directive: typeof i1$6.HlmItemDescription; inputs: {}; outputs: {}; }]>;
2585
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwItemDescriptionDirective, "[yuwItemDescription], yuw-item-description", never, {}, {}, never, never, true, [{ directive: typeof i1$7.HlmItemDescription; inputs: {}; outputs: {}; }]>;
2748
2586
  }
2749
2587
  /** Trailing action controls slot directive (for buttons, switches, or menu triggers) at the end of an item. */
2750
2588
  declare class YuwItemActionsDirective {
2751
2589
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwItemActionsDirective, never>;
2752
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwItemActionsDirective, "[yuwItemActions], yuw-item-actions", never, {}, {}, never, never, true, [{ directive: typeof i1$6.HlmItemActions; inputs: {}; outputs: {}; }]>;
2590
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwItemActionsDirective, "[yuwItemActions], yuw-item-actions", never, {}, {}, never, never, true, [{ directive: typeof i1$7.HlmItemActions; inputs: {}; outputs: {}; }]>;
2753
2591
  }
2754
2592
  /** Footer slot directive for an item. */
2755
2593
  declare class YuwItemFooterDirective {
2756
2594
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwItemFooterDirective, never>;
2757
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwItemFooterDirective, "[yuwItemFooter], yuw-item-footer", never, {}, {}, never, never, true, [{ directive: typeof i1$6.HlmItemFooter; inputs: {}; outputs: {}; }]>;
2595
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwItemFooterDirective, "[yuwItemFooter], yuw-item-footer", never, {}, {}, never, never, true, [{ directive: typeof i1$7.HlmItemFooter; inputs: {}; outputs: {}; }]>;
2758
2596
  }
2759
2597
  /** Container directive for grouping multiple item rows together into a list card or bordered group. */
2760
2598
  declare class YuwItemGroupDirective {
2761
2599
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwItemGroupDirective, never>;
2762
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwItemGroupDirective, "[yuwItemGroup], yuw-item-group", never, {}, {}, never, never, true, [{ directive: typeof i1$6.HlmItemGroup; inputs: {}; outputs: {}; }]>;
2600
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwItemGroupDirective, "[yuwItemGroup], yuw-item-group", never, {}, {}, never, never, true, [{ directive: typeof i1$7.HlmItemGroup; inputs: {}; outputs: {}; }]>;
2763
2601
  }
2764
2602
  /**
2765
2603
  * Visual separator line between items inside a group. Accepts `orientation` (`'horizontal'` or
@@ -2891,12 +2729,12 @@ declare const YuwSheetImports: readonly [typeof YuwSheetComponent, typeof YuwShe
2891
2729
  */
2892
2730
  declare class YuwSheetTriggerDirective {
2893
2731
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSheetTriggerDirective, never>;
2894
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSheetTriggerDirective, "yuw-button[yuwSheetTriggerButton]", never, {}, {}, never, never, true, [{ directive: typeof i1$7.BrnSheetTrigger; inputs: { "id": "id"; "side": "side"; "type": "type"; }; outputs: {}; }]>;
2732
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSheetTriggerDirective, "yuw-button[yuwSheetTriggerButton]", never, {}, {}, never, never, true, [{ directive: typeof i1$8.BrnSheetTrigger; inputs: { "id": "id"; "side": "side"; "type": "type"; }; outputs: {}; }]>;
2895
2733
  }
2896
2734
  /** Closes the surrounding `<yuw-sheet>` when the host `<yuw-button>` is activated. */
2897
2735
  declare class YuwSheetCloseDirective {
2898
2736
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSheetCloseDirective, never>;
2899
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSheetCloseDirective, "yuw-button[yuwSheetClose]", never, {}, {}, never, never, true, [{ directive: typeof i1$7.BrnSheetClose; inputs: {}; outputs: {}; }]>;
2737
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSheetCloseDirective, "yuw-button[yuwSheetClose]", never, {}, {}, never, never, true, [{ directive: typeof i1$8.BrnSheetClose; inputs: {}; outputs: {}; }]>;
2900
2738
  }
2901
2739
 
2902
2740
  type YuwPopoverAlignDto = 'start' | 'center' | 'end';
@@ -2972,7 +2810,7 @@ declare class YuwPopoverComponent {
2972
2810
  */
2973
2811
  declare class YuwPopoverTriggerDirective {
2974
2812
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwPopoverTriggerDirective, never>;
2975
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwPopoverTriggerDirective, "yuw-button[yuwPopoverTriggerFor], yuw-button[yuwPopoverTriggerButton]", never, {}, {}, never, never, true, [{ directive: typeof i1$8.BrnPopoverTrigger; inputs: { "id": "id"; "brnPopoverTriggerFor": "yuwPopoverTriggerFor"; "type": "type"; }; outputs: {}; }]>;
2813
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwPopoverTriggerDirective, "yuw-button[yuwPopoverTriggerFor], yuw-button[yuwPopoverTriggerButton]", never, {}, {}, never, never, true, [{ directive: typeof i1$9.BrnPopoverTrigger; inputs: { "id": "id"; "brnPopoverTriggerFor": "yuwPopoverTriggerFor"; "type": "type"; }; outputs: {}; }]>;
2976
2814
  }
2977
2815
 
2978
2816
  type YuwTooltipPositionDto = 'top' | 'bottom' | 'left' | 'right';
@@ -2997,7 +2835,7 @@ type YuwTooltipPositionDto = 'top' | 'bottom' | 'left' | 'right';
2997
2835
  */
2998
2836
  declare class YuwTooltipDirective {
2999
2837
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwTooltipDirective, never>;
3000
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwTooltipDirective, "[yuwTooltip]", never, {}, {}, never, never, true, [{ directive: typeof i1$9.BrnTooltip; inputs: { "brnTooltip": "yuwTooltip"; "position": "position"; "hideDelay": "hideDelay"; "showDelay": "showDelay"; "tooltipDisabled": "tooltipDisabled"; }; outputs: {}; }]>;
2838
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwTooltipDirective, "[yuwTooltip]", never, {}, {}, never, never, true, [{ directive: typeof i1$a.BrnTooltip; inputs: { "brnTooltip": "yuwTooltip"; "position": "position"; "hideDelay": "hideDelay"; "showDelay": "showDelay"; "tooltipDisabled": "tooltipDisabled"; }; outputs: {}; }]>;
3001
2839
  }
3002
2840
 
3003
2841
  /**
@@ -3224,12 +3062,12 @@ declare const YuwDialogImports: readonly [typeof YuwDialogComponent, typeof YuwD
3224
3062
  */
3225
3063
  declare class YuwDialogTriggerDirective {
3226
3064
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwDialogTriggerDirective, never>;
3227
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwDialogTriggerDirective, "yuw-button[yuwDialogTriggerFor], yuw-button[yuwDialogTriggerButton]", never, {}, {}, never, never, true, [{ directive: typeof i1$a.BrnDialogTrigger; inputs: { "id": "id"; "brnDialogTriggerFor": "yuwDialogTriggerFor"; "type": "type"; }; outputs: {}; }]>;
3065
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwDialogTriggerDirective, "yuw-button[yuwDialogTriggerFor], yuw-button[yuwDialogTriggerButton]", never, {}, {}, never, never, true, [{ directive: typeof i1$b.BrnDialogTrigger; inputs: { "id": "id"; "brnDialogTriggerFor": "yuwDialogTriggerFor"; "type": "type"; }; outputs: {}; }]>;
3228
3066
  }
3229
3067
  /** Closes the surrounding `<yuw-dialog>` when the host `<yuw-button>` is activated. */
3230
3068
  declare class YuwDialogCloseDirective {
3231
3069
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwDialogCloseDirective, never>;
3232
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwDialogCloseDirective, "yuw-button[yuwDialogClose]", never, {}, {}, never, never, true, [{ directive: typeof i1$a.BrnDialogClose; inputs: {}; outputs: {}; }]>;
3070
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwDialogCloseDirective, "yuw-button[yuwDialogClose]", never, {}, {}, never, never, true, [{ directive: typeof i1$b.BrnDialogClose; inputs: {}; outputs: {}; }]>;
3233
3071
  }
3234
3072
 
3235
3073
  /**
@@ -3307,7 +3145,7 @@ declare class YuwAlertDialogComponent {
3307
3145
  */
3308
3146
  declare class YuwAlertDialogTriggerDirective {
3309
3147
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwAlertDialogTriggerDirective, never>;
3310
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwAlertDialogTriggerDirective, "yuw-button[yuwAlertDialogTriggerFor], yuw-button[yuwAlertDialogTriggerButton]", never, {}, {}, never, never, true, [{ directive: typeof i1$b.BrnAlertDialogTrigger; inputs: { "id": "id"; "brnAlertDialogTriggerFor": "yuwAlertDialogTriggerFor"; "type": "type"; }; outputs: {}; }]>;
3148
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwAlertDialogTriggerDirective, "yuw-button[yuwAlertDialogTriggerFor], yuw-button[yuwAlertDialogTriggerButton]", never, {}, {}, never, never, true, [{ directive: typeof i1$c.BrnAlertDialogTrigger; inputs: { "id": "id"; "brnAlertDialogTriggerFor": "yuwAlertDialogTriggerFor"; "type": "type"; }; outputs: {}; }]>;
3311
3149
  }
3312
3150
 
3313
3151
  /** A single tab in `<yuw-tabs>`, pairing the trigger label with the id used to match its content. */
@@ -3426,37 +3264,37 @@ declare class YuwTabContentDirective {
3426
3264
  */
3427
3265
  declare class YuwAttachmentDirective {
3428
3266
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwAttachmentDirective, never>;
3429
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwAttachmentDirective, "[yuwAttachment], yuw-attachment", never, {}, {}, never, never, true, [{ directive: typeof i1$c.HlmAttachment; inputs: { "state": "state"; "size": "size"; "orientation": "orientation"; }; outputs: {}; }]>;
3267
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwAttachmentDirective, "[yuwAttachment], yuw-attachment", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmAttachment; inputs: { "state": "state"; "size": "size"; "orientation": "orientation"; }; outputs: {}; }]>;
3430
3268
  }
3431
3269
  /** Scrollable, snapping row that lays out several attachment cards. */
3432
3270
  declare class YuwAttachmentGroupDirective {
3433
3271
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwAttachmentGroupDirective, never>;
3434
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwAttachmentGroupDirective, "[yuwAttachmentGroup], yuw-attachment-group", never, {}, {}, never, never, true, [{ directive: typeof i1$c.HlmAttachmentGroup; inputs: {}; outputs: {}; }]>;
3272
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwAttachmentGroupDirective, "[yuwAttachmentGroup], yuw-attachment-group", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmAttachmentGroup; inputs: {}; outputs: {}; }]>;
3435
3273
  }
3436
3274
  /** Leading media slot of an attachment, for a file-type icon or an image preview. Supports `variant` (`'icon'`, `'image'`). */
3437
3275
  declare class YuwAttachmentMediaDirective {
3438
3276
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwAttachmentMediaDirective, never>;
3439
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwAttachmentMediaDirective, "[yuwAttachmentMedia], yuw-attachment-media", never, {}, {}, never, never, true, [{ directive: typeof i1$c.HlmAttachmentMedia; inputs: { "variant": "variant"; }; outputs: {}; }]>;
3277
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwAttachmentMediaDirective, "[yuwAttachmentMedia], yuw-attachment-media", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmAttachmentMedia; inputs: { "variant": "variant"; }; outputs: {}; }]>;
3440
3278
  }
3441
3279
  /** Text content container of an attachment, holding its title and description. */
3442
3280
  declare class YuwAttachmentContentDirective {
3443
3281
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwAttachmentContentDirective, never>;
3444
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwAttachmentContentDirective, "[yuwAttachmentContent], yuw-attachment-content", never, {}, {}, never, never, true, [{ directive: typeof i1$c.HlmAttachmentContent; inputs: {}; outputs: {}; }]>;
3282
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwAttachmentContentDirective, "[yuwAttachmentContent], yuw-attachment-content", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmAttachmentContent; inputs: {}; outputs: {}; }]>;
3445
3283
  }
3446
3284
  /** File name of an attachment. Truncates and shimmers while the attachment is uploading or processing. */
3447
3285
  declare class YuwAttachmentTitleDirective {
3448
3286
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwAttachmentTitleDirective, never>;
3449
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwAttachmentTitleDirective, "[yuwAttachmentTitle], yuw-attachment-title", never, {}, {}, never, never, true, [{ directive: typeof i1$c.HlmAttachmentTitle; inputs: {}; outputs: {}; }]>;
3287
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwAttachmentTitleDirective, "[yuwAttachmentTitle], yuw-attachment-title", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmAttachmentTitle; inputs: {}; outputs: {}; }]>;
3450
3288
  }
3451
3289
  /** Secondary line of an attachment, for file size, progress, or an error message. */
3452
3290
  declare class YuwAttachmentDescriptionDirective {
3453
3291
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwAttachmentDescriptionDirective, never>;
3454
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwAttachmentDescriptionDirective, "[yuwAttachmentDescription], yuw-attachment-description", never, {}, {}, never, never, true, [{ directive: typeof i1$c.HlmAttachmentDescription; inputs: {}; outputs: {}; }]>;
3292
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwAttachmentDescriptionDirective, "[yuwAttachmentDescription], yuw-attachment-description", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmAttachmentDescription; inputs: {}; outputs: {}; }]>;
3455
3293
  }
3456
3294
  /** Trailing container for an attachment's action buttons. */
3457
3295
  declare class YuwAttachmentActionsDirective {
3458
3296
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwAttachmentActionsDirective, never>;
3459
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwAttachmentActionsDirective, "[yuwAttachmentActions], yuw-attachment-actions", never, {}, {}, never, never, true, [{ directive: typeof i1$c.HlmAttachmentActions; inputs: {}; outputs: {}; }]>;
3297
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwAttachmentActionsDirective, "[yuwAttachmentActions], yuw-attachment-actions", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmAttachmentActions; inputs: {}; outputs: {}; }]>;
3460
3298
  }
3461
3299
  /**
3462
3300
  * Icon-sized action button inside an attachment, such as remove or retry.
@@ -3477,7 +3315,7 @@ declare class YuwAttachmentActionDirective extends HlmAttachmentAction {
3477
3315
  /** Turns the whole attachment card into a single clickable target, layered under its actions. */
3478
3316
  declare class YuwAttachmentTriggerDirective {
3479
3317
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwAttachmentTriggerDirective, never>;
3480
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwAttachmentTriggerDirective, "button[yuwAttachmentTrigger], a[yuwAttachmentTrigger]", never, {}, {}, never, never, true, [{ directive: typeof i1$c.HlmAttachmentTrigger; inputs: { "type": "type"; }; outputs: {}; }]>;
3318
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwAttachmentTriggerDirective, "button[yuwAttachmentTrigger], a[yuwAttachmentTrigger]", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmAttachmentTrigger; inputs: { "type": "type"; }; outputs: {}; }]>;
3481
3319
  }
3482
3320
 
3483
3321
  /**
@@ -3850,12 +3688,12 @@ declare class YuwSidebarTriggerComponent {
3850
3688
  */
3851
3689
  declare class YuwSidebarWrapperDirective {
3852
3690
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarWrapperDirective, never>;
3853
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarWrapperDirective, "[yuwSidebarWrapper], yuw-sidebar-wrapper", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmSidebarWrapper; inputs: { "sidebarWidth": "sidebarWidth"; "sidebarWidthIcon": "sidebarWidthIcon"; }; outputs: {}; }]>;
3691
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarWrapperDirective, "[yuwSidebarWrapper], yuw-sidebar-wrapper", never, {}, {}, never, never, true, [{ directive: typeof i1$e.HlmSidebarWrapper; inputs: { "sidebarWidth": "sidebarWidth"; "sidebarWidthIcon": "sidebarWidthIcon"; }; outputs: {}; }]>;
3854
3692
  }
3855
3693
  /** Top area of the sidebar, above the scrollable content. */
3856
3694
  declare class YuwSidebarHeaderDirective {
3857
3695
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarHeaderDirective, never>;
3858
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarHeaderDirective, "[yuwSidebarHeader], yuw-sidebar-header", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmSidebarHeader; inputs: {}; outputs: {}; }]>;
3696
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarHeaderDirective, "[yuwSidebarHeader], yuw-sidebar-header", never, {}, {}, never, never, true, [{ directive: typeof i1$e.HlmSidebarHeader; inputs: {}; outputs: {}; }]>;
3859
3697
  }
3860
3698
  /**
3861
3699
  * Scrollable middle area of the sidebar that holds the navigation groups.
@@ -3883,13 +3721,13 @@ declare class YuwSidebarHeaderDirective {
3883
3721
  declare class YuwSidebarContentDirective {
3884
3722
  constructor();
3885
3723
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarContentDirective, never>;
3886
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarContentDirective, "[yuwSidebarContent], yuw-sidebar-content", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmSidebarContent; inputs: {}; outputs: {}; }]>;
3724
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarContentDirective, "[yuwSidebarContent], yuw-sidebar-content", never, {}, {}, never, never, true, [{ directive: typeof i1$e.HlmSidebarContent; inputs: {}; outputs: {}; }]>;
3887
3725
  }
3888
3726
  /** Bottom area of the sidebar, below the scrollable content. */
3889
3727
  declare class YuwSidebarFooterDirective {
3890
3728
  constructor();
3891
3729
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarFooterDirective, never>;
3892
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarFooterDirective, "[yuwSidebarFooter], yuw-sidebar-footer", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmSidebarFooter; inputs: {}; outputs: {}; }]>;
3730
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarFooterDirective, "[yuwSidebarFooter], yuw-sidebar-footer", never, {}, {}, never, never, true, [{ directive: typeof i1$e.HlmSidebarFooter; inputs: {}; outputs: {}; }]>;
3893
3731
  }
3894
3732
  /**
3895
3733
  * A titled section of the sidebar.
@@ -3903,7 +3741,7 @@ declare class YuwSidebarFooterDirective {
3903
3741
  declare class YuwSidebarGroupDirective {
3904
3742
  constructor();
3905
3743
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarGroupDirective, never>;
3906
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarGroupDirective, "[yuwSidebarGroup], yuw-sidebar-group", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmSidebarGroup; inputs: {}; outputs: {}; }]>;
3744
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarGroupDirective, "[yuwSidebarGroup], yuw-sidebar-group", never, {}, {}, never, never, true, [{ directive: typeof i1$e.HlmSidebarGroup; inputs: {}; outputs: {}; }]>;
3907
3745
  }
3908
3746
  /**
3909
3747
  * Heading of a sidebar group. Removed from the layout when the sidebar collapses to icons.
@@ -3917,17 +3755,17 @@ declare class YuwSidebarGroupDirective {
3917
3755
  declare class YuwSidebarGroupLabelDirective {
3918
3756
  constructor();
3919
3757
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarGroupLabelDirective, never>;
3920
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarGroupLabelDirective, "div[yuwSidebarGroupLabel], button[yuwSidebarGroupLabel]", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmSidebarGroupLabel; inputs: {}; outputs: {}; }]>;
3758
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarGroupLabelDirective, "div[yuwSidebarGroupLabel], button[yuwSidebarGroupLabel]", never, {}, {}, never, never, true, [{ directive: typeof i1$e.HlmSidebarGroupLabel; inputs: {}; outputs: {}; }]>;
3921
3759
  }
3922
3760
  /** Body of a sidebar group, wrapping its menu. */
3923
3761
  declare class YuwSidebarGroupContentDirective {
3924
3762
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarGroupContentDirective, never>;
3925
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarGroupContentDirective, "div[yuwSidebarGroupContent]", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmSidebarGroupContent; inputs: {}; outputs: {}; }]>;
3763
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarGroupContentDirective, "div[yuwSidebarGroupContent]", never, {}, {}, never, never, true, [{ directive: typeof i1$e.HlmSidebarGroupContent; inputs: {}; outputs: {}; }]>;
3926
3764
  }
3927
3765
  /** Navigation list of a sidebar group. Apply to a `<ul>`. */
3928
3766
  declare class YuwSidebarMenuDirective {
3929
3767
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarMenuDirective, never>;
3930
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarMenuDirective, "ul[yuwSidebarMenu]", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmSidebarMenu; inputs: {}; outputs: {}; }]>;
3768
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarMenuDirective, "ul[yuwSidebarMenu]", never, {}, {}, never, never, true, [{ directive: typeof i1$e.HlmSidebarMenu; inputs: {}; outputs: {}; }]>;
3931
3769
  }
3932
3770
  /**
3933
3771
  * Marks projected markup that belongs *inside* the region `<yuw-sidebar>` renders from its `content`
@@ -3959,7 +3797,7 @@ declare class YuwSidebarFooterExtraDirective {
3959
3797
  declare class YuwSidebarMenuItemDirective {
3960
3798
  constructor();
3961
3799
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarMenuItemDirective, never>;
3962
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarMenuItemDirective, "li[yuwSidebarMenuItem]", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmSidebarMenuItem; inputs: {}; outputs: {}; }]>;
3800
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarMenuItemDirective, "li[yuwSidebarMenuItem]", never, {}, {}, never, never, true, [{ directive: typeof i1$e.HlmSidebarMenuItem; inputs: {}; outputs: {}; }]>;
3963
3801
  }
3964
3802
  /**
3965
3803
  * Interactive control of a sidebar menu item. Accepts `variant` (`'default'`, `'outline'`), `size`
@@ -4021,7 +3859,7 @@ declare class YuwSidebarMenuItemDirective {
4021
3859
  declare class YuwSidebarMenuButtonDirective {
4022
3860
  constructor();
4023
3861
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarMenuButtonDirective, never>;
4024
- 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: {}; }]>;
3862
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarMenuButtonDirective, "button[yuwSidebarMenuButton], a[yuwSidebarMenuButton]", never, {}, {}, never, never, true, [{ directive: typeof i1$e.HlmSidebarMenuButton; inputs: { "variant": "variant"; "size": "size"; "isActive": "isActive"; "closeMobileSidebarOnClick": "closeMobileSidebarOnClick"; }; outputs: {}; }]>;
4025
3863
  }
4026
3864
  /**
4027
3865
  * Applied alongside `[yuwSidebarMenuButton]` on an entry whose leading slot is a 40px avatar rather
@@ -4059,17 +3897,17 @@ declare class YuwSidebarMenuAvatarButtonDirective {
4059
3897
  /** Trailing count or status badge of a sidebar menu item. */
4060
3898
  declare class YuwSidebarMenuBadgeDirective {
4061
3899
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarMenuBadgeDirective, never>;
4062
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarMenuBadgeDirective, "[yuwSidebarMenuBadge], yuw-sidebar-menu-badge", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmSidebarMenuBadge; inputs: {}; outputs: {}; }]>;
3900
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarMenuBadgeDirective, "[yuwSidebarMenuBadge], yuw-sidebar-menu-badge", never, {}, {}, never, never, true, [{ directive: typeof i1$e.HlmSidebarMenuBadge; inputs: {}; outputs: {}; }]>;
4063
3901
  }
4064
3902
  /** Nested submenu list of a sidebar menu item. Apply to a `<ul>`. */
4065
3903
  declare class YuwSidebarMenuSubDirective {
4066
3904
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarMenuSubDirective, never>;
4067
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarMenuSubDirective, "ul[yuwSidebarMenuSub]", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmSidebarMenuSub; inputs: {}; outputs: {}; }]>;
3905
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarMenuSubDirective, "ul[yuwSidebarMenuSub]", never, {}, {}, never, never, true, [{ directive: typeof i1$e.HlmSidebarMenuSub; inputs: {}; outputs: {}; }]>;
4068
3906
  }
4069
3907
  /** A single entry of a sidebar submenu. Apply to an `<li>`. */
4070
3908
  declare class YuwSidebarMenuSubItemDirective {
4071
3909
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarMenuSubItemDirective, never>;
4072
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarMenuSubItemDirective, "li[yuwSidebarMenuSubItem]", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmSidebarMenuSubItem; inputs: {}; outputs: {}; }]>;
3910
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarMenuSubItemDirective, "li[yuwSidebarMenuSubItem]", never, {}, {}, never, never, true, [{ directive: typeof i1$e.HlmSidebarMenuSubItem; inputs: {}; outputs: {}; }]>;
4073
3911
  }
4074
3912
  /**
4075
3913
  * Interactive control of a sidebar submenu item. Accepts `size` (`'sm'`, `'md'`) and `isActive`.
@@ -4083,12 +3921,12 @@ declare class YuwSidebarMenuSubItemDirective {
4083
3921
  declare class YuwSidebarMenuSubButtonDirective {
4084
3922
  constructor();
4085
3923
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarMenuSubButtonDirective, never>;
4086
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarMenuSubButtonDirective, "a[yuwSidebarMenuSubButton], button[yuwSidebarMenuSubButton]", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmSidebarMenuSubButton; inputs: { "size": "size"; "isActive": "isActive"; "closeMobileSidebarOnClick": "closeMobileSidebarOnClick"; }; outputs: {}; }]>;
3924
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarMenuSubButtonDirective, "a[yuwSidebarMenuSubButton], button[yuwSidebarMenuSubButton]", never, {}, {}, never, never, true, [{ directive: typeof i1$e.HlmSidebarMenuSubButton; inputs: { "size": "size"; "isActive": "isActive"; "closeMobileSidebarOnClick": "closeMobileSidebarOnClick"; }; outputs: {}; }]>;
4087
3925
  }
4088
3926
  /** Divider between sidebar sections. */
4089
3927
  declare class YuwSidebarSeparatorDirective {
4090
3928
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarSeparatorDirective, never>;
4091
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarSeparatorDirective, "[yuwSidebarSeparator], yuw-sidebar-separator", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmSidebarSeparator; inputs: {}; outputs: {}; }]>;
3929
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarSeparatorDirective, "[yuwSidebarSeparator], yuw-sidebar-separator", never, {}, {}, never, never, true, [{ directive: typeof i1$e.HlmSidebarSeparator; inputs: {}; outputs: {}; }]>;
4092
3930
  }
4093
3931
  /**
4094
3932
  * Thin draggable edge that toggles the sidebar. Apply to a `<button>`.
@@ -4102,12 +3940,12 @@ declare class YuwSidebarSeparatorDirective {
4102
3940
  declare class YuwSidebarRailDirective {
4103
3941
  readonly label: _angular_core.InputSignal<string>;
4104
3942
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarRailDirective, never>;
4105
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarRailDirective, "button[yuwSidebarRail]", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1$d.HlmSidebarRail; inputs: {}; outputs: {}; }]>;
3943
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarRailDirective, "button[yuwSidebarRail]", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1$e.HlmSidebarRail; inputs: {}; outputs: {}; }]>;
4106
3944
  }
4107
3945
  /** Main content region beside the sidebar. Apply to a `<main>`. */
4108
3946
  declare class YuwSidebarInsetDirective {
4109
3947
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarInsetDirective, never>;
4110
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarInsetDirective, "main[yuwSidebarInset]", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmSidebarInset; inputs: {}; outputs: {}; }]>;
3948
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarInsetDirective, "main[yuwSidebarInset]", never, {}, {}, never, never, true, [{ directive: typeof i1$e.HlmSidebarInset; inputs: {}; outputs: {}; }]>;
4111
3949
  }
4112
3950
 
4113
3951
  declare const YUW_SIDEBAR_RAIL_PADDING = "22px";
@@ -4307,5 +4145,819 @@ declare class YuwCommandDialogComponent {
4307
4145
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwCommandDialogComponent, "yuw-command-dialog", never, { "closeOnSelect": { "alias": "closeOnSelect"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; "groups": { "alias": "groups"; "required": true; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "panelClass": { "alias": "panelClass"; "required": false; "isSignal": true; }; "search": { "alias": "search"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": true; "isSignal": true; }; }, { "open": "openChange"; "search": "searchChange"; "commandSelected": "commandSelected"; }, never, never, true, never>;
4308
4146
  }
4309
4147
 
4310
- export { DATATABLE_ALIGN_CLASS, DATATABLE_LAYOUT_CLASS, DATATABLE_WRAP_CONTENT_CLASS, YUW_DATATABLE_FEATURES, YUW_DATATABLE_WRAP_MIN_WIDTH, YUW_PASSWORD_REVEAL_STATES, YUW_SIDEBAR_RAIL_ICON_SIZE, YUW_SIDEBAR_RAIL_PADDING, YUW_SIDEBAR_RAIL_WIDTH, YuwAccordion, YuwAccordionContentComponent, YuwAccordionImports, YuwAccordionItem, YuwAccordionTriggerComponent, YuwActionsCellComponent, YuwAlertActionDirective, YuwAlertComponent, YuwAlertDescriptionDirective, YuwAlertDialogComponent, YuwAlertDialogMediaDirective, YuwAlertDialogTriggerDirective, YuwAlertImports, YuwAlertTitleDirective, YuwAttachmentActionDirective, YuwAttachmentActionsDirective, YuwAttachmentContentDirective, YuwAttachmentDescriptionDirective, YuwAttachmentDirective, YuwAttachmentGroupDirective, YuwAttachmentMediaDirective, YuwAttachmentTitleDirective, YuwAttachmentTriggerDirective, YuwAvatarComponent, YuwBadgeComponent, YuwBreadcrumbComponent, YuwBreadcrumbTrailService, YuwButtonComponent, YuwButtonGroupComponent, YuwButtonGroupContentDirective, YuwCaptionDirective, YuwCardActionDirective, YuwCardContentDirective, YuwCardDescriptionDirective, YuwCardDirective, YuwCardFooterDirective, YuwCardGridComponent, YuwCardGridItemComponent, YuwCardHeaderDirective, YuwCardImports, YuwCardTitleDirective, YuwCheckboxComponent, YuwClassDirective, YuwComboboxComponent, YuwComboboxItemDirective, YuwCommandComponent, YuwCommandDialogComponent, YuwContextMenuCheckboxDirective, YuwContextMenuCheckboxIndicatorComponent, YuwContextMenuDirective, YuwContextMenuGroupDirective, YuwContextMenuImports, YuwContextMenuItemDirective, YuwContextMenuLabelDirective, YuwContextMenuRadioDirective, YuwContextMenuRadioIndicatorComponent, YuwContextMenuSeparatorDirective, YuwContextMenuShortcutDirective, YuwContextMenuSubDirective, YuwContextMenuSubIndicatorComponent, YuwContextMenuSubTriggerDirective, YuwContextMenuTriggerDirective, YuwDatatableComponent, YuwDatatablePaginationDirective, YuwDatatableRowSelect, YuwDatepickerComponent, YuwDialogCloseDirective, YuwDialogComponent, YuwDialogFooterDirective, YuwDialogImports, YuwDialogTriggerDirective, YuwEmptyContentDirective, YuwEmptyDescriptionDirective, YuwEmptyDirective, YuwEmptyHeaderDirective, YuwEmptyImports, YuwEmptyMediaDirective, YuwEmptyTitleDirective, YuwFieldBase, YuwFilterContentDirective, YuwInputAddonImports, YuwInputComponent, YuwInputFileComponent, YuwInputOtpComponent, YuwItemActionsDirective, YuwItemContentDirective, YuwItemDescriptionDirective, YuwItemDirective, YuwItemFooterDirective, YuwItemGroupDirective, YuwItemHeaderDirective, YuwItemImports, YuwItemMediaDirective, YuwItemSeparatorDirective, YuwItemTitleDirective, YuwLabel, YuwLeftAddonDirective, YuwListPaginationComponent, YuwListToolbarComponent, YuwPageHeaderComponent, YuwPageSizeComponent, YuwPaginationComponent, YuwPasswordInputComponent, YuwPopoverComponent, YuwPopoverTriggerDirective, YuwRadioGroupComponent, YuwRightAddonDirective, YuwSearchInputComponent, YuwSheetCloseDirective, YuwSheetComponent, YuwSheetFooterDirective, YuwSheetHeaderDirective, YuwSheetImports, YuwSheetTriggerDirective, YuwSidebarComponent, YuwSidebarContentDirective, YuwSidebarContentExtraDirective, YuwSidebarFooterDirective, YuwSidebarFooterExtraDirective, YuwSidebarGroupContentDirective, YuwSidebarGroupDirective, YuwSidebarGroupLabelDirective, YuwSidebarHeaderDirective, YuwSidebarInsetDirective, YuwSidebarMenuAvatarButtonDirective, YuwSidebarMenuBadgeDirective, YuwSidebarMenuButtonDirective, YuwSidebarMenuDirective, YuwSidebarMenuItemDirective, YuwSidebarMenuSubButtonDirective, YuwSidebarMenuSubDirective, YuwSidebarMenuSubItemDirective, YuwSidebarRailDirective, YuwSidebarRailService, YuwSidebarSeparatorDirective, YuwSidebarSubmenuService, YuwSidebarTriggerComponent, YuwSidebarWrapperDirective, YuwSkeletonDirective, YuwSpinnerComponent, YuwSwitchComponent, YuwTBodyDirective, YuwTFootDirective, YuwTHeadDirective, YuwTabContentDirective, YuwTabPanelDirective, YuwTableContainerDirective, YuwTableDirective, YuwTableImports, YuwTabsComponent, YuwTdDirective, YuwTextFieldBase, YuwTextareaComponent, YuwThDirective, YuwToasterComponent, YuwTooltipDirective, YuwTrDirective, YuwValueAccessorBase, buildInputOtpGroups, buildYuwActionsColumn, cn, createPagedList, datatableCellVariants, datatableContainerVariants, datatableHeadVariants, datatableHeaderCellVariants, datatableRowVariants, getPaginationRange, provideValueAccessor, totalInputOtpLength, yuwCommandDefaultFilter };
4311
- export type { YuwAlertDialogSizeDto, YuwAlertVariantDto, YuwAvatarGroupItemDto, YuwAvatarSizeDto, YuwBreadcrumbCrumb, YuwBreadcrumbItemDto, YuwBreadcrumbRouteData, YuwButtonGroupClickDto, YuwButtonGroupItemDto, YuwColorDto, YuwComboboxItemContext, YuwComboboxOptionDto, YuwComboboxValue, YuwCommandGroupDto, YuwCommandItemDto, YuwDatatableAlign, YuwDatatableAppearanceDto, YuwDatatableColumnDef, YuwDatatableColumnMeta, YuwDatatableFeatures, YuwDatatableRowClass, YuwDatepickerModeDto, YuwDatepickerValue, YuwFieldSizeDto, YuwFilterContentContext, YuwFilterGroupDto, YuwFilterGroupMode, YuwFilterOptionDto, YuwFilterSelection, YuwFilterSetDto, YuwFilterSetLabels, YuwFilterSetRenameDto, YuwFilterSetSaveDto, YuwFilterValue, YuwInputFileVariantDto, YuwInputModeDto, YuwInputOtpGroupDto, YuwInputOtpModeDto, YuwInputTypeDto, YuwListPaginationLabels, YuwListToolbarColumnsLabels, YuwListToolbarFilterLabels, YuwListToolbarLabels, YuwListToolbarSearchLabels, YuwListToolbarViewModeIcons, YuwListToolbarViewModeLabels, YuwPageQuery, YuwPageRange, YuwPageSizeLabels, YuwPageSort, YuwPagedList, YuwPagedListOptions, YuwPaginationRangeItem, YuwPaginationSizeDto, YuwPasswordRevealStateDto, YuwPopoverAlignDto, YuwRadioOptionDto, YuwSearchInputCollapseFromDto, YuwSheetScrollStrategyDto, YuwSheetSideDto, YuwSidebarAvatarDto, YuwSidebarCollapsibleDto, YuwSidebarContentDto, YuwSidebarGroupDto, YuwSidebarItemClickDto, YuwSidebarItemDto, YuwSidebarSideDto, YuwSidebarSubItemDto, YuwSidebarVariantDto, YuwSwitchSizeDto, YuwTabItemDto, YuwTabsActivationModeDto, YuwTabsOrientationDto, YuwTabsVariantDto, YuwTextFieldContract, YuwToasterPositionDto, YuwToasterThemeDto, YuwTooltipPositionDto, YuwViewMode };
4148
+ /**
4149
+ * Derives up to two uppercase initials from a name or an email address.
4150
+ *
4151
+ * The text is split on anything that is not a letter or a digit, so separators such as `.`, `@`, `-` or `_` never end
4152
+ * up as an initial: `Pere Sanches` and `p.sanchez@gmail.com` both give `PS`.
4153
+ *
4154
+ * @param text Display name or email.
4155
+ * @returns The first characters of the first two words, or an empty string when there are none.
4156
+ */
4157
+ declare function yuwsInitialsOf(text: string): string;
4158
+
4159
+ /**
4160
+ * Tracks a media query as a signal. Resolves to a constant `false` where `matchMedia` is unavailable: a non-browser
4161
+ * platform has no OS preference or viewport to follow, so callers settle on their non-matching default instead of
4162
+ * throwing during injection. Server platforms expose a `window` shim without `matchMedia`, hence the `typeof` check.
4163
+ * Must be called in an injection context.
4164
+ */
4165
+ declare function yuwsMediaQuerySignal(window: (Window & typeof globalThis) | null | undefined, query: string): Signal<boolean>;
4166
+
4167
+ /**
4168
+ * `rowClass` for `yuw-datatable` that dims and locks the rows whose id is in `pendingIds`, so nobody edits on top of
4169
+ * a write still in flight. `idOf` reads the id because not every row is identified the same way.
4170
+ */
4171
+ declare function yuwsPendingRowClass<Row extends object>(pendingIds: Signal<ReadonlySet<string>>, idOf: (row: Row) => string): YuwDatatableRowClass<Row>;
4172
+
4173
+ /**
4174
+ * Reads a file as a `data:` URL, for previews and for backends that take the image inline.
4175
+ *
4176
+ * @param file File to read.
4177
+ * @returns The `data:` URL of the file contents; rejects if the browser fails to read it.
4178
+ */
4179
+ declare function yuwsReadFileAsDataUrl(file: File): Promise<string>;
4180
+
4181
+ /** State of a create/edit sheet. `editing` is `undefined` while creating. */
4182
+ interface YuwsSheetEditor<Item> {
4183
+ readonly open: WritableSignal<boolean>;
4184
+ readonly editing: Signal<Item | undefined>;
4185
+ edit(item: Item): void;
4186
+ startNew(): void;
4187
+ }
4188
+ /**
4189
+ * State of a create/edit sheet: bind `open` with `[(open)]` and `editing` to the sheet's item, call `edit` from a row
4190
+ * and `startNew` from the "new" action.
4191
+ */
4192
+ declare function createYuwsSheetEditor<Item>(): YuwsSheetEditor<Item>;
4193
+
4194
+ /**
4195
+ * Table cell with the active/inactive state of a row as a badge. The color derives from `active`, so an inactive row
4196
+ * can never be painted green.
4197
+ *
4198
+ * Inputs:
4199
+ * - `active` (required): Whether the row is active.
4200
+ * - `label` (required): Visible state text. The consuming app translates it.
4201
+ *
4202
+ * Usage:
4203
+ * ```ts
4204
+ * cell: ({ row }) => flexRenderComponent(YuwsActiveStatusCellComponent, { inputs: { active: row.original.active, label } })
4205
+ * ```
4206
+ */
4207
+ declare class YuwsActiveStatusCellComponent {
4208
+ readonly active: _angular_core.InputSignal<boolean>;
4209
+ readonly label: _angular_core.InputSignal<string>;
4210
+ protected readonly color: _angular_core.Signal<YuwColorDto>;
4211
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsActiveStatusCellComponent, never>;
4212
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsActiveStatusCellComponent, "yuws-active-status-cell", never, { "active": { "alias": "active"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
4213
+ }
4214
+
4215
+ /** Avatar size of the cell: `sm` for entity listings, `md` for the 45x45 thumbnails of catalog listings. */
4216
+ type YuwsAvatarNameCellSize = 'sm' | 'md';
4217
+ /**
4218
+ * Table cell with the identity of a row: avatar and name. The name is text, not a link: the whole row is the click
4219
+ * target. Without an image the avatar shows the initials of `name`.
4220
+ *
4221
+ * Inputs:
4222
+ * - `imageUrl`: Image of the row. Default is `undefined`.
4223
+ * - `name` (required): Visible name; also the avatar's alternative text.
4224
+ * - `size`: Avatar size (`'sm'`, `'md'`). Default is `'sm'`.
4225
+ */
4226
+ declare class YuwsAvatarNameCellComponent {
4227
+ readonly imageUrl: _angular_core.InputSignal<string | undefined>;
4228
+ readonly name: _angular_core.InputSignal<string>;
4229
+ readonly size: _angular_core.InputSignal<YuwsAvatarNameCellSize>;
4230
+ protected readonly avatar: _angular_core.Signal<{
4231
+ size: YuwAvatarSizeDto;
4232
+ class: string;
4233
+ }>;
4234
+ protected readonly initials: _angular_core.Signal<string>;
4235
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsAvatarNameCellComponent, never>;
4236
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsAvatarNameCellComponent, "yuws-avatar-name-cell", never, { "imageUrl": { "alias": "imageUrl"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
4237
+ }
4238
+
4239
+ /**
4240
+ * Table cell that clamps its text to two lines, breaking anywhere, for long values with no spaces such as tokens. The
4241
+ * full text stays in the `title`.
4242
+ *
4243
+ * Inputs:
4244
+ * - `text` (required): Value to show.
4245
+ */
4246
+ declare class YuwsClampedTextCellComponent {
4247
+ readonly text: _angular_core.InputSignal<string>;
4248
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsClampedTextCellComponent, never>;
4249
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsClampedTextCellComponent, "yuws-clamped-text-cell", never, { "text": { "alias": "text"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
4250
+ }
4251
+
4252
+ /**
4253
+ * Table cell for a boolean field: a check or a dash. The icon is never the only carrier of the meaning: it takes
4254
+ * `label` as its accessible name.
4255
+ *
4256
+ * Inputs:
4257
+ * - `enabled` (required): Value of the field.
4258
+ * - `label` (required): Accessible text of the state. The consuming app translates it.
4259
+ */
4260
+ declare class YuwsFlagCellComponent {
4261
+ readonly enabled: _angular_core.InputSignal<boolean>;
4262
+ readonly label: _angular_core.InputSignal<string>;
4263
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsFlagCellComponent, never>;
4264
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsFlagCellComponent, "yuws-flag-cell", never, { "enabled": { "alias": "enabled"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
4265
+ }
4266
+
4267
+ /**
4268
+ * Icon button at the end of a row, hidden until the row is hovered or keyboard-focused like the pencil of
4269
+ * `buildYuwActionsColumn`; touch devices keep it visible. `icon` is the SVG itself (e.g. `lucideEye`), so the cell does
4270
+ * not have to register every consumer's icon. The host stops the click so a clickable row does not fire too.
4271
+ *
4272
+ * Inputs:
4273
+ * - `action` (required): Callback run on click. An input because `flexRenderComponent` does not subscribe outputs.
4274
+ * - `icon` (required): SVG markup of the icon.
4275
+ * - `label` (required): Accessible name of the button. The consuming app translates it.
4276
+ */
4277
+ declare class YuwsIconActionCellComponent {
4278
+ readonly action: _angular_core.InputSignal<() => void>;
4279
+ readonly icon: _angular_core.InputSignal<string>;
4280
+ readonly label: _angular_core.InputSignal<string>;
4281
+ protected run(): void;
4282
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsIconActionCellComponent, never>;
4283
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsIconActionCellComponent, "yuws-icon-action-cell", never, { "action": { "alias": "action"; "required": true; "isSignal": true; }; "icon": { "alias": "icon"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
4284
+ }
4285
+
4286
+ /** Image size of the cell: `lg` is the 60x60 catalog thumbnail, `md` the 45x45 one. */
4287
+ type YuwsImageCellSize = 'md' | 'lg';
4288
+ /**
4289
+ * Table cell with the image of a row, backed by the initials of `name` when the image is missing or fails to load.
4290
+ * Sizes go through `class` because `yuw-avatar` sizes stop short of them.
4291
+ *
4292
+ * Inputs:
4293
+ * - `imageUrl`: Image of the row. Default is `undefined`.
4294
+ * - `name` (required): What the image shows; its alternative text and the source of the initials.
4295
+ * - `size`: Image size (`'md'`, `'lg'`). Default is `'lg'`.
4296
+ */
4297
+ declare class YuwsImageCellComponent {
4298
+ readonly imageUrl: _angular_core.InputSignal<string | undefined>;
4299
+ readonly name: _angular_core.InputSignal<string>;
4300
+ readonly size: _angular_core.InputSignal<YuwsImageCellSize>;
4301
+ protected readonly initials: _angular_core.Signal<string>;
4302
+ protected readonly sizeClass: _angular_core.Signal<string>;
4303
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsImageCellComponent, never>;
4304
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsImageCellComponent, "yuws-image-cell", never, { "imageUrl": { "alias": "imageUrl"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
4305
+ }
4306
+
4307
+ /**
4308
+ * Table cell with a link that opens in a new tab. It stops the click so a clickable row does not navigate too.
4309
+ *
4310
+ * Inputs:
4311
+ * - `href` (required): Link target.
4312
+ * - `label` (required): Link text. The consuming app translates it.
4313
+ */
4314
+ declare class YuwsLinkCellComponent {
4315
+ readonly href: _angular_core.InputSignal<string>;
4316
+ readonly label: _angular_core.InputSignal<string>;
4317
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsLinkCellComponent, never>;
4318
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsLinkCellComponent, "yuws-link-cell", never, { "href": { "alias": "href"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
4319
+ }
4320
+
4321
+ /**
4322
+ * Table cell with a clickable pill: a state that flips on click (active, blocked) or, without `positive`, a neutral
4323
+ * action such as duplicate. It is a button so it is keyboard reachable, and it stops the click so a clickable row does
4324
+ * not fire too. `toggled` is an input because `flexRenderComponent` does not subscribe outputs.
4325
+ *
4326
+ * Inputs:
4327
+ * - `disabled`: Disables the pill. Default is `false`.
4328
+ * - `label` (required): Visible text. The consuming app translates it.
4329
+ * - `positive`: `true` paints the pill green, `false` red; unset keeps it neutral. Default is `undefined`.
4330
+ * - `toggled` (required): Callback run on click.
4331
+ */
4332
+ declare class YuwsStatusToggleCellComponent {
4333
+ readonly disabled: _angular_core.InputSignal<boolean>;
4334
+ readonly label: _angular_core.InputSignal<string>;
4335
+ readonly positive: _angular_core.InputSignal<boolean | undefined>;
4336
+ readonly toggled: _angular_core.InputSignal<() => void>;
4337
+ private readonly _tone;
4338
+ protected readonly toneClass: _angular_core.Signal<string>;
4339
+ protected onClick(event: Event): void;
4340
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsStatusToggleCellComponent, never>;
4341
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsStatusToggleCellComponent, "yuws-status-toggle-cell", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "positive": { "alias": "positive"; "required": false; "isSignal": true; }; "toggled": { "alias": "toggled"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
4342
+ }
4343
+
4344
+ /** Text of a cell with no value. */
4345
+ declare const YUWS_NO_DATA_PLACEHOLDER = "\u2014";
4346
+ /** Options of a text column: whether it sorts and whether its text may wrap. */
4347
+ interface YuwsTextColumnOptions {
4348
+ enableSorting?: boolean;
4349
+ wrap?: boolean;
4350
+ }
4351
+ /** Texts of the two states of a boolean column, already translated. */
4352
+ interface YuwsStateLabels {
4353
+ on: string;
4354
+ off: string;
4355
+ }
4356
+ /** Icon button column. `visible` decides the rows that show the button; without it every row does. */
4357
+ interface YuwsIconActionColumn<Row> {
4358
+ id: string;
4359
+ icon: string;
4360
+ label: string;
4361
+ header?: string;
4362
+ onAction: (row: Row) => void;
4363
+ visible?: (row: Row) => boolean;
4364
+ }
4365
+ /** State column that flips on click. `disabled` locks the rows whose state cannot change. */
4366
+ interface YuwsStatusToggleColumn<Row> {
4367
+ key: keyof Row & string;
4368
+ header: string;
4369
+ labels: YuwsStateLabels;
4370
+ positive: (row: Row) => boolean;
4371
+ toggled: (row: Row) => void;
4372
+ disabled?: (row: Row) => boolean;
4373
+ }
4374
+ /** Text column that shows `YUWS_NO_DATA_PLACEHOLDER` when the value is missing or an empty string. */
4375
+ declare function buildYuwsOptionalTextColumn<Row extends Record<string, unknown>>(key: keyof Row & string, header: string, options?: YuwsTextColumnOptions): YuwDatatableColumnDef<Row>;
4376
+ /** Date and time column formatted for `locale`, with `YUWS_NO_DATA_PLACEHOLDER` when the row has none. */
4377
+ declare function buildYuwsDateTimeColumn<Row extends Record<string, unknown>>(key: keyof Row & string, header: string, locale: string | undefined, enableSorting?: boolean): YuwDatatableColumnDef<Row>;
4378
+ /** Read-only active/inactive column of a row that exposes `active`. */
4379
+ declare function buildYuwsActiveStatusColumn<Row extends {
4380
+ active: boolean;
4381
+ }>(header: string, labels: YuwsStateLabels, meta?: YuwDatatableColumnDef<Row>['meta']): YuwDatatableColumnDef<Row>;
4382
+ /** State column that flips on click, painted green or red by `positive`. */
4383
+ declare function buildYuwsStatusToggleColumn<Row extends Record<string, unknown>>(column: YuwsStatusToggleColumn<Row>): YuwDatatableColumnDef<Row>;
4384
+ /** Last column with an icon button that runs `onAction` on the row. */
4385
+ declare function buildYuwsIconActionColumn<Row extends RowData>(column: YuwsIconActionColumn<Row>): YuwDatatableColumnDef<Row>;
4386
+
4387
+ /**
4388
+ * Button that copies a value to the clipboard without showing it. The icon turns into a check for a moment, and the
4389
+ * optional messages raise a toast for whoever looks elsewhere. Copying again restarts the wait. The host stops the
4390
+ * click because the button usually lives in a clickable row.
4391
+ *
4392
+ * Inputs:
4393
+ * - `ariaLabel` (required): Accessible name of the button. The consuming app translates it.
4394
+ * - `copiedMessage`: Success toast text; no toast when unset. Default is `undefined`.
4395
+ * - `failedMessage`: Error toast text; no toast when unset. Default is `undefined`.
4396
+ * - `value` (required): Text copied to the clipboard.
4397
+ */
4398
+ declare class YuwsCopyButtonComponent {
4399
+ private readonly _navigator;
4400
+ readonly ariaLabel: _angular_core.InputSignal<string>;
4401
+ readonly copiedMessage: _angular_core.InputSignal<string | undefined>;
4402
+ readonly failedMessage: _angular_core.InputSignal<string | undefined>;
4403
+ readonly value: _angular_core.InputSignal<string>;
4404
+ private readonly _copies;
4405
+ protected readonly copied: _angular_core.Signal<boolean>;
4406
+ protected copy(): Promise<void>;
4407
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsCopyButtonComponent, never>;
4408
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsCopyButtonComponent, "yuws-copy-button", never, { "ariaLabel": { "alias": "ariaLabel"; "required": true; "isSignal": true; }; "copiedMessage": { "alias": "copiedMessage"; "required": false; "isSignal": true; }; "failedMessage": { "alias": "failedMessage"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
4409
+ }
4410
+
4411
+ /** State a `yuws-confirm-dialog` reads: whether it is open, its title and what confirming does. */
4412
+ interface YuwsConfirmationState {
4413
+ readonly open: WritableSignal<boolean>;
4414
+ readonly title: Signal<string>;
4415
+ confirm(): void;
4416
+ }
4417
+
4418
+ /**
4419
+ * Dialog that asks to confirm an action on a row (delete, restore, block). It opens from its state rather than from a
4420
+ * trigger of its own, because the row starts the action.
4421
+ *
4422
+ * Inputs:
4423
+ * - `cancelLabel` (required): Cancel button text. The consuming app translates it.
4424
+ * - `confirmation` (required): Open state, title and confirm callback.
4425
+ * - `confirmLabel` (required): Confirm button text. The consuming app translates it.
4426
+ * - `description` (required): Body text. The consuming app translates it.
4427
+ * - `destructive`: Paints the confirm button red, for what cannot be undone. Default is `false`.
4428
+ */
4429
+ declare class YuwsConfirmDialogComponent {
4430
+ readonly cancelLabel: _angular_core.InputSignal<string>;
4431
+ readonly confirmation: _angular_core.InputSignal<YuwsConfirmationState>;
4432
+ readonly confirmLabel: _angular_core.InputSignal<string>;
4433
+ readonly description: _angular_core.InputSignal<string>;
4434
+ readonly destructive: _angular_core.InputSignalWithTransform<boolean, unknown>;
4435
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsConfirmDialogComponent, never>;
4436
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsConfirmDialogComponent, "yuws-confirm-dialog", never, { "cancelLabel": { "alias": "cancelLabel"; "required": true; "isSignal": true; }; "confirmation": { "alias": "confirmation"; "required": true; "isSignal": true; }; "confirmLabel": { "alias": "confirmLabel"; "required": true; "isSignal": true; }; "description": { "alias": "description"; "required": true; "isSignal": true; }; "destructive": { "alias": "destructive"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
4437
+ }
4438
+
4439
+ /**
4440
+ * Combobox for a custom filter (`yuwsFilterContent`) of `yuws-list-toolbar` that looks like the toolbar's own filters:
4441
+ * a secondary button with the group label in bold followed by the selection.
4442
+ *
4443
+ * Inputs:
4444
+ * - `emptyText` (required): Text when the search finds nothing. The consuming app translates it.
4445
+ * - `idleColor`: Trigger color, matching the toolbar's idle filters. Default is `'secondary'`.
4446
+ * - `label` (required): Group label; also the trigger's accessible name.
4447
+ * - `options` (required): Options to pick from.
4448
+ * - `searchPlaceholder`: Placeholder of the search box. Default is `undefined`.
4449
+ * - `value` (model): Selected value.
4450
+ */
4451
+ declare class YuwsFilterComboboxComponent {
4452
+ readonly emptyText: _angular_core.InputSignal<string>;
4453
+ readonly idleColor: _angular_core.InputSignal<YuwColorDto>;
4454
+ readonly label: _angular_core.InputSignal<string>;
4455
+ readonly options: _angular_core.InputSignal<YuwComboboxOptionDto<unknown>[]>;
4456
+ readonly searchPlaceholder: _angular_core.InputSignal<string | undefined>;
4457
+ readonly value: _angular_core.ModelSignal<YuwComboboxValue>;
4458
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsFilterComboboxComponent, never>;
4459
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsFilterComboboxComponent, "yuws-filter-combobox", never, { "emptyText": { "alias": "emptyText"; "required": true; "isSignal": true; }; "idleColor": { "alias": "idleColor"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "options": { "alias": "options"; "required": true; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
4460
+ }
4461
+
4462
+ /** Texts of the fixed buttons of a `yuws-form-sheet`, already translated by the consuming app. */
4463
+ interface YuwsFormSheetLabels {
4464
+ cancel: string;
4465
+ close: string;
4466
+ save: string;
4467
+ }
4468
+
4469
+ /**
4470
+ * Side edit panel of an entity: the sheet, its title and the cancel/save footer. It only reports `save`, `remove`,
4471
+ * `restore` and `back`: composing the entity and closing the sheet stay with the host, which owns the draft. It opens
4472
+ * from a row, so it has no trigger.
4473
+ *
4474
+ * Inputs:
4475
+ * - `backLabel`: Turns the panel into a sub-step: a back arrow with this accessible name precedes the title, the close
4476
+ * button goes away and cancel emits `back`. Default is `undefined`.
4477
+ * - `errorMessage`: Rejection shown above the footer, so the draft stays on screen to be fixed. Default is `undefined`.
4478
+ * - `hideFooter`: Hides the footer. Default is `false`.
4479
+ * - `labels` (required): Cancel, close and save texts.
4480
+ * - `panelClass`: Class of the sheet panel. Default is `'w-full sm:max-w-md'`.
4481
+ * - `readonly`: Drops the save button. Default is `false`.
4482
+ * - `removeDisabled`: Disables the delete button. Default is `false`.
4483
+ * - `removeLabel`: Renders the delete button with this text. Default is `undefined`.
4484
+ * - `restoreLabel`: Renders the restore button with this text. Default is `undefined`.
4485
+ * - `saveDisabled`: Disables the save button. Default is `false`.
4486
+ * - `saving`: Disables the footer actions while the host's write is in flight. Default is `false`.
4487
+ * - `title` (required): Panel title.
4488
+ * - `open` (model): Whether the panel is open.
4489
+ *
4490
+ * Outputs: `back`, `remove`, `restore`, `save`.
4491
+ */
4492
+ declare class YuwsFormSheetComponent {
4493
+ readonly backLabel: _angular_core.InputSignal<string | undefined>;
4494
+ readonly errorMessage: _angular_core.InputSignal<string | undefined>;
4495
+ readonly hideFooter: _angular_core.InputSignalWithTransform<boolean, unknown>;
4496
+ readonly labels: _angular_core.InputSignal<YuwsFormSheetLabels>;
4497
+ readonly open: _angular_core.ModelSignal<boolean>;
4498
+ readonly panelClass: _angular_core.InputSignal<string>;
4499
+ readonly readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
4500
+ readonly removeDisabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
4501
+ readonly removeLabel: _angular_core.InputSignal<string | undefined>;
4502
+ readonly restoreLabel: _angular_core.InputSignal<string | undefined>;
4503
+ readonly saveDisabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
4504
+ readonly saving: _angular_core.InputSignalWithTransform<boolean, unknown>;
4505
+ readonly title: _angular_core.InputSignal<string>;
4506
+ readonly back: _angular_core.OutputEmitterRef<void>;
4507
+ readonly remove: _angular_core.OutputEmitterRef<void>;
4508
+ readonly restore: _angular_core.OutputEmitterRef<void>;
4509
+ readonly save: _angular_core.OutputEmitterRef<void>;
4510
+ protected onCancel(): void;
4511
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsFormSheetComponent, never>;
4512
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsFormSheetComponent, "yuws-form-sheet", never, { "backLabel": { "alias": "backLabel"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "hideFooter": { "alias": "hideFooter"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": true; "isSignal": true; }; "open": { "alias": "open"; "required": true; "isSignal": true; }; "panelClass": { "alias": "panelClass"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "removeDisabled": { "alias": "removeDisabled"; "required": false; "isSignal": true; }; "removeLabel": { "alias": "removeLabel"; "required": false; "isSignal": true; }; "restoreLabel": { "alias": "restoreLabel"; "required": false; "isSignal": true; }; "saveDisabled": { "alias": "saveDisabled"; "required": false; "isSignal": true; }; "saving": { "alias": "saving"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": true; "isSignal": true; }; }, { "open": "openChange"; "back": "back"; "remove": "remove"; "restore": "restore"; "save": "save"; }, never, ["*"], true, never>;
4513
+ }
4514
+
4515
+ /**
4516
+ * Image field of a form: label, avatar with the current image and an upload button. Without an image the avatar shows
4517
+ * the first letter of `name`.
4518
+ *
4519
+ * Inputs:
4520
+ * - `inputId` (required): Id of the file input, tied to the label.
4521
+ * - `label` (required): Field label. The consuming app translates it.
4522
+ * - `name` (required): What the image represents; its alternative text.
4523
+ * - `src`: Image already stored. Default is `undefined`.
4524
+ * - `uploadLabel` (required): Upload button text. The consuming app translates it.
4525
+ * - `value` (model): Files picked, sent by the form on save.
4526
+ */
4527
+ declare class YuwsImageFieldComponent {
4528
+ readonly inputId: _angular_core.InputSignal<string>;
4529
+ readonly label: _angular_core.InputSignal<string>;
4530
+ readonly name: _angular_core.InputSignal<string>;
4531
+ readonly src: _angular_core.InputSignal<string | undefined>;
4532
+ readonly uploadLabel: _angular_core.InputSignal<string>;
4533
+ readonly value: _angular_core.ModelSignal<File[]>;
4534
+ protected readonly initial: _angular_core.Signal<string>;
4535
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsImageFieldComponent, never>;
4536
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsImageFieldComponent, "yuws-image-field", never, { "inputId": { "alias": "inputId"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "name": { "alias": "name"; "required": true; "isSignal": true; }; "src": { "alias": "src"; "required": false; "isSignal": true; }; "uploadLabel": { "alias": "uploadLabel"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
4537
+ }
4538
+
4539
+ /**
4540
+ * Avatar with a button to pick an image that is kept as a `data:` URL in `imageUrl`, for backends that take the image
4541
+ * inline. The picked file is cleared once read, because what is shown and saved is `imageUrl`.
4542
+ *
4543
+ * Inputs:
4544
+ * - `fallback`: Initials shown without an image. Default is the initials of `name`.
4545
+ * - `name` (required): What the image represents; its alternative text.
4546
+ * - `uploadLabel` (required): Upload button text. The consuming app translates it.
4547
+ * - `imageUrl` (model): Current image as a URL or `data:` URL.
4548
+ */
4549
+ declare class YuwsImageUploadComponent {
4550
+ readonly fallback: _angular_core.InputSignal<string | undefined>;
4551
+ readonly imageUrl: _angular_core.ModelSignal<string | undefined>;
4552
+ readonly name: _angular_core.InputSignal<string>;
4553
+ readonly uploadLabel: _angular_core.InputSignal<string>;
4554
+ protected readonly files: _angular_core.WritableSignal<File[]>;
4555
+ protected readonly initials: _angular_core.Signal<string>;
4556
+ protected onFiles(files: File[]): Promise<void>;
4557
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsImageUploadComponent, never>;
4558
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsImageUploadComponent, "yuws-image-upload", never, { "fallback": { "alias": "fallback"; "required": false; "isSignal": true; }; "imageUrl": { "alias": "imageUrl"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": true; "isSignal": true; }; "uploadLabel": { "alias": "uploadLabel"; "required": true; "isSignal": true; }; }, { "imageUrl": "imageUrlChange"; }, never, never, true, never>;
4559
+ }
4560
+
4561
+ /** Text of the page size selector and its range message. */
4562
+ interface YuwsPageSizeLabels {
4563
+ readonly label: string;
4564
+ readonly empty: string;
4565
+ readonly range: (range: YuwPageRange) => string;
4566
+ }
4567
+ /** Text of the standalone pagination footer. */
4568
+ interface YuwsListPaginationLabels {
4569
+ readonly pageSize: YuwsPageSizeLabels;
4570
+ readonly ariaLabel: string;
4571
+ readonly previous: string;
4572
+ readonly next: string;
4573
+ readonly ellipsis: string;
4574
+ }
4575
+
4576
+ /**
4577
+ * Sortable, paginated `yuw-datatable` in card appearance bound to a `YuwPagedList`, with the page-size picker in its
4578
+ * pagination slot.
4579
+ *
4580
+ * Inputs:
4581
+ * - `columns` (required): Column definitions.
4582
+ * - `data` (required): Rows of the current page.
4583
+ * - `emptyText` (required): Text without rows. The consuming app translates it.
4584
+ * - `labels` (required): Pagination and page-size texts.
4585
+ * - `list` (required): Paged list that owns pagination and sorting.
4586
+ * - `loading`: Shows the loading state and locks the page size. Default is `false`.
4587
+ * - `rowClass`: Class per row. Default is `undefined`.
4588
+ * - `selectable`: Adds row selection. Default is `false`.
4589
+ * - `total` (required): Total rows across pages.
4590
+ * - `columnVisibility` (model): Hidden columns.
4591
+ *
4592
+ * Outputs:
4593
+ * - `rowClicked`: Emits the clicked row.
4594
+ */
4595
+ declare class YuwsListTableComponent<Row extends RowData> {
4596
+ readonly columns: _angular_core.InputSignal<YuwDatatableColumnDef<Row>[]>;
4597
+ readonly columnVisibility: _angular_core.ModelSignal<ColumnVisibilityState>;
4598
+ readonly data: _angular_core.InputSignal<Row[]>;
4599
+ readonly emptyText: _angular_core.InputSignal<string>;
4600
+ readonly labels: _angular_core.InputSignal<YuwsListPaginationLabels>;
4601
+ readonly list: _angular_core.InputSignal<YuwPagedList<unknown>>;
4602
+ readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
4603
+ readonly rowClass: _angular_core.InputSignal<YuwDatatableRowClass<Row> | undefined>;
4604
+ readonly selectable: _angular_core.InputSignalWithTransform<boolean, unknown>;
4605
+ readonly total: _angular_core.InputSignal<number>;
4606
+ readonly rowClicked: _angular_core.OutputEmitterRef<Row>;
4607
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsListTableComponent<any>, never>;
4608
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsListTableComponent<any>, "yuws-list-table", never, { "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "columnVisibility": { "alias": "columnVisibility"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": true; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": true; "isSignal": true; }; "labels": { "alias": "labels"; "required": true; "isSignal": true; }; "list": { "alias": "list"; "required": true; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "rowClass": { "alias": "rowClass"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "total": { "alias": "total"; "required": true; "isSignal": true; }; }, { "columnVisibility": "columnVisibilityChange"; "rowClicked": "rowClicked"; }, never, never, true, never>;
4609
+ }
4610
+
4611
+ /**
4612
+ * Page size selector and range message of a `YuwPagedList`; in a datatable it takes the pagination slot.
4613
+ *
4614
+ * Inputs:
4615
+ * - `disabled`: Disables the page size selector. Default is `false`.
4616
+ * - `labels`: Required `YuwsPageSizeLabels` with the selector label, the text for an empty list and the function that builds the range message.
4617
+ * - `list`: Required `YuwPagedList` whose page size is chosen and whose range is shown in the message.
4618
+ */
4619
+ declare class YuwsPageSizeComponent {
4620
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
4621
+ readonly labels: _angular_core.InputSignal<YuwsPageSizeLabels>;
4622
+ readonly list: _angular_core.InputSignal<YuwPagedList<unknown>>;
4623
+ protected readonly message: _angular_core.Signal<string>;
4624
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsPageSizeComponent, never>;
4625
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsPageSizeComponent, "yuws-page-size", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": true; "isSignal": true; }; "list": { "alias": "list"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
4626
+ }
4627
+
4628
+ /**
4629
+ * Pagination footer for lists without a datatable: the page size selector with its range message
4630
+ * and the page navigation, both driven by one `YuwPagedList`. A disabled `fieldset` blocks its buttons.
4631
+ *
4632
+ * Inputs:
4633
+ * - `disabled`: Disables the page size selector and the page buttons. Default is `false`.
4634
+ * - `labels`: Required `YuwsListPaginationLabels` with the consumer's text for the page size selector, the navigation aria label and the previous, next and ellipsis texts.
4635
+ * - `list`: Required `YuwPagedList` holding the current page, page size, total pages and range; changes made in the footer are written back to it.
4636
+ */
4637
+ declare class YuwsListPaginationComponent {
4638
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
4639
+ readonly labels: _angular_core.InputSignal<YuwsListPaginationLabels>;
4640
+ readonly list: _angular_core.InputSignal<YuwPagedList<unknown>>;
4641
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsListPaginationComponent, never>;
4642
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsListPaginationComponent, "yuws-list-pagination", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": true; "isSignal": true; }; "list": { "alias": "list"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
4643
+ }
4644
+
4645
+ /**
4646
+ * Page title, optional description and up to two actions, each rendered when its label is set.
4647
+ * On mobile the primary action shows only its icon, or `primaryMobileLabel`. Icons are `@ng-icons`
4648
+ * names; the consumer registers any beyond `lucidePlus` with `provideIcons`.
4649
+ *
4650
+ * Inputs:
4651
+ * - `backLabel`: Text of the back button, which renders only when set; on small screens only its arrow shows.
4652
+ * - `description`: Optional subtitle under the title.
4653
+ * - `primaryDisabled`: Disables the primary action, which stays visible but ignores clicks, e.g. while the list it creates items for is loading.
4654
+ * - `primaryIcon`: Icon name shown in the primary action.
4655
+ * - `primaryLabel`: Text of the primary action, which renders only when set.
4656
+ * - `primaryMobileLabel`: Text the primary action shows on small screens instead of its label.
4657
+ * - `secondaryIcon`: Icon name shown in the secondary action.
4658
+ * - `secondaryLabel`: Text of the secondary action, which renders only when set; hidden on small screens, leaving its icon.
4659
+ * - `title`: Required page title.
4660
+ *
4661
+ * Outputs:
4662
+ * - `backClicked`: Emits the `MouseEvent` of the back button.
4663
+ * - `primaryClicked`: Emits the `MouseEvent` of the primary action.
4664
+ * - `secondaryClicked`: Emits the `MouseEvent` of the secondary action.
4665
+ */
4666
+ declare class YuwsPageHeaderComponent {
4667
+ readonly backLabel: _angular_core.InputSignal<string | undefined>;
4668
+ readonly description: _angular_core.InputSignal<string | undefined>;
4669
+ readonly primaryDisabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
4670
+ readonly primaryIcon: _angular_core.InputSignal<string | undefined>;
4671
+ readonly primaryLabel: _angular_core.InputSignal<string | undefined>;
4672
+ readonly primaryMobileLabel: _angular_core.InputSignal<string | undefined>;
4673
+ readonly secondaryDisabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
4674
+ readonly secondaryIcon: _angular_core.InputSignal<string | undefined>;
4675
+ readonly secondaryLabel: _angular_core.InputSignal<string | undefined>;
4676
+ readonly title: _angular_core.InputSignal<string>;
4677
+ readonly backClicked: _angular_core.OutputEmitterRef<MouseEvent>;
4678
+ readonly primaryClicked: _angular_core.OutputEmitterRef<MouseEvent>;
4679
+ readonly secondaryClicked: _angular_core.OutputEmitterRef<MouseEvent>;
4680
+ protected readonly isMobile: _angular_core.Signal<boolean>;
4681
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsPageHeaderComponent, never>;
4682
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsPageHeaderComponent, "yuws-page-header", never, { "backLabel": { "alias": "backLabel"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "primaryDisabled": { "alias": "primaryDisabled"; "required": false; "isSignal": true; }; "primaryIcon": { "alias": "primaryIcon"; "required": false; "isSignal": true; }; "primaryLabel": { "alias": "primaryLabel"; "required": false; "isSignal": true; }; "primaryMobileLabel": { "alias": "primaryMobileLabel"; "required": false; "isSignal": true; }; "secondaryDisabled": { "alias": "secondaryDisabled"; "required": false; "isSignal": true; }; "secondaryIcon": { "alias": "secondaryIcon"; "required": false; "isSignal": true; }; "secondaryLabel": { "alias": "secondaryLabel"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": true; "isSignal": true; }; }, { "backClicked": "backClicked"; "primaryClicked": "primaryClicked"; "secondaryClicked": "secondaryClicked"; }, never, never, true, never>;
4683
+ }
4684
+
4685
+ /**
4686
+ * Grid of projected cards, usually `yuws-card-grid-item`s in an `@for`. `loading` shows
4687
+ * `skeletonCount` placeholders shaped by `skeletonClass`; `empty` shows `emptyText`; `columnsClass`
4688
+ * holds the Tailwind column utilities.
4689
+ *
4690
+ * Inputs:
4691
+ * - `columnsClass`: Tailwind grid column utilities applied to the grid and its skeleton. Default is `'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4'`.
4692
+ * - `empty`: Shows `emptyText` instead of the projected cards. Default is `false`.
4693
+ * - `emptyText`: Required message shown when `empty` is set. The app supplies and translates it.
4694
+ * - `loading`: Shows `skeletonCount` placeholders instead of the content; takes precedence over `empty`. Default is `false`.
4695
+ * - `skeletonClass`: Extra classes sizing each placeholder, e.g. its height. Default is `'h-16'`.
4696
+ * - `skeletonCount`: Number of placeholders shown while loading. Default is `12`.
4697
+ *
4698
+ * `YuwsCardGridComponent.COLUMNS` holds the column classes admin lists share per view mode — `list`
4699
+ * is one column, `block` grows from one to five, and `tags` packs small tag cards up to six — so every listing lays out its cards the same
4700
+ * way: `[columnsClass]="YuwsCardGridComponent.COLUMNS[mode]"`.
4701
+ */
4702
+ declare class YuwsCardGridComponent {
4703
+ readonly columnsClass: _angular_core.InputSignal<string>;
4704
+ readonly empty: _angular_core.InputSignalWithTransform<boolean, unknown>;
4705
+ readonly emptyText: _angular_core.InputSignal<string>;
4706
+ readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
4707
+ readonly skeletonClass: _angular_core.InputSignal<string>;
4708
+ readonly skeletonCount: _angular_core.InputSignalWithTransform<number, unknown>;
4709
+ static readonly COLUMNS: {
4710
+ readonly list: "grid-cols-1";
4711
+ readonly block: "grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5";
4712
+ readonly tags: "grid-cols-1 sm:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5 2xl:grid-cols-6";
4713
+ };
4714
+ protected readonly skeletons: _angular_core.Signal<number[]>;
4715
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsCardGridComponent, never>;
4716
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsCardGridComponent, "yuws-card-grid", never, { "columnsClass": { "alias": "columnsClass"; "required": false; "isSignal": true; }; "empty": { "alias": "empty"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": true; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "skeletonClass": { "alias": "skeletonClass"; "required": false; "isSignal": true; }; "skeletonCount": { "alias": "skeletonCount"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
4717
+ }
4718
+
4719
+ /**
4720
+ * While `pending` the card stays hidden in place under a skeleton, so the grid does not jump.
4721
+ *
4722
+ * Inputs:
4723
+ * - `pending`: Hides the projected card and overlays a skeleton while it is loading. Default is `false`.
4724
+ */
4725
+ declare class YuwsCardGridItemComponent {
4726
+ readonly pending: _angular_core.InputSignalWithTransform<boolean, unknown>;
4727
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsCardGridItemComponent, never>;
4728
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsCardGridItemComponent, "yuws-card-grid-item", never, { "pending": { "alias": "pending"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
4729
+ }
4730
+
4731
+ interface YuwsFilterOptionDto {
4732
+ readonly value: string;
4733
+ readonly label: string;
4734
+ readonly disabled?: boolean;
4735
+ }
4736
+ /** `single` keeps one value and closes its list after a pick, `multiple` keeps a set. */
4737
+ type YuwsFilterGroupMode = 'single' | 'multiple';
4738
+ /**
4739
+ * `options` feeds the group's combobox. A `yuwsFilterContent` template of the same id replaces that
4740
+ * combobox; `mode` then only states whether its value is a string or an array.
4741
+ */
4742
+ interface YuwsFilterGroupDto {
4743
+ readonly id: string;
4744
+ readonly label: string;
4745
+ readonly mode: YuwsFilterGroupMode;
4746
+ readonly options?: readonly YuwsFilterOptionDto[];
4747
+ }
4748
+ /** Value of one group: a string for `single` groups, an array for `multiple`. */
4749
+ type YuwsFilterValue = string | readonly string[];
4750
+ /** Selection keyed by `YuwsFilterGroupDto.id`. */
4751
+ type YuwsFilterSelection = Readonly<Record<string, YuwsFilterValue>>;
4752
+ /** A named selection the user saved; `id` is assigned by the consumer that persists it. */
4753
+ interface YuwsFilterSetDto {
4754
+ readonly id: string;
4755
+ readonly name: string;
4756
+ readonly selection: YuwsFilterSelection;
4757
+ }
4758
+ /** Payload of `setSaved`: the name the user typed and the selection applied at that moment. */
4759
+ interface YuwsFilterSetSaveDto {
4760
+ readonly name: string;
4761
+ readonly selection: YuwsFilterSelection;
4762
+ }
4763
+ /** Payload of `setRenamed`. */
4764
+ interface YuwsFilterSetRenameDto {
4765
+ readonly id: string;
4766
+ readonly name: string;
4767
+ }
4768
+ /** Texts of the saved-sets control and its dialog; the consumer translates them. */
4769
+ interface YuwsFilterSetLabels {
4770
+ readonly title: string;
4771
+ readonly empty: string;
4772
+ readonly save: string;
4773
+ readonly select: string;
4774
+ readonly none: string;
4775
+ readonly edit: string;
4776
+ readonly delete: string;
4777
+ readonly saveTitle: string;
4778
+ readonly renameTitle: string;
4779
+ readonly deleteTitle: string;
4780
+ readonly deleteMessage: (name: string) => string;
4781
+ readonly nameLabel: string;
4782
+ readonly confirm: string;
4783
+ readonly cancel: string;
4784
+ }
4785
+ /**
4786
+ * `title` names the filter row for assistive tech, `add` is the add-filter button, `remove` the
4787
+ * accessible name of the remove button of each active filter, `clearAll` the button that removes
4788
+ * every filter, and `empty` the text of a filter search with no match.
4789
+ */
4790
+ interface YuwsListToolbarFilterLabels {
4791
+ readonly title: string;
4792
+ readonly add: string;
4793
+ readonly remove: string;
4794
+ readonly clearAll: string;
4795
+ readonly empty: string;
4796
+ readonly sets?: YuwsFilterSetLabels;
4797
+ }
4798
+ interface YuwsListToolbarSearchLabels {
4799
+ readonly expand: string;
4800
+ readonly clear: string;
4801
+ }
4802
+ interface YuwsListToolbarColumnsLabels {
4803
+ readonly trigger: string;
4804
+ readonly placeholder: string;
4805
+ readonly empty: string;
4806
+ }
4807
+ type YuwsViewMode = 'list' | 'block';
4808
+ type YuwsListToolbarViewModeLabels = Readonly<Record<YuwsViewMode, string>>;
4809
+ /** ng-icon names of the view mode buttons; the consumer registers custom ones with `provideIcons`. */
4810
+ type YuwsListToolbarViewModeIcons = Readonly<Record<YuwsViewMode, string>>;
4811
+ interface YuwsListToolbarLabels {
4812
+ readonly filters: YuwsListToolbarFilterLabels;
4813
+ readonly search: YuwsListToolbarSearchLabels;
4814
+ readonly columns: YuwsListToolbarColumnsLabels;
4815
+ readonly export: string;
4816
+ readonly viewMode?: YuwsListToolbarViewModeLabels;
4817
+ }
4818
+
4819
+ /**
4820
+ * Template context of a `yuwsFilterContent` template.
4821
+ *
4822
+ * `$implicit`: The group the template renders; same as `let-group`.
4823
+ * `value`: Applied value of the group, `undefined` while it holds nothing.
4824
+ * `change`: Applies a new value to the group; `undefined` or an empty array clears it.
4825
+ */
4826
+ interface YuwsFilterContentContext {
4827
+ readonly $implicit: YuwsFilterGroupDto;
4828
+ readonly value: YuwsFilterValue | undefined;
4829
+ readonly change: (value: YuwsFilterValue | undefined) => void;
4830
+ }
4831
+ /**
4832
+ * Replaces the combobox of one active filter inside `<yuws-list-toolbar>` with projected markup; the
4833
+ * remove button stays after it. Apply it to an `<ng-template>` and pass the id of the group it
4834
+ * renders; that group needs no `options`.
4835
+ *
4836
+ * The template feeds the same applied selection as the comboboxes: calling `change` writes the value
4837
+ * under the group id, so removing, clearing and saved sets work without extra wiring.
4838
+ *
4839
+ * To match the library's filters, render a `yuw-combobox` with a `yuwComboboxTrigger` template that
4840
+ * reads the group label and the selected labels; the row squares its trailing edge and welds it to the
4841
+ * remove button.
4842
+ *
4843
+ * Usage:
4844
+ * ```html
4845
+ * <yuws-list-toolbar [filterGroups]="groups" [(selection)]="selection" [labels]="labels">
4846
+ * <ng-template yuwsFilterContent="customer" let-group let-value="value" let-change="change">
4847
+ * <yuw-combobox [options]="customers" [value]="value" [triggerAriaLabel]="group.label" (valueChange)="change($event)">
4848
+ * <ng-template yuwComboboxTrigger let-summary>
4849
+ * <span class="font-semibold">{{ group.label }}</span> {{ summary }}
4850
+ * </ng-template>
4851
+ * </yuw-combobox>
4852
+ * </ng-template>
4853
+ * </yuws-list-toolbar>
4854
+ * ```
4855
+ *
4856
+ * Inputs:
4857
+ * - `yuwsFilterContent`: Required string; id of the filter group this template renders.
4858
+ */
4859
+ declare class YuwsFilterContentDirective {
4860
+ readonly templateRef: TemplateRef<YuwsFilterContentContext>;
4861
+ readonly groupId: _angular_core.InputSignal<string>;
4862
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsFilterContentDirective, never>;
4863
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwsFilterContentDirective, "ng-template[yuwsFilterContent]", never, { "groupId": { "alias": "yuwsFilterContent"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
4864
+ }
4865
+
4866
+ /**
4867
+ * Toolbar of a list page: filters on the leading edge, search, export and column visibility on the
4868
+ * trailing one, and projected content after them. The trailing actions keep the room they need (the
4869
+ * search grows into it when expanded) and the filter row takes the rest, scrolling its active
4870
+ * filters horizontally with faded edges when they do not fit. Below `md` the active filters move to a
4871
+ * full-width second line, still a single scrolling row, and the trailing actions stay on the first.
4872
+ *
4873
+ * Each control renders only when its input is set: `filterGroups`, `searchPlaceholder`,
4874
+ * `showExport`, `hideableColumns`, `viewMode`. Setting `viewMode` adds a list/block switch bound
4875
+ * two-way to it (`viewModeChange` is the click listener); its names come from `labels.viewMode`. Saved filter sets need `filterSets` and `labels.filters.sets`;
4876
+ * the toolbar emits `setSaved`, `setRenamed` and `setDeleted` and the consumer persists them. `labels` holds every text and the consumer translates it;
4877
+ * `idleColor` is the tone of the filter row's outline controls (filters, add button, star). Each active
4878
+ * group renders a combobox opened from an outline button; a projected `<ng-template yuwsFilterContent="groupId">` replaces it (see
4879
+ * `YuwsFilterContentDirective`). `selection` may be set from outside at any time, e.g. restored from
4880
+ * IndexedDB, and the row shows a filter for every group it holds.
4881
+ *
4882
+ * Inputs:
4883
+ * - `filterGroups`: Filter groups the editor offers; the filter control renders only when set.
4884
+ * - `filterSets`: Saved filter sets; together with `labels.filters.sets` it enables the sets star.
4885
+ * - `filtersDisabled`: Disables every control of the filter row. Default is `false`.
4886
+ * - `hiddenColumns`: Two-way (`[(hiddenColumns)]`) ids of the columns currently hidden. Default is `[]`.
4887
+ * - `hideableColumns`: Options of the columns the user may hide; the columns button renders only when set.
4888
+ * - `idleColor`: `YuwColorDto` tone of the filter row's outline controls. Default is `'neutral'`.
4889
+ * - `labels`: Required `YuwsListToolbarLabels` with the consumer's translated text for every control.
4890
+ * - `search`: Two-way (`[(search)]`) text of the search field. Default is `''`.
4891
+ * - `searchPlaceholder`: Placeholder of the search field; the search renders only when set.
4892
+ * - `selection`: Two-way (`[(selection)]`) applied filter selection, values keyed by group id. Default is `{}`.
4893
+ * - `showExport`: Renders the export button. Default is `false`.
4894
+ * - `viewMode`: Two-way (`[(viewMode)]`) `YuwsViewMode` (`'list'` or `'block'`); the list/block switch renders only when set.
4895
+ * - `viewModeIcons`: Partial override of the switch icons by mode (ng-icon names, registered by the consumer with `provideIcons`). Defaults are `lucideList` and `lucideLayoutGrid`.
4896
+ *
4897
+ * Outputs:
4898
+ * - `exported`: Emits the `MouseEvent` of the export button click.
4899
+ * - `searched`: Emits the current search text on every keystroke and when it is cleared.
4900
+ */
4901
+ declare class YuwsListToolbarComponent {
4902
+ protected readonly filterContents: _angular_core.Signal<readonly YuwsFilterContentDirective[]>;
4903
+ readonly filterGroups: _angular_core.InputSignal<readonly YuwsFilterGroupDto[] | undefined>;
4904
+ readonly filtersDisabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
4905
+ readonly filterSets: _angular_core.InputSignal<readonly YuwsFilterSetDto[] | undefined>;
4906
+ readonly hiddenColumns: _angular_core.ModelSignal<string[]>;
4907
+ readonly hideableColumns: _angular_core.InputSignal<YuwComboboxOptionDto<unknown>[] | undefined>;
4908
+ readonly idleColor: _angular_core.InputSignal<YuwColorDto>;
4909
+ readonly labels: _angular_core.InputSignal<YuwsListToolbarLabels>;
4910
+ readonly search: _angular_core.ModelSignal<string>;
4911
+ readonly searchPlaceholder: _angular_core.InputSignal<string | undefined>;
4912
+ readonly selection: _angular_core.ModelSignal<Readonly<Record<string, yukit_web.YuwsFilterValue>>>;
4913
+ readonly showExport: _angular_core.InputSignalWithTransform<boolean, unknown>;
4914
+ readonly viewMode: _angular_core.ModelSignal<YuwsViewMode | undefined>;
4915
+ readonly viewModeIcons: _angular_core.InputSignal<Partial<Readonly<Record<YuwsViewMode, string>>> | undefined>;
4916
+ readonly exported: _angular_core.OutputEmitterRef<MouseEvent>;
4917
+ readonly searched: _angular_core.OutputEmitterRef<string>;
4918
+ readonly setDeleted: _angular_core.OutputEmitterRef<string>;
4919
+ readonly setRenamed: _angular_core.OutputEmitterRef<YuwsFilterSetRenameDto>;
4920
+ readonly setSaved: _angular_core.OutputEmitterRef<YuwsFilterSetSaveDto>;
4921
+ protected readonly isMobile: _angular_core.Signal<boolean>;
4922
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsListToolbarComponent, never>;
4923
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwsListToolbarComponent, "yuws-list-toolbar", never, { "filterGroups": { "alias": "filterGroups"; "required": false; "isSignal": true; }; "filtersDisabled": { "alias": "filtersDisabled"; "required": false; "isSignal": true; }; "filterSets": { "alias": "filterSets"; "required": false; "isSignal": true; }; "hiddenColumns": { "alias": "hiddenColumns"; "required": false; "isSignal": true; }; "hideableColumns": { "alias": "hideableColumns"; "required": false; "isSignal": true; }; "idleColor": { "alias": "idleColor"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": true; "isSignal": true; }; "search": { "alias": "search"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; "showExport": { "alias": "showExport"; "required": false; "isSignal": true; }; "viewMode": { "alias": "viewMode"; "required": false; "isSignal": true; }; "viewModeIcons": { "alias": "viewModeIcons"; "required": false; "isSignal": true; }; }, { "hiddenColumns": "hiddenColumnsChange"; "search": "searchChange"; "selection": "selectionChange"; "viewMode": "viewModeChange"; "exported": "exported"; "searched": "searched"; "setDeleted": "setDeleted"; "setRenamed": "setRenamed"; "setSaved": "setSaved"; }, ["filterContents"], ["*"], true, never>;
4924
+ }
4925
+
4926
+ /**
4927
+ * Walks a signal form with Enter. An invalid current field only shows its error; otherwise focus moves to the next
4928
+ * invalid field, wrapping around; with none left the form is submitted through `submit`, which runs its
4929
+ * `submission.action`. Disabled, hidden and read-only fields never hold the form back. One delegated listener on the
4930
+ * `<form>`, reading the fields from `FormField` at the moment of the key press, so it works with any control bound with
4931
+ * `[formField]`; focus goes to the first focusable descendant because `yuw-*` hosts are `display: contents`.
4932
+ *
4933
+ * Usage:
4934
+ * ```html
4935
+ * <form [formRoot]="form" yuwsAdvanceOnEnter>...</form>
4936
+ * ```
4937
+ */
4938
+ declare class YuwsAdvanceOnEnterDirective {
4939
+ private readonly _root;
4940
+ private readonly _fields;
4941
+ protected onEnter(event: Event): void;
4942
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsAdvanceOnEnterDirective, never>;
4943
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwsAdvanceOnEnterDirective, "form[formRoot][yuwsAdvanceOnEnter]", never, {}, {}, ["_fields"], never, true, never>;
4944
+ }
4945
+
4946
+ /**
4947
+ * Shows the title of a `yuws-page-header` as a text skeleton while it is pending, so a page whose title is entity data
4948
+ * renders a placeholder of the same size instead of an empty gap. The height matches the header's `text-2xl` line.
4949
+ *
4950
+ * Usage:
4951
+ * ```html
4952
+ * <yuws-page-header [title]="title()" [yuwsTitleSkeleton]="!title()" />
4953
+ * ```
4954
+ */
4955
+ declare class YuwsTitleSkeletonDirective {
4956
+ readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
4957
+ protected readonly skeletonClass = "[&_h1]:block [&_h1]:h-8 [&_h1]:w-56 [&_h1]:max-w-full [&_h1]:rounded-md [&_h1]:bg-muted [&_h1]:motion-safe:animate-pulse";
4958
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwsTitleSkeletonDirective, never>;
4959
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwsTitleSkeletonDirective, "yuws-page-header[yuwsTitleSkeleton]", never, { "loading": { "alias": "yuwsTitleSkeleton"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
4960
+ }
4961
+
4962
+ export { DATATABLE_ALIGN_CLASS, DATATABLE_LAYOUT_CLASS, DATATABLE_WRAP_CONTENT_CLASS, YUWS_NO_DATA_PLACEHOLDER, YUW_DATATABLE_FEATURES, YUW_DATATABLE_WRAP_MIN_WIDTH, YUW_PASSWORD_REVEAL_STATES, YUW_SIDEBAR_RAIL_ICON_SIZE, YUW_SIDEBAR_RAIL_PADDING, YUW_SIDEBAR_RAIL_WIDTH, YuwAccordion, YuwAccordionContentComponent, YuwAccordionImports, YuwAccordionItem, YuwAccordionTriggerComponent, YuwActionsCellComponent, YuwAlertActionDirective, YuwAlertComponent, YuwAlertDescriptionDirective, YuwAlertDialogComponent, YuwAlertDialogMediaDirective, YuwAlertDialogTriggerDirective, YuwAlertImports, YuwAlertTitleDirective, YuwAttachmentActionDirective, YuwAttachmentActionsDirective, YuwAttachmentContentDirective, YuwAttachmentDescriptionDirective, YuwAttachmentDirective, YuwAttachmentGroupDirective, YuwAttachmentMediaDirective, YuwAttachmentTitleDirective, YuwAttachmentTriggerDirective, YuwAvatarComponent, YuwBadgeComponent, YuwBreadcrumbComponent, YuwBreadcrumbTrailService, YuwButtonComponent, YuwButtonGroupComponent, YuwButtonGroupContentDirective, YuwCaptionDirective, YuwCardActionDirective, YuwCardContentDirective, YuwCardDescriptionDirective, YuwCardDirective, YuwCardFooterDirective, YuwCardHeaderDirective, YuwCardImports, YuwCardTitleDirective, YuwCheckboxComponent, YuwClassDirective, YuwComboboxComponent, YuwComboboxItemDirective, YuwComboboxTriggerButtonDirective, YuwComboboxTriggerDirective, YuwCommandComponent, YuwCommandDialogComponent, YuwContextMenuCheckboxDirective, YuwContextMenuCheckboxIndicatorComponent, YuwContextMenuDirective, YuwContextMenuGroupDirective, YuwContextMenuImports, YuwContextMenuItemDirective, YuwContextMenuLabelDirective, YuwContextMenuRadioDirective, YuwContextMenuRadioIndicatorComponent, YuwContextMenuSeparatorDirective, YuwContextMenuShortcutDirective, YuwContextMenuSubDirective, YuwContextMenuSubIndicatorComponent, YuwContextMenuSubTriggerDirective, YuwContextMenuTriggerDirective, YuwDatatableComponent, YuwDatatablePaginationDirective, YuwDatatableRowSelect, YuwDatepickerComponent, YuwDialogCloseDirective, YuwDialogComponent, YuwDialogFooterDirective, YuwDialogImports, YuwDialogTriggerDirective, YuwEmptyContentDirective, YuwEmptyDescriptionDirective, YuwEmptyDirective, YuwEmptyHeaderDirective, YuwEmptyImports, YuwEmptyMediaDirective, YuwEmptyTitleDirective, YuwFieldBase, YuwInputAddonImports, YuwInputComponent, YuwInputFileComponent, YuwInputOtpComponent, YuwItemActionsDirective, YuwItemContentDirective, YuwItemDescriptionDirective, YuwItemDirective, YuwItemFooterDirective, YuwItemGroupDirective, YuwItemHeaderDirective, YuwItemImports, YuwItemMediaDirective, YuwItemSeparatorDirective, YuwItemTitleDirective, YuwLabel, YuwLeftAddonDirective, YuwMouseScrollXDirective, YuwMouseScrollYDirective, YuwPaginationComponent, YuwPasswordInputComponent, YuwPopoverComponent, YuwPopoverTriggerDirective, YuwRadioGroupComponent, YuwRightAddonDirective, YuwSearchInputComponent, YuwSheetCloseDirective, YuwSheetComponent, YuwSheetFooterDirective, YuwSheetHeaderDirective, YuwSheetImports, YuwSheetTriggerDirective, YuwSidebarComponent, YuwSidebarContentDirective, YuwSidebarContentExtraDirective, YuwSidebarFooterDirective, YuwSidebarFooterExtraDirective, YuwSidebarGroupContentDirective, YuwSidebarGroupDirective, YuwSidebarGroupLabelDirective, YuwSidebarHeaderDirective, YuwSidebarInsetDirective, YuwSidebarMenuAvatarButtonDirective, YuwSidebarMenuBadgeDirective, YuwSidebarMenuButtonDirective, YuwSidebarMenuDirective, YuwSidebarMenuItemDirective, YuwSidebarMenuSubButtonDirective, YuwSidebarMenuSubDirective, YuwSidebarMenuSubItemDirective, YuwSidebarRailDirective, YuwSidebarRailService, YuwSidebarSeparatorDirective, YuwSidebarSubmenuService, YuwSidebarTriggerComponent, YuwSidebarWrapperDirective, YuwSkeletonDirective, YuwSpinnerComponent, YuwSwitchComponent, YuwTBodyDirective, YuwTFootDirective, YuwTHeadDirective, YuwTabContentDirective, YuwTabPanelDirective, YuwTableContainerDirective, YuwTableDirective, YuwTableImports, YuwTabsComponent, YuwTdDirective, YuwTextFieldBase, YuwTextareaComponent, YuwThDirective, YuwToasterComponent, YuwTooltipDirective, YuwTrDirective, YuwValueAccessorBase, YuwsActiveStatusCellComponent, YuwsAdvanceOnEnterDirective, YuwsAvatarNameCellComponent, YuwsCardGridComponent, YuwsCardGridItemComponent, YuwsClampedTextCellComponent, YuwsConfirmDialogComponent, YuwsCopyButtonComponent, YuwsFilterComboboxComponent, YuwsFilterContentDirective, YuwsFlagCellComponent, YuwsFormSheetComponent, YuwsIconActionCellComponent, YuwsImageCellComponent, YuwsImageFieldComponent, YuwsImageUploadComponent, YuwsLinkCellComponent, YuwsListPaginationComponent, YuwsListTableComponent, YuwsListToolbarComponent, YuwsPageHeaderComponent, YuwsPageSizeComponent, YuwsStatusToggleCellComponent, YuwsTitleSkeletonDirective, buildInputOtpGroups, buildYuwActionsColumn, buildYuwsActiveStatusColumn, buildYuwsDateTimeColumn, buildYuwsIconActionColumn, buildYuwsOptionalTextColumn, buildYuwsStatusToggleColumn, cn, createPagedList, createYuwsSheetEditor, datatableCellVariants, datatableContainerVariants, datatableHeadVariants, datatableHeaderCellVariants, datatableRowVariants, getPaginationRange, provideValueAccessor, totalInputOtpLength, yuwCommandDefaultFilter, yuwsInitialsOf, yuwsMediaQuerySignal, yuwsPendingRowClass, yuwsReadFileAsDataUrl };
4963
+ export type { YuwAlertDialogSizeDto, YuwAlertVariantDto, YuwAvatarGroupItemDto, YuwAvatarSizeDto, YuwBreadcrumbCrumb, YuwBreadcrumbItemDto, YuwBreadcrumbRouteData, YuwButtonGroupClickDto, YuwButtonGroupItemDto, YuwColorDto, YuwComboboxItemContext, YuwComboboxOptionDto, YuwComboboxTriggerContext, YuwComboboxValue, YuwCommandGroupDto, YuwCommandItemDto, YuwDatatableAlign, YuwDatatableAppearanceDto, YuwDatatableColumnDef, YuwDatatableColumnMeta, YuwDatatableFeatures, YuwDatatableRowClass, YuwDatepickerModeDto, YuwDatepickerValue, YuwFieldSizeDto, YuwInputFileVariantDto, YuwInputModeDto, YuwInputOtpGroupDto, YuwInputOtpModeDto, YuwInputTypeDto, YuwPageQuery, YuwPageRange, YuwPageSort, YuwPagedList, YuwPagedListOptions, YuwPaginationRangeItem, YuwPaginationSizeDto, YuwPasswordRevealStateDto, YuwPopoverAlignDto, YuwRadioOptionDto, YuwSearchInputCollapseFromDto, YuwSheetScrollStrategyDto, YuwSheetSideDto, YuwSidebarAvatarDto, YuwSidebarCollapsibleDto, YuwSidebarContentDto, YuwSidebarGroupDto, YuwSidebarItemClickDto, YuwSidebarItemDto, YuwSidebarSideDto, YuwSidebarSubItemDto, YuwSidebarVariantDto, YuwSwitchSizeDto, YuwTabItemDto, YuwTabsActivationModeDto, YuwTabsOrientationDto, YuwTabsVariantDto, YuwTextFieldContract, YuwToasterPositionDto, YuwToasterThemeDto, YuwTooltipPositionDto, YuwsAvatarNameCellSize, YuwsConfirmationState, YuwsFilterContentContext, YuwsFilterGroupDto, YuwsFilterGroupMode, YuwsFilterOptionDto, YuwsFilterSelection, YuwsFilterSetDto, YuwsFilterSetLabels, YuwsFilterSetRenameDto, YuwsFilterSetSaveDto, YuwsFilterValue, YuwsFormSheetLabels, YuwsIconActionColumn, YuwsImageCellSize, YuwsListPaginationLabels, YuwsListToolbarColumnsLabels, YuwsListToolbarFilterLabels, YuwsListToolbarLabels, YuwsListToolbarSearchLabels, YuwsListToolbarViewModeIcons, YuwsListToolbarViewModeLabels, YuwsPageSizeLabels, YuwsSheetEditor, YuwsStateLabels, YuwsStatusToggleColumn, YuwsTextColumnOptions, YuwsViewMode };