yukit-web 0.0.25 → 0.0.26

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.
@@ -1,7 +1,8 @@
1
1
  import { ClassValue } from 'clsx';
2
2
  import * as _angular_core from '@angular/core';
3
- import { ModelSignal, InputSignal, InputSignalWithTransform, Type, Provider, TemplateRef, OnInit, Signal } from '@angular/core';
3
+ import { ModelSignal, Type, Provider, InputSignal, InputSignalWithTransform, TemplateRef, WritableSignal, Signal, OnInit } from '@angular/core';
4
4
  import { ControlValueAccessor } from '@angular/forms';
5
+ import { SortingState, PaginationState, columnFilteringFeature, columnVisibilityFeature, rowPaginationFeature, rowSelectionFeature, rowSortingFeature, RowData, ColumnDef, ColumnFiltersState, ColumnVisibilityState, RowSelectionState } from '@tanstack/table-core';
5
6
  import { ButtonVariants } from 'yukit-web/helm/button';
6
7
  import * as i1 from 'yukit-web/helm/badge';
7
8
  import * as yukit_web from 'yukit-web';
@@ -13,7 +14,6 @@ import * as i1$3 from 'yukit-web/helm/empty';
13
14
  import * as i1$4 from 'yukit-web/helm/context-menu';
14
15
  import * as i2 from 'yukit-web/helm/dropdown-menu';
15
16
  import * as i1$5 from 'yukit-web/helm/table';
16
- import { columnFilteringFeature, columnVisibilityFeature, rowPaginationFeature, rowSelectionFeature, rowSortingFeature, RowData, ColumnDef, ColumnFiltersState, ColumnVisibilityState, PaginationState, RowSelectionState, SortingState } from '@tanstack/table-core';
17
17
  import * as class_variance_authority_types from 'class-variance-authority/types';
18
18
  import * as _tanstack_angular_table from '@tanstack/angular-table';
19
19
  import * as i1$6 from 'yukit-web/helm/item';
@@ -74,23 +74,6 @@ declare class YuwClassDirective {
74
74
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwClassDirective, "[yuwClass]", never, { "yuwClass": { "alias": "yuwClass"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
75
75
  }
76
76
 
77
- type YuwInputTypeDto = 'text' | 'email' | 'tel' | 'url' | 'number';
78
- type YuwInputModeDto = 'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url';
79
- type YuwFieldSizeDto = 'default' | 'xs' | 'sm' | 'lg';
80
- interface YuwTextFieldContract {
81
- readonly value: ModelSignal<string>;
82
- readonly inputId: InputSignal<string | undefined>;
83
- readonly placeholder: InputSignal<string | undefined>;
84
- readonly disabled: InputSignalWithTransform<boolean, unknown>;
85
- readonly readonly: InputSignalWithTransform<boolean, unknown>;
86
- readonly required: InputSignalWithTransform<boolean, unknown>;
87
- readonly invalid: InputSignalWithTransform<boolean, unknown>;
88
- readonly helperText: InputSignal<string | undefined>;
89
- readonly errorText: InputSignal<string | undefined>;
90
- readonly name: InputSignal<string | undefined>;
91
- readonly autocomplete: InputSignal<string | undefined>;
92
- }
93
-
94
77
  /**
95
78
  * Registers a component as a form control, so `formControlName`/`formControl`/`ngModel` bind to it.
96
79
  *
@@ -145,35 +128,238 @@ declare abstract class YuwValueAccessorBase<T> implements ControlValueAccessor {
145
128
  }
146
129
 
147
130
  /**
148
- * Shared surface of the single-value text controls (`yuw-input`, `yuw-password-input`,
149
- * `yuw-textarea`, `yuw-search-input`).
131
+ * Shared surface of every string-valued field that renders helper and error text under itself
132
+ * (`yuw-input-otp` and, through `YuwTextFieldBase`, the four text controls).
150
133
  *
151
- * Owns every input of `YuwTextFieldContract` plus `class` and `committed`, so the four controls
152
- * can't drift apart — the Liskov rule in `AGENTS.md`: same-role components share one input
153
- * contract. Anything only some of them honor (`maxlength`, `size`, `enterPressed`, …) stays on the
154
- * component, never here.
134
+ * Holds only what all of them honor: the value, the control `id` with its generated fallback, the
135
+ * invalid flag, the feedback texts and the `class` passthrough. Anything a subset can't support —
136
+ * `placeholder`, `readonly`, `required`, `name`, `autocomplete`, which `brn-input-otp` doesn't
137
+ * forward to its native input — lives one level down, per the Liskov rule in `AGENTS.md`.
155
138
  *
156
139
  * Subclasses provide `_autoId`, the fallback `id` used when the consumer sets no `inputId`.
157
140
  */
158
- declare abstract class YuwTextFieldBase extends YuwValueAccessorBase<string> implements YuwTextFieldContract {
159
- readonly autocomplete: _angular_core.InputSignal<string | undefined>;
141
+ declare abstract class YuwFieldBase extends YuwValueAccessorBase<string> {
160
142
  readonly errorText: _angular_core.InputSignal<string | undefined>;
161
143
  readonly helperText: _angular_core.InputSignal<string | undefined>;
162
144
  readonly inputId: _angular_core.InputSignal<string | undefined>;
163
145
  readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
164
- readonly name: _angular_core.InputSignal<string | undefined>;
165
- readonly placeholder: _angular_core.InputSignal<string | undefined>;
166
- readonly readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
167
- readonly required: _angular_core.InputSignalWithTransform<boolean, unknown>;
168
146
  readonly userClass: _angular_core.InputSignal<string>;
169
147
  readonly value: _angular_core.ModelSignal<string>;
170
- readonly committed: _angular_core.OutputEmitterRef<string>;
171
148
  protected abstract readonly _autoId: string;
172
149
  protected readonly _inputId: _angular_core.Signal<string>;
173
150
  protected _emptyValue(): string;
151
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwFieldBase, never>;
152
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwFieldBase, never, never, { "errorText": { "alias": "errorText"; "required": false; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
153
+ }
154
+
155
+ type YuwInputTypeDto = 'text' | 'email' | 'tel' | 'url' | 'number';
156
+ type YuwInputModeDto = 'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url';
157
+ type YuwFieldSizeDto = 'default' | 'xs' | 'sm' | 'lg';
158
+ interface YuwTextFieldContract {
159
+ readonly value: ModelSignal<string>;
160
+ readonly inputId: InputSignal<string | undefined>;
161
+ readonly placeholder: InputSignal<string | undefined>;
162
+ readonly disabled: InputSignalWithTransform<boolean, unknown>;
163
+ readonly readonly: InputSignalWithTransform<boolean, unknown>;
164
+ readonly required: InputSignalWithTransform<boolean, unknown>;
165
+ readonly invalid: InputSignalWithTransform<boolean, unknown>;
166
+ readonly helperText: InputSignal<string | undefined>;
167
+ readonly errorText: InputSignal<string | undefined>;
168
+ readonly name: InputSignal<string | undefined>;
169
+ readonly autocomplete: InputSignal<string | undefined>;
170
+ }
171
+
172
+ /**
173
+ * Shared surface of the single-value text controls (`yuw-input`, `yuw-password-input`,
174
+ * `yuw-textarea`, `yuw-search-input`).
175
+ *
176
+ * Adds to `YuwFieldBase` the native text-input attributes all four forward, plus `committed`, so
177
+ * the controls can't drift apart — the Liskov rule in `AGENTS.md`: same-role components share one
178
+ * input contract. Anything only some of them honor (`maxlength`, `size`, `enterPressed`, …) stays
179
+ * on the component, never here.
180
+ */
181
+ declare abstract class YuwTextFieldBase extends YuwFieldBase implements YuwTextFieldContract {
182
+ readonly autocomplete: _angular_core.InputSignal<string | undefined>;
183
+ readonly name: _angular_core.InputSignal<string | undefined>;
184
+ readonly placeholder: _angular_core.InputSignal<string | undefined>;
185
+ readonly readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
186
+ readonly required: _angular_core.InputSignalWithTransform<boolean, unknown>;
187
+ readonly committed: _angular_core.OutputEmitterRef<string>;
174
188
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwTextFieldBase, never>;
175
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwTextFieldBase, never, never, { "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "errorText": { "alias": "errorText"; "required": false; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "committed": "committed"; }, never, never, true, never>;
189
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwTextFieldBase, never, never, { "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; }, { "committed": "committed"; }, never, never, true, never>;
190
+ }
191
+
192
+ /**
193
+ * A single entry in `<yuw-combobox>`'s `options` input.
194
+ *
195
+ * `label` is data the parent supplies, not a component-owned default — the same rule
196
+ * `YuwSelectOptionDto` and `YuwBreadcrumbItemDto` follow. It doubles as the text the search
197
+ * filters on and the text shown in the trigger/chip once selected, so it must be the
198
+ * already-translated string.
199
+ *
200
+ * `data` carries whatever the consumer needs when rendering a custom item template
201
+ * (`*yuwComboboxItem`) — an avatar URL, a count, a nested entity. The component itself never
202
+ * reads it.
203
+ */
204
+ interface YuwComboboxOptionDto<TData = unknown> {
205
+ value: string;
206
+ label: string;
207
+ disabled?: boolean;
208
+ data?: TData;
209
+ }
210
+
211
+ /** The `let-` context of a `*yuwComboboxItem` template. `$implicit` is the option itself, so
212
+ * `let-option` works; `selected` is passed alongside because an item that renders its own
213
+ * markup loses the default check glyph and often needs to show that state some other way. */
214
+ interface YuwComboboxItemContext<TData = unknown> {
215
+ $implicit: YuwComboboxOptionDto<TData>;
216
+ option: YuwComboboxOptionDto<TData>;
217
+ selected: boolean;
218
+ }
219
+ /**
220
+ * Structural directive for custom option item templates in `yuw-combobox`.
221
+ *
222
+ * Exposes the option object (`let-option`) and selection state (`let-selected="selected"`).
223
+ *
224
+ * Usage:
225
+ * ```html
226
+ * <yuw-combobox [options]="users" [(value)]="userId">
227
+ * <ng-template yuwComboboxItem let-option let-selected="selected">
228
+ * <img [src]="option.data.avatar" /> {{ option.label }}
229
+ * </ng-template>
230
+ * </yuw-combobox>
231
+ * ```
232
+ */
233
+ declare class YuwComboboxItemDirective<TData = unknown> {
234
+ readonly templateRef: TemplateRef<YuwComboboxItemContext<TData>>;
235
+ readonly typeOf: _angular_core.InputSignal<YuwComboboxOptionDto<TData>[] | undefined>;
236
+ static ngTemplateContextGuard<TData>(_directive: YuwComboboxItemDirective<TData>, _context: unknown): _context is YuwComboboxItemContext<TData>;
237
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwComboboxItemDirective<any>, never>;
238
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwComboboxItemDirective<any>, "[yuwComboboxItem]", never, { "typeOf": { "alias": "yuwComboboxItemTypeOf"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
239
+ }
240
+
241
+ type YuwComboboxValue = string | string[] | undefined;
242
+ /**
243
+ * Searchable select combobox component supporting single or multiple selections, search filtering, and custom option rendering.
244
+ *
245
+ * Inputs / Models:
246
+ * - `options`: Required array of option items (`YuwComboboxOptionDto<TData>[]`).
247
+ * - `value`: Two-way selected value(s) (`string` for single mode, `string[]` for multiple mode).
248
+ * Emits `valueChange` on every selection change.
249
+ * - `size`: Control height (`'default'` 40px, `'xs'` 28px, `'sm'` 36px, `'lg'` 44px), matching the
250
+ * `<yuw-button>` size of the same name. Applies to whichever control shape renders; the popover
251
+ * panel and its inner search field keep their own compact sizing.
252
+ * - `multiple`: Enables multi-selection mode with removable tags/chips.
253
+ * - `disabled`: Disables combobox interaction.
254
+ * - `placeholder`: Placeholder text when no option is selected.
255
+ * - `searchPlaceholder`: Placeholder text inside the search field popover.
256
+ * - `emptyText`: Message text displayed when search yields no matching options.
257
+ * - `search`: Two-way search filter query string.
258
+ * - `triggerAriaLabel`: Required accessible name for the icon-only popover trigger (the chevron
259
+ * button). User-facing text — the consuming app is responsible for providing it translated.
260
+ * Only rendered by the single-select input shape, but required in every mode so switching
261
+ * modes never silently drops the label.
262
+ * - `clearAriaLabel`: When set, the clear button is shown on the single-selection control and
263
+ * this is its accessible name; when absent, there is no clear button. One input, one source of
264
+ * truth. User-facing text — the consuming app is responsible for providing it translated.
265
+ * - `inputId`: HTML `id` for the focusable control (the search input, or the trigger button when
266
+ * `readonlyTrigger` is set), enabling external `<label for="...">` association.
267
+ * - `readonlyTrigger`: Renders control as a button showing selected label, placing search input inside popover.
268
+ * - `invalid`: Forces invalid styling.
269
+ *
270
+ * `multiple` takes precedence over `readonlyTrigger`: when both are set the multi-select
271
+ * chips shape renders and `readonlyTrigger` is ignored.
272
+ *
273
+ * Usage:
274
+ * ```html
275
+ * <yuw-combobox [options]="userOptions" [(value)]="selectedUser" placeholder="Select user..."
276
+ * triggerAriaLabel="Toggle options" clearAriaLabel="Clear selection" />
277
+ * <yuw-combobox [options]="categoryOptions" [(value)]="selectedCategories" multiple
278
+ * triggerAriaLabel="Toggle options" />
279
+ * ```
280
+ */
281
+ declare class YuwComboboxComponent<TData = unknown> extends YuwValueAccessorBase<YuwComboboxValue> {
282
+ private readonly _panel;
283
+ protected readonly itemTemplate: _angular_core.Signal<YuwComboboxItemDirective<TData> | undefined>;
284
+ readonly clearAriaLabel: _angular_core.InputSignal<string | undefined>;
285
+ readonly emptyText: _angular_core.InputSignal<string | undefined>;
286
+ readonly inputId: _angular_core.InputSignal<string | undefined>;
287
+ readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
288
+ readonly multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
289
+ readonly options: _angular_core.InputSignal<YuwComboboxOptionDto<TData>[]>;
290
+ readonly placeholder: _angular_core.InputSignal<string | undefined>;
291
+ readonly readonlyTrigger: _angular_core.InputSignalWithTransform<boolean, unknown>;
292
+ readonly search: _angular_core.ModelSignal<string>;
293
+ readonly searchPlaceholder: _angular_core.InputSignal<string | undefined>;
294
+ readonly size: _angular_core.InputSignal<YuwFieldSizeDto>;
295
+ readonly triggerAriaLabel: _angular_core.InputSignal<string>;
296
+ readonly value: _angular_core.ModelSignal<YuwComboboxValue>;
297
+ protected readonly _focusSelectors: string[];
298
+ private readonly _generatedId;
299
+ protected readonly _itemToString: (value: string) => string;
300
+ protected readonly _chipsClass: _angular_core.Signal<string>;
301
+ protected readonly _clearVisible: _angular_core.Signal<boolean>;
302
+ protected readonly _controlId: _angular_core.Signal<string>;
303
+ protected readonly _fieldClass: _angular_core.Signal<string>;
304
+ private readonly _labelByValue;
305
+ protected readonly _multipleValue: _angular_core.Signal<string[]>;
306
+ protected readonly _selectedChips: _angular_core.Signal<{
307
+ value: string;
308
+ label: string;
309
+ }[]>;
310
+ protected readonly _selectedValues: _angular_core.Signal<Set<string>>;
311
+ protected readonly _singleValue: _angular_core.Signal<string | undefined>;
312
+ protected readonly _triggerClass: _angular_core.Signal<string>;
313
+ protected _emptyValue(): YuwComboboxValue;
314
+ protected _onFocusOut(event: FocusEvent): void;
315
+ protected onValueChange(next: YuwComboboxValue | null): void;
316
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwComboboxComponent<any>, never>;
317
+ 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; }; "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>;
318
+ }
319
+
320
+ interface YuwPageSort {
321
+ field: string;
322
+ direction: 'asc' | 'desc';
323
+ }
324
+ /** Question a paged list asks its data source; `Filters` is the consumer's own filter shape. */
325
+ interface YuwPageQuery<Filters> {
326
+ offset: number;
327
+ limit: number;
328
+ search: string;
329
+ filters: Filters;
330
+ sort?: YuwPageSort;
331
+ }
332
+ interface YuwPageRange {
333
+ start: number;
334
+ end: number;
335
+ total: number;
176
336
  }
337
+ interface YuwPagedListOptions<Filters> {
338
+ filters: Signal<Filters>;
339
+ total: Signal<number>;
340
+ load: (query: YuwPageQuery<Filters>) => void;
341
+ pageSize?: number;
342
+ }
343
+ /** `page` and `goToPage` count from 1, like `yuw-pagination`; `pagination` from 0, like `yuw-datatable`. */
344
+ interface YuwPagedList<Filters> {
345
+ readonly searchTerm: WritableSignal<string>;
346
+ readonly pageSize: WritableSignal<YuwComboboxValue>;
347
+ readonly pageSizeOptions: YuwComboboxOptionDto[];
348
+ readonly sorting: WritableSignal<SortingState>;
349
+ readonly pagination: WritableSignal<PaginationState>;
350
+ readonly query: Signal<YuwPageQuery<Filters>>;
351
+ readonly page: Signal<number>;
352
+ readonly totalPages: Signal<number>;
353
+ readonly range: Signal<YuwPageRange>;
354
+ goToPage(page: number): void;
355
+ }
356
+
357
+ /**
358
+ * State of a list paged at the source and the query derived from it. Changing search, filters,
359
+ * sorting or size returns to the first page within the same query; a total below the current page
360
+ * steps back to the last existing one. Must be created in an injection context.
361
+ */
362
+ declare function createPagedList<Filters>(options: YuwPagedListOptions<Filters>): YuwPagedList<Filters>;
177
363
 
178
364
  type YuwColorDto = 'primary' | 'secondary' | 'destructive' | 'success' | 'warning' | 'info' | 'muted' | 'violet';
179
365
 
@@ -228,12 +414,12 @@ declare class YuwButtonComponent {
228
414
  readonly transparent: _angular_core.InputSignalWithTransform<boolean, unknown>;
229
415
  readonly type: _angular_core.InputSignal<"button" | "submit" | "reset">;
230
416
  readonly userClass: _angular_core.InputSignal<string>;
231
- readonly variant: _angular_core.InputSignal<"default" | "link" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined>;
417
+ readonly variant: _angular_core.InputSignal<"link" | "default" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined>;
232
418
  readonly yuwDropdownMenuTrigger: _angular_core.InputSignal<TemplateRef<unknown> | undefined>;
233
419
  readonly clicked: _angular_core.OutputEmitterRef<MouseEvent>;
234
420
  protected readonly _animationDisabled: _angular_core.Signal<boolean>;
235
421
  protected readonly _btnClass: _angular_core.Signal<string>;
236
- protected readonly _effectiveVariant: _angular_core.Signal<"default" | "link" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined>;
422
+ protected readonly _effectiveVariant: _angular_core.Signal<"link" | "default" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined>;
237
423
  protected onClick(event: MouseEvent): void;
238
424
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwButtonComponent, never>;
239
425
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwButtonComponent, "yuw-button", never, { "animationDisabled": { "alias": "animationDisabled"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "target": { "alias": "target"; "required": false; "isSignal": true; }; "transparent": { "alias": "transparent"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "yuwDropdownMenuTrigger": { "alias": "yuwDropdownMenuTrigger"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, never, ["*", "*"], true, never>;
@@ -346,14 +532,14 @@ declare class YuwButtonGroupComponent {
346
532
  readonly color: _angular_core.InputSignal<YuwColorDto>;
347
533
  readonly orientation: _angular_core.InputSignal<"horizontal" | "vertical">;
348
534
  readonly selectedColor: _angular_core.InputSignal<YuwColorDto | undefined>;
349
- readonly selectedVariant: _angular_core.InputSignal<"default" | "link" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined>;
535
+ readonly selectedVariant: _angular_core.InputSignal<"link" | "default" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined>;
350
536
  readonly size: _angular_core.InputSignal<"default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined>;
351
- readonly variant: _angular_core.InputSignal<"default" | "link" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined>;
537
+ readonly variant: _angular_core.InputSignal<"link" | "default" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined>;
352
538
  readonly buttonClicked: _angular_core.OutputEmitterRef<YuwButtonGroupClickDto>;
353
539
  protected readonly _resolved: _angular_core.Signal<{
354
540
  interactive: boolean;
355
541
  template: _angular_core.TemplateRef<unknown> | undefined;
356
- variant: "default" | "link" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined;
542
+ variant: "link" | "default" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined;
357
543
  size: "default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
358
544
  color: YuwColorDto;
359
545
  transparent: boolean;
@@ -417,7 +603,7 @@ declare class YuwBadgeComponent {
417
603
  readonly color: _angular_core.InputSignal<YuwColorDto>;
418
604
  readonly dot: _angular_core.InputSignalWithTransform<boolean, unknown>;
419
605
  readonly removeLabel: _angular_core.InputSignal<string | undefined>;
420
- readonly variant: _angular_core.InputSignal<"default" | "link" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined>;
606
+ readonly variant: _angular_core.InputSignal<"link" | "default" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined>;
421
607
  readonly removed: _angular_core.OutputEmitterRef<void>;
422
608
  protected readonly dotClass: _angular_core.Signal<"" | "size-4 p-0">;
423
609
  protected readonly removeClass: _angular_core.Signal<string>;
@@ -456,6 +642,33 @@ declare class YuwBreadcrumbComponent {
456
642
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwBreadcrumbComponent, "yuw-breadcrumb", never, { "ariaLabel": { "alias": "ariaLabel"; "required": true; "isSignal": true; }; "items": { "alias": "items"; "required": true; "isSignal": true; }; "separator": { "alias": "separator"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
457
643
  }
458
644
 
645
+ /**
646
+ * A crumb declared in a route's `data.breadcrumb`. `labelKey` is an opaque key the consumer
647
+ * resolves; `label` is final text and wins over it. A crumb without `href` is plain text.
648
+ */
649
+ interface YuwBreadcrumbCrumb {
650
+ readonly labelKey?: string;
651
+ readonly label?: string;
652
+ readonly href?: string;
653
+ }
654
+ /** Each route declares its full trail, so a page's breadcrumb reads in one place. */
655
+ interface YuwBreadcrumbRouteData {
656
+ readonly breadcrumb: readonly YuwBreadcrumbCrumb[];
657
+ }
658
+
659
+ /**
660
+ * Deepest `data.breadcrumb` along the primary outlet, so a child route overrides its parent. The
661
+ * walk starts at `router.routerState.root` because, as a root service, this is built by whichever
662
+ * routed component asks first, whose own route is not the tree's root.
663
+ */
664
+ declare class YuwBreadcrumbTrailService {
665
+ private readonly router;
666
+ readonly crumbs: _angular_core.Signal<readonly YuwBreadcrumbCrumb[]>;
667
+ private resolveDeepestTrail;
668
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwBreadcrumbTrailService, never>;
669
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<YuwBreadcrumbTrailService>;
670
+ }
671
+
459
672
  /**
460
673
  * Sizes accepted by `<yuw-pagination>`'s `size` input. Mirrors the helm button sizes so the
461
674
  * public API doesn't leak the helm's `ButtonVariants` type.
@@ -503,132 +716,60 @@ type YuwPaginationRangeItem = number | 'ellipsis';
503
716
  */
504
717
  declare function getPaginationRange(page: number, totalPages: number): YuwPaginationRangeItem[];
505
718
 
506
- /**
507
- * A single entry in `<yuw-combobox>`'s `options` input.
508
- *
509
- * `label` is data the parent supplies, not a component-owned default — the same rule
510
- * `YuwSelectOptionDto` and `YuwBreadcrumbItemDto` follow. It doubles as the text the search
511
- * filters on and the text shown in the trigger/chip once selected, so it must be the
512
- * already-translated string.
513
- *
514
- * `data` carries whatever the consumer needs when rendering a custom item template
515
- * (`*yuwComboboxItem`) — an avatar URL, a count, a nested entity. The component itself never
516
- * reads it.
517
- */
518
- interface YuwComboboxOptionDto<TData = unknown> {
519
- value: string;
520
- label: string;
521
- disabled?: boolean;
522
- data?: TData;
719
+ /** Text of the page size selector and its range message. */
720
+ interface YuwPageSizeLabels {
721
+ readonly label: string;
722
+ readonly empty: string;
723
+ readonly range: (range: YuwPageRange) => string;
724
+ }
725
+ /** Text of the standalone pagination footer. */
726
+ interface YuwListPaginationLabels {
727
+ readonly pageSize: YuwPageSizeLabels;
728
+ readonly ariaLabel: string;
729
+ readonly previous: string;
730
+ readonly next: string;
731
+ readonly ellipsis: string;
523
732
  }
524
733
 
525
- /** The `let-` context of a `*yuwComboboxItem` template. `$implicit` is the option itself, so
526
- * `let-option` works; `selected` is passed alongside because an item that renders its own
527
- * markup loses the default check glyph and often needs to show that state some other way. */
528
- interface YuwComboboxItemContext<TData = unknown> {
529
- $implicit: YuwComboboxOptionDto<TData>;
530
- option: YuwComboboxOptionDto<TData>;
531
- selected: boolean;
734
+ /** Page size selector and range message of a `YuwPagedList`; in a datatable it takes the pagination slot. */
735
+ declare class YuwPageSizeComponent {
736
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
737
+ readonly labels: _angular_core.InputSignal<YuwPageSizeLabels>;
738
+ readonly list: _angular_core.InputSignal<YuwPagedList<unknown>>;
739
+ protected readonly message: _angular_core.Signal<string>;
740
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwPageSizeComponent, never>;
741
+ 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>;
532
742
  }
533
- /**
534
- * Structural directive for custom option item templates in `yuw-combobox`.
535
- *
536
- * Exposes the option object (`let-option`) and selection state (`let-selected="selected"`).
537
- *
538
- * Usage:
539
- * ```html
540
- * <yuw-combobox [options]="users" [(value)]="userId">
541
- * <ng-template yuwComboboxItem let-option let-selected="selected">
542
- * <img [src]="option.data.avatar" /> {{ option.label }}
543
- * </ng-template>
544
- * </yuw-combobox>
545
- * ```
546
- */
547
- declare class YuwComboboxItemDirective<TData = unknown> {
548
- readonly templateRef: TemplateRef<YuwComboboxItemContext<TData>>;
549
- readonly typeOf: _angular_core.InputSignal<YuwComboboxOptionDto<TData>[] | undefined>;
550
- static ngTemplateContextGuard<TData>(_directive: YuwComboboxItemDirective<TData>, _context: unknown): _context is YuwComboboxItemContext<TData>;
551
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwComboboxItemDirective<any>, never>;
552
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwComboboxItemDirective<any>, "[yuwComboboxItem]", never, { "typeOf": { "alias": "yuwComboboxItemTypeOf"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
743
+
744
+ /** Pagination footer for lists without a datatable. A disabled `fieldset` blocks its buttons. */
745
+ declare class YuwListPaginationComponent {
746
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
747
+ readonly labels: _angular_core.InputSignal<YuwListPaginationLabels>;
748
+ readonly list: _angular_core.InputSignal<YuwPagedList<unknown>>;
749
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwListPaginationComponent, never>;
750
+ 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>;
553
751
  }
554
752
 
555
- type YuwComboboxValue = string | string[] | undefined;
556
753
  /**
557
- * Searchable select combobox component supporting single or multiple selections, search filtering, and custom option rendering.
558
- *
559
- * Inputs / Models:
560
- * - `options`: Required array of option items (`YuwComboboxOptionDto<TData>[]`).
561
- * - `value`: Two-way selected value(s) (`string` for single mode, `string[]` for multiple mode).
562
- * Emits `valueChange` on every selection change.
563
- * - `size`: Control height (`'default'` 40px, `'xs'` 28px, `'sm'` 36px, `'lg'` 44px), matching the
564
- * `<yuw-button>` size of the same name. Applies to whichever control shape renders; the popover
565
- * panel and its inner search field keep their own compact sizing.
566
- * - `multiple`: Enables multi-selection mode with removable tags/chips.
567
- * - `disabled`: Disables combobox interaction.
568
- * - `placeholder`: Placeholder text when no option is selected.
569
- * - `searchPlaceholder`: Placeholder text inside the search field popover.
570
- * - `emptyText`: Message text displayed when search yields no matching options.
571
- * - `search`: Two-way search filter query string.
572
- * - `triggerAriaLabel`: Required accessible name for the icon-only popover trigger (the chevron
573
- * button). User-facing text — the consuming app is responsible for providing it translated.
574
- * Only rendered by the single-select input shape, but required in every mode so switching
575
- * modes never silently drops the label.
576
- * - `clearAriaLabel`: When set, the clear button is shown on the single-selection control and
577
- * this is its accessible name; when absent, there is no clear button. One input, one source of
578
- * truth. User-facing text — the consuming app is responsible for providing it translated.
579
- * - `inputId`: HTML `id` for the focusable control (the search input, or the trigger button when
580
- * `readonlyTrigger` is set), enabling external `<label for="...">` association.
581
- * - `readonlyTrigger`: Renders control as a button showing selected label, placing search input inside popover.
582
- * - `invalid`: Forces invalid styling.
583
- *
584
- * `multiple` takes precedence over `readonlyTrigger`: when both are set the multi-select
585
- * chips shape renders and `readonlyTrigger` is ignored.
586
- *
587
- * Usage:
588
- * ```html
589
- * <yuw-combobox [options]="userOptions" [(value)]="selectedUser" placeholder="Select user..."
590
- * triggerAriaLabel="Toggle options" clearAriaLabel="Clear selection" />
591
- * <yuw-combobox [options]="categoryOptions" [(value)]="selectedCategories" multiple
592
- * triggerAriaLabel="Toggle options" />
593
- * ```
754
+ * Page title, optional description and up to two actions, each rendered when its label is set.
755
+ * On mobile the primary action shows only its icon, or `primaryMobileLabel`. Icons are `@ng-icons`
756
+ * names; the consumer registers any beyond `lucidePlus` with `provideIcons`.
594
757
  */
595
- declare class YuwComboboxComponent<TData = unknown> extends YuwValueAccessorBase<YuwComboboxValue> {
596
- private readonly _panel;
597
- protected readonly itemTemplate: _angular_core.Signal<YuwComboboxItemDirective<TData> | undefined>;
598
- readonly clearAriaLabel: _angular_core.InputSignal<string | undefined>;
599
- readonly emptyText: _angular_core.InputSignal<string | undefined>;
600
- readonly inputId: _angular_core.InputSignal<string | undefined>;
601
- readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
602
- readonly multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
603
- readonly options: _angular_core.InputSignal<YuwComboboxOptionDto<TData>[]>;
604
- readonly placeholder: _angular_core.InputSignal<string | undefined>;
605
- readonly readonlyTrigger: _angular_core.InputSignalWithTransform<boolean, unknown>;
606
- readonly search: _angular_core.ModelSignal<string>;
607
- readonly searchPlaceholder: _angular_core.InputSignal<string | undefined>;
608
- readonly size: _angular_core.InputSignal<YuwFieldSizeDto>;
609
- readonly triggerAriaLabel: _angular_core.InputSignal<string>;
610
- readonly value: _angular_core.ModelSignal<YuwComboboxValue>;
611
- protected readonly _focusSelectors: string[];
612
- private readonly _generatedId;
613
- protected readonly _itemToString: (value: string) => string;
614
- protected readonly _chipsClass: _angular_core.Signal<string>;
615
- protected readonly _clearVisible: _angular_core.Signal<boolean>;
616
- protected readonly _controlId: _angular_core.Signal<string>;
617
- protected readonly _fieldClass: _angular_core.Signal<string>;
618
- private readonly _labelByValue;
619
- protected readonly _multipleValue: _angular_core.Signal<string[]>;
620
- protected readonly _selectedChips: _angular_core.Signal<{
621
- value: string;
622
- label: string;
623
- }[]>;
624
- protected readonly _selectedValues: _angular_core.Signal<Set<string>>;
625
- protected readonly _singleValue: _angular_core.Signal<string | undefined>;
626
- protected readonly _triggerClass: _angular_core.Signal<string>;
627
- protected _emptyValue(): YuwComboboxValue;
628
- protected _onFocusOut(event: FocusEvent): void;
629
- protected onValueChange(next: YuwComboboxValue | null): void;
630
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwComboboxComponent<any>, never>;
631
- 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; }; "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>;
758
+ declare class YuwPageHeaderComponent {
759
+ readonly backLabel: _angular_core.InputSignal<string | undefined>;
760
+ readonly description: _angular_core.InputSignal<string | undefined>;
761
+ readonly primaryIcon: _angular_core.InputSignal<string | undefined>;
762
+ readonly primaryLabel: _angular_core.InputSignal<string | undefined>;
763
+ readonly primaryMobileLabel: _angular_core.InputSignal<string | undefined>;
764
+ readonly secondaryIcon: _angular_core.InputSignal<string | undefined>;
765
+ readonly secondaryLabel: _angular_core.InputSignal<string | undefined>;
766
+ readonly title: _angular_core.InputSignal<string>;
767
+ readonly backClicked: _angular_core.OutputEmitterRef<MouseEvent>;
768
+ readonly primaryClicked: _angular_core.OutputEmitterRef<MouseEvent>;
769
+ readonly secondaryClicked: _angular_core.OutputEmitterRef<MouseEvent>;
770
+ protected readonly isMobile: _angular_core.Signal<boolean>;
771
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwPageHeaderComponent, never>;
772
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwPageHeaderComponent, "yuw-page-header", never, { "backLabel": { "alias": "backLabel"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "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; }; "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>;
632
773
  }
633
774
 
634
775
  /**
@@ -1039,31 +1180,23 @@ type YuwInputOtpModeDto = 'numeric' | 'text';
1039
1180
  * <yuw-input-otp formControlName="otpCode" [groupSizes]="[6]" mode="numeric" />
1040
1181
  * ```
1041
1182
  */
1042
- declare class YuwInputOtpComponent extends YuwValueAccessorBase<string> {
1183
+ declare class YuwInputOtpComponent extends YuwFieldBase {
1043
1184
  readonly autofocus: _angular_core.InputSignalWithTransform<boolean, unknown>;
1044
- readonly errorText: _angular_core.InputSignal<string | undefined>;
1045
1185
  readonly groupSizes: _angular_core.InputSignal<readonly number[]>;
1046
- readonly helperText: _angular_core.InputSignal<string | undefined>;
1047
- readonly inputId: _angular_core.InputSignal<string | undefined>;
1048
- readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
1049
1186
  readonly mode: _angular_core.InputSignal<YuwInputOtpModeDto>;
1050
1187
  readonly size: _angular_core.InputSignal<YuwFieldSizeDto>;
1051
1188
  readonly transformPaste: _angular_core.InputSignal<(pastedText: string, length: number) => string>;
1052
- readonly userClass: _angular_core.InputSignal<string>;
1053
- readonly value: _angular_core.ModelSignal<string>;
1054
1189
  readonly completed: _angular_core.OutputEmitterRef<string>;
1055
1190
  readonly enterPressed: _angular_core.OutputEmitterRef<void>;
1056
1191
  protected readonly _autoId: string;
1057
1192
  protected readonly _focusSelectors: string[];
1058
1193
  protected readonly _classes: _angular_core.Signal<string>;
1059
1194
  protected readonly _groups: _angular_core.Signal<yukit_web.YuwInputOtpGroupDto[]>;
1060
- protected readonly _inputId: _angular_core.Signal<string>;
1061
1195
  protected readonly _length: _angular_core.Signal<number>;
1062
- protected _emptyValue(): string;
1063
1196
  protected onEnterPressed(): void;
1064
1197
  protected onValueChange(next: string): void;
1065
1198
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwInputOtpComponent, never>;
1066
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwInputOtpComponent, "yuw-input-otp", never, { "autofocus": { "alias": "autofocus"; "required": false; "isSignal": true; }; "errorText": { "alias": "errorText"; "required": false; "isSignal": true; }; "groupSizes": { "alias": "groupSizes"; "required": false; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "transformPaste": { "alias": "transformPaste"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "completed": "completed"; "enterPressed": "enterPressed"; }, never, never, true, never>;
1199
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwInputOtpComponent, "yuw-input-otp", never, { "autofocus": { "alias": "autofocus"; "required": false; "isSignal": true; }; "groupSizes": { "alias": "groupSizes"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "transformPaste": { "alias": "transformPaste"; "required": false; "isSignal": true; }; }, { "completed": "completed"; "enterPressed": "enterPressed"; }, never, never, true, never>;
1067
1200
  }
1068
1201
 
1069
1202
  /**
@@ -1275,6 +1408,30 @@ declare class YuwSkeletonDirective {
1275
1408
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSkeletonDirective, "[yuwSkeleton]", never, {}, {}, never, never, true, [{ directive: typeof i1$1.HlmSkeleton; inputs: {}; outputs: {}; }]>;
1276
1409
  }
1277
1410
 
1411
+ /**
1412
+ * Grid of projected cards, usually `yuw-card-grid-item`s in an `@for`. `loading` shows
1413
+ * `skeletonCount` placeholders shaped by `skeletonClass`; `empty` shows `emptyText`; `columnsClass`
1414
+ * holds the Tailwind column utilities.
1415
+ */
1416
+ declare class YuwCardGridComponent {
1417
+ readonly columnsClass: _angular_core.InputSignal<string>;
1418
+ readonly empty: _angular_core.InputSignalWithTransform<boolean, unknown>;
1419
+ readonly emptyText: _angular_core.InputSignal<string>;
1420
+ readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
1421
+ readonly skeletonClass: _angular_core.InputSignal<string>;
1422
+ readonly skeletonCount: _angular_core.InputSignalWithTransform<number, unknown>;
1423
+ protected readonly skeletons: _angular_core.Signal<number[]>;
1424
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwCardGridComponent, never>;
1425
+ 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>;
1426
+ }
1427
+
1428
+ /** While `pending` the card stays hidden in place under a skeleton, so the grid does not jump. */
1429
+ declare class YuwCardGridItemComponent {
1430
+ readonly pending: _angular_core.InputSignalWithTransform<boolean, unknown>;
1431
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwCardGridItemComponent, never>;
1432
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwCardGridItemComponent, "yuw-card-grid-item", never, { "pending": { "alias": "pending"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1433
+ }
1434
+
1278
1435
  /**
1279
1436
  * Container directive for card components.
1280
1437
  * Accepts optional `size` input (e.g. `'default'` or `'sm'`).
@@ -1716,6 +1873,74 @@ declare class YuwDatatablePaginationDirective {
1716
1873
  /** Every table part, for a consumer's `imports`. */
1717
1874
  declare const YuwTableImports: readonly [typeof YuwTableContainerDirective, typeof YuwTableDirective, typeof YuwTHeadDirective, typeof YuwTBodyDirective, typeof YuwTFootDirective, typeof YuwTrDirective, typeof YuwThDirective, typeof YuwTdDirective, typeof YuwCaptionDirective, typeof YuwDatatablePaginationDirective];
1718
1875
 
1876
+ interface YuwFilterOptionDto {
1877
+ readonly value: string;
1878
+ readonly label: string;
1879
+ readonly disabled?: boolean;
1880
+ }
1881
+ /** `single` keeps one value, `multiple` a set; both render as checkboxes. */
1882
+ type YuwFilterGroupMode = 'single' | 'multiple';
1883
+ interface YuwFilterGroupDto {
1884
+ readonly id: string;
1885
+ readonly label: string;
1886
+ readonly mode: YuwFilterGroupMode;
1887
+ readonly options: readonly YuwFilterOptionDto[];
1888
+ }
1889
+ /** Selection keyed by `YuwFilterGroupDto.id`: a string for `single` groups, an array for `multiple`. */
1890
+ type YuwFilterSelection = Readonly<Record<string, string | readonly string[]>>;
1891
+ interface YuwListToolbarFilterLabels {
1892
+ readonly title: string;
1893
+ readonly clearAll: string;
1894
+ readonly close: string;
1895
+ readonly apply: string;
1896
+ readonly clear: string;
1897
+ readonly pending: string;
1898
+ readonly selected: (count: number) => string;
1899
+ }
1900
+ interface YuwListToolbarSearchLabels {
1901
+ readonly expand: string;
1902
+ readonly clear: string;
1903
+ }
1904
+ interface YuwListToolbarColumnsLabels {
1905
+ readonly trigger: string;
1906
+ readonly placeholder: string;
1907
+ readonly empty: string;
1908
+ readonly toggle: string;
1909
+ }
1910
+ /** Every text the toolbar prints; the consumer translates them. */
1911
+ interface YuwListToolbarLabels {
1912
+ readonly filters: YuwListToolbarFilterLabels;
1913
+ readonly search: YuwListToolbarSearchLabels;
1914
+ readonly columns: YuwListToolbarColumnsLabels;
1915
+ readonly export: string;
1916
+ }
1917
+
1918
+ /**
1919
+ * Toolbar of a list page: filters on the leading edge, search, export and column visibility on the
1920
+ * trailing one, and projected content after them.
1921
+ *
1922
+ * Each control renders only when its input is set: `filterGroups`, `searchPlaceholder`,
1923
+ * `showExport`, `hideableColumns`. `labels` holds every text and the consumer translates it;
1924
+ * `idleColor` is the filter trigger tone while nothing is applied.
1925
+ */
1926
+ declare class YuwListToolbarComponent {
1927
+ readonly filterGroups: _angular_core.InputSignal<readonly YuwFilterGroupDto[] | undefined>;
1928
+ readonly filtersDisabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
1929
+ readonly hideableColumns: _angular_core.InputSignal<YuwComboboxOptionDto<unknown>[] | undefined>;
1930
+ readonly idleColor: _angular_core.InputSignal<YuwColorDto>;
1931
+ readonly labels: _angular_core.InputSignal<YuwListToolbarLabels>;
1932
+ readonly search: _angular_core.ModelSignal<string>;
1933
+ readonly searchPlaceholder: _angular_core.InputSignal<string | undefined>;
1934
+ readonly selection: _angular_core.ModelSignal<Readonly<Record<string, string | readonly string[]>>>;
1935
+ readonly showExport: _angular_core.InputSignalWithTransform<boolean, unknown>;
1936
+ readonly exported: _angular_core.OutputEmitterRef<MouseEvent>;
1937
+ readonly hiddenColumnsChange: _angular_core.OutputEmitterRef<YuwComboboxValue[]>;
1938
+ readonly searched: _angular_core.OutputEmitterRef<string>;
1939
+ protected readonly isMobile: _angular_core.Signal<boolean>;
1940
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwListToolbarComponent, never>;
1941
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwListToolbarComponent, "yuw-list-toolbar", never, { "filterGroups": { "alias": "filterGroups"; "required": false; "isSignal": true; }; "filtersDisabled": { "alias": "filtersDisabled"; "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; }; }, { "search": "searchChange"; "selection": "selectionChange"; "exported": "exported"; "hiddenColumnsChange": "hiddenColumnsChange"; "searched": "searched"; }, never, ["*"], true, never>;
1942
+ }
1943
+
1719
1944
  type YuwDatatableAlign = 'start' | 'center' | 'end';
1720
1945
  /**
1721
1946
  * Default floor for a column that opts into `meta.wrap`, as a Tailwind `min-w-*` class.
@@ -2006,6 +2231,22 @@ declare class YuwDatatableRowSelect {
2006
2231
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwDatatableRowSelect, "yuw-datatable-row-select", never, { "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "onToggle": { "alias": "onToggle"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2007
2232
  }
2008
2233
 
2234
+ /**
2235
+ * Gear button cell that runs `onEdit`, an input because `flexRenderComponent` does not subscribe
2236
+ * outputs. The host stops the click so a clickable row does not fire twice.
2237
+ */
2238
+ declare class YuwActionsCellComponent {
2239
+ readonly label: _angular_core.InputSignal<string>;
2240
+ readonly onEdit: _angular_core.InputSignal<() => void>;
2241
+ protected edit(): void;
2242
+ protected onHostClick(event: Event): void;
2243
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwActionsCellComponent, never>;
2244
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwActionsCellComponent, "yuw-actions-cell", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "onEdit": { "alias": "onEdit"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2245
+ }
2246
+
2247
+ /** Headerless `actions` column; `label` is the button's accessible name, already translated. */
2248
+ declare function buildYuwActionsColumn<Row extends RowData>(label: string, onEdit: (row: Row) => void, cellClass?: string): YuwDatatableColumnDef<Row>;
2249
+
2009
2250
  /** A single entry in `<yuw-avatar>`'s `group` input, which turns it into a stack of overlapping avatars. */
2010
2251
  interface YuwAvatarGroupItemDto {
2011
2252
  alt: string;
@@ -2204,7 +2445,7 @@ declare class YuwSheetComponent {
2204
2445
  readonly side: _angular_core.InputSignal<YuwSheetSideDto>;
2205
2446
  readonly title: _angular_core.InputSignal<string | undefined>;
2206
2447
  readonly triggerSize: _angular_core.InputSignal<"default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined>;
2207
- readonly triggerVariant: _angular_core.InputSignal<"default" | "link" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined>;
2448
+ readonly triggerVariant: _angular_core.InputSignal<"link" | "default" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined>;
2208
2449
  protected readonly _sheetState: _angular_core.Signal<"open" | "closed">;
2209
2450
  constructor();
2210
2451
  protected onStateChanged(state: 'open' | 'closed'): void;
@@ -2278,7 +2519,7 @@ declare class YuwPopoverComponent {
2278
2519
  readonly triggerColor: _angular_core.InputSignal<YuwColorDto>;
2279
2520
  readonly triggerSize: _angular_core.InputSignal<"default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined>;
2280
2521
  readonly triggerTransparent: _angular_core.InputSignalWithTransform<boolean, unknown>;
2281
- readonly triggerVariant: _angular_core.InputSignal<"default" | "link" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined>;
2522
+ readonly triggerVariant: _angular_core.InputSignal<"link" | "default" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined>;
2282
2523
  protected readonly _popoverState: _angular_core.Signal<"open" | "closed">;
2283
2524
  protected onOpenChange(state: 'open' | 'closed'): void;
2284
2525
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwPopoverComponent, never>;
@@ -2531,7 +2772,7 @@ declare class YuwDialogComponent {
2531
2772
  readonly title: _angular_core.InputSignal<string | undefined>;
2532
2773
  readonly triggerColor: _angular_core.InputSignal<YuwColorDto>;
2533
2774
  readonly triggerSize: _angular_core.InputSignal<"default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined>;
2534
- readonly triggerVariant: _angular_core.InputSignal<"default" | "link" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined>;
2775
+ readonly triggerVariant: _angular_core.InputSignal<"link" | "default" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined>;
2535
2776
  protected readonly _dialogState: _angular_core.Signal<"open" | "closed">;
2536
2777
  protected onStateChanged(state: 'open' | 'closed'): void;
2537
2778
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwDialogComponent, never>;
@@ -2609,14 +2850,14 @@ declare class YuwAlertDialogComponent {
2609
2850
  protected readonly hasMedia: _angular_core.Signal<YuwAlertDialogMediaDirective | undefined>;
2610
2851
  readonly cancelLabel: _angular_core.InputSignal<string>;
2611
2852
  readonly confirmLabel: _angular_core.InputSignal<string>;
2612
- readonly confirmVariant: _angular_core.InputSignal<"default" | "link" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined>;
2853
+ readonly confirmVariant: _angular_core.InputSignal<"link" | "default" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined>;
2613
2854
  readonly description: _angular_core.InputSignal<string | undefined>;
2614
2855
  readonly open: _angular_core.ModelSignal<boolean>;
2615
2856
  readonly showTrigger: _angular_core.InputSignalWithTransform<boolean, unknown>;
2616
2857
  readonly size: _angular_core.InputSignal<YuwAlertDialogSizeDto>;
2617
2858
  readonly title: _angular_core.InputSignal<string>;
2618
2859
  readonly triggerSize: _angular_core.InputSignal<"default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined>;
2619
- readonly triggerVariant: _angular_core.InputSignal<"default" | "link" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined>;
2860
+ readonly triggerVariant: _angular_core.InputSignal<"link" | "default" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined>;
2620
2861
  readonly cancelled: _angular_core.OutputEmitterRef<void>;
2621
2862
  readonly confirmed: _angular_core.OutputEmitterRef<void>;
2622
2863
  protected readonly _dialogState: _angular_core.Signal<"open" | "closed">;
@@ -3616,5 +3857,5 @@ declare class YuwCommandDialogComponent {
3616
3857
  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>;
3617
3858
  }
3618
3859
 
3619
- 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, YuwAlertActionDirective, YuwAlertComponent, YuwAlertDescriptionDirective, YuwAlertDialogComponent, YuwAlertDialogMediaDirective, YuwAlertDialogTriggerDirective, YuwAlertImports, YuwAlertTitleDirective, YuwAttachmentActionDirective, YuwAttachmentActionsDirective, YuwAttachmentContentDirective, YuwAttachmentDescriptionDirective, YuwAttachmentDirective, YuwAttachmentGroupDirective, YuwAttachmentMediaDirective, YuwAttachmentTitleDirective, YuwAttachmentTriggerDirective, YuwAvatarComponent, YuwBadgeComponent, YuwBreadcrumbComponent, YuwButtonComponent, YuwButtonGroupComponent, YuwButtonGroupContentDirective, YuwCaptionDirective, YuwCardActionDirective, YuwCardContentDirective, YuwCardDescriptionDirective, YuwCardDirective, YuwCardFooterDirective, 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, YuwInputAddonImports, YuwInputComponent, YuwInputOtpComponent, YuwItemActionsDirective, YuwItemContentDirective, YuwItemDescriptionDirective, YuwItemDirective, YuwItemFooterDirective, YuwItemGroupDirective, YuwItemHeaderDirective, YuwItemImports, YuwItemMediaDirective, YuwItemSeparatorDirective, YuwItemTitleDirective, YuwLabel, YuwLeftAddonDirective, YuwPaginationComponent, YuwPasswordInputComponent, YuwPopoverComponent, YuwPopoverTriggerDirective, YuwRadioGroupComponent, YuwRightAddonDirective, YuwSearchInputComponent, YuwSheetCloseDirective, YuwSheetComponent, YuwSheetFooterDirective, YuwSheetImports, YuwSheetTriggerDirective, YuwSidebarComponent, YuwSidebarContentDirective, YuwSidebarContentExtraDirective, YuwSidebarFooterDirective, YuwSidebarFooterExtraDirective, YuwSidebarGroupContentDirective, YuwSidebarGroupDirective, YuwSidebarGroupLabelDirective, YuwSidebarHeaderDirective, YuwSidebarInsetDirective, 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, cn, datatableCellVariants, datatableContainerVariants, datatableHeadVariants, datatableHeaderCellVariants, datatableRowVariants, getPaginationRange, provideValueAccessor, totalInputOtpLength, yuwCommandDefaultFilter };
3620
- export type { YuwAlertDialogSizeDto, YuwAlertVariantDto, YuwAvatarGroupItemDto, YuwAvatarSizeDto, YuwBreadcrumbItemDto, YuwButtonGroupClickDto, YuwButtonGroupItemDto, YuwColorDto, YuwComboboxItemContext, YuwComboboxOptionDto, YuwComboboxValue, YuwCommandGroupDto, YuwCommandItemDto, YuwDatatableAlign, YuwDatatableAppearanceDto, YuwDatatableColumnDef, YuwDatatableColumnMeta, YuwDatatableFeatures, YuwDatatableRowClass, YuwDatepickerModeDto, YuwDatepickerValue, YuwFieldSizeDto, YuwInputModeDto, YuwInputOtpGroupDto, YuwInputOtpModeDto, YuwInputTypeDto, 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 };
3860
+ 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, YuwInputAddonImports, YuwInputComponent, 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, 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 };
3861
+ 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, YuwFilterGroupDto, YuwFilterGroupMode, YuwFilterOptionDto, YuwFilterSelection, YuwInputModeDto, YuwInputOtpGroupDto, YuwInputOtpModeDto, YuwInputTypeDto, YuwListPaginationLabels, YuwListToolbarColumnsLabels, YuwListToolbarFilterLabels, YuwListToolbarLabels, YuwListToolbarSearchLabels, 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 };